From jweiner@redhat.com Tue Nov 1 05:53:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA1AreeY113560 for ; Tue, 1 Nov 2011 05:53:40 -0500 X-ASG-Debug-ID: 1320144819-1970007b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 040A41CD7A3A for ; Tue, 1 Nov 2011 03:53:39 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 8IbFsCDpqbbbNiOB for ; Tue, 01 Nov 2011 03:53:39 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pA1ArJUL023592 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 1 Nov 2011 06:53:19 -0400 Received: from dexter.home.cmpxchg.org (vpn1-4-47.ams2.redhat.com [10.36.4.47]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id pA1ArG33023303 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Tue, 1 Nov 2011 06:53:18 -0400 Date: Tue, 1 Nov 2011 11:52:57 +0100 From: Johannes Weiner To: Wu Fengguang Cc: Michal Hocko , Andrew Morton , Mel Gorman , Christoph Hellwig , Dave Chinner , Jan Kara , Rik van Riel , Minchan Kim , Chris Mason , "Theodore Ts'o" , Andreas Dilger , "Li, Shaohua" , "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" , "linux-ext4@vger.kernel.org" , "linux-mm@kvack.org" , "linux-fsdevel@vger.kernel.org" , "linux-kernel@vger.kernel.org" X-ASG-Orig-Subj: Re: [patch 3/5] mm: try to distribute dirty pages fairly across zones Subject: Re: [patch 3/5] mm: try to distribute dirty pages fairly across zones Message-ID: <20111101105257.GF5819@redhat.com> References: <1317367044-475-1-git-send-email-jweiner@redhat.com> <1317367044-475-4-git-send-email-jweiner@redhat.com> <20110930142805.GC869@tiehlicka.suse.cz> <20111027155618.GA25524@localhost> <20111027161359.GA1319@redhat.com> <20111027204743.GA19343@localhost> <20111027221258.GA22869@localhost> <20111027231933.GB1319@redhat.com> <20111028203944.GB20607@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111028203944.GB20607@localhost> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1320144820 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Oct 29, 2011 at 04:39:44AM +0800, Wu Fengguang wrote: > [restore CC list] > > > > I'm trying to understand where the performance gain comes from. > > > > > > I noticed that in all cases, before/after patchset, nr_vmscan_write are all zero. > > > > > > nr_vmscan_immediate_reclaim is significantly reduced though: > > > > That's a good thing, it means we burn less CPU time on skipping > > through dirty pages on the LRU. > > > > Until a certain priority level, the dirty pages encountered on the LRU > > list are marked PageReclaim and put back on the list, this is the > > nr_vmscan_immediate_reclaim number. And only below that priority, we > > actually ask the FS to write them, which is nr_vmscan_write. > > Yes, it is. > > > I suspect this is where the performance improvement comes from: we > > find clean pages for reclaim much faster. > > That explains how it could reduce CPU overheads. However the dd's are > throttled anyway, so I still don't understand how the speedup of dd page > allocations improve the _IO_ performance. They are throttled in balance_dirty_pages() when there are too many dirty pages. But they are also 'throttled' in direct reclaim when there are too many clean + dirty pages. Wild guess: speeding up direct reclaim allows dirty pages to be generated faster and the writer can better saturate the BDI? Not all filesystems ignore all VM writepage requests, either. xfs e.g. ignores only direct reclaim but honors requests from kswapd. ext4 honors writepage whenever it pleases. On those, I can imagine the reduced writepage intereference to help. But that can not be the only reason as btrfs ignores writepage from the reclaim in general and still sees improvement. From jweiner@redhat.com Tue Nov 1 05:56:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA1AuUXI113668 for ; Tue, 1 Nov 2011 05:56:30 -0500 X-ASG-Debug-ID: 1320144988-331f02070000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F2DB2214D7C for ; Tue, 1 Nov 2011 03:56:28 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id WG07EIza2AwCCCkJ for ; Tue, 01 Nov 2011 03:56:28 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pA1AuFVj024615 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 1 Nov 2011 06:56:15 -0400 Received: from dexter.home.cmpxchg.org (vpn1-4-47.ams2.redhat.com [10.36.4.47]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id pA1AuDn0002230 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Tue, 1 Nov 2011 06:56:14 -0400 Date: Tue, 1 Nov 2011 11:55:53 +0100 From: Johannes Weiner To: Wu Fengguang Cc: Michal Hocko , Andrew Morton , Mel Gorman , Christoph Hellwig , Dave Chinner , Jan Kara , Rik van Riel , Minchan Kim , Chris Mason , "Theodore Ts'o" , Andreas Dilger , "Li, Shaohua" , "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" , "linux-ext4@vger.kernel.org" , "linux-mm@kvack.org" , "linux-fsdevel@vger.kernel.org" , "linux-kernel@vger.kernel.org" X-ASG-Orig-Subj: Re: [patch 3/5] mm: try to distribute dirty pages fairly across zones Subject: Re: [patch 3/5] mm: try to distribute dirty pages fairly across zones Message-ID: <20111101105553.GG5819@redhat.com> References: <1317367044-475-1-git-send-email-jweiner@redhat.com> <1317367044-475-4-git-send-email-jweiner@redhat.com> <20110930142805.GC869@tiehlicka.suse.cz> <20111028201829.GA20607@localhost> <20111031113321.GA30890@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111031113321.GA30890@localhost> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1320144989 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Oct 31, 2011 at 07:33:21PM +0800, Wu Fengguang wrote: > > //regression > > 3) much increased cpu %user and %system for btrfs > > Sorry I find out that the CPU time regressions for btrfs are caused by > some additional trace events enabled on btrfs (for debugging an > unrelated btrfs hang bug) which results in 7 times more trace event > lines: > > 2701238 /export/writeback/thresh=1000M/btrfs-1dd-4k-8p-2941M-1000M:10-3.1.0-rc9-ioless-full-nfs-wq5-next-20111014+ > 19054054 /export/writeback/thresh=1000M/btrfs-1dd-4k-8p-2941M-1000M:10-3.1.0-rc9-ioless-full-per-zone-dirty-next-20111014+ > > So no real regressions. Phew :-) > Besides, the patchset also performs good on random writes: > > 3.1.0-rc9-ioless-full-nfs-wq5-next-20111014+ 3.1.0-rc9-ioless-full-per-zone-dirty-next-20111014+ > ------------------------ ------------------------ > 1.65 -5.1% 1.57 MMAP-RANDWRITE-4K/btrfs-fio_fat_mmap_randwrite_4k-4k-8p-4096M-20:10-X > 18.65 -6.4% 17.46 MMAP-RANDWRITE-4K/ext3-fio_fat_mmap_randwrite_4k-4k-8p-4096M-20:10-X > 2.09 +1.2% 2.12 MMAP-RANDWRITE-4K/ext4-fio_fat_mmap_randwrite_4k-4k-8p-4096M-20:10-X > 2.49 -0.3% 2.48 MMAP-RANDWRITE-4K/xfs-fio_fat_mmap_randwrite_4k-4k-8p-4096M-20:10-X > 51.35 +0.0% 51.36 MMAP-RANDWRITE-64K/btrfs-fio_fat_mmap_randwrite_64k-64k-8p-4096M-20:10-X > 45.20 +0.5% 45.43 MMAP-RANDWRITE-64K/ext3-fio_fat_mmap_randwrite_64k-64k-8p-4096M-20:10-X > 44.77 +0.7% 45.10 MMAP-RANDWRITE-64K/ext4-fio_fat_mmap_randwrite_64k-64k-8p-4096M-20:10-X > 45.11 +2.5% 46.23 MMAP-RANDWRITE-64K/xfs-fio_fat_mmap_randwrite_64k-64k-8p-4096M-20:10-X > 211.31 +0.2% 211.74 TOTAL write_bw Hmm, mmapped IO page allocations are not annotated yet, so I expect this to be just runtime variations? > And writes to USB key: > > 3.1.0-rc9-ioless-full-nfs-wq5-next-20111014+ 3.1.0-rc9-ioless-full-per-zone-dirty-next-20111014+ > ------------------------ ------------------------ > 5.94 +0.8% 5.99 UKEY-thresh=1G/btrfs-1dd-4k-8p-4096M-1024M:10-X > 2.64 -0.8% 2.62 UKEY-thresh=1G/ext3-10dd-4k-8p-4096M-1024M:10-X > 5.10 +0.3% 5.12 UKEY-thresh=1G/ext3-1dd-4k-8p-4096M-1024M:10-X > 3.26 -0.8% 3.24 UKEY-thresh=1G/ext3-2dd-4k-8p-4096M-1024M:10-X > 5.63 -0.5% 5.60 UKEY-thresh=1G/ext4-10dd-4k-8p-4096M-1024M:10-X > 6.04 -0.1% 6.04 UKEY-thresh=1G/ext4-1dd-4k-8p-4096M-1024M:10-X > 5.90 -0.2% 5.88 UKEY-thresh=1G/ext4-2dd-4k-8p-4096M-1024M:10-X > 2.45 +22.6% 3.00 UKEY-thresh=1G/xfs-10dd-4k-8p-4096M-1024M:10-X > 6.18 -0.4% 6.16 UKEY-thresh=1G/xfs-1dd-4k-8p-4096M-1024M:10-X > 4.81 +0.0% 4.81 UKEY-thresh=1G/xfs-2dd-4k-8p-4096M-1024M:10-X > 47.94 +1.1% 48.45 TOTAL write_bw > > In summary, I see no problem at all in these trivial writeback tests. > > Tested-by: Wu Fengguang Thanks! From ben@decadent.org.uk Tue Nov 1 09:14:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA1EEOJA118451 for ; Tue, 1 Nov 2011 09:14:24 -0500 X-ASG-Debug-ID: 1320156862-6c6a039e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from shadbolt.e.decadent.org.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D1A421F296FC for ; Tue, 1 Nov 2011 07:14:22 -0700 (PDT) Received: from shadbolt.e.decadent.org.uk (shadbolt.e.decadent.org.uk [88.96.1.126]) by cuda.sgi.com with ESMTP id ioNDighDKlwzRWqP for ; Tue, 01 Nov 2011 07:14:22 -0700 (PDT) Received: from [2001:470:1f08:1539:21c:bfff:fe03:f805] (helo=deadeye) by shadbolt.decadent.org.uk with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.72) (envelope-from ) id 1RLF6a-0002tJ-Fn; Tue, 01 Nov 2011 14:14:20 +0000 Received: from ben by deadeye with local (Exim 4.76) (envelope-from ) id 1RLF6P-0006x2-R2; Tue, 01 Nov 2011 14:14:09 +0000 Message-ID: <1320156842.30281.28.camel@deadeye> X-ASG-Orig-Subj: Re: [PATCH] Fix possible memory corruption in xfs_readlink Subject: Re: [PATCH] Fix possible memory corruption in xfs_readlink From: Ben Hutchings To: Carlos Maiolino Cc: xfs@oss.sgi.com Date: Tue, 01 Nov 2011 14:14:02 +0000 Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-fJlQeUrvKum8YH3IBiQ1" X-Mailer: Evolution 3.0.3-2 Mime-Version: 1.0 X-SA-Exim-Connect-IP: 2001:470:1f08:1539:21c:bfff:fe03:f805 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false X-Barracuda-Connect: shadbolt.e.decadent.org.uk[88.96.1.126] X-Barracuda-Start-Time: 1320156862 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79017 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --=-fJlQeUrvKum8YH3IBiQ1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2011-10-18 at 02:18 -0200, Carlos Maiolino wrote: > Fixes a possible memory corruption when the link is larger than > MAXPATHLEN and XFS_DEBUG is not enabled. This also remove the > S_ISLNK assert, since the inode mode is checked previously in > xfs_readlink_by_handle() and via VFS. >=20 > Signed-off-by: Carlos Maiolino > --- > fs/xfs/xfs_vnodeops.c | 11 ++++++++--- > 1 files changed, 8 insertions(+), 3 deletions(-) >=20 > diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c > index 51fc429..c3288be 100644 > --- a/fs/xfs/xfs_vnodeops.c > +++ b/fs/xfs/xfs_vnodeops.c > @@ -123,13 +123,18 @@ xfs_readlink( > =20 > xfs_ilock(ip, XFS_ILOCK_SHARED); > =20 > - ASSERT(S_ISLNK(ip->i_d.di_mode)); > - ASSERT(ip->i_d.di_size <=3D MAXPATHLEN); > - > pathlen =3D ip->i_d.di_size; pathlen is a signed int (32-bit) and di_size has signed 64-bit type. So, even if di_size was verified to be non-negative earlier (is it?)... > if (!pathlen) > goto out; > =20 > + if (pathlen > MAXPATHLEN) { ...pathlen may be negative here and will pass this check. Ben. > + xfs_alert(mp, "%s: inode (%llu) symlink length (%d) too long", > + __func__, (unsigned long long)ip->i_ino, pathlen); > + ASSERT(0); > + return XFS_ERROR(EFSCORRUPTED); > + } > + > + > if (ip->i_df.if_flags & XFS_IFINLINE) { > memcpy(link, ip->i_df.if_u1.if_data, pathlen); > link[pathlen] =3D '\0'; --=20 Ben Hutchings Computers are not intelligent. They only think they are. --=-fJlQeUrvKum8YH3IBiQ1 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIVAwUATq/+q+e/yOyVhhEJAQqMTg/9H3hIhbliIi6FQI1N0MqY4Sxmrjr745n0 WYsWL8IyTaPVEUiSlKiS5b/V4Lq7NheDVY32Pa/XroJo8CUZ1/sIlgVBgpYI/Rk0 2ovZ7ebcrNgqnrwTvmg2TdZkAXI083sofaZ7Ni/uAwO/CAf/qWDyym0SmJQ4iuMd AezzwqJ1XzTxwswasBFOoVDTQaDbMqtiRe8tocXQ4ClaKNvHIqJWra6iwlUb8UKn r9sqQuagzwy8gZdJT/h59BWAIOVHcjxKYBFXeJ/tAJ8HJ1meukeU4Hva2g1UbRso tF0PMbXyxIrMV9ugxlrPBkX4c0f/H1j4eWzZlHgYDMiEGANrljvZlh3061VPpuUd 1AB4WKSzd/Fii8rKce+CkJCGYe6HG6n1tA4Yj012zHSJGWiElkkoFR+2wGCvg3aT 9jsuerwjjCnnzLgBzoHtiQ+403vlDIDJI6wnVGvKLTr3RhZNdq4V6CBC6OlNa+Lr uQkgXaEdXmj5gQZX7PKLPJ6XJ/ijqUCWNr+427mT2y8m+SgBjw/U6eNWCW0lJV42 Tk44/xooP0IejKOj7kCY3i5rqhyJN/kk70p4qYb1+UbCwmGH1z6sdb1qIFZvz11v y73Wu6DbycX1zZ3p8F/eVt33Hd9tqSg7wuRRqK4aFK5teLoiMrk3uK/n5ZlMX67k AZ4HtievltQ= =E102 -----END PGP SIGNATURE----- --=-fJlQeUrvKum8YH3IBiQ1-- From wkendall@sgi.com Tue Nov 1 14:53:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA1JrMZ6129282 for ; Tue, 1 Nov 2011 14:53:22 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id B91D98F8049 for ; Tue, 1 Nov 2011 12:53:19 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id A081F700075D for ; Tue, 1 Nov 2011 14:53:19 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id 610C920DF3BB; Tue, 1 Nov 2011 14:53:19 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Subject: [PATCH 0/4] xfstests: refactor arg processing in common.dump Date: Tue, 1 Nov 2011 14:53:03 -0500 Message-Id: <1320177187-18871-1-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This patch series reworks the argument processing for the dump and restore helper routines in common.dump. Note this series depends on the following outstanding patches, as there are overlapping changes in _parse_args(): xfstests: add test 264 for testing xfsdump -D xfstests: add 265 and 266 for multiple media From wkendall@sgi.com Tue Nov 1 14:53:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA1JrU16129301 for ; Tue, 1 Nov 2011 14:53:30 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 33B6C30404E; Tue, 1 Nov 2011 12:53:27 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 10871700075C; Tue, 1 Nov 2011 14:53:27 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id 0799820DF3BB; Tue, 1 Nov 2011 14:53:27 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH 1/4] xfstests: refactor cumulative restore tests Date: Tue, 1 Nov 2011 14:53:04 -0500 Message-Id: <1320177187-18871-2-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320177187-18871-1-git-send-email-wkendall@sgi.com> References: <1320177187-18871-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The cumulative restore tests call _do_restore_file_cum(), which requires a dump level to be passed in the -l option in order to determine whether the restore directory needs to be prepared or not. -l is not a valid xfsrestore option, so doing things this way prevents tests from passing options to xfsrestore. It's more straightforward to have the test call _prepare_restore_dir itself prior to starting a series of cumulative restores. Signed-off-by: Bill Kendall --- 064 | 3 ++- 065 | 3 ++- 264 | 5 +++-- common.dump | 6 ++---- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/064 b/064 index 16960c9..bf8a7bc 100755 --- a/064 +++ b/064 @@ -97,12 +97,13 @@ while [ $i -le 9 ]; do done echo "Do the cumulative restores" +_prepare_restore_dir i=0 while [ $i -le 9 ]; do dump_file=$tmp.df.level$i echo "" echo "restoring from df.level$i" - _do_restore_file_cum -l $i + _do_restore_file_cum echo "ls -l restore_dir" ls -lR $restore_dir | _ls_size_filter | _check_quota_file let i=$i+1 diff --git a/065 b/065 index f21a87f..2ebe1cc 100755 --- a/065 +++ b/065 @@ -174,12 +174,13 @@ while [ $i -le $num_dumps ]; do done echo "Do the cumulative restores" +_prepare_restore_dir i=0 while [ $i -le $num_dumps ]; do dump_file=$tmp.df.level$i echo "" echo "restoring from df.level$i" - _do_restore_file_cum -l $i + _do_restore_file_cum echo "list restore_dir" _list_dir $restore_dir | _check_quota_file | tee $tmp.restorals.$i let i=$i+1 diff --git a/264 b/264 index 9544a58..1caa15f 100755 --- a/264 +++ b/264 @@ -63,10 +63,11 @@ _do_dump_file _add_and_append_dumpdir_fill dump_file=$tmp.df.1 _do_dump_file -l 1 -D +_prepare_restore_dir dump_file=$tmp.df.0 -_do_restore_file_cum -l 0 +_do_restore_file_cum dump_file=$tmp.df.1 -_do_restore_file_cum -l 1 +_do_restore_file_cum _ls_compare_sub _diff_compare diff --git a/common.dump b/common.dump index 3942e83..56b348a 100644 --- a/common.dump +++ b/common.dump @@ -1065,14 +1065,12 @@ _do_restore_file() # # Cumulative restore from a file -# Need to specify the dump level e.g. "-l 0" +# Must call _prepare_restore_dir before the first +# (and only the first) call to this function. # _do_restore_file_cum() { _parse_args $* - if echo $dump_args | grep '\-l0' >/dev/null; then - _prepare_restore_dir - fi echo "Restoring cumumlative from file..." opts="$_restore_debug -f $dump_file -r $restore_dir" -- 1.7.0.4 From wkendall@sgi.com Tue Nov 1 14:53:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA1JrXNI129316 for ; Tue, 1 Nov 2011 14:53:33 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id E3EF230404E; Tue, 1 Nov 2011 12:53:32 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id BB128700075C; Tue, 1 Nov 2011 14:53:32 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id AFEC420DF3BB; Tue, 1 Nov 2011 14:53:32 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH 2/4] xfstests: refactor xfsdump quota checking Date: Tue, 1 Nov 2011 14:53:05 -0500 Message-Id: <1320177187-18871-3-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320177187-18871-1-git-send-email-wkendall@sgi.com> References: <1320177187-18871-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Tests can enable/disable quota checking by passing -q or -Q to the various dump and restore helper routines. But -q and -Q are valid xfsdump/xfsrestore options, so in addition to being confusing, tests cannot use these options. Use --check-quota and --no-check-quota instead. Signed-off-by: Bill Kendall --- 061 | 3 ++- common.dump | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/061 b/061 index 414675f..2b08e11 100755 --- a/061 +++ b/061 @@ -48,7 +48,8 @@ dump_file=src/dumpfile # override dump_file to checked-in dumpfile session_label="stress_056" # we have no quotas to restore # if we happen to run this on crackle then put the hostname back -_do_restore_file -Q | sed -e 's/HOSTNAME/crackle/g' -e 's#SCRATCH_DEV#/dev/dsk/dks0d2s1#' +_do_restore_file --no-check-quota | +sed -e 's/HOSTNAME/crackle/g' -e 's#SCRATCH_DEV#/dev/dsk/dks0d2s1#' _diff_compare_sub _ls_nodate_compare_sub diff --git a/common.dump b/common.dump index 56b348a..09f1a91 100644 --- a/common.dump +++ b/common.dump @@ -903,10 +903,10 @@ _parse_args() multi=$2 shift ;; - -q) + --check-quota) do_quota_check=true ;; - -Q) + --no-check-quota) do_quota_check=false ;; -l|-d) -- 1.7.0.4 From wkendall@sgi.com Tue Nov 1 14:53:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA1JrcRP129331 for ; Tue, 1 Nov 2011 14:53:38 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 44FC030404E; Tue, 1 Nov 2011 12:53:38 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 34FFE700075C; Tue, 1 Nov 2011 14:53:38 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id 2B83F20DF3BB; Tue, 1 Nov 2011 14:53:38 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH 3/4] xfstests: allow dump file name to be passed as arg Date: Tue, 1 Nov 2011 14:53:06 -0500 Message-Id: <1320177187-18871-4-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320177187-18871-1-git-send-email-wkendall@sgi.com> References: <1320177187-18871-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfsdump tests using tapes (rather than files) can pass the tape pathname to the dump/restore helper functions using the -f option. Change _parse_args() so that this can be done for file-based tests as well, so that they don't have to set the global 'dump_file' variable before doing the dump or restore. Signed-off-by: Bill Kendall --- 061 | 5 ++--- 064 | 9 +++------ 065 | 9 +++------ 264 | 12 ++++-------- common.dump | 3 +++ 5 files changed, 15 insertions(+), 23 deletions(-) diff --git a/061 b/061 index 2b08e11..8f1d149 100755 --- a/061 +++ b/061 @@ -44,11 +44,10 @@ _supported_os IRIX Linux # _create_dumpdir_fill_perm (small dump) _create_dumpdir_fill_perm -dump_file=src/dumpfile # override dump_file to checked-in dumpfile -session_label="stress_056" +# override dump_file to checked-in dumpfile # we have no quotas to restore # if we happen to run this on crackle then put the hostname back -_do_restore_file --no-check-quota | +_do_restore_file --no-check-quota -f src/dumpfile -L stress_056 | sed -e 's/HOSTNAME/crackle/g' -e 's#SCRATCH_DEV#/dev/dsk/dks0d2s1#' _diff_compare_sub _ls_nodate_compare_sub diff --git a/064 b/064 index bf8a7bc..8e9e694 100755 --- a/064 +++ b/064 @@ -78,8 +78,7 @@ while [ $i -le 9 ]; do cat $tmp.dates.$i >>$seq.full fi - dump_file=$tmp.df.level$i - _do_dump_file -l $i + _do_dump_file -f $tmp.df.level$i -l $i let i=$i+1 done @@ -91,8 +90,7 @@ i=0 while [ $i -le 9 ]; do echo "" echo "restoring from df.level$i" - dump_file=$tmp.df.level$i - _do_restore_toc + _do_restore_toc -f $tmp.df.level$i let i=$i+1 done @@ -100,10 +98,9 @@ echo "Do the cumulative restores" _prepare_restore_dir i=0 while [ $i -le 9 ]; do - dump_file=$tmp.df.level$i echo "" echo "restoring from df.level$i" - _do_restore_file_cum + _do_restore_file_cum -f $tmp.df.level$i echo "ls -l restore_dir" ls -lR $restore_dir | _ls_size_filter | _check_quota_file let i=$i+1 diff --git a/065 b/065 index 2ebe1cc..c1dee5d 100755 --- a/065 +++ b/065 @@ -158,8 +158,7 @@ while [ $i -le $num_dumps ]; do echo "Listing of what files we have at level $i:" _list_dir $dump_dir | tee $tmp.ls.$i - dump_file=$tmp.df.level$i - _do_dump_file -l $i + _do_dump_file -f $tmp.df.level$i -l $i let i=$i+1 done @@ -168,8 +167,7 @@ i=0 while [ $i -le $num_dumps ]; do echo "" echo "restoring from df.level$i" - dump_file=$tmp.df.level$i - _do_restore_toc + _do_restore_toc -f $tmp.df.level$i let i=$i+1 done @@ -177,10 +175,9 @@ echo "Do the cumulative restores" _prepare_restore_dir i=0 while [ $i -le $num_dumps ]; do - dump_file=$tmp.df.level$i echo "" echo "restoring from df.level$i" - _do_restore_file_cum + _do_restore_file_cum -f $tmp.df.level$i echo "list restore_dir" _list_dir $restore_dir | _check_quota_file | tee $tmp.restorals.$i let i=$i+1 diff --git a/264 b/264 index 1caa15f..949e911 100755 --- a/264 +++ b/264 @@ -58,16 +58,12 @@ fi _create_dumpdir_fill # ensure file/dir timestamps precede dump timestamp sleep 2 -dump_file=$tmp.df.0 -_do_dump_file +_do_dump_file -f $tmp.df.0 _add_and_append_dumpdir_fill -dump_file=$tmp.df.1 -_do_dump_file -l 1 -D +_do_dump_file -f $tmp.df.1 -l 1 -D _prepare_restore_dir -dump_file=$tmp.df.0 -_do_restore_file_cum -dump_file=$tmp.df.1 -_do_restore_file_cum +_do_restore_file_cum -f $tmp.df.0 +_do_restore_file_cum -f $tmp.df.1 _ls_compare_sub _diff_compare diff --git a/common.dump b/common.dump index 09f1a91..552085f 100644 --- a/common.dump +++ b/common.dump @@ -889,6 +889,7 @@ _parse_args() -f) [ -z "$2" ] && _fail "missing argument for -f" dumptape=$2 + dump_file=$2 shift ;; -L) @@ -1080,6 +1081,8 @@ _do_restore_file_cum() _do_restore_toc() { + _parse_args $* + echo "Contents of dump ..." opts="$_restore_debug -f $dump_file -t" echo "xfsrestore $opts" | _dir_filter -- 1.7.0.4 From wkendall@sgi.com Tue Nov 1 14:53:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA1JriNM129346 for ; Tue, 1 Nov 2011 14:53:44 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6CBAF30404E; Tue, 1 Nov 2011 12:53:44 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 5A5B0700075C; Tue, 1 Nov 2011 14:53:44 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id 51BC120DF3BB; Tue, 1 Nov 2011 14:53:44 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH 4/4] xfstests: refactor dump test argument parsing Date: Tue, 1 Nov 2011 14:53:07 -0500 Message-Id: <1320177187-18871-5-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320177187-18871-1-git-send-email-wkendall@sgi.com> References: <1320177187-18871-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The dump and restore helper functions all call the same _parse_args() function. xfsdump and xfsrestore have some common options, but others have different meanings/syntaxes or only exist in one program or the other. Split _parse_args() into dump and restore variants. Further, a test cannot pass most options to xfsrestore because many of the parsed args are not used by the restore helper functions. Change the helpers so that the parsed options are available (to be used in future tests). Also add a check for a missing --multi argument, and change a couple of callers to be consistent and use $* instead of "$@". Signed-off-by: Bill Kendall --- common.dump | 95 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 71 insertions(+), 24 deletions(-) diff --git a/common.dump b/common.dump index 552085f..076517d 100644 --- a/common.dump +++ b/common.dump @@ -876,9 +876,10 @@ _dir_filter() } # +# Parse xfsdump arguments. # Note: requires a space between option letter and argument # -_parse_args() +_parse_dump_args() { OPTIND=0 dump_args="" @@ -897,10 +898,8 @@ _parse_args() session_label=$2 shift ;; - -o|-D|-F) - dump_args="$dump_args $1" - ;; --multi) + [ -z "$2" ] && _fail "missing argument for --multi" multi=$2 shift ;; @@ -910,6 +909,9 @@ _parse_args() --no-check-quota) do_quota_check=false ;; + -o|-D|-F) + dump_args="$dump_args $1" + ;; -l|-d) [ -z "$2" ] && _fail "missing argument for $1" dump_args="$dump_args $1$2" @@ -923,13 +925,55 @@ _parse_args() done } +# +# Parse xfsrestore arguments. +# Note: requires a space between option letter and argument +# +_parse_restore_args() +{ + OPTIND=0 + restore_args="" + while [ $# -gt 0 ] + do + case $1 + in + -f) + [ -z "$2" ] && _fail "missing argument for -f" + dumptape=$2 + dump_file=$2 + shift + ;; + -L) + [ -z "$2" ] && _fail "missing argument for -L" + session_label=$2 + shift + ;; + --multi) + [ -z "$2" ] && _fail "missing argument for --multi" + multi=$2 + shift + ;; + --check-quota) + do_quota_check=true + ;; + --no-check-quota) + do_quota_check=false + ;; + *) + _fail "invalid argument to common.dump function: $1" + ;; + esac + shift + done +} + # # Dump a subdir # _do_dump_sub() { - _parse_args $* + _parse_dump_args $* echo "Dumping to tape..." opts="$_dump_debug$dump_args -s $dump_sdir -f $dumptape -M $media_label -L $session_label $SCRATCH_MNT" @@ -942,7 +986,7 @@ _do_dump_sub() # _do_dump() { - _parse_args $* + _parse_dump_args $* echo "Dumping to tape..." opts="$_dump_debug$dump_args -f $dumptape -M $media_label -L $session_label $SCRATCH_MNT" @@ -956,7 +1000,7 @@ _do_dump() # _do_dump_min() { - _parse_args $* + _parse_dump_args $* echo "Dumping to tape..." onemeg=1048576 @@ -971,7 +1015,7 @@ _do_dump_min() # _do_dump_file() { - _parse_args $* + _parse_dump_args $* echo "Dumping to file..." opts="$_dump_debug$dump_args -f $dump_file -M $media_label -L $session_label $SCRATCH_MNT" @@ -984,7 +1028,7 @@ _do_dump_file() # _do_dump_multi_file() { - _parse_args "$@" + _parse_dump_args $* multi_args="" @@ -1025,12 +1069,11 @@ _prepare_restore() # _do_restore() { - _parse_args $* + _parse_restore_args $* _prepare_restore - echo "Restoring from tape..." - opts="$_restore_debug -f $dumptape -L $session_label $restore_dir" + opts="$_restore_debug$restore_args -f $dumptape -L $session_label $restore_dir" echo "xfsrestore $opts" | _dir_filter $XFSRESTORE_PROG $opts 2>&1 | tee -a $here/$seq.full | _dump_filter } @@ -1040,12 +1083,12 @@ _do_restore() # _do_restore_min() { - _parse_args $* + _parse_restore_args $* _prepare_restore echo "Restoring from tape..." onemeg=1048576 - opts="$_restore_debug -m -b $onemeg -f $dumptape -L $session_label $restore_dir" + opts="$_restore_debug$restore_args -m -b $onemeg -f $dumptape -L $session_label $restore_dir" echo "xfsrestore $opts" | _dir_filter $XFSRESTORE_PROG $opts 2>&1 | tee -a $here/$seq.full | _dump_filter } @@ -1055,11 +1098,11 @@ _do_restore_min() # _do_restore_file() { - _parse_args $* + _parse_restore_args $* _prepare_restore_dir echo "Restoring from file..." - opts="$_restore_debug -f $dump_file -L $session_label $restore_dir" + opts="$_restore_debug$restore_args -f $dump_file -L $session_label $restore_dir" echo "xfsrestore $opts" | _dir_filter $XFSRESTORE_PROG $opts 2>&1 | tee -a $here/$seq.full | _dump_filter } @@ -1071,20 +1114,20 @@ _do_restore_file() # _do_restore_file_cum() { - _parse_args $* + _parse_restore_args $* echo "Restoring cumumlative from file..." - opts="$_restore_debug -f $dump_file -r $restore_dir" + opts="$_restore_debug$restore_args -f $dump_file -r $restore_dir" echo "xfsrestore $opts" | _dir_filter $XFSRESTORE_PROG $opts 2>&1 | tee -a $here/$seq.full | _dump_filter } _do_restore_toc() { - _parse_args $* + _parse_restore_args $* echo "Contents of dump ..." - opts="$_restore_debug -f $dump_file -t" + opts="$_restore_debug$restore_args -f $dump_file -t" echo "xfsrestore $opts" | _dir_filter cd $SCRATCH_MNT # for IRIX which needs xfs cwd $XFSRESTORE_PROG $opts 2>&1 | tee -a $here/$seq.full | _dump_filter_main |\ @@ -1103,7 +1146,7 @@ _do_restore_toc() # _do_restore_multi_file() { - _parse_args "$@" + _parse_restore_args $* _prepare_restore_dir multi_args="" @@ -1116,22 +1159,26 @@ _do_restore_multi_file() done echo "Restoring from file..." - opts="$_restore_debug $multi_args -L $session_label $restore_dir" + opts="$_restore_debug$restore_args $multi_args -L $session_label $restore_dir" echo "xfsrestore $opts" | _dir_filter $XFSRESTORE_PROG $opts 2>&1 | tee -a $here/$seq.full | _dump_filter } # # Do xfsdump piped into xfsrestore - xfsdump | xfsrestore +# Pass dump options in $1 and restore options in $2, if required. e.g.: +# _do_dump_restore "-o -F" "-R" +# _do_dump_restore "" "-R" # # Use -s as we want to dump and restore to the same xfs partition # _do_dump_restore() { - _parse_args $* + _parse_dump_args $1 + _parse_restore_args $2 _prepare_restore_dir echo "xfsdump|xfsrestore ..." - restore_opts="$_restore_debug - $restore_dir" + restore_opts="$_restore_debug$restore_args - $restore_dir" dump_opts="$_dump_debug$dump_args -s $dump_sdir - $SCRATCH_MNT" echo "xfsdump $dump_opts | xfsrestore $restore_opts" | _dir_filter $XFSDUMP_PROG $dump_opts 2>$tmp.dump.mlog | $XFSRESTORE_PROG $restore_opts 2>&1 | tee -a $here/$seq.full | _dump_filter -- 1.7.0.4 From wkendall@sgi.com Tue Nov 1 15:30:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA1KUm0Q130222 for ; Tue, 1 Nov 2011 15:30:49 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id AD35430404E; Tue, 1 Nov 2011 13:30:45 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 8F22E700075D; Tue, 1 Nov 2011 15:30:45 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id 4D1C220DF3BB; Tue, 1 Nov 2011 15:30:45 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH v2] xfsdump: fix metadata restore on split files Date: Tue, 1 Nov 2011 15:30:43 -0500 Message-Id: <1320179443-21235-1-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfsrestore does not apply certain metadata until all of the file's data has been restored. This allows, for example, files with the immutable flag set to be restored properly. While testing multi-stream restores, I noticed that files split across multiple streams did not have their metadata restored. Looking into this further, it also can occur with just a single stream when the dump spans multiple tapes. Specifically it requires that end-of-tape is hit just as a file is finished (before a new file is begun), and the restore is performed as separate xfsrestore invocations (one per tape). The fix is to check to see if a file is completely restored whenever we hit the end of a media file. The current code is broken because it relies on all media files being applied during the same restore session. This also moves the S_ISREG() check into restore_complete_reg() rather than relying on callers to make the check. Signed-off-by: Bill Kendall --- Changed for v2: - Reworded commit message to correctly characterize the existing bug. restore/content.c | 50 +++++++++++++++++++++++++++++++++----------------- 1 files changed, 33 insertions(+), 17 deletions(-) diff --git a/restore/content.c b/restore/content.c index e5957bf..34fc4a0 100644 --- a/restore/content.c +++ b/restore/content.c @@ -2499,12 +2499,6 @@ content_stream_restore( ix_t thrdix ) } } - /* out of media files, so finish the last file that - * was being worked on. - */ - if ((strctxp->sc_bstat.bs_mode & S_IFMT) == S_IFREG) - restore_complete_reg(strctxp); - /* finally, choose one thread to do final processing * and cleanup. the winner waits, the losers all exit. * once the losers exit, the winner can perform cleanup. @@ -3337,6 +3331,7 @@ applynondirdump( drive_t *drivep, char *path2, filehdr_t *fhdrp ) { + rv_t rv = RV_UNKNOWN; bool_t fhcs; bool_t ehcs; bool_t ahcs; @@ -3367,18 +3362,24 @@ applynondirdump( drive_t *drivep, */ pi_bracketneededegrps( fileh, &first_egrp, &next_egrp ); + /* initialize the stream context + */ + memset(&strctxp->sc_bstat, 0, sizeof(bstat_t)); + strctxp->sc_path[0] = '\0'; + strctxp->sc_fd = -1; + for ( ; ; ) { drive_ops_t *dop = drivep->d_opsp; drive_mark_t drivemark; bstat_t *bstatp = &fhdrp->fh_stat; bool_t resyncpr = BOOL_FALSE; - rv_t rv; intgen_t rval; /* if a null file header, break */ if ( fhdrp->fh_flags & FILEHDR_FLAGS_NULL ) { - break; + rv = RV_OK; + goto applynondirdump_out; } /* if working on a different file than we were previously, @@ -3386,8 +3387,7 @@ applynondirdump( drive_t *drivep, */ if ( bstatp->bs_ino != strctxp->sc_bstat.bs_ino ) { - if ((strctxp->sc_bstat.bs_mode & S_IFMT) == S_IFREG) - restore_complete_reg(strctxp); + restore_complete_reg(strctxp); /* start new ino */ memcpy(&strctxp->sc_bstat, bstatp, sizeof(bstat_t)); @@ -3418,7 +3418,8 @@ applynondirdump( drive_t *drivep, case RV_OK: break; case RV_EOD: - return RV_OK; + rv = RV_OK; + goto applynondirdump_out; case RV_CORRUPT: rval = ( * dop->do_next_mark )( drivep ); if ( rval ) { @@ -3426,12 +3427,13 @@ applynondirdump( drive_t *drivep, "unable to resync media file: " "some portion of dump will NOT " "be restored\n") ); - return RV_OK; /* treat as EOD */ + rv = RV_OK; /* treat as EOD */ + goto applynondirdump_out; } resyncpr = BOOL_TRUE; break; default: - return rv; + goto applynondirdump_out; } /* update stats if appropriate @@ -3471,7 +3473,8 @@ applynondirdump( drive_t *drivep, case RV_OK: break; case RV_EOD: - return RV_OK; + rv = RV_OK; + goto applynondirdump_out; case RV_CORRUPT: rval = ( * dop->do_next_mark )( drivep ); if ( rval ) { @@ -3479,11 +3482,12 @@ applynondirdump( drive_t *drivep, "unable to resync media file: " "some portion of dump will NOT " "be restored\n") ); - return RV_OK; /* treat as EOD */ + rv = RV_OK; /* treat as EOD */ + goto applynondirdump_out; } resyncpr = BOOL_TRUE; default: - return rv; + goto applynondirdump_out; } if ( resyncpr && rv == RV_OK ) { @@ -3515,7 +3519,16 @@ applynondirdump( drive_t *drivep, preemptchk( ); } } - return RV_OK; + +applynondirdump_out: + + /* We've hit the end of this media file or encountered corruption. + * In either case, we may not be back to complete the metadata for + * this file, so attempt to complete it now. + */ + restore_complete_reg(strctxp); + + return rv; } /* ARGSUSED */ @@ -7507,6 +7520,9 @@ restore_complete_reg(stream_context_t *strcxtp) struct utimbuf utimbuf; intgen_t rval; + // only applies to regular files + if (!S_ISREG((strcxtp->sc_bstat.bs_mode))) + return BOOL_TRUE; if (fd < 0) return BOOL_TRUE; -- 1.7.0.4 From BATV+572a843891b4952d1fe5+2992+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 2 04:10:35 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA29AZti164371 for ; Wed, 2 Nov 2011 04:10:35 -0500 X-ASG-Debug-ID: 1320225031-2c3703d00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 38459217D3F for ; Wed, 2 Nov 2011 02:10:32 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id IEK7JmnDhikSaMVX for ; Wed, 02 Nov 2011 02:10:32 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLWpo-0007ej-5A; Wed, 02 Nov 2011 09:10:12 +0000 Date: Wed, 2 Nov 2011 05:10:12 -0400 From: Christoph Hellwig To: Wu Fengguang Cc: "linux-fsdevel@vger.kernel.org" , Peter Zijlstra , Jan Kara , Curt Wohlgemuth , Michael Rubin , Andrew Morton , Christoph Hellwig , Dave Chinner , Greg Thelen , Minchan Kim , Vivek Goyal , Andrea Righi , linux-mm , LKML , Tang Feng , Linus Torvalds , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: writeback tree status (for 3.2 merge window) Subject: Re: writeback tree status (for 3.2 merge window) Message-ID: <20111102091012.GA25879@infradead.org> References: <20111101074347.GA23644@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111101074347.GA23644@localhost> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320225032 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79093 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 01, 2011 at 03:43:47PM +0800, Wu Fengguang wrote: > Hi, > > There are 3 patchsets sitting in the writeback tree. > > 1) IO-less dirty throttling v12 > https://github.com/fengguang/linux/commits/dirty-throttling-v12 > > 2) writeback reasons tracing from Curt Wohlgemuth > https://github.com/fengguang/linux/commits/writeback-reason > > 3) writeback queuing changes from Jan Kara and me > https://github.com/fengguang/linux/commits/requeue-io-wait > > They have been merged into this branch testing in linux-next for a while: > > https://github.com/fengguang/linux/commits/writeback-for-next > > Since (3) still has an unresolved issue (detailed in the below > links), it looks better to hold it back for this merge window. Given that we have run into issues so much with it that's proably the better idea. To fix the originally reported issue with the missing file size updates in XFS we plan to simply log all filesize changes in XFS. Currently I had this in the 3.3 queue, but in the worst case we might have to move this forward to 3.2. > The patches from (1,2) together with 2 tracing patches essential for > debugging (1) have been pushed to the "writeback-for-linus" branch: > > http://git.kernel.org/?p=linux/kernel/git/wfg/linux.git;a=shortlog;h=refs/heads/writeback-for-linus > > If no objections, I'll send a pull request to Linus soon. Please do so. I'm really looking forward to see the I/O-less balance_dirty_pages in ASAP. From BATV+572a843891b4952d1fe5+2992+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 2 04:20:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA29KGJt164688 for ; Wed, 2 Nov 2011 04:20:17 -0500 X-ASG-Debug-ID: 1320225615-6628033f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D6B66217A96 for ; Wed, 2 Nov 2011 02:20:15 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id JXRVIcXIlTHotmZr for ; Wed, 02 Nov 2011 02:20:15 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLWzU-0001qs-Ur; Wed, 02 Nov 2011 09:20:12 +0000 Date: Wed, 2 Nov 2011 05:20:12 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Jakub Bogusz X-ASG-Orig-Subj: [PATCH v2] xfsprogs: fix various incorrect printf formats Subject: [PATCH v2] xfsprogs: fix various incorrect printf formats Message-ID: <20111102092012.GA3808@infradead.org> References: <20111025115233.GB22103@infradead.org> <20111025155916.GA19818@stranger.qboosh.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111025155916.GA19818@stranger.qboosh.pl> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320225615 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79095 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Reported-by: Jakub Bogusz Signed-off-by: Christoph Hellwig Index: xfsprogs/libxfs/freebsd.c =================================================================== --- xfsprogs.orig/libxfs/freebsd.c 2011-10-30 05:56:36.180125966 +0100 +++ xfsprogs/libxfs/freebsd.c 2011-10-30 05:57:45.957126722 +0100 @@ -126,15 +126,13 @@ platform_findsizes(char *path, int fd, l } if ((st.st_mode & S_IFMT) != S_IFCHR) { - fprintf(stderr, _("%s: " - "Not a device or file: \"%s\"n"), + fprintf(stderr, _("%s: Not a device or file: \"%s\"\n"), progname, path); exit(1); } if (ioctl(fd, DIOCGMEDIASIZE, &size) != 0) { - fprintf(stderr, _("%s: " - "DIOCGMEDIASIZE failed on \"%s\": %s\n"), + fprintf(stderr, _("%s: DIOCGMEDIASIZE failed on \"%s\": %s\n"), progname, path, strerror(errno)); exit(1); } Index: xfsprogs/repair/dinode.c =================================================================== --- xfsprogs.orig/repair/dinode.c 2011-10-30 05:56:36.132124261 +0100 +++ xfsprogs/repair/dinode.c 2011-10-30 05:57:45.957126722 +0100 @@ -1439,7 +1439,7 @@ _("mismatch between format (%d) and size } if (dino->di_format == XFS_DINODE_FMT_LOCAL) { do_warn( -_("mismatch between format (%d) and size (%" PRId64 ") in symlink inode %" PRIu64 "n"), +_("mismatch between format (%d) and size (%" PRId64 ") in symlink inode %" PRIu64 "\n"), dino->di_format, (__int64_t)be64_to_cpu(dino->di_size), lino); return 1; Index: xfsprogs/repair/dir2.c =================================================================== --- xfsprogs.orig/repair/dir2.c 2011-10-30 05:56:36.156126568 +0100 +++ xfsprogs/repair/dir2.c 2011-11-02 10:16:46.593593447 +0100 @@ -1174,7 +1174,7 @@ _("would have corrected entry count in d ino, sfp->hdr.count, i); } else { do_warn( -_("corrected entry count in directory %" PRIu64 "u, was %d, now %d\n"), +_("corrected entry count in directory %" PRIu64 ", was %d, now %d\n"), ino, sfp->hdr.count, i); sfp->hdr.count = i; *dino_dirty = 1; Index: xfsprogs/repair/phase6.c =================================================================== --- xfsprogs.orig/repair/phase6.c 2011-10-30 05:56:36.144127454 +0100 +++ xfsprogs/repair/phase6.c 2011-10-30 05:57:45.973171205 +0100 @@ -2071,7 +2071,7 @@ longform_dir2_entry_check_data( if (is_inode_free(irec, ino_offset)) { nbad++; if (entry_junked( - _("entry \"%s\" in directory inode %" PRIu64 " points to free inode " PRIu64), + _("entry \"%s\" in directory inode %" PRIu64 " points to free inode %" PRIu64), fname, ip->i_ino, inum)) { dep->name[0] = '/'; libxfs_dir2_data_log_entry(tp, bp, dep); Index: xfsprogs/repair/scan.c =================================================================== --- xfsprogs.orig/repair/scan.c 2011-10-30 05:56:36.168127218 +0100 +++ xfsprogs/repair/scan.c 2011-10-30 05:57:45.981169953 +0100 @@ -289,14 +289,14 @@ _("bad back (left) sibling pointer (saw */ set_bmap(agno, agbno, XR_E_MULT); do_warn( -_("inode 0x%" PRIu64 "bmap block 0x%" PRIu64 " claimed, state is %d\n"), +_("inode 0x%" PRIu64 "bmap block 0x%" PRIx64 " claimed, state is %d\n"), ino, bno, state); break; case XR_E_MULT: case XR_E_INUSE_FS: set_bmap(agno, agbno, XR_E_MULT); do_warn( -_("inode 0x%" PRIu64 " bmap block 0x%" PRIu64 " claimed, state is %d\n"), +_("inode 0x%" PRIu64 " bmap block 0x%" PRIx64 " claimed, state is %d\n"), ino, bno, state); /* * if we made it to here, this is probably a bmap block @@ -311,7 +311,7 @@ _("inode 0x%" PRIu64 " bmap block 0x%" P case XR_E_BAD_STATE: default: do_warn( -_("bad state %d, inode 0x%" PRIu64 " bmap block 0x%" PRIu64 "\n"), +_("bad state %d, inode 0x%" PRIu64 " bmap block 0x%" PRIx64 "\n"), state, ino, bno); break; } @@ -338,7 +338,7 @@ _("bad state %d, inode 0x%" PRIu64 " bma if (numrecs > mp->m_bmap_dmxr[0] || (isroot == 0 && numrecs < mp->m_bmap_dmnr[0])) { do_warn( -_("inode 0x%" PRIu64 " bad # of bmap records (%u, min - %u, max - %u)\n"), +_("inode %" PRIu64 " bad # of bmap records (%u, min - %u, max - %u)\n"), ino, numrecs, mp->m_bmap_dmnr[0], mp->m_bmap_dmxr[0]); return(1); From fengguang.wu@intel.com Wed Nov 2 10:14:06 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2FE6HE179300 for ; Wed, 2 Nov 2011 10:14:06 -0500 X-ASG-Debug-ID: 1320246845-71b503bc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mga14.intel.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 90F191F2D111 for ; Wed, 2 Nov 2011 08:14:05 -0700 (PDT) Received: from mga14.intel.com (mga14.intel.com [143.182.124.37]) by cuda.sgi.com with ESMTP id Dp8fHI6CW55XnJ2S for ; Wed, 02 Nov 2011 08:14:05 -0700 (PDT) Received: from azsmga001.ch.intel.com ([10.2.17.19]) by azsmga102.ch.intel.com with ESMTP; 02 Nov 2011 08:14:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.69,444,1315206000"; d="scan'208";a="69754244" Received: from unknown (HELO localhost.localdomain) ([10.255.21.180]) by azsmga001.ch.intel.com with ESMTP; 02 Nov 2011 08:13:57 -0700 Received: from wfg by localhost.localdomain with local (Exim 4.69) (envelope-from ) id 1RLcVn-0001zQ-HE; Wed, 02 Nov 2011 23:13:55 +0800 Date: Wed, 2 Nov 2011 23:13:55 +0800 From: Wu Fengguang To: Christoph Hellwig Cc: "linux-fsdevel@vger.kernel.org" , Peter Zijlstra , Jan Kara , Curt Wohlgemuth , Michael Rubin , Andrew Morton , Christoph Hellwig , Dave Chinner , Greg Thelen , Minchan Kim , Vivek Goyal , Andrea Righi , linux-mm , LKML , Tang Feng , Linus Torvalds , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: writeback tree status (for 3.2 merge window) Subject: Re: writeback tree status (for 3.2 merge window) Message-ID: <20111102151355.GA6717@localhost> References: <20111101074347.GA23644@localhost> <20111102091012.GA25879@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111102091012.GA25879@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: mga14.intel.com[143.182.124.37] X-Barracuda-Start-Time: 1320246845 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79117 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 02, 2011 at 05:10:12AM -0400, Christoph Hellwig wrote: > On Tue, Nov 01, 2011 at 03:43:47PM +0800, Wu Fengguang wrote: > > Hi, > > > > There are 3 patchsets sitting in the writeback tree. > > > > 1) IO-less dirty throttling v12 > > https://github.com/fengguang/linux/commits/dirty-throttling-v12 > > > > 2) writeback reasons tracing from Curt Wohlgemuth > > https://github.com/fengguang/linux/commits/writeback-reason > > > > 3) writeback queuing changes from Jan Kara and me > > https://github.com/fengguang/linux/commits/requeue-io-wait > > > > They have been merged into this branch testing in linux-next for a while: > > > > https://github.com/fengguang/linux/commits/writeback-for-next > > > > Since (3) still has an unresolved issue (detailed in the below > > links), it looks better to hold it back for this merge window. > > Given that we have run into issues so much with it that's proably > the better idea. > > To fix the originally reported issue with the missing file size updates > in XFS we plan to simply log all filesize changes in XFS. Currently I > had this in the 3.3 queue, but in the worst case we might have to move > this forward to 3.2. OK. Anyway I'll report any progress early on (3). > > The patches from (1,2) together with 2 tracing patches essential for > > debugging (1) have been pushed to the "writeback-for-linus" branch: > > > > http://git.kernel.org/?p=linux/kernel/git/wfg/linux.git;a=shortlog;h=refs/heads/writeback-for-linus > > > > If no objections, I'll send a pull request to Linus soon. > > Please do so. I'm really looking forward to see the I/O-less > balance_dirty_pages in ASAP. Done, thanks! Thanks, Fengguang From aelder@sgi.com Wed Nov 2 12:52:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2HqNaF189973 for ; Wed, 2 Nov 2011 12:52:23 -0500 Received: from xmail.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay1.corp.sgi.com (Postfix) with ESMTP id 686958F80E1; Wed, 2 Nov 2011 10:52:20 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Wed, 2 Nov 2011 12:52:20 -0500 Message-ID: <1320256339.3145.30.camel@doink> Subject: Re: [PATCH] Fix possible memory corruption in xfs_readlink From: Alex Elder Reply-To: To: Ben Hutchings CC: Carlos Maiolino , Date: Wed, 2 Nov 2011 12:52:19 -0500 In-Reply-To: <1320156842.30281.28.camel@deadeye> References: <1320156842.30281.28.camel@deadeye> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I don't konw why, but I *think* the response I thought I sent earlier didn't actually make it out. Just in case, I'm trying to recreate what I had before, below. Sorry if something like this shows up twice. On Tue, 2011-11-01 at 14:14 +0000, Ben Hutchings wrote: > On Tue, 2011-10-18 at 02:18 -0200, Carlos Maiolino wrote: > > Fixes a possible memory corruption when the link is larger than > > MAXPATHLEN and XFS_DEBUG is not enabled. This also remove the > > S_ISLNK assert, since the inode mode is checked previously in > > xfs_readlink_by_handle() and via VFS. > > > > Signed-off-by: Carlos Maiolino > > --- > > fs/xfs/xfs_vnodeops.c | 11 ++++++++--- > > 1 files changed, 8 insertions(+), 3 deletions(-) A few comments inline below, followed by Ben's original message and some explanation from me. > > diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c > > index 51fc429..c3288be 100644 > > --- a/fs/xfs/xfs_vnodeops.c > > +++ b/fs/xfs/xfs_vnodeops.c > > @@ -123,13 +123,18 @@ xfs_readlink( > > > > xfs_ilock(ip, XFS_ILOCK_SHARED); > > > > - ASSERT(S_ISLNK(ip->i_d.di_mode)); > > - ASSERT(ip->i_d.di_size <= MAXPATHLEN); > > - > > pathlen = ip->i_d.di_size; > pathlen is a signed int (32-bit) and di_size has signed 64-bit type. I concur, di_size here is an xfs_fsize_t, which is defined as __int64_t (a signed 64-bit integer). pathlen is defined as a (signed) int. > So, even if di_size was verified to be non-negative earlier (is it?)... More on this question below. > > if (!pathlen) > > goto out; > > > > + if (pathlen > MAXPATHLEN) { > > ...pathlen may be negative here and will pass this check. > > Ben. You are right to call attention to this. I think defining pathlen to be an int here is a mistake in any case (the type ought to match that of id.di_size), though in practice it will not be a problem. You mention two remaining issues: - can a value held in ip->i_d.di_size result in a negative value in pathlen as a result of the assignment? - is ip->i_d.di_size guaranteed (verified) to be non-negative? On the first question, the C standard says that the result of the assignment--if id.di_size exceeds what can be represented by pathlen--is implementation defined, therefore it is not safe. So you're right, this needs to be fixed. On the second question, ip->i_d.di_size is assigned in a lot of places. I started looking at all the places where this field gets assigned. In about half of them I examined the assignment obviously left its value non-negative, or only allowing a negative assignment if the previous value was already negative. But rather than complete this research task, I think it will be better (for now) to simply check for a negative ip->i_d.di_size, and if it's seen, either return an error or initiate a forced shutdown (since it represents corruption). I'm interested in what others think. -Alex > > + xfs_alert(mp, "%s: inode (%llu) symlink length (%d) too long", > > + __func__, (unsigned long long)ip->i_ino, pathlen); > > + ASSERT(0); > > + return XFS_ERROR(EFSCORRUPTED); > > + } > > + > > + > > if (ip->i_df.if_flags & XFS_IFINLINE) { > > memcpy(link, ip->i_df.if_u1.if_data, pathlen); > > link[pathlen] = '\0'; > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From www-data@techwebex.com Wed Nov 2 13:16:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2IGerv191140 for ; Wed, 2 Nov 2011 13:16:41 -0500 X-ASG-Debug-ID: 1320257794-615f004e0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from server.techwebex.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 272B612FE294 for ; Wed, 2 Nov 2011 11:16:35 -0700 (PDT) Received: from server.techwebex.com (static.10.106.40.188.clients.your-server.de [188.40.106.10]) by cuda.sgi.com with ESMTP id sWQfJIzodeDhkYeP for ; Wed, 02 Nov 2011 11:16:35 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by server.techwebex.com (Postfix) with ESMTP id 47D5523DC6B8 for ; Thu, 3 Nov 2011 04:16:34 +1000 (EST) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: by amavisd-new at techwebex.com Received: from server.techwebex.com ([127.0.0.1]) by localhost (server.techwebex.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id whTEoSn0M0h7 for ; Thu, 3 Nov 2011 04:16:33 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by server.techwebex.com (Postfix) with ESMTP id BDFDF23DC6BD for ; Thu, 3 Nov 2011 04:16:33 +1000 (EST) Received: from server.techwebex.com (localhost [127.0.0.1]) by server.techwebex.com (Postfix) with ESMTP id A9D4723DC6B8 for ; Thu, 3 Nov 2011 04:16:33 +1000 (EST) Received: (from www-data@localhost) by server.techwebex.com (8.14.3/8.14.3/Submit) id pA2IGXWw032145; Thu, 3 Nov 2011 04:16:33 +1000 To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: world wide gaming even when you lose you win Subject: world wide gaming even when you lose you win Date: Thu, 3 Nov 2011 04:16:33 +1000 From: admin Message-ID: X-Priority: 3 X-Mailer: PHPMailer [version 1.73] X-Mailer: phplist v2.10.17 X-MessageID: 82 X-ListMember: linux-xfs@oss.sgi.com MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="UTF-8" X-Barracuda-Connect: static.10.106.40.188.clients.your-server.de[188.40.106.10] X-Barracuda-Start-Time: 1320257796 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4999 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79130 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Status: Clean Fellow Seekers, I would like to share with my friends something that is Unique. If you would like to take a look at this, you will see benefit from taking up a position. I have personally taken a position within Capitol Gaming. After having numerous conversations with the International lead distributor in Europe and, who is currently now in the U.S.A,I am convinced that those who join in now, will reap the rewards from the influx of people, who will be coming in after the launch. The member’s potential income will be huge in this; I am now choosing to take what I have heard, from the top International online business builders. All the work that has gone into this venture and with the association Capitol Gaming has with Betfair.com, the unique method employed here, will maximize and bring the greatest and best potential offered to anybody seeking an online home business opportunity. One must consider that there is also massive use of online gaming these days. Taking a position at this early stage, and to be in my group near the top, has to be a winner! The cost is $49 lifetime membership and $105 for player membership (if you wish, you can upgrade later to a premium membership) I cannot say what individuals will earn, but I have been told that early positions could be paying thousands of dollars in the first few months. This industry has a massive turnover, and being part of it gives us big potential far exceeding any initial cost! More information will be coming out; I would suggest that you seriously consider taking a position within my leadership team www.capitolgaming.com/info Fellow Seekers ,timing is important as this is a once only opportunity to be placed ahead of many sporting clubs and associations that we will be benefiting from. The official launch is scheduled for November this year, be a part of my team now to maximize your potential. The best bet on the net is here now, join the top members now in soft launch, and give yourself a head start now to immediate success!!! This is a trillion dollar industry - why not grab a part of it?? • By signing now, the leaders can place you in the current best position to establish your future Income potential • Future income will roll up to you based on the activity of those below you that you bring in or WE place in via Spill over • The leaders will be placing many Clubs, Pubs and Sporting Associations into Capitol Gaming on an ongoing basis as the company expands globally. This will assist the growth of your business and YOUR income. • Your income will be generated from the points accumulated by those betting within your business. A portion of every wager placed goes into Capitol Gaming from your down line and into your account. So if they Win, Lose or Draw you make money • So getting in NOW, and being placed correctly for maximum income potential, is highly recommended. Our team will assist you in meeting the qualifications to achieve and maintain an ongoing income. As I mentioned earlier in this email regarding the International Lead Distributor, he is presently traveling throughout the U.S.A and CANADA during the next few weeks promoting Capitol Gaming. If you or anybody is interested in attending an information session, please do not hesitate contacting me for details or to see if there are any sessions planned for your area Call or email me after signing in so we can make the next moves! Best Wishes, Ian Daley 29 Baileys Rd Tallai Queensland 4213 Australia 61 421 380 302 -- If you do not want to receive any more e mails follow use this link to UNSUBSCRIBE, http://www.health-essential-oils.net/lists/?p=unsubscribe&uid=aeca879698207b3bba99098240cad5e8 -- powered by phpList, www.phplist.com -- From BATV+572a843891b4952d1fe5+2992+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 2 14:45:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2JjC7G196428 for ; Wed, 2 Nov 2011 14:45:14 -0500 X-ASG-Debug-ID: 1320263109-5b9201800000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A3E40FE47DB; Wed, 2 Nov 2011 12:45:09 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id HoP8bV3FlQ7h29ep; Wed, 02 Nov 2011 12:45:09 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLgkF-0004eV-JT; Wed, 02 Nov 2011 19:45:07 +0000 Date: Wed, 2 Nov 2011 15:45:07 -0400 From: Christoph Hellwig To: Alex Elder Cc: Ben Hutchings , Carlos Maiolino , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Fix possible memory corruption in xfs_readlink Subject: Re: [PATCH] Fix possible memory corruption in xfs_readlink Message-ID: <20111102194507.GA14429@infradead.org> References: <1320156842.30281.28.camel@deadeye> <1320256339.3145.30.camel@doink> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320256339.3145.30.camel@doink> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320263110 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79136 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We should validate that the value isn't negative in xfs_iformat_*, although we currently don't do that. It already verified that it fits into the XFS_DFORK_DSIZE, which should take care of fitting into 32-bits. Adding another explicit check probably won't hurt, given that XFS_DFORK_DSIZE is calculated dynamically based on the fork offset. From BATV+572a843891b4952d1fe5+2992+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 2 14:54:02 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2Js1ih196780 for ; Wed, 2 Nov 2011 14:54:02 -0500 X-ASG-Debug-ID: 1320263640-134d00ee0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D33E412FECAA; Wed, 2 Nov 2011 12:54:00 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id mlp2EIq0pVVoCqjE; Wed, 02 Nov 2011 12:54:00 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLgso-0005r8-0k; Wed, 02 Nov 2011 19:53:58 +0000 Date: Wed, 2 Nov 2011 15:53:58 -0400 From: Christoph Hellwig To: Dmitry Monakhov Cc: linux-fsdevel@vger.kernel.org, aelder@sgi.com, hch@lst.de, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/8] xfstests: add a new test that runs fsstress under ENOSPC conditions Subject: Re: [PATCH 7/8] xfstests: add a new test that runs fsstress under ENOSPC conditions Message-ID: <20111102195357.GA22500@infradead.org> References: <1319849297-3506-1-git-send-email-dmonakhov@openvz.org> <1319849297-3506-8-git-send-email-dmonakhov@openvz.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1319849297-3506-8-git-send-email-dmonakhov@openvz.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320263640 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79136 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Oct 29, 2011 at 04:48:16AM +0400, Dmitry Monakhov wrote: > During stress testing we want to cover as much code paths as possible > fsstress is very good for this purpose. But it has expandable nature > (disk usage almost continually grow). So once it goes in no ENOSPC > condition it will be where till the end. But by running 'dd' writers > in parallel we can regularly trigger ENOSPC but only for a limited > periods of time because each time it opens the same file with O_TRUNC. This fails for me on XFS because the fsstress process has already finished by the time you try to kill it: --- 266.out 2011-11-02 19:46:27.000000000 +0000 +++ 266.out.bad 2011-11-02 19:48:33.000000000 +0000 @@ -3,3 +3,4 @@ Run fsstress Run dd writers in parallel +./266: line 60: kill: (3403) - No such process From BATV+572a843891b4952d1fe5+2992+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 2 14:55:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2Jtbjh196956 for ; Wed, 2 Nov 2011 14:55:37 -0500 X-ASG-Debug-ID: 1320263736-4acc02fd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7E7B31CDB20C; Wed, 2 Nov 2011 12:55:36 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Rk7VnYGp0lmOjWm1; Wed, 02 Nov 2011 12:55:36 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLguM-0006j1-Ux; Wed, 02 Nov 2011 19:55:35 +0000 Date: Wed, 2 Nov 2011 15:55:34 -0400 From: Christoph Hellwig To: Dmitry Monakhov Cc: linux-fsdevel@vger.kernel.org, aelder@sgi.com, hch@lst.de, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/8] xfstests: add fiemap operation to fsstress Subject: Re: [PATCH 6/8] xfstests: add fiemap operation to fsstress Message-ID: <20111102195534.GB22500@infradead.org> References: <1319849297-3506-1-git-send-email-dmonakhov@openvz.org> <1319849297-3506-7-git-send-email-dmonakhov@openvz.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1319849297-3506-7-git-send-email-dmonakhov@openvz.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320263736 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79137 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Oct 29, 2011 at 04:48:15AM +0400, Dmitry Monakhov wrote: > Related bug: http://patchwork.ozlabs.org/patch/118863 > > Signed-off-by: Dmitry Monakhov This causes a very weird XFS failure in test 117 for me. While it obviously is an xfs bug that you uncovered (good!) I'm a bit worried about simply enabling operations in existing tests. Alex, Eric, Dave - should we add new tests with the new operations Dmitry added, or is adding new ops to the existing tests fine? From aelder@sgi.com Wed Nov 2 15:22:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2KMdii198195 for ; Wed, 2 Nov 2011 15:22:40 -0500 Received: from xmail.sgi.com (pv-excas1-dc21-nlb.corp.sgi.com [137.38.102.126]) by relay2.corp.sgi.com (Postfix) with ESMTP id 770DD30408B; Wed, 2 Nov 2011 13:22:36 -0700 (PDT) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Wed, 2 Nov 2011 15:22:35 -0500 Message-ID: <1320265355.3145.53.camel@doink> Subject: Re: [PATCH] Fix possible memory corruption in xfs_readlink From: Alex Elder Reply-To: To: Christoph Hellwig CC: Ben Hutchings , Carlos Maiolino , Date: Wed, 2 Nov 2011 15:22:35 -0500 In-Reply-To: <20111102194507.GA14429@infradead.org> References: <1320156842.30281.28.camel@deadeye> <1320256339.3145.30.camel@doink> <20111102194507.GA14429@infradead.org> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 2011-11-02 at 15:45 -0400, Christoph Hellwig wrote: > We should validate that the value isn't negative in xfs_iformat_*, > although we currently don't do that. It already verified that it > fits into the XFS_DFORK_DSIZE, which should take care of fitting > into 32-bits. Adding another explicit check probably won't hurt, > given that XFS_DFORK_DSIZE is calculated dynamically based on the > fork offset. > That's true, but there are other places where it gets updated, yet not defensively validated. For example, in xfs_dir2_shrink_inode(), if: fsbno > (INT64_MAX >> mp->m_sb.sb_blocklog) then the (signed) di_size field would be assigned a value that exceeded its max representable value, producing unreliable (implementation-defined) results. That may well be an impossible situation, but it's not obvious without really looking at the code. It's a bit of a can of worms, which is why I suggested just testing for this (unlikely) condition in xfs_readlink() for now. -Alex From rjevskiy@gmail.com Wed Nov 2 15:36:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_73, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2KajjR198718 for ; Wed, 2 Nov 2011 15:36:45 -0500 X-ASG-Debug-ID: 1320266203-4b1003700000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0959421A3AC for ; Wed, 2 Nov 2011 13:36:44 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id WMMgg1hzfAZdf6XE for ; Wed, 02 Nov 2011 13:36:44 -0700 (PDT) Received: by bkbzs8 with SMTP id zs8so630856bkb.26 for ; Wed, 02 Nov 2011 13:36:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version:content-type; bh=YZN8P/gBJ+hFaEgPcx3qYVMTznt2+APK401oteAqB/A=; b=QVtBgVscyYU3NYUyevy9db4R4Etov9YR9fA/8J6t5jFkKTNldYOh7xl2A+t+Quhxc2 T8dKyb2AtPGG2gU5P56FMJhF2Vfdt/mD59pm6J8Wwv3dSJ8OGivzCJ/owySxt5ahjNFr tKsIqaHuya7fTI4IQs17T0UG2NM/h2ofBpF3w= Received: by 10.204.16.67 with SMTP id n3mr5249503bka.6.1320266203263; Wed, 02 Nov 2011 13:36:43 -0700 (PDT) Received: from smtp.gmail.com ([178.176.102.57]) by mx.google.com with ESMTPS id a27sm3416047bku.9.2011.11.02.13.36.38 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 02 Nov 2011 13:36:41 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: Christoph Hellwig Cc: linux-fsdevel@vger.kernel.org, aelder@sgi.com, hch@lst.de, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/8] xfstests: add a new test that runs fsstress under ENOSPC conditions Subject: Re: [PATCH 7/8] xfstests: add a new test that runs fsstress under ENOSPC conditions In-Reply-To: <20111102195357.GA22500@infradead.org> References: <1319849297-3506-1-git-send-email-dmonakhov@openvz.org> <1319849297-3506-8-git-send-email-dmonakhov@openvz.org> <20111102195357.GA22500@infradead.org> User-Agent: Notmuch/0.5-69-g3e4a9d6 (http://notmuchmail.org) Emacs/23.1.1 (i486-pc-linux-gnu) Date: Thu, 03 Nov 2011 00:36:36 +0400 Message-ID: <8739e6z2gb.fsf@dmbot.sw.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320266205 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0014 1.0000 -2.0120 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79139 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 2 Nov 2011 15:53:58 -0400, Christoph Hellwig wrote: > On Sat, Oct 29, 2011 at 04:48:16AM +0400, Dmitry Monakhov wrote: > > During stress testing we want to cover as much code paths as possible > > fsstress is very good for this purpose. But it has expandable nature > > (disk usage almost continually grow). So once it goes in no ENOSPC > > condition it will be where till the end. But by running 'dd' writers > > in parallel we can regularly trigger ENOSPC but only for a limited > > periods of time because each time it opens the same file with O_TRUNC. > > This fails for me on XFS because the fsstress process has already > finished by the time you try to kill it: > > --- 266.out 2011-11-02 19:46:27.000000000 +0000 > +++ 266.out.bad 2011-11-02 19:48:33.000000000 +0000 > @@ -3,3 +3,4 @@ > Run fsstress > > Run dd writers in parallel > +./266: line 60: kill: (3403) - No such process Strange... this means that parent process died unexpectedly. Works fine fore me. In my case this happen once due to unknown options(new opt " -fsetattr=1" passed to fsstress explicitly) because i've forget to rebuilt fsstress via make. Can you please explicitly rebuild, and check one more time to be 100% sure. > -- > To unsubscribe from this list: send the line "unsubscribe linux-fsdevecalll" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From BATV+572a843891b4952d1fe5+2992+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 2 16:06:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_73 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2L6eJV200528 for ; Wed, 2 Nov 2011 16:06:40 -0500 X-ASG-Debug-ID: 1320267997-32a702980000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9F2A121A7DF; Wed, 2 Nov 2011 14:06:38 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id CBh6K4SFNn9mhyHF; Wed, 02 Nov 2011 14:06:38 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLi16-0005Um-0e; Wed, 02 Nov 2011 21:06:36 +0000 Date: Wed, 2 Nov 2011 17:06:35 -0400 From: Christoph Hellwig To: Dmitry Monakhov Cc: Christoph Hellwig , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/8] xfstests: add a new test that runs fsstress under ENOSPC conditions Subject: Re: [PATCH 7/8] xfstests: add a new test that runs fsstress under ENOSPC conditions Message-ID: <20111102210635.GA20955@infradead.org> References: <1319849297-3506-1-git-send-email-dmonakhov@openvz.org> <1319849297-3506-8-git-send-email-dmonakhov@openvz.org> <20111102195357.GA22500@infradead.org> <8739e6z2gb.fsf@dmbot.sw.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8739e6z2gb.fsf@dmbot.sw.ru> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320267998 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79141 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 03, 2011 at 12:36:36AM +0400, Dmitry Monakhov wrote: > Strange... this means that parent process died unexpectedly. > Works fine fore me. In my case this happen once due to unknown > options(new opt " -fsetattr=1" passed to fsstress explicitly) because i've > forget to rebuilt fsstress via make. Can you please explicitly rebuild, > and check one more time to be 100% sure. Oh, looks like it wanted the setattr option. I held back all the new features for now until we figure if we want them for existing tests. I've applied and pushed out the first three patches for now, the others should follow as soon as I've decided on what to do with new operations. From wkendall@sgi.com Wed Nov 2 16:11:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2LB6Tr200837 for ; Wed, 2 Nov 2011 16:11:06 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id B341B304113 for ; Wed, 2 Nov 2011 14:11:03 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 94FC87001EC0 for ; Wed, 2 Nov 2011 16:11:03 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id 55A8321E23D2; Wed, 2 Nov 2011 16:11:03 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Subject: [PATCH 0/8] xfsdump: enable support for multiple streams Date: Wed, 2 Nov 2011 16:10:46 -0500 Message-Id: <1320268254-20583-1-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This series resurrects the IRIX multi-stream support for splitting a backup among several output files/tapes. This offers some nice performance improvements, particularly in xfsrestore where a single stream often cannot keep the filesystem/disks busy. I've observed a 1.7x improvement on a backup and a 5x improvement on restore. I have a couple of xfstests for this, and will submit those once a few outstanding xfsdump test patches have been reviewed. There's a bit more work to do: - Now that xfsdump has threads once again, the tape I/O ring buffer support can be enabled. This series leaves it disabled so that more testing can be done in that area. - Currently the stream split points are determined by doing an extra inode scan. This is unchanged from how it was done on IRIX. I'd like to change this so that enough info is kept from the initial inode scan to determine appropriate split points without an additional scan. - You may notice in the last patch of this series that a lot of "miniroot" references also look at whether or not the dump is to a pipe. Now that the "miniroot" checks are gone, it's possible to clean up the pipe-related code too. I've got a separate patch series for that which I'll submit later. From wkendall@sgi.com Wed Nov 2 16:11:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2LBBXo200871 for ; Wed, 2 Nov 2011 16:11:11 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id D2C99AC004; Wed, 2 Nov 2011 14:11:10 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 80FDF7001EC2; Wed, 2 Nov 2011 16:11:10 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id 78F2421E23D2; Wed, 2 Nov 2011 16:11:10 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH 4/8] xfsdump: simplify qlock ordinal bitmap Date: Wed, 2 Nov 2011 16:10:50 -0500 Message-Id: <1320268254-20583-5-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320268254-20583-1-git-send-email-wkendall@sgi.com> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The qlock abstraction manages an array of ordinal bitmaps, one bitmap for each thread. The bitmap indicates which locks a thread is holding and is used to verify that the locks are obtained in the correct order. There is no need to use an array to store the bitmaps, and in fact adding entries to the array is broken because qlock_thrdcnt is not protected by a lock. A simpler approach is to create a per-thread bitmap using thread local storage. With this change, there is no need for each new thread to register with the qlock abstraction, so qlock_thrdinit() goes away. Remove qlock_init() since it can be statically initialized, and that means there's no need for a flag (qlock_inited) indicating that the module has been initialized. Also there's no longer a need to track or limit the number of threads that the qlock abstraction can handle. Signed-off-by: Bill Kendall --- common/cldmgr.c | 4 - common/main.c | 7 -- common/qlock.c | 195 ++++--------------------------------------------------- common/qlock.h | 11 +--- 4 files changed, 14 insertions(+), 203 deletions(-) diff --git a/common/cldmgr.c b/common/cldmgr.c index 7784a15..d327bab 100644 --- a/common/cldmgr.c +++ b/common/cldmgr.c @@ -213,12 +213,8 @@ cldmgr_entry( void *arg1 ) { cld_t *cldp = ( cld_t * )arg1; pid_t pid = getpid( ); - /* REFERENCED */ - bool_t ok; cldp->c_pid = pid; - ok = qlock_thrdinit( ); - ASSERT( ok ); if ( ( intgen_t )( cldp->c_streamix ) >= 0 ) { stream_register( pid, ( intgen_t )cldp->c_streamix ); } diff --git a/common/main.c b/common/main.c index be8a921..25c0838 100644 --- a/common/main.c +++ b/common/main.c @@ -357,13 +357,6 @@ main( int argc, char *argv[] ) miniroot = BOOL_TRUE; } - /* initialize the spinlock allocator - */ - ok = qlock_init( ); - if ( ! ok ) { - return mlog_exit(EXIT_ERROR, RV_INIT); - } - /* initialize message logging (stage 2) - allocate the message lock */ ok = mlog_init2( ); diff --git a/common/qlock.c b/common/qlock.c index 5b87b3b..67d1291 100644 --- a/common/qlock.c +++ b/common/qlock.c @@ -48,14 +48,6 @@ struct qsem { }; typedef struct qsem qsem_t; -#define QLOCK_THRDCNTMAX 256 - /* arbitrary limit on number of threads supported - */ - -static size_t qlock_thrdcnt; - /* how many threads have checked in - */ - typedef size_t ordmap_t; /* bitmap of ordinals. used to track what ordinals have * been allocated. @@ -69,12 +61,7 @@ static ordmap_t qlock_ordalloced; /* to enforce allocation of only one lock to each ordinal value */ -struct thrddesc { - pthread_t td_tid; - ordmap_t td_ordmap; -}; -typedef struct thrddesc thrddesc_t; -static thrddesc_t qlock_thrddesc[ QLOCK_THRDCNTMAX ]; +static __thread ordmap_t thread_ordmap; /* holds the ordmap for each thread */ @@ -94,69 +81,12 @@ static thrddesc_t qlock_thrddesc[ QLOCK_THRDCNTMAX ]; /* checks if any bits less than ord are set in the ordmap */ -/* REFERENCED */ -static bool_t qlock_inited = BOOL_FALSE; - /* to sanity check initialization - */ - -/* forward declarations - */ -static void qlock_ordmap_add( pthread_t tid ); -static ordmap_t *qlock_ordmapp_get( pthread_t tid ); -static ix_t qlock_thrdix_get( pthread_t tid ); - -bool_t -qlock_init( void ) -{ - /* sanity checks - */ - ASSERT( ! qlock_inited ); - - /* initially no threads checked in - */ - qlock_thrdcnt = 0; - - /* initially no ordinals allocated - */ - qlock_ordalloced = 0; - - /* now say we are initialized - */ - qlock_inited = BOOL_TRUE; - - /* add the parent thread to the thread list - */ - if ( ! qlock_thrdinit( )) { - qlock_inited = BOOL_FALSE; - return BOOL_FALSE; - } - - return BOOL_TRUE; -} - -bool_t -qlock_thrdinit( void ) -{ - /* sanity checks - */ - ASSERT( qlock_inited ); - - /* add thread to ordmap list - */ - qlock_ordmap_add( pthread_self() ); - - return BOOL_TRUE; -} qlockh_t qlock_alloc( ix_t ord ) { qlock_t *qlockp; - /* sanity checks - */ - ASSERT( qlock_inited ); - /* verify the ordinal is not already taken, and mark as taken */ ASSERT( ! QLOCK_ORDMAP_GET( qlock_ordalloced, ord )); @@ -183,48 +113,34 @@ qlock_lock( qlockh_t qlockh ) { qlock_t *qlockp = ( qlock_t * )qlockh; pthread_t tid; - ix_t thrdix; - ordmap_t *ordmapp; /* REFERENCED */ intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - - /* get the caller's tid and thread index + /* get the caller's tid */ tid = pthread_self(); - thrdix = qlock_thrdix_get( tid ); - - /* get the ordmap for this thread - */ - ordmapp = qlock_ordmapp_get( tid ); - /* assert that this lock not already held by this thread */ - if ( QLOCK_ORDMAP_GET( *ordmapp, qlockp->ql_ord )) { + if ( QLOCK_ORDMAP_GET( thread_ordmap, qlockp->ql_ord )) { mlog( MLOG_NORMAL | MLOG_WARNING | MLOG_NOLOCK, - _("lock already held: thrd %d tid %lu ord %d map %x\n"), - thrdix, + _("lock already held: tid %lu ord %d map %x\n"), tid, qlockp->ql_ord, - *ordmapp ); + thread_ordmap ); } - ASSERT( ! QLOCK_ORDMAP_GET( *ordmapp, qlockp->ql_ord )); + ASSERT( ! QLOCK_ORDMAP_GET( thread_ordmap, qlockp->ql_ord )); /* assert that no locks with a lesser ordinal are held by this thread */ - if ( QLOCK_ORDMAP_CHK( *ordmapp, qlockp->ql_ord )) { + if ( QLOCK_ORDMAP_CHK( thread_ordmap, qlockp->ql_ord )) { mlog( MLOG_NORMAL | MLOG_WARNING | MLOG_NOLOCK, - _("lock ordinal violation: thrd %d tid %lu ord %d map %x\n"), - thrdix, + _("lock ordinal violation: tid %lu ord %d map %x\n"), tid, qlockp->ql_ord, - *ordmapp ); + thread_ordmap ); } - ASSERT( ! QLOCK_ORDMAP_CHK( *ordmapp, qlockp->ql_ord )); + ASSERT( ! QLOCK_ORDMAP_CHK( thread_ordmap, qlockp->ql_ord )); /* acquire the lock */ @@ -233,32 +149,23 @@ qlock_lock( qlockh_t qlockh ) /* add ordinal to this threads ordmap */ - QLOCK_ORDMAP_SET( *ordmapp, qlockp->ql_ord ); + QLOCK_ORDMAP_SET( thread_ordmap, qlockp->ql_ord ); } void qlock_unlock( qlockh_t qlockh ) { qlock_t *qlockp = ( qlock_t * )qlockh; - ordmap_t *ordmapp; /* REFERENCED */ intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - - /* get the ordmap for this thread - */ - ordmapp = qlock_ordmapp_get( pthread_self() ); - /* verify lock is held by this thread */ - ASSERT( QLOCK_ORDMAP_GET( *ordmapp, qlockp->ql_ord )); + ASSERT( QLOCK_ORDMAP_GET( thread_ordmap, qlockp->ql_ord )); /* clear lock's ord from thread's ord map */ - QLOCK_ORDMAP_CLR( *ordmapp, qlockp->ql_ord ); + QLOCK_ORDMAP_CLR( thread_ordmap, qlockp->ql_ord ); /* release the lock */ @@ -271,10 +178,6 @@ qsem_alloc( ix_t cnt ) { qsem_t *qsemp; - /* sanity checks - */ - ASSERT( qlock_inited ); - /* allocate a semaphore */ qsemp = ( qsem_t * )calloc( 1, sizeof( qsem_t )); @@ -297,10 +200,6 @@ qsem_free( qsemh_t qsemh ) { qsem_t *qsemp = ( qsem_t * )qsemh; - /* sanity checks - */ - ASSERT( qlock_inited ); - /* destroy the mutex and condition */ pthread_mutex_destroy( &qsemp->qs_mutex ); @@ -317,10 +216,6 @@ qsemP( qsemh_t qsemh ) qsem_t *qsemp = ( qsem_t * )qsemh; intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - /* acquire the lock */ rval = pthread_mutex_lock( &qsemp->qs_mutex ); @@ -347,10 +242,6 @@ qsemV( qsemh_t qsemh ) qsem_t *qsemp = ( qsem_t * )qsemh; intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - /* acquire the lock */ rval = pthread_mutex_lock( &qsemp->qs_mutex ); @@ -375,10 +266,6 @@ qsemPwouldblock( qsemh_t qsemh ) ix_t count; intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - /* acquire the lock */ rval = pthread_mutex_lock( &qsemp->qs_mutex ); @@ -403,10 +290,6 @@ qsemPavail( qsemh_t qsemh ) ix_t count; intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - /* acquire the lock */ rval = pthread_mutex_lock( &qsemp->qs_mutex ); @@ -431,10 +314,6 @@ qsemPblocked( qsemh_t qsemh ) ix_t waiters; intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - /* acquire the lock */ rval = pthread_mutex_lock( &qsemp->qs_mutex ); @@ -451,51 +330,3 @@ qsemPblocked( qsemh_t qsemh ) return waiters; } - -/* internal ordinal map abstraction - */ -static void -qlock_ordmap_add( pthread_t tid ) -{ - ASSERT( qlock_thrdcnt < QLOCK_THRDCNTMAX ); - qlock_thrddesc[ qlock_thrdcnt ].td_tid = tid; - qlock_thrddesc[ qlock_thrdcnt ].td_ordmap = 0; - qlock_thrdcnt++; -} - -static thrddesc_t * -qlock_thrddesc_get( pthread_t tid ) -{ - thrddesc_t *p; - thrddesc_t *endp; - - for ( p = &qlock_thrddesc[ 0 ], - endp = &qlock_thrddesc[ qlock_thrdcnt ] - ; - p < endp - ; - p++ ) { - if ( pthread_equal( p->td_tid, tid ) ) { - return p; - } - } - - return 0; -} - -static ordmap_t * -qlock_ordmapp_get( pthread_t tid ) -{ - thrddesc_t *p; - p = qlock_thrddesc_get( tid ); - return &p->td_ordmap; -} - -static ix_t -qlock_thrdix_get( pthread_t tid ) -{ - thrddesc_t *p; - p = qlock_thrddesc_get( tid ); - ASSERT( p >= &qlock_thrddesc[ 0 ] ); - return ( ix_t )( p - &qlock_thrddesc[ 0 ] ); -} diff --git a/common/qlock.h b/common/qlock.h index 5ac51bd..da2031c 100644 --- a/common/qlock.h +++ b/common/qlock.h @@ -21,7 +21,7 @@ /* qlock - quick locks abstraction * * threads may allocate quick locks using qlock_alloc, and free them with - * qlock_free. the abstraction is initialized with qlock_init. + * qlock_free. * * deadlock detection is accomplished by giving an ordinal number to each * lock allocated, and record all locks held by each thread. locks may not @@ -48,15 +48,6 @@ typedef void *qlockh_t; /* opaque handle */ -extern bool_t qlock_init( void ); - /* called by main to initialize abstraction. returns FALSE if - * utility should abort. - */ - -extern bool_t qlock_thrdinit( void ); - /* called by each thread to prepare it for participation - */ - extern qlockh_t qlock_alloc( ix_t ord ); /* allocates a qlock with the specified ordinal. returns * NULL if lock can't be allocated. -- 1.7.0.4 From wkendall@sgi.com Wed Nov 2 16:11:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2LB7mM200845 for ; Wed, 2 Nov 2011 16:11:07 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 0301D304115; Wed, 2 Nov 2011 14:11:06 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id D9B907001EC0; Wed, 2 Nov 2011 16:11:06 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id CE78921E23D2; Wed, 2 Nov 2011 16:11:06 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH 1/8] xfsdump: link with libpthread Date: Wed, 2 Nov 2011 16:10:47 -0500 Message-Id: <1320268254-20583-2-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320268254-20583-1-git-send-email-wkendall@sgi.com> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This patch changes xfsdump/xfsrestore to link with libpthread in preparation for enabling multi-stream support. The libpthread checks are the same as those used in xfsprogs. Signed-off-by: Bill Kendall --- configure.in | 3 +++ dump/Makefile | 2 +- include/builddefs.in | 1 + m4/Makefile | 1 + m4/package_pthread.m4 | 19 +++++++++++++++++++ restore/Makefile | 2 +- 6 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 m4/package_pthread.m4 diff --git a/configure.in b/configure.in index b7ea1eb..8d4a256 100644 --- a/configure.in +++ b/configure.in @@ -67,6 +67,9 @@ AC_MULTILIB($enable_lib64) AC_PACKAGE_NEED_UUID_H AC_PACKAGE_NEED_UUIDCOMPARE +AC_PACKAGE_NEED_PTHREAD_H +AC_PACKAGE_NEED_PTHREADMUTEXINIT + AC_PACKAGE_NEED_NCURSES_H AC_PACKAGE_WANT_WORKING_LIBNCURSES diff --git a/dump/Makefile b/dump/Makefile index ce964a0..d193f68 100644 --- a/dump/Makefile +++ b/dump/Makefile @@ -89,7 +89,7 @@ HFILES = $(LOCALINCL) LHFILES = $(COMMINCL) $(INVINCL) LINKS = $(COMMINCL) $(COMMON) $(INVINCL) $(INVCOMMON) LDIRT = $(LINKS) -LLDLIBS = $(LIBUUID) $(LIBHANDLE) $(LIBATTR) $(LIBRMT) +LLDLIBS = $(LIBUUID) $(LIBHANDLE) $(LIBATTR) $(LIBRMT) $(LIBPTHREAD) LTDEPENDENCIES = $(LIBRMT) LCFLAGS = -DDUMP diff --git a/include/builddefs.in b/include/builddefs.in index f69c038..d5cc8d3 100644 --- a/include/builddefs.in +++ b/include/builddefs.in @@ -16,6 +16,7 @@ CFLAGS = @CFLAGS@ LIBRMT = $(TOPDIR)/librmt/librmt.la LIBXFS = @libxfs@ LIBATTR = @libattr@ +LIBPTHREAD = @libpthread@ LIBUUID = @libuuid@ LIBCURSES = @libcurses@ LIBHANDLE = @libhdl@ diff --git a/m4/Makefile b/m4/Makefile index 8ce63f8..9a35056 100644 --- a/m4/Makefile +++ b/m4/Makefile @@ -17,6 +17,7 @@ LSRCFILES = \ package_attrdev.m4 \ package_globals.m4 \ package_ncurses.m4 \ + package_pthread.m4 \ package_utilies.m4 \ package_uuiddev.m4 \ package_xfslibs.m4 \ diff --git a/m4/package_pthread.m4 b/m4/package_pthread.m4 new file mode 100644 index 0000000..be21d29 --- /dev/null +++ b/m4/package_pthread.m4 @@ -0,0 +1,19 @@ +AC_DEFUN([AC_PACKAGE_NEED_PTHREAD_H], + [ AC_CHECK_HEADERS(pthread.h) + if test $ac_cv_header_pthread_h = no; then + AC_CHECK_HEADERS(pthread.h,, [ + echo + echo 'FATAL ERROR: could not find a valid pthread header.' + exit 1]) + fi + ]) + +AC_DEFUN([AC_PACKAGE_NEED_PTHREADMUTEXINIT], + [ AC_CHECK_LIB(pthread, pthread_mutex_init,, [ + echo + echo 'FATAL ERROR: could not find a valid pthread library.' + exit 1 + ]) + libpthread=-lpthread + AC_SUBST(libpthread) + ]) diff --git a/restore/Makefile b/restore/Makefile index 003ea16..ce3d6b4 100644 --- a/restore/Makefile +++ b/restore/Makefile @@ -99,7 +99,7 @@ HFILES = $(LOCALINCL) LHFILES = $(COMMINCL) $(INVINCL) LINKS = $(COMMINCL) $(COMMON) $(INVINCL) $(INVCOMMON) LDIRT = $(LINKS) -LLDLIBS = $(LIBUUID) $(LIBHANDLE) $(LIBATTR) $(LIBRMT) +LLDLIBS = $(LIBUUID) $(LIBHANDLE) $(LIBATTR) $(LIBRMT) $(LIBPTHREAD) LTDEPENDENCIES = $(LIBRMT) LCFLAGS = -DRESTORE -- 1.7.0.4 From wkendall@sgi.com Wed Nov 2 16:11:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2LBB3h200877 for ; Wed, 2 Nov 2011 16:11:12 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6D863AC003; Wed, 2 Nov 2011 14:11:08 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 1F8467001EC0; Wed, 2 Nov 2011 16:11:08 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id 1754C21E23D2; Wed, 2 Nov 2011 16:11:08 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH 2/8] xfsdump: remove multi-stream synchronous dir dump Date: Wed, 2 Nov 2011 16:10:48 -0500 Message-Id: <1320268254-20583-3-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320268254-20583-1-git-send-email-wkendall@sgi.com> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When doing multi-stream dumps, the directories are dumped by each stream in lock-step fashion. A stream backs up a given directory, then waits for all others to finish that directory, then they all move on to the next one. During restore a single stream is chosen to apply the directory dump. This patch changes xfsdump so that only one stream dumps the directories. The other streams begin dumping files immediately. This results in a faster backup, which is presumably why multiple streams are being used in the first place. It also removes the barrier routines in qlock.c as they were only used by the "SYNCDIR" code. Signed-off-by: Bill Kendall --- common/qlock.c | 37 ---------- common/qlock.h | 11 --- dump/content.c | 193 ++++++++++++----------------------------------------- restore/content.c | 33 +++++++++ 4 files changed, 75 insertions(+), 199 deletions(-) diff --git a/common/qlock.c b/common/qlock.c index fd0e98d..6c9ee16 100644 --- a/common/qlock.c +++ b/common/qlock.c @@ -568,43 +568,6 @@ return 0; #endif /* HIDDEN */ } -qbarrierh_t -qbarrier_alloc( void ) -{ -#ifdef HIDDEN - barrier_t *barrierp; - - /* sanity checks - */ - ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - - /* allocate a us barrier - */ - barrierp = new_barrier( qlock_usp ); - ASSERT( barrierp ); - - return ( qbarrierh_t )barrierp; -#else -return 0; -#endif /* HIDDEN */ -} - -void -qbarrier( qbarrierh_t qbarrierh, size_t thrdcnt ) -{ -#ifdef HIDDEN - barrier_t *barrierp = ( barrier_t * )qbarrierh; - - /* sanity checks - */ - ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - - barrier( barrierp, thrdcnt ); -#endif /* HIDDEN */ -} - /* internal ordinal map abstraction */ #ifdef HIDDEN diff --git a/common/qlock.h b/common/qlock.h index 54469ea..1880aff 100644 --- a/common/qlock.h +++ b/common/qlock.h @@ -102,15 +102,4 @@ extern size_t qsemPblocked( qsemh_t qsemh ); /* number of threads currently blocked on this semaphore */ -typedef void *qbarrierh_t; -#define QBARRIERH_NULL 0 - /* opaque handle - */ -extern qbarrierh_t qbarrier_alloc( void ); - /* allocates a rendezvous barrier - */ -extern void qbarrier( qbarrierh_t barrierh, size_t thrdcnt ); - /* causes thrdcnt threads to rendezvous - */ - #endif /* QLOCK_H */ diff --git a/dump/content.c b/dump/content.c index 54c97d1..64bfe54 100644 --- a/dump/content.c +++ b/dump/content.c @@ -64,9 +64,6 @@ #include "getdents.h" #include "arch_xlate.h" -#undef SYNCDIR -#define SYNCDIR - /* max "unsigned long long int" */ #define ULONGLONG_MAX 18446744073709551615LLU @@ -231,7 +228,6 @@ typedef struct extent_group_context extent_group_context_t; struct pds { enum { PDS_NULL, /* per-drive activity not begun */ PDS_INOMAP, /* dumping inomap */ - PDS_DIRRENDEZVOUS, /* waiting to dump dirs */ PDS_DIRDUMP, /* dumping dirs */ PDS_NONDIR, /* dumping nondirs */ PDS_INVSYNC, /* waiting for inventory */ @@ -263,9 +259,6 @@ static rv_t dump_dirs( ix_t strmix, xfs_bstat_t *bstatbufp, size_t bstatbuflen, void *inomap_contextp ); -#ifdef SYNCDIR -static rv_t dump_dirs_rendezvous( void ); -#endif /* SYNCDIR */ static rv_t dump_dir( ix_t strmix, jdm_fshandle_t *, intgen_t, @@ -485,12 +478,6 @@ static bool_t sc_dumpextattrpr = BOOL_TRUE; static bool_t sc_dumpasoffline = BOOL_FALSE; /* dump dual-residency HSM files as offline */ -#ifdef SYNCDIR -static size_t sc_thrdsdirdumpsynccnt = 0; -static size_t sc_thrdswaitingdirdumpsync1 = 0; -static size_t sc_thrdswaitingdirdumpsync2 = 0; -static qbarrierh_t sc_barrierh; -#endif /* SYNCDIR */ static bool_t sc_savequotas = BOOL_TRUE; /* save quota information in dump @@ -1466,14 +1453,13 @@ baseuuidbypass: var_skip( &fsid, inomap_skip ); /* fill in write header template content info. always produce - * an inomap and dir dump for each media file. + * an inomap for each media file. the dirdump flag will be set + * in content_stream_dump() for streams which dump the directories. */ ASSERT( sizeof( cwhdrtemplatep->ch_specific ) >= sizeof( *scwhdrtemplatep )); scwhdrtemplatep->cih_mediafiletype = CIH_MEDIAFILETYPE_DATA; scwhdrtemplatep->cih_level = ( int32_t )sc_level; - scwhdrtemplatep->cih_dumpattr = CIH_DUMPATTR_INOMAP - | - CIH_DUMPATTR_DIRDUMP; + scwhdrtemplatep->cih_dumpattr = CIH_DUMPATTR_INOMAP; if ( subtreecnt ) { scwhdrtemplatep->cih_dumpattr |= CIH_DUMPATTR_SUBTREE; } @@ -1714,22 +1700,6 @@ baseuuidbypass: } } -#ifdef SYNCDIR - /* allocate a barrier to synchronize directory dumping - */ - if ( drivecnt > 1 ) { - sc_barrierh = qbarrier_alloc( ); - } - - /* initialize the number of players in the synchronized dir dump. - * they drop out when last media file complete. MUST be modified - * under lock( ). - */ - sc_thrdsdirdumpsynccnt = drivecnt; - -#endif /* SYNCDIR */ - - return BOOL_TRUE; } @@ -1877,10 +1847,6 @@ content_statline( char **linespp[ ] ) strcat( statline[ statlinecnt ], "dumping inomap" ); break; - case PDS_DIRRENDEZVOUS: - strcat( statline[ statlinecnt ], - "waiting for synchronized directory dump" ); - break; case PDS_DIRDUMP: sprintf( &statline[ statlinecnt ] [ strlen( statline[ statlinecnt ] ) ], @@ -2157,6 +2123,11 @@ content_stream_dump( ix_t strmix ) scwhdrp->cih_endpt.sp_flags = STARTPT_FLAGS_END; } + // the first stream dumps the directories + if ( strmix == 0 ) { + scwhdrp->cih_dumpattr |= CIH_DUMPATTR_DIRDUMP; + } + /* fill in inomap fields of write hdr */ inomap_writehdr( scwhdrp ); @@ -2322,39 +2293,41 @@ content_stream_dump( ix_t strmix ) return mlog_exit(EXIT_FAULT, rv); } - /* now dump the directories. use the bigstat iterator - * capability to call my dump_dir function - * for each directory in the bitmap. + /* now dump the directories, if this is a stream that dumps + * directories. use the bigstat iterator capability to call + * my dump_dir function for each directory in the bitmap. */ - sc_stat_pds[ strmix ].pds_dirdone = 0; - rv = dump_dirs( strmix, - bstatbufp, - bstatbuflen, - inomap_contextp ); - if ( rv == RV_INTR ) { - stop_requested = BOOL_TRUE; - goto decision_more; - } - if ( rv == RV_EOM ) { - hit_eom = BOOL_TRUE; - goto decision_more; - } - if ( rv == RV_DRIVE ) { - free( ( void * )bstatbufp ); - return mlog_exit(EXIT_NORMAL, rv); - } - if ( rv == RV_ERROR ) { - free( ( void * )bstatbufp ); - return mlog_exit(EXIT_ERROR, rv); - } - if ( rv == RV_CORE ) { - free( ( void * )bstatbufp ); - return mlog_exit(EXIT_FAULT, rv); - } - ASSERT( rv == RV_OK ); - if ( rv != RV_OK ) { - free( ( void * )bstatbufp ); - return mlog_exit(EXIT_FAULT, rv); + if ( scwhdrp->cih_dumpattr & CIH_DUMPATTR_DIRDUMP ) { + sc_stat_pds[ strmix ].pds_dirdone = 0; + rv = dump_dirs( strmix, + bstatbufp, + bstatbuflen, + inomap_contextp ); + if ( rv == RV_INTR ) { + stop_requested = BOOL_TRUE; + goto decision_more; + } + if ( rv == RV_EOM ) { + hit_eom = BOOL_TRUE; + goto decision_more; + } + if ( rv == RV_DRIVE ) { + free( ( void * )bstatbufp ); + return mlog_exit(EXIT_NORMAL, rv); + } + if ( rv == RV_ERROR ) { + free( ( void * )bstatbufp ); + return mlog_exit(EXIT_ERROR, rv); + } + if ( rv == RV_CORE ) { + free( ( void * )bstatbufp ); + return mlog_exit(EXIT_FAULT, rv); + } + ASSERT( rv == RV_OK ); + if ( rv != RV_OK ) { + free( ( void * )bstatbufp ); + return mlog_exit(EXIT_FAULT, rv); + } } /* finally, dump the non-directory files beginning with this @@ -2527,20 +2500,6 @@ decision_more: */ done = all_nondirs_committed; -#ifdef SYNCDIR - /* drop out of the synchronous dump game if done - */ - if ( done ) { - /* REFERENCED */ - size_t tmpthrdsdirdumpsynccnt; - lock( ); - tmpthrdsdirdumpsynccnt = sc_thrdsdirdumpsynccnt; - sc_thrdsdirdumpsynccnt--; - unlock( ); - ASSERT( tmpthrdsdirdumpsynccnt > 0 ); - } -#endif /* SYNCDIR */ - /* tell the inventory about the media file */ if ( inv_stmt != INV_TOKEN_NULL ) { @@ -2833,22 +2792,6 @@ dump_dirs( ix_t strmix, __s32 buflenout; intgen_t rval; -#ifdef SYNCDIR - /* have all threads rendezvous - */ - if ( sc_thrdsdirdumpsynccnt > 1 && stream_cnt( ) > 1 ) { - rv_t rv; - mlog( bulkstatcallcnt == 0 ? MLOG_VERBOSE : MLOG_NITTY, - _("waiting for synchronized directory dump\n") ); - sc_stat_pds[ strmix ].pds_phase = PDS_DIRRENDEZVOUS; - rv = dump_dirs_rendezvous( ); - if ( rv == RV_INTR ) { - return RV_INTR; - } - ASSERT( rv == RV_OK ); - } -#endif /* SYNCDIR */ - if ( bulkstatcallcnt == 0 ) { mlog( MLOG_VERBOSE, _( "dumping directories\n") ); @@ -2948,58 +2891,6 @@ dump_dirs( ix_t strmix, /* NOTREACHED */ } -#ifdef SYNCDIR -static rv_t -dump_dirs_rendezvous( void ) -{ - static size_t localsync1; - static size_t localsync2; - - sc_thrdswaitingdirdumpsync2 = 0; - lock( ); - sc_thrdswaitingdirdumpsync1++; - localsync1 = sc_thrdswaitingdirdumpsync1; - localsync2 = sc_thrdswaitingdirdumpsync2; - unlock( ); - while ( localsync2 == 0 - && - localsync1 < min( stream_cnt( ), sc_thrdsdirdumpsynccnt )) { - sleep( 1 ); - if ( cldmgr_stop_requested( )) { - lock( ); - sc_thrdswaitingdirdumpsync1--; - unlock( ); - return RV_INTR; - } - lock( ); - localsync1 = sc_thrdswaitingdirdumpsync1; - localsync2 = sc_thrdswaitingdirdumpsync2; - unlock( ); - } - lock( ); - sc_thrdswaitingdirdumpsync1--; - sc_thrdswaitingdirdumpsync2++; - localsync2 = sc_thrdswaitingdirdumpsync2; - unlock( ); - while ( localsync2 < min( stream_cnt( ), sc_thrdsdirdumpsynccnt )) { - sleep( 1 ); - if ( cldmgr_stop_requested( )) { - return RV_INTR; - } - lock( ); - localsync2 = sc_thrdswaitingdirdumpsync2; - unlock( ); - } - if ( cldmgr_stop_requested( )) { - return RV_INTR; - } - - qbarrier( sc_barrierh, min( stream_cnt( ), sc_thrdsdirdumpsynccnt )); - - return RV_OK; -} -#endif /* SYNCDIR */ - static rv_t dump_dir( ix_t strmix, jdm_fshandle_t *fshandlep, diff --git a/restore/content.c b/restore/content.c index 34fc4a0..2228a7f 100644 --- a/restore/content.c +++ b/restore/content.c @@ -625,6 +625,9 @@ struct tran { intgen_t t_persfd; /* file descriptor of the persistent state file */ + size64_t t_dirdumps; + /* bitset of streams which contain a directory dump + */ sync_t t_sync1; /* to single-thread attempt to validate command line * selection of dump with online inventory @@ -1184,6 +1187,12 @@ content_init( intgen_t argc, char *argv[ ], size64_t vmsz ) return BOOL_FALSE; } + /* assume all streams contain a directory dump. streams will remove + * themselves from this bitset if they do not contain a directory dump. + */ + ASSERT( drivecnt <= sizeof(tranp->t_dirdumps) * NBBY ); + tranp->t_dirdumps = ( 1ULL << drivecnt ) - 1; + /* the user may specify stdin as the restore source stream, * by a single dash ('-') with no option letter. This must * appear between the last lettered argument and the destination @@ -2237,6 +2246,30 @@ content_stream_restore( ix_t thrdix ) unlock( ); continue; } + if ( !(scrhdrp->cih_dumpattr & CIH_DUMPATTR_DIRDUMP) ) { + /* if no streams have a directory dump, issue a + * message and exit. first set SYNC_BUSY to prevent + * other threads from coming through here and issuing + * the same message. + */ + tranp->t_dirdumps &= ~(1ULL << thrdix); + if ( !tranp->t_dirdumps ) { + tranp->t_sync3 = SYNC_BUSY; + } + unlock( ); + if ( !tranp->t_dirdumps ) { + mlog( MLOG_VERBOSE | MLOG_ERROR, _( + "no directory dump found\n") ); + Media_end( Mediap ); + return mlog_exit(EXIT_NORMAL, RV_ERROR); + } + sleep( 1 ); + if ( cldmgr_stop_requested( )) { + Media_end( Mediap ); + return mlog_exit(EXIT_NORMAL, RV_INTR); + } + continue; + } tranp->t_sync3 = SYNC_BUSY; unlock( ); if ( ! tranp->t_dirattrinitdonepr ) { -- 1.7.0.4 From wkendall@sgi.com Wed Nov 2 16:11:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2LBEhH200912 for ; Wed, 2 Nov 2011 16:11:14 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id A703EAC002; Wed, 2 Nov 2011 14:11:13 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 5850C7001EC0; Wed, 2 Nov 2011 16:11:13 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id 5047021E23D2; Wed, 2 Nov 2011 16:11:13 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH 7/8] xfsdump: path lookup cache must be thread specific Date: Wed, 2 Nov 2011 16:10:53 -0500 Message-Id: <1320268254-20583-8-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320268254-20583-1-git-send-email-wkendall@sgi.com> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The xfsrestore path lookup routine (maps an ino + generation number to a pathname) contains a cache for fast lookups of consecutive files in the same parent directory. This cache either needs to be protected by a lock or a cache is needed per thread. I took the latter approach since it doesn't add lock contention and it increases the cache hit rate (it's relatively unlikely that each stream is processing files in the same directory). Signed-off-by: Bill Kendall --- restore/tree.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/restore/tree.c b/restore/tree.c index 7bddddf..9e4e83c 100644 --- a/restore/tree.c +++ b/restore/tree.c @@ -3441,7 +3441,7 @@ Node2path( nh_t nh, char *path, char *errmsg ) static intgen_t Node2path_recurse( nh_t nh, char *buf, intgen_t bufsz, intgen_t level ) { - static path_cache_t cache = { NH_NULL, 0, "" }; + static __thread path_cache_t cache = { NH_NULL, 0, "" }; node_t *np; nh_t parh; xfs_ino_t ino; -- 1.7.0.4 From wkendall@sgi.com Wed Nov 2 16:11:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2LBCVu200885 for ; Wed, 2 Nov 2011 16:11:12 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 64624304113; Wed, 2 Nov 2011 14:11:12 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 3FBC87001EC2; Wed, 2 Nov 2011 16:11:12 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id 31C5B21E23D2; Wed, 2 Nov 2011 16:11:12 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH 6/8] xfsdump: process thread exit status Date: Wed, 2 Nov 2011 16:10:52 -0500 Message-Id: <1320268254-20583-7-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320268254-20583-1-git-send-email-wkendall@sgi.com> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When IRIX sprocs were in use, the main thread was notified of a thread exit just as if a child process exited -- it received SIGCHLD. The main thread would grab the pid and exit status, then call cldmgr_died() to inform it that the child was gone so the slot in the child array could be freed up for reuse. This patch implements a similar mechanism for pthreads. The "c_busy" field in struct cld has been replaced with a "c_state" field that indicates whether the array slot is free (C_AVAIL), in use (C_ALIVE), or is waiting to be joined (C_EXITED). Additionally a "c_exit_code" field has been added to store the thread's exit value. Normally this is set when the thread entry function returns, but it is initialized to EXIT_INTERRUPT in case the thread is cancelled or calls pthread_exit() rather than returning (neither of which happens in the code today). When the child thread starts, it registers a pthread cleanup handler which takes care of marking the child as C_EXITED and notifies the main thread that a child is gone. Doing this in a cleanup handler ensures that it's done regardless of how the thread exits. The main thread's loop is based around sigsuspsend(), so the notification is done by sending SIGUSR1. The main thread will then call cldmgr_join() to join all exited threads and obtain their exit status. Additional changes: * cldmgr_findbypid() has been removed, it's no longer referenced. * stream_dead() no longer grabs the lock(), because it's called only from cldmgr_join() which already holds the lock(). Signed-off-by: Bill Kendall --- common/cldmgr.c | 88 +++++++++++++++++++++++++++++++++++------------------- common/cldmgr.h | 7 +++- common/main.c | 33 +++++--------------- common/stream.c | 3 +- common/stream.h | 1 + 5 files changed, 73 insertions(+), 59 deletions(-) diff --git a/common/cldmgr.c b/common/cldmgr.c index 4574834..be7de34 100644 --- a/common/cldmgr.c +++ b/common/cldmgr.c @@ -26,6 +26,7 @@ #include #include +#include "exit.h" #include "types.h" #include "lock.h" #include "qlock.h" @@ -36,8 +37,12 @@ extern size_t pgsz; #define CLD_MAX ( STREAM_SIMMAX * 2 ) + +typedef enum { C_AVAIL, C_ALIVE, C_EXITED } state_t; + struct cld { - bool_t c_busy; + state_t c_state; + intgen_t c_exit_code; pthread_t c_tid; ix_t c_streamix; int ( * c_entry )( void *arg1 ); @@ -50,8 +55,8 @@ static cld_t cld[ CLD_MAX ]; static bool_t cldmgr_stopflag; static cld_t *cldmgr_getcld( void ); -static cld_t * cldmgr_findbytid( pthread_t ); static void *cldmgr_entry( void * ); +static void cldmgr_cleanup( void * ); /* REFERENCED */ static pthread_t cldmgr_parenttid; @@ -87,6 +92,7 @@ cldmgr_create( int ( * entry )( void *arg1 ), return BOOL_FALSE; } + cldp->c_exit_code = EXIT_INTERRUPT; cldp->c_streamix = streamix; cldp->c_entry = entry; cldp->c_arg1 = arg1; @@ -117,18 +123,37 @@ cldmgr_stop( void ) cldmgr_stopflag = BOOL_TRUE; } -void -cldmgr_died( pthread_t tid ) +intgen_t +cldmgr_join( void ) { - cld_t *cldp = cldmgr_findbytid( tid ); + cld_t *p = cld; + cld_t *ep = cld + sizeof( cld ) / sizeof( cld[ 0 ] ); + intgen_t xc = EXIT_NORMAL; - if ( ! cldp ) { - return; - } - cldp->c_busy = BOOL_FALSE; - if ( ( intgen_t )( cldp->c_streamix ) >= 0 ) { - stream_dead( tid ); + lock(); + for ( ; p < ep ; p++ ) { + if ( p->c_state == C_EXITED ) { + if ( ( intgen_t )( p->c_streamix ) >= 0 ) { + stream_dead( p->c_tid ); + } + pthread_join( p->c_tid, NULL ); + if ( p->c_exit_code != EXIT_NORMAL && xc != EXIT_FAULT ) + xc = p->c_exit_code; + if ( p->c_exit_code != EXIT_NORMAL ) { + mlog( MLOG_DEBUG | MLOG_PROC | MLOG_NOLOCK, + "child (thread %lu) requested stop: " + "exit code %d (%s)\n", + p->c_tid, p->c_exit_code, + exit_codestring( p->c_exit_code )); + } + + // reinit this child for reuse + memset( ( void * )p, 0, sizeof( cld_t )); + } } + unlock(); + + return xc; } bool_t @@ -147,7 +172,7 @@ cldmgr_remainingcnt( void ) cnt = 0; lock( ); for ( ; p < ep ; p++ ) { - if ( p->c_busy ) { + if ( p->c_state == C_ALIVE ) { cnt++; } } @@ -164,7 +189,7 @@ cldmgr_otherstreamsremain( ix_t streamix ) lock( ); for ( ; p < ep ; p++ ) { - if ( p->c_busy && p->c_streamix != streamix ) { + if ( p->c_state == C_ALIVE && p->c_streamix != streamix ) { unlock( ); return BOOL_TRUE; } @@ -182,8 +207,8 @@ cldmgr_getcld( void ) lock(); for ( ; p < ep ; p++ ) { - if ( ! p->c_busy ) { - p->c_busy = BOOL_TRUE; + if ( p->c_state == C_AVAIL ) { + p->c_state = C_ALIVE; break; } } @@ -192,27 +217,14 @@ cldmgr_getcld( void ) return ( p < ep ) ? p : 0; } -static cld_t * -cldmgr_findbytid( pthread_t tid ) -{ - cld_t *p = cld; - cld_t *ep = cld + sizeof( cld ) / sizeof( cld[ 0 ] ); - - for ( ; p < ep ; p++ ) { - if ( p->c_busy && pthread_equal( p->c_tid, tid )) { - break; - } - } - - return ( p < ep ) ? p : 0; -} - static void * cldmgr_entry( void *arg1 ) { cld_t *cldp = ( cld_t * )arg1; pthread_t tid = pthread_self( ); + pthread_cleanup_push( cldmgr_cleanup, arg1 ); + if ( ( intgen_t )( cldp->c_streamix ) >= 0 ) { stream_register( tid, ( intgen_t )cldp->c_streamix ); } @@ -220,7 +232,21 @@ cldmgr_entry( void *arg1 ) "thread %lu created for stream %d\n", tid, cldp->c_streamix ); + cldp->c_exit_code = ( * cldp->c_entry )( cldp->c_arg1 ); + + pthread_cleanup_pop( 1 ); - ( * cldp->c_entry )( cldp->c_arg1 ); return NULL; } + +static void +cldmgr_cleanup( void *arg1 ) +{ + cld_t *cldp = ( cld_t * )arg1; + + lock(); + cldp->c_state = C_EXITED; + // signal the main thread to look for exited threads + kill( getpid( ), SIGUSR1 ); + unlock(); +} diff --git a/common/cldmgr.h b/common/cldmgr.h index e393b82..1df0c0c 100644 --- a/common/cldmgr.h +++ b/common/cldmgr.h @@ -39,9 +39,12 @@ extern bool_t cldmgr_create( int ( * entry )( void *arg1 ), */ extern void cldmgr_stop( void ); -/* cldmgr_died - tells the child manager that the child died +/* cldmgr_join - join child threads that have exited. + * returns EXIT_NORMAL if all exited normally (or no threads have exited), + * EXIT_FAULT if any threads requested a core dump, or another EXIT_* + * value if any threads exited abnormally. */ -extern void cldmgr_died( pthread_t tid ); +extern intgen_t cldmgr_join( void ); /* cldmgr_stop_requested - returns TRUE if the child should gracefully * terminate. diff --git a/common/main.c b/common/main.c index d4dbe28..38b3889 100644 --- a/common/main.c +++ b/common/main.c @@ -137,10 +137,6 @@ static bool_t sighup_received; static bool_t sigterm_received; static bool_t sigquit_received; static bool_t sigint_received; -static size_t prbcld_cnt; -static pid_t prbcld_pid; -static intgen_t prbcld_xc; -static intgen_t prbcld_signo; /* REFERENCED */ static intgen_t sigstray_received; static bool_t progrpt_enabledpr; @@ -168,6 +164,8 @@ main( int argc, char *argv[] ) intgen_t exitcode; rlim64_t tmpstacksz; struct sigaction sa; + intgen_t prbcld_xc = EXIT_NORMAL; + intgen_t xc; bool_t ok; /* REFERENCED */ int rval; @@ -563,7 +561,6 @@ main( int argc, char *argv[] ) sigint_received = BOOL_FALSE; sigquit_received = BOOL_FALSE; sigstray_received = BOOL_FALSE; - prbcld_cnt = 0; alarm( 0 ); @@ -573,6 +570,7 @@ main( int argc, char *argv[] ) sigaddset( &blocked_set, SIGTERM ); sigaddset( &blocked_set, SIGQUIT ); sigaddset( &blocked_set, SIGALRM ); + sigaddset( &blocked_set, SIGUSR1 ); pthread_sigmask( SIG_SETMASK, &blocked_set, NULL ); sa.sa_handler = sighandler; @@ -581,6 +579,7 @@ main( int argc, char *argv[] ) sigaction( SIGTERM, &sa, NULL ); sigaction( SIGQUIT, &sa, NULL ); sigaction( SIGALRM, &sa, NULL ); + sigaction( SIGUSR1, &sa, NULL ); } /* do content initialization. @@ -710,31 +709,16 @@ main( int argc, char *argv[] ) * stop. furthermore, note that core should be dumped if * the child explicitly exited with EXIT_FAULT. */ - if ( prbcld_cnt ) { - if ( prbcld_xc == EXIT_FAULT || prbcld_signo != 0 ) { + xc = cldmgr_join( ); + if ( xc ) { + if ( xc == EXIT_FAULT ) { coredump_requested = BOOL_TRUE; stop_timeout = ABORT_TIMEOUT; } else { stop_timeout = STOP_TIMEOUT; } + prbcld_xc = xc; stop_requested = BOOL_TRUE; - if ( prbcld_xc != EXIT_NORMAL ) { - mlog( MLOG_DEBUG | MLOG_PROC, - "child (pid %d) requested stop: " - "exit code %d (%s)\n", - prbcld_pid, - prbcld_xc, - exit_codestring( prbcld_xc )); - } else if ( prbcld_signo ) { - ASSERT( prbcld_signo ); - mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_PROC, - _("child (pid %d) faulted: " - "signal number %d (%s)\n"), - prbcld_pid, - prbcld_signo, - sig_numstring( prbcld_signo )); - } - prbcld_cnt = 0; } /* all children died normally. break out. @@ -1528,6 +1512,7 @@ sighandler( int signo ) sigquit_received = BOOL_TRUE; break; case SIGALRM: + case SIGUSR1: break; default: sigstray_received = signo; diff --git a/common/stream.c b/common/stream.c index 48e25ee..6704661 100644 --- a/common/stream.c +++ b/common/stream.c @@ -86,19 +86,18 @@ stream_register( pthread_t tid, intgen_t streamix ) p->s_exit_hint = RV_NONE; } +/* NOTE: lock() must be held when calling stream_dead() */ void stream_dead( pthread_t tid ) { spm_t *p = spm; spm_t *ep = spm + N(spm); - lock(); for ( ; p < ep ; p++ ) if ( pthread_equal( p->s_tid, tid ) ) { p->s_state = S_ZOMBIE; break; } - unlock(); ASSERT( p < ep ); } diff --git a/common/stream.h b/common/stream.h index 292792e..4b3799f 100644 --- a/common/stream.h +++ b/common/stream.h @@ -43,6 +43,7 @@ typedef enum { S_FREE, S_RUNNING, S_ZOMBIE } stream_state_t; extern void stream_init( void ); extern void stream_register( pthread_t tid, intgen_t streamix ); +/* NOTE: lock() must be held when calling stream_dead */ extern void stream_dead( pthread_t tid ); extern void stream_free( pthread_t tid ); extern int stream_find_all( stream_state_t states[], -- 1.7.0.4 From wkendall@sgi.com Wed Nov 2 16:11:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2LBC7b200884 for ; Wed, 2 Nov 2011 16:11:12 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id 5FB3F8F80D1; Wed, 2 Nov 2011 14:11:09 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 4A0A97001EC1; Wed, 2 Nov 2011 16:11:09 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id 4001421E23D2; Wed, 2 Nov 2011 16:11:09 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH 3/8] xfsdump: implement lock abstraction with pthreads Date: Wed, 2 Nov 2011 16:10:49 -0500 Message-Id: <1320268254-20583-4-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320268254-20583-1-git-send-email-wkendall@sgi.com> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This patch implements xfsdump's locking abstraction (qlock_t and qsem_t) using pthread locking primitives. The obsolete IRIX locking code has been removed. A few debug-level log calls had to be changed to use the "no lock" flag to prevent locks from being acquired out of order. This is used in various debug messages throughout xfsdump. Signed-off-by: Bill Kendall --- common/main.c | 2 +- common/qlock.c | 407 +++++++++++++++++++---------------------------------- common/qlock.h | 10 +- restore/content.c | 17 ++- 4 files changed, 158 insertions(+), 278 deletions(-) diff --git a/common/main.c b/common/main.c index 08be16e..be8a921 100644 --- a/common/main.c +++ b/common/main.c @@ -359,7 +359,7 @@ main( int argc, char *argv[] ) /* initialize the spinlock allocator */ - ok = qlock_init( miniroot ); + ok = qlock_init( ); if ( ! ok ) { return mlog_exit(EXIT_ERROR, RV_INIT); } diff --git a/common/qlock.c b/common/qlock.c index 6c9ee16..5b87b3b 100644 --- a/common/qlock.c +++ b/common/qlock.c @@ -19,6 +19,8 @@ #include #include +#include + #include "types.h" #include "qlock.h" #include "mlog.h" @@ -27,23 +29,24 @@ struct qlock { ix_t ql_ord; /* ordinal position of this lock */ - pid_t ql_owner; - /* who owns this lock - */ -#ifdef HIDDEN - ulock_t ql_uslockh; - /* us lock handle - */ -#endif /* HIDDEN */ + pthread_mutex_t ql_mutex; }; typedef struct qlock qlock_t; /* internal qlock */ -#define QLOCK_SPINS 0x1000 - /* how many times to spin on lock before sleeping for it - */ +struct qsem { + ix_t qs_count; + /* current count of this semaphore + */ + ix_t qs_waiters; + /* number of threads waiting on semaphore + */ + pthread_mutex_t qs_mutex; + pthread_cond_t qs_cond; +}; +typedef struct qsem qsem_t; #define QLOCK_THRDCNTMAX 256 /* arbitrary limit on number of threads supported @@ -67,15 +70,13 @@ static ordmap_t qlock_ordalloced; */ struct thrddesc { - pid_t td_pid; + pthread_t td_tid; ordmap_t td_ordmap; }; typedef struct thrddesc thrddesc_t; -#ifdef HIDDEN static thrddesc_t qlock_thrddesc[ QLOCK_THRDCNTMAX ]; /* holds the ordmap for each thread */ -#endif #define QLOCK_ORDMAP_SET( ordmap, ord ) ( ordmap |= 1U << ord ) /* sets the ordinal bit in an ordmap @@ -93,21 +94,6 @@ static thrddesc_t qlock_thrddesc[ QLOCK_THRDCNTMAX ]; /* checks if any bits less than ord are set in the ordmap */ -#ifdef HIDDEN -static usptr_t *qlock_usp; -#else -static void *qlock_usp; -#endif /* HIDDEN */ - - /* pointer to shared arena from which locks are allocated - */ - -#ifdef HIDDEN -static char *qlock_arenaroot = "xfsrestoreqlockarena"; - /* shared arena file name root - */ -#endif - /* REFERENCED */ static bool_t qlock_inited = BOOL_FALSE; /* to sanity check initialization @@ -115,22 +101,13 @@ static bool_t qlock_inited = BOOL_FALSE; /* forward declarations */ -#ifdef HIDDEN -static void qlock_ordmap_add( pid_t pid ); -static ordmap_t *qlock_ordmapp_get( pid_t pid ); -static ix_t qlock_thrdix_get( pid_t pid ); -#endif +static void qlock_ordmap_add( pthread_t tid ); +static ordmap_t *qlock_ordmapp_get( pthread_t tid ); +static ix_t qlock_thrdix_get( pthread_t tid ); bool_t -qlock_init( bool_t miniroot ) +qlock_init( void ) { -#ifdef HIDDEN - char arenaname[ 100 ]; - /* REFERENCED */ - intgen_t nwritten; - intgen_t rval; -#endif - /* sanity checks */ ASSERT( ! qlock_inited ); @@ -143,44 +120,6 @@ qlock_init( bool_t miniroot ) */ qlock_ordalloced = 0; - /* if miniroot, fake it - */ - if ( miniroot ) { - qlock_inited = BOOL_TRUE; - qlock_usp = 0; - return BOOL_TRUE; - } -#ifdef HIDDEN - - /* generate the arena name - */ - nwritten = sprintf( arenaname, - "/tmp/%s.%d", - qlock_arenaroot, - get_pid() ); - ASSERT( nwritten > 0 ); - ASSERT( ( size_t )nwritten < sizeof( arenaname )); - - /* configure shared arenas to automatically unlink on last close - */ - rval = usconfig( CONF_ARENATYPE, ( u_intgen_t )US_SHAREDONLY ); - if ( rval ) { - mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_NOLOCK, - _("unable to configure shared arena for auto unlink: %s\n"), - strerror( errno )); - return BOOL_FALSE; - } - - /* allocate a shared arena for the locks - */ - qlock_usp = usinit( arenaname ); - if ( ! qlock_usp ) { - mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_NOLOCK, - _("unable to allocate shared arena for thread locks: %s\n"), - strerror( errno )); - return BOOL_FALSE; - } - /* now say we are initialized */ qlock_inited = BOOL_TRUE; @@ -191,7 +130,6 @@ qlock_init( bool_t miniroot ) qlock_inited = BOOL_FALSE; return BOOL_FALSE; } -#endif /* HIDDEN */ return BOOL_TRUE; } @@ -199,28 +137,13 @@ qlock_init( bool_t miniroot ) bool_t qlock_thrdinit( void ) { -#ifdef HIDDEN - intgen_t rval; - /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - - /* add thread to shared arena - */ - rval = usadd( qlock_usp ); - if ( rval ) { - mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_NOLOCK, - _("unable to add thread to shared arena: %s\n"), - strerror( errno )); - return BOOL_FALSE; - } /* add thread to ordmap list */ - qlock_ordmap_add( get_pid() ); -#endif /* HIDDEN */ + qlock_ordmap_add( pthread_self() ); return BOOL_TRUE; } @@ -244,14 +167,9 @@ qlock_alloc( ix_t ord ) qlockp = ( qlock_t * )calloc( 1, sizeof( qlock_t )); ASSERT( qlockp ); -#ifdef HIDDEN - /* allocate a us lock: bypass if miniroot + /* initialize the mutex */ - if ( qlock_usp ) { - qlockp->ql_uslockh = usnewlock( qlock_usp ); - ASSERT( qlockp->ql_uslockh ); - } -#endif /* HIDDEN */ + pthread_mutex_init( &qlockp->ql_mutex, NULL ); /* assign the ordinal position */ @@ -263,44 +181,34 @@ qlock_alloc( ix_t ord ) void qlock_lock( qlockh_t qlockh ) { -#ifdef HIDDEN qlock_t *qlockp = ( qlock_t * )qlockh; - pid_t pid; + pthread_t tid; ix_t thrdix; ordmap_t *ordmapp; /* REFERENCED */ - bool_t lockacquired; -#endif + intgen_t rval; /* sanity checks */ ASSERT( qlock_inited ); - /* bypass if miniroot - */ - if ( ! qlock_usp ) { - return; - } - -#ifdef HIDDEN - - /* get the caller's pid and thread index + /* get the caller's tid and thread index */ - pid = get_pid(); + tid = pthread_self(); - thrdix = qlock_thrdix_get( pid ); + thrdix = qlock_thrdix_get( tid ); /* get the ordmap for this thread */ - ordmapp = qlock_ordmapp_get( pid ); + ordmapp = qlock_ordmapp_get( tid ); - /* assert that this lock not already held + /* assert that this lock not already held by this thread */ if ( QLOCK_ORDMAP_GET( *ordmapp, qlockp->ql_ord )) { mlog( MLOG_NORMAL | MLOG_WARNING | MLOG_NOLOCK, - _("lock already held: thrd %d pid %d ord %d map %x\n"), + _("lock already held: thrd %d tid %lu ord %d map %x\n"), thrdix, - pid, + tid, qlockp->ql_ord, *ordmapp ); } @@ -310,278 +218,253 @@ qlock_lock( qlockh_t qlockh ) */ if ( QLOCK_ORDMAP_CHK( *ordmapp, qlockp->ql_ord )) { mlog( MLOG_NORMAL | MLOG_WARNING | MLOG_NOLOCK, - _("lock ordinal violation: thrd %d pid %d ord %d map %x\n"), + _("lock ordinal violation: thrd %d tid %lu ord %d map %x\n"), thrdix, - pid, + tid, qlockp->ql_ord, *ordmapp ); } ASSERT( ! QLOCK_ORDMAP_CHK( *ordmapp, qlockp->ql_ord )); - /* acquire the us lock + /* acquire the lock */ - lockacquired = uswsetlock( qlockp->ql_uslockh, QLOCK_SPINS ); - ASSERT( lockacquired ); - - /* verify lock is not already held - */ - ASSERT( ! qlockp->ql_owner ); + rval = pthread_mutex_lock( &qlockp->ql_mutex ); + ASSERT( !rval ); /* add ordinal to this threads ordmap */ QLOCK_ORDMAP_SET( *ordmapp, qlockp->ql_ord ); - - /* indicate the lock's owner - */ - qlockp->ql_owner = pid; -#endif /* HIDDEN */ } void qlock_unlock( qlockh_t qlockh ) { -#ifdef HIDDEN qlock_t *qlockp = ( qlock_t * )qlockh; - pid_t pid; ordmap_t *ordmapp; /* REFERENCED */ intgen_t rval; -#endif /* sanity checks */ ASSERT( qlock_inited ); - /* bypass if miniroot - */ - if ( ! qlock_usp ) { - return; - } - -#ifdef HIDDEN - /* get the caller's pid - */ - pid = get_pid(); - /* get the ordmap for this thread */ - ordmapp = qlock_ordmapp_get( pid ); + ordmapp = qlock_ordmapp_get( pthread_self() ); /* verify lock is held by this thread */ ASSERT( QLOCK_ORDMAP_GET( *ordmapp, qlockp->ql_ord )); - ASSERT( qlockp->ql_owner == pid ); - - /* clear lock owner - */ - qlockp->ql_owner = 0; /* clear lock's ord from thread's ord map */ QLOCK_ORDMAP_CLR( *ordmapp, qlockp->ql_ord ); - /* release the us lock + /* release the lock */ - rval = usunsetlock( qlockp->ql_uslockh ); + rval = pthread_mutex_unlock( &qlockp->ql_mutex ); ASSERT( ! rval ); -#endif /* HIDDEN */ } qsemh_t qsem_alloc( ix_t cnt ) { -#ifdef HIDDEN - usema_t *usemap; + qsem_t *qsemp; /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - /* allocate a us semaphore + /* allocate a semaphore */ - usemap = usnewsema( qlock_usp, ( intgen_t )cnt ); - ASSERT( usemap ); + qsemp = ( qsem_t * )calloc( 1, sizeof( qsem_t )); + ASSERT( qsemp ); - return ( qsemh_t )usemap; -#else - return 0; -#endif /* HIDDEN */ + /* initialize the mutex and condition + */ + pthread_mutex_init(&qsemp->qs_mutex, NULL); + pthread_cond_init(&qsemp->qs_cond, NULL); + + /* assign the initial count + */ + qsemp->qs_count = cnt; + + return ( qsemh_t )qsemp; } void qsem_free( qsemh_t qsemh ) { -#ifdef HIDDEN - usema_t *usemap = ( usema_t * )qsemh; + qsem_t *qsemp = ( qsem_t * )qsemh; /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - /* free the us semaphore + /* destroy the mutex and condition + */ + pthread_mutex_destroy( &qsemp->qs_mutex ); + pthread_cond_destroy( &qsemp->qs_cond ); + + /* free the semaphore */ - usfreesema( usemap, qlock_usp ); -#endif /* HIDDEN */ + free( qsemp ); } void qsemP( qsemh_t qsemh ) { -#ifdef HIDDEN - usema_t *usemap = ( usema_t * )qsemh; + qsem_t *qsemp = ( qsem_t * )qsemh; intgen_t rval; /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); + + /* acquire the lock + */ + rval = pthread_mutex_lock( &qsemp->qs_mutex ); + ASSERT( !rval ); /* "P" the semaphore */ - rval = uspsema( usemap ); - if ( rval != 1 ) { - mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_NOLOCK, - _("unable to \"P\" semaphore: " - "rval == %d, errno == %d (%s)\n"), - rval, - errno, - strerror( errno )); + qsemp->qs_waiters++; + while ( qsemp->qs_count == 0 ) { + pthread_cond_wait( &qsemp->qs_cond, &qsemp->qs_mutex ); } - ASSERT( rval == 1 ); -#endif /* HIDDEN */ + qsemp->qs_waiters--; + qsemp->qs_count--; + + /* release the lock + */ + rval = pthread_mutex_unlock( &qsemp->qs_mutex ); + ASSERT( !rval ); } void qsemV( qsemh_t qsemh ) { -#ifdef HIDDEN - usema_t *usemap = ( usema_t * )qsemh; + qsem_t *qsemp = ( qsem_t * )qsemh; intgen_t rval; /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); + + /* acquire the lock + */ + rval = pthread_mutex_lock( &qsemp->qs_mutex ); + ASSERT( !rval ); /* "V" the semaphore */ - rval = usvsema( usemap ); - if ( rval != 0 ) { - mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_NOLOCK, - _("unable to \"V\" semaphore: " - "rval == %d, errno == %d (%s)\n"), - rval, - errno, - strerror( errno )); - } - ASSERT( rval == 0 ); -#endif /* HIDDEN */ + qsemp->qs_count++; + if ( qsemp->qs_waiters ) + pthread_cond_signal( &qsemp->qs_cond ); + + /* release the lock + */ + rval = pthread_mutex_unlock( &qsemp->qs_mutex ); + ASSERT( !rval ); } bool_t qsemPwouldblock( qsemh_t qsemh ) { -#ifdef HIDDEN - usema_t *usemap = ( usema_t * )qsemh; + qsem_t *qsemp = ( qsem_t * )qsemh; + ix_t count; intgen_t rval; - + /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - /* check the semaphore + /* acquire the lock */ - rval = ustestsema( usemap ); + rval = pthread_mutex_lock( &qsemp->qs_mutex ); + ASSERT( !rval ); - /* if equal to zero, no tokens left. if less than zero, other thread(s) - * currently waiting. + /* check the count */ - if ( rval <= 0 ) { - return BOOL_TRUE; - } else { - return BOOL_FALSE; - } -#else -return BOOL_FALSE; -#endif /* HIDDEN */ + count = qsemp->qs_count; + + /* release the lock + */ + rval = pthread_mutex_unlock( &qsemp->qs_mutex ); + ASSERT( !rval ); + + return count == 0 ? BOOL_TRUE : BOOL_FALSE; } size_t qsemPavail( qsemh_t qsemh ) { -#ifdef HIDDEN - usema_t *usemap = ( usema_t * )qsemh; + qsem_t *qsemp = ( qsem_t * )qsemh; + ix_t count; intgen_t rval; - + /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - /* check the semaphore + /* acquire the lock */ - rval = ustestsema( usemap ); + rval = pthread_mutex_lock( &qsemp->qs_mutex ); + ASSERT( !rval ); - /* if greater or equal to zero, no one is blocked and that is the number - * of resources available. if less than zero, absolute value is the - * number of blocked threads. + /* check the count */ - if ( rval < 0 ) { - return 0; - } else { - return ( size_t )rval; - } -#else -return 0; -#endif /* HIDDEN */ + count = qsemp->qs_count; + + /* release the lock + */ + rval = pthread_mutex_unlock( &qsemp->qs_mutex ); + ASSERT( !rval ); + + return count; } size_t qsemPblocked( qsemh_t qsemh ) { -#ifdef HIDDEN - usema_t *usemap = ( usema_t * )qsemh; + qsem_t *qsemp = ( qsem_t * )qsemh; + ix_t waiters; intgen_t rval; - + /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - /* check the semaphore + /* acquire the lock */ - rval = ustestsema( usemap ); + rval = pthread_mutex_lock( &qsemp->qs_mutex ); + ASSERT( !rval ); - /* if greater or equal to zero, no one is blocked. if less than zero, - * absolute value is the number of blocked threads. + /* check the waiters */ - if ( rval < 0 ) { - return ( size_t )( 0 - rval ); - } else { - return 0; - } -#else -return 0; -#endif /* HIDDEN */ + waiters = qsemp->qs_waiters; + + /* release the lock + */ + rval = pthread_mutex_unlock( &qsemp->qs_mutex ); + ASSERT( !rval ); + + return waiters; } /* internal ordinal map abstraction */ -#ifdef HIDDEN static void -qlock_ordmap_add( pid_t pid ) +qlock_ordmap_add( pthread_t tid ) { ASSERT( qlock_thrdcnt < QLOCK_THRDCNTMAX ); - qlock_thrddesc[ qlock_thrdcnt ].td_pid = pid; + qlock_thrddesc[ qlock_thrdcnt ].td_tid = tid; qlock_thrddesc[ qlock_thrdcnt ].td_ordmap = 0; qlock_thrdcnt++; } static thrddesc_t * -qlock_thrddesc_get( pid_t pid ) +qlock_thrddesc_get( pthread_t tid ) { thrddesc_t *p; thrddesc_t *endp; @@ -592,29 +475,27 @@ qlock_thrddesc_get( pid_t pid ) p < endp ; p++ ) { - if ( p->td_pid == pid ) { + if ( pthread_equal( p->td_tid, tid ) ) { return p; } } - ASSERT( 0 ); return 0; } static ordmap_t * -qlock_ordmapp_get( pid_t pid ) +qlock_ordmapp_get( pthread_t tid ) { thrddesc_t *p; - p = qlock_thrddesc_get( pid ); + p = qlock_thrddesc_get( tid ); return &p->td_ordmap; } static ix_t -qlock_thrdix_get( pid_t pid ) +qlock_thrdix_get( pthread_t tid ) { thrddesc_t *p; - p = qlock_thrddesc_get( pid ); + p = qlock_thrddesc_get( tid ); ASSERT( p >= &qlock_thrddesc[ 0 ] ); return ( ix_t )( p - &qlock_thrddesc[ 0 ] ); } -#endif diff --git a/common/qlock.h b/common/qlock.h index 1880aff..5ac51bd 100644 --- a/common/qlock.h +++ b/common/qlock.h @@ -21,19 +21,13 @@ /* qlock - quick locks abstraction * * threads may allocate quick locks using qlock_alloc, and free them with - * qlock_free. the abstraction is initialized with qlock_init. the underlying - * mechanism is the IRIX us lock primitive. in order to use this, a temporary - * shared arena is created in /tmp. this will be automatically unlinked - * when the last thread exits. + * qlock_free. the abstraction is initialized with qlock_init. * * deadlock detection is accomplished by giving an ordinal number to each * lock allocated, and record all locks held by each thread. locks may not * be acquired out of order. that is, subsequently acquired locks must have * a lower ordinal than all locks currently held. for convenience, the ordinals * of all locks to be allocated will be defined in this file. - * - * ADDITION: added counting semaphores. simpler to do here since same - * shared arena can be used. */ #define QLOCK_ORD_CRIT 0 @@ -54,7 +48,7 @@ typedef void *qlockh_t; /* opaque handle */ -extern bool_t qlock_init( bool_t miniroot ); +extern bool_t qlock_init( void ); /* called by main to initialize abstraction. returns FALSE if * utility should abort. */ diff --git a/restore/content.c b/restore/content.c index 2228a7f..8dfa456 100644 --- a/restore/content.c +++ b/restore/content.c @@ -8911,7 +8911,8 @@ partial_reg( ix_t d_index, /* If not found, find a free one, fill it in and return */ if ( ! isptr ) { - mlog(MLOG_NITTY, "partial_reg: no entry found for %llu\n", ino); + mlog(MLOG_NITTY | MLOG_NOLOCK, + "partial_reg: no entry found for %llu\n", ino); /* find a free one */ for (i=0; i < partialmax; i++ ) { if (persp->a.parrest[i].is_ino == 0) { @@ -8950,8 +8951,10 @@ found: /* no existing entry for this drive, fill in the values */ bsptr->offset = offset; bsptr->endoffset = endoffset; - mlog(MLOG_NITTY, "partial_reg: update entry [%d]: " - "\n", d_index, offset, endoffset); + mlog(MLOG_NITTY | MLOG_NOLOCK, + "partial_reg: update entry [%d]: " + "\n", + d_index, offset, endoffset); } else { bool_t ret; @@ -8960,9 +8963,11 @@ found: */ bsptr->endoffset = endoffset; ret = partial_check2(isptr, fsize); - mlog(MLOG_NITTY, "partial_reg: extend entry [%d]: " - "\n", d_index, endoffset); - mlog(MLOG_NITTY, "partial_reg: partial_check returns: %d\n", ret); + mlog(MLOG_NITTY | MLOG_NOLOCK, + "partial_reg: extend entry [%d]: \n", + d_index, endoffset); + mlog(MLOG_NITTY | MLOG_NOLOCK, + "partial_reg: partial_check returns: %d\n", ret); } pi_unlock(); -- 1.7.0.4 From wkendall@sgi.com Wed Nov 2 16:11:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2LBFE0200925 for ; Wed, 2 Nov 2011 16:11:16 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id 268F8AC002; Wed, 2 Nov 2011 14:11:15 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id CE5377001EC0; Wed, 2 Nov 2011 16:11:14 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id C63DF21E23D2; Wed, 2 Nov 2011 16:11:14 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH 8/8] xfsdump: enable multiple streams Date: Wed, 2 Nov 2011 16:10:54 -0500 Message-Id: <1320268254-20583-9-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320268254-20583-1-git-send-email-wkendall@sgi.com> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean IRIX contained an environment referred to as "miniroot" where sproc threads were either not available, or at least not used in xfsdump. Throughout xfsdump there's a "miniroot" variable which indicates whether or not thread support is enabled. On Linux this variable has always been false in order to disable support for multiple streams. Now that the threading infracstructure has been converted over to pthreads, this patch removes the "miniroot" variable and enables the option of using multiple streams. Note that another feature in xfsdump, using a ring buffer for I/O to tapes, also depends on thread support. I'm leaving that disabled for now until more testing has been done. Signed-off-by: Bill Kendall --- common/drive.c | 20 +------ common/drive.h | 8 +-- common/drive_minrmt.c | 15 +++--- common/drive_scsitape.c | 15 +++--- common/drive_simple.c | 8 ++-- common/main.c | 124 +++++----------------------------------------- dump/content.c | 35 ++++++------- dump/getopt.h | 4 +- man/man8/xfsdump.8 | 8 +-- man/man8/xfsrestore.8 | 4 +- restore/content.c | 23 ++++----- restore/getopt.h | 4 +- 12 files changed, 74 insertions(+), 194 deletions(-) diff --git a/common/drive.c b/common/drive.c index 227fecd..32a7191 100644 --- a/common/drive.c +++ b/common/drive.c @@ -81,7 +81,7 @@ static drive_strategy_t *strategypp[] = { * specified on the command line. */ bool_t -drive_init1( int argc, char *argv[ ], bool_t singlethreaded ) +drive_init1( int argc, char *argv[ ] ) { intgen_t c; ix_t driveix; @@ -103,18 +103,6 @@ drive_init1( int argc, char *argv[ ], bool_t singlethreaded ) } } - /* validate drive count - */ - if ( singlethreaded && drivecnt > 1 ) { - mlog( MLOG_NORMAL, _( - "too many -%c arguments: " - "maximum is %d when running in miniroot\n"), - GETOPT_DUMPDEST, - 1 ); - usage( ); - return BOOL_FALSE; - } - /* allocate an array to hold ptrs to drive descriptors */ if (drivecnt > 0) { @@ -221,8 +209,7 @@ drive_init1( int argc, char *argv[ ], bool_t singlethreaded ) intgen_t score; score = ( * sp->ds_match )( argc, argv, - drivep, - singlethreaded ); + drivep ); if ( ! bestsp || score > bestscore ) { bestsp = sp; bestscore = score; @@ -237,8 +224,7 @@ drive_init1( int argc, char *argv[ ], bool_t singlethreaded ) bestsp->ds_description ); ok = ( * bestsp->ds_instantiate )( argc, argv, - drivep, - singlethreaded ); + drivep ); if ( ! ok ) { return BOOL_FALSE; } diff --git a/common/drive.h b/common/drive.h index 4dc4270..f693976 100644 --- a/common/drive.h +++ b/common/drive.h @@ -140,15 +140,13 @@ struct drive_strategy { */ intgen_t ( * ds_match )( intgen_t argc, char *argv[ ], - struct drive *drivep, - bool_t singlethreaded ); + struct drive *drivep ); /* returns degree of match. drivep has been pre-allocated * and initialized with generic info. */ bool_t ( * ds_instantiate )( intgen_t argc, char *argv[ ], - struct drive *drivep, - bool_t singlethreaded ); + struct drive *drivep ); /* creates a drive manager instance, by filling in the * blanks of the pre-allocated drive descriptor * returns FALSE on failure. @@ -648,7 +646,7 @@ extern size_t partialmax; * * Returns FALSE if utility should be aborted. */ -extern bool_t drive_init1( int argc, char *argv[], bool_t singlethreaded ); +extern bool_t drive_init1( int argc, char *argv[] ); /* drive_init2 - allocate and initialize read and write hdr buffers, diff --git a/common/drive_minrmt.c b/common/drive_minrmt.c index 3ff4d0f..5f5f96c 100644 --- a/common/drive_minrmt.c +++ b/common/drive_minrmt.c @@ -257,8 +257,8 @@ extern int rmtwrite( int, const void *, uint); /* strategy functions */ -static intgen_t ds_match( int, char *[], drive_t *, bool_t ); -static intgen_t ds_instantiate( int, char *[], drive_t *, bool_t ); +static intgen_t ds_match( int, char *[], drive_t * ); +static intgen_t ds_instantiate( int, char *[], drive_t * ); /* manager operations */ @@ -404,7 +404,7 @@ static u_int32_t cmdlineblksize = 0; */ /* ARGSUSED */ static intgen_t -ds_match( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) +ds_match( int argc, char *argv[], drive_t *drivep ) { intgen_t fd; intgen_t c; @@ -464,7 +464,7 @@ ds_match( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) */ /*ARGSUSED*/ static bool_t -ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) +ds_instantiate( int argc, char *argv[], drive_t *drivep ) { drive_context_t *contextp; intgen_t c; @@ -487,9 +487,10 @@ ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) ASSERT( contextp ); memset( ( void * )contextp, 0, sizeof( *contextp )); - /* transfer indication of singlethreadedness to context + /* do not enable a separate I/O thread, + * more testing to be done first... */ - contextp->dc_singlethreadedpr = singlethreaded; + contextp->dc_singlethreadedpr = BOOL_TRUE; /* scan the command line for the I/O buffer ring length * and record checksum request @@ -580,7 +581,7 @@ ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) /* if threads not allowed, allocate a record buffer. otherwise * create a ring, from which buffers will be taken. */ - if ( singlethreaded ) { + if ( contextp->dc_singlethreadedpr ) { contextp->dc_bufp = ( char * )memalign( PGSZ, STAPE_MAX_RECSZ ); ASSERT( contextp->dc_bufp ); } else { diff --git a/common/drive_scsitape.c b/common/drive_scsitape.c index f24d604..71b809f 100644 --- a/common/drive_scsitape.c +++ b/common/drive_scsitape.c @@ -299,8 +299,8 @@ extern int rmtwrite( int, const void *, uint); /* strategy functions */ -static intgen_t ds_match( int, char *[], drive_t *, bool_t ); -static intgen_t ds_instantiate( int, char *[], drive_t *, bool_t ); +static intgen_t ds_match( int, char *[], drive_t * ); +static intgen_t ds_instantiate( int, char *[], drive_t * ); /* manager operations */ @@ -506,7 +506,7 @@ is_scsi_driver(char *pathname) */ /* ARGSUSED */ static intgen_t -ds_match( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) +ds_match( int argc, char *argv[], drive_t *drivep ) { struct mtget mt_stat; intgen_t fd; @@ -544,7 +544,7 @@ ds_match( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) */ /*ARGSUSED*/ static bool_t -ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) +ds_instantiate( int argc, char *argv[], drive_t *drivep ) { drive_context_t *contextp; intgen_t c; @@ -567,9 +567,10 @@ ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) ASSERT( contextp ); memset( ( void * )contextp, 0, sizeof( *contextp )); - /* transfer indication of singlethreadedness to context + /* do not enable a separate I/O thread, + * more testing to be done first... */ - contextp->dc_singlethreadedpr = singlethreaded; + contextp->dc_singlethreadedpr = BOOL_TRUE; /* scan the command line for the I/O buffer ring length * and record checksum request @@ -670,7 +671,7 @@ ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) /* if threads not allowed, allocate a record buffer. otherwise * create a ring, from which buffers will be taken. */ - if ( singlethreaded ) { + if ( contextp->dc_singlethreadedpr ) { contextp->dc_bufp = ( char * )memalign( PGSZ, STAPE_MAX_RECSZ ); ASSERT( contextp->dc_bufp ); } else { diff --git a/common/drive_simple.c b/common/drive_simple.c index cb88aa8..086d162 100644 --- a/common/drive_simple.c +++ b/common/drive_simple.c @@ -98,8 +98,8 @@ extern size_t pgsz; /* strategy functions */ -static intgen_t ds_match( int, char *[], drive_t *, bool_t ); -static intgen_t ds_instantiate( int, char *[], drive_t *, bool_t ); +static intgen_t ds_match( int, char *[], drive_t * ); +static intgen_t ds_instantiate( int, char *[], drive_t * ); /* declare manager operators */ @@ -178,7 +178,7 @@ static drive_ops_t drive_ops = { */ /* ARGSUSED */ static intgen_t -ds_match( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) +ds_match( int argc, char *argv[], drive_t *drivep ) { bool_t isrmtpr; struct stat64 statbuf; @@ -221,7 +221,7 @@ ds_match( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) */ /*ARGSUSED*/ static bool_t -ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) +ds_instantiate( int argc, char *argv[], drive_t *drivep ) { drive_context_t *contextp; diff --git a/common/main.c b/common/main.c index 38b3889..5880723 100644 --- a/common/main.c +++ b/common/main.c @@ -87,10 +87,6 @@ bool_t preemptchk( int ); static bool_t loadoptfile( int *argcp, char ***argvp ); static char * stripquotes( char *p ); static void shiftleftby1( char *p, char *endp ); -static bool_t in_miniroot_heuristic( void ); -#ifdef HIDDEN -static void mrh_sighandler( int ); -#endif static void sighandler( int ); static int childmain( void * ); static bool_t sigint_dialog( void ); @@ -111,11 +107,6 @@ intgen_t version = 3; intgen_t subversion = 0; char *progname = 0; /* used in all error output */ char *homedir = 0; /* directory invoked from */ -#ifdef HIDDEN -bool_t miniroot = BOOL_FALSE; -#else -bool_t miniroot = BOOL_TRUE; -#endif /* HIDDEN */ bool_t pipeline = BOOL_FALSE; bool_t stdoutpiped = BOOL_FALSE; pthread_t parenttid; @@ -215,16 +206,11 @@ main( int argc, char *argv[] ) if ( ! ok ) { return mlog_exit(EXIT_ERROR, RV_INIT); } - /* scan the command line for the miniroot, info, progress + /* scan the command line for the info, progress * report options, and stacksz. */ minstacksz = MINSTACKSZ; maxstacksz = MAXSTACKSZ; -#ifdef HIDDEN - miniroot = BOOL_FALSE; -#else - miniroot = BOOL_TRUE; -#endif /* HIDDEN */ infoonly = BOOL_FALSE; progrpt_enabledpr = BOOL_FALSE; optind = 1; @@ -275,9 +261,6 @@ main( int argc, char *argv[] ) } maxstacksz = tmpstacksz; break; - case GETOPT_MINIROOT: - miniroot = BOOL_TRUE; - break; case GETOPT_HELP: infoonly = BOOL_TRUE; mlog_exit_hint(RV_USAGE); @@ -349,13 +332,6 @@ main( int argc, char *argv[] ) return mlog_exit(EXIT_ERROR, RV_INIT); } - /* perform an experiment to determine if we are in the miniroot. - * various features will be disallowed if in miniroot. - */ - if ( ! miniroot && in_miniroot_heuristic( )) { - miniroot = BOOL_TRUE; - } - /* initialize message logging (stage 2) - allocate the message lock */ ok = mlog_init2( ); @@ -473,7 +449,7 @@ main( int argc, char *argv[] ) * terribly time-consuming here. A second initialization pass * will be done shortly. */ - ok = drive_init1( argc, argv, miniroot ); + ok = drive_init1( argc, argv ); if ( ! ok ) { return mlog_exit(EXIT_ERROR, RV_INIT); } @@ -503,11 +479,7 @@ main( int argc, char *argv[] ) VERSION, version, subversion ); - if ( miniroot ) { - mlog( MLOG_VERBOSE | MLOG_BARE, _( - " - " - "Running single-threaded\n") ); - } else if ( ! pipeline && ! stdoutpiped && sistr && dlog_allowed( )) { + if ( ! pipeline && ! stdoutpiped && sistr && dlog_allowed( )) { mlog( MLOG_VERBOSE | MLOG_BARE, _( " - " "type %s for status and control\n"), @@ -531,11 +503,10 @@ main( int argc, char *argv[] ) */ mlog_tell_streamcnt( drivecnt ); - /* initialize the state of signal processing. if miniroot or - * pipeline, just want to exit when a signal is received. otherwise, - * hold signals so they don't interfere with sys calls; they will - * be released at pre-emption points and upon pausing in the main - * loop. + /* initialize the state of signal processing. if in a pipeline, just + * want to exit when a signal is received. otherwise, hold signals so + * they don't interfere with sys calls; they will be released at + * pre-emption points and upon pausing in the main loop. */ sigfillset(&sa.sa_mask); @@ -551,7 +522,7 @@ main( int argc, char *argv[] ) sigaction( SIGPIPE, &sa, NULL ); sigaction( SIGCHLD, &sa, NULL ); - if ( ! miniroot && ! pipeline ) { + if ( ! pipeline ) { sigset_t blocked_set; stop_in_progress = BOOL_FALSE; @@ -594,10 +565,9 @@ main( int argc, char *argv[] ) return mlog_exit(EXIT_ERROR, RV_INIT); } - /* if miniroot or a pipeline, go single-threaded - * with just one stream. + /* if in a pipeline, go single-threaded with just one stream. */ - if ( miniroot || pipeline ) { + if ( pipeline ) { intgen_t exitcode; sa.sa_handler = sighandler; @@ -977,9 +947,6 @@ usage( void ) ULO(_("(show verbosity in messages)"), GETOPT_SHOWLOGLEVEL ); #endif /* REVEAL */ ULO(_(""), GETOPT_RINGLEN ); -#ifdef REVEAL - ULO(_("(miniroot restrictions)"), GETOPT_MINIROOT ); -#endif /* REVEAL */ ULN(_("- (stdout)") ); ULN(_("") ); #endif /* DUMP */ @@ -1030,9 +997,6 @@ usage( void ) #endif /* REVEAL */ ULO(_(" ..."), GETOPT_NOSUBTREE ); ULO(_(""), GETOPT_RINGLEN ); -#ifdef REVEAL - ULO(_("(miniroot restrictions)"), GETOPT_MINIROOT ); -#endif /* REVEAL */ ULN(_("- (stdin)") ); ULN(_("") ); #endif /* RESTORE */ @@ -1081,9 +1045,9 @@ preemptchk( int flg ) return BOOL_FALSE; } - /* signals not caught in these cases + /* signals not caught if in a pipeline */ - if ( miniroot || pipeline ) { + if ( pipeline ) { return BOOL_FALSE; } @@ -1400,66 +1364,6 @@ loadoptfile( intgen_t *argcp, char ***argvp ) return BOOL_TRUE; } -#ifdef HIDDEN -static pid_t mrh_cid; -#endif - -static bool_t -in_miniroot_heuristic( void ) -{ - return BOOL_TRUE; - -#ifdef HIDDEN - SIG_PF prev_handler_hup; - SIG_PF prev_handler_term; - SIG_PF prev_handler_int; - SIG_PF prev_handler_quit; - SIG_PF prev_handler_cld; - bool_t in_miniroot; - - /* attempt to call sproc. - */ - prev_handler_hup = sigset( SIGHUP, SIG_IGN ); - prev_handler_term = sigset( SIGTERM, SIG_IGN ); - prev_handler_int = sigset( SIGINT, SIG_IGN ); - prev_handler_quit = sigset( SIGQUIT, SIG_IGN ); - prev_handler_cld = sigset( SIGCLD, mrh_sighandler ); - ( void )sighold( SIGCLD ); - mrh_cid = ( pid_t )sproc( ( void ( * )( void * ))exit, PR_SALL, 0 ); - if ( mrh_cid < 0 ) { - in_miniroot = BOOL_TRUE; - } else { - while ( mrh_cid >= 0 ) { - ( void )sigpause( SIGCLD ); - } - in_miniroot = BOOL_FALSE; - } - ( void )sigset( SIGHUP, prev_handler_hup ); - ( void )sigset( SIGTERM, prev_handler_term ); - ( void )sigset( SIGINT, prev_handler_int ); - ( void )sigset( SIGQUIT, prev_handler_quit ); - ( void )sigset( SIGCLD, prev_handler_cld ); - - return in_miniroot; -#endif /* HIDDEN */ -} - -#ifdef HIDDEN -static void -mrh_sighandler( int signo ) -{ - if ( signo == SIGCLD ) { - pid_t cid; - intgen_t stat; - - cid = wait( &stat ); - if ( cid == mrh_cid ) { - mrh_cid = -1; - } - } -} -#endif - /* parent and children share this handler. */ static void @@ -1470,9 +1374,9 @@ sighandler( int signo ) if ( dlog_sighandler( signo ) ) return; - /* if in miniroot, don't do anything risky. just quit. + /* if in pipeline, don't do anything risky. just quit. */ - if ( miniroot || pipeline ) { + if ( pipeline ) { intgen_t rval; mlog( MLOG_TRACE | MLOG_NOTE | MLOG_NOLOCK | MLOG_PROC, diff --git a/dump/content.c b/dump/content.c index 33f1166..3a7f508 100644 --- a/dump/content.c +++ b/dump/content.c @@ -244,7 +244,6 @@ typedef struct pds pds_t; extern void usage( void ); extern bool_t preemptchk( int ); extern char *homedir; -extern bool_t miniroot; extern bool_t pipeline; extern bool_t stdoutpiped; extern char *sistr; @@ -2352,7 +2351,7 @@ content_stream_dump( ix_t strmix ) inomap_next_nondir, inomap_contextp, ( intgen_t * )&rv, - ( miniroot || pipeline ) ? + pipeline ? (bool_t (*)(int))preemptchk : 0, bstatbufp, bstatbuflen ); @@ -2586,24 +2585,22 @@ decision_more: * from all streams have been registered. */ if ( drivep->d_capabilities & DRIVE_CAP_FILES ) { - if ( ! miniroot ) { - if ( stream_cnt( ) > 1 ) { - mlog( MLOG_VERBOSE, _( - "waiting for synchronized " - "session inventory dump\n") ); - sc_stat_pds[ strmix ].pds_phase = PDS_INVSYNC; - } + if ( stream_cnt( ) > 1 ) { + mlog( MLOG_VERBOSE, _( + "waiting for synchronized " + "session inventory dump\n") ); + sc_stat_pds[ strmix ].pds_phase = PDS_INVSYNC; + } - /* first be sure all threads have begun - */ - while ( sc_thrdsarrivedcnt < drivecnt ) { - sleep( 1 ); - } - /* now wait for survivors to checkin - */ - while ( sc_thrdsdonecnt < stream_cnt( )) { - sleep( 1 ); - } + /* first be sure all threads have begun + */ + while ( sc_thrdsarrivedcnt < drivecnt ) { + sleep( 1 ); + } + /* now wait for survivors to checkin + */ + while ( sc_thrdsdonecnt < stream_cnt( )) { + sleep( 1 ); } /* proceeed */ diff --git a/dump/getopt.h b/dump/getopt.h index 8a55631..ba26c93 100644 --- a/dump/getopt.h +++ b/dump/getopt.h @@ -27,7 +27,7 @@ * facilitating easy changes. */ -#define GETOPT_CMDSTRING "ab:c:d:ef:hl:mop:qs:t:v:z:AB:CDEFG:H:I:JL:M:NO:PRSTUVWY:Z" +#define GETOPT_CMDSTRING "ab:c:d:ef:hl:mop:qs:t:v:z:AB:CDEFG:H:I:JL:M:NO:PRSTUVWY:" #define GETOPT_DUMPASOFFLINE 'a' /* dump DMF dualstate files as offline */ #define GETOPT_BLOCKSIZE 'b' /* blocksize for rmt */ @@ -80,6 +80,6 @@ #define GETOPT_SHOWLOGLEVEL 'W' /* show level of log messages */ /* 'X' */ #define GETOPT_RINGLEN 'Y' /* specify I/O buffer ring length */ -#define GETOPT_MINIROOT 'Z' /* apply miniroot restrictions */ +/* 'Z' used on irix for miniroot */ #endif /* GETOPT_H */ diff --git a/man/man8/xfsdump.8 b/man/man8/xfsdump.8 index 46e6bd5..5360378 100644 --- a/man/man8/xfsdump.8 +++ b/man/man8/xfsdump.8 @@ -66,10 +66,6 @@ option. Other techniques, such as making a second copy of the dump image, provide more protection against media failures than multiple media files will. .P -However, the current implementation in Linux only supports one destination -and running single threaded. Therefore, the above comments -regarding multiple streams describe the possible future capabilities. -.P .I xfsdump maintains an online dump inventory in \f2/var/lib/xfsdump/inventory\f1. The @@ -391,8 +387,8 @@ Specify I/O buffer ring length. uses a ring of output buffers to achieve maximum throughput when dumping to tape drives. The default ring length is 3. -However, this is only supported when running multi-threaded -which has not been done for Linux yet - making this option benign. +However, this is not currently enabled on +Linux yet, making this option benign. .TP 5 .B \- A lone diff --git a/man/man8/xfsrestore.8 b/man/man8/xfsrestore.8 index 8e33ee9..aad97fa 100644 --- a/man/man8/xfsrestore.8 +++ b/man/man8/xfsrestore.8 @@ -426,8 +426,8 @@ Specify I/O buffer ring length. uses a ring of input buffers to achieve maximum throughput when restoring from tape drives. The default ring length is 3. -However, this is only supported when running multi-threaded -which has not been done for Linux yet - making this option benign. +However, this is not currently enabled on +Linux yet, making this option benign. .TP 5 .B \- A lone diff --git a/restore/content.c b/restore/content.c index 0108a40..a9e0b20 100644 --- a/restore/content.c +++ b/restore/content.c @@ -660,7 +660,6 @@ typedef struct tran tran_t; extern void usage( void ); extern bool_t preemptchk( void ); extern char *homedir; -extern bool_t miniroot; extern bool_t pipeline; extern bool_t stdoutpiped; extern char *sistr; @@ -2544,14 +2543,12 @@ content_stream_restore( ix_t thrdix ) } tranp->t_sync5 = SYNC_BUSY; unlock( ); - if ( ! miniroot ) { - if ( drivecnt > 1 ) { - mlog( MLOG_TRACE, - "waiting for other streams to exit\n" ); - } - while ( cldmgr_otherstreamsremain( thrdix )) { - sleep( 1 ); - } + if ( drivecnt > 1 ) { + mlog( MLOG_TRACE, + "waiting for other streams to exit\n" ); + } + while ( cldmgr_otherstreamsremain( thrdix )) { + sleep( 1 ); } mlog( MLOG_DEBUG, @@ -3006,10 +3003,10 @@ applydirdump( drive_t *drivep, return RV_INTR; } - /* if miniroot or pipeline , call preemptchk( ) to + /* if in a pipeline , call preemptchk( ) to * print status reports */ - if ( miniroot || pipeline ) + if ( pipeline ) { mlog( MLOG_DEBUG , "preemptchk( )\n"); @@ -3543,10 +3540,10 @@ applynondirdump( drive_t *drivep, fhdrp->fh_offset ); } - /* if miniroot or pipeline , call preemptchk( ) to + /* if in a pipeline , call preemptchk( ) to * print status reports */ - if ( miniroot || pipeline ) + if ( pipeline ) { mlog( MLOG_DEBUG , "preemptchk( )\n"); diff --git a/restore/getopt.h b/restore/getopt.h index 4ee865d..63568de 100644 --- a/restore/getopt.h +++ b/restore/getopt.h @@ -26,7 +26,7 @@ * purpose is to contain that command string. */ -#define GETOPT_CMDSTRING "a:b:c:def:himn:op:qrs:tv:wABCDEFG:H:I:JL:M:NO:PQRS:TUVWX:Y:Z" +#define GETOPT_CMDSTRING "a:b:c:def:himn:op:qrs:tv:wABCDEFG:H:I:JL:M:NO:PQRS:TUVWX:Y:" #define GETOPT_WORKSPACE 'a' /* workspace dir (content.c) */ #define GETOPT_BLOCKSIZE 'b' /* blocksize for rmt */ @@ -79,6 +79,6 @@ #define GETOPT_SHOWLOGLEVEL 'W' /* show level of log messages */ #define GETOPT_NOSUBTREE 'X' /* subtree to exclude */ #define GETOPT_RINGLEN 'Y' /* specify I/O buffer ring length */ -#define GETOPT_MINIROOT 'Z' /* apply miniroot restrictions */ +/* 'Z' used on irix for miniroot */ #endif /* GETOPT_H */ -- 1.7.0.4 From wkendall@sgi.com Wed Nov 2 16:11:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64, LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA2LBC4Z200881 for ; Wed, 2 Nov 2011 16:11:12 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id E61D2AC002; Wed, 2 Nov 2011 14:11:11 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 992CD7001EC2; Wed, 2 Nov 2011 16:11:11 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id 8D48621E23D2; Wed, 2 Nov 2011 16:11:11 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH 5/8] xfsdump: convert IRIX sproc threads to pthreads Date: Wed, 2 Nov 2011 16:10:51 -0500 Message-Id: <1320268254-20583-6-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320268254-20583-1-git-send-email-wkendall@sgi.com> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The existing (disabled) threading code in xfsdump is based on IRIX sprocs. This patch converts the code to use pthreads. The threading code remains disabled at this point. Changes: - pid_t to pthread_t - getpid() to pthread_self() - "pid1 == pid2" to pthread_equal(tid1, tid2) - sigprocmask() to pthread_sigmask() - sproc() to pthread_create() Also the following are not referenced and have been removed: - cldmgr_pid2streamix() - PROCMAX - r_slavepid - sproc.c and sproc.h Signed-off-by: Bill Kendall --- common/Makefile | 2 +- common/cldmgr.c | 56 ++++++++++++++-------------- common/cldmgr.h | 8 +--- common/dlog.c | 4 +- common/drive_minrmt.c | 2 +- common/drive_scsitape.c | 2 +- common/main.c | 20 +++++----- common/mlog.c | 44 +++++++++++----------- common/ring.c | 9 +--- common/ring.h | 1 - common/sproc.c | 42 --------------------- common/sproc.h | 23 ----------- common/stream.c | 94 +++++++++++++++++++++-------------------------- common/stream.h | 22 +++++----- dump/Makefile | 4 +- dump/content.c | 4 +- restore/Makefile | 2 - restore/content.c | 5 +- 18 files changed, 127 insertions(+), 217 deletions(-) delete mode 100644 common/sproc.c delete mode 100644 common/sproc.h diff --git a/common/Makefile b/common/Makefile index 8d9d868..ad3d61a 100644 --- a/common/Makefile +++ b/common/Makefile @@ -13,7 +13,7 @@ LSRCFILES = arch_xlate.c arch_xlate.h \ hsmapi.c hsmapi.h inventory.c inventory.h lock.c lock.h \ main.c media.c media.h media_rmvtape.h mlog.c mlog.h \ openutil.c openutil.h path.c path.h qlock.c qlock.h \ - rec_hdr.h ring.c ring.h sproc.c sproc.h stream.c \ + rec_hdr.h ring.c ring.h stream.c \ stream.h timeutil.c timeutil.h ts_mtio.h types.h util.c util.h default install install-dev : diff --git a/common/cldmgr.c b/common/cldmgr.c index d327bab..4574834 100644 --- a/common/cldmgr.c +++ b/common/cldmgr.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "types.h" #include "lock.h" @@ -31,14 +32,13 @@ #include "stream.h" #include "mlog.h" #include "cldmgr.h" -#include "sproc.h" extern size_t pgsz; #define CLD_MAX ( STREAM_SIMMAX * 2 ) struct cld { bool_t c_busy; - pid_t c_pid; + pthread_t c_tid; ix_t c_streamix; int ( * c_entry )( void *arg1 ); void * c_arg1; @@ -50,32 +50,31 @@ static cld_t cld[ CLD_MAX ]; static bool_t cldmgr_stopflag; static cld_t *cldmgr_getcld( void ); -static cld_t * cldmgr_findbypid( pid_t ); -static int cldmgr_entry( void * ); +static cld_t * cldmgr_findbytid( pthread_t ); +static void *cldmgr_entry( void * ); /* REFERENCED */ -static pid_t cldmgr_parentpid; +static pthread_t cldmgr_parenttid; bool_t cldmgr_init( void ) { ( void )memset( ( void * )cld, 0, sizeof( cld )); cldmgr_stopflag = BOOL_FALSE; - cldmgr_parentpid = getpid( ); + cldmgr_parenttid = pthread_self( ); return BOOL_TRUE; } bool_t cldmgr_create( int ( * entry )( void *arg1 ), - u_intgen_t inh, ix_t streamix, char *descstr, void *arg1 ) { cld_t *cldp; - pid_t cldpid; + intgen_t rval; - ASSERT( getpid( ) == cldmgr_parentpid ); + ASSERT( pthread_equal( pthread_self( ), cldmgr_parenttid ) ); cldp = cldmgr_getcld( ); if ( ! cldp ) { @@ -91,22 +90,22 @@ cldmgr_create( int ( * entry )( void *arg1 ), cldp->c_streamix = streamix; cldp->c_entry = entry; cldp->c_arg1 = arg1; - cldpid = ( pid_t )sproc( cldmgr_entry, inh, ( void * )cldp ); - if ( cldpid < 0 ) { + rval = pthread_create( &cldp->c_tid, NULL, cldmgr_entry, cldp ); + if ( rval ) { mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_PROC, _( - "sproc failed creating %s thread for stream %u: %s\n"), + "failed creating %s thread for stream %u: %s\n"), descstr, streamix, - strerror( errno )); + strerror( rval )); } else { mlog( MLOG_NITTY | MLOG_PROC, - "%s thread created for stream %u: pid %d\n", + "%s thread created for stream %u: tid %lu\n", descstr, streamix, - cldpid ); + cldp->c_tid ); } - return cldpid < 0 ? BOOL_FALSE : BOOL_TRUE; + return rval ? BOOL_FALSE : BOOL_TRUE; } void @@ -119,16 +118,16 @@ cldmgr_stop( void ) } void -cldmgr_died( pid_t pid ) +cldmgr_died( pthread_t tid ) { - cld_t *cldp = cldmgr_findbypid( pid ); + cld_t *cldp = cldmgr_findbytid( tid ); if ( ! cldp ) { return; } cldp->c_busy = BOOL_FALSE; if ( ( intgen_t )( cldp->c_streamix ) >= 0 ) { - stream_dead( pid ); + stream_dead( tid ); } } @@ -194,13 +193,13 @@ cldmgr_getcld( void ) } static cld_t * -cldmgr_findbypid( pid_t pid ) +cldmgr_findbytid( pthread_t tid ) { cld_t *p = cld; cld_t *ep = cld + sizeof( cld ) / sizeof( cld[ 0 ] ); for ( ; p < ep ; p++ ) { - if ( p->c_busy && p->c_pid == pid ) { + if ( p->c_busy && pthread_equal( p->c_tid, tid )) { break; } } @@ -208,19 +207,20 @@ cldmgr_findbypid( pid_t pid ) return ( p < ep ) ? p : 0; } -static int +static void * cldmgr_entry( void *arg1 ) { cld_t *cldp = ( cld_t * )arg1; - pid_t pid = getpid( ); + pthread_t tid = pthread_self( ); - cldp->c_pid = pid; if ( ( intgen_t )( cldp->c_streamix ) >= 0 ) { - stream_register( pid, ( intgen_t )cldp->c_streamix ); + stream_register( tid, ( intgen_t )cldp->c_streamix ); } mlog( MLOG_DEBUG | MLOG_PROC, - "child %d created for stream %d\n", - pid, + "thread %lu created for stream %d\n", + tid, cldp->c_streamix ); - return ( * cldp->c_entry )( cldp->c_arg1 ); + + ( * cldp->c_entry )( cldp->c_arg1 ); + return NULL; } diff --git a/common/cldmgr.h b/common/cldmgr.h index bb3f612..e393b82 100644 --- a/common/cldmgr.h +++ b/common/cldmgr.h @@ -30,7 +30,6 @@ extern bool_t cldmgr_init( void ); * encountered */ extern bool_t cldmgr_create( int ( * entry )( void *arg1 ), - u_intgen_t inh, ix_t streamix, char *descstr, void *arg1 ); @@ -42,18 +41,13 @@ extern void cldmgr_stop( void ); /* cldmgr_died - tells the child manager that the child died */ -extern void cldmgr_died( pid_t pid ); +extern void cldmgr_died( pthread_t tid ); /* cldmgr_stop_requested - returns TRUE if the child should gracefully * terminate. */ extern bool_t cldmgr_stop_requested( void ); -/* cldmgr_pid2streamix - retrieves the stream index. returns -1 if - * not associated with any stream. - */ -extern intgen_t cldmgr_pid2streamix( pid_t pid ); - /* cldmgr_remainingcnt - returns number of children remaining */ extern size_t cldmgr_remainingcnt( void ); diff --git a/common/dlog.c b/common/dlog.c index 8cf9a65..51666cf 100644 --- a/common/dlog.c +++ b/common/dlog.c @@ -429,7 +429,7 @@ promptinput( char *buf, sigaddset( &dlog_registered_sigs, SIGQUIT ); } - sigprocmask( SIG_UNBLOCK, &dlog_registered_sigs, &orig_set ); + pthread_sigmask( SIG_UNBLOCK, &dlog_registered_sigs, &orig_set ); /* wait for input, timeout, or interrupt. * note we come out of the select() frequently in order to @@ -455,7 +455,7 @@ promptinput( char *buf, /* restore signal handling */ - sigprocmask( SIG_SETMASK, &orig_set, NULL ); + pthread_sigmask( SIG_SETMASK, &orig_set, NULL ); sigemptyset( &dlog_registered_sigs ); /* check for timeout or interrupt diff --git a/common/drive_minrmt.c b/common/drive_minrmt.c index 836b663..3ff4d0f 100644 --- a/common/drive_minrmt.c +++ b/common/drive_minrmt.c @@ -577,7 +577,7 @@ ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) drivep->d_cap_est = -1; drivep->d_rate_est = -1; - /* if sproc not allowed, allocate a record buffer. otherwise + /* if threads not allowed, allocate a record buffer. otherwise * create a ring, from which buffers will be taken. */ if ( singlethreaded ) { diff --git a/common/drive_scsitape.c b/common/drive_scsitape.c index 8c1bd49..f24d604 100644 --- a/common/drive_scsitape.c +++ b/common/drive_scsitape.c @@ -667,7 +667,7 @@ ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) drivep->d_cap_est = -1; drivep->d_rate_est = -1; - /* if sproc not allowed, allocate a record buffer. otherwise + /* if threads not allowed, allocate a record buffer. otherwise * create a ring, from which buffers will be taken. */ if ( singlethreaded ) { diff --git a/common/main.c b/common/main.c index 25c0838..d4dbe28 100644 --- a/common/main.c +++ b/common/main.c @@ -32,6 +32,7 @@ #include #include #include +#include #include "exit.h" #include "types.h" @@ -117,7 +118,7 @@ bool_t miniroot = BOOL_TRUE; #endif /* HIDDEN */ bool_t pipeline = BOOL_FALSE; bool_t stdoutpiped = BOOL_FALSE; -pid_t parentpid; +pthread_t parenttid; char *sistr; size_t pgsz; size_t pgmask; @@ -195,10 +196,10 @@ main( int argc, char *argv[] ) */ mlog_init0(); - /* Get the parent's pid. will be used in signal handling + /* Get the parent's pthread id. will be used * to differentiate parent from children. */ - parentpid = getpid( ); + parenttid = pthread_self( ); rval = atexit(mlog_exit_flush); assert(rval == 0); @@ -395,11 +396,11 @@ main( int argc, char *argv[] ) ASSERT( ( intgen_t )pgsz > 0 ); pgmask = pgsz - 1; - /* report parent pid + /* report parent tid */ mlog( MLOG_DEBUG | MLOG_PROC, - "parent pid is %d\n", - parentpid ); + "parent tid is %lu\n", + parenttid ); /* get the current working directory: this is where we will dump * core, if necessary. some tmp files may be placed here as well. @@ -572,7 +573,7 @@ main( int argc, char *argv[] ) sigaddset( &blocked_set, SIGTERM ); sigaddset( &blocked_set, SIGQUIT ); sigaddset( &blocked_set, SIGALRM ); - sigprocmask( SIG_SETMASK, &blocked_set, NULL ); + pthread_sigmask( SIG_SETMASK, &blocked_set, NULL ); sa.sa_handler = sighandler; sigaction( SIGINT, &sa, NULL ); @@ -676,7 +677,6 @@ main( int argc, char *argv[] ) if ( ! init_error ) { for ( stix = 0 ; stix < drivecnt ; stix++ ) { ok = cldmgr_create( childmain, - CLONE_VM, stix, "child", ( void * )stix ); @@ -895,7 +895,7 @@ main( int argc, char *argv[] ) if ( coredump_requested ) { mlog( MLOG_DEBUG | MLOG_PROC, "core dump requested, aborting (pid %d)\n", - parentpid ); + getpid() ); abort(); } @@ -1560,7 +1560,7 @@ childmain( void *arg1 ) drivep = drivepp[ stix ]; ( * drivep->d_opsp->do_quit )( drivep ); - exit( exitcode ); + return exitcode; } diff --git a/common/mlog.c b/common/mlog.c index 2265895..b0135b9 100644 --- a/common/mlog.c +++ b/common/mlog.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "types.h" #include "qlock.h" @@ -40,7 +41,7 @@ extern char *progname; extern void usage( void ); -extern pid_t parentpid; +extern pthread_t parenttid; #ifdef DUMP static FILE *mlog_fp = NULL; /* stderr */; @@ -385,7 +386,7 @@ mlog_va( intgen_t levelarg, char *fmt, va_list args ) if ( ! ( levelarg & MLOG_BARE )) { intgen_t streamix; - streamix = stream_getix( getpid() ); + streamix = stream_getix( pthread_self( ) ); if ( mlog_showss ) { sprintf( mlog_ssstr, ":%s", mlog_ss_names[ ss ] ); @@ -568,10 +569,10 @@ rv_getdesc(rv_t rv) int _mlog_exit( const char *file, int line, int exit_code, rv_t rv ) { - pid_t pid; + pthread_t tid; const struct rv_map *rvp; - pid = getpid(); + tid = pthread_self(); rvp = rv_getdesc(rv); @@ -595,7 +596,7 @@ _mlog_exit( const char *file, int line, int exit_code, rv_t rv ) * most accurate information about the termination condition. */ - if (pid == parentpid) { + if ( pthread_equal( tid, parenttid ) ) { if (mlog_main_exit_code == -1) { mlog_main_exit_code = exit_code; mlog_main_exit_return = rv; @@ -608,7 +609,7 @@ _mlog_exit( const char *file, int line, int exit_code, rv_t rv ) int exit_code; rv_t exit_return, exit_hint; - if (stream_get_exit_status(pid, + if (stream_get_exit_status(tid, states, N(states), &state, @@ -618,8 +619,8 @@ _mlog_exit( const char *file, int line, int exit_code, rv_t rv ) &exit_hint)) { if (exit_code == -1) { - stream_set_code(pid, exit_code); - stream_set_return(pid, rv); + stream_set_code(tid, exit_code); + stream_set_return(tid, rv); } } } @@ -630,10 +631,10 @@ _mlog_exit( const char *file, int line, int exit_code, rv_t rv ) void _mlog_exit_hint( const char *file, int line, rv_t rv ) { - pid_t pid; + pthread_t tid; const struct rv_map *rvp; - pid = getpid(); + tid = pthread_self(); rvp = rv_getdesc(rv); mlog( MLOG_DEBUG | MLOG_NOLOCK, @@ -655,10 +656,10 @@ _mlog_exit_hint( const char *file, int line, rv_t rv ) * information about the termination condition. */ - if (pid == parentpid) + if ( pthread_equal( tid, parenttid ) ) mlog_main_exit_hint = rv; else - stream_set_hint( pid, rv ); + stream_set_hint( tid, rv ); } @@ -670,10 +671,10 @@ mlog_get_hint( void ) bool_t ok; rv_t hint; - if (getpid() == parentpid) + if ( pthread_equal( pthread_self(), parenttid ) ) return mlog_main_exit_hint; - ok = stream_get_exit_status(getpid(), states, N(states), + ok = stream_get_exit_status(pthread_self(), states, N(states), NULL, NULL, NULL, NULL, &hint); ASSERT(ok); return hint; @@ -697,8 +698,8 @@ mlog_get_hint( void ) void mlog_exit_flush(void) { - pid_t pids[STREAM_SIMMAX]; - int i, npids; + pthread_t tids[STREAM_SIMMAX]; + int i, ntids; const struct rv_map *rvp; stream_state_t states[] = { S_RUNNING, S_ZOMBIE }; bool_t incomplete = BOOL_FALSE; @@ -713,13 +714,13 @@ mlog_exit_flush(void) if (mlog_main_exit_hint == RV_USAGE) return; - npids = stream_find_all(states, N(states), pids, STREAM_SIMMAX); - if (npids > 0) { + ntids = stream_find_all(states, N(states), tids, STREAM_SIMMAX); + if (ntids > 0) { /* print the state of all the streams */ fprintf(mlog_fp, _("%s: %s Summary:\n"), progname, PROGSTR_CAPS ); - for (i = 0; i < npids; i++) { + for (i = 0; i < ntids; i++) { stream_state_t state; intgen_t streamix; int exit_code; @@ -727,7 +728,7 @@ mlog_exit_flush(void) /* REFERENCED */ bool_t ok; - ok = stream_get_exit_status(pids[i], + ok = stream_get_exit_status(tids[i], states, N(states), &state, @@ -743,11 +744,10 @@ mlog_exit_flush(void) /* print status of this stream */ rvp = rv_getdesc(rv); fprintf(mlog_fp, - _("%s: stream %d (pid %d) %s " + _("%s: stream %d %s " "%s (%s)\n"), progname, streamix, - pids[i], drivepp[streamix]->d_pathname, rvp->rv_string, rvp->rv_desc); diff --git a/common/ring.c b/common/ring.c index e1dddba..42bd7d7 100644 --- a/common/ring.c +++ b/common/ring.c @@ -123,7 +123,6 @@ ring_create( size_t ringlen, /* kick off the slave thread */ ok = cldmgr_create( ring_slave_entry, - CLONE_VM, drive_index, _("slave"), ringp ); @@ -421,11 +420,7 @@ ring_slave_entry( void *ringctxp ) sigaddset( &blocked_set, SIGTERM ); sigaddset( &blocked_set, SIGQUIT ); sigaddset( &blocked_set, SIGALRM ); - sigprocmask( SIG_SETMASK, &blocked_set, NULL ); - - /* record slave pid to be used to kill slave - */ - ringp->r_slavepid = getpid( ); + pthread_sigmask( SIG_SETMASK, &blocked_set, NULL ); /* loop reading and precessing messages until told to die */ @@ -498,5 +493,5 @@ ring_slave_entry( void *ringctxp ) ring_slave_put( ringp, msgp ); } - exit( 0 ); + return 0; } diff --git a/common/ring.h b/common/ring.h index 56e3924..caa505c 100644 --- a/common/ring.h +++ b/common/ring.h @@ -134,7 +134,6 @@ struct ring { time32_t r_first_io_time; off64_t r_all_io_cnt; /* ALL BELOW PRIVATE!!! */ - pid_t r_slavepid; size_t r_len; ring_msg_t *r_msgp; size_t r_ready_in_ix; diff --git a/common/sproc.c b/common/sproc.c deleted file mode 100644 index 3b1425a..0000000 --- a/common/sproc.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - * - * 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. - * - * This program is distributed in the hope that it would be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include - -#define STACKSIZE 65536 - -int -sproc (int (*entry) (void *), int flags, void *arg) -{ - int retval = -1; -#ifdef HIDDEN - void *newstack; - - if ( (newstack = calloc (1, STACKSIZE)) != NULL ) { - void ** stackp = ((void **)newstack)+(STACKSIZE -1)/sizeof(void*); - - flags |= SIGCHLD; - - retval = clone (entry, stackp, flags, arg); - } -#endif - - return retval; -} diff --git a/common/sproc.h b/common/sproc.h deleted file mode 100644 index 46111ff..0000000 --- a/common/sproc.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - * - * 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. - * - * This program is distributed in the hope that it would be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -#ifndef SPROC_H -#define SPROC_H - -int sproc (int (*) (void *), int, void *); - -#endif /* SPROC_H */ diff --git a/common/stream.c b/common/stream.c index adaf7c0..48e25ee 100644 --- a/common/stream.c +++ b/common/stream.c @@ -19,18 +19,19 @@ #include #include +#include + #include "types.h" #include "exit.h" #include "stream.h" #include "lock.h" #include "mlog.h" -#define PROCMAX ( STREAM_SIMMAX * 2 + 1 ) #define N(a) (sizeof((a)) / sizeof((a)[0])) struct spm { stream_state_t s_state; - pid_t s_pid; + pthread_t s_tid; intgen_t s_ix; int s_exit_code; rv_t s_exit_return; @@ -38,37 +39,28 @@ struct spm { }; typedef struct spm spm_t; -extern pid_t parentpid; static spm_t spm[ STREAM_SIMMAX * 3 ]; static bool_t initialized = BOOL_FALSE; void stream_init( void ) { -#ifdef HIDDEN - /* REFERENCED */ - intgen_t rval; - - rval = ( intgen_t )usconfig( CONF_INITUSERS, PROCMAX ); - ASSERT( rval >= 0 ); -#endif /* HIDDEN */ - ( void )memset( ( void * )spm, 0, sizeof( spm )); initialized = BOOL_TRUE; } /* * Note that the stream list structure (updated via the stream_* functions) - * is indexed by pid. Multiple processes can be registered against the same - * stream index, typically: the primary content process that does the work; - * and the drive slave process, which just processes stuff off the ring buffer. - * In general having multiple pids registered per stream is not an issue for - * termination status reporting, as the mlog_exit* logging functions only + * is indexed by pthread_t (tid). Multiple processes can be registered against + * the same stream index, typically: the primary content process that does the + * work; and the drive slave process, which just processes stuff off the ring + * buffer. In general having multiple tids registered per stream is not an issue + * for termination status reporting, as the mlog_exit* logging functions only * ever get called out of the primary content process. */ void -stream_register( pid_t pid, intgen_t streamix ) +stream_register( pthread_t tid, intgen_t streamix ) { spm_t *p = spm; spm_t *ep = spm + N(spm); @@ -87,7 +79,7 @@ stream_register( pid_t pid, intgen_t streamix ) if ( p >= ep ) return; - p->s_pid = pid; + p->s_tid = tid; p->s_ix = streamix; p->s_exit_code = -1; p->s_exit_return = RV_NONE; @@ -95,14 +87,14 @@ stream_register( pid_t pid, intgen_t streamix ) } void -stream_dead( pid_t pid ) +stream_dead( pthread_t tid ) { spm_t *p = spm; spm_t *ep = spm + N(spm); lock(); for ( ; p < ep ; p++ ) - if ( p->s_pid == pid ) { + if ( pthread_equal( p->s_tid, tid ) ) { p->s_state = S_ZOMBIE; break; } @@ -111,14 +103,14 @@ stream_dead( pid_t pid ) } void -stream_free( pid_t pid ) +stream_free( pthread_t tid ) { spm_t *p = spm; spm_t *ep = spm + N(spm); lock(); for ( ; p < ep ; p++ ) { - if ( p->s_pid == pid ) { + if ( pthread_equal( p->s_tid, tid ) ) { (void) memset( (void *) p, 0, sizeof(spm_t) ); p->s_state = S_FREE; break; @@ -130,22 +122,22 @@ stream_free( pid_t pid ) int stream_find_all( stream_state_t states[], int nstates, - pid_t pids[], int npids ) + pthread_t tids[], int ntids ) { int i, count = 0; spm_t *p = spm; spm_t *ep = spm + N(spm); - ASSERT(nstates > 0 && npids > 0); + ASSERT(nstates > 0 && ntids > 0); if (!initialized) return 0; /* lock - make sure we get a consistent snapshot of the stream status */ lock(); - for ( ; p < ep && count < npids; p++ ) + for ( ; p < ep && count < ntids; p++ ) for (i = 0; i < nstates; i++) if (p->s_state == states[i]) { - pids[count++] = p->s_pid; + tids[count++] = p->s_tid; break; } unlock(); @@ -153,7 +145,7 @@ stream_find_all( stream_state_t states[], int nstates, } static spm_t * -stream_find( pid_t pid, stream_state_t s[], int nstates ) +stream_find( pthread_t tid, stream_state_t s[], int nstates ) { int i; spm_t *p = spm; @@ -163,7 +155,7 @@ stream_find( pid_t pid, stream_state_t s[], int nstates ) /* note we don't lock the stream array in this function */ for ( ; p < ep ; p++ ) - if ( p->s_pid == pid ) { + if ( pthread_equal( p->s_tid, tid ) ) { /* check state */ for (i = 0; i < nstates; i++) if (p->s_state == s[i]) @@ -174,8 +166,8 @@ stream_find( pid_t pid, stream_state_t s[], int nstates ) { static const char *state_strings[] = { "S_FREE", "S_RUNNING", "S_ZOMBIE" }; mlog( MLOG_DEBUG | MLOG_ERROR | MLOG_NOLOCK | MLOG_BARE, - "stream_find(): no stream with pid: %d and state%s:", - pid, nstates == 1 ? "" : "s" ); + "stream_find(): no stream with tid: %lu and state%s:", + tid, nstates == 1 ? "" : "s" ); for (i = 0; i < nstates; i++) mlog( MLOG_DEBUG | MLOG_ERROR | MLOG_NOLOCK | MLOG_BARE, " %s", state_strings[s[i]]); @@ -187,20 +179,18 @@ stream_find( pid_t pid, stream_state_t s[], int nstates ) } /* - * Note, the following function is called from two places: - * main.c:sighandler(), and mlog.c:mlog_va() in the first case we - * aren't allowed to take locks, and in the second locking may be - * disabled and we are already protected by another lock. So no - * locking is done in this function. + * Note, the following function is called from mlog.c:mlog_va(), + * where locking may be disabled and we are already protected by + * another lock. So no locking is done in this function. */ intgen_t -stream_getix( pid_t pid ) +stream_getix( pthread_t tid ) { stream_state_t states[] = { S_RUNNING }; spm_t *p; intgen_t ix; - p = stream_find( pid, states, N(states) ); + p = stream_find( tid, states, N(states) ); ix = p ? p->s_ix : -1; return ix; } @@ -213,43 +203,43 @@ stream_getix( pid_t pid ) * streams. */ -#define stream_set(field_name, pid, value) \ +#define stream_set(field_name, tid, value) \ stream_state_t states[] = { S_RUNNING }; \ spm_t *p; \ - pid_t mypid = getpid(); \ + pthread_t mytid = pthread_self(); \ \ - if (mypid != (pid)) { \ + if ( !pthread_equal(mytid, (tid))) { \ mlog( MLOG_DEBUG | MLOG_ERROR | MLOG_NOLOCK, \ "stream_set_" #field_name "(): " \ - "foreign stream (pid %d) " \ - "not permitted to update this stream (pid %d)\n", \ - mypid, (pid)); \ + "foreign stream (tid %lu) " \ + "not permitted to update this stream (tid %lu)\n",\ + mytid, (tid)); \ return; \ } \ \ lock(); \ - p = stream_find( (pid), states, N(states) ); \ + p = stream_find( (tid), states, N(states) ); \ if (p) p->s_exit_ ## field_name = (value); \ unlock(); -void stream_set_code( pid_t pid, int exit_code ) +void stream_set_code( pthread_t tid, int exit_code ) { - stream_set( code, pid, exit_code ); + stream_set( code, tid, exit_code ); } -void stream_set_return( pid_t pid, rv_t rv ) +void stream_set_return( pthread_t tid, rv_t rv ) { - stream_set( return, pid, rv ); + stream_set( return, tid, rv ); } -void stream_set_hint( pid_t pid, rv_t rv ) +void stream_set_hint( pthread_t tid, rv_t rv ) { - stream_set( hint, pid, rv ); + stream_set( hint, tid, rv ); } bool_t -stream_get_exit_status( pid_t pid, +stream_get_exit_status( pthread_t tid, stream_state_t states[], int nstates, stream_state_t *state, @@ -262,7 +252,7 @@ stream_get_exit_status( pid_t pid, spm_t *p; lock(); - p = stream_find( pid, states, nstates ); + p = stream_find( tid, states, nstates ); if (! p) goto unlock; if (state) *state = p->s_state; diff --git a/common/stream.h b/common/stream.h index 984634c..292792e 100644 --- a/common/stream.h +++ b/common/stream.h @@ -42,19 +42,19 @@ typedef enum { S_FREE, S_RUNNING, S_ZOMBIE } stream_state_t; extern void stream_init( void ); -extern void stream_register( pid_t pid, intgen_t streamix ); -extern void stream_dead( pid_t pid ); -extern void stream_free( pid_t pid ); +extern void stream_register( pthread_t tid, intgen_t streamix ); +extern void stream_dead( pthread_t tid ); +extern void stream_free( pthread_t tid ); extern int stream_find_all( stream_state_t states[], int nstates, - pid_t pids[], - int npids ); -extern intgen_t stream_getix( pid_t pid ); -extern void stream_set_code( pid_t pid, int code ); -extern void stream_set_return( pid_t pid, rv_t rv ); -extern void stream_set_hint( pid_t pid, rv_t rv ); -extern bool_t stream_exists( pid_t pid ); -extern bool_t stream_get_exit_status( pid_t pid, + pthread_t tids[], + int ntids ); +extern intgen_t stream_getix( pthread_t tid ); +extern void stream_set_code( pthread_t tid, int code ); +extern void stream_set_return( pthread_t tid, rv_t rv ); +extern void stream_set_hint( pthread_t tid, rv_t rv ); +extern bool_t stream_exists( pthread_t tid ); +extern bool_t stream_get_exit_status( pthread_t tid, stream_state_t states[], int nstates, stream_state_t *state, diff --git a/dump/Makefile b/dump/Makefile index d193f68..97879fa 100644 --- a/dump/Makefile +++ b/dump/Makefile @@ -30,7 +30,6 @@ COMMINCL = \ ts_mtio.h \ types.h \ util.h \ - sproc.h \ rec_hdr.h INVINCL = \ @@ -68,8 +67,7 @@ COMMON = \ ring.c \ stream.c \ timeutil.c \ - util.c \ - sproc.c + util.c LOCALS = \ content.c \ diff --git a/dump/content.c b/dump/content.c index 64bfe54..33f1166 100644 --- a/dump/content.c +++ b/dump/content.c @@ -1666,12 +1666,12 @@ baseuuidbypass: sigaddset( &tty_set, SIGINT ); sigaddset( &tty_set, SIGQUIT ); sigaddset( &tty_set, SIGHUP ); - sigprocmask( SIG_BLOCK, &tty_set, &orig_set ); + pthread_sigmask( SIG_BLOCK, &tty_set, &orig_set ); result = create_inv_session( gwhdrtemplatep, &fsid, mntpnt, fsdevice, subtreecnt, strmix ); - sigprocmask( SIG_SETMASK, &orig_set, NULL ); + pthread_sigmask( SIG_SETMASK, &orig_set, NULL ); if ( !result ) { return BOOL_FALSE; diff --git a/restore/Makefile b/restore/Makefile index ce3d6b4..c6f3f25 100644 --- a/restore/Makefile +++ b/restore/Makefile @@ -25,7 +25,6 @@ COMMINCL = \ qlock.h \ rec_hdr.h \ ring.h \ - sproc.h \ stream.h \ timeutil.h \ ts_mtio.h \ @@ -64,7 +63,6 @@ COMMON = \ path.c \ qlock.c \ ring.c \ - sproc.c \ stream.c \ timeutil.c \ util.c diff --git a/restore/content.c b/restore/content.c index 8dfa456..0108a40 100644 --- a/restore/content.c +++ b/restore/content.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "types.h" #include "timeutil.h" @@ -2227,7 +2228,7 @@ content_stream_restore( ix_t thrdix ) #if DEBUG_DUMPSTREAMS { static int count[STREAM_MAX] = {0}; - intgen_t streamix = stream_getix( getpid() ); + intgen_t streamix = stream_getix( pthread_self() ); if (++(count[streamix]) == 30) { mlog( MLOG_TRACE, "still waiting for dirs to be restored\n"); @@ -2390,7 +2391,7 @@ content_stream_restore( ix_t thrdix ) #if DEBUG_DUMPSTREAMS { static int count[STREAM_MAX] = {0}; - intgen_t streamix = stream_getix( getpid() ); + intgen_t streamix = stream_getix( pthread_self() ); if (++(count[streamix]) == 30) { mlog( MLOG_NORMAL, "still waiting for dirs post-processing\n"); -- 1.7.0.4 From wu.bo@cn.fujitsu.com Wed Nov 2 22:06:34 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA336Xkv223464 for ; Wed, 2 Nov 2011 22:06:34 -0500 X-ASG-Debug-ID: 1320289591-2f5700ce0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3EF2E1000B26 for ; Wed, 2 Nov 2011 20:06:31 -0700 (PDT) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id 5czU2twXUzVRxwOF for ; Wed, 02 Nov 2011 20:06:31 -0700 (PDT) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id 361EF170135; Thu, 3 Nov 2011 11:06:30 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pA336Smr008254; Thu, 3 Nov 2011 11:06:29 +0800 Received: from localhost.localdomain ([10.167.225.174]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011110311063345-40403 ; Thu, 3 Nov 2011 11:06:33 +0800 Message-ID: <4EB20505.7070005@cn.fujitsu.com> Date: Thu, 03 Nov 2011 11:05:41 +0800 From: WuBo User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: linux-fsdevel@vger.kernel.org, Linux Btrfs , xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/3] xfstests: Add a group of reservation space test Subject: [PATCH 0/3] xfstests: Add a group of reservation space test X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-03 11:06:33, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-03 11:06:35, Serialize complete at 2011-11-03 11:06:35 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1320289592 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0404 1.0000 -1.7607 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.76 X-Barracuda-Spam-Status: No, SCORE=-1.76 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79166 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This patch set add a group of reservation space test. Especailly for btrfs. It includes three parts: copy workload, prealloc and write posix. For test 264, I hope it's usefull for Josef's reserve improve work. For test 265 and 266, the current btrfs is not pass yet. TO avoid fill the huge disk, I just resize the filesystem size which NOT all filesystems supportted. Here I just make these tests support btrfs only, but it's can ream to ext3/4 if needed. Wu Bo (3): xfstests 264: add a copy and reserve test xfstests 265: add a prealloc and reserve test xfstests 266: add a write and reserve test 264 | 158 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 264.out | 6 ++ 265 | 107 ++++++++++++++++++++++++++++++++++++++++++ 265.out | 5 ++ 266 | 104 +++++++++++++++++++++++++++++++++++++++++ 266.out | 5 ++ group | 3 + 7 files changed, 388 insertions(+), 0 deletions(-) create mode 100755 264 create mode 100644 264.out create mode 100755 265 create mode 100644 265.out create mode 100755 266 create mode 100644 266.out -- 1.7.3.1 From wu.bo@cn.fujitsu.com Wed Nov 2 22:09:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA339qr8223641 for ; Wed, 2 Nov 2011 22:09:52 -0500 X-ASG-Debug-ID: 1320289790-2f4400e40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BFA3F1000B40 for ; Wed, 2 Nov 2011 20:09:50 -0700 (PDT) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id kFEWbfJ8WUzAQZ9E for ; Wed, 02 Nov 2011 20:09:50 -0700 (PDT) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id AB18F17011B; Thu, 3 Nov 2011 11:09:44 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pA339gLD008429; Thu, 3 Nov 2011 11:09:43 +0800 Received: from localhost.localdomain ([10.167.225.174]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011110311094747-40448 ; Thu, 3 Nov 2011 11:09:47 +0800 Message-ID: <4EB205C7.6010906@cn.fujitsu.com> Date: Thu, 03 Nov 2011 11:08:55 +0800 From: WuBo User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: linux-fsdevel@vger.kernel.org, Linux Btrfs , xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/3] xfstests 264: add a copy and reserve test Subject: [PATCH 1/3] xfstests 264: add a copy and reserve test References: <4EB20505.7070005@cn.fujitsu.com> In-Reply-To: <4EB20505.7070005@cn.fujitsu.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-03 11:09:47, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-03 11:09:49, Serialize complete at 2011-11-03 11:09:49 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1320289791 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79166 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This test is a stress test. It creates a set of threads for coping small files into disk. I use a 2G disk for test, the ENOSPC arises usually but the disk is not full under kenerl 3.0 with intel64. Signed-off-by: Wu Bo --- 264 | 158 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 264.out | 6 ++ group | 1 + 3 files changed, 165 insertions(+), 0 deletions(-) create mode 100755 264 create mode 100644 264.out diff --git a/264 b/264 new file mode 100755 index 0000000..8df56c2 --- /dev/null +++ b/264 @@ -0,0 +1,158 @@ +#! /bin/bash +# FS QA Test No. 264 +# +# reservation test with heavy cp workload +# +#----------------------------------------------------------------------- +# Copyright (c) 2011-2012 Fujitsu, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +#creator +owner=wu.bo@cn.fujitsu.com + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=0 # success is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -rf $TEST_DIR/* $tmp.* + + if [ $_resize -eq 1 ] + then + btrfs filesystem resize ${_old}B $TEST_DIR > /dev/null 2>&1 + fi + + _cleanup_testdir +} + +. ./common.rc +. ./common.filter + +threads=0 # will be set later +count=1 + +_threads_set() +{ + _cpu_num=`cat /proc/cpuinfo | grep "processor" | wc -l` + threads=$(( $_cpu_num * 50 )) + if [ $threads -gt 200 ] + then + threads=200 + fi + + echo "create $threads threads to run..." +} + +_file_create() +{ + _i=0 + + if ! mkdir $TEST_DIR/origin + then + echo "mkdir origin err" + status=1 + exit + fi + + cd $TEST_DIR/origin + + _disksize=`df --block-size=1 | grep $TEST_DEV | awk '{print $2}'` + _disksize=$(( $_disksize / 3 )) + _num=$(( $_disksize / $count / $threads / 4096 )) + _count=$count + while [ $_i -lt $_num ] + do + dd if=/dev/zero of=file_$_i bs=4096 count=$_count > /dev/null 2>&1 + _i=$(( $_i + 1 )) + done + + cd $here +} + +_porter() +{ + _suffix=$1 + + if ! mkdir $TEST_DIR/sub_$_suffix + then + echo "mkdir sub_xxx err" + status=1 + exit + fi + + cp -r $TEST_DIR/origin $TEST_DIR/sub_$_suffix + + sync +} + +_do_workload() +{ + _pid=1 + + rm -rf $TEST_DIR/* + + _threads_set + _file_create + + _threads=$threads + + while [ $_pid -lt $_threads ] + do + _porter $_pid & + + _pid=$(( $_pid + 1 )) + done + + wait +} + +# real QA test starts here +_supported_fs btrfs +_supported_os IRIX Linux + +_setup_testdir +_check_test_fs + +echo "------------------------------" +echo "start the workload" +echo "------------------------------" + +_resize=0 +_new=$(( 2 * 1024 * 1024 * 1024 )) # 2G +_old=`df --block-size=1 | grep $TEST_DEV | awk '{print $2}'` +if [ $_new -lt $_old ] +then + btrfs filesystem resize ${_new}B $TEST_DIR > /dev/null 2>&1 + if [ $? -ne 0 ] + then + echo "btrfs filesystem resize err" + status=1 + exit + fi + _resize=1 +fi + +_do_workload + +echo "done" +exit diff --git a/264.out b/264.out new file mode 100644 index 0000000..b218578 --- /dev/null +++ b/264.out @@ -0,0 +1,6 @@ +QA output created by 264 +------------------------------ +start the workload +------------------------------ +create 100 threads to run... +done diff --git a/group b/group index 2a8970c..301aaec 100644 --- a/group +++ b/group @@ -377,3 +377,4 @@ deprecated 261 auto quick quota 262 auto quick quota 263 rw auto quick +264 auto rw -- 1.7.3.1 From wu.bo@cn.fujitsu.com Wed Nov 2 22:09:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA339tWM223655 for ; Wed, 2 Nov 2011 22:09:56 -0500 X-ASG-Debug-ID: 1320289793-196701d80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EB0421000B42 for ; Wed, 2 Nov 2011 20:09:53 -0700 (PDT) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id 1JFxKAODt7bsjt8F for ; Wed, 02 Nov 2011 20:09:53 -0700 (PDT) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id C3C66170135; Thu, 3 Nov 2011 11:09:52 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pA339lF0008451; Thu, 3 Nov 2011 11:09:50 +0800 Received: from localhost.localdomain ([10.167.225.174]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011110311095548-40459 ; Thu, 3 Nov 2011 11:09:55 +0800 Message-ID: <4EB205CF.8040202@cn.fujitsu.com> Date: Thu, 03 Nov 2011 11:09:03 +0800 From: WuBo User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: linux-fsdevel@vger.kernel.org, Linux Btrfs , xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/3] xfstests 266: add a write and reserve test Subject: [PATCH 3/3] xfstests 266: add a write and reserve test References: <4EB20505.7070005@cn.fujitsu.com> In-Reply-To: <4EB20505.7070005@cn.fujitsu.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-03 11:09:55, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-03 11:09:57, Serialize complete at 2011-11-03 11:09:57 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1320289794 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79166 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This test is for write-posix test. If writing a file when the disk is almost full, the posix wants the call to write as much as possible but not none. quote the POSIX: If a write() requests that more bytes be written than there is room for (for example, [XSI] [Option Start] the process' file size limit or [Option End] the physical end of a medium), only as many bytes as there is room for shall be written. For example, suppose there is space for 20 bytes more in a file before reaching a limit. A write of 512 bytes will return 20. The next write of a non-zero number of bytes would give a failure return (except as noted below). Signed-off-by: Wu Bo --- 266 | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 266.out | 5 +++ group | 1 + 3 files changed, 110 insertions(+), 0 deletions(-) create mode 100755 266 create mode 100644 266.out diff --git a/266 b/266 new file mode 100755 index 0000000..6331ff8 --- /dev/null +++ b/266 @@ -0,0 +1,104 @@ +#! /bin/bash +# FS QA Test No. 266 +# +# The posix write test. when write size is larger than disk free size, +# should write as more as possible +# +#----------------------------------------------------------------------- +# Copyright (c) 2011-2012 Fujitsu, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +#creator +owner=wu.bo@cn.fujitsu.com + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=0 # success is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -f $TEST_DIR/* $tmp.* + + if [ $_resize -eq 1 ] + then + btrfs filesystem resize ${_old}B $TEST_DIR > /dev/null 2>&1 + fi + + _cleanup_testdir +} + +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs btrfs +_supported_os IRIX Linux + +_setup_testdir +_check_test_fs + +echo "------------------------------" +echo "write lack test" +echo "------------------------------" + +_resize=0 +_new=$(( 1 * 1024 * 1024 * 1024 )) # 1G +_old=`df --block-size=1 | grep $TEST_DEV | awk '{print $2}'` +if [ $_new -lt $_old ] +then + btrfs filesystem resize ${_new}B $TEST_DIR > /dev/null 2>&1 + if [ $? -ne 0 ] + then + echo "btrfs filesystem resize err" + status=1 + exit + fi + _resize=1 +fi + +rm -rf $TEST_DIR/* +cd $TEST_DIR +dd if=/dev/zero of=tmp1 bs=4K count=1 > /dev/null 2>&1 +if [ $? -ne 0 ] +then + echo "create file err" + status=1 + exit +fi + +dd if=/dev/zero of=tmp2 bs=1M > /dev/null 2>&1 +dd if=/dev/zero of=tmp3 bs=4K > /dev/null 2>&1 +sync + +rm -f tmp1 +sync + +dd if=/dev/zero of=tmp1 bs=8K count=1 > /dev/null 2>&1 +_filesize=`du tmp1 | awk '{print $1}'` +if [ $_filesize -ne 4 ] +then + echo "write file err" + status=1 + exit +fi + +echo "done" +exit diff --git a/266.out b/266.out new file mode 100644 index 0000000..ce3340c --- /dev/null +++ b/266.out @@ -0,0 +1,5 @@ +QA output created by 266 +------------------------------ +write lack test +------------------------------ +done diff --git a/group b/group index f76ab8c..cf93ef9 100644 --- a/group +++ b/group @@ -379,3 +379,4 @@ deprecated 263 rw auto quick 264 auto rw 265 auto rw +266 auto rw -- 1.7.3.1 From wu.bo@cn.fujitsu.com Wed Nov 2 22:09:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_24, J_CHICKENPOX_47 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA339vNl223666 for ; Wed, 2 Nov 2011 22:09:57 -0500 X-ASG-Debug-ID: 1320289795-2f5600d00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A148C1000B45 for ; Wed, 2 Nov 2011 20:09:55 -0700 (PDT) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id jgS0xS33c1hTzPIA for ; Wed, 02 Nov 2011 20:09:55 -0700 (PDT) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id 005C3170134; Thu, 3 Nov 2011 11:09:49 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pA339lEx008451; Thu, 3 Nov 2011 11:09:48 +0800 Received: from localhost.localdomain ([10.167.225.174]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011110311095266-40456 ; Thu, 3 Nov 2011 11:09:52 +0800 Message-ID: <4EB205CC.6010509@cn.fujitsu.com> Date: Thu, 03 Nov 2011 11:09:00 +0800 From: WuBo User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: linux-fsdevel@vger.kernel.org, Linux Btrfs , xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/3] xfstests 265: add a prealloc and reserve test Subject: [PATCH 2/3] xfstests 265: add a prealloc and reserve test References: <4EB20505.7070005@cn.fujitsu.com> In-Reply-To: <4EB20505.7070005@cn.fujitsu.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-03 11:09:52, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-03 11:09:55, Serialize complete at 2011-11-03 11:09:55 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1320289796 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79166 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This test is for preallocation test. If the disk is full, just with a prealloc file has some free space that prealloc early. We need to check whether the write to the free space is success or not. Signed-off-by: Wu Bo --- 265 | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 265.out | 5 +++ group | 1 + 3 files changed, 113 insertions(+), 0 deletions(-) create mode 100755 265 create mode 100644 265.out diff --git a/265 b/265 new file mode 100755 index 0000000..13c3520 --- /dev/null +++ b/265 @@ -0,0 +1,107 @@ +#! /bin/bash +# FS QA Test No. 265 +# +# preallocation test +# +#----------------------------------------------------------------------- +# Copyright (c) 2011-2012 Fujitsu, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +#creator +owner=wu.bo@cn.fujitsu.com + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=0 # success is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -f $TEST_DIR/* $tmp.* + + if [ $_resize -eq 1 ] + then + btrfs filesystem resize ${_old}B $TEST_DIR > /dev/null 2>&1 + fi + + _cleanup_testdir +} + +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs btrfs +_supported_os IRIX Linux + +_setup_testdir +_check_test_fs + +echo "------------------------------" +echo "preallocation test" +echo "------------------------------" + +_resize=0 +_new=$(( 1 * 1024 * 1024 * 1024 )) # 1G +_old=`df --block-size=1 | grep $TEST_DEV | awk '{print $2}'` +if [ $_new -lt $_old ] +then + btrfs filesystem resize ${_new}B $TEST_DIR > /dev/null 2>&1 + if [ $? -ne 0 ] + then + echo "btrfs filesystem resize err" + status=1 + exit + fi + _resize=1 +fi + +rm -rf $TEST_DIR/* +cd $TEST_DIR +dd if=/dev/zero of=test bs=4K count=1 > /dev/null 2>&1 +if [ $? -ne 0 ] +then + echo "create file err" + status=1 + exit +fi + +fallocate -n -o 4K -l 1M test > /dev/null 2>&1 +if [ $? -ne 0 ] +then + echo "fallocate file err" + status=1 + exit +fi + +dd if=/dev/zero of=tmp1 bs=1M > /dev/null 2>&1 +dd if=/dev/zero of=tmp2 bs=4K > /dev/null 2>&1 +sync + +dd if=/dev/zero of=test seek=1 bs=4K count=2 conv=notrunc > /dev/null 2>&1 +if [ $? -ne 0 ] +then + echo "fill prealloc range err" + status=1 + exit +fi + +echo "done" +exit diff --git a/265.out b/265.out new file mode 100644 index 0000000..202ca6a --- /dev/null +++ b/265.out @@ -0,0 +1,5 @@ +QA output created by 265 +------------------------------ +preallocation test +------------------------------ +done diff --git a/group b/group index 301aaec..f76ab8c 100644 --- a/group +++ b/group @@ -378,3 +378,4 @@ deprecated 262 auto quick quota 263 rw auto quick 264 auto rw +265 auto rw -- 1.7.3.1 From amit.sahrawat83@gmail.com Thu Nov 3 01:07:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA36777C239405 for ; Thu, 3 Nov 2011 01:07:08 -0500 X-ASG-Debug-ID: 1320300425-4cc3007c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B8586FDF726 for ; Wed, 2 Nov 2011 23:07:05 -0700 (PDT) Received: from mail-fx0-f53.google.com (mail-fx0-f53.google.com [209.85.161.53]) by cuda.sgi.com with ESMTP id e1lraA5qKhpdMJMO for ; Wed, 02 Nov 2011 23:07:05 -0700 (PDT) Received: by faai28 with SMTP id i28so1297626faa.26 for ; Wed, 02 Nov 2011 23:07:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=QugE0D6fBpobddBtCAoGKcNeVtiN2FphR74kEwGh1is=; b=fT/Myr33+TMH+5iiUgMsDpcFnsOty9gQQhc1n2wGNQ3rMgBMQxTFIgSanX05BOIxlP e6NMMe0XIoFCNnjP0zPkuOKeK5dtpbWcAaLg6s1C9SqT21jBk1BtQkaEH1qpR8rCzYaP u2L0HBc0Sc3H9woUk0PwEcao6v/FUllz5babk= MIME-Version: 1.0 Received: by 10.223.76.27 with SMTP id a27mr14005973fak.12.1320300423454; Wed, 02 Nov 2011 23:07:03 -0700 (PDT) Received: by 10.152.10.35 with HTTP; Wed, 2 Nov 2011 23:07:03 -0700 (PDT) Date: Thu, 3 Nov 2011 11:37:03 +0530 Message-ID: X-ASG-Orig-Subj: [Patch] xfs: serialise unaligned direct IOs Subject: [Patch] xfs: serialise unaligned direct IOs From: Amit Sahrawat To: Christoph Hellwig , Dave Chinner , xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-fx0-f53.google.com[209.85.161.53] X-Barracuda-Start-Time: 1320300426 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79178 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is needed for long term kernel 2.6.35.14. Please let me know for any changes/suggestions. Thanks & Regards, Amit Sahrawat xfs: serialise unaligned direct IOs This patch published in 2.6.38 kernel(Original reference http://oss.sgi.com/archives/xfs/2011-01/msg00013.html), but can not be applied to 2.6.35 kernel directly, because of the absence of required function, its reimplmented to resolve xfstest test 240 fail. When two concurrent unaligned, non-overlapping direct IOs are issued to the same block, the direct Io layer will race to zero the block. The result is that one of the concurrent IOs will overwrite data written by the other IO with zeros. This is demonstrated by the xfsqa test 240. To avoid this problem, serialise all unaligned direct IOs to an inode with a big hammer. We need a big hammer approach as we need to serialise AIO as well, so we can't just block writes on locks. Hence, the big hammer is calling xfs_ioend_wait() while holding out other unaligned direct IOs from starting. We don't bother trying to serialised aligned vs unaligned IOs as they are overlapping IO and the result of concurrent overlapping IOs is undefined - the result of either IO is a valid result so we let them race. Hence we only penalise unaligned IO, which already has a major overhead compared to aligned IO so this isn't a major problem. diff -Nurp linux-Orig/fs/xfs/linux-2.6/xfs_file.c linux-Updated/fs/xfs/linux-2.6/xfs_file.c --- linux-Orig/fs/xfs/linux-2.6/xfs_file.c 2011-10-28 12:10:52.000000000 +0530 +++ linux-Updated/fs/xfs/linux-2.6/xfs_file.c 2011-10-29 12:34:45.000000000 +0530 @@ -587,6 +587,7 @@ xfs_file_aio_write( xfs_fsize_t isize, new_size; int iolock; size_t ocount = 0, count; + int unaligned_io = 0; int need_i_mutex; XFS_STATS_INC(xs_write_calls); @@ -641,7 +642,10 @@ start: return XFS_ERROR(-EINVAL); } - if (!need_i_mutex && (mapping->nrpages || pos > ip->i_size)) { + if ((pos & mp->m_blockmask) || ((pos + count) & mp->m_blockmask)) + unaligned_io = 1; + + if (!need_i_mutex && ( unaligned_io || mapping->nrpages || pos > ip->i_size)) { xfs_iunlock(ip, XFS_ILOCK_EXCL|iolock); iolock = XFS_IOLOCK_EXCL; need_i_mutex = 1; @@ -700,11 +704,15 @@ start: } if (need_i_mutex) { - /* demote the lock now the cached pages are gone */ - xfs_ilock_demote(ip, XFS_IOLOCK_EXCL); + if (unaligned_io) + xfs_ioend_wait(ip); + /* demote the lock now the cached pages are gone if we can */ + else { + xfs_ilock_demote(ip, XFS_IOLOCK_EXCL); + iolock = XFS_IOLOCK_SHARED; + } mutex_unlock(&inode->i_mutex); - iolock = XFS_IOLOCK_SHARED; need_i_mutex = 0; } From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 01:55:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA36tT43242929 for ; Thu, 3 Nov 2011 01:55:29 -0500 X-ASG-Debug-ID: 1320303328-721501ee0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id ACF361CDD227 for ; Wed, 2 Nov 2011 23:55:28 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id PHJCrHHco6G74ofu for ; Wed, 02 Nov 2011 23:55:28 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLrCv-0002kQ-4A; Thu, 03 Nov 2011 06:55:25 +0000 Date: Thu, 3 Nov 2011 02:55:25 -0400 From: Christoph Hellwig To: WuBo Cc: linux-fsdevel@vger.kernel.org, Linux Btrfs , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/3] xfstests 264: add a copy and reserve test Subject: Re: [PATCH 1/3] xfstests 264: add a copy and reserve test Message-ID: <20111103065525.GA6800@infradead.org> References: <4EB20505.7070005@cn.fujitsu.com> <4EB205C7.6010906@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4EB205C7.6010906@cn.fujitsu.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320303328 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79181 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 03, 2011 at 11:08:55AM +0800, WuBo wrote: > This test is a stress test. It creates a set of threads for coping small files > into disk. I use a 2G disk for test, the ENOSPC arises usually but the disk is > not full under kenerl 3.0 with intel64. It seems like you really want to use _scratch_mkfs_sized instead of the btrfs-specific resize option and make the test generic. Also we already have used up these test numbers in the xfstests-dev repository, and I will commit another batch of tests today. From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 02:02:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA372qBX243522 for ; Thu, 3 Nov 2011 02:02:52 -0500 X-ASG-Debug-ID: 1320303769-3ad900010000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6E2E31CDD393 for ; Thu, 3 Nov 2011 00:02:49 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id lOIZQyT3Kk4GWXMC for ; Thu, 03 Nov 2011 00:02:49 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLrK2-0003m6-Qu; Thu, 03 Nov 2011 07:02:46 +0000 Date: Thu, 3 Nov 2011 03:02:46 -0400 From: Christoph Hellwig To: Amit Sahrawat Cc: Christoph Hellwig , Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [Patch] xfs: serialise unaligned direct IOs Subject: Re: [Patch] xfs: serialise unaligned direct IOs Message-ID: <20111103070246.GA10579@infradead.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320303771 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79181 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 03, 2011 at 11:37:03AM +0530, Amit Sahrawat wrote: > This is needed for long term kernel 2.6.35.14. > Please let me know for any changes/suggestions. It sounds like a fine candidate to backport, although the context differs a lot from the actual changes commited to mainline. A few comments below: > they are overlapping IO and the result of concurrent overlapping IOs > is undefined - the result of either IO is a valid result so we let > them race. Hence we only penalise unaligned IO, which already has a > major overhead compared to aligned IO so this isn't a major problem. > You probably should keep the original Signoff and reviewed-by tags, and add your editor note on the top into [ ] brackets. > + if (!need_i_mutex && ( unaligned_io || mapping->nrpages || pos > > ip->i_size)) { no space after the opening brace please, and split overly-long lines into two: if (!need_i_mutex && (unaligned_io || mapping->nrpages || pos > ip->i_size)) { > if (need_i_mutex) { > - /* demote the lock now the cached pages are gone */ > - xfs_ilock_demote(ip, XFS_IOLOCK_EXCL); > + if (unaligned_io) > + xfs_ioend_wait(ip); > + /* demote the lock now the cached pages are gone if we can */ > + else { > + xfs_ilock_demote(ip, XFS_IOLOCK_EXCL); > + iolock = XFS_IOLOCK_SHARED; > + } Please use the comment that was used upstream here: /* * If we are doing unaligned IO, wait for all other IO * to drain, otherwise demote the lock if we had to * flush cached pages. */ > mutex_unlock(&inode->i_mutex); > > - iolock = XFS_IOLOCK_SHARED; > need_i_mutex = 0; You also need to make the i_mutex unlock and need_i_mutex update conditional here, otherwise you still serialize all O_DIRECT writes. From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 02:10:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA37AvZp244154 for ; Thu, 3 Nov 2011 02:10:57 -0500 X-ASG-Debug-ID: 1320304255-096e01460000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 29BDA21BC0A; Thu, 3 Nov 2011 00:10:55 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 5h9yRudUaqbHFPXg; Thu, 03 Nov 2011 00:10:55 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLrRu-0005jv-VT; Thu, 03 Nov 2011 07:10:55 +0000 Date: Thu, 3 Nov 2011 03:10:54 -0400 From: Christoph Hellwig To: Bill Kendall Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/8] xfsdump: implement lock abstraction with pthreads Subject: Re: [PATCH 3/8] xfsdump: implement lock abstraction with pthreads Message-ID: <20111103071054.GB10579@infradead.org> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> <1320268254-20583-4-git-send-email-wkendall@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320268254-20583-4-git-send-email-wkendall@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320304256 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79181 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > +struct qsem { > + ix_t qs_count; > + /* current count of this semaphore > + */ > + ix_t qs_waiters; > + /* number of threads waiting on semaphore > + */ > + pthread_mutex_t qs_mutex; > + pthread_cond_t qs_cond; > +}; > +typedef struct qsem qsem_t; Can't you use Posix Semaphores directly? See http://www.csc.villanova.edu/~mdamian/threads/posixsem.html for a quick introduction. From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 03:21:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA38LbGL249663 for ; Thu, 3 Nov 2011 03:21:37 -0500 X-ASG-Debug-ID: 1320308495-3ad501020000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 82F671CDD597; Thu, 3 Nov 2011 01:21:36 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id BoFCOYRfnhQxhfgK; Thu, 03 Nov 2011 01:21:36 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLsYJ-0003DR-KJ; Thu, 03 Nov 2011 08:21:35 +0000 Date: Thu, 3 Nov 2011 04:21:35 -0400 From: Christoph Hellwig To: Bill Kendall Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/8] xfsdump: link with libpthread Subject: Re: [PATCH 1/8] xfsdump: link with libpthread Message-ID: <20111103082135.GA11854@infradead.org> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> <1320268254-20583-2-git-send-email-wkendall@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320268254-20583-2-git-send-email-wkendall@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320308496 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 02, 2011 at 04:10:47PM -0500, Bill Kendall wrote: > This patch changes xfsdump/xfsrestore to link with libpthread in > preparation for enabling multi-stream support. The libpthread checks > are the same as those used in xfsprogs. Looks good, Reviewed-by: Christoph Hellwig From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 03:22:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA38MomO249750 for ; Thu, 3 Nov 2011 03:22:50 -0500 X-ASG-Debug-ID: 1320308568-2d04012f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5E6F71CDD5B9; Thu, 3 Nov 2011 01:22:49 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id t5BKXm2LkMGHPVS1; Thu, 03 Nov 2011 01:22:49 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLsZU-0003Sq-Ni; Thu, 03 Nov 2011 08:22:48 +0000 Date: Thu, 3 Nov 2011 04:22:48 -0400 From: Christoph Hellwig To: Bill Kendall Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/8] xfsdump: remove multi-stream synchronous dir dump Subject: Re: [PATCH 2/8] xfsdump: remove multi-stream synchronous dir dump Message-ID: <20111103082248.GB11854@infradead.org> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> <1320268254-20583-3-git-send-email-wkendall@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320268254-20583-3-git-send-email-wkendall@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320308569 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 02, 2011 at 04:10:48PM -0500, Bill Kendall wrote: > When doing multi-stream dumps, the directories are dumped by each > stream in lock-step fashion. A stream backs up a given directory, > then waits for all others to finish that directory, then they all > move on to the next one. During restore a single stream is chosen to > apply the directory dump. > > This patch changes xfsdump so that only one stream dumps the > directories. The other streams begin dumping files immediately. > This results in a faster backup, which is presumably why multiple > streams are being used in the first place. > > It also removes the barrier routines in qlock.c as they were only > used by the "SYNCDIR" code. > > Signed-off-by: Bill Kendall Looks good, Reviewed-by: Christoph Hellwig From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 03:30:15 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA38UErv250445 for ; Thu, 3 Nov 2011 03:30:14 -0500 X-ASG-Debug-ID: 1320309012-4cd102a80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 05C221001FA2; Thu, 3 Nov 2011 01:30:12 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Z8RHnDHWuggIWl9o; Thu, 03 Nov 2011 01:30:12 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLsge-0005cy-7n; Thu, 03 Nov 2011 08:30:12 +0000 Date: Thu, 3 Nov 2011 04:30:12 -0400 From: Christoph Hellwig To: Bill Kendall Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/8] xfsdump: simplify qlock ordinal bitmap Subject: Re: [PATCH 4/8] xfsdump: simplify qlock ordinal bitmap Message-ID: <20111103083012.GC11854@infradead.org> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> <1320268254-20583-5-git-send-email-wkendall@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320268254-20583-5-git-send-email-wkendall@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320309014 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79186 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 03:31:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA38VCsd250508 for ; Thu, 3 Nov 2011 03:31:13 -0500 X-ASG-Debug-ID: 1320309071-0969026d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3EA2021C033; Thu, 3 Nov 2011 01:31:11 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id UHiEQ2uqz13cM1vA; Thu, 03 Nov 2011 01:31:11 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLshb-0005fT-Jv; Thu, 03 Nov 2011 08:31:11 +0000 Date: Thu, 3 Nov 2011 04:31:11 -0400 From: Christoph Hellwig To: Bill Kendall Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/8] xfsdump: convert IRIX sproc threads to pthreads Subject: Re: [PATCH 5/8] xfsdump: convert IRIX sproc threads to pthreads Message-ID: <20111103083111.GD11854@infradead.org> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> <1320268254-20583-6-git-send-email-wkendall@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320268254-20583-6-git-send-email-wkendall@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320309072 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 03:32:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA38Wmc9250663 for ; Thu, 3 Nov 2011 03:32:48 -0500 X-ASG-Debug-ID: 1320309167-6f04037f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BF0DA1CDD948; Thu, 3 Nov 2011 01:32:47 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 3xTJ8LXxf3LcMfz0; Thu, 03 Nov 2011 01:32:47 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLsj9-0005hg-1S; Thu, 03 Nov 2011 08:32:47 +0000 Date: Thu, 3 Nov 2011 04:32:47 -0400 From: Christoph Hellwig To: Bill Kendall Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/8] xfsdump: process thread exit status Subject: Re: [PATCH 6/8] xfsdump: process thread exit status Message-ID: <20111103083246.GE11854@infradead.org> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> <1320268254-20583-7-git-send-email-wkendall@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320268254-20583-7-git-send-email-wkendall@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320309167 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 03:33:10 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA38XA7u250718 for ; Thu, 3 Nov 2011 03:33:10 -0500 X-ASG-Debug-ID: 1320309189-2d1001810000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CE7221CDD94C; Thu, 3 Nov 2011 01:33:09 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id pOyR4VjmDC4f6ExF; Thu, 03 Nov 2011 01:33:09 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLsjV-0005iA-81; Thu, 03 Nov 2011 08:33:09 +0000 Date: Thu, 3 Nov 2011 04:33:09 -0400 From: Christoph Hellwig To: Bill Kendall Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/8] xfsdump: path lookup cache must be thread specific Subject: Re: [PATCH 7/8] xfsdump: path lookup cache must be thread specific Message-ID: <20111103083309.GF11854@infradead.org> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> <1320268254-20583-8-git-send-email-wkendall@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320268254-20583-8-git-send-email-wkendall@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320309189 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0017 1.0000 -2.0097 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.91 X-Barracuda-Spam-Status: No, SCORE=-1.91 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 02, 2011 at 04:10:53PM -0500, Bill Kendall wrote: > The xfsrestore path lookup routine (maps an ino + generation number to a > pathname) contains a cache for fast lookups of consecutive files in the > same parent directory. This cache either needs to be protected by a lock > or a cache is needed per thread. I took the latter approach since it > doesn't add lock contention and it increases the cache hit rate (it's > relatively unlikely that each stream is processing files in the same > directory). > > Signed-off-by: Bill Kendall Looks good, Reviewed-by: Christoph Hellwig From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 03:36:15 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA38aEFj250977 for ; Thu, 3 Nov 2011 03:36:15 -0500 X-ASG-Debug-ID: 1320309373-076b019c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 12D65F420AF; Thu, 3 Nov 2011 01:36:13 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id tjGSRWuF37HHfYmX; Thu, 03 Nov 2011 01:36:13 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLsmS-0006br-WA; Thu, 03 Nov 2011 08:36:13 +0000 Date: Thu, 3 Nov 2011 04:36:12 -0400 From: Christoph Hellwig To: Bill Kendall Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 8/8] xfsdump: enable multiple streams Subject: Re: [PATCH 8/8] xfsdump: enable multiple streams Message-ID: <20111103083612.GG11854@infradead.org> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> <1320268254-20583-9-git-send-email-wkendall@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320268254-20583-9-git-send-email-wkendall@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320309374 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79188 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From wu.bo@cn.fujitsu.com Thu Nov 3 04:06:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3965PU253331 for ; Thu, 3 Nov 2011 04:06:05 -0500 X-ASG-Debug-ID: 1320311161-2d04020f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 37ED31CDCBCD for ; Thu, 3 Nov 2011 02:06:02 -0700 (PDT) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id sRKMe4YLRaBMTvFu for ; Thu, 03 Nov 2011 02:06:02 -0700 (PDT) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id 42359170168; Thu, 3 Nov 2011 17:06:00 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pA395s4K014533; Thu, 3 Nov 2011 17:05:59 +0800 Received: from localhost.localdomain ([10.167.225.174]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011110316054504-43202 ; Thu, 3 Nov 2011 16:05:45 +0800 Message-ID: <4EB24B1B.2030304@cn.fujitsu.com> Date: Thu, 03 Nov 2011 16:04:43 +0800 From: WuBo User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: Christoph Hellwig CC: linux-fsdevel@vger.kernel.org, Linux Btrfs , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/3] xfstests 264: add a copy and reserve test Subject: Re: [PATCH 1/3] xfstests 264: add a copy and reserve test References: <4EB20505.7070005@cn.fujitsu.com> <4EB205C7.6010906@cn.fujitsu.com> <20111103065525.GA6800@infradead.org> In-Reply-To: <20111103065525.GA6800@infradead.org> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-03 16:05:45, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-03 17:06:05, Serialize complete at 2011-11-03 17:06:05 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1320311164 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0039 1.0000 -1.9954 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79189 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/03/2011 02:55 PM, Christoph Hellwig wrote: > On Thu, Nov 03, 2011 at 11:08:55AM +0800, WuBo wrote: >> This test is a stress test. It creates a set of threads for coping small files >> into disk. I use a 2G disk for test, the ENOSPC arises usually but the disk is >> not full under kenerl 3.0 with intel64. > > It seems like you really want to use _scratch_mkfs_sized instead of the > btrfs-specific resize option and make the test generic. Also we already OK, thanks for _scratch_mkfs_sized, It's will make these tests generic. > have used up these test numbers in the xfstests-dev repository, and I > will commit another batch of tests today. I will change my test numbers in next version. thanks, wubo > > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > From rjevskiy@gmail.com Thu Nov 3 04:34:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA39YnJ5255286 for ; Thu, 3 Nov 2011 04:34:49 -0500 X-ASG-Debug-ID: 1320312887-500a026d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4F98821C649 for ; Thu, 3 Nov 2011 02:34:47 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id vUgnUAMuzMNeQQdR for ; Thu, 03 Nov 2011 02:34:47 -0700 (PDT) Received: by bkbzs8 with SMTP id zs8so1117298bkb.26 for ; Thu, 03 Nov 2011 02:34:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version:content-type; bh=dLwsTAGlNORnbrjoR6n6sTsxLFTO7B9Pl+rQ0rbdw9Q=; b=mMHg6PAfZdA3wVQT+qmg/T9KENicR/LLGRjvXX5jv8igNf9FRyf7OPlb1jrQKfOnTz BAJOitSnVy5ABcseCxuak9YN9QGAgcDZC4NXjeX/vKB/y6yqxPkaaECDMslB9zThCkVB C7WHIlzhCcsrUMLnkPQM41X0Vl+ZBeUPvdu64= Received: by 10.204.140.129 with SMTP id i1mr7249763bku.19.1320312886902; Thu, 03 Nov 2011 02:34:46 -0700 (PDT) Received: from smtp.gmail.com (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id b20sm949411bkr.11.2011.11.03.02.34.43 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 02:34:44 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: Christoph Hellwig Cc: linux-fsdevel@vger.kernel.org, aelder@sgi.com, hch@lst.de, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/8] xfstests: add fiemap operation to fsstress Subject: Re: [PATCH 6/8] xfstests: add fiemap operation to fsstress In-Reply-To: <20111102195534.GB22500@infradead.org> References: <1319849297-3506-1-git-send-email-dmonakhov@openvz.org> <1319849297-3506-7-git-send-email-dmonakhov@openvz.org> <20111102195534.GB22500@infradead.org> User-Agent: Notmuch/0.5-69-g3e4a9d6 (http://notmuchmail.org) Emacs/23.1.1 (i486-pc-linux-gnu) Date: Thu, 03 Nov 2011 13:34:41 +0400 Message-ID: <87zkgdy2fi.fsf@dmbot.sw.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320312888 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79191 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 2 Nov 2011 15:55:34 -0400, Christoph Hellwig wrote: > On Sat, Oct 29, 2011 at 04:48:15AM +0400, Dmitry Monakhov wrote: > > Related bug: http://patchwork.ozlabs.org/patch/118863 > > > > Signed-off-by: Dmitry Monakhov > > This causes a very weird XFS failure in test 117 for me. While it > obviously is an xfs bug that you uncovered (good!) I'm a bit worried > about simply enabling operations in existing tests. Ohh. i've got what your are talking about. We can not add new ops for tests there seed is passed explicitly. And yes i've braked this, but this is because such frozen tests was written in not determined way :). Good determined test should has not just seed opt, but also explicit set of operations. All others (non determined) tests which use fsstress may benefit from new ops. So I'll redo my patch queue like this: 1) Add explicit option set for all frozen tests 2) Add new features to fssstress with non zero probability. > > Alex, Eric, Dave - should we add new tests with the new operations > Dmitry added, or is adding new ops to the existing tests fine? > -- > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From amit.sahrawat83@gmail.com Thu Nov 3 04:59:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA39xKtZ257406 for ; Thu, 3 Nov 2011 04:59:20 -0500 X-ASG-Debug-ID: 1320314359-501d03580000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CFC7221C2A4 for ; Thu, 3 Nov 2011 02:59:19 -0700 (PDT) Received: from mail-fx0-f53.google.com (mail-fx0-f53.google.com [209.85.161.53]) by cuda.sgi.com with ESMTP id tAslLzgOCSTU73F5 for ; Thu, 03 Nov 2011 02:59:19 -0700 (PDT) Received: by faai28 with SMTP id i28so1465719faa.26 for ; Thu, 03 Nov 2011 02:59:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=jj7NAS5gyURGpD3/Xooa8doRRkKaUDMIFGTzN2N+Qpk=; b=rRv7A40SV0Cy+s/2IGxoHam5l0spJ/1+x+/wp3md1wGUHsqU1kKx8xj5NCnSZrNlmh leznTEeIBqNd5l4aOcVpCz9STXfN5xeE8ZIZAEcx2lYAml0OPwOBsgvlIXPQ8MSMV1m5 Jh6E031BIOJBvJMEEDFmaL0VPxB3WZlUhGmD4= MIME-Version: 1.0 Received: by 10.223.16.82 with SMTP id n18mr15331885faa.2.1320314358758; Thu, 03 Nov 2011 02:59:18 -0700 (PDT) Received: by 10.152.10.35 with HTTP; Thu, 3 Nov 2011 02:59:18 -0700 (PDT) In-Reply-To: <20111103070246.GA10579@infradead.org> References: <20111103070246.GA10579@infradead.org> Date: Thu, 3 Nov 2011 15:29:18 +0530 Message-ID: X-ASG-Orig-Subj: Re: [Patch] xfs: serialise unaligned direct IOs Subject: Re: [Patch] xfs: serialise unaligned direct IOs From: Amit Sahrawat To: Christoph Hellwig Cc: Dave Chinner , xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-fx0-f53.google.com[209.85.161.53] X-Barracuda-Start-Time: 1320314359 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79193 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Thanks Chrisoph for the suggestions. On Thu, Nov 3, 2011 at 12:32 PM, Christoph Hellwig wrot= e: > On Thu, Nov 03, 2011 at 11:37:03AM +0530, Amit Sahrawat wrote: >> This is needed for long term kernel 2.6.35.14. >> Please let me know for any changes/suggestions. > > It sounds like a fine candidate to backport, although the context > differs a lot from the actual changes commited to mainline. =A0A few > comments below: > >> they are overlapping IO and the result of concurrent overlapping IOs >> is undefined - the result of either IO is a valid result so we let >> them race. Hence we only penalise unaligned IO, which already has a >> major overhead compared to aligned IO so this isn't a major problem. >> > > You probably should keep the original Signoff and reviewed-by tags, > and add your editor note on the top into [ ] =A0brackets. Ok, will do so in the final patch. Actually was unaware of information to keep in backported patches? > >> + =A0 =A0 =A0 =A0 =A0 =A0 if (!need_i_mutex && ( unaligned_io || mapping= ->nrpages || pos > >> ip->i_size)) { > > no space after the opening brace please, and split overly-long lines > into two: Probably running checkpatch.pl will help. > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (!need_i_mutex && > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(unaligned_io || mapping->nrpages = || pos > ip->i_size)) { > >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (need_i_mutex) { >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 /* demote the lock now the cac= hed pages are gone */ >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 xfs_ilock_demote(ip, XFS_IOLOC= K_EXCL); > >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (unaligned_io) >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 xfs_ioend_wait= (ip); >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* demote the lock now the cach= ed pages are gone if we can */ >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 else { >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 xfs_ilock_demo= te(ip, XFS_IOLOCK_EXCL); >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 iolock =3D XFS= _IOLOCK_SHARED; >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > > Please use the comment that was used upstream here: > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 * If we are doing unalign= ed IO, wait for all other IO > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 * to drain, otherwise dem= ote the lock if we had to > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 * flush cached pages. > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 */ > >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 mutex_unlock(&inode->i_mutex= ); >> >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 iolock =3D XFS_IOLOCK_SHARED; > > >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 need_i_mutex =3D 0; > > You also need to make the i_mutex unlock and need_i_mutex update > conditional here, otherwise you still serialize all O_DIRECT writes. > you mean, keeping need_i_mutex=3D0 and mutex_unlock as part of 'else' state= ment. Thanks & Regards, Amit Sahrawat From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 05:06:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3A6rid258113 for ; Thu, 3 Nov 2011 05:06:53 -0500 X-ASG-Debug-ID: 1320314812-2cfa03450000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8C86E1CDD60A for ; Thu, 3 Nov 2011 03:06:52 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id EIOvYUexDh2CzGLP for ; Thu, 03 Nov 2011 03:06:52 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLuC7-0000M5-Lo; Thu, 03 Nov 2011 10:06:47 +0000 Date: Thu, 3 Nov 2011 06:06:47 -0400 From: Christoph Hellwig To: Amit Sahrawat Cc: Christoph Hellwig , Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [Patch] xfs: serialise unaligned direct IOs Subject: Re: [Patch] xfs: serialise unaligned direct IOs Message-ID: <20111103100647.GA1002@infradead.org> References: <20111103070246.GA10579@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320314812 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0202 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79193 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 03, 2011 at 03:29:18PM +0530, Amit Sahrawat wrote: > > You probably should keep the original Signoff and reviewed-by tags, > > and add your editor note on the top into [ ] ?brackets. > Ok, will do so in the final patch. Actually was unaware of information > to keep in backported patches? The standard procedure is to keep patches basically as-is. This doesn't quite apply for your case, so I think just adding a comment in [ ] brackets on the top is the best you can do. > > You also need to make the i_mutex unlock and need_i_mutex update > > conditional here, otherwise you still serialize all O_DIRECT writes. > > > you mean, keeping need_i_mutex=0 and mutex_unlock as part of 'else' statement. Yes. From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 05:19:10 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3AJAO7259820 for ; Thu, 3 Nov 2011 05:19:10 -0500 X-ASG-Debug-ID: 1320315549-625d00360000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A2CB321C3BA; Thu, 3 Nov 2011 03:19:09 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 83cK9V38IojuyNKp; Thu, 03 Nov 2011 03:19:09 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLuO4-0002Hh-Ky; Thu, 03 Nov 2011 10:19:08 +0000 Date: Thu, 3 Nov 2011 06:19:08 -0400 From: Christoph Hellwig To: Bill Kendall Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/8] xfsdump: enable support for multiple streams Subject: Re: [PATCH 0/8] xfsdump: enable support for multiple streams Message-ID: <20111103101908.GA8572@infradead.org> References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320268254-20583-1-git-send-email-wkendall@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320315549 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0206 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79193 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 02, 2011 at 04:10:46PM -0500, Bill Kendall wrote: > This series resurrects the IRIX multi-stream support for splitting a > backup among several output files/tapes. This offers some nice > performance improvements, particularly in xfsrestore where a single > stream often cannot keep the filesystem/disks busy. I've observed > a 1.7x improvement on a backup and a 5x improvement on restore. > > I have a couple of xfstests for this, and will submit those once > a few outstanding xfsdump test patches have been reviewed. I've put both your two previous xfsdump patches and the all your xfstests changes into the kernel.org repositories. They all look fine to me. Btw, one thing I'd love to see is a script that uses the userspace iscsi target (tgt) infrastructure to emulate a tape, and thus allow to run the tape tests in any VM without requiring a real tape device. Maybe there is someone on the list feels challenged by this? From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 05:26:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3AQDJf260478 for ; Thu, 3 Nov 2011 05:26:14 -0500 X-ASG-Debug-ID: 1320315970-2cff03d90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A69311CDDE42 for ; Thu, 3 Nov 2011 03:26:10 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id XIBmLVhk9E9nReUY for ; Thu, 03 Nov 2011 03:26:10 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLuUr-0003zr-Ae; Thu, 03 Nov 2011 10:26:09 +0000 Date: Thu, 3 Nov 2011 06:26:09 -0400 From: Christoph Hellwig To: Arkadiusz Mi??kiewicz Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Subject: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Message-ID: <20111103102609.GA12066@infradead.org> References: <201110311156.20421.arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201110311156.20421.arekm@maven.pl> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320315970 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79195 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Oct 31, 2011 at 11:56:20AM +0100, Arkadiusz Mi??kiewicz wrote: > > xfs_repair version 3.1.6 > > disconnected inode 17491441754, moving to lost+found > disconnected inode 17491441755, moving to lost+found > disconnected inode 17491441756, moving to lost+found > disconnected inode 17491441757, moving to lost+found > corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. > Please capture the filesystem metadata with xfs_metadump and > report it to xfs@oss.sgi.com. > cache_node_purge: refcount was 1, not zero (node=0x21450c90) > > fatal error -- 117 - couldn't iget disconnected inode > > 30GB metadump image, 6.1GB compressed of ~7TB real partition > http://ixion.pld-linux.org/~arekm/lv_storage1.metadump.xz > > You need ~8-12GB of memory for xfs_repair on this. > > I can also provide ssh access to the system with this image and all needed > stuff, so you don't need to download it or waste own resources. I think I understand the problem - we found a disconnected inode, which we try to move to lost + found. For some reason the inode is found to be incorrect by xfs_iformat, so iget bailds out. The fix will be to do a pass over the the inodes we want to move to correct such inconsistencies and/or junk them. I'll try to prepare a fix as soon as I get some time, but I'm fairly busy at the moment. Btw, what did you to to the fs? Having the total blocks out of sync with the numbers in the data and attribute forks seems like an extremly unusal error case. From arekm@maven.pl Thu Nov 3 05:40:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_45, MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3Aesm1261199 for ; Thu, 3 Nov 2011 05:40:54 -0500 X-ASG-Debug-ID: 1320316851-1cd600190000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp-relay.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5557B1CDE0BF for ; Thu, 3 Nov 2011 03:40:51 -0700 (PDT) Received: from smtp-relay.maven.pl (smtp-relay.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id 2ekc5H7VpU2RwVFX for ; Thu, 03 Nov 2011 03:40:51 -0700 (PDT) Received: from [83.238.65.58] (port=52448 helo=t400.localnet ident=matrix157) by smtp-relay.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.76) (envelope-from ) id 1RLuj3-00086F-Sw; Thu, 03 Nov 2011 11:40:49 +0100 From: Arkadiusz =?utf-8?q?Mi=C5=9Bkiewicz?= To: Christoph Hellwig X-ASG-Orig-Subj: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Subject: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Date: Thu, 3 Nov 2011 11:40:46 +0100 User-Agent: KMail/1.13.7 (Linux/3.1.0-final-dirty; KDE/4.7.3; x86_64; ; ) Cc: xfs@oss.sgi.com References: <201110311156.20421.arekm@maven.pl> <20111103102609.GA12066@infradead.org> In-Reply-To: <20111103102609.GA12066@infradead.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <201111031140.46783.arekm@maven.pl> X-Barracuda-Connect: smtp-relay.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1320316852 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79195 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thursday 03 of November 2011, Christoph Hellwig wrote: > On Mon, Oct 31, 2011 at 11:56:20AM +0100, Arkadiusz Mi??kiewicz wrote: > > xfs_repair version 3.1.6 > >=20 > > disconnected inode 17491441754, moving to lost+found > > disconnected inode 17491441755, moving to lost+found > > disconnected inode 17491441756, moving to lost+found > > disconnected inode 17491441757, moving to lost+found > > corrupt dinode 17491441757, extent total =3D 1, nblocks =3D 0. This is= a > > bug. Please capture the filesystem metadata with xfs_metadump and > > report it to xfs@oss.sgi.com. > > cache_node_purge: refcount was 1, not zero (node=3D0x21450c90) > >=20 > > fatal error -- 117 - couldn't iget disconnected inode > >=20 > > 30GB metadump image, 6.1GB compressed of ~7TB real partition > > http://ixion.pld-linux.org/~arekm/lv_storage1.metadump.xz > >=20 > > You need ~8-12GB of memory for xfs_repair on this. > >=20 > > I can also provide ssh access to the system with this image and all > > needed stuff, so you don't need to download it or waste own resources. >=20 > I think I understand the problem - we found a disconnected inode, > which we try to move to lost + found. For some reason the inode > is found to be incorrect by xfs_iformat, so iget bailds out. >=20 > The fix will be to do a pass over the the inodes we want to move > to correct such inconsistencies and/or junk them. I'll try to prepare > a fix as soon as I get some time, but I'm fairly busy at the moment. >=20 > Btw, what did you to to the fs? Having the total blocks out of sync > with the numbers in the data and attribute forks seems like an extremly > unusal error case. Well, This serwer has 16 various SATA disk connected to art-of-crap controller -= =20 Promise SuperTrak EX16350. The system exhibits funny issues with intel_idle driver=20 (https://lkml.org/lkml/2011/10/28/270). It has only 8GB of ram which xfs_repair eats for breakfast causing watchdog= to=20 reboot machine while xfs_repair was in progress (would be nice if repair co= uld=20 estimate needed ram before it is too late). All these issues combined caused few reboots in which some were in middle o= f=20 xfs_repair. Most likely all that caused such corruption. =2D-=20 Arkadiusz Mi=C5=9Bkiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 05:48:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3Amq1w261717 for ; Thu, 3 Nov 2011 05:48:52 -0500 X-ASG-Debug-ID: 1320317330-5f3b01310000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7501C21C576 for ; Thu, 3 Nov 2011 03:48:51 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Ov2wxFFmG90No41V for ; Thu, 03 Nov 2011 03:48:51 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLuqo-0007j2-Gn; Thu, 03 Nov 2011 10:48:50 +0000 Date: Thu, 3 Nov 2011 06:48:50 -0400 From: Christoph Hellwig To: Arkadiusz Mi??kiewicz Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Subject: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Message-ID: <20111103104850.GA26259@infradead.org> References: <201110311156.20421.arekm@maven.pl> <20111103102609.GA12066@infradead.org> <201111031140.46783.arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201111031140.46783.arekm@maven.pl> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320317331 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79195 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 03, 2011 at 11:40:46AM +0100, Arkadiusz Mi??kiewicz wrote: > This serwer has 16 various SATA disk connected to art-of-crap controller - > Promise SuperTrak EX16350. > > The system exhibits funny issues with intel_idle driver > (https://lkml.org/lkml/2011/10/28/270). > > It has only 8GB of ram which xfs_repair eats for breakfast causing watchdog to > reboot machine while xfs_repair was in progress (would be nice if repair could > estimate needed ram before it is too late). Yes. So far most of the issues are with the internal buffercache and I suspect we could do better sizing decisions there. If you can provide some testing (xfs_repair -n should be enough) I'll happily send you some RFC patches as soon as I get time for it. In the meantime is there any chance you could send the output of xfs_repair -n -vv -m 1 for this filesystem? From tytso@mit.edu Thu Nov 3 05:54:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3AsNZp262072 for ; Thu, 3 Nov 2011 05:54:23 -0500 X-ASG-Debug-ID: 1320317662-625d01500000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from dmz-mailsec-scanner-6.mit.edu (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7675721C21B for ; Thu, 3 Nov 2011 03:54:22 -0700 (PDT) Received: from dmz-mailsec-scanner-6.mit.edu (DMZ-MAILSEC-SCANNER-6.MIT.EDU [18.7.68.35]) by cuda.sgi.com with ESMTP id BE8CFXxk6zrnAw2D for ; Thu, 03 Nov 2011 03:54:22 -0700 (PDT) X-AuditID: 12074423-b7f756d0000008d0-85-4eb272ddde25 Received: from mailhub-auth-4.mit.edu ( [18.7.62.39]) by dmz-mailsec-scanner-6.mit.edu (Symantec Messaging Gateway) with SMTP id 34.5C.02256.DD272BE4; Thu, 3 Nov 2011 06:54:21 -0400 (EDT) Received: from outgoing.mit.edu (OUTGOING-AUTH.MIT.EDU [18.7.22.103]) by mailhub-auth-4.mit.edu (8.13.8/8.9.2) with ESMTP id pA3AsKbK004127; Thu, 3 Nov 2011 06:54:20 -0400 Received: from [10.0.42.109] (c-98-216-98-217.hsd1.ma.comcast.net [98.216.98.217]) (authenticated bits=0) (User authenticated as tytso@ATHENA.MIT.EDU) by outgoing.mit.edu (8.13.6/8.12.4) with ESMTP id pA3AsFKj029384 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Thu, 3 Nov 2011 06:54:17 -0400 (EDT) X-ASG-Orig-Subj: Re: [PATCH 6/8] xfstests: add fiemap operation to fsstress Subject: Re: [PATCH 6/8] xfstests: add fiemap operation to fsstress Mime-Version: 1.0 (Apple Message framework v1251.1) Content-Type: text/plain; charset=windows-1252 From: Theodore Tso In-Reply-To: <20111102195534.GB22500@infradead.org> Date: Thu, 3 Nov 2011 06:54:16 -0400 Cc: Theodore Tso , Dmitry Monakhov , linux-fsdevel@vger.kernel.org, aelder@sgi.com, hch@lst.de, xfs@oss.sgi.com Content-Transfer-Encoding: quoted-printable Message-Id: References: <1319849297-3506-1-git-send-email-dmonakhov@openvz.org> <1319849297-3506-7-git-send-email-dmonakhov@openvz.org> <20111102195534.GB22500@infradead.org> To: Christoph Hellwig X-Mailer: Apple Mail (2.1251.1) X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprHKsWRmVeSWpSXmKPExsUixG6nrnu3aJOfwbEDNhaH2x6yW5yY6Wlx esIiJouVq48yWezZe5LFYlHfLUYHNo/NK7Q8dt9sYPOYdPgzk8fqC1sZPe5ef8nk8XmTXABb FJdNSmpOZllqkb5dAlfGk1Pv2QpmslRMam9la2Ccz9zFyMkhIWAisWTvbDYIW0ziwr31QDYX h5DAPkaJF+v/QTnrGSU+vPzAAuGcYpJYd+0OK0iLsICzxJ3l65lAbF4BY4k1t96xgNjMAnoS O67/AqthE1CSuPNpP1Ccg4MTqObzASGQMIuAisTjDedZQWYyCyxjlJh0YwEjRK+2xLKFr5kh ZlpJvHpyE2y+kMAiRolbp7NAbBEBTYlby9uhXpCXaPl6h20Co+AsJGfMQnLGLCRjFzAyr2KU Tcmt0s1NzMwpTk3WLU5OzMtLLdI108vNLNFLTSndxAiOBhflHYx/DiodYhTgYFTi4U0s2ugn xJpYVlyZe4hRkoNJSZTXs3CTnxBfUn5KZUZicUZ8UWlOavEhRgkOZiURXkkvoBxvSmJlVWpR PkxKmoNFSZxXZqeDn5BAemJJanZqakFqEUxWhoNDSYL3P8hQwaLU9NSKtMycEoQ0EwcnyHAe oOGcRSDDiwsSc4sz0yHypxgVpcR5z4M0C4AkMkrz4HphyeoVozjQK8K8z9OBqniAiQ6u+xXQ YCagwTMvrQcZXJKIkJJqYOzh3STnoaQbfOPszGBlpUS7bKcn383f2zW9y6/nillc7myZZnJA f/oV/zkr5yzbs+z+Bsmbm5dsnP9EtnflbN2upoDHlyy4qvQMrinv192ck6XlM3/D9lKH/3s+ PlC2cuhhEhOsv5skxbD7WsZk5qj+Keoc88OvzqgU2S7EYdZi/kChuecLtxJLcUaioRZzUXEi AKQvDdoxAwAA X-Barracuda-Connect: DMZ-MAILSEC-SCANNER-6.MIT.EDU[18.7.68.35] X-Barracuda-Start-Time: 1320317662 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Nov 2, 2011, at 3:55 PM, Christoph Hellwig wrote: > Alex, Eric, Dave - should we add new tests with the new operations > Dmitry added, or is adding new ops to the existing tests fine? One argument for adding new ops to existing tests is that it makes the = run time of the entire test suite take longer. A QA pass is already = taking quite a while, and it would be nice if we could keep xfstests as = efficient as possible in terms of the maximum testing coverage per time = spent running the test suite=85. -- Ted From arekm@maven.pl Thu Nov 3 05:57:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3AvjuB000407 for ; Thu, 3 Nov 2011 05:57:45 -0500 X-ASG-Debug-ID: 1320317861-3975010d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp-relay.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 716E5154182B for ; Thu, 3 Nov 2011 03:57:41 -0700 (PDT) Received: from smtp-relay.maven.pl (smtp-relay.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id xH22a61IRaZMybZD for ; Thu, 03 Nov 2011 03:57:41 -0700 (PDT) Received: from [83.238.65.58] (port=52995 helo=t400.localnet ident=matrix157) by smtp-relay.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.76) (envelope-from ) id 1RLuzM-0008Ps-Al; Thu, 03 Nov 2011 11:57:40 +0100 From: Arkadiusz =?utf-8?q?Mi=C5=9Bkiewicz?= To: Christoph Hellwig X-ASG-Orig-Subj: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Subject: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Date: Thu, 3 Nov 2011 11:57:38 +0100 User-Agent: KMail/1.13.7 (Linux/3.1.0-final-dirty; KDE/4.7.3; x86_64; ; ) Cc: xfs@oss.sgi.com References: <201110311156.20421.arekm@maven.pl> <201111031140.46783.arekm@maven.pl> <20111103104850.GA26259@infradead.org> In-Reply-To: <20111103104850.GA26259@infradead.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <201111031157.39179.arekm@maven.pl> X-Barracuda-Connect: smtp-relay.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1320317862 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79196 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thursday 03 of November 2011, Christoph Hellwig wrote: > On Thu, Nov 03, 2011 at 11:40:46AM +0100, Arkadiusz Mi??kiewicz wrote: > > This serwer has 16 various SATA disk connected to art-of-crap controller > > - Promise SuperTrak EX16350. > >=20 > > The system exhibits funny issues with intel_idle driver > > (https://lkml.org/lkml/2011/10/28/270). > >=20 > > It has only 8GB of ram which xfs_repair eats for breakfast causing > > watchdog to reboot machine while xfs_repair was in progress (would be > > nice if repair could estimate needed ram before it is too late). >=20 > Yes. So far most of the issues are with the internal buffercache and I > suspect we could do better sizing decisions there. If you can provide > some testing (xfs_repair -n should be enough) I'll happily send you > some RFC patches as soon as I get time for it. I can do some testing (on image though but that shouldn't matter). >=20 > In the meantime is there any chance you could send the output of >=20 > xfs_repair -n -vv -m 1 >=20 > for this filesystem? Will such repair done on metadumped & restored image be enough for you? =2D-=20 Arkadiusz Mi=C5=9Bkiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 06:03:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3B38pA000884 for ; Thu, 3 Nov 2011 06:03:08 -0500 X-ASG-Debug-ID: 1320318186-4918005f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6F12B1541861 for ; Thu, 3 Nov 2011 04:03:07 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 1x9uhMSsUzFB3f75 for ; Thu, 03 Nov 2011 04:03:07 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLv4c-0002CV-Ju; Thu, 03 Nov 2011 11:03:06 +0000 Date: Thu, 3 Nov 2011 07:03:06 -0400 From: Christoph Hellwig To: Arkadiusz Mi??kiewicz Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Subject: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Message-ID: <20111103110306.GA8382@infradead.org> References: <201110311156.20421.arekm@maven.pl> <201111031140.46783.arekm@maven.pl> <20111103104850.GA26259@infradead.org> <201111031157.39179.arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201111031157.39179.arekm@maven.pl> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320318187 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ3078, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79196 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ3078 Custom Rule MJ3078 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 03, 2011 at 11:57:38AM +0100, Arkadiusz Mi??kiewicz wrote: > > In the meantime is there any chance you could send the output of > > > > xfs_repair -n -vv -m 1 > > > > for this filesystem? > > Will such repair done on metadumped & restored image be enough for you? Yes. I also looked at the memory heuristics and found some fairly obvious flaws. I'll have some test patches for you ASAP. From rjevskiy@gmail.com Thu Nov 3 06:04:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3B4NS4001014 for ; Thu, 3 Nov 2011 06:04:23 -0500 X-ASG-Debug-ID: 1320318262-6a2f011c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DFA1421C769 for ; Thu, 3 Nov 2011 04:04:22 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id LrUVFaMjdpTmTes4 for ; Thu, 03 Nov 2011 04:04:22 -0700 (PDT) Received: by bkbzs8 with SMTP id zs8so1192735bkb.26 for ; Thu, 03 Nov 2011 04:04:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version:content-type:content-transfer-encoding; bh=bNHOksAqZbqwzWp6bM196NcZfTdqBLvR/eKNxDh4OSM=; b=x+dE80T9BhHeDEDkE1JIWd7hBhQosILLjLM86RjtHtmNPG14IHYJ9USENzBkhiYe6w pny1sHS9iImffcV3ri/I2l0JK2RJmEGhJUB/cy0JFxCz+4JyNxy/A/3CZTfkeNUYGkiV 6pgF9XeTz7ZVz+74yT7ScWgB0CFBEmbgpuRoY= Received: by 10.204.157.142 with SMTP id b14mr7644184bkx.44.1320318261738; Thu, 03 Nov 2011 04:04:21 -0700 (PDT) Received: from smtp.gmail.com (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id j9sm5239337bkd.2.2011.11.03.04.04.19 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 04:04:20 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: Theodore Tso , Christoph Hellwig Cc: Theodore Tso , linux-fsdevel@vger.kernel.org, aelder@sgi.com, hch@lst.de, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/8] xfstests: add fiemap operation to fsstress Subject: Re: [PATCH 6/8] xfstests: add fiemap operation to fsstress In-Reply-To: References: <1319849297-3506-1-git-send-email-dmonakhov@openvz.org> <1319849297-3506-7-git-send-email-dmonakhov@openvz.org> <20111102195534.GB22500@infradead.org> User-Agent: Notmuch/0.5-69-g3e4a9d6 (http://notmuchmail.org) Emacs/23.1.1 (i486-pc-linux-gnu) Date: Thu, 03 Nov 2011 15:04:17 +0400 Message-ID: <87wrbhxya6.fsf@dmbot.sw.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320318262 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, 3 Nov 2011 06:54:16 -0400, Theodore Tso wrote: >=20 > On Nov 2, 2011, at 3:55 PM, Christoph Hellwig wrote: >=20 > > Alex, Eric, Dave - should we add new tests with the new operations > > Dmitry added, or is adding new ops to the existing tests fine? >=20 > One argument for adding new ops to existing tests is that it makes the ru= n time of the entire test suite take longer. A QA pass is already taking = quite a while, and it would be nice if we could keep xfstests as efficient = as possible in terms of the maximum testing coverage per time spent running= the test suite=E2=80=A6. Yes, but regression test with explicit seed option should be preserved. Number of such test is not too big, so it is reasonable to hardcode set of operations in such tests and let all others use new feature= s. >=20 > -- Ted >=20 From amit.sahrawat83@gmail.com Thu Nov 3 06:19:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,FREEMAIL_FROM, J_CHICKENPOX_72,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3BJxqi002182 for ; Thu, 3 Nov 2011 06:19:59 -0500 X-ASG-Debug-ID: 1320319193-1cc001530000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D25351CDDC9B for ; Thu, 3 Nov 2011 04:19:53 -0700 (PDT) Received: from mail-fx0-f53.google.com (mail-fx0-f53.google.com [209.85.161.53]) by cuda.sgi.com with ESMTP id C65DZ4AXMSbjyKh3 for ; Thu, 03 Nov 2011 04:19:53 -0700 (PDT) Received: by faai28 with SMTP id i28so1534881faa.26 for ; Thu, 03 Nov 2011 04:19:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=4B9tdeovyeaB1XHk5U/wA1gqWhVAm0M2ieUDAAF4eiw=; b=A7JkTZmQ0eFoamBMoKjlBhU9tK3z+wUWnphefOmQ6mtq3oHnaoa5FsZgGepRHdmRzj 9dKzA7b3j8k85XQkBbSrzkjIvG3V5drOLXbz15b3B0XlWdELo98LgsZBh+r7nn8A6eZW V7E8+HA6kHON1A7Lpm/8DAGyGz9WSKqMeFnv8= MIME-Version: 1.0 Received: by 10.223.39.20 with SMTP id d20mr15524821fae.37.1320319193323; Thu, 03 Nov 2011 04:19:53 -0700 (PDT) Received: by 10.152.10.35 with HTTP; Thu, 3 Nov 2011 04:19:53 -0700 (PDT) In-Reply-To: <20111103100647.GA1002@infradead.org> References: <20111103070246.GA10579@infradead.org> <20111103100647.GA1002@infradead.org> Date: Thu, 3 Nov 2011 16:49:53 +0530 Message-ID: X-ASG-Orig-Subj: Re: [Patch] xfs: serialise unaligned direct IOs Subject: Re: [Patch] xfs: serialise unaligned direct IOs From: Amit Sahrawat To: Christoph Hellwig Cc: Dave Chinner , xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-fx0-f53.google.com[209.85.161.53] X-Barracuda-Start-Time: 1320319194 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79199 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean After all modifications and running checkpatch.pl. Thanks & Regards, Amit Sahrawat xfs: serialise unaligned direct IOs [ This patch published in 2.6.38 kernel(Original reference http://oss.sgi.com/archives/xfs/2011-01/msg00013.html), but can not be applied to 2.6.35 kernel directly, because of the absence of required function, its reimplmented to resolve xfstest test 240 fail.] When two concurrent unaligned, non-overlapping direct IOs are issued to the same block, the direct Io layer will race to zero the block. The result is that one of the concurrent IOs will overwrite data written by the other IO with zeros. This is demonstrated by the xfsqa test 240. To avoid this problem, serialise all unaligned direct IOs to an inode with a big hammer. We need a big hammer approach as we need to serialise AIO as well, so we can't just block writes on locks. Hence, the big hammer is calling xfs_ioend_wait() while holding out other unaligned direct IOs from starting. We don't bother trying to serialised aligned vs unaligned IOs as they are overlapping IO and the result of concurrent overlapping IOs is undefined - the result of either IO is a valid result so we let them race. Hence we only penalise unaligned IO, which already has a major overhead compared to aligned IO so this isn't a major problem. Signed-off-by: Dave Chinner Signed-off-by: Amit Sahrawat Signed-off-by: Ajeet Yadav diff -Nurp linux-Orig/fs/xfs/linux-2.6/xfs_file.c linux-Updated/fs/xfs/linux-2.6/xfs_file.c --- linux-Orig/fs/xfs/linux-2.6/xfs_file.c 2011-11-02 12:10:52.000000000 +0= 530 +++ linux-Updated/fs/xfs/linux-2.6/xfs_file.c 2011-11-03 16:39:08.000000000 +0530 @@ -587,6 +587,7 @@ xfs_file_aio_write( xfs_fsize_t isize, new_size; int iolock; size_t ocount =3D 0, count; + int unaligned_io =3D 0; int need_i_mutex; XFS_STATS_INC(xs_write_calls); @@ -640,8 +641,26 @@ start: xfs_iunlock(ip, XFS_ILOCK_EXCL|iolock); return XFS_ERROR(-EINVAL); } + /* + * In most cases the direct IO writes will be done with IOLOCK_SHARED + * allowing them to be done in parallel with reads and other direct IO + * writes. However,if the IO is not aligned to filesystem blocks, the + * direct IO layer needs to do sub-block zeroing and that requires + * serialisation against other direct IOs to the same block. In this + * case we need to serialise the submission of the unaligned IOs so + * that we don't get racing block zeroing in the dio layer. + * To avoid the problem with aio, we also need to wait for outstanding + * IOs to complete so that unwritten extent conversion is completed + * before we try to map the overlapping block. This is currently + * implemented by hitting it with a big hammer (i.e. xfs_ioend_wait()). + */ + + if ((pos & mp->m_blockmask) || + ((pos + count) & mp->m_blockmask)) + unaligned_io =3D 1; - if (!need_i_mutex && (mapping->nrpages || pos > ip->i_size)) { + if (!need_i_mutex && + (unaligned_io || mapping->nrpages || pos > ip->i_size)) { xfs_iunlock(ip, XFS_ILOCK_EXCL|iolock); iolock =3D XFS_IOLOCK_EXCL; need_i_mutex =3D 1; @@ -700,12 +719,18 @@ start: } if (need_i_mutex) { - /* demote the lock now the cached pages are gone */ - xfs_ilock_demote(ip, XFS_IOLOCK_EXCL); - mutex_unlock(&inode->i_mutex); - - iolock =3D XFS_IOLOCK_SHARED; - need_i_mutex =3D 0; + if (unaligned_io) + xfs_ioend_wait(ip); + else { + /* + * demote the lock now the cached pages + * are gone if we can + */ + xfs_ilock_demote(ip, XFS_IOLOCK_EXCL); + iolock =3D XFS_IOLOCK_SHARED; + mutex_unlock(&inode->i_mutex); + need_i_mutex =3D 0; + } } trace_xfs_file_direct_write(ip, count, iocb->ki_pos, ioflags); On Thu, Nov 3, 2011 at 3:36 PM, Christoph Hellwig wrote= : > On Thu, Nov 03, 2011 at 03:29:18PM +0530, Amit Sahrawat wrote: >> > You probably should keep the original Signoff and reviewed-by tags, >> > and add your editor note on the top into [ ] ?brackets. >> Ok, will do so in the final patch. Actually was unaware of information >> to keep in backported patches? > > The standard procedure is to keep patches basically as-is. =A0This doesn'= t > quite apply for your case, so I think just adding a comment in > [ ] brackets on the top is the best you can do. > >> > You also need to make the i_mutex unlock and need_i_mutex update >> > conditional here, otherwise you still serialize all O_DIRECT writes. >> > >> you mean, keeping need_i_mutex=3D0 and mutex_unlock as part of 'else' st= atement. > > Yes. > > From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 06:54:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_28, J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3BsW9A005568 for ; Thu, 3 Nov 2011 06:54:33 -0500 X-ASG-Debug-ID: 1320321270-6cab00730000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4EED816CD9F2 for ; Thu, 3 Nov 2011 04:54:30 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id KEWrsN0AVU4T9hil for ; Thu, 03 Nov 2011 04:54:30 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLvsL-00045l-Ud; Thu, 03 Nov 2011 11:54:29 +0000 Date: Thu, 3 Nov 2011 07:54:29 -0400 From: Christoph Hellwig To: Arkadiusz Mi??kiewicz Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Subject: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Message-ID: <20111103115429.GA15726@infradead.org> References: <201110311156.20421.arekm@maven.pl> <201111031140.46783.arekm@maven.pl> <20111103104850.GA26259@infradead.org> <201111031157.39179.arekm@maven.pl> <20111103110306.GA8382@infradead.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="zYM0uCDKw75PZbzx" Content-Disposition: inline In-Reply-To: <20111103110306.GA8382@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320321271 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0063 1.0000 -1.9798 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.88 X-Barracuda-Spam-Status: No, SCORE=-1.88 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79200 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --zYM0uCDKw75PZbzx Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Can you give this patch a quick try on the image in that constrained setup? --zYM0uCDKw75PZbzx Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=libxfs-estimate-free-memory-better Index: xfsprogs-dev/libxfs/linux.c =================================================================== --- xfsprogs-dev.orig/libxfs/linux.c 2011-11-03 12:01:14.213689743 +0100 +++ xfsprogs-dev/libxfs/linux.c 2011-11-03 12:46:56.928191650 +0100 @@ -207,8 +207,13 @@ platform_nproc(void) return sysconf(_SC_NPROCESSORS_ONLN); } +/* + * Return the memory that we can use freely. + * + * The return value is in kilobytes. + */ unsigned long -platform_physmem(void) +platform_freemem(void) { struct sysinfo si; @@ -217,5 +222,14 @@ platform_physmem(void) progname); exit(1); } - return (si.totalram >> 10) * si.mem_unit; /* kilobytes */ + + /* + * Assume we can use memory that is marked free. This is a very + * conservative approximation given that there might be a lot of + * pagecache that is easily reclaimable, but the only way to figure + * out pagecache size is by parsing /proc/meminfo, and the format + * of that file keeps changing. This approach is still better than + * guessing based on si.totalram which might be highly overestimated. + */ + return (si.freeram >> 10) * si.mem_unit; } Index: xfsprogs-dev/include/libxfs.h =================================================================== --- xfsprogs-dev.orig/include/libxfs.h 2011-11-03 12:29:02.001691672 +0100 +++ xfsprogs-dev/include/libxfs.h 2011-11-03 12:31:49.780691838 +0100 @@ -475,7 +475,7 @@ enum ce { CE_DEBUG, CE_CONT, CE_NOTE, CE #define LIBXFS_BBTOOFF64(bbs) (((xfs_off_t)(bbs)) << BBSHIFT) extern int libxfs_nproc(void); -extern unsigned long libxfs_physmem(void); /* in kilobytes */ +extern unsigned long libxfs_freemem(void); /* in kilobytes */ #include #include Index: xfsprogs-dev/libxfs/darwin.c =================================================================== --- xfsprogs-dev.orig/libxfs/darwin.c 2011-11-03 12:29:02.017691106 +0100 +++ xfsprogs-dev/libxfs/darwin.c 2011-11-03 12:40:10.720691752 +0100 @@ -128,18 +128,27 @@ platform_nproc(void) return ncpu; } +/* + * Return the memory that we can use freely. + * + * The return value is in kilobytes. + */ unsigned long -platform_physmem(void) +platform_freemem(void) { - unsigned long physmem; - size_t len = sizeof(physmem); + unsigned long freemem; + size_t len = sizeof(freemem); static int mib[2] = {CTL_HW, HW_PHYSMEM}; - if (sysctl(mib, 2, &physmem, &len, NULL, 0) < 0) { + if (sysctl(mib, 2, &freemem, &len, NULL, 0) < 0) { fprintf(stderr, _("%s: can't determine memory size\n"), progname); exit(1); } - return physmem >> 10; + + /* + * Assume we can use approximately 3/4 of the physical memory. + */ + return (freemem >> (10 + 2)) * 3; } Index: xfsprogs-dev/libxfs/freebsd.c =================================================================== --- xfsprogs-dev.orig/libxfs/freebsd.c 2011-11-03 12:29:02.037693919 +0100 +++ xfsprogs-dev/libxfs/freebsd.c 2011-11-03 12:40:19.000190942 +0100 @@ -187,17 +187,26 @@ platform_nproc(void) return ncpu; } +/* + * Return the memory that we can use freely. + * + * The return value is in kilobytes. + */ unsigned long -platform_physmem(void) +platform_freemem(void) { - unsigned long physmem; - size_t len = sizeof(physmem); + unsigned long freemem; + size_t len = sizeof(freemem); static int mib[2] = {CTL_HW, HW_PHYSMEM}; - if (sysctl(mib, 2, &physmem, &len, NULL, 0) < 0) { + if (sysctl(mib, 2, &freemem, &len, NULL, 0) < 0) { fprintf(stderr, _("%s: can't determine memory size\n"), progname); exit(1); } - return physmem >> 10; + + /* + * Assume we can use approximately 3/4 of the physical memory. + */ + return (freemem >> (10 + 2)) * 3; } Index: xfsprogs-dev/libxfs/init.c =================================================================== --- xfsprogs-dev.orig/libxfs/init.c 2011-11-03 12:29:02.057690208 +0100 +++ xfsprogs-dev/libxfs/init.c 2011-11-03 12:29:50.044192568 +0100 @@ -862,7 +862,7 @@ libxfs_nproc(void) } unsigned long -libxfs_physmem(void) +libxfs_freemem(void) { - return platform_physmem(); + return platform_freemem(); } Index: xfsprogs-dev/libxfs/init.h =================================================================== --- xfsprogs-dev.orig/libxfs/init.h 2011-11-03 12:29:02.077690698 +0100 +++ xfsprogs-dev/libxfs/init.h 2011-11-03 12:29:52.296691230 +0100 @@ -32,7 +32,7 @@ extern char *platform_findblockpath (cha extern int platform_direct_blockdev (void); extern int platform_align_blockdev (void); extern int platform_nproc(void); -extern unsigned long platform_physmem(void); /* in kilobytes */ +extern unsigned long platform_freemem(void); /* in kilobytes */ extern int platform_has_uuid; #endif /* LIBXFS_INIT_H */ Index: xfsprogs-dev/libxfs/irix.c =================================================================== --- xfsprogs-dev.orig/libxfs/irix.c 2011-11-03 12:29:02.097691363 +0100 +++ xfsprogs-dev/libxfs/irix.c 2011-11-03 12:42:59.724691783 +0100 @@ -97,8 +97,13 @@ platform_nproc(void) return sysmp(MP_NPROCS); } +/* + * Return the memory that we can use freely. + * + * The return value is in kilobytes. + */ unsigned long -platform_physmem(void) +platform_freemem(void) { struct rminfo ri; @@ -107,5 +112,9 @@ platform_physmem(void) progname); exit(1); } - return (ri.physmem >> 10) * getpagesize(); /* kilobytes */ -} \ No newline at end of file + + /* + * Assume we can use all free memory. + */ + return (ri.freemem >> 10) * getpagesize(); /* kilobytes */ +} Index: xfsprogs-dev/repair/xfs_repair.c =================================================================== --- xfsprogs-dev.orig/repair/xfs_repair.c 2011-11-03 12:29:02.117690613 +0100 +++ xfsprogs-dev/repair/xfs_repair.c 2011-11-03 12:32:42.348190446 +0100 @@ -631,8 +631,11 @@ main(int argc, char **argv) mem_used = (mp->m_sb.sb_icount >> (10 - 2)) + (mp->m_sb.sb_dblocks >> (10 + 1)) + 50000; /* rough estimate of 50MB overhead */ - max_mem = max_mem_specified ? max_mem_specified * 1024 : - libxfs_physmem() * 3 / 4; + + if (max_mem_specified) + max_mem = max_mem_specified * 1024; + else + max_mem = libxfs_freemem(); if (getrlimit(RLIMIT_AS, &rlim) != -1 && rlim.rlim_cur != RLIM_INFINITY) { --zYM0uCDKw75PZbzx-- From wkendall@sgi.com Thu Nov 3 07:11:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3CBjTL007414 for ; Thu, 3 Nov 2011 07:11:46 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id B0F82304114; Thu, 3 Nov 2011 05:11:42 -0700 (PDT) Received: from [128.162.233.117] (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id A125D70006F6; Thu, 3 Nov 2011 07:11:42 -0500 (CDT) Message-ID: <4EB284FE.2040409@sgi.com> Date: Thu, 03 Nov 2011 07:11:42 -0500 From: Bill Kendall User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.23) Gecko/20110921 Thunderbird/3.1.15 MIME-Version: 1.0 To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 0/8] xfsdump: enable support for multiple streams References: <1320268254-20583-1-git-send-email-wkendall@sgi.com> <20111103101908.GA8572@infradead.org> In-Reply-To: <20111103101908.GA8572@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/03/2011 05:19 AM, Christoph Hellwig wrote: > On Wed, Nov 02, 2011 at 04:10:46PM -0500, Bill Kendall wrote: >> This series resurrects the IRIX multi-stream support for splitting a >> backup among several output files/tapes. This offers some nice >> performance improvements, particularly in xfsrestore where a single >> stream often cannot keep the filesystem/disks busy. I've observed >> a 1.7x improvement on a backup and a 5x improvement on restore. >> >> I have a couple of xfstests for this, and will submit those once >> a few outstanding xfsdump test patches have been reviewed. > > I've put both your two previous xfsdump patches and the all your > xfstests changes into the kernel.org repositories. They all look > fine to me. Thanks for the reviews. I'm going to be out of town for a few days but will look at your suggestion to use POSIX semaphores when I return. > > Btw, one thing I'd love to see is a script that uses the userspace > iscsi target (tgt) infrastructure to emulate a tape, and thus allow to > run the tape tests in any VM without requiring a real tape device. > > Maybe there is someone on the list feels challenged by this? I've been using an open source vtl to achieve the same goal, and have given some thought to integrating (or at a minimum documenting) how to use it with the xfsdump tests. https://github.com/markh794/mhvtl Bill From rjevskiy@gmail.com Thu Nov 3 07:14:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3CEEM8007624 for ; Thu, 3 Nov 2011 07:14:14 -0500 X-ASG-Debug-ID: 1320322452-7c4f000a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 759481CDE7E3 for ; Thu, 3 Nov 2011 05:14:12 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id ALQiYtx87AJ0grdl for ; Thu, 03 Nov 2011 05:14:12 -0700 (PDT) Received: by bkbzs8 with SMTP id zs8so1257539bkb.26 for ; Thu, 03 Nov 2011 05:14:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version:content-type; bh=xq2Yg448mAbPizMIRYN/PFBB4aUdQ5NeOoKJ8XQM8iM=; b=W/LkGnKALevoCkv6YbORKc5HCtujukYSp/AruoRsNWm94ZXLjHgNHUuLXWFpzDMc58 Yj49nzPRFfXrKXrAFALxwMdylKapnf0hIw3nY84uQjXu59KnAhNyXdgFVLt60SvCJY7E u+qqo4RYIGOwUWx+m7fY9757vl5gR70iAQFO4= Received: by 10.204.148.68 with SMTP id o4mr8074768bkv.21.1320322452041; Thu, 03 Nov 2011 05:14:12 -0700 (PDT) Received: from smtp.gmail.com (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id a27sm5403649bku.9.2011.11.03.05.14.06 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 05:14:07 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: Christoph Hellwig Cc: linux-fsdevel@vger.kernel.org, aelder@sgi.com, hch@lst.de, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/8] xfstests: add fiemap operation to fsstress Subject: Re: [PATCH 6/8] xfstests: add fiemap operation to fsstress In-Reply-To: <87zkgdy2fi.fsf@dmbot.sw.ru> References: <1319849297-3506-1-git-send-email-dmonakhov@openvz.org> <1319849297-3506-7-git-send-email-dmonakhov@openvz.org> <20111102195534.GB22500@infradead.org> <87zkgdy2fi.fsf@dmbot.sw.ru> User-Agent: Notmuch/0.5-69-g3e4a9d6 (http://notmuchmail.org) Emacs/23.1.1 (i486-pc-linux-gnu) Date: Thu, 03 Nov 2011 16:14:04 +0400 Message-ID: <87ty6lxv1v.fsf@dmbot.sw.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320322453 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79201 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, 03 Nov 2011 13:34:41 +0400, Dmitry Monakhov wrote: > On Wed, 2 Nov 2011 15:55:34 -0400, Christoph Hellwig wrote: > > On Sat, Oct 29, 2011 at 04:48:15AM +0400, Dmitry Monakhov wrote: > > > Related bug: http://patchwork.ozlabs.org/patch/118863 > > > > > > Signed-off-by: Dmitry Monakhov > > > > This causes a very weird XFS failure in test 117 for me. While it > > obviously is an xfs bug that you uncovered (good!) I'm a bit worried > > about simply enabling operations in existing tests. > Ohh. i've got what your are talking about. We can not add new ops > for tests there seed is passed explicitly. And yes i've braked this, but > this is because such frozen tests was written in not determined > way :). Good determined test should has not just seed opt, but also > explicit set of operations. All others (non determined) tests which use > fsstress may benefit from new ops. So I'll redo my patch queue like this: > 1) Add explicit option set for all frozen tests i've stuck immediately on first test ;(. on my kernel 107'th test always failed (commit: 73a57c642cdfa660 "1.1.0 release"), is it expected? Which xfs-tree and commit should i use? > 2) Add new features to fssstress with non zero probability. > > > > Alex, Eric, Dave - should we add new tests with the new operations > > Dmitry added, or is adding new ops to the existing tests fine? > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From wkendall@sgi.com Thu Nov 3 07:14:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_42, J_CHICKENPOX_64,T_LOTS_OF_MONEY autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3CEXE3007653 for ; Thu, 3 Nov 2011 07:14:33 -0500 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 33F3B3040DC; Thu, 3 Nov 2011 05:14:33 -0700 (PDT) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 1D3B170006F6; Thu, 3 Nov 2011 07:14:33 -0500 (CDT) Received: by augusta (Postfix, from userid 2022) id D171E21E23D1; Thu, 3 Nov 2011 07:14:32 -0500 (CDT) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH] xfstests: add 059 and 060 for multi-stream xfsdump Date: Thu, 3 Nov 2011 07:14:24 -0500 Message-Id: <1320322464-6559-1-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Implement the multi-stream placeholder tests 059 and 060. The comments imply that these tests existed on IRIX, but I was unable to find them. Test 059 does a simple 4-way dump and restore. Test 060 does a 4-way dump, then restores each dump file individually (in a cumulative fashion). The tests are skipped if the installed xfsdump does not support multi-stream output. Signed-off-by: Bill Kendall --- 059 | 23 ++++++++++++++--------- 060 | 29 ++++++++++++++++++++--------- common.dump | 40 ++++++++++++++++++++++++++++++++++++++-- group | 4 ++-- 4 files changed, 74 insertions(+), 22 deletions(-) diff --git a/059 b/059 index 6348f0e..1f3f8e3 100755 --- a/059 +++ b/059 @@ -1,10 +1,10 @@ #! /bin/bash # FS QA Test No. 059 # -# place holder for IRIX 059 test for xfsdump/xfsrestore multi streams +# Test multi-stream xfsdump/xfsrestore. # #----------------------------------------------------------------------- -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. +# Copyright (c) 2000-2001, 2011 SGI. All Rights Reserved. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as @@ -22,26 +22,31 @@ #----------------------------------------------------------------------- # # creator -owner=ivanr@sgi.com +owner=wkendall@sgi.com seq=`basename $0` echo "QA output created by $seq" here=`pwd` tmp=/tmp/$$ -status=1 # failure is the default! +status=0 # success is the default! trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 # get standard environment, filters and checks . ./common.rc -. ./common.filter - -_notrun "Place holder for IRIX test 059" +. ./common.dump # real QA test starts here _supported_fs xfs -_supported_os IRIX +_supported_os Linux + +_require_multi_stream + +_create_dumpdir_fill_multi +_do_dump_multi_file --multi 4 +_do_restore_multi_file --multi 4 +_ls_compare_sub +_diff_compare # success, all done -status=0 exit diff --git a/060 b/060 index 6e58e5b..4adc00f 100755 --- a/060 +++ b/060 @@ -1,10 +1,10 @@ #! /bin/bash # FS QA Test No. 060 # -# place holder for IRIX 060 test for xfsdump/xfsrestore multi streams +# Test multi-stream xfsdump and restoring one stream at a time. # #----------------------------------------------------------------------- -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. +# Copyright (c) 2000-2001, 2011 SGI. All Rights Reserved. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as @@ -22,26 +22,37 @@ #----------------------------------------------------------------------- # # creator -owner=ivanr@sgi.com +owner=wkendall@sgi.com seq=`basename $0` echo "QA output created by $seq" here=`pwd` tmp=/tmp/$$ -status=1 # failure is the default! +status=0 # success is the default! trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 # get standard environment, filters and checks . ./common.rc -. ./common.filter - -_notrun "Place holder for IRIX test 060" +. ./common.dump # real QA test starts here _supported_fs xfs -_supported_os IRIX +_supported_os Linux + +_require_multi_stream + +_create_dumpdir_fill_multi +_do_dump_multi_file --multi 4 +_prepare_restore_dir +base=$dump_file +opts="" +for x in 0 1 2 3; do + _do_restore_file_cum -f $base.$x $opts + opts=-R +done +_ls_compare_sub +_diff_compare # success, all done -status=0 exit diff --git a/common.dump b/common.dump index 076517d..31a75c5 100644 --- a/common.dump +++ b/common.dump @@ -75,6 +75,14 @@ done have_mtvariable=false [ `uname` = "Linux" ] && have_mtvariable=true + +_require_multi_stream() +{ + $XFSDUMP_PROG -JF -f /dev/null -f /dev/null 2> /dev/null | + grep -q "too many -f arguments" && + _notrun "xfsdump multi-stream support required" +} + # # do a remote/local mt # @@ -536,6 +544,18 @@ _do_create_dumpdir_fill() cd $here } +_mk_fillconfig_multi() +{ + _mk_fillconfig1 + cat <>$tmp.config +# pathname size in bytes +# +large000 8874368 $nobody $nobody +large111 2582912 $nobody $nobody +large222 7825792 $nobody $nobody +End-of-File +} + _create_dumpdir_largefile() { _wipe_fs @@ -580,6 +600,17 @@ _create_dumpdir_fill_ea() _stable_fs } +# +# Create enough files, and a few large enough files, so that +# some files are likely to be split across streams. +# +_create_dumpdir_fill_multi() +{ + _wipe_fs + _mk_fillconfig_multi + _do_create_dumpdir_fill + _stable_fs +} # # Append a subset of the fill'ed files @@ -802,9 +833,11 @@ _dump_filter_main() -e 's/time:[ ].*/time: TIME/' \ -e 's/date:[ ].*/date: DATE/' \ -e 's/dump begun .*/dump begun DATE/' \ + -e 's/previously begun .*/previously begun DATE/' \ -e 's/[0-9][0-9]* seconds/SECS seconds/' \ -e 's/restore.[0-9][0-9]*/restore.PID/' \ - -e 's/ino [0-9][0-9]*/ino INO/' \ + -e 's/ino [0-9][0-9]*/ino INO/g' \ + -e '/stream [0-9]:/s/offset [0-9][0-9]*/offset NUM/g' \ -e '/: dump size/s/[0-9][0-9]*/NUM/' \ -e '/dump size:/s/[0-9][0-9]*/NUM/' \ -e '/dump size per stream:/s/[0-9][0-9]*/NUM/' \ @@ -862,7 +895,7 @@ _invutil_filter() _dir_filter() { sed \ - -e "s#$dump_file#DUMP_FILE#" \ + -e "s#$dump_file#DUMP_FILE#g" \ -e "s#$SCRATCH_DEV#SCRATCH_DEV#" \ -e "s#$SCRATCH_RAWDEV#SCRATCH_DEV#" \ -e "s#$dumptape#TAPE_DEV#" \ @@ -959,6 +992,9 @@ _parse_restore_args() --no-check-quota) do_quota_check=false ;; + -R) + restore_args="$restore_args $1" + ;; *) _fail "invalid argument to common.dump function: $1" ;; diff --git a/group b/group index 8a23320..efeb977 100644 --- a/group +++ b/group @@ -169,8 +169,8 @@ deprecated 056 dump ioctl auto quick 057 acl auto 058 acl auto -059 dump ioctl -060 dump ioctl +059 dump ioctl auto quick +060 dump ioctl auto quick 061 dump ioctl auto quick 062 attr udf auto quick 063 dump attr auto quick -- 1.7.0.4 From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 07:28:26 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3CSPlF009013 for ; Thu, 3 Nov 2011 07:28:26 -0500 X-ASG-Debug-ID: 1320323304-62bb039f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 40D9921C900; Thu, 3 Nov 2011 05:28:24 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id g1UnOhLgINvZEk9m; Thu, 03 Nov 2011 05:28:24 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RLwP8-0002A5-B1; Thu, 03 Nov 2011 12:28:22 +0000 Date: Thu, 3 Nov 2011 08:28:22 -0400 From: Christoph Hellwig To: Dmitry Monakhov Cc: Christoph Hellwig , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/8] xfstests: add fiemap operation to fsstress Subject: Re: [PATCH 6/8] xfstests: add fiemap operation to fsstress Message-ID: <20111103122822.GA8282@infradead.org> References: <1319849297-3506-1-git-send-email-dmonakhov@openvz.org> <1319849297-3506-7-git-send-email-dmonakhov@openvz.org> <20111102195534.GB22500@infradead.org> <87zkgdy2fi.fsf@dmbot.sw.ru> <87ty6lxv1v.fsf@dmbot.sw.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87ty6lxv1v.fsf@dmbot.sw.ru> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320323305 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79203 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 03, 2011 at 04:14:04PM +0400, Dmitry Monakhov wrote: > i've stuck immediately on first test ;(. > on my kernel 107'th test always failed (commit: 73a57c642cdfa660 > "1.1.0 release"), is it expected? Which xfs-tree and commit should i use? 106 and 107 have been failing basically forever - that's why they aren't part of the auto group. From dmonlist@gmail.com Thu Nov 3 09:25:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3EPPfi017874 for ; Thu, 3 Nov 2011 09:25:25 -0500 X-ASG-Debug-ID: 1320330322-1d7501ad0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 64CDD12FF47D for ; Thu, 3 Nov 2011 07:25:22 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id 11wVMVG7qZCYqpQd for ; Thu, 03 Nov 2011 07:25:22 -0700 (PDT) Received: by bkbzs8 with SMTP id zs8so1398030bkb.26 for ; Thu, 03 Nov 2011 07:25:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer; bh=morOJP/OCMqe0Q5t3RR1fM693S1suJ4b5Oce1G1YJ2Q=; b=ggBkeDnlN7V0BuEzGK27JZjwg9Utsh9cvfC0r5QBC17DevWYj7syZ/r7ID5kyg1esT iEFj7W+IaQ1OS/pZ/4fx0IiYODyiXmFecluD6nG7WRbbDH8faBIhsbvHSvbJmPBYit/v NxHQbcgXDHrEpSW3UeudA+XxIx6EHTmkS/1GY= Received: by 10.204.135.195 with SMTP id o3mr8416780bkt.80.1320330316541; Thu, 03 Nov 2011 07:25:16 -0700 (PDT) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id j9sm5771845bkd.2.2011.11.03.07.25.07 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 07:25:08 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 00/12] Bunch of new stress tests -v4 Subject: [PATCH 00/12] Bunch of new stress tests -v4 Date: Thu, 3 Nov 2011 18:24:49 +0400 Message-Id: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320330324 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79210 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Changes from v3 ( in request to Christoph's comments) - hard code fsstress's options for explicit regression tests - add two new regression tests Changes from v2 ( in request to Christoph's comments) - rearange patch sequance - codestyle cleanups - give better description - add tunable mask for FS_IOC_SETFLAGS test. LOG: # Following patches improves fsstress logging, # First three patches was already pulled by Chris to it's internal tree, # but not push it to public tree yet xfstests: fsstress dump inode info when possible xfstests: add different logging option to fsstress xfstests: fsstress should kill children tasks before exit # First patch add dump configuration in command line style, second use it's output xfstests: fsstress add command line style output for show_opts xfstests: freeze fsstress options for 117'th # Following patches add new operations to fsstress. xfstests: add fallocate support to fsstress xfstests: fsstress add FS_IOC_{SET,GET}FLAGS operations v2 xfstests: add fiemap operation to fsstress # Following testcase may fail on recent kernel in case of ext4 # Some fixes are already available here: # http://www.spinics.net/lists/linux-ext4/msg27857.html # http://www.spinics.net/lists/linux-ext4/msg28552.html xfstests: add a new test that runs fsstress under ENOSPC conditions xfstress: add regression testcase for d583fb87a3ff0 # Fixes available here: # http://patchwork.ozlabs.org/patch/120581/ # http://patchwork.ozlabs.org/patch/120582/ xfstests: add a new quota test that runs fsstress under ENOSPC conditions # Following testcase may fail on recent kernel in case of ext3/4 # In case of ext4 kernel will probably panic. xfstress: Test data journaling flag switch for a single file From dmonlist@gmail.com Thu Nov 3 09:25:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,J_CHICKENPOX_14, J_CHICKENPOX_42,J_CHICKENPOX_43,J_CHICKENPOX_52,J_CHICKENPOX_83, LOCAL_GNU_PATCH,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3EPQFY017879 for ; Thu, 3 Nov 2011 09:25:26 -0500 X-ASG-Debug-ID: 1320330324-4930018f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 78D5D5683B9 for ; Thu, 3 Nov 2011 07:25:24 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id DrPatcvzylL3Fp4E for ; Thu, 03 Nov 2011 07:25:24 -0700 (PDT) Received: by bkbzs8 with SMTP id zs8so1398069bkb.26 for ; Thu, 03 Nov 2011 07:25:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=7v/Cd85iZPSC9BWm9AcNdwWBvtZpC8uT74a4YRvs1F4=; b=LPXyH8Ik376FVsKK1Ci4t11Z6TWS7fkDXEA9+hKIqYT8tAHyHa7JuzyxCY8Qd3jK8J wmyhtbzXHjaBG0uJMaR/U1SMKGQ/wDosEPLxQIV/QRLhmfkk5LXmZ8RD2y0gWYzWnkRE UsJ3XJ/4xW3bWUAI/dBwijZ47DHIM0AYlIXHc= Received: by 10.204.10.67 with SMTP id o3mr8588980bko.3.1320330324243; Thu, 03 Nov 2011 07:25:24 -0700 (PDT) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id j9sm5771845bkd.2.2011.11.03.07.25.22 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 07:25:23 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 01/12] xfstests: fsstress dump inode info when possible Subject: [PATCH 01/12] xfstests: fsstress dump inode info when possible Date: Thu, 3 Nov 2011 18:24:50 +0400 Message-Id: <1320330301-2682-2-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320330325 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79211 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Fsstress exec behaviour is not completely determinated in case of low resources mode due to ENOMEM, ENOSPC, etc. In some places we call stat(2). This information may be halpfull for future investigations purposes. Let's dump stat info where possible. Reviewed-by: Christoph Hellwig Signed-off-by: Dmitry Monakhov --- ltp/fsstress.c | 83 +++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 55 insertions(+), 28 deletions(-) diff --git a/ltp/fsstress.c b/ltp/fsstress.c index c37cddf..51ecda2 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -1391,6 +1391,14 @@ zero_freq(void) p->freq = 0; } +void inode_info(char *str, size_t sz, struct stat64 *s, int verbose) +{ + if (verbose) + snprintf(str, sz, "[%ld %ld %d %d %lld %lld]", (long)s->st_ino, + (long)s->st_nlink, s->st_uid, s->st_gid, + (long long) s->st_blocks, (long long) s->st_size); +} + void allocsp_f(int opno, long r) { @@ -1402,6 +1410,7 @@ allocsp_f(int opno, long r) off64_t off; struct stat64 stb; int v; + char st[1024]; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { @@ -1428,6 +1437,7 @@ allocsp_f(int opno, long r) close(fd); return; } + inode_info(st, sizeof(st), &stb, v); lr = ((__int64_t)random() << 32) + random(); off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); off %= maxfsize; @@ -1435,9 +1445,10 @@ allocsp_f(int opno, long r) fl.l_start = off; fl.l_len = 0; e = xfsctl(f.path, fd, XFS_IOC_ALLOCSP64, &fl) < 0 ? errno : 0; - if (v) - printf("%d/%d: xfsctl(XFS_IOC_ALLOCSP64) %s %lld 0 %d\n", - procid, opno, f.path, (long long)off, e); + if (v) { + printf("%d/%d: xfsctl(XFS_IOC_ALLOCSP64) %s%s %lld 0 %d\n", + procid, opno, f.path, st, (long long)off, e); + } free_pathname(&f); close(fd); } @@ -1779,6 +1790,7 @@ dread_f(int opno, long r) off64_t off; struct stat64 stb; int v; + char st[1024]; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { @@ -1800,15 +1812,16 @@ dread_f(int opno, long r) if (fstat64(fd, &stb) < 0) { if (v) printf("%d/%d: dread - fstat64 %s failed %d\n", - procid, opno, f.path, errno); + procid, opno, f.path, errno); free_pathname(&f); close(fd); return; } + inode_info(st, sizeof(st), &stb, v); if (stb.st_size == 0) { if (v) - printf("%d/%d: dread - %s zero size\n", procid, opno, - f.path); + printf("%d/%d: dread - %s%s zero size\n", procid, opno, + f.path, st); free_pathname(&f); close(fd); return; @@ -1816,8 +1829,8 @@ dread_f(int opno, long r) if (xfsctl(f.path, fd, XFS_IOC_DIOINFO, &diob) < 0) { if (v) printf( - "%d/%d: dread - xfsctl(XFS_IOC_DIOINFO) %s failed %d\n", - procid, opno, f.path, errno); + "%d/%d: dread - xfsctl(XFS_IOC_DIOINFO) %s%s failed %d\n", + procid, opno, f.path, st, errno); free_pathname(&f); close(fd); return; @@ -1837,8 +1850,8 @@ dread_f(int opno, long r) e = read(fd, buf, len) < 0 ? errno : 0; free(buf); if (v) - printf("%d/%d: dread %s [%lld,%d] %d\n", - procid, opno, f.path, (long long)off, (int)len, e); + printf("%d/%d: dread %s%s [%lld,%d] %d\n", + procid, opno, f.path, st, (long long)off, (int)len, e); free_pathname(&f); close(fd); } @@ -1857,6 +1870,7 @@ dwrite_f(int opno, long r) off64_t off; struct stat64 stb; int v; + char st[1024]; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { @@ -1883,11 +1897,12 @@ dwrite_f(int opno, long r) close(fd); return; } + inode_info(st, sizeof(st), &stb, v); if (xfsctl(f.path, fd, XFS_IOC_DIOINFO, &diob) < 0) { if (v) printf("%d/%d: dwrite - xfsctl(XFS_IOC_DIOINFO)" - " %s failed %d\n", - procid, opno, f.path, errno); + " %s%s failed %d\n", + procid, opno, f.path, st, errno); free_pathname(&f); close(fd); return; @@ -1910,8 +1925,8 @@ dwrite_f(int opno, long r) e = write(fd, buf, len) < 0 ? errno : 0; free(buf); if (v) - printf("%d/%d: dwrite %s [%lld,%d] %d\n", - procid, opno, f.path, (long long)off, (int)len, e); + printf("%d/%d: dwrite %s%s [%lld,%d] %d\n", + procid, opno, f.path, st, (long long)off, (int)len, e); free_pathname(&f); close(fd); } @@ -1960,6 +1975,7 @@ freesp_f(int opno, long r) off64_t off; struct stat64 stb; int v; + char st[1024]; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { @@ -1986,6 +2002,7 @@ freesp_f(int opno, long r) close(fd); return; } + inode_info(st, sizeof(st), &stb, v); lr = ((__int64_t)random() << 32) + random(); off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); off %= maxfsize; @@ -1994,8 +2011,8 @@ freesp_f(int opno, long r) fl.l_len = 0; e = xfsctl(f.path, fd, XFS_IOC_FREESP64, &fl) < 0 ? errno : 0; if (v) - printf("%d/%d: xfsctl(XFS_IOC_FREESP64) %s %lld 0 %d\n", - procid, opno, f.path, (long long)off, e); + printf("%d/%d: xfsctl(XFS_IOC_FREESP64) %s%s %lld 0 %d\n", + procid, opno, f.path, st, (long long)off, e); free_pathname(&f); close(fd); } @@ -2198,6 +2215,7 @@ read_f(int opno, long r) off64_t off; struct stat64 stb; int v; + char st[1024]; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { @@ -2224,10 +2242,11 @@ read_f(int opno, long r) close(fd); return; } + inode_info(st, sizeof(st), &stb, v); if (stb.st_size == 0) { if (v) - printf("%d/%d: read - %s zero size\n", procid, opno, - f.path); + printf("%d/%d: read - %s%s zero size\n", procid, opno, + f.path, st); free_pathname(&f); close(fd); return; @@ -2240,8 +2259,8 @@ read_f(int opno, long r) e = read(fd, buf, len) < 0 ? errno : 0; free(buf); if (v) - printf("%d/%d: read %s [%lld,%d] %d\n", - procid, opno, f.path, (long long)off, (int)len, e); + printf("%d/%d: read %s%s [%lld,%d] %d\n", + procid, opno, f.path, st, (long long)off, (int)len, e); free_pathname(&f); close(fd); } @@ -2348,6 +2367,7 @@ resvsp_f(int opno, long r) off64_t off; struct stat64 stb; int v; + char st[1024]; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { @@ -2374,6 +2394,7 @@ resvsp_f(int opno, long r) close(fd); return; } + inode_info(st, sizeof(st), &stb, v); lr = ((__int64_t)random() << 32) + random(); off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); off %= maxfsize; @@ -2382,8 +2403,8 @@ resvsp_f(int opno, long r) fl.l_len = (off64_t)(random() % (1024 * 1024)); e = xfsctl(f.path, fd, XFS_IOC_RESVSP64, &fl) < 0 ? errno : 0; if (v) - printf("%d/%d: xfsctl(XFS_IOC_RESVSP64) %s %lld %lld %d\n", - procid, opno, f.path, + printf("%d/%d: xfsctl(XFS_IOC_RESVSP64) %s%s %lld %lld %d\n", + procid, opno, f.path, st, (long long)off, (long long)fl.l_len, e); free_pathname(&f); close(fd); @@ -2506,6 +2527,7 @@ truncate_f(int opno, long r) off64_t off; struct stat64 stb; int v; + char st[1024]; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { @@ -2523,14 +2545,15 @@ truncate_f(int opno, long r) free_pathname(&f); return; } + inode_info(st, sizeof(st), &stb, v); lr = ((__int64_t)random() << 32) + random(); off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); off %= maxfsize; e = truncate64_path(&f, off) < 0 ? errno : 0; check_cwd(); if (v) - printf("%d/%d: truncate %s %lld %d\n", procid, opno, f.path, - (long long)off, e); + printf("%d/%d: truncate %s%s %lld %d\n", procid, opno, f.path, + st, (long long)off, e); free_pathname(&f); } @@ -2574,6 +2597,7 @@ unresvsp_f(int opno, long r) off64_t off; struct stat64 stb; int v; + char st[1024]; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { @@ -2600,6 +2624,7 @@ unresvsp_f(int opno, long r) close(fd); return; } + inode_info(st, sizeof(st), &stb, v); lr = ((__int64_t)random() << 32) + random(); off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); off %= maxfsize; @@ -2608,8 +2633,8 @@ unresvsp_f(int opno, long r) fl.l_len = (off64_t)(random() % (1 << 20)); e = xfsctl(f.path, fd, XFS_IOC_UNRESVSP64, &fl) < 0 ? errno : 0; if (v) - printf("%d/%d: xfsctl(XFS_IOC_UNRESVSP64) %s %lld %lld %d\n", - procid, opno, f.path, + printf("%d/%d: xfsctl(XFS_IOC_UNRESVSP64) %s%s %lld %lld %d\n", + procid, opno, f.path, st, (long long)off, (long long)fl.l_len, e); free_pathname(&f); close(fd); @@ -2627,6 +2652,7 @@ write_f(int opno, long r) off64_t off; struct stat64 stb; int v; + char st[1024]; init_pathname(&f); if (!get_fname(FT_REGm, r, &f, NULL, NULL, &v)) { @@ -2653,6 +2679,7 @@ write_f(int opno, long r) close(fd); return; } + inode_info(st, sizeof(st), &stb, v); lr = ((__int64_t)random() << 32) + random(); off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); off %= maxfsize; @@ -2663,8 +2690,8 @@ write_f(int opno, long r) e = write(fd, buf, len) < 0 ? errno : 0; free(buf); if (v) - printf("%d/%d: write %s [%lld,%d] %d\n", - procid, opno, f.path, (long long)off, (int)len, e); + printf("%d/%d: write %s%s [%lld,%d] %d\n", + procid, opno, f.path, st, (long long)off, (int)len, e); free_pathname(&f); close(fd); } -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 09:25:34 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_53,J_CHICKENPOX_64,J_CHICKENPOX_73,J_CHICKENPOX_84, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3EPXsL017913 for ; Thu, 3 Nov 2011 09:25:33 -0500 X-ASG-Debug-ID: 1320330322-1d7501ad0001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D60F512FF48D for ; Thu, 3 Nov 2011 07:25:32 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id 1921OvEOg0Gpjonm for ; Thu, 03 Nov 2011 07:25:32 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1398030bkb.26 for ; Thu, 03 Nov 2011 07:25:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=wTIpKCSj1HcPR2Pzv9L0PIjH0OkjaAl5JAkbXh+cpqo=; b=KzUJCUulpRyGz+BewS+lmUOLpw+xyeFSAS/D6nkPgueNRNF/ZXVL4JUaTPlJw0Za+h splyCDVCosog7wnhHUzDXBMnrVVSGmQ25rpoCETyX0MkRIy6yLC1T0EACu51x8ikKiW4 dfcoRD3zrTLFTAjgpJm1L12kwsx4fqDOhqt4Y= Received: by 10.204.142.80 with SMTP id p16mr8451730bku.10.1320330326254; Thu, 03 Nov 2011 07:25:26 -0700 (PDT) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id j9sm5771845bkd.2.2011.11.03.07.25.24 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 07:25:25 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 02/12] xfstests: add different logging option to fsstress Subject: [PATCH 02/12] xfstests: add different logging option to fsstress Date: Thu, 3 Nov 2011 18:24:51 +0400 Message-Id: <1320330301-2682-3-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320330332 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79210 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currently the only way to log fsstress's output is to redirect it's shared stdout to pipe which is very painfull because: 1) Pipe writers are serialized via i_mutex so we waste cpu-cores power on stupid sinchronization for loging purpose, instead of hunting real race conditions, and bugs inside file system. 2) Usually output is corrupted due to luck of sychronization on shared stdout. Since fsstress's children operate on independend paths, let's just open didicated log file for each child and simply avoid useless sycnhronization. Reviewed-by: Christoph Hellwig Signed-off-by: Dmitry Monakhov --- ltp/fsstress.c | 33 ++++++++++++++++++++++++++++++++- 1 files changed, 32 insertions(+), 1 deletions(-) diff --git a/ltp/fsstress.c b/ltp/fsstress.c index 51ecda2..c7001f3 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -258,6 +258,8 @@ int main(int argc, char **argv) char buf[10]; int c; char *dirname = NULL; + char *logname = NULL; + char rpath[PATH_MAX]; int fd; int i; int j; @@ -273,7 +275,7 @@ int main(int argc, char **argv) nops = sizeof(ops) / sizeof(ops[0]); ops_end = &ops[nops]; myprog = argv[0]; - while ((c = getopt(argc, argv, "d:e:f:i:m:n:p:rs:vwzHS")) != -1) { + while ((c = getopt(argc, argv, "d:e:f:i:m:n:o:p:rs:vwzHS")) != -1) { switch (c) { case 'd': dirname = optarg; @@ -311,6 +313,10 @@ int main(int argc, char **argv) case 'n': operations = atoi(optarg); break; + case 'o': + logname = optarg; + break; + case 'p': nproc = atoi(optarg); break; @@ -351,10 +357,26 @@ int main(int argc, char **argv) } (void)mkdir(dirname, 0777); + if (logname && logname[0] != '/') { + if (getcwd(rpath, sizeof(rpath)) < 0){ + perror("getcwd failed"); + exit(1); + } + } else { + rpath[0] = '\0'; + } if (chdir(dirname) < 0) { perror(dirname); exit(1); } + if (logname) { + char path[PATH_MAX]; + snprintf(path, sizeof(path), "%s/%s", rpath, logname); + if (freopen(path, "a", stdout) == NULL) { + perror("freopen logfile failed"); + exit(1); + } + } sprintf(buf, "fss%x", (unsigned int)getpid()); fd = creat(buf, 0666); if (lseek64(fd, (off64_t)(MAXFSIZE32 + 1ULL), SEEK_SET) < 0) @@ -409,6 +431,15 @@ int main(int argc, char **argv) close(fd); for (i = 0; i < nproc; i++) { if (fork() == 0) { + if (logname) { + char path[PATH_MAX]; + snprintf(path, sizeof(path), "%s/%s.%d", + rpath, logname, i); + if (freopen(path, "a", stdout) == NULL) { + perror("freopen logfile failed"); + exit(1); + } + } procid = i; doproc(); return 0; -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 09:25:36 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,J_CHICKENPOX_14, J_CHICKENPOX_43,J_CHICKENPOX_92,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3EPZRM017927 for ; Thu, 3 Nov 2011 09:25:36 -0500 X-ASG-Debug-ID: 1320330324-4930018f0001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 27AFA5683CC for ; Thu, 3 Nov 2011 07:25:34 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id fII8HWNYAhkHcU0s for ; Thu, 03 Nov 2011 07:25:34 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1398069bkb.26 for ; Thu, 03 Nov 2011 07:25:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=lwrKmQs+5w3+7Nzd3wTkq/sIcyUdMK+X3RK0zcTiwpg=; b=ck5BrVTGJIfLeNGGNeaJrUIyHabpwnQPUNdtktc7Ux5Y/1jWxQiAusHKaCjnXMllZ1 piIWfEP1Bj79YGFDbkV88aJNzXML98egwAiRWzDW9w5N/n1NJ9h3BD35r+Q4pP/g5Z88 NMv68o1sQmC8TSzmiAxJ2ZcqpO/yrCLzT3a94= Received: by 10.204.141.65 with SMTP id l1mr8315692bku.82.1320330334441; Thu, 03 Nov 2011 07:25:34 -0700 (PDT) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id j9sm5771845bkd.2.2011.11.03.07.25.32 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 07:25:33 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 06/12] xfstests: add fallocate support to fsstress Subject: [PATCH 06/12] xfstests: add fallocate support to fsstress Date: Thu, 3 Nov 2011 18:24:55 +0400 Message-Id: <1320330301-2682-7-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320330335 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79211 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Add tests for fallocate(2) syscall - fallocate: reserve the disk space - punch: de-allocates the disk space Since FALLOC_FL_PUNCH_HOLE is relatively new it's value defined explicitly if not yet defined. Later we may clear that define. Signed-off-by: Dmitry Monakhov --- ltp/fsstress.c | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 126 insertions(+), 1 deletions(-) diff --git a/ltp/fsstress.c b/ltp/fsstress.c index 77e0682..f4c8d81 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -24,7 +24,13 @@ #ifdef HAVE_ATTR_ATTRIBUTES_H #include #endif - +#ifdef FALLOCATE +#include +#ifndef FALLOC_FL_PUNCH_HOLE +/* Copy-paste from linux/falloc.h */ +#define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ +#endif +#endif #ifndef HAVE_ATTR_LIST #define attr_list(path, buf, size, flags, cursor) (errno = -ENOSYS, -1) #endif @@ -48,6 +54,7 @@ typedef enum { OP_CREAT, OP_DREAD, OP_DWRITE, + OP_FALLOCATE, OP_FDATASYNC, OP_FREESP, OP_FSYNC, @@ -55,6 +62,7 @@ typedef enum { OP_LINK, OP_MKDIR, OP_MKNOD, + OP_PUNCH, OP_READ, OP_READLINK, OP_RENAME, @@ -128,6 +136,7 @@ void chown_f(int, long); void creat_f(int, long); void dread_f(int, long); void dwrite_f(int, long); +void fallocate_f(int, long); void fdatasync_f(int, long); void freesp_f(int, long); void fsync_f(int, long); @@ -135,6 +144,7 @@ void getdents_f(int, long); void link_f(int, long); void mkdir_f(int, long); void mknod_f(int, long); +void punch_f(int, long); void read_f(int, long); void readlink_f(int, long); void rename_f(int, long); @@ -159,6 +169,7 @@ opdesc_t ops[] = { { OP_CREAT, "creat", creat_f, 4, 1 }, { OP_DREAD, "dread", dread_f, 4, 0 }, { OP_DWRITE, "dwrite", dwrite_f, 4, 1 }, + { OP_FALLOCATE, "fallocate", fallocate_f, 1, 1 }, { OP_FDATASYNC, "fdatasync", fdatasync_f, 1, 1 }, { OP_FREESP, "freesp", freesp_f, 1, 1 }, { OP_FSYNC, "fsync", fsync_f, 1, 1 }, @@ -166,6 +177,7 @@ opdesc_t ops[] = { { OP_LINK, "link", link_f, 1, 1 }, { OP_MKDIR, "mkdir", mkdir_f, 2, 1 }, { OP_MKNOD, "mknod", mknod_f, 2, 1 }, + { OP_PUNCH, "punch", punch_f, 1, 1 }, { OP_READ, "read", read_f, 1, 0 }, { OP_READLINK, "readlink", readlink_f, 1, 0 }, { OP_RENAME, "rename", rename_f, 2, 1 }, @@ -2012,6 +2024,63 @@ dwrite_f(int opno, long r) } void +fallocate_f(int opno, long r) +{ +#ifdef FALLOCATE + int e; + pathname_t f; + int fd; + __int64_t lr; + off64_t off; + off64_t len; + struct stat64 stb; + int v; + char st[1024]; + int mode = 0; + + init_pathname(&f); + if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { + if (v) + printf("%d/%d: fallocate - no filename\n", procid, opno); + free_pathname(&f); + return; + } + fd = open_path(&f, O_RDWR); + e = fd < 0 ? errno : 0; + check_cwd(); + if (fd < 0) { + if (v) + printf("%d/%d: fallocate - open %s failed %d\n", + procid, opno, f.path, e); + free_pathname(&f); + return; + } + if (fstat64(fd, &stb) < 0) { + if (v) + printf("%d/%d: fallocate - fstat64 %s failed %d\n", + procid, opno, f.path, errno); + free_pathname(&f); + close(fd); + return; + } + inode_info(st, sizeof(st), &stb, v); + lr = ((__int64_t)random() << 32) + random(); + off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); + off %= maxfsize; + len = (off64_t)(random() % (1024 * 1024)); + mode |= FALLOC_FL_KEEP_SIZE & random(); + e = fallocate(fd, mode, (loff_t)off, (loff_t)len) < 0 ? errno : 0; + if (v) + printf("%d/%d: fallocate(%d) %s %st %lld %lld %d\n", + procid, opno, mode, + f.path, st, (long long)off, (long long)len, e); + free_pathname(&f); + close(fd); +#endif +} + + +void fdatasync_f(int opno, long r) { int e; @@ -2284,6 +2353,62 @@ mknod_f(int opno, long r) } void +punch_f(int opno, long r) +{ +#ifdef FALLOCATE + int e; + pathname_t f; + int fd; + __int64_t lr; + off64_t off; + off64_t len; + struct stat64 stb; + int v; + char st[1024]; + int mode = FALLOC_FL_PUNCH_HOLE; + + init_pathname(&f); + if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { + if (v) + printf("%d/%d: punch hole - no filename\n", procid, opno); + free_pathname(&f); + return; + } + fd = open_path(&f, O_RDWR); + e = fd < 0 ? errno : 0; + check_cwd(); + if (fd < 0) { + if (v) + printf("%d/%d: punch hole - open %s failed %d\n", + procid, opno, f.path, e); + free_pathname(&f); + return; + } + if (fstat64(fd, &stb) < 0) { + if (v) + printf("%d/%d: punch hole - fstat64 %s failed %d\n", + procid, opno, f.path, errno); + free_pathname(&f); + close(fd); + return; + } + inode_info(st, sizeof(st), &stb, v); + lr = ((__int64_t)random() << 32) + random(); + off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); + off %= maxfsize; + len = (off64_t)(random() % (1024 * 1024)); + mode |= FALLOC_FL_KEEP_SIZE & random(); + e = fallocate(fd, mode, (loff_t)off, (loff_t)len) < 0 ? errno : 0; + if (v) + printf("%d/%d: punch hole(%d) %s %s %lld %lld %d\n", + procid, opno, mode, + f.path, st, (long long)off, (long long)len, e); + free_pathname(&f); + close(fd); +#endif +} + +void read_f(int opno, long r) { char *buf; -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 09:25:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_84,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3EPcQl017943 for ; Thu, 3 Nov 2011 09:25:38 -0500 X-ASG-Debug-ID: 1320330324-4930018f0002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8C4C05683D3 for ; Thu, 3 Nov 2011 07:25:37 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id e3DMoxBlh16uI3dP for ; Thu, 03 Nov 2011 07:25:37 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1398069bkb.26 for ; Thu, 03 Nov 2011 07:25:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=9EgyH5BgtfikhoD4i+eHj+qkVSdEvwL54q8oYLUuIpU=; b=SxzmrzihwGGhK2mHe+6lVKJ0cAMpkRbLPwssOljRp3EmVpMM7ekpTNiedPSU5b74LX SJSytEXfUNcmEZ8ZPBDMp5/oQjHWsUgCPkh05+6P3UrPUn3vjajc9Qe2uOj3j4wo9AxC gpcS1WMjLs9RAZNglTCsKK7NrkKADvVhBV8Xc= Received: by 10.204.13.133 with SMTP id c5mr8669014bka.15.1320330328230; Thu, 03 Nov 2011 07:25:28 -0700 (PDT) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id j9sm5771845bkd.2.2011.11.03.07.25.26 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 07:25:27 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 03/12] xfstests: fsstress should kill children tasks before exit Subject: [PATCH 03/12] xfstests: fsstress should kill children tasks before exit Date: Thu, 3 Nov 2011 18:24:52 +0400 Message-Id: <1320330301-2682-4-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320330337 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79211 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean It is very hard to predict runtime for fsstress. In many cases it is useful to give test to run a reasonable time, and then kill it. But currently there is no reliable way to kill test without leaving running children. This patch add sanity cleanup logic which looks follow: - On sigterm received by parent, it resend signal to it's children - Wait for each child to terminates - EXTRA_SANITY: Even if parent was killed by other signal, children will be terminated with SIGKILL to preven staled children. So now one can simply run fsstress like this: ./fsstress -p 1000 -n999999999 -d $TEST_DIR & PID=$! sleep 300 kill $PID wait $PID Signed-off-by: Dmitry Monakhov --- aclocal.m4 | 5 +++++ configure.in | 1 + ltp/fsstress.c | 37 ++++++++++++++++++++++++++++++++++++- 3 files changed, 42 insertions(+), 1 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index 168eb59..5532606 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -16,6 +16,11 @@ AC_DEFUN([AC_PACKAGE_WANT_LINUX_FIEMAP_H], AC_SUBST(have_fiemap) ]) +AC_DEFUN([AC_PACKAGE_WANT_LINUX_PRCTL_H], + [ AC_CHECK_HEADERS([sys/prctl.h], [ have_prctl=true ], [ have_prctl=false ]) + AC_SUBST(have_prctl) + ]) + AC_DEFUN([AC_PACKAGE_WANT_FALLOCATE], [ AC_MSG_CHECKING([for fallocate]) AC_TRY_LINK([ diff --git a/configure.in b/configure.in index c697b4f..76d23e4 100644 --- a/configure.in +++ b/configure.in @@ -67,6 +67,7 @@ in AC_PACKAGE_WANT_DMAPI AC_PACKAGE_WANT_LINUX_FIEMAP_H AC_PACKAGE_WANT_FALLOCATE + AC_PACKAGE_WANT_LINUX_PRCTL_H ;; esac diff --git a/ltp/fsstress.c b/ltp/fsstress.c index c7001f3..133a247 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -28,7 +28,9 @@ #ifndef HAVE_ATTR_LIST #define attr_list(path, buf, size, flags, cursor) (errno = -ENOSYS, -1) #endif - +#ifdef HAVE_SYS_PRCTL_H +#include +#endif #include #define XFS_ERRTAG_MAX 17 #define XFS_IDMODULO_MAX 31 /* user/group IDs (1 << x) */ @@ -209,6 +211,7 @@ int rtpct; unsigned long seed = 0; ino_t top_ino; int verbose = 0; +sig_atomic_t should_stop = 0; void add_to_flist(int, int, int); void append_pathname(pathname_t *, char *); @@ -253,6 +256,11 @@ void usage(void); void write_freq(void); void zero_freq(void); +void sg_handler(int signum) +{ + should_stop = 1; +} + int main(int argc, char **argv) { char buf[10]; @@ -269,6 +277,7 @@ int main(int argc, char **argv) ptrdiff_t srval; int nousage = 0; xfs_error_injection_t err_inj; + struct sigaction action; errrange = errtag = 0; umask(0); @@ -429,8 +438,27 @@ int main(int argc, char **argv) } } else close(fd); + + setpgid(0, 0); + action.sa_handler = sg_handler; + sigemptyset(&action.sa_mask); + action.sa_flags = 0; + if (sigaction(SIGTERM, &action, 0)) { + perror("sigaction failed"); + exit(1); + } + for (i = 0; i < nproc; i++) { if (fork() == 0) { + action.sa_handler = SIG_DFL; + sigemptyset(&action.sa_mask); + if (sigaction(SIGTERM, &action, 0)) + return 1; +#ifdef HAVE_SYS_PRCTL_H + prctl(PR_SET_PDEATHSIG, SIGKILL); + if (getppid() == 1) /* parent died already? */ + return 0; +#endif if (logname) { char path[PATH_MAX]; snprintf(path, sizeof(path), "%s/%s.%d", @@ -445,8 +473,15 @@ int main(int argc, char **argv) return 0; } } + while (wait(&stat) > 0 && !should_stop) { + continue; + } + action.sa_flags = SA_RESTART; + sigaction(SIGTERM, &action, 0); + kill(-getpid(), SIGTERM); while (wait(&stat) > 0) continue; + if (errtag != 0) { err_inj.errtag = 0; err_inj.fd = fd; -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 09:25:39 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_14, J_CHICKENPOX_43,J_CHICKENPOX_52,J_CHICKENPOX_64,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3EPcgQ017947 for ; Thu, 3 Nov 2011 09:25:39 -0500 X-ASG-Debug-ID: 1320330322-1d7501ad0002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1AA7012FF495 for ; Thu, 3 Nov 2011 07:25:36 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id CD0DFu43iGitE4Fc for ; Thu, 03 Nov 2011 07:25:36 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1398030bkb.26 for ; Thu, 03 Nov 2011 07:25:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=3+vHByiBfpQezOj0eiaSFOIBtgpeklBS/upqbTlF5V0=; b=qrXXcxnG1Sf48MMI/CgLudQz2F80bI1a0DFpuljIkcodHGRVv5/neg15Dcu6L8CvnW nW0MHwJ5GEY7BhzprzsvMCDbtoG7hjGob3ChdiOXLFqdz8fpp9ya/ps3FhBBdfL+FdIR IByS0PohxM4muMbBvihBsIFE12hmpwz2+5RY4= Received: by 10.204.129.151 with SMTP id o23mr8531580bks.51.1320330336244; Thu, 03 Nov 2011 07:25:36 -0700 (PDT) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id j9sm5771845bkd.2.2011.11.03.07.25.34 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 07:25:35 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 07/12] xfstests: fsstress add FS_IOC_{SET,GET}FLAGS operations v2 Subject: [PATCH 07/12] xfstests: fsstress add FS_IOC_{SET,GET}FLAGS operations v2 Date: Thu, 3 Nov 2011 18:24:56 +0400 Message-Id: <1320330301-2682-8-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320330337 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79210 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Add two new operations: - getattr: ioctl(fd, FS_IOC_GETFLAGS, &fl) - setattr: ioctl(fd, FS_IOC_SETFLAGS, &random_flags) Attribute mask may be passed via -M opt, by default is (~0). By default FS_IOC_SETFLAGS has zero probability because it may produce inodes with APPEND or IMMUTABLE flags which are not deletable by default. Let's assumes that one who enable it knows how to delete such inodes. For example like follows: find $TEST_PATH -exec chattr -i -a {} \; rm -rf $TEST_PATH Signed-off-by: Dmitry Monakhov --- aclocal.m4 | 4 +++ configure.in | 1 + ltp/fsstress.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 72 insertions(+), 1 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index 5532606..5739004 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -21,6 +21,10 @@ AC_DEFUN([AC_PACKAGE_WANT_LINUX_PRCTL_H], AC_SUBST(have_prctl) ]) +AC_DEFUN([AC_PACKAGE_WANT_LINUX_FS_H], + [ AC_CHECK_HEADER([linux/fs.h]) + ]) + AC_DEFUN([AC_PACKAGE_WANT_FALLOCATE], [ AC_MSG_CHECKING([for fallocate]) AC_TRY_LINK([ diff --git a/configure.in b/configure.in index 76d23e4..3b40e55 100644 --- a/configure.in +++ b/configure.in @@ -68,6 +68,7 @@ in AC_PACKAGE_WANT_LINUX_FIEMAP_H AC_PACKAGE_WANT_FALLOCATE AC_PACKAGE_WANT_LINUX_PRCTL_H + AC_PACKAGE_WANT_LINUX_FS_H ;; esac diff --git a/ltp/fsstress.c b/ltp/fsstress.c index f4c8d81..997f068 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -37,6 +37,15 @@ #ifdef HAVE_SYS_PRCTL_H #include #endif + +#include +#ifndef FS_IOC_GETFLAGS +#define FS_IOC_GETFLAGS _IOR('f', 1, long) +#endif +#ifndef FS_IOC_SETFLAGS +#define FS_IOC_SETFLAGS _IOW('f', 2, long) +#endif + #include #define XFS_ERRTAG_MAX 17 #define XFS_IDMODULO_MAX 31 /* user/group IDs (1 << x) */ @@ -58,6 +67,7 @@ typedef enum { OP_FDATASYNC, OP_FREESP, OP_FSYNC, + OP_GETATTR, OP_GETDENTS, OP_LINK, OP_MKDIR, @@ -68,6 +78,7 @@ typedef enum { OP_RENAME, OP_RESVSP, OP_RMDIR, + OP_SETATTR, OP_SETXATTR, OP_STAT, OP_SYMLINK, @@ -140,6 +151,7 @@ void fallocate_f(int, long); void fdatasync_f(int, long); void freesp_f(int, long); void fsync_f(int, long); +void getattr_f(int, long); void getdents_f(int, long); void link_f(int, long); void mkdir_f(int, long); @@ -150,6 +162,7 @@ void readlink_f(int, long); void rename_f(int, long); void resvsp_f(int, long); void rmdir_f(int, long); +void setattr_f(int, long); void setxattr_f(int, long); void stat_f(int, long); void symlink_f(int, long); @@ -173,6 +186,7 @@ opdesc_t ops[] = { { OP_FDATASYNC, "fdatasync", fdatasync_f, 1, 1 }, { OP_FREESP, "freesp", freesp_f, 1, 1 }, { OP_FSYNC, "fsync", fsync_f, 1, 1 }, + { OP_GETATTR, "getattr", getattr_f, 1, 0 }, { OP_GETDENTS, "getdents", getdents_f, 1, 0 }, { OP_LINK, "link", link_f, 1, 1 }, { OP_MKDIR, "mkdir", mkdir_f, 2, 1 }, @@ -183,6 +197,7 @@ opdesc_t ops[] = { { OP_RENAME, "rename", rename_f, 2, 1 }, { OP_RESVSP, "resvsp", resvsp_f, 1, 1 }, { OP_RMDIR, "rmdir", rmdir_f, 1, 1 }, + { OP_SETATTR, "setattr", setattr_f, 0, 1 }, { OP_SETXATTR, "setxattr", setxattr_f, 1, 1 }, { OP_STAT, "stat", stat_f, 1, 0 }, { OP_SYMLINK, "symlink", symlink_f, 2, 1 }, @@ -218,6 +233,7 @@ int nops; int nproc = 1; int operations = 1; unsigned int idmodulo = XFS_IDMODULO_MAX; +unsigned int attr_mask = ~0; int procid; int rtpct; unsigned long seed = 0; @@ -296,7 +312,7 @@ int main(int argc, char **argv) nops = sizeof(ops) / sizeof(ops[0]); ops_end = &ops[nops]; myprog = argv[0]; - while ((c = getopt(argc, argv, "d:e:f:i:m:n:o:p:rs:S:vwzH")) != -1) { + while ((c = getopt(argc, argv, "d:e:f:i:m:M:n:o:p:rs:S:vwzH")) != -1) { switch (c) { case 'd': dirname = optarg; @@ -356,6 +372,9 @@ int main(int argc, char **argv) case 'z': zero_freq(); break; + case 'M': + attr_mask = strtoul(optarg, NULL, 0); + break; case 'S': i = 0; if (optarg[0] == 'c') @@ -2199,6 +2218,29 @@ fsync_f(int opno, long r) } void +getattr_f(int opno, long r) +{ + int fd; + int e; + pathname_t f; + uint fl; + int v; + + init_pathname(&f); + if (!get_fname(FT_ANYm, r, &f, NULL, NULL, &v)) + append_pathname(&f, "."); + fd = open_path(&f, O_RDWR); + e = fd < 0 ? errno : 0; + check_cwd(); + + e = ioctl(fd, FS_IOC_GETFLAGS, &fl); + if (v) + printf("%d/%d: getattr %s %u %d\n", procid, opno, f.path, fl, e); + free_pathname(&f); + close(fd); +} + +void getdents_f(int opno, long r) { DIR *dir; @@ -2644,6 +2686,30 @@ rmdir_f(int opno, long r) } void +setattr_f(int opno, long r) +{ + int fd; + int e; + pathname_t f; + uint fl; + int v; + + init_pathname(&f); + if (!get_fname(FT_ANYm, r, &f, NULL, NULL, &v)) + append_pathname(&f, "."); + fd = open_path(&f, O_RDWR); + e = fd < 0 ? errno : 0; + check_cwd(); + + fl = attr_mask & (uint)random(); + e = ioctl(fd, FS_IOC_SETFLAGS, &fl); + if (v) + printf("%d/%d: setattr %s %x %d\n", procid, opno, f.path, fl, e); + free_pathname(&f); + close(fd); +} + +void stat_f(int opno, long r) { int e; -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 09:25:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_64,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3EPeDM017968 for ; Thu, 3 Nov 2011 09:25:41 -0500 X-ASG-Debug-ID: 1320330322-1d7501ad0003-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 00DAC12FF497 for ; Thu, 3 Nov 2011 07:25:39 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id pSUjAs4dkCsSzCsn for ; Thu, 03 Nov 2011 07:25:39 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1398030bkb.26 for ; Thu, 03 Nov 2011 07:25:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=LlqyoRSo8YMqqaSZNPVlMIVae72EkbrpmiZGJBXnCTo=; b=P2MjMKJD83gvyowddmg+SdRMx+fiJx7AMklPg4Re+MEEVu/ufBIOoEGkSTe5giQDqP MQOualoFLCAURpyhzKJnK1oeyWTp+/Weo2reUYJSYiIemTzVwLJbqQb148uzluMVKqGw AdVewdqF9nCwKbyKWJOCB7VDxNfe3k7msyEqc= Received: by 10.204.148.145 with SMTP id p17mr8459939bkv.61.1320330330072; Thu, 03 Nov 2011 07:25:30 -0700 (PDT) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id j9sm5771845bkd.2.2011.11.03.07.25.28 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 07:25:29 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 04/12] xfstests: fsstress add command line style output for show_opts Subject: [PATCH 04/12] xfstests: fsstress add command line style output for show_opts Date: Thu, 3 Nov 2011 18:24:53 +0400 Message-Id: <1320330301-2682-5-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320330340 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79210 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Once some combination of seed+fs_ops result in regression it is reasonable to document that combination. It is usefull to dump that configuration in command line style. Later this line may be simply hardcoded in to regression test. Signed-off-by: Dmitry Monakhov --- 070 | 2 +- 117 | 2 +- ltp/fsstress.c | 22 ++++++++++++++++++---- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/070 b/070 index 4458011..f48c33c 100755 --- a/070 +++ b/070 @@ -62,7 +62,7 @@ $FSSTRESS_PROG \ -f unresvsp=0 \ -f attr_set=100 \ -f attr_remove=100 \ - -S -p 1 -n 10000 >$seq.full 2>&1 + -p 1 -n 10000 -S c >$seq.full 2>&1 status=$? exit diff --git a/117 b/117 index fcf0485..edec157 100755 --- a/117 +++ b/117 @@ -85,7 +85,7 @@ while [ $i -lt $ITERATIONS ]; do -f attr_set=100 \ -f attr_remove=100 \ -s $seed \ - -S -p 1 -n 1000 >>$seq.full 2>&1 + -p 1 -n 1000 -S c >>$seq.full 2>&1 let i=$i+1 done diff --git a/ltp/fsstress.c b/ltp/fsstress.c index 133a247..77e0682 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -284,7 +284,7 @@ int main(int argc, char **argv) nops = sizeof(ops) / sizeof(ops[0]); ops_end = &ops[nops]; myprog = argv[0]; - while ((c = getopt(argc, argv, "d:e:f:i:m:n:o:p:rs:vwzHS")) != -1) { + while ((c = getopt(argc, argv, "d:e:f:i:m:n:o:p:rs:S:vwzH")) != -1) { switch (c) { case 'd': dirname = optarg; @@ -345,7 +345,10 @@ int main(int argc, char **argv) zero_freq(); break; case 'S': - show_ops(0, NULL); + i = 0; + if (optarg[0] == 'c') + i = 1; + show_ops(1, NULL); printf("\n"); nousage=1; break; @@ -1310,7 +1313,8 @@ show_ops(int flag, char *lead_str) x+=printf("%s ", p->name); } printf("\n"); - } else { + } else if (flag == 0) { + /* Table view style */ int f; for (f = 0, p = ops; p < ops_end; p++) f += p->freq; @@ -1327,6 +1331,16 @@ show_ops(int flag, char *lead_str) (p->iswrite == 0) ? " " : "write op"); } } + } else { + /* Command line style */ + if (lead_str != NULL) + printf("%s", lead_str); + printf ("-z -s %ld -m %d -n %d -p %d ", seed, idmodulo, + operations, nproc); + for (p = ops; p < ops_end; p++) + if (p->freq > 0) + printf("-f%s=%d ",p->name, p->freq); + printf("\n"); } } @@ -1433,7 +1447,7 @@ usage(void) printf(" -v specifies verbose mode\n"); printf(" -w zeros frequencies of non-write operations\n"); printf(" -z zeros frequencies of all operations\n"); - printf(" -S prints the table of operations (omitting zero frequency)\n"); + printf(" -S [c,t] prints the list of operations (omitting zero frequency) in command line or table style\n"); printf(" -H prints usage and exits\n"); } -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 09:25:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3EPhSr017984 for ; Thu, 3 Nov 2011 09:25:43 -0500 X-ASG-Debug-ID: 1320330324-4930018f0003-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F0E775683DE for ; Thu, 3 Nov 2011 07:25:42 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id V7DaKsaqGYbhAxZW for ; Thu, 03 Nov 2011 07:25:42 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1398069bkb.26 for ; Thu, 03 Nov 2011 07:25:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=ea/9F15k5AIV7M3Fz1LosYy4zrUGwswABYYTd8kYo1w=; b=oFmK9PYW1d/+pYoKrYgdP/opgMCyo0C2Lyxsn83rSqgAVEtIFwmho2WMM2+2UkU8a8 0OZqX833Wx/p4qEG0Qs1vgRJqzK/vrRNfNK0opI76du2Nmox1Qis70lwBP+FDE78cZW6 x7PlZosB1UsSNQz+GzOwkgzcEvCgxD6a9mK8M= Received: by 10.204.148.145 with SMTP id p17mr8460154bkv.61.1320330342307; Thu, 03 Nov 2011 07:25:42 -0700 (PDT) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id j9sm5771845bkd.2.2011.11.03.07.25.40 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 07:25:41 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 10/12] xfstests: add a new quota test that runs fsstress under ENOSPC conditions Subject: [PATCH 10/12] xfstests: add a new quota test that runs fsstress under ENOSPC conditions Date: Thu, 3 Nov 2011 18:24:59 +0400 Message-Id: <1320330301-2682-11-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320330342 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79211 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean - Same as 264 but with quota enabled. - IO performed from $qa_user user - fsstress granted with CAP_CHOWN capability. Signed-off-by: Dmitry Monakhov --- 265 | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 265.out | 8 +++++ group | 1 + 3 files changed, 117 insertions(+), 0 deletions(-) create mode 100755 265 create mode 100644 265.out diff --git a/265 b/265 new file mode 100755 index 0000000..b568fdd --- /dev/null +++ b/265 @@ -0,0 +1,108 @@ +#! /bin/bash +# FSQA Test No. 265 +# +# Run fsstress and ENSPC hitters in parallel, check quota and +# fs consistency an the end +# +#----------------------------------------------------------------------- +# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +# creator +owner=dmonakhov@openvz.org + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter +. ./common.quota + +# Disable all sync operations to get higher load +FSSTRESS_AVOID="$FSSTRESS_AVOID -ffsync=0 -fsync=0 -ffdatasync=0" +_workout() +{ + echo "" + echo "Run fsstress" + echo "" + num_iterations=10 + enospc_time=2 + out=$SCRATCH_MNT/fsstress.$$ + args="-p128 -n999999999 -f setattr=1 $FSSTRESS_AVOID -d $out" + echo "fsstress $args" >> $here/$seq.full + # Grant chown capability + cp $FSSTRESS_PROG $tmp.fsstress.bin + setcap cap_chown=epi $tmp.fsstress.bin + + (su $qa_user -c "$tmp.fsstress.bin $args" &) > /dev/null 2>&1 + pid=$! + + echo "Run dd writers in parallel" + for ((i=0; i < num_iterations; i++)) + do + # File will be opened with O_TRUNC each time + su $qa_user -c "dd if=/dev/zero \ + of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M " \ + > /dev/null 2>&1 + sleep $enospc_time + done + + killall $tmp.fsstress.bin + wait $pid +} + +# real QA test starts here +_supported_fs generic +_supported_os Linux +_require_scratch +_require_quota +_require_user +_need_to_be_root + +umount $SCRATCH_DEV 2>/dev/null +_scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seq.full 2>&1 +_scratch_mount "-o usrquota,grpquota" +chmod 777 $SCRATCH_MNT +quotacheck -u -g $SCRATCH_MNT 2>/dev/null +quotaon -u -g $SCRATCH_MNT 2>/dev/null + +if ! _workout; then + _scratch_unmount 2>/dev/null + exit +fi + +if ! _check_quota_usage; then + _scratch_unmount 2>/dev/null + status=1 + exit +fi + +echo Comparing filesystem consistency +if ! _scratch_unmount; then + echo "failed to umount" + status=1 + exit +fi +_check_scratch_fs +status=$? +exit diff --git a/265.out b/265.out new file mode 100644 index 0000000..7637291 --- /dev/null +++ b/265.out @@ -0,0 +1,8 @@ +QA output created by 265 + +Run fsstress + +Run dd writers in parallel +Comparing user usage +Comparing group usage +Comparing filesystem consistency diff --git a/group b/group index e79c29b..487051a 100644 --- a/group +++ b/group @@ -378,3 +378,4 @@ deprecated 262 auto quick quota 263 rw auto quick 264 auto rw prealloc ioctl enospc +265 auto quota rw prealloc ioctl enospc -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 09:25:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3EPiLv017988 for ; Thu, 3 Nov 2011 09:25:44 -0500 X-ASG-Debug-ID: 1320330322-1d7501ad0004-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 758B712FF779 for ; Thu, 3 Nov 2011 07:25:42 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id pDgtW9uQCzZPpxd8 for ; Thu, 03 Nov 2011 07:25:42 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1398030bkb.26 for ; Thu, 03 Nov 2011 07:25:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=68neXnZw59Ov9iWpHPbl7AXX1hWPtfBFfOmrB3VQLO0=; b=MLrJiCHL91rWq7z39UZeEA6wp9OH6U6+5mu5yrwC3dM99WL67Mcf1H14Il17f00015 wxfNXuI9vtvyaqZfXN2uQc1nKsdbNNwmRhFBCSZE+5o+yWCR3arhP2hA3aHoeuxLpyv4 GKnRGeht4G51uh1U7QMvww+kER3hGkqXngjCo= Received: by 10.204.140.129 with SMTP id i1mr8445432bku.19.1320330340413; Thu, 03 Nov 2011 07:25:40 -0700 (PDT) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id j9sm5771845bkd.2.2011.11.03.07.25.38 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 07:25:39 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 09/12] xfstests: add a new test that runs fsstress under ENOSPC conditions Subject: [PATCH 09/12] xfstests: add a new test that runs fsstress under ENOSPC conditions Date: Thu, 3 Nov 2011 18:24:58 +0400 Message-Id: <1320330301-2682-10-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320330343 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79210 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean During stress testing we want to cover as much code paths as possible fsstress is very good for this purpose. But it has expandable nature (disk usage almost continually grow). So once it goes in no ENOSPC condition it will be where till the end. But by running 'dd' writers in parallel we can regularly trigger ENOSPC but only for a limited periods of time because each time it opens the same file with O_TRUNC. Signed-off-by: Dmitry Monakhov --- 264 | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 264.out | 5 +++ group | 1 + 3 files changed, 92 insertions(+), 0 deletions(-) create mode 100755 264 create mode 100644 264.out diff --git a/264 b/264 new file mode 100755 index 0000000..fc6df23 --- /dev/null +++ b/264 @@ -0,0 +1,86 @@ +#! /bin/bash +# FSQA Test No. 264 +# +# Run fsstress and ENSPC hitters in parallel, check fs consistency an the end +# +#----------------------------------------------------------------------- +# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +# creator +owner=dmonakhov@openvz.org + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter +# Disable all sync operations to get higher load +FSSTRESS_AVOID="$FSSTRESS_AVOID -ffsync=0 -fsync=0 -ffdatasync=0" +_workout() +{ + echo "" + echo "Run fsstress" + echo "" + num_iterations=10 + enospc_time=2 + out=$SCRATCH_MNT/fsstress.$$ + args="-p128 -n999999999 -f setattr=1 $FSSTRESS_AVOID -d $out" + echo "fsstress $args" >> $here/$seq.full + $FSSTRESS_PROG $args > /dev/null 2>&1 & + pid=$! + echo "Run dd writers in parallel" + for ((i=0; i < num_iterations; i++)) + do + # File will be opened with O_TRUNC each time + dd if=/dev/zero of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M count=1 \ + > /dev/null 2>&1 + sleep $enospc_time + done + kill $pid + wait $pid +} + +# real QA test starts here +_supported_fs generic +_supported_os Linux +_require_scratch +_need_to_be_root + +umount $SCRATCH_DEV 2>/dev/null +_scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seq.full 2>&1 +_scratch_mount + +if ! _workout; then + umount $SCRATCH_DEV 2>/dev/null + exit +fi + +if ! _scratch_unmount; then + echo "failed to umount" + status=1 + exit +fi +_check_scratch_fs +status=$? +exit diff --git a/264.out b/264.out new file mode 100644 index 0000000..81b50e5 --- /dev/null +++ b/264.out @@ -0,0 +1,5 @@ +QA output created by 264 + +Run fsstress + +Run dd writers in parallel diff --git a/group b/group index 2a8970c..e79c29b 100644 --- a/group +++ b/group @@ -377,3 +377,4 @@ deprecated 261 auto quick quota 262 auto quick quota 263 rw auto quick +264 auto rw prealloc ioctl enospc -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 09:25:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_45, J_CHICKENPOX_47,J_CHICKENPOX_56,J_CHICKENPOX_57,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3EPmdJ018037 for ; Thu, 3 Nov 2011 09:25:48 -0500 X-ASG-Debug-ID: 1320330324-4930018f0005-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A59705683F4 for ; Thu, 3 Nov 2011 07:25:47 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id s5x1pKiYP8yWKBAW for ; Thu, 03 Nov 2011 07:25:47 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1398069bkb.26 for ; Thu, 03 Nov 2011 07:25:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=K51xC98Y5ldB9WY1rY3ywp+hldq/Mpt9bx2cQyxGcyo=; b=esg0EQunPgY8Q9AWsa+xjCnQ2+ckyrmqI4QedmFxzOoQQey2xoCzCfjcb177GbriCh FGAB2DEOsbEg57pgPxMMd7BJZSQmmI2XJdUGkmUT651Ks6TOFLEmYMbiznzp4x68o4lp rHywb1QY5cMVlBGPZ8indEBAjk3MnE1eovRhU= Received: by 10.204.13.133 with SMTP id c5mr8669335bka.15.1320330346912; Thu, 03 Nov 2011 07:25:46 -0700 (PDT) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id j9sm5771845bkd.2.2011.11.03.07.25.44 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 07:25:45 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 12/12] xfstress: Test data journaling flag switch for a single file Subject: [PATCH 12/12] xfstress: Test data journaling flag switch for a single file Date: Thu, 3 Nov 2011 18:25:01 +0400 Message-Id: <1320330301-2682-13-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320330347 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79211 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Dmitry Monakhov --- 267 | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 267.out | 37 +++++++++++++++++++++ group | 1 + 3 files changed, 149 insertions(+), 0 deletions(-) create mode 100644 267 create mode 100644 267.out diff --git a/267 b/267 new file mode 100644 index 0000000..e2ce347 --- /dev/null +++ b/267 @@ -0,0 +1,111 @@ +#! /bin/bash +# FSQA Test No. 267 +# +# Test data journaling flag switch for a single file +# +#----------------------------------------------------------------------- +# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +# creator +owner=dmonakhov@openvz.org + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter +_workout() +{ + echo "" + echo " Switch data journalling mode" + echo "" + write_opt_list="iflag=noatime conv=notrunc conv=fsync oflag=direct" + chattr_opt_list="+j -j +jS -j" + idx=0 + # + for write_opt in $write_opt_list + do + idx=$((idx + 1)) + for chattr_opt in $chattr_opt_list + do + + echo "OP write_opt: $write_opt 4M, \ +chattr_opt: $chattr_opt" + dd if=/dev/zero of=$SCRATCH_MNT/file.$idx \ + bs=1M count=4 $write_opt \ + > /dev/null 2>&1 || exit + chattr $chattr_opt $SCRATCH_MNT/file.$idx \ + || exit + done + done + sync + # Same as previous test, but for one file, + # and with ENOSPC triggering + for write_opt in $write_opt_list + do + idx=$((idx + 1)) + for chattr_opt in $chattr_opt_list + do + + echo "OP write_opt: $write_opt ENOSPC, \ +chattr_opt: $chattr_opt" + dd if=/dev/zero of=$SCRATCH_MNT/file.$idx \ + bs=1M $write_opt > /dev/null 2>&1 + chattr $chattr_opt $SCRATCH_MNT/file.$idx \ + || exit + done + sync + unlink $SCRATCH_MNT/file.$idx + done +} + +# real QA test starts here +_supported_fs ext3 ext4 +_supported_os Linux +_require_scratch +_need_to_be_root + +umount $SCRATCH_DEV 2>/dev/null +_scratch_mkfs_sized $((64 * 1024 * 1024)) >> $seq.full 2>&1 + +# -onoload and EXT4_SYNC_FL on file is important becase result in +# metadata sync writes inside ext4_handle_dirty_metadata() +_scratch_mount + +if ! _workout; then + echo "workout failed" + _scratch_unmount + status=1 + exit +fi + +if ! _scratch_unmount; then + echo "failed to umount" + status=1 + exit +fi +echo "Check filesystem" +_check_scratch_fs +status=$? +exit diff --git a/267.out b/267.out new file mode 100644 index 0000000..d46b6f4 --- /dev/null +++ b/267.out @@ -0,0 +1,37 @@ +QA output created by 267 + + Switch data journalling mode + +OP write_opt: iflag=noatime 4M, chattr_opt: +j +OP write_opt: iflag=noatime 4M, chattr_opt: -j +OP write_opt: iflag=noatime 4M, chattr_opt: +jS +OP write_opt: iflag=noatime 4M, chattr_opt: -j +OP write_opt: conv=notrunc 4M, chattr_opt: +j +OP write_opt: conv=notrunc 4M, chattr_opt: -j +OP write_opt: conv=notrunc 4M, chattr_opt: +jS +OP write_opt: conv=notrunc 4M, chattr_opt: -j +OP write_opt: conv=fsync 4M, chattr_opt: +j +OP write_opt: conv=fsync 4M, chattr_opt: -j +OP write_opt: conv=fsync 4M, chattr_opt: +jS +OP write_opt: conv=fsync 4M, chattr_opt: -j +OP write_opt: oflag=direct 4M, chattr_opt: +j +OP write_opt: oflag=direct 4M, chattr_opt: -j +OP write_opt: oflag=direct 4M, chattr_opt: +jS +OP write_opt: oflag=direct 4M, chattr_opt: -j +OP write_opt: iflag=noatime ENOSPC, chattr_opt: +j +OP write_opt: iflag=noatime ENOSPC, chattr_opt: -j +OP write_opt: iflag=noatime ENOSPC, chattr_opt: +jS +OP write_opt: iflag=noatime ENOSPC, chattr_opt: -j +OP write_opt: conv=notrunc ENOSPC, chattr_opt: +j +OP write_opt: conv=notrunc ENOSPC, chattr_opt: -j +OP write_opt: conv=notrunc ENOSPC, chattr_opt: +jS +OP write_opt: conv=notrunc ENOSPC, chattr_opt: -j +OP write_opt: conv=fsync ENOSPC, chattr_opt: +j +OP write_opt: conv=fsync ENOSPC, chattr_opt: -j +OP write_opt: conv=fsync ENOSPC, chattr_opt: +jS +OP write_opt: conv=fsync ENOSPC, chattr_opt: -j +OP write_opt: oflag=direct ENOSPC, chattr_opt: +j +OP write_opt: oflag=direct ENOSPC, chattr_opt: -j +OP write_opt: oflag=direct ENOSPC, chattr_opt: +jS +OP write_opt: oflag=direct ENOSPC, chattr_opt: -j +Check filesystem diff --git a/group b/group index dfc6fa7..5efb43c 100644 --- a/group +++ b/group @@ -380,3 +380,4 @@ deprecated 264 auto rw prealloc ioctl enospc 265 auto quota rw prealloc ioctl enospc 266 rw auto quick +267 rw auto quick -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 09:25:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3EPioD018002 for ; Thu, 3 Nov 2011 09:25:44 -0500 X-ASG-Debug-ID: 1320330324-4930018f0004-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3A2145683EB for ; Thu, 3 Nov 2011 07:25:43 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id LzmPSn5soQJ0imJy for ; Thu, 03 Nov 2011 07:25:43 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1398069bkb.26 for ; Thu, 03 Nov 2011 07:25:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=U3+dMW0fjq5f1ucH1GyO6/mhttD+2jzYiQzZdxNemvo=; b=S0DKuYkFUw9+Fjppf7h9bZf9POCuBPz9tjWZWtusrTc25USjLyQmD4rzxuyFqeucGh U1FV8mPIs5hrrX78pZh0eT1Le9lL6kEI4xVEJdreIRygFDp25Yb2TLK8miZtKWgh0Utv H+nLt75Rzbc7CUyLvzkFSgt5x2HyCZkLtTEqA= Received: by 10.204.15.137 with SMTP id k9mr8562131bka.74.1320330332282; Thu, 03 Nov 2011 07:25:32 -0700 (PDT) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id j9sm5771845bkd.2.2011.11.03.07.25.30 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 07:25:31 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 05/12] xfstests: freeze fsstress options for 117'th Subject: [PATCH 05/12] xfstests: freeze fsstress options for 117'th Date: Thu, 3 Nov 2011 18:24:54 +0400 Message-Id: <1320330301-2682-6-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320330344 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79211 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is regression tescase for explicit combination of seed+fs_opts. Let's hardcode all options to prevent interactions with fsstress changes in future. Signed-off-by: Dmitry Monakhov --- 117 | 39 ++++++++++++++++++++++++++++----------- 1 files changed, 28 insertions(+), 11 deletions(-) diff --git a/117 b/117 index edec157..2e3f658 100755 --- a/117 +++ b/117 @@ -33,8 +33,34 @@ tmp=/tmp/$$ status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 -# seed for fsstress known to cause curruptions +# seed and options for fsstress known to cause curruptions seed=1122413794 +fss_ops=" -z \ + -f attr_remove=100 \ + -f attr_set=100 \ + -f chown=3 \ + -f creat=4 \ + -f dread=4 \ + -f dwrite=4 \ + -f fdatasync=1 \ + -f fsync=1 \ + -f getdents=1 \ + -f link=1 \ + -f mkdir=2 \ + -f mknod=2 \ + -f read=1 \ + -f readlink=1 \ + -f rename=2 \ + -f rmdir=1 \ + -f setxattr=1 \ + -f stat=1 \ + -f symlink=2 \ + -f sync=1 \ + -f truncate=2 \ + -f unlink=1 \ + -f write=4 \ + -s $seed \ + -m 31 -n 1000 -p 1" ITERATIONS=10 @@ -76,16 +102,7 @@ while [ $i -lt $ITERATIONS ]; do echo fsstress iteration: $i | tee -a $seq.full $FSSTRESS_PROG \ -d $SCRATCH_MNT/fsstress \ - -f allocsp=0 \ - -f freesp=0 \ - -f bulkstat=0 \ - -f bulkstat1=0 \ - -f resvsp=0 \ - -f unresvsp=0 \ - -f attr_set=100 \ - -f attr_remove=100 \ - -s $seed \ - -p 1 -n 1000 -S c >>$seq.full 2>&1 + $fss_ops -S c >>$seq.full 2>&1 let i=$i+1 done -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 09:25:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3EPjpx018014 for ; Thu, 3 Nov 2011 09:25:45 -0500 X-ASG-Debug-ID: 1320330322-1d7501ad0005-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CF53A12FF779 for ; Thu, 3 Nov 2011 07:25:44 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id JmDFoDR6GmfDjvQO for ; Thu, 03 Nov 2011 07:25:44 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1398030bkb.26 for ; Thu, 03 Nov 2011 07:25:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=WzeNBbWqraSnorEyCNZgQwDEqVeHWP9HJwVl0VZ2Y2c=; b=Y7aNave28wp73qj7pSRdGoR4mvsel46kFp3AmVloc02+/M39xc0NlDgDkywKJ9cOrt yQd1j9CtQsoIY8cl2GmhuBz38lSw7mrSlClYhz5Z2Eoz3pJOsowS3O+JK1TOeVdMSsQ3 CjU5riyB3jC29B+aCvgTacthR55+ZWqMDtPak= Received: by 10.204.131.146 with SMTP id x18mr4775393bks.37.1320330344067; Thu, 03 Nov 2011 07:25:44 -0700 (PDT) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id j9sm5771845bkd.2.2011.11.03.07.25.42 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 07:25:43 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 11/12] xfstress: add regression testcase for d583fb87a3ff0 Subject: [PATCH 11/12] xfstress: add regression testcase for d583fb87a3ff0 Date: Thu, 3 Nov 2011 18:25:00 +0400 Message-Id: <1320330301-2682-12-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320330344 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79210 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Should be fixed by following patch http://patchwork.ozlabs.org/patch/120883/ Signed-off-by: Dmitry Monakhov --- 266 | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 266.out | 44 ++++++++++++++++++++++++++++++++++++++++ group | 1 + 3 files changed, 114 insertions(+), 0 deletions(-) create mode 100755 266 create mode 100644 266.out diff --git a/266 b/266 new file mode 100755 index 0000000..4209532 --- /dev/null +++ b/266 @@ -0,0 +1,69 @@ +#! /bin/bash +# FSQA Test No. 266 +# +# Regression testcase for d583fb87a3ff0 (ext4 extent corruption) +# +#----------------------------------------------------------------------- +# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +# creator +owner=dmonakhov@openvz.org + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs ext4 +_supported_os Linux +_require_scratch +_need_to_be_root + +umount $SCRATCH_DEV 2>/dev/null +_scratch_mkfs_sized $((128 * 1024 * 1024)) >> $seq.full 2>&1 + +# -onoload and EXT4_SYNC_FL on file is important becase result in +# metadata sync writes inside ext4_handle_dirty_metadata() +_scratch_mount -onoload +touch $SCRATCH_MNT/file +chattr +S $SCRATCH_MNT/file +# Create sparse file +for ((i = 0; i < 21; i++)) +do + dd if=/dev/zero of=$SCRATCH_MNT/file bs=4k count=1 seek=$((i*10)) +done +# truncate last extent +truncate $SCRATCH_MNT/file --size $((4096* 200)) + +if ! _scratch_unmount; then + echo "failed to umount" + status=1 + exit +fi +echo "Check filesystem" +_check_scratch_fs +status=$? +exit diff --git a/266.out b/266.out new file mode 100644 index 0000000..a248232 --- /dev/null +++ b/266.out @@ -0,0 +1,44 @@ +QA output created by 266 +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +Check filesystem diff --git a/group b/group index 487051a..dfc6fa7 100644 --- a/group +++ b/group @@ -379,3 +379,4 @@ deprecated 263 rw auto quick 264 auto rw prealloc ioctl enospc 265 auto quota rw prealloc ioctl enospc +266 rw auto quick -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 09:25:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,J_CHICKENPOX_14, J_CHICKENPOX_52,J_CHICKENPOX_66,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3EPuet018075 for ; Thu, 3 Nov 2011 09:25:56 -0500 X-ASG-Debug-ID: 1320330322-1d7501ad0006-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D8D2412FF785 for ; Thu, 3 Nov 2011 07:25:55 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id RUJcl5WyTVkdi6GG for ; Thu, 03 Nov 2011 07:25:55 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1398030bkb.26 for ; Thu, 03 Nov 2011 07:25:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=7z+h2cHDBd9+THUTwnZsKDaeYZU3mVNpAqLTA+yWSKQ=; b=cTQk/PXTSwQpTQwXQh8jlt1IDnCzjcjvPJAqCTqHdEwgK4fbr8JSrbXT1OWAu0fob2 CfUOTgEhRW1h8CYG1AhFRzp3WpJPpxZ4eGsByoUopWxcjcpLo6ngxuO0Mi93s5Q4W05A prn5qmmwKWXLr8vaoi0+QL8Y9791aBxt/YxYM= Received: by 10.204.141.134 with SMTP id m6mr8518602bku.91.1320330338038; Thu, 03 Nov 2011 07:25:38 -0700 (PDT) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id j9sm5771845bkd.2.2011.11.03.07.25.36 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 07:25:37 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 08/12] xfstests: add fiemap operation to fsstress Subject: [PATCH 08/12] xfstests: add fiemap operation to fsstress Date: Thu, 3 Nov 2011 18:24:57 +0400 Message-Id: <1320330301-2682-9-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320330355 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79210 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Related bug: http://patchwork.ozlabs.org/patch/118863 Signed-off-by: Dmitry Monakhov --- ltp/fsstress.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 76 insertions(+), 0 deletions(-) diff --git a/ltp/fsstress.c b/ltp/fsstress.c index 997f068..cddfe74 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -24,6 +24,9 @@ #ifdef HAVE_ATTR_ATTRIBUTES_H #include #endif +#ifdef HAVE_LINUX_FIEMAP_H +#include +#endif #ifdef FALLOCATE #include #ifndef FALLOC_FL_PUNCH_HOLE @@ -65,6 +68,7 @@ typedef enum { OP_DWRITE, OP_FALLOCATE, OP_FDATASYNC, + OP_FIEMAP, OP_FREESP, OP_FSYNC, OP_GETATTR, @@ -149,6 +153,7 @@ void dread_f(int, long); void dwrite_f(int, long); void fallocate_f(int, long); void fdatasync_f(int, long); +void fiemap_f(int, long); void freesp_f(int, long); void fsync_f(int, long); void getattr_f(int, long); @@ -184,6 +189,7 @@ opdesc_t ops[] = { { OP_DWRITE, "dwrite", dwrite_f, 4, 1 }, { OP_FALLOCATE, "fallocate", fallocate_f, 1, 1 }, { OP_FDATASYNC, "fdatasync", fdatasync_f, 1, 1 }, + { OP_FIEMAP, "fiemap", fiemap_f, 1, 1 }, { OP_FREESP, "freesp", freesp_f, 1, 1 }, { OP_FSYNC, "fsync", fsync_f, 1, 1 }, { OP_GETATTR, "getattr", getattr_f, 1, 0 }, @@ -2131,6 +2137,76 @@ fdatasync_f(int opno, long r) free_pathname(&f); close(fd); } +void +fiemap_f(int opno, long r) +{ +#ifdef HAVE_LINUX_FIEMAP_H + int e; + pathname_t f; + int fd; + __int64_t lr; + off64_t off; + struct stat64 stb; + int v; + char st[1024]; + int blocks_to_map; + struct fiemap *fiemap; + + init_pathname(&f); + if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { + if (v) + printf("%d/%d: fiemap - no filename\n", procid, opno); + free_pathname(&f); + return; + } + fd = open_path(&f, O_RDWR); + e = fd < 0 ? errno : 0; + check_cwd(); + if (fd < 0) { + if (v) + printf("%d/%d: fiemap - open %s failed %d\n", + procid, opno, f.path, e); + free_pathname(&f); + return; + } + if (fstat64(fd, &stb) < 0) { + if (v) + printf("%d/%d: fiemap - fstat64 %s failed %d\n", + procid, opno, f.path, errno); + free_pathname(&f); + close(fd); + return; + } + inode_info(st, sizeof(st), &stb, v); + blocks_to_map = random() & 0xffff; + fiemap = (struct fiemap *)malloc(sizeof(struct fiemap) + + (blocks_to_map * sizeof(struct fiemap_extent))); + if (!fiemap) { + if (v) + printf("%d/%d: malloc failed \n", procid, opno); + free_pathname(&f); + close(fd); + return; + } + lr = ((__int64_t)random() << 32) + random(); + off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); + off %= maxfsize; + fiemap->fm_flags = random() & (FIEMAP_FLAGS_COMPAT | 0x10000); + fiemap->fm_extent_count = blocks_to_map; + fiemap->fm_mapped_extents = random() & 0xffff; + fiemap->fm_start = off; + fiemap->fm_length = ((__int64_t)random() << 32) + random(); + + e = ioctl(fd, FS_IOC_FIEMAP, (unsigned long)fiemap); + if (v) + printf("%d/%d: ioctl(FIEMAP) %s%s %lld %lld %x %d\n", + procid, opno, f.path, st, (long long)fiemap->fm_start, + (long long) fiemap->fm_length, fiemap->fm_flags, e); + free(fiemap); + free_pathname(&f); + close(fd); +#endif +} void freesp_f(int opno, long r) -- 1.7.1 From dawood@bbmotors.co.bw Thu Nov 3 09:39:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.6 required=5.0 tests=BAYES_50,HTML_MESSAGE, RCVD_IN_SORBS_WEB,UNPARSEABLE_RELAY autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3Ed8J2018948 for ; Thu, 3 Nov 2011 09:39:10 -0500 X-ASG-Debug-ID: 1320331143-1bec000c0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from vbnemlrel7.vbnservices.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 52E221CDF16F for ; Thu, 3 Nov 2011 07:39:04 -0700 (PDT) Received: from vbnemlrel7.vbnservices.net (vbnemlrel7.vbnservices.net [83.143.24.55]) by cuda.sgi.com with ESMTP id mJH8mevGFaekNGRn for ; Thu, 03 Nov 2011 07:39:04 -0700 (PDT) Received: from localhost (unknown [127.0.0.1]) by vbnemlrel7.vbnservices.net (Postfix) with ESMTP id 6D2692A526 for ; Thu, 3 Nov 2011 14:51:39 +0000 (UTC) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at example.com Received: from vbnemlrel7.vbnservices.net ([127.0.0.1]) by localhost (vbnemlrel7.vbnservices.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cLdFrL+tocgs for ; Thu, 3 Nov 2011 16:51:39 +0200 (CAT) Received: from virtualtest.com (unknown [83.143.30.30]) by vbnemlrel7.vbnservices.net (Postfix) with ESMTP id D5EAD2AF28 for ; Thu, 3 Nov 2011 16:51:31 +0200 (CAT) X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=127.0.0.1; Received: from bbmotors.co.bw (unverified [127.0.0.1]) by vbn-pop-10 (SurgeMail 5.3h2) with ESMTP id 250312-1872809 for multiple; Thu, 03 Nov 2011 16:04:06 +0200 To: (Recipient List Suppressed) Received: from 65.49.14.81 by HTTP Sender: dawood@bbmotors.co.bw From: "System Administrator" Reply-To: dawood@bbmotors.co.bw X-ASG-Orig-Subj: System Administrator Subject: System Administrator X-Mailer: Quality Web Email v3.1t X-Originating-IP: 65.49.14.81 Date: Thu, 03 Nov 2011 14:04:06 GMT Priority: normal Message-id: <4eb29f56.8c.1e4.7421@bbmotors.co.bw> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="-=_vbn-nwk-monitor4eb29f56" X-To-Not-Matched: true X-Authenticated-User: dawood@bbmotors.co.bw X-Barracuda-Connect: vbnemlrel7.vbnservices.net[83.143.24.55] X-Barracuda-Start-Time: 1320331145 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4909 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE, UNPARSEABLE_RELAY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79211 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 UNPARSEABLE_RELAY Informational: message has unparseable relay lines 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Status: Clean This is a multi-part message in MIME format. ---=_vbn-nwk-monitor4eb29f56 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit System Administrator Your Mailbox Has Exceeded It Storage Limit As Set By Your Administrator, And You Will Not Be Able To Receive New Mails Until You Re-Validate It. To Re-Validate - > Click Here: System Administrator. ---=_vbn-nwk-monitor4eb29f56 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit

System Administrator
Your Mailbox Has Exceeded It Storage Limit As Set By Your Administrator, And You Will Not Be Able To Receive New Mails Until You Re-Validate It. To Re-Validate  - > Click Here: System Administrator.

---=_vbn-nwk-monitor4eb29f56-- From hch@lst.de Thu Nov 3 09:55:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3EtpRF020594 for ; Thu, 3 Nov 2011 09:55:51 -0500 X-ASG-Debug-ID: 1320332149-1fce003e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from newverein.lst.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9136412FF996 for ; Thu, 3 Nov 2011 07:55:50 -0700 (PDT) Received: from newverein.lst.de (verein.lst.de [213.95.11.211]) by cuda.sgi.com with ESMTP id Ip3qNYMmtvCUO0IK for ; Thu, 03 Nov 2011 07:55:50 -0700 (PDT) Received: by newverein.lst.de (Postfix, from userid 2407) id 1F29713E7F; Thu, 3 Nov 2011 15:55:49 +0100 (CET) Date: Thu, 3 Nov 2011 15:55:49 +0100 From: Christoph Hellwig To: Dmitry Monakhov Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, aelder@sgi.com, tytso@mit.edu X-ASG-Orig-Subj: Re: [PATCH 00/12] Bunch of new stress tests -v4 Subject: Re: [PATCH 00/12] Bunch of new stress tests -v4 Message-ID: <20111103145549.GA8612@lst.de> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> User-Agent: Mutt/1.5.17 (2007-11-01) X-Barracuda-Connect: verein.lst.de[213.95.11.211] X-Barracuda-Start-Time: 1320332150 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79212 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 03, 2011 at 06:24:49PM +0400, Dmitry Monakhov wrote: > Changes from v3 ( in request to Christoph's comments) > - hard code fsstress's options for explicit regression tests > - add two new regression tests I already have commited your first three patches to the kernel.org repository and various other tests that have used the nubers you're using. If you want to get it in ASAP please resend, otherwise I will do it once I get a bit time. From rjevskiy@gmail.com Thu Nov 3 10:21:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3FLRvQ022923 for ; Thu, 3 Nov 2011 10:21:27 -0500 X-ASG-Debug-ID: 1320333685-6cac03200000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C3F991012289 for ; Thu, 3 Nov 2011 08:21:26 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id xPEIuhUsPZuteXyq for ; Thu, 03 Nov 2011 08:21:26 -0700 (PDT) Received: by bkbzs8 with SMTP id zs8so1464049bkb.26 for ; Thu, 03 Nov 2011 08:21:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version:content-type; bh=9mv9YMU1dz9YpX0p1haNXA5A/kb7gEXF6YHl3yLkgvE=; b=k8TbA2foJkE/T6syYERIUGmt6bv9t3QJPhWY3rLpzbbqTGJSC6dkMr3cTetfi9jFK8 /CYgReUPhZ3GwJHauzqxgv6lC9NO69H7cKcK/hadK19VDyIGq17Z/scIcwSEC/g8s3ry chZCqpb7i9N21rzqOtcwhy7H5CJONrLtMfFkw= Received: by 10.204.135.195 with SMTP id o3mr8676402bkt.80.1320333685142; Thu, 03 Nov 2011 08:21:25 -0700 (PDT) Received: from smtp.gmail.com (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id zv16sm5918107bkb.6.2011.11.03.08.21.23 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 08:21:23 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: Christoph Hellwig Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, aelder@sgi.com, tytso@mit.edu X-ASG-Orig-Subj: Re: [PATCH 00/12] Bunch of new stress tests -v4 Subject: Re: [PATCH 00/12] Bunch of new stress tests -v4 In-Reply-To: <20111103145549.GA8612@lst.de> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> <20111103145549.GA8612@lst.de> User-Agent: Notmuch/0.5-69-g3e4a9d6 (http://notmuchmail.org) Emacs/23.1.1 (i486-pc-linux-gnu) Date: Thu, 03 Nov 2011 19:21:21 +0400 Message-ID: <87obwtxmdq.fsf@dmbot.sw.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320333686 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0006 1.0000 -2.0172 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79214 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, 3 Nov 2011 15:55:49 +0100, Christoph Hellwig wrote: > On Thu, Nov 03, 2011 at 06:24:49PM +0400, Dmitry Monakhov wrote: > > Changes from v3 ( in request to Christoph's comments) > > - hard code fsstress's options for explicit regression tests > > - add two new regression tests > > I already have commited your first three patches to the kernel.org > repository and various other tests that have used the nubers you're > using. If you want to get it in ASAP please resend, otherwise I will > do it once I get a bit time. Oh.. yes kernel.org, i have just forgot to switch my tree to that repo again. No problem, Will rebase, test, and resubmit. > > -- > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From tytso@thunk.org Thu Nov 3 11:06:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3G6A0D027296 for ; Thu, 3 Nov 2011 11:06:12 -0500 X-ASG-Debug-ID: 1320336369-493002e10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from test.thunk.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A178821AB9C; Thu, 3 Nov 2011 09:06:09 -0700 (PDT) Received: from test.thunk.org (li9-11.members.linode.com [67.18.176.11]) by cuda.sgi.com with ESMTP id mxL4M7Fb1Whz1HJB; Thu, 03 Nov 2011 09:06:09 -0700 (PDT) Received: from root (helo=tytso-glaptop.cam.corp.google.com) by test.thunk.org with local-esmtp (Exim 4.69) (envelope-from ) id 1RLznj-0005Uz-VM; Thu, 03 Nov 2011 16:06:00 +0000 Received: from tytso by tytso-glaptop.cam.corp.google.com with local (Exim 4.71) (envelope-from ) id 1RLznj-0004bX-N0; Thu, 03 Nov 2011 12:05:59 -0400 Date: Thu, 3 Nov 2011 12:05:59 -0400 From: "Ted Ts'o" To: Dmitry Monakhov Cc: Christoph Hellwig , linux-fsdevel@vger.kernel.org, aelder@sgi.com, hch@lst.de, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/8] xfstests: add fiemap operation to fsstress Subject: Re: [PATCH 6/8] xfstests: add fiemap operation to fsstress Message-ID: <20111103160559.GB15045@thunk.org> References: <1319849297-3506-1-git-send-email-dmonakhov@openvz.org> <1319849297-3506-7-git-send-email-dmonakhov@openvz.org> <20111102195534.GB22500@infradead.org> <87wrbhxya6.fsf@dmbot.sw.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <87wrbhxya6.fsf@dmbot.sw.ru> User-Agent: Mutt/1.5.20 (2009-06-14) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@thunk.org X-SA-Exim-Scanned: No (on test.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: li9-11.members.linode.com[67.18.176.11] X-Barracuda-Start-Time: 1320336369 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79217 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 03, 2011 at 03:04:17PM +0400, Dmitry Monakhov wrote: > On Thu, 3 Nov 2011 06:54:16 -0400, Theodore Tso wrote: > > > > On Nov 2, 2011, at 3:55 PM, Christoph Hellwig wrote: > > > > > Alex, Eric, Dave - should we add new tests with the new operations > > > Dmitry added, or is adding new ops to the existing tests fine? > > > > One argument for adding new ops to existing tests is that it makes > > the run time of the entire test suite take longer. A QA pass is > > already taking quite a while, and it would be nice if we could > > keep xfstests as efficient as possible in terms of the maximum > > testing coverage per time spent running the test suite…. > > Yes, but regression test with explicit seed option should be > preserved. Number of such test is not too big, so it is reasonable to > hardcode set of operations in such tests and let all others use new features. That's not what I was talking about. Of course there should be a way to run a regression test with an explicit seed option (although in general I think a specific test in xfstests should by default use a random seed, and have a way to easily specify an explicit seed without having to reverse engineer the test and running fsstress manually). What I was talking about was the fact we already have several (half a dozen or so, if memory serves correctly) xfstests that use fsstress with a different set of fsstress options. In some cases it makes to add a new numbered xfstest subtest, but I'd rather not find that we've doubled the number of tests using fsstress in the future, and with it, doubled the run-time of the auto or quick xfstests group.... - Ted From dmonlist@gmail.com Thu Nov 3 12:56:02 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_64,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3Hu1bd038333 for ; Thu, 3 Nov 2011 12:56:02 -0500 X-ASG-Debug-ID: 1320342960-509000910000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1DA59568D6E for ; Thu, 3 Nov 2011 10:56:00 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id eCUJazPM2pAHfynV for ; Thu, 03 Nov 2011 10:56:00 -0700 (PDT) Received: by bkbzs8 with SMTP id zs8so1634560bkb.26 for ; Thu, 03 Nov 2011 10:55:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer; bh=pjWOr+m3kLr7EhM5fyT0SdeJAexvb3tk4o8bVf4lctk=; b=srq5QoqLEOVcScaYO4ogN+xc/yTG2X25yaAunBKCIRWsffVeUYibKyqrG4esARfkV+ TsHvAQMP++bAuNYXc/hPQEW5LZN8bnuTM9PZS50aCKJ2OpCoLhjITd6iy3xoQ5Lm7Bmi Bls7Hrox58aeSRUf3QqtZB2WRf3ykKcoybCCc= Received: by 10.204.34.148 with SMTP id l20mr9252622bkd.95.1320342959594; Thu, 03 Nov 2011 10:55:59 -0700 (PDT) Received: from localhost.localdomain ([178.176.142.120]) by mx.google.com with ESMTPS id z9sm6365051bkn.7.2011.11.03.10.55.56 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 10:55:58 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 1/9] xfstests: fsstress add command line style output for show_opts Subject: [PATCH 1/9] xfstests: fsstress add command line style output for show_opts Date: Thu, 3 Nov 2011 21:55:45 +0400 Message-Id: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320342961 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79225 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Once some combination of seed+fs_ops result in regression it is reasonable to document that combination. It is usefull to dump that configuration in command line style. Later this line may be simply hardcoded in to regression test. Signed-off-by: Dmitry Monakhov --- 070 | 2 +- 117 | 2 +- ltp/fsstress.c | 21 +++++++++++++++++---- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/070 b/070 index 4458011..f48c33c 100755 --- a/070 +++ b/070 @@ -62,7 +62,7 @@ $FSSTRESS_PROG \ -f unresvsp=0 \ -f attr_set=100 \ -f attr_remove=100 \ - -S -p 1 -n 10000 >$seq.full 2>&1 + -p 1 -n 10000 -S c >$seq.full 2>&1 status=$? exit diff --git a/117 b/117 index fcf0485..edec157 100755 --- a/117 +++ b/117 @@ -85,7 +85,7 @@ while [ $i -lt $ITERATIONS ]; do -f attr_set=100 \ -f attr_remove=100 \ -s $seed \ - -S -p 1 -n 1000 >>$seq.full 2>&1 + -p 1 -n 1000 -S c >>$seq.full 2>&1 let i=$i+1 done diff --git a/ltp/fsstress.c b/ltp/fsstress.c index 133a247..f9d7d6e 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -284,7 +284,7 @@ int main(int argc, char **argv) nops = sizeof(ops) / sizeof(ops[0]); ops_end = &ops[nops]; myprog = argv[0]; - while ((c = getopt(argc, argv, "d:e:f:i:m:n:o:p:rs:vwzHS")) != -1) { + while ((c = getopt(argc, argv, "d:e:f:i:m:n:o:p:rs:S:vwzH")) != -1) { switch (c) { case 'd': dirname = optarg; @@ -345,7 +345,10 @@ int main(int argc, char **argv) zero_freq(); break; case 'S': - show_ops(0, NULL); + i = 0; + if (optarg[0] == 'c') + i = 1; + show_ops(1, NULL); printf("\n"); nousage=1; break; @@ -1310,7 +1313,8 @@ show_ops(int flag, char *lead_str) x+=printf("%s ", p->name); } printf("\n"); - } else { + } else if (flag == 0) { + /* Table view style */ int f; for (f = 0, p = ops; p < ops_end; p++) f += p->freq; @@ -1327,6 +1331,15 @@ show_ops(int flag, char *lead_str) (p->iswrite == 0) ? " " : "write op"); } } + } else { + /* Command line style */ + if (lead_str != NULL) + printf("%s", lead_str); + printf ("-z -s %ld -m %d -n %d -p %d \\\n", seed, idmodulo, + operations, nproc); + for (p = ops; p < ops_end; p++) + if (p->freq > 0) + printf("-f %s=%d \\\n",p->name, p->freq); } } @@ -1433,7 +1446,7 @@ usage(void) printf(" -v specifies verbose mode\n"); printf(" -w zeros frequencies of non-write operations\n"); printf(" -z zeros frequencies of all operations\n"); - printf(" -S prints the table of operations (omitting zero frequency)\n"); + printf(" -S [c,t] prints the list of operations (omitting zero frequency) in command line or table style\n"); printf(" -H prints usage and exits\n"); } -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 12:56:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3Hu4pr038343 for ; Thu, 3 Nov 2011 12:56:04 -0500 X-ASG-Debug-ID: 1320342960-509000910001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A3231568D72 for ; Thu, 3 Nov 2011 10:56:03 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id tgmcLBWIUZKQeK94 for ; Thu, 03 Nov 2011 10:56:03 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1634560bkb.26 for ; Thu, 03 Nov 2011 10:56:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=U3+dMW0fjq5f1ucH1GyO6/mhttD+2jzYiQzZdxNemvo=; b=B36QTIuuKJi3+4xSpns/U+xs7wAUjv0PzFqGXGMdlKHIPNYinoK5jM2XOBD6JrEz8V X4KeaTp3YM9fc2yAC6tsL2j8ea0elDuae1KLHkiNHCR7jPqCZ8CW3RTLyFWe2ztBye0n irpzx3xHe8P4Z2KxN+hgsDJiClZhjMBikZ5nM= Received: by 10.204.141.211 with SMTP id n19mr9340597bku.71.1320342962567; Thu, 03 Nov 2011 10:56:02 -0700 (PDT) Received: from localhost.localdomain ([178.176.142.120]) by mx.google.com with ESMTPS id z9sm6365051bkn.7.2011.11.03.10.55.59 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 10:56:01 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 2/9] xfstests: freeze fsstress options for 117'th Subject: [PATCH 2/9] xfstests: freeze fsstress options for 117'th Date: Thu, 3 Nov 2011 21:55:46 +0400 Message-Id: <1320342953-7973-2-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320342963 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79225 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is regression tescase for explicit combination of seed+fs_opts. Let's hardcode all options to prevent interactions with fsstress changes in future. Signed-off-by: Dmitry Monakhov --- 117 | 39 ++++++++++++++++++++++++++++----------- 1 files changed, 28 insertions(+), 11 deletions(-) diff --git a/117 b/117 index edec157..2e3f658 100755 --- a/117 +++ b/117 @@ -33,8 +33,34 @@ tmp=/tmp/$$ status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 -# seed for fsstress known to cause curruptions +# seed and options for fsstress known to cause curruptions seed=1122413794 +fss_ops=" -z \ + -f attr_remove=100 \ + -f attr_set=100 \ + -f chown=3 \ + -f creat=4 \ + -f dread=4 \ + -f dwrite=4 \ + -f fdatasync=1 \ + -f fsync=1 \ + -f getdents=1 \ + -f link=1 \ + -f mkdir=2 \ + -f mknod=2 \ + -f read=1 \ + -f readlink=1 \ + -f rename=2 \ + -f rmdir=1 \ + -f setxattr=1 \ + -f stat=1 \ + -f symlink=2 \ + -f sync=1 \ + -f truncate=2 \ + -f unlink=1 \ + -f write=4 \ + -s $seed \ + -m 31 -n 1000 -p 1" ITERATIONS=10 @@ -76,16 +102,7 @@ while [ $i -lt $ITERATIONS ]; do echo fsstress iteration: $i | tee -a $seq.full $FSSTRESS_PROG \ -d $SCRATCH_MNT/fsstress \ - -f allocsp=0 \ - -f freesp=0 \ - -f bulkstat=0 \ - -f bulkstat1=0 \ - -f resvsp=0 \ - -f unresvsp=0 \ - -f attr_set=100 \ - -f attr_remove=100 \ - -s $seed \ - -p 1 -n 1000 -S c >>$seq.full 2>&1 + $fss_ops -S c >>$seq.full 2>&1 let i=$i+1 done -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 12:56:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,J_CHICKENPOX_14, J_CHICKENPOX_43,J_CHICKENPOX_92,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3Hu7NN038363 for ; Thu, 3 Nov 2011 12:56:07 -0500 X-ASG-Debug-ID: 1320342960-509000910002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B69C5568D7F for ; Thu, 3 Nov 2011 10:56:06 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id 6jjBUPOWHGqVdVE5 for ; Thu, 03 Nov 2011 10:56:06 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1634560bkb.26 for ; Thu, 03 Nov 2011 10:56:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=3snxcA4KpV88AgzwQBsytuJWHT0gYGAQ2XOrx9z7ToI=; b=k1XbWtkk+JBd95x2pkEaN9JGIM5fTRQwokAGxjFEKC1ovLHh/IAoQD3rob9PnFm+W2 yYz4Rjr1h1WQrBB2rz19qzODgcYjIHBpuDYrwxxRuzP9p/lrfwuK8WQnG6r8q9VrgFqF xMpuOq5eJVZi1J7sbchhjIrVT6LU0DMozFV70= Received: by 10.204.15.80 with SMTP id j16mr9439529bka.26.1320342965847; Thu, 03 Nov 2011 10:56:05 -0700 (PDT) Received: from localhost.localdomain ([178.176.142.120]) by mx.google.com with ESMTPS id z9sm6365051bkn.7.2011.11.03.10.56.02 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 10:56:04 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 3/9] xfstests: add fallocate support to fsstress Subject: [PATCH 3/9] xfstests: add fallocate support to fsstress Date: Thu, 3 Nov 2011 21:55:47 +0400 Message-Id: <1320342953-7973-3-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320342966 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79225 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Add tests for fallocate(2) syscall - fallocate: reserve the disk space - punch: de-allocates the disk space Since FALLOC_FL_PUNCH_HOLE is relatively new it's value defined explicitly if not yet defined. Later we may clear that define. Signed-off-by: Dmitry Monakhov --- ltp/fsstress.c | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 126 insertions(+), 1 deletions(-) diff --git a/ltp/fsstress.c b/ltp/fsstress.c index f9d7d6e..e9e4e67 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -24,7 +24,13 @@ #ifdef HAVE_ATTR_ATTRIBUTES_H #include #endif - +#ifdef FALLOCATE +#include +#ifndef FALLOC_FL_PUNCH_HOLE +/* Copy-paste from linux/falloc.h */ +#define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ +#endif +#endif #ifndef HAVE_ATTR_LIST #define attr_list(path, buf, size, flags, cursor) (errno = -ENOSYS, -1) #endif @@ -48,6 +54,7 @@ typedef enum { OP_CREAT, OP_DREAD, OP_DWRITE, + OP_FALLOCATE, OP_FDATASYNC, OP_FREESP, OP_FSYNC, @@ -55,6 +62,7 @@ typedef enum { OP_LINK, OP_MKDIR, OP_MKNOD, + OP_PUNCH, OP_READ, OP_READLINK, OP_RENAME, @@ -128,6 +136,7 @@ void chown_f(int, long); void creat_f(int, long); void dread_f(int, long); void dwrite_f(int, long); +void fallocate_f(int, long); void fdatasync_f(int, long); void freesp_f(int, long); void fsync_f(int, long); @@ -135,6 +144,7 @@ void getdents_f(int, long); void link_f(int, long); void mkdir_f(int, long); void mknod_f(int, long); +void punch_f(int, long); void read_f(int, long); void readlink_f(int, long); void rename_f(int, long); @@ -159,6 +169,7 @@ opdesc_t ops[] = { { OP_CREAT, "creat", creat_f, 4, 1 }, { OP_DREAD, "dread", dread_f, 4, 0 }, { OP_DWRITE, "dwrite", dwrite_f, 4, 1 }, + { OP_FALLOCATE, "fallocate", fallocate_f, 1, 1 }, { OP_FDATASYNC, "fdatasync", fdatasync_f, 1, 1 }, { OP_FREESP, "freesp", freesp_f, 1, 1 }, { OP_FSYNC, "fsync", fsync_f, 1, 1 }, @@ -166,6 +177,7 @@ opdesc_t ops[] = { { OP_LINK, "link", link_f, 1, 1 }, { OP_MKDIR, "mkdir", mkdir_f, 2, 1 }, { OP_MKNOD, "mknod", mknod_f, 2, 1 }, + { OP_PUNCH, "punch", punch_f, 1, 1 }, { OP_READ, "read", read_f, 1, 0 }, { OP_READLINK, "readlink", readlink_f, 1, 0 }, { OP_RENAME, "rename", rename_f, 2, 1 }, @@ -2011,6 +2023,63 @@ dwrite_f(int opno, long r) } void +fallocate_f(int opno, long r) +{ +#ifdef FALLOCATE + int e; + pathname_t f; + int fd; + __int64_t lr; + off64_t off; + off64_t len; + struct stat64 stb; + int v; + char st[1024]; + int mode = 0; + + init_pathname(&f); + if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { + if (v) + printf("%d/%d: fallocate - no filename\n", procid, opno); + free_pathname(&f); + return; + } + fd = open_path(&f, O_RDWR); + e = fd < 0 ? errno : 0; + check_cwd(); + if (fd < 0) { + if (v) + printf("%d/%d: fallocate - open %s failed %d\n", + procid, opno, f.path, e); + free_pathname(&f); + return; + } + if (fstat64(fd, &stb) < 0) { + if (v) + printf("%d/%d: fallocate - fstat64 %s failed %d\n", + procid, opno, f.path, errno); + free_pathname(&f); + close(fd); + return; + } + inode_info(st, sizeof(st), &stb, v); + lr = ((__int64_t)random() << 32) + random(); + off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); + off %= maxfsize; + len = (off64_t)(random() % (1024 * 1024)); + mode |= FALLOC_FL_KEEP_SIZE & random(); + e = fallocate(fd, mode, (loff_t)off, (loff_t)len) < 0 ? errno : 0; + if (v) + printf("%d/%d: fallocate(%d) %s %st %lld %lld %d\n", + procid, opno, mode, + f.path, st, (long long)off, (long long)len, e); + free_pathname(&f); + close(fd); +#endif +} + + +void fdatasync_f(int opno, long r) { int e; @@ -2283,6 +2352,62 @@ mknod_f(int opno, long r) } void +punch_f(int opno, long r) +{ +#ifdef FALLOCATE + int e; + pathname_t f; + int fd; + __int64_t lr; + off64_t off; + off64_t len; + struct stat64 stb; + int v; + char st[1024]; + int mode = FALLOC_FL_PUNCH_HOLE; + + init_pathname(&f); + if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { + if (v) + printf("%d/%d: punch hole - no filename\n", procid, opno); + free_pathname(&f); + return; + } + fd = open_path(&f, O_RDWR); + e = fd < 0 ? errno : 0; + check_cwd(); + if (fd < 0) { + if (v) + printf("%d/%d: punch hole - open %s failed %d\n", + procid, opno, f.path, e); + free_pathname(&f); + return; + } + if (fstat64(fd, &stb) < 0) { + if (v) + printf("%d/%d: punch hole - fstat64 %s failed %d\n", + procid, opno, f.path, errno); + free_pathname(&f); + close(fd); + return; + } + inode_info(st, sizeof(st), &stb, v); + lr = ((__int64_t)random() << 32) + random(); + off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); + off %= maxfsize; + len = (off64_t)(random() % (1024 * 1024)); + mode |= FALLOC_FL_KEEP_SIZE & random(); + e = fallocate(fd, mode, (loff_t)off, (loff_t)len) < 0 ? errno : 0; + if (v) + printf("%d/%d: punch hole(%d) %s %s %lld %lld %d\n", + procid, opno, mode, + f.path, st, (long long)off, (long long)len, e); + free_pathname(&f); + close(fd); +#endif +} + +void read_f(int opno, long r) { char *buf; -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 12:56:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_14, J_CHICKENPOX_43,J_CHICKENPOX_52,J_CHICKENPOX_64,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3HuBxV038379 for ; Thu, 3 Nov 2011 12:56:11 -0500 X-ASG-Debug-ID: 1320342960-509000910003-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 251B8568D87 for ; Thu, 3 Nov 2011 10:56:09 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id 8YGXR8ZsUCAgUvbp for ; Thu, 03 Nov 2011 10:56:09 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1634560bkb.26 for ; Thu, 03 Nov 2011 10:56:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=Bxw2Bw//7KiM6jm0om3vEr9MtztgrOMPkIyWAMFT/ao=; b=ZurcC2taFlmlbZODeY+5HUdYOBxJk8iIh4SFfllrr1po/RzYNl066996hwE+YiMC9l vN0lBIyRC3ahFpqcyuxm07G+lWVVaSwv3CiewhPnEO9AR1QUrKTf+wPeuji8jC+K/1pt 8uwIXh51QE363qEhdpbBU2fjDxPSUsUkxl6HY= Received: by 10.204.133.194 with SMTP id g2mr9448508bkt.46.1320342968931; Thu, 03 Nov 2011 10:56:08 -0700 (PDT) Received: from localhost.localdomain ([178.176.142.120]) by mx.google.com with ESMTPS id z9sm6365051bkn.7.2011.11.03.10.56.06 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 10:56:08 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 4/9] xfstests: fsstress add FS_IOC_{SET,GET}FLAGS operations v2 Subject: [PATCH 4/9] xfstests: fsstress add FS_IOC_{SET,GET}FLAGS operations v2 Date: Thu, 3 Nov 2011 21:55:48 +0400 Message-Id: <1320342953-7973-4-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320342970 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79225 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Add two new operations: - getattr: ioctl(fd, FS_IOC_GETFLAGS, &fl) - setattr: ioctl(fd, FS_IOC_SETFLAGS, &random_flags) Attribute mask may be passed via -M opt, by default is (~0). By default FS_IOC_SETFLAGS has zero probability because it may produce inodes with APPEND or IMMUTABLE flags which are not deletable by default. Let's assumes that one who enable it knows how to delete such inodes. For example like follows: find $TEST_PATH -exec chattr -i -a {} \; rm -rf $TEST_PATH Signed-off-by: Dmitry Monakhov --- aclocal.m4 | 4 +++ configure.in | 1 + ltp/fsstress.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 72 insertions(+), 1 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index 5532606..5739004 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -21,6 +21,10 @@ AC_DEFUN([AC_PACKAGE_WANT_LINUX_PRCTL_H], AC_SUBST(have_prctl) ]) +AC_DEFUN([AC_PACKAGE_WANT_LINUX_FS_H], + [ AC_CHECK_HEADER([linux/fs.h]) + ]) + AC_DEFUN([AC_PACKAGE_WANT_FALLOCATE], [ AC_MSG_CHECKING([for fallocate]) AC_TRY_LINK([ diff --git a/configure.in b/configure.in index 76d23e4..3b40e55 100644 --- a/configure.in +++ b/configure.in @@ -68,6 +68,7 @@ in AC_PACKAGE_WANT_LINUX_FIEMAP_H AC_PACKAGE_WANT_FALLOCATE AC_PACKAGE_WANT_LINUX_PRCTL_H + AC_PACKAGE_WANT_LINUX_FS_H ;; esac diff --git a/ltp/fsstress.c b/ltp/fsstress.c index e9e4e67..c258ee9 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -37,6 +37,15 @@ #ifdef HAVE_SYS_PRCTL_H #include #endif + +#include +#ifndef FS_IOC_GETFLAGS +#define FS_IOC_GETFLAGS _IOR('f', 1, long) +#endif +#ifndef FS_IOC_SETFLAGS +#define FS_IOC_SETFLAGS _IOW('f', 2, long) +#endif + #include #define XFS_ERRTAG_MAX 17 #define XFS_IDMODULO_MAX 31 /* user/group IDs (1 << x) */ @@ -58,6 +67,7 @@ typedef enum { OP_FDATASYNC, OP_FREESP, OP_FSYNC, + OP_GETATTR, OP_GETDENTS, OP_LINK, OP_MKDIR, @@ -68,6 +78,7 @@ typedef enum { OP_RENAME, OP_RESVSP, OP_RMDIR, + OP_SETATTR, OP_SETXATTR, OP_STAT, OP_SYMLINK, @@ -140,6 +151,7 @@ void fallocate_f(int, long); void fdatasync_f(int, long); void freesp_f(int, long); void fsync_f(int, long); +void getattr_f(int, long); void getdents_f(int, long); void link_f(int, long); void mkdir_f(int, long); @@ -150,6 +162,7 @@ void readlink_f(int, long); void rename_f(int, long); void resvsp_f(int, long); void rmdir_f(int, long); +void setattr_f(int, long); void setxattr_f(int, long); void stat_f(int, long); void symlink_f(int, long); @@ -173,6 +186,7 @@ opdesc_t ops[] = { { OP_FDATASYNC, "fdatasync", fdatasync_f, 1, 1 }, { OP_FREESP, "freesp", freesp_f, 1, 1 }, { OP_FSYNC, "fsync", fsync_f, 1, 1 }, + { OP_GETATTR, "getattr", getattr_f, 1, 0 }, { OP_GETDENTS, "getdents", getdents_f, 1, 0 }, { OP_LINK, "link", link_f, 1, 1 }, { OP_MKDIR, "mkdir", mkdir_f, 2, 1 }, @@ -183,6 +197,7 @@ opdesc_t ops[] = { { OP_RENAME, "rename", rename_f, 2, 1 }, { OP_RESVSP, "resvsp", resvsp_f, 1, 1 }, { OP_RMDIR, "rmdir", rmdir_f, 1, 1 }, + { OP_SETATTR, "setattr", setattr_f, 0, 1 }, { OP_SETXATTR, "setxattr", setxattr_f, 1, 1 }, { OP_STAT, "stat", stat_f, 1, 0 }, { OP_SYMLINK, "symlink", symlink_f, 2, 1 }, @@ -218,6 +233,7 @@ int nops; int nproc = 1; int operations = 1; unsigned int idmodulo = XFS_IDMODULO_MAX; +unsigned int attr_mask = ~0; int procid; int rtpct; unsigned long seed = 0; @@ -296,7 +312,7 @@ int main(int argc, char **argv) nops = sizeof(ops) / sizeof(ops[0]); ops_end = &ops[nops]; myprog = argv[0]; - while ((c = getopt(argc, argv, "d:e:f:i:m:n:o:p:rs:S:vwzH")) != -1) { + while ((c = getopt(argc, argv, "d:e:f:i:m:M:n:o:p:rs:S:vwzH")) != -1) { switch (c) { case 'd': dirname = optarg; @@ -356,6 +372,9 @@ int main(int argc, char **argv) case 'z': zero_freq(); break; + case 'M': + attr_mask = strtoul(optarg, NULL, 0); + break; case 'S': i = 0; if (optarg[0] == 'c') @@ -2198,6 +2217,29 @@ fsync_f(int opno, long r) } void +getattr_f(int opno, long r) +{ + int fd; + int e; + pathname_t f; + uint fl; + int v; + + init_pathname(&f); + if (!get_fname(FT_ANYm, r, &f, NULL, NULL, &v)) + append_pathname(&f, "."); + fd = open_path(&f, O_RDWR); + e = fd < 0 ? errno : 0; + check_cwd(); + + e = ioctl(fd, FS_IOC_GETFLAGS, &fl); + if (v) + printf("%d/%d: getattr %s %u %d\n", procid, opno, f.path, fl, e); + free_pathname(&f); + close(fd); +} + +void getdents_f(int opno, long r) { DIR *dir; @@ -2643,6 +2685,30 @@ rmdir_f(int opno, long r) } void +setattr_f(int opno, long r) +{ + int fd; + int e; + pathname_t f; + uint fl; + int v; + + init_pathname(&f); + if (!get_fname(FT_ANYm, r, &f, NULL, NULL, &v)) + append_pathname(&f, "."); + fd = open_path(&f, O_RDWR); + e = fd < 0 ? errno : 0; + check_cwd(); + + fl = attr_mask & (uint)random(); + e = ioctl(fd, FS_IOC_SETFLAGS, &fl); + if (v) + printf("%d/%d: setattr %s %x %d\n", procid, opno, f.path, fl, e); + free_pathname(&f); + close(fd); +} + +void stat_f(int opno, long r) { int e; -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 12:56:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,J_CHICKENPOX_14, J_CHICKENPOX_52,J_CHICKENPOX_66,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3HuEkA038397 for ; Thu, 3 Nov 2011 12:56:14 -0500 X-ASG-Debug-ID: 1320342960-509000910004-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5048A568D91 for ; Thu, 3 Nov 2011 10:56:12 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id mmtb3zU0Y9jtUI77 for ; Thu, 03 Nov 2011 10:56:12 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1634560bkb.26 for ; Thu, 03 Nov 2011 10:56:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=zL/s+DVlZAoOrxkEtWfKSXSLWDzQz6CO5BG264xcA3w=; b=Hkdrm/9noZ1PtPiN2g+OtkM9ITEYQKPybwEuxwM0a7ovaLUHQNeoZ4VOvUoWxItMQL AZecv+i0b2IEebXND2XNJ3HJiANJed+ovhlCrRqopIdiiYyJpxP16Z2zAf/eptzRx+v9 FKH/iQPYyZot4PwShKt4rrcdJ1SZJ5egj1yiY= Received: by 10.204.139.84 with SMTP id d20mr9658942bku.13.1320342971866; Thu, 03 Nov 2011 10:56:11 -0700 (PDT) Received: from localhost.localdomain ([178.176.142.120]) by mx.google.com with ESMTPS id z9sm6365051bkn.7.2011.11.03.10.56.09 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 10:56:11 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 5/9] xfstests: add fiemap operation to fsstress Subject: [PATCH 5/9] xfstests: add fiemap operation to fsstress Date: Thu, 3 Nov 2011 21:55:49 +0400 Message-Id: <1320342953-7973-5-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320342973 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79225 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Related bug: http://patchwork.ozlabs.org/patch/118863 Signed-off-by: Dmitry Monakhov --- ltp/fsstress.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 76 insertions(+), 0 deletions(-) diff --git a/ltp/fsstress.c b/ltp/fsstress.c index c258ee9..09c9529 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -24,6 +24,9 @@ #ifdef HAVE_ATTR_ATTRIBUTES_H #include #endif +#ifdef HAVE_LINUX_FIEMAP_H +#include +#endif #ifdef FALLOCATE #include #ifndef FALLOC_FL_PUNCH_HOLE @@ -65,6 +68,7 @@ typedef enum { OP_DWRITE, OP_FALLOCATE, OP_FDATASYNC, + OP_FIEMAP, OP_FREESP, OP_FSYNC, OP_GETATTR, @@ -149,6 +153,7 @@ void dread_f(int, long); void dwrite_f(int, long); void fallocate_f(int, long); void fdatasync_f(int, long); +void fiemap_f(int, long); void freesp_f(int, long); void fsync_f(int, long); void getattr_f(int, long); @@ -184,6 +189,7 @@ opdesc_t ops[] = { { OP_DWRITE, "dwrite", dwrite_f, 4, 1 }, { OP_FALLOCATE, "fallocate", fallocate_f, 1, 1 }, { OP_FDATASYNC, "fdatasync", fdatasync_f, 1, 1 }, + { OP_FIEMAP, "fiemap", fiemap_f, 1, 1 }, { OP_FREESP, "freesp", freesp_f, 1, 1 }, { OP_FSYNC, "fsync", fsync_f, 1, 1 }, { OP_GETATTR, "getattr", getattr_f, 1, 0 }, @@ -2130,6 +2136,76 @@ fdatasync_f(int opno, long r) free_pathname(&f); close(fd); } +void +fiemap_f(int opno, long r) +{ +#ifdef HAVE_LINUX_FIEMAP_H + int e; + pathname_t f; + int fd; + __int64_t lr; + off64_t off; + struct stat64 stb; + int v; + char st[1024]; + int blocks_to_map; + struct fiemap *fiemap; + + init_pathname(&f); + if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { + if (v) + printf("%d/%d: fiemap - no filename\n", procid, opno); + free_pathname(&f); + return; + } + fd = open_path(&f, O_RDWR); + e = fd < 0 ? errno : 0; + check_cwd(); + if (fd < 0) { + if (v) + printf("%d/%d: fiemap - open %s failed %d\n", + procid, opno, f.path, e); + free_pathname(&f); + return; + } + if (fstat64(fd, &stb) < 0) { + if (v) + printf("%d/%d: fiemap - fstat64 %s failed %d\n", + procid, opno, f.path, errno); + free_pathname(&f); + close(fd); + return; + } + inode_info(st, sizeof(st), &stb, v); + blocks_to_map = random() & 0xffff; + fiemap = (struct fiemap *)malloc(sizeof(struct fiemap) + + (blocks_to_map * sizeof(struct fiemap_extent))); + if (!fiemap) { + if (v) + printf("%d/%d: malloc failed \n", procid, opno); + free_pathname(&f); + close(fd); + return; + } + lr = ((__int64_t)random() << 32) + random(); + off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); + off %= maxfsize; + fiemap->fm_flags = random() & (FIEMAP_FLAGS_COMPAT | 0x10000); + fiemap->fm_extent_count = blocks_to_map; + fiemap->fm_mapped_extents = random() & 0xffff; + fiemap->fm_start = off; + fiemap->fm_length = ((__int64_t)random() << 32) + random(); + + e = ioctl(fd, FS_IOC_FIEMAP, (unsigned long)fiemap); + if (v) + printf("%d/%d: ioctl(FIEMAP) %s%s %lld %lld %x %d\n", + procid, opno, f.path, st, (long long)fiemap->fm_start, + (long long) fiemap->fm_length, fiemap->fm_flags, e); + free(fiemap); + free_pathname(&f); + close(fd); +#endif +} void freesp_f(int opno, long r) -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 12:56:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3HuGJr038413 for ; Thu, 3 Nov 2011 12:56:16 -0500 X-ASG-Debug-ID: 1320342960-509000910005-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DF928568D97 for ; Thu, 3 Nov 2011 10:56:15 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id k9Fvbj3m5I9AvMDW for ; Thu, 03 Nov 2011 10:56:15 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1634560bkb.26 for ; Thu, 03 Nov 2011 10:56:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=QXa024DAMdyyBgOMPSaLctfhcQTCOnCcg3aT8ZQWIp0=; b=x7z9rOF0wn73TwstmVx4wn/2zlGX06W+JG0DOi+0V9U714z0iaRZH0/kNxDqshLk6i C4UVzYXkx/SPu2JG21sKK/3adoQZJkBk9pOaxEGeVR7GZyFNlcVF8teuML3A7cXQKqDT 6XcLWffaidlSkiXhmaTe8VwuRnNwooO4/hctk= Received: by 10.204.13.68 with SMTP id b4mr9263151bka.96.1320342975140; Thu, 03 Nov 2011 10:56:15 -0700 (PDT) Received: from localhost.localdomain ([178.176.142.120]) by mx.google.com with ESMTPS id z9sm6365051bkn.7.2011.11.03.10.56.12 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 10:56:14 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 6/9] xfstests: add a new test that runs fsstress under ENOSPC conditions Subject: [PATCH 6/9] xfstests: add a new test that runs fsstress under ENOSPC conditions Date: Thu, 3 Nov 2011 21:55:50 +0400 Message-Id: <1320342953-7973-6-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320342975 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79225 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean During stress testing we want to cover as much code paths as possible fsstress is very good for this purpose. But it has expandable nature (disk usage almost continually grow). So once it goes in no ENOSPC condition it will be where till the end. But by running 'dd' writers in parallel we can regularly trigger ENOSPC but only for a limited periods of time because each time it opens the same file with O_TRUNC. Signed-off-by: Dmitry Monakhov --- 269 | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 269.out | 5 +++ group | 1 + 3 files changed, 92 insertions(+), 0 deletions(-) create mode 100755 269 create mode 100644 269.out diff --git a/269 b/269 new file mode 100755 index 0000000..61e83ad --- /dev/null +++ b/269 @@ -0,0 +1,86 @@ +#! /bin/bash +# FSQA Test No. 269 +# +# Run fsstress and ENSPC hitters in parallel, check fs consistency an the end +# +#----------------------------------------------------------------------- +# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +# creator +owner=dmonakhov@openvz.org + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter +# Disable all sync operations to get higher load +FSSTRESS_AVOID="$FSSTRESS_AVOID -ffsync=0 -fsync=0 -ffdatasync=0" +_workout() +{ + echo "" + echo "Run fsstress" + echo "" + num_iterations=10 + enospc_time=2 + out=$SCRATCH_MNT/fsstress.$$ + args="-p128 -n999999999 -f setattr=1 $FSSTRESS_AVOID -d $out" + echo "fsstress $args" >> $here/$seq.full + $FSSTRESS_PROG $args > /dev/null 2>&1 & + pid=$! + echo "Run dd writers in parallel" + for ((i=0; i < num_iterations; i++)) + do + # File will be opened with O_TRUNC each time + dd if=/dev/zero of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M count=1 \ + > /dev/null 2>&1 + sleep $enospc_time + done + kill $pid + wait $pid +} + +# real QA test starts here +_supported_fs generic +_supported_os Linux +_require_scratch +_need_to_be_root + +umount $SCRATCH_DEV 2>/dev/null +_scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seq.full 2>&1 +_scratch_mount + +if ! _workout; then + umount $SCRATCH_DEV 2>/dev/null + exit +fi + +if ! _scratch_unmount; then + echo "failed to umount" + status=1 + exit +fi +_check_scratch_fs +status=$? +exit diff --git a/269.out b/269.out new file mode 100644 index 0000000..0a83965 --- /dev/null +++ b/269.out @@ -0,0 +1,5 @@ +QA output created by 269 + +Run fsstress + +Run dd writers in parallel diff --git a/group b/group index aaa8eba..8a5c334 100644 --- a/group +++ b/group @@ -382,3 +382,4 @@ deprecated 266 dump ioctl auto quick 267 dump ioctl tape 268 dump ioctl tape +269 auto rw prealloc ioctl enospc -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 12:56:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3HuJVa038428 for ; Thu, 3 Nov 2011 12:56:20 -0500 X-ASG-Debug-ID: 1320342960-509000910006-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 20D54568D99 for ; Thu, 3 Nov 2011 10:56:18 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id sHvlfgnDaDcQ1dzP for ; Thu, 03 Nov 2011 10:56:18 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1634560bkb.26 for ; Thu, 03 Nov 2011 10:56:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=giwsby1EZv0KCLO3BtHDVUIIDrv6rJhpoYS3vzJc9AM=; b=hNh+Gtj/rwXZyiXQGZ0qC+2h6AXMqfjRCTs9Vw/oMLhq/l/B+jtddNEcA1g87hXy2r b1azFSQT3n+GwGzllD3zmK+Ct4b8rKVrGptLHSfHs/i6XHv91dUgsNzL7gsKpjCJ/xZ+ HgEseSziqFSOwfPN0DK/tM8j7GmtNDrB+QqT4= Received: by 10.204.140.153 with SMTP id i25mr9180340bku.102.1320342978468; Thu, 03 Nov 2011 10:56:18 -0700 (PDT) Received: from localhost.localdomain ([178.176.142.120]) by mx.google.com with ESMTPS id z9sm6365051bkn.7.2011.11.03.10.56.15 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 10:56:17 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 7/9] xfstests: add a new quota test that runs fsstress under ENOSPC conditions Subject: [PATCH 7/9] xfstests: add a new quota test that runs fsstress under ENOSPC conditions Date: Thu, 3 Nov 2011 21:55:51 +0400 Message-Id: <1320342953-7973-7-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320342979 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79225 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean - Same as 264 but with quota enabled. - IO performed from $qa_user user - fsstress granted with CAP_CHOWN capability. Signed-off-by: Dmitry Monakhov --- 270 | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 270.out | 8 +++++ group | 1 + 3 files changed, 117 insertions(+), 0 deletions(-) create mode 100755 270 create mode 100644 270.out diff --git a/270 b/270 new file mode 100755 index 0000000..ed1e31e --- /dev/null +++ b/270 @@ -0,0 +1,108 @@ +#! /bin/bash +# FSQA Test No. 270 +# +# Run fsstress and ENSPC hitters in parallel, check quota and +# fs consistency an the end +# +#----------------------------------------------------------------------- +# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +# creator +owner=dmonakhov@openvz.org + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter +. ./common.quota + +# Disable all sync operations to get higher load +FSSTRESS_AVOID="$FSSTRESS_AVOID -ffsync=0 -fsync=0 -ffdatasync=0" +_workout() +{ + echo "" + echo "Run fsstress" + echo "" + num_iterations=10 + enospc_time=2 + out=$SCRATCH_MNT/fsstress.$$ + args="-p128 -n999999999 -f setattr=1 $FSSTRESS_AVOID -d $out" + echo "fsstress $args" >> $here/$seq.full + # Grant chown capability + cp $FSSTRESS_PROG $tmp.fsstress.bin + setcap cap_chown=epi $tmp.fsstress.bin + + (su $qa_user -c "$tmp.fsstress.bin $args" &) > /dev/null 2>&1 + pid=$! + + echo "Run dd writers in parallel" + for ((i=0; i < num_iterations; i++)) + do + # File will be opened with O_TRUNC each time + su $qa_user -c "dd if=/dev/zero \ + of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M " \ + > /dev/null 2>&1 + sleep $enospc_time + done + + killall $tmp.fsstress.bin + wait $pid +} + +# real QA test starts here +_supported_fs generic +_supported_os Linux +_require_scratch +_require_quota +_require_user +_need_to_be_root + +umount $SCRATCH_DEV 2>/dev/null +_scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seq.full 2>&1 +_scratch_mount "-o usrquota,grpquota" +chmod 777 $SCRATCH_MNT +quotacheck -u -g $SCRATCH_MNT 2>/dev/null +quotaon -u -g $SCRATCH_MNT 2>/dev/null + +if ! _workout; then + _scratch_unmount 2>/dev/null + exit +fi + +if ! _check_quota_usage; then + _scratch_unmount 2>/dev/null + status=1 + exit +fi + +echo Comparing filesystem consistency +if ! _scratch_unmount; then + echo "failed to umount" + status=1 + exit +fi +_check_scratch_fs +status=$? +exit diff --git a/270.out b/270.out new file mode 100644 index 0000000..bbd8026 --- /dev/null +++ b/270.out @@ -0,0 +1,8 @@ +QA output created by 270 + +Run fsstress + +Run dd writers in parallel +Comparing user usage +Comparing group usage +Comparing filesystem consistency diff --git a/group b/group index 8a5c334..84e81f5 100644 --- a/group +++ b/group @@ -383,3 +383,4 @@ deprecated 267 dump ioctl tape 268 dump ioctl tape 269 auto rw prealloc ioctl enospc +270 auto quota rw prealloc ioctl enospc -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 12:56:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3HuNqJ038442 for ; Thu, 3 Nov 2011 12:56:23 -0500 X-ASG-Debug-ID: 1320342960-509000910007-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5C5A6568DA0 for ; Thu, 3 Nov 2011 10:56:21 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id hqmvi016ID7DIkcH for ; Thu, 03 Nov 2011 10:56:21 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1634560bkb.26 for ; Thu, 03 Nov 2011 10:56:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=AKy1qAOMjs1bRlrGqqUZFW/nZ0JD3tBcGJoaxibecto=; b=Z4Ubnoww8hhPodGFC3ModyVT08qi3BrHy3Y9QQ95ib1Q5iaxMFztdtXbjQ8enDk7ai gvOOuABR+HLsYpqT6rOoUHeBdmKpzPUhZPglJbzED7e3CJ9tB789jhnpJuCwUtKIKgoG 0T7enIjYnpKwiIpsyL7W6TgsBP9DuodwATYwY= Received: by 10.204.34.148 with SMTP id l20mr9253917bkd.95.1320342981712; Thu, 03 Nov 2011 10:56:21 -0700 (PDT) Received: from localhost.localdomain ([178.176.142.120]) by mx.google.com with ESMTPS id z9sm6365051bkn.7.2011.11.03.10.56.18 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 10:56:20 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 8/9] xfstress: add regression testcase for d583fb87a3ff0 Subject: [PATCH 8/9] xfstress: add regression testcase for d583fb87a3ff0 Date: Thu, 3 Nov 2011 21:55:52 +0400 Message-Id: <1320342953-7973-8-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320342982 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79225 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Should be fixed by following patch http://patchwork.ozlabs.org/patch/120883/ Signed-off-by: Dmitry Monakhov --- 271 | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 271.out | 44 ++++++++++++++++++++++++++++++++++++++++ group | 1 + 3 files changed, 114 insertions(+), 0 deletions(-) create mode 100755 271 create mode 100644 271.out diff --git a/271 b/271 new file mode 100755 index 0000000..b4e6043 --- /dev/null +++ b/271 @@ -0,0 +1,69 @@ +#! /bin/bash +# FSQA Test No. 271 +# +# Regression testcase for d583fb87a3ff0 (ext4 extent corruption) +# +#----------------------------------------------------------------------- +# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +# creator +owner=dmonakhov@openvz.org + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs ext4 +_supported_os Linux +_require_scratch +_need_to_be_root + +umount $SCRATCH_DEV 2>/dev/null +_scratch_mkfs_sized $((128 * 1024 * 1024)) >> $seq.full 2>&1 + +# -onoload and EXT4_SYNC_FL on file is important becase result in +# metadata sync writes inside ext4_handle_dirty_metadata() +_scratch_mount -onoload +touch $SCRATCH_MNT/file +chattr +S $SCRATCH_MNT/file +# Create sparse file +for ((i = 0; i < 21; i++)) +do + dd if=/dev/zero of=$SCRATCH_MNT/file bs=4k count=1 seek=$((i*10)) +done +# truncate last extent +truncate $SCRATCH_MNT/file --size $((4096* 200)) + +if ! _scratch_unmount; then + echo "failed to umount" + status=1 + exit +fi +echo "Check filesystem" +_check_scratch_fs +status=$? +exit diff --git a/271.out b/271.out new file mode 100644 index 0000000..22a3c50 --- /dev/null +++ b/271.out @@ -0,0 +1,44 @@ +QA output created by 271 +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +1+0 records in +1+0 records out +Check filesystem diff --git a/group b/group index 84e81f5..fefa580 100644 --- a/group +++ b/group @@ -384,3 +384,4 @@ deprecated 268 dump ioctl tape 269 auto rw prealloc ioctl enospc 270 auto quota rw prealloc ioctl enospc +271 auto rw quick -- 1.7.1 From dmonlist@gmail.com Thu Nov 3 12:56:26 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_45, J_CHICKENPOX_47,J_CHICKENPOX_56,J_CHICKENPOX_57,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3HuQv1038461 for ; Thu, 3 Nov 2011 12:56:26 -0500 X-ASG-Debug-ID: 1320342960-509000910008-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 73D93568DA7 for ; Thu, 3 Nov 2011 10:56:24 -0700 (PDT) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id hhiQgjdCTt0p9wAt for ; Thu, 03 Nov 2011 10:56:24 -0700 (PDT) Received: by mail-bw0-f53.google.com with SMTP id zs8so1634560bkb.26 for ; Thu, 03 Nov 2011 10:56:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=yq9gv2dVvB50CWoYDCh8B31XvS09A6T+hhDAJCseXtA=; b=ABso4xysn4r1L8ztfwr1ro/ZPPl6sn7vmi2dX32ZsUOZXTO93n354ZGadlJTamUuPA ls12LwHGI4nCnPBMkS19rJCdotzrzNhGzUk6dNMy8HDJQDexNgf3B2aRDiBKXp3asTgv 3nloF4VNJB3blulJLGL6bAyND9gLrSsp2ga6M= Received: by 10.204.140.153 with SMTP id i25mr9180705bku.102.1320342984732; Thu, 03 Nov 2011 10:56:24 -0700 (PDT) Received: from localhost.localdomain ([178.176.142.120]) by mx.google.com with ESMTPS id z9sm6365051bkn.7.2011.11.03.10.56.21 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 10:56:23 -0700 (PDT) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 9/9] xfstress: Test data journaling flag switch for a single file Subject: [PATCH 9/9] xfstress: Test data journaling flag switch for a single file Date: Thu, 3 Nov 2011 21:55:53 +0400 Message-Id: <1320342953-7973-9-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320342985 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79225 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Dmitry Monakhov --- 272 | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 272.out | 37 +++++++++++++++++++++ group | 1 + 3 files changed, 146 insertions(+), 0 deletions(-) create mode 100755 272 create mode 100644 272.out diff --git a/272 b/272 new file mode 100755 index 0000000..a35ef83 --- /dev/null +++ b/272 @@ -0,0 +1,108 @@ +#! /bin/bash +# FSQA Test No. 272 +# +# Test data journaling flag switch for a single file +# +#----------------------------------------------------------------------- +# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +# creator +owner=dmonakhov@openvz.org + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter +_workout() +{ + echo "" + echo " Switch data journalling mode" + echo "" + write_opt_list="iflag=noatime conv=notrunc conv=fsync oflag=direct" + chattr_opt_list="+j -j +jS -j" + idx=0 + # + for write_opt in $write_opt_list + do + idx=$((idx + 1)) + for chattr_opt in $chattr_opt_list + do + + echo "OP write_opt: $write_opt 4M, \ +chattr_opt: $chattr_opt" + dd if=/dev/zero of=$SCRATCH_MNT/file.$idx \ + bs=1M count=4 $write_opt \ + >> $seq.full 2>&1 || exit + chattr $chattr_opt $SCRATCH_MNT/file.$idx >> $seq.full \ + || exit + done + done + sync + # Same as previous test, but for one file, + # and with ENOSPC triggering + for write_opt in $write_opt_list + do + idx=$((idx + 1)) + for chattr_opt in $chattr_opt_list + do + + echo "OP write_opt: $write_opt ENOSPC, \ +chattr_opt: $chattr_opt" + dd if=/dev/zero of=$SCRATCH_MNT/file.$idx \ + bs=1M $write_opt >> $seq.full 2>&1 + chattr $chattr_opt $SCRATCH_MNT/file.$idx \ + >> $seq.full || exit + done + sync + unlink $SCRATCH_MNT/file.$idx + done +} + +# real QA test starts here +_supported_fs ext3 ext4 +_supported_os Linux +_require_scratch +_need_to_be_root + +umount $SCRATCH_DEV 2>/dev/null +_scratch_mkfs_sized $((64 * 1024 * 1024)) >> $seq.full 2>&1 +_scratch_mount + +if ! _workout; then + echo "workout failed" + _scratch_unmount + status=1 + exit +fi + +if ! _scratch_unmount; then + echo "failed to umount" + status=1 + exit +fi +echo "Check filesystem" +_check_scratch_fs +status=$? +exit diff --git a/272.out b/272.out new file mode 100644 index 0000000..cc687aa --- /dev/null +++ b/272.out @@ -0,0 +1,37 @@ +QA output created by 272 + + Switch data journalling mode + +OP write_opt: iflag=noatime 4M, chattr_opt: +j +OP write_opt: iflag=noatime 4M, chattr_opt: -j +OP write_opt: iflag=noatime 4M, chattr_opt: +jS +OP write_opt: iflag=noatime 4M, chattr_opt: -j +OP write_opt: conv=notrunc 4M, chattr_opt: +j +OP write_opt: conv=notrunc 4M, chattr_opt: -j +OP write_opt: conv=notrunc 4M, chattr_opt: +jS +OP write_opt: conv=notrunc 4M, chattr_opt: -j +OP write_opt: conv=fsync 4M, chattr_opt: +j +OP write_opt: conv=fsync 4M, chattr_opt: -j +OP write_opt: conv=fsync 4M, chattr_opt: +jS +OP write_opt: conv=fsync 4M, chattr_opt: -j +OP write_opt: oflag=direct 4M, chattr_opt: +j +OP write_opt: oflag=direct 4M, chattr_opt: -j +OP write_opt: oflag=direct 4M, chattr_opt: +jS +OP write_opt: oflag=direct 4M, chattr_opt: -j +OP write_opt: iflag=noatime ENOSPC, chattr_opt: +j +OP write_opt: iflag=noatime ENOSPC, chattr_opt: -j +OP write_opt: iflag=noatime ENOSPC, chattr_opt: +jS +OP write_opt: iflag=noatime ENOSPC, chattr_opt: -j +OP write_opt: conv=notrunc ENOSPC, chattr_opt: +j +OP write_opt: conv=notrunc ENOSPC, chattr_opt: -j +OP write_opt: conv=notrunc ENOSPC, chattr_opt: +jS +OP write_opt: conv=notrunc ENOSPC, chattr_opt: -j +OP write_opt: conv=fsync ENOSPC, chattr_opt: +j +OP write_opt: conv=fsync ENOSPC, chattr_opt: -j +OP write_opt: conv=fsync ENOSPC, chattr_opt: +jS +OP write_opt: conv=fsync ENOSPC, chattr_opt: -j +OP write_opt: oflag=direct ENOSPC, chattr_opt: +j +OP write_opt: oflag=direct ENOSPC, chattr_opt: -j +OP write_opt: oflag=direct ENOSPC, chattr_opt: +jS +OP write_opt: oflag=direct ENOSPC, chattr_opt: -j +Check filesystem diff --git a/group b/group index fefa580..616cbdd 100644 --- a/group +++ b/group @@ -385,3 +385,4 @@ deprecated 269 auto rw prealloc ioctl enospc 270 auto quota rw prealloc ioctl enospc 271 auto rw quick +272 auto enospc rw -- 1.7.1 From BATV+9df61a0795d9022ba6a7+2993+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 3 14:39:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3JdhFQ048695 for ; Thu, 3 Nov 2011 14:39:43 -0500 X-ASG-Debug-ID: 1320349178-53e503470000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0D983125D86F; Thu, 3 Nov 2011 12:39:38 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id VdIATM2zR6QUDaMt; Thu, 03 Nov 2011 12:39:38 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RM38R-00069l-Rd; Thu, 03 Nov 2011 19:39:35 +0000 Date: Thu, 3 Nov 2011 15:39:35 -0400 From: Christoph Hellwig To: Dmitry Monakhov Cc: linux-fsdevel@vger.kernel.org, aelder@sgi.com, tytso@mit.edu, hch@lst.de, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/9] xfstests: add a new quota test that runs fsstress under ENOSPC conditions Subject: Re: [PATCH 7/9] xfstests: add a new quota test that runs fsstress under ENOSPC conditions Message-ID: <20111103193935.GA23014@infradead.org> References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> <1320342953-7973-7-git-send-email-dmonakhov@openvz.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320342953-7973-7-git-send-email-dmonakhov@openvz.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320349179 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79232 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 03, 2011 at 09:55:51PM +0400, Dmitry Monakhov wrote: > - Same as 264 but with quota enabled. 269 is the new 270 > - IO performed from $qa_user user > - fsstress granted with CAP_CHOWN capability. This fails in my test VM because it doesn't have setcap. If you want to use additional non-standard tools please do a _notrun if they aren't present. I don't quite understand why it would need CAP_CHOWN - chowns from owned files do not require it, and the test runs fine with the setcap line commented out. I'll commit it as-is for now, but unless I get some feedback on why the setcap is require I'll add another commit to remove it ASAP. From arekm@maven.pl Thu Nov 3 15:02:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3K2J4i050248 for ; Thu, 3 Nov 2011 15:02:19 -0500 X-ASG-Debug-ID: 1320350534-391900f10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 968BA10132C7 for ; Thu, 3 Nov 2011 13:02:14 -0700 (PDT) Received: from mail-fx0-f53.google.com (mail-fx0-f53.google.com [209.85.161.53]) by cuda.sgi.com with ESMTP id AIK9kkSAFuYGffhf for ; Thu, 03 Nov 2011 13:02:14 -0700 (PDT) Received: by faai28 with SMTP id i28so2057394faa.26 for ; Thu, 03 Nov 2011 13:02:14 -0700 (PDT) Received: by 10.223.65.83 with SMTP id h19mr910395fai.1.1320350534167; Thu, 03 Nov 2011 13:02:14 -0700 (PDT) Received: from t400.localnet (89-69-21-174.dynamic.chello.pl. [89.69.21.174]) by mx.google.com with ESMTPS id j5sm13769831faf.14.2011.11.03.13.02.13 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 13:02:13 -0700 (PDT) From: Arkadiusz =?utf-8?q?Mi=C5=9Bkiewicz?= To: Christoph Hellwig X-ASG-Orig-Subj: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Subject: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Date: Thu, 3 Nov 2011 21:02:12 +0100 User-Agent: KMail/1.13.7 (Linux/3.1.0-05616-gf362f98; KDE/4.7.3; x86_64; ; ) Cc: xfs@oss.sgi.com References: <201110311156.20421.arekm@maven.pl> <20111103110306.GA8382@infradead.org> <20111103115429.GA15726@infradead.org> In-Reply-To: <20111103115429.GA15726@infradead.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <201111032102.12137.arekm@maven.pl> X-Barracuda-Connect: mail-fx0-f53.google.com[209.85.161.53] X-Barracuda-Start-Time: 1320350535 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0205 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79232 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thursday 03 of November 2011, Christoph Hellwig wrote: > Can you give this patch a quick try on the image in that constrained > setup? Ate up all 8GB of ram and then was killed: [217802.127030] Out of memory: Kill process 22898:#0 (xfs_repair) score 784= or=20 sacrifice child [217802.127033] Killed process 22898:#0 (xfs_repair) total-vm:7156064kB, an= on- rss:6652784kB, file-rss:620kB Now the question is if 8GB should be enough for repairing 7TB filesystem? =2D-=20 Arkadiusz Mi=C5=9Bkiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From arekm@maven.pl Thu Nov 3 15:21:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3KLMLH051543 for ; Thu, 3 Nov 2011 15:21:22 -0500 X-ASG-Debug-ID: 1320351680-4ae303a90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9ADAE1CE098E for ; Thu, 3 Nov 2011 13:21:21 -0700 (PDT) Received: from mail-fx0-f53.google.com (mail-fx0-f53.google.com [209.85.161.53]) by cuda.sgi.com with ESMTP id EAYp2VpDBXsBBYLc for ; Thu, 03 Nov 2011 13:21:21 -0700 (PDT) Received: by faai28 with SMTP id i28so2074705faa.26 for ; Thu, 03 Nov 2011 13:21:20 -0700 (PDT) Received: by 10.223.76.217 with SMTP id d25mr18628449fak.31.1320351678672; Thu, 03 Nov 2011 13:21:18 -0700 (PDT) Received: from t400.localnet (89-69-21-174.dynamic.chello.pl. [89.69.21.174]) by mx.google.com with ESMTPS id o16sm13804186fag.21.2011.11.03.13.21.17 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 13:21:18 -0700 (PDT) From: Arkadiusz =?utf-8?q?Mi=C5=9Bkiewicz?= To: Christoph Hellwig X-ASG-Orig-Subj: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Subject: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Date: Thu, 3 Nov 2011 21:21:16 +0100 User-Agent: KMail/1.13.7 (Linux/3.1.0-05616-gf362f98; KDE/4.7.3; x86_64; ; ) Cc: xfs@oss.sgi.com References: <201110311156.20421.arekm@maven.pl> <201111031157.39179.arekm@maven.pl> <20111103110306.GA8382@infradead.org> In-Reply-To: <20111103110306.GA8382@infradead.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <201111032121.16891.arekm@maven.pl> X-Barracuda-Connect: mail-fx0-f53.google.com[209.85.161.53] X-Barracuda-Start-Time: 1320351681 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0006 1.0000 -2.0173 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79235 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thursday 03 of November 2011, Christoph Hellwig wrote: > On Thu, Nov 03, 2011 at 11:57:38AM +0100, Arkadiusz Mi??kiewicz wrote: > > > In the meantime is there any chance you could send the output of > > >=20 > > > xfs_repair -n -vv -m 1 > > >=20 > > > for this filesystem? > >=20 > > Will such repair done on metadumped & restored image be enough for you? >=20 > Yes. >=20 > I also looked at the memory heuristics and found some fairly obvious > flaws. I'll have some test patches for you ASAP. # LC_ALL=3DC ./xfs_repair -vv -m 1 /dev/vg_sys/lv_storage1 Phase 1 - find and verify superblock... - max_mem =3D 1024, icount =3D 97495744, imem =3D 380842, dblock = =3D=20 1884752896, dmem =3D 920289 Required memory for repair is greater that the maximum specified with the -m option. Please increase it to at least 1319. =2D-=20 Arkadiusz Mi=C5=9Bkiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From sekharan@us.ibm.com Thu Nov 3 16:44:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA3LiruA054867 for ; Thu, 3 Nov 2011 16:44:54 -0500 X-ASG-Debug-ID: 1320356692-371402010000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e34.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7623821CFA1 for ; Thu, 3 Nov 2011 14:44:52 -0700 (PDT) Received: from e34.co.us.ibm.com (e34.co.us.ibm.com [32.97.110.152]) by cuda.sgi.com with ESMTP id k43q4M2vJGmK0SKp for ; Thu, 03 Nov 2011 14:44:52 -0700 (PDT) X-ASG-Whitelist: Barracuda Reputation Received: from /spool/local by e34.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 3 Nov 2011 15:44:51 -0600 Received: from d03relay03.boulder.ibm.com ([9.17.195.228]) by e34.co.us.ibm.com ([192.168.1.134]) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 3 Nov 2011 15:43:54 -0600 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id pA3LhlTg109326 for ; Thu, 3 Nov 2011 15:43:49 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id pA3Lhl0p013535 for ; Thu, 3 Nov 2011 15:43:47 -0600 Received: from [9.53.40.164] (chandra-lucid.austin.ibm.com [9.53.40.164]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id pA3LhlI5013496; Thu, 3 Nov 2011 15:43:47 -0600 X-ASG-Orig-Subj: Hang seen in xfstests 234 Subject: Hang seen in xfstests 234 From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Alex Elder Cc: XFS Mailing List Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Thu, 03 Nov 2011 16:43:46 -0500 Message-ID: <1320356626.17713.32.camel@chandra-lucid.austin.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit x-cbid: 11110321-1780-0000-0000-000000AD2094 X-Barracuda-Connect: e34.co.us.ibm.com[32.97.110.152] X-Barracuda-Start-Time: 1320356693 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Alex, I ran the xfstests 234 with procs set to 20 and I can consistently make it hang. Looks like, the log buffer is full and all the processes are sleeping at xlog_wait() or blocked on a mutex which was held by a process that is sleeping on xlog_wait(). wake up happens when sync is invoked and all processes run free to completion. In order to verify the hypothesis, I added the following code ------------------------- diff --git a/fs/xfs/xfs_qm_syscalls.c b/fs/xfs/xfs_qm_syscalls.c index 5cc3dde..b2c0d49 100644 --- a/fs/xfs/xfs_qm_syscalls.c +++ b/fs/xfs/xfs_qm_syscalls.c @@ -621,6 +621,7 @@ xfs_qm_scall_setqlim( dqp->dq_flags |= XFS_DQ_DIRTY; xfs_trans_log_dquot(tp, dqp); + xfs_trans_set_sync(tp); error = xfs_trans_commit(tp, 0); xfs_qm_dqrele(dqp); -------------------------- and it seems to work well. Not sure if this can be a fix or the nudge has to happen somewhere else. Please comment. Regards, Chandra From guaneryu@gmail.com Thu Nov 3 21:40:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA42eOXO064882 for ; Thu, 3 Nov 2011 21:40:25 -0500 X-ASG-Debug-ID: 1320374423-232200fa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-vw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 501C521EBD1 for ; Thu, 3 Nov 2011 19:40:23 -0700 (PDT) Received: from mail-vw0-f53.google.com (mail-vw0-f53.google.com [209.85.212.53]) by cuda.sgi.com with ESMTP id yuXv7XiL1vYDutrb for ; Thu, 03 Nov 2011 19:40:23 -0700 (PDT) Received: by vws19 with SMTP id 19so559611vws.26 for ; Thu, 03 Nov 2011 19:40:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer; bh=WRjEdOt4mi6zkiiaqYJ3k3klu3DYqchPrgetfzNO07s=; b=rfg9TA5Q9ey8V6A0GWNtDPOG8hzYxMoq0keH9nU4nSYmgFXqj9TjqxsK59JrzOh+Br SNGTmS1IiFiRhQfEqbKjfBoYicXMGLs/349qAJZ5HF8XSYCxXMoI0hyQHgEMDYawx1/a To1zge3PrXbXsARfWgMX3kzJTxv8fx5npeZRU= Received: by 10.52.69.235 with SMTP id h11mr12689124vdu.92.1320374423186; Thu, 03 Nov 2011 19:40:23 -0700 (PDT) Received: from localhost ([123.119.248.25]) by mx.google.com with ESMTPS id et6sm11084254vdc.15.2011.11.03.19.40.19 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 19:40:22 -0700 (PDT) From: Eryu Guan To: xfs@oss.sgi.com Cc: Eryu Guan X-ASG-Orig-Subj: [PATCH 1/2] xfstests: 083 make variable filesize as size in bytes Subject: [PATCH 1/2] xfstests: 083 make variable filesize as size in bytes Date: Fri, 4 Nov 2011 10:38:03 +0800 Message-Id: <1320374284-1534-1-git-send-email-guaneryu@gmail.com> X-Mailer: git-send-email 1.7.7.1 X-Barracuda-Connect: mail-vw0-f53.google.com[209.85.212.53] X-Barracuda-Start-Time: 1320374424 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0532 1.0000 -1.6799 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.68 X-Barracuda-Spam-Status: No, SCORE=-1.68 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79259 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The first argument of _scratch_mkfs_sized() should be file system size in bytes, so '100m' is not a valid number, and the 'expr' expression in _scratch_mkfs_sized() complains 'non-numeric argument' about it. Signed-off-by: Eryu Guan --- 083 | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/083 b/083 index 441284e..e0670b9 100755 --- a/083 +++ b/083 @@ -91,7 +91,7 @@ workout() echo "*** test out-of-space handling for random write operations" -filesize=100m +filesize=`expr 100 \* 1024 \* 1024` agcount=6 numprocs=15 numops=1500 -- 1.7.7.1 From guaneryu@gmail.com Thu Nov 3 21:42:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,FREEMAIL_FROM, J_CHICKENPOX_45,J_CHICKENPOX_62,T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA42gKdh064945 for ; Thu, 3 Nov 2011 21:42:20 -0500 X-ASG-Debug-ID: 1320374538-2fd400f60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-vw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5A9F4101469E for ; Thu, 3 Nov 2011 19:42:18 -0700 (PDT) Received: from mail-vw0-f53.google.com (mail-vw0-f53.google.com [209.85.212.53]) by cuda.sgi.com with ESMTP id QrWj2WDKJ0PIRTg4 for ; Thu, 03 Nov 2011 19:42:18 -0700 (PDT) Received: by vws19 with SMTP id 19so560615vws.26 for ; Thu, 03 Nov 2011 19:42:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=C1s18YjCfbhNR+zT5n+6ZWqTP7q7bHzwIplwb2KWNdo=; b=lJMBuTf9VWvR4FxMxLn7W/H5yy/M61PYjIjzGQOWCc8UupOo1u1hM9pB+b0NICppai +widfZdZ/6I7zyhLO9+ak7Xn8JFIdIUWEOXrb5v2+0E03dvreUELm7IjDhLLrLqmEqsc NIsTIKHvLGTeDB7MiihBHR748T+SJWxYYlTgE= Received: by 10.52.88.231 with SMTP id bj7mr12836287vdb.81.1320374537874; Thu, 03 Nov 2011 19:42:17 -0700 (PDT) Received: from localhost ([123.119.248.25]) by mx.google.com with ESMTPS id c20sm11118574vdt.6.2011.11.03.19.42.15 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 03 Nov 2011 19:42:17 -0700 (PDT) From: Eryu Guan To: xfs@oss.sgi.com Cc: Eryu Guan X-ASG-Orig-Subj: [PATCH 2/2] xfstests: meet btrfs fs size requirement in _scratch_mkfs_sized() Subject: [PATCH 2/2] xfstests: meet btrfs fs size requirement in _scratch_mkfs_sized() Date: Fri, 4 Nov 2011 10:38:04 +0800 Message-Id: <1320374284-1534-2-git-send-email-guaneryu@gmail.com> X-Mailer: git-send-email 1.7.7.1 In-Reply-To: <1320374284-1534-1-git-send-email-guaneryu@gmail.com> References: <1320374284-1534-1-git-send-email-guaneryu@gmail.com> X-Barracuda-Connect: mail-vw0-f53.google.com[209.85.212.53] X-Barracuda-Start-Time: 1320374539 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0330 1.0000 -1.8077 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.81 X-Barracuda-Spam-Status: No, SCORE=-1.81 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79260 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean btrfs requires at least 256M file system size, so check 'fssize' in _scratch_mkfs_sized first and give it a proper value. Otherwise mkfs.btrfs will complain something like "File system size 267386880 bytes is too small, 256M is required at least" This makes 015 077 and 083 run on btrfs. Signed-off-by: Eryu Guan --- common.rc | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/common.rc b/common.rc index e948169..ab61786 100644 --- a/common.rc +++ b/common.rc @@ -356,6 +356,11 @@ _scratch_mkfs_sized() /sbin/mkfs.$FSTYP $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks ;; btrfs) + # btrfs needs at least 256M file system size + if [ $fssize -lt $((256*1024*1024)) ] + then + fssize=$((256*1024*1024)) + fi $MKFS_BTRFS_PROG $MKFS_OPTIONS -b $fssize $SCRATCH_DEV ;; *) -- 1.7.7.1 From BATV+78e98da816627bc9eefb+2994+infradead.org+hch@bombadil.srs.infradead.org Fri Nov 4 00:44:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_45, J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA45iRTc074245 for ; Fri, 4 Nov 2011 00:44:29 -0500 X-ASG-Debug-ID: 1320385148-6d4f01370000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5316121EDA5 for ; Thu, 3 Nov 2011 22:39:09 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id w8WGGYLvfRn7MYDL for ; Thu, 03 Nov 2011 22:39:09 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RMCUe-0005EO-Mp; Fri, 04 Nov 2011 05:39:08 +0000 Date: Fri, 4 Nov 2011 01:39:08 -0400 From: Christoph Hellwig To: Eryu Guan Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: meet btrfs fs size requirement in _scratch_mkfs_sized() Subject: Re: [PATCH 2/2] xfstests: meet btrfs fs size requirement in _scratch_mkfs_sized() Message-ID: <20111104053908.GB16720@infradead.org> References: <1320374284-1534-1-git-send-email-guaneryu@gmail.com> <1320374284-1534-2-git-send-email-guaneryu@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320374284-1534-2-git-send-email-guaneryu@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320385149 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79271 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Nov 04, 2011 at 10:38:04AM +0800, Eryu Guan wrote: > btrfs requires at least 256M file system size, so check 'fssize' in > _scratch_mkfs_sized first and give it a proper value. Otherwise > mkfs.btrfs will complain something like > > "File system size 267386880 bytes is too small, 256M is required at least" > > This makes 015 077 and 083 run on btrfs. But it's not really going to test the ENOSPC conditions it was designed to exercise. It would be better to either find a way to make btrfs run on smaller filesystem, or call _notrun for too small filesystems on btrfs from _scratch_mkfs_sized. > > Signed-off-by: Eryu Guan > --- > common.rc | 5 +++++ > 1 files changed, 5 insertions(+), 0 deletions(-) > > diff --git a/common.rc b/common.rc > index e948169..ab61786 100644 > --- a/common.rc > +++ b/common.rc > @@ -356,6 +356,11 @@ _scratch_mkfs_sized() > /sbin/mkfs.$FSTYP $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks > ;; > btrfs) > + # btrfs needs at least 256M file system size > + if [ $fssize -lt $((256*1024*1024)) ] > + then > + fssize=$((256*1024*1024)) > + fi > $MKFS_BTRFS_PROG $MKFS_OPTIONS -b $fssize $SCRATCH_DEV > ;; > *) > -- > 1.7.7.1 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From guaneryu@gmail.com Fri Nov 4 01:07:15 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,FREEMAIL_FROM, J_CHICKENPOX_45,J_CHICKENPOX_62,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA467FNx074756 for ; Fri, 4 Nov 2011 01:07:15 -0500 X-ASG-Debug-ID: 1320386833-3eda02250000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ww0-f51.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7924518C2424 for ; Thu, 3 Nov 2011 23:07:13 -0700 (PDT) Received: from mail-ww0-f51.google.com (mail-ww0-f51.google.com [74.125.82.51]) by cuda.sgi.com with ESMTP id mMveGGpgpyA73u8k for ; Thu, 03 Nov 2011 23:07:13 -0700 (PDT) Received: by wwf27 with SMTP id 27so2250191wwf.32 for ; Thu, 03 Nov 2011 23:07:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:reply-to:in-reply-to:references:from:date:message-id :subject:to:cc:content-type:content-transfer-encoding; bh=9T24K3aMz4xK1v2hwpcx1GzrObTHARpr5NZDLPsa4fw=; b=u6QYNEfB6vS8o5sNS8ODc83uxc4sxOPLkZ+tqZvZ5DiP4hM7injVcTd/uPogZAThQJ 5DSiDkr91l8cPQhRtJ1QWfcfsV4LfoHY5NTJbyizmRZqkekqd9vz9+IfvG0+mrNBv2vr oHOsJ1Z1y+0FisTws+DjvjKTvi6r11HVm+MrM= Received: by 10.216.137.193 with SMTP id y43mr2950122wei.108.1320386832100; Thu, 03 Nov 2011 23:07:12 -0700 (PDT) MIME-Version: 1.0 Received: by 10.216.173.131 with HTTP; Thu, 3 Nov 2011 23:06:51 -0700 (PDT) Reply-To: guaneryu@gmail.com In-Reply-To: <20111104053908.GB16720@infradead.org> References: <1320374284-1534-1-git-send-email-guaneryu@gmail.com> <1320374284-1534-2-git-send-email-guaneryu@gmail.com> <20111104053908.GB16720@infradead.org> From: Eryu Guan Date: Fri, 4 Nov 2011 14:06:51 +0800 Message-ID: X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: meet btrfs fs size requirement in _scratch_mkfs_sized() Subject: Re: [PATCH 2/2] xfstests: meet btrfs fs size requirement in _scratch_mkfs_sized() To: Christoph Hellwig Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-ww0-f51.google.com[74.125.82.51] X-Barracuda-Start-Time: 1320386834 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79273 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Nov 4, 2011 at 1:39 PM, Christoph Hellwig wrote= : > On Fri, Nov 04, 2011 at 10:38:04AM +0800, Eryu Guan wrote: >> btrfs requires at least 256M file system size, so check 'fssize' in >> _scratch_mkfs_sized first and give it a proper value. Otherwise >> mkfs.btrfs will complain something like >> >> "File system size 267386880 bytes is too small, 256M is required at leas= t" >> >> This makes 015 077 and 083 run on btrfs. > > But it's not really going to test the ENOSPC conditions it was designed > to exercise. =A0It would be better to either find a way to make btrfs run= on > smaller filesystem, or call _notrun for too small filesystems on btrfs > from _scratch_mkfs_sized. Yes, you're right. I checked 015 (it would dd zero to btrfs to full) but fo= rgot to check 077 and 083. I'll try to find a better way. Thanks for reviewing! Eryu Guan > >> >> Signed-off-by: Eryu Guan >> --- >> =A0common.rc | =A0 =A05 +++++ >> =A01 files changed, 5 insertions(+), 0 deletions(-) >> >> diff --git a/common.rc b/common.rc >> index e948169..ab61786 100644 >> --- a/common.rc >> +++ b/common.rc >> @@ -356,6 +356,11 @@ _scratch_mkfs_sized() >> =A0 =A0 =A0 /sbin/mkfs.$FSTYP $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $= blocks >> =A0 =A0 =A0 ;; >> =A0 =A0 =A0btrfs) >> + =A0 =A0# btrfs needs at least 256M file system size >> + =A0 =A0 if [ $fssize -lt $((256*1024*1024)) ] >> + =A0 =A0 then >> + =A0 =A0 =A0 =A0 =A0 =A0 fssize=3D$((256*1024*1024)) >> + =A0 =A0 fi >> =A0 =A0 =A0 $MKFS_BTRFS_PROG $MKFS_OPTIONS -b $fssize $SCRATCH_DEV >> =A0 =A0 =A0 ;; >> =A0 =A0 =A0*) >> -- >> 1.7.7.1 >> >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs > ---end quoted text--- > From sbehrens@giantdisaster.de Fri Nov 4 03:21:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_45, J_CHICKENPOX_62,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA48LnsN079056 for ; Fri, 4 Nov 2011 03:21:50 -0500 X-ASG-Debug-ID: 1320394902-6d4603220000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mo-p00-ob.rzone.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B849321F415 for ; Fri, 4 Nov 2011 01:21:42 -0700 (PDT) Received: from mo-p00-ob.rzone.de (mo-p00-ob.rzone.de [81.169.146.162]) by cuda.sgi.com with ESMTP id LLKDYsDTAO1VzhPm for ; Fri, 04 Nov 2011 01:21:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; t=1320394902; l=1756; s=domk; d=giantdisaster.de; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:References: Subject:CC:To:MIME-Version:From:Date:X-RZG-CLASS-ID:X-RZG-AUTH; bh=BrEh5NaC8cYgOcMesy2z4zDnL3g=; b=LcZiTbkwQYFn8UM1aQl2dV/hPPFKqU4qb32C0yftURpnjNnIAn/yYYt6Ok+3dSMs/y/ zzztwGJPwrOFUfqLcf83WrMQBYBGh8DHMRBRJzWH0zSxzHVXc4qAO6Rn38kCHi/cUO6b1 Rm+vplwYs8sQl9dz+Glu3AXoYsXIAqASwqQ= X-RZG-AUTH: :IGUKYFjleetgZuRbHZjp6Ve7NzeE1efWuTR/wV06y353QgIuD5+acdRFtJ8MDHZp4u74mTVB5dOWYQ== X-RZG-CLASS-ID: mo00 Received: from [172.24.1.80] (yian-ho01.nir.cronon.net [192.166.201.94]) by smtp.strato.de (klopstock mo10) (RZmta 26.10 AUTH) with ESMTPA id 905dc1nA47fxX1 ; Fri, 4 Nov 2011 09:21:30 +0100 (MET) Message-ID: <4EB3A08C.7010803@giantdisaster.de> Date: Fri, 04 Nov 2011 09:21:32 +0100 From: Stefan Behrens User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1 MIME-Version: 1.0 To: guaneryu@gmail.com CC: Christoph Hellwig , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: meet btrfs fs size requirement in _scratch_mkfs_sized() Subject: Re: [PATCH 2/2] xfstests: meet btrfs fs size requirement in _scratch_mkfs_sized() References: <1320374284-1534-1-git-send-email-guaneryu@gmail.com> <1320374284-1534-2-git-send-email-guaneryu@gmail.com> <20111104053908.GB16720@infradead.org> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-p00-ob.rzone.de[81.169.146.162] X-Barracuda-Start-Time: 1320394908 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0006 1.0000 -2.0172 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79283 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/4/2011 7:06 AM, Eryu Guan wrote: > On Fri, Nov 4, 2011 at 1:39 PM, Christoph Hellwig wrote: >> On Fri, Nov 04, 2011 at 10:38:04AM +0800, Eryu Guan wrote: >>> btrfs requires at least 256M file system size, so check 'fssize' in >>> _scratch_mkfs_sized first and give it a proper value. Otherwise >>> mkfs.btrfs will complain something like >>> >>> "File system size 267386880 bytes is too small, 256M is required at least" Commit bd7d6d45 from Zhong, Xin with date 6/21/2011 removed the 256MB size limitation in mkfs.c in btrfs-progs. >>> >>> This makes 015 077 and 083 run on btrfs. >> >> But it's not really going to test the ENOSPC conditions it was designed >> to exercise. It would be better to either find a way to make btrfs run on >> smaller filesystem, or call _notrun for too small filesystems on btrfs >> from _scratch_mkfs_sized. > > Yes, you're right. I checked 015 (it would dd zero to btrfs to full) but forgot > to check 077 and 083. > > I'll try to find a better way. Thanks for reviewing! > > Eryu Guan >> >>> >>> Signed-off-by: Eryu Guan >>> --- >>> common.rc | 5 +++++ >>> 1 files changed, 5 insertions(+), 0 deletions(-) >>> >>> diff --git a/common.rc b/common.rc >>> index e948169..ab61786 100644 >>> --- a/common.rc >>> +++ b/common.rc >>> @@ -356,6 +356,11 @@ _scratch_mkfs_sized() >>> /sbin/mkfs.$FSTYP $MKFS_OPTIONS -b $blocksize $SCRATCH_DEV $blocks >>> ;; >>> btrfs) >>> + # btrfs needs at least 256M file system size >>> + if [ $fssize -lt $((256*1024*1024)) ] >>> + then >>> + fssize=$((256*1024*1024)) >>> + fi >>> $MKFS_BTRFS_PROG $MKFS_OPTIONS -b $fssize $SCRATCH_DEV >>> ;; >>> *) >>> -- >>> 1.7.7.1 From bjacke@sernet.de Fri Nov 4 06:16:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA4BGtJR087756 for ; Fri, 4 Nov 2011 06:16:56 -0500 X-ASG-Debug-ID: 1320405413-7ac9011b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.SerNet.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BABCA21FE0D for ; Fri, 4 Nov 2011 04:16:54 -0700 (PDT) Received: from mail.SerNet.de (mail.SerNet.de [193.175.80.2]) by cuda.sgi.com with ESMTP id 8lyyOornvLDj1U3X for ; Fri, 04 Nov 2011 04:16:54 -0700 (PDT) Received: from intern.SerNet.DE by mail.SerNet.DE with esmtp (Exim 4.69 #1) id 1RMHlS-0006Jp-SL; Fri, 04 Nov 2011 12:16:50 +0100 Received: by intern.SerNet.DE id 1RMHlS-00HYp9-Hk; Fri, 04 Nov 2011 12:16:50 +0100 Received: by intern.SerNet.DE id 1RMHlR-00HYp2-EN; Fri, 04 Nov 2011 12:16:50 +0100 Received: from bjacke by pell.sernet.de with local (Exim 4.75) (envelope-from ) id 1RMHlE-0004hJ-Er; Fri, 04 Nov 2011 04:16:36 -0700 Date: Fri, 4 Nov 2011 12:16:36 +0100 From: =?iso-8859-1?Q?Bj=F6rn?= JACKE To: Anton Altaparmakov Cc: Steve French , linux-cifs@vger.kernel.org, samba-technical@lists.samba.org, LKML , Unix Support , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: CIFS: Rename bug on servers not supporting inode numbers Subject: Re: CIFS: Rename bug on servers not supporting inode numbers Mail-Followup-To: Anton Altaparmakov , Steve French , linux-cifs@vger.kernel.org, samba-technical@lists.samba.org, LKML , Unix Support , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com References: <9A609E6D-DF91-4AF9-855A-6D28E9B95D15@cam.ac.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <9A609E6D-DF91-4AF9-855A-6D28E9B95D15@cam.ac.uk> X-Q: Die Schriftsteller =?iso-8859-1?Q?k=F6nnen?= =?iso-8859-1?Q?_nicht_so_schnell_schreiben=2C_wie_die_Regierungen_Krieg?= =?iso-8859-1?Q?e?= machen; denn das Schreiben verlangt Denkarbeit. - Brecht Message-Id: Organization: SerNet GmbH, Goettingen, Germany X-Barracuda-Connect: mail.SerNet.de[193.175.80.2] X-Barracuda-Start-Time: 1320405414 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79293 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 2011-11-03 at 15:20 +0000 Anton Altaparmakov sent off: > Hi, > > Our CIFS server problems seem to have no end… The Novell CIFS server does not support server inode numbers (when I try the mount option I get the message it is being turned off as server does not support it) and thus each inode gets a different number each time it is accessed and it gets a different number again for each readdir call. > > The fun happens with rename() when the rename source and target only differ in case, e.g. > > touch foo > mv foo Foo somehow related seems https://bugzilla.kernel.org/show_bug.cgi?id=39512 (as long as kernel bugzilla is dead, see http://www.linux.sgi.com/archives/xfs-masters/2011-07/msg00022.html ) Case insensitive filesystems seem to be a problem in general on Linux. Not sure how far kernel and/or glibc are involved in the problem. As a workaround for the mess you need to do a temporary rename to a different name (not just a case equivalent name). Björn -- SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen phone: +49-551-370000-0, fax: +49-551-370000-9 AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen From BATV+78e98da816627bc9eefb+2994+infradead.org+hch@bombadil.srs.infradead.org Fri Nov 4 10:25:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA4FPCUI100166 for ; Fri, 4 Nov 2011 10:25:12 -0500 X-ASG-Debug-ID: 1320420306-17ec010b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 838121F2D6F2 for ; Fri, 4 Nov 2011 08:25:07 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 2mL0heasNiMlpmn0 for ; Fri, 04 Nov 2011 08:25:07 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RMLdi-0003E1-Fi for xfs@oss.sgi.com; Fri, 04 Nov 2011 15:25:06 +0000 Date: Fri, 4 Nov 2011 11:25:06 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs: fix attr2 vs large data fork assert Subject: [PATCH] xfs: fix attr2 vs large data fork assert Message-ID: <20111104152506.GA7869@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320420307 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79311 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean With Dmitry fsstress updates I've seen very reproducible crashes in xfs_attr_shortform_remove because xfs_attr_shortform_bytesfit claims that the attributes would not fit inline into the inode after removing an attribute. It turns out that we were operating on an inode with lots of delalloc extents, and thus an if_bytes values for the data fork that is larger than biggest possible on-disk storage for it which utterly confuses the code near the end of xfs_attr_shortform_bytesfit. Fix this by always allowing the current attribute fork, like we already do for the attr1 format, given that delalloc conversion will take care for moving either the data or attribute area out of line if it doesn't fit at that point - or making the point moot by merging extents at this point. Also document the function better, and clean up some lose bits. Signed-off-by: Christoph Hellwig Index: linux-2.6/fs/xfs/xfs_attr_leaf.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_attr_leaf.c 2011-11-04 13:46:59.481655134 +0100 +++ linux-2.6/fs/xfs/xfs_attr_leaf.c 2011-11-04 15:58:06.480155275 +0100 @@ -110,6 +110,7 @@ xfs_attr_namesp_match(int arg_flags, int /* * Query whether the requested number of additional bytes of extended * attribute space will be able to fit inline. + * * Returns zero if not, else the di_forkoff fork offset to be used in the * literal area for attribute data once the new bytes have been added. * @@ -136,11 +137,26 @@ xfs_attr_shortform_bytesfit(xfs_inode_t return (offset >= minforkoff) ? minforkoff : 0; } - if (!(mp->m_flags & XFS_MOUNT_ATTR2)) { - if (bytes <= XFS_IFORK_ASIZE(dp)) - return dp->i_d.di_forkoff; + /* + * If the requested numbers of bytes is smaller or equal to the + * current attribute fork size we can always proceed. + * + * Note that if_bytes in the data fork might actually be larger than + * the current data fork size is due to delalloc extents. In that + * case either the extent count will go down when they are converted + * to ral extents, or the delalloc conversion will take care of the + * literal area rebalancing. + */ + if (bytes <= XFS_IFORK_ASIZE(dp)) + return dp->i_d.di_forkoff; + + /* + * For attr2 we can try to move the forkoff if there is space in the + * literal area, but for the old format we are done if there is no + * space in the fixes attribute fork. + */ + if (!(mp->m_flags & XFS_MOUNT_ATTR2)) return 0; - } dsize = dp->i_df.if_bytes; @@ -157,10 +173,9 @@ xfs_attr_shortform_bytesfit(xfs_inode_t xfs_default_attroffset(dp)) dsize = XFS_BMDR_SPACE_CALC(MINDBTPTRS); break; - case XFS_DINODE_FMT_BTREE: /* - * If have data btree then keep forkoff if we have one, + * If have a data btree then keep forkoff if we have one, * otherwise we are adding a new attr, so then we set * minforkoff to where the btree root can finish so we have * plenty of room for attrs @@ -168,10 +183,9 @@ xfs_attr_shortform_bytesfit(xfs_inode_t if (dp->i_d.di_forkoff) { if (offset < dp->i_d.di_forkoff) return 0; - else - return dp->i_d.di_forkoff; - } else - dsize = XFS_BMAP_BROOT_SPACE(dp->i_df.if_broot); + return dp->i_d.di_forkoff; + } + dsize = XFS_BMAP_BROOT_SPACE(dp->i_df.if_broot); break; } @@ -186,10 +200,10 @@ xfs_attr_shortform_bytesfit(xfs_inode_t maxforkoff = XFS_LITINO(mp) - XFS_BMDR_SPACE_CALC(MINABTPTRS); maxforkoff = maxforkoff >> 3; /* rounded down */ - if (offset >= minforkoff && offset < maxforkoff) - return offset; if (offset >= maxforkoff) return maxforkoff; + if (offset >= minforkoff) + return offset; return 0; } From sandeen@sandeen.net Fri Nov 4 10:50:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA4FoAkp101660 for ; Fri, 4 Nov 2011 10:50:10 -0500 X-ASG-Debug-ID: 1320421808-36de015e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A27D4101895A for ; Fri, 4 Nov 2011 08:50:09 -0700 (PDT) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id eEyrKebTv6XJ8bT3 for ; Fri, 04 Nov 2011 08:50:09 -0700 (PDT) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 9A91B496328B; Fri, 4 Nov 2011 10:50:08 -0500 (CDT) Message-ID: <4EB409B0.4050302@sandeen.net> Date: Fri, 04 Nov 2011 10:50:08 -0500 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1 MIME-Version: 1.0 To: nanashi CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfsp_repair segfault (3.1.4 & 3.1.6) Subject: Re: xfsp_repair segfault (3.1.4 & 3.1.6) References: <4EAAED63.9050804@otenet.gr> In-Reply-To: <4EAAED63.9050804@otenet.gr> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1320421809 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.71 X-Barracuda-Spam-Status: No, SCORE=-1.71 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=URI_HEX X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79312 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.32 URI_HEX URI: URI hostname has long hexadecimal sequence X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 10/28/11 12:58 PM, nanashi wrote: > Hi, > > I have a corrupted RAID5 xfs filesystem from an intel SS-4000 NAS storage. > I'm using slackware-current with 2.6.39.3-smp kernel (32bit & 64bit) > When i try xfs_repair I get > > xfs_repair: dir2.c:2133: process_dir2: Assertion `(ino > !=mp->m_sb.sb_rootino && ino != *parent) || (ino == > mp->m_sb.sb_rootino && (ino == *parent || need_root_dotdot == 1))' > > I try both x86 and x86_64, I build 3.1.4 and 3.1.6 with DEBUG=-DNDEBUG and both continue but gave me a segfault > > [23978.718305] xfs_repair[25800]: segfault at 7fffa1d81ff0 ip 00007f15c1852049 sp 00007fffa257f048 error 6 in libc-2.13.so[7f15c1715000+19b000] > > I try xfs_metadump and I get segfault too. > > The partition is 2.2TB and I don't have enough space to dd it to an image. > > I attach the xfs_repair output before the segfault. > > any help is appreciated. > A corefile + debug binary would be helpful too... Argh, if metadump segfaults, that will make things tough. At least with a core + binary we could see just where it blew up. -Eric From BATV+78e98da816627bc9eefb+2994+infradead.org+hch@bombadil.srs.infradead.org Fri Nov 4 16:03:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA4L3ano116779 for ; Fri, 4 Nov 2011 16:03:37 -0500 X-ASG-Debug-ID: 1320440606-650901910000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9DD9422247D for ; Fri, 4 Nov 2011 14:03:26 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id zAqa6iL8cYlOVkuC for ; Fri, 04 Nov 2011 14:03:26 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RMQv6-00043S-DG; Fri, 04 Nov 2011 21:03:24 +0000 Date: Fri, 4 Nov 2011 17:03:24 -0400 From: Christoph Hellwig To: Simon Kirby Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS read hangs in 3.1-rc10 Subject: Re: XFS read hangs in 3.1-rc10 Message-ID: <20111104210324.GB14983@infradead.org> References: <20111020224214.GC22772@hostway.ca> <20111021132240.GA24136@infradead.org> <20111021202857.GB30100@hostway.ca> <20111024082219.GA19941@infradead.org> <20111025200748.GA25043@hostway.ca> <20111026112521.GA10432@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111026112521.GA10432@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320440611 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0004 1.0000 -2.0185 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79333 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Sorry Simon, I haven't really been able to get back to this as fast as I wanted to do. Can you do another run and check if the patch still helps your issue even if you remove the xfs_log_force line? From ligsae@sina.com Fri Nov 4 20:30:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.4 required=5.0 tests=BAYES_50,MIME_8BIT_HEADER, MIME_BASE64_BLANKS,RCVD_IN_BL_SPAMCOP_NET autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA51Uurp126466 for ; Fri, 4 Nov 2011 20:30:57 -0500 X-ASG-Debug-ID: 1320456651-3eb8000b0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail3-184.sinamail.sina.com.cn (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C859A1CE5FD2 for ; Fri, 4 Nov 2011 18:30:52 -0700 (PDT) Received: from mail3-184.sinamail.sina.com.cn (mail3-184.sinamail.sina.com.cn [202.108.3.184]) by cuda.sgi.com with ESMTP id Cnn0G19OrI4SK8dJ for ; Fri, 04 Nov 2011 18:30:52 -0700 (PDT) X-Originating-IP: [183.13.198.195] X-Auth-ID: ligsae X-Rcptcnt: gt3 X-Rcptcnt: gt10 Received: from unknown (HELO dwsx) ([183.13.198.195]) by irja2-171.sinamail.sina.com.cn with ESMTP; 05 Nov 2011 09:30:32 +0800 Reply-To: Message-ID: <2D994F9F01550D3F8E9E337B3F7AAF3E@dwsx> From: "wmzsixz" To: X-ASG-Orig-Subj: =?utf-8?B?5oCA5b+15LmU5biD5pavdmQwfQ==?= Subject: =?utf-8?B?5oCA5b+15LmU5biD5pavdmQwfQ==?= Date: Sat, 5 Nov 2011 09:09:44 +0800 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.5512 Disposition-Notification-To: chenda1888@163.com X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5512 X-Barracuda-Connect: mail3-184.sinamail.sina.com.cn[202.108.3.184] X-Barracuda-Start-Time: 1320456654 X-Barracuda-Bayes: INNOCENT GLOBAL 0.3973 1.0000 -0.0069 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.01 X-Barracuda-Spam-Status: No, SCORE=-0.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MIME_BASE64_BLANKS X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79351 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 MIME_BASE64_BLANKS RAW: Extra blank lines in base64 encoding X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh 4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh4omh 4omhICANCg0K4omh4omhICDjgJDkvJjjgJEtLeOAkOS7o+OAkS0t44CQ5Luj44CRIA0K4omh4omh ICDjgJDmg6DjgJEtLeOAkOW8gOOAkS0t44CQ5byA44CRICAgICAgICANCuKJoeKJoSAg44CQ5Luj 44CRLS3jgJDmma7jgJEtLeOAkOWinuOAkSAgDQriiaHiiaEgIOOAkOW8gOOAkS0t44CQ6YCa44CR LS3jgJDlgLzjgJEgIA0K4omh4omhICDjgJDnnJ/jgJEtLeOAkOeojuOAkS0t44CQ56iO44CRICAN CuKJoeKJoSAg44CQ5Y+R44CRLS3jgJDlj5HjgJEtLeOAkOWPkeOAkSANCuKJoeKJoSAg44CQ56Wo 44CRLS3jgJDnpajjgJEtLeOAkOelqOOAkQ0K4omh4omhICAgICAgICANCuKJoeKJoSAgICAgIOiB lOezu+S6uu+8mumZiOWFiOeUnyAg5rS96LCIDQriiaHiiaEgICAgICDnlLXor506MTM3MTUyMjEx NDMgDQriiaHiiaEgICAgIA0K4omh4omhICAgICAgICAgICAgICAgICAgICAgICAgICANCuKJoeKJ oeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJ oeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoeKJoSA= From sandy.miller73@gmail.com Sat Nov 5 00:03:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, SUBJ_FRIEND autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA553bru135392 for ; Sat, 5 Nov 2011 00:03:37 -0500 X-ASG-Debug-ID: 1320469414-5b2102fb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.webtechouse.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9D720222D69 for ; Fri, 4 Nov 2011 22:03:34 -0700 (PDT) Received: from mail.webtechouse.net (mail.webtechouse.net [66.29.97.199]) by cuda.sgi.com with ESMTP id HE1oYXqdk4zZje2K for ; Fri, 04 Nov 2011 22:03:34 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.webtechouse.net (Postfix) with ESMTP id 5FB2B2FA5809 for ; Sat, 5 Nov 2011 00:44:59 -0400 (EDT) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at Received: from mail.webtechouse.net ([127.0.0.1]) by localhost (mail.webtechouse.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id u4y+rzFLBh7w for ; Sat, 5 Nov 2011 00:44:56 -0400 (EDT) Received: from localhost (unknown [10.20.0.1]) by mail.webtechouse.net (Postfix) with ESMTP id 4403A2FA57FC for ; Sat, 5 Nov 2011 00:44:56 -0400 (EDT) 0: To: "Friend" From: "Sandy" Reply-To: "Sandy" X-ASG-Orig-Subj: Your friend Sandy has recommended this great product from Euro Train Hobby Subject: Your friend Sandy has recommended this great product from Euro Train Hobby Message-Id: <20111105044456.4403A2FA57FC@mail.webtechouse.net> Date: Sat, 5 Nov 2011 00:44:56 -0400 (EDT) X-Barracuda-Connect: mail.webtechouse.net[66.29.97.199] X-Barracuda-Start-Time: 1320469415 X-Barracuda-Bayes: INNOCENT GLOBAL 0.3635 1.0000 -0.1067 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.01 X-Barracuda-Spam-Status: No, SCORE=-0.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79365 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 X-Virus-Status: Clean --=_658bfcb73ac71a51dc84dee07eb5b37f Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Hi Friend! Your friend, Sandy, thought that you would be interested in Refrigerator beer car "Dortmunder Hansa-Brauerei" - US Zone from Euro Train Hobby. Hi, If you can't finally make some money with this: http://neowealth.co.cc/nmo1.php?e=xfs@oss.sgi.com You may as well just quit. Sad, but true. Cheers, Sandy To unsubscribe please click the link below: http://neowealth.co.cc/un.php?e=xfs@oss.sgi.com To view the product click on the link below or copy and paste the link into your web browser: http://www.eurotrainhobby.com/product_info.php/products_id/4566 Regards, Euro Train Hobby http://www.eurotrainhobby.com/ --=_658bfcb73ac71a51dc84dee07eb5b37f Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi Friend!

Your friend, Sandy, thought that you would be interested = in Refrigerator beer car "Dortmunder Hansa-Brauerei" - US Zone from Euro Tr= ain Hobby.

Hi,

If you can't finally make
some money with t= his:

http://neowealth.co.cc/nmo1.php?e=3Dxfs@oss.sgi.com

You = may as well just quit.

Sad, but true.

Cheers,
Sandy

To unsubscribe please click the link below:
http://neowealth.co.cc/= un.php?e=3Dxfs@oss.sgi.com

To view the product click on the link bel= ow or copy and paste the link into your web browser:

http://www.euro= trainhobby.com/product_info.php/products_id/4566

Regards,

Eur= o Train Hobby
http://www.eurotrainhobby.com/
--=_658bfcb73ac71a51dc84dee07eb5b37f-- From IreneK178@aol.com Sat Nov 5 01:14:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.0 required=5.0 tests=BAYES_99,FREEMAIL_FROM, T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA56EMF7137444 for ; Sat, 5 Nov 2011 01:14:22 -0500 X-ASG-Debug-ID: 1320473660-06ed004f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from imr-da04.mx.aol.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 47E951CE71DE for ; Fri, 4 Nov 2011 23:14:20 -0700 (PDT) Received: from imr-da04.mx.aol.com (imr-da04.mx.aol.com [205.188.105.146]) by cuda.sgi.com with ESMTP id 9ZGXyuoeT26Ey3xf for ; Fri, 04 Nov 2011 23:14:20 -0700 (PDT) Received: from mtaomg-da03.r1000.mx.aol.com (mtaomg-da03.r1000.mx.aol.com [172.29.51.139]) by imr-da04.mx.aol.com (8.14.1/8.14.1) with ESMTP id pA56EHBS025657 for ; Sat, 5 Nov 2011 02:14:17 -0400 Received: from core-dha001c.r1000.mail.aol.com (core-dha001.r1000.mail.aol.com [172.29.208.129]) by mtaomg-da03.r1000.mx.aol.com (OMAG/Core Interface) with ESMTP id B61ECE000081 for ; Sat, 5 Nov 2011 02:14:17 -0400 (EDT) From: IreneK178@aol.com Message-ID: <3a9a.1a14aff0.3be62e39@aol.com> Date: Sat, 5 Nov 2011 02:14:17 -0400 (EDT) X-ASG-Orig-Subj: Remember Me? Subject: Remember Me? To: xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: AOL 4.0 Thin for Windows 95 sub 20 X-Originating-IP: [64.12.112.202] x-aol-global-disposition: G DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mx.aol.com; s=20110426; t=1320473657; bh=+bTa1AqYK5wuYwjTrVf/iZ13RgR2LFLJZe6CTI2wjlg=; h=From:To:Subject:Message-ID:Date:MIME-Version:Content-Type; b=j4WlkjHl4bM/sS/yvsJPvKSLD+KkMT5OLKf/JKfjUTJHsn76kcMhASN9Gy2YTLpSh 9nPfVfZqM8yxFwBYTTodNbXw0h2zvU/4VBt9tGlTAIDbIOlhC09sabXGunCwWScTwD Ljl0uX3M3gk9RmcelfhzcNITmzznFlsiJJbyEw4U= X-AOL-SCOLL-SCORE: 0:2:156671440:93952408 X-AOL-SCOLL-URL_COUNT: 0 x-aol-sid: 3039ac1d338b4eb4d4396454 X-Barracuda-Connect: imr-da04.mx.aol.com[205.188.105.146] X-Barracuda-Start-Time: 1320473661 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5091 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.75 X-Barracuda-Spam-Status: No, SCORE=0.75 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79369 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 92588037 How goes it. I was messing around on the net and found this.. there doing a giveaway for an iPad2!! you need to hurry up and get yours before they run out heres the site. http://xav.cc/b33ea From BATV+a576dd851a46f4afe15d+2995+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 5 03:11:15 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA58BFxZ142726 for ; Sat, 5 Nov 2011 03:11:15 -0500 X-ASG-Debug-ID: 1320480671-06ed01ea0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E2B921CE842F for ; Sat, 5 Nov 2011 01:11:11 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id qEYD0l9lZvGE45g8 for ; Sat, 05 Nov 2011 01:11:11 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RMbLL-0003kq-3F for xfs@oss.sgi.com; Sat, 05 Nov 2011 08:11:11 +0000 Date: Sat, 5 Nov 2011 04:11:11 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 10/45] fix: force shutdown handling in xfs_end_io Subject: Re: [PATCH 10/45] fix: force shutdown handling in xfs_end_io Message-ID: <20111105081111.GA14382@infradead.org> References: <20111028095423.796574703@bombadil.infradead.org> <20111028100337.411618173@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111028100337.411618173@bombadil.infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320480671 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79370 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Btw, this probably is another candidates for 3.2. On Fri, Oct 28, 2011 at 05:54:33AM -0400, Christoph Hellwig wrote: > Only ioend->io_error gets propagated back to e.g. AIO completions. > > Signed-off-by: Christoph Hellwig > > --- > fs/xfs/xfs_aops.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > Index: xfs/fs/xfs/xfs_aops.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_aops.c 2011-10-27 22:39:56.068672482 +0200 > +++ xfs/fs/xfs/xfs_aops.c 2011-10-27 22:39:56.902173367 +0200 > @@ -184,7 +184,7 @@ xfs_end_io( > int error = 0; > > if (XFS_FORCED_SHUTDOWN(ip->i_mount)) { > - error = -EIO; > + ioend->io_error = -EIO; > goto done; > } > if (ioend->io_error) > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From jakub@bogusz.priv.pl Sat Nov 5 04:00:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA590VdN145849 for ; Sat, 5 Nov 2011 04:00:32 -0500 X-ASG-Debug-ID: 1320483626-0bed03df0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.qboosh.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C041A2230BA for ; Sat, 5 Nov 2011 02:00:26 -0700 (PDT) Received: from mail.qboosh.pl (mail.qboosh.pl [217.73.31.61]) by cuda.sgi.com with ESMTP id QmM0OudoMVg00jFT for ; Sat, 05 Nov 2011 02:00:26 -0700 (PDT) Received: from stranger.qboosh.pl (77-253-101-139.adsl.inetia.pl [77.253.101.139]) by mail.qboosh.pl (Postfix) with ESMTPSA id F1170CF9E7; Sat, 5 Nov 2011 10:00:59 +0100 (CET) Received: from stranger.qboosh.pl (localhost [127.0.0.1]) by stranger.qboosh.pl (8.14.3/8.14.3) with ESMTP id pA590VAU005658; Sat, 5 Nov 2011 10:00:31 +0100 Received: (from qboosh@localhost) by stranger.qboosh.pl (8.14.3/8.14.3/Submit) id pA590TUk005657; Sat, 5 Nov 2011 10:00:29 +0100 Date: Sat, 5 Nov 2011 10:00:29 +0100 From: Jakub Bogusz To: xfs@oss.sgi.com Cc: Christoph Hellwig X-ASG-Orig-Subj: Re: [PATCH v2] xfsprogs: fix various incorrect printf formats Subject: Re: [PATCH v2] xfsprogs: fix various incorrect printf formats Message-ID: <20111105090029.GA15258@stranger.qboosh.pl> References: <20111025115233.GB22103@infradead.org> <20111025155916.GA19818@stranger.qboosh.pl> <20111102092012.GA3808@infradead.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="WIyZ46R2i8wDzkSu" Content-Disposition: inline In-Reply-To: <20111102092012.GA3808@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: mail.qboosh.pl[217.73.31.61] X-Barracuda-Start-Time: 1320483627 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0003 1.0000 -2.0189 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79373 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --WIyZ46R2i8wDzkSu Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Wed, Nov 02, 2011 at 05:20:12AM -0400, Christoph Hellwig wrote: > Index: xfsprogs/repair/scan.c > =================================================================== > --- xfsprogs.orig/repair/scan.c 2011-10-30 05:56:36.168127218 +0100 > +++ xfsprogs/repair/scan.c 2011-10-30 05:57:45.981169953 +0100 > @@ -289,14 +289,14 @@ _("bad back (left) sibling pointer (saw > */ > set_bmap(agno, agbno, XR_E_MULT); > do_warn( > -_("inode 0x%" PRIu64 "bmap block 0x%" PRIu64 " claimed, state is %d\n"), > +_("inode 0x%" PRIu64 "bmap block 0x%" PRIx64 " claimed, state is %d\n"), > ino, bno, state); > break; > case XR_E_MULT: > case XR_E_INUSE_FS: > set_bmap(agno, agbno, XR_E_MULT); > do_warn( > -_("inode 0x%" PRIu64 " bmap block 0x%" PRIu64 " claimed, state is %d\n"), > +_("inode 0x%" PRIu64 " bmap block 0x%" PRIx64 " claimed, state is %d\n"), > ino, bno, state); > /* > * if we made it to here, this is probably a bmap block These two entries still need fix in the first format strings of both msgids... I'm attaching my version of the whole patch. -- Jakub Bogusz http://qboosh.pl/ --WIyZ46R2i8wDzkSu Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="xfsprogs-msgids.patch" Reported-by: Jakub Bogusz Signed-off-by: Christoph Hellwig Index: xfsprogs/libxfs/freebsd.c =================================================================== --- xfsprogs.orig/libxfs/freebsd.c 2011-10-30 05:56:36.180125966 +0100 +++ xfsprogs/libxfs/freebsd.c 2011-10-30 05:57:45.957126722 +0100 @@ -126,15 +126,13 @@ platform_findsizes(char *path, int fd, l } if ((st.st_mode & S_IFMT) != S_IFCHR) { - fprintf(stderr, _("%s: " - "Not a device or file: \"%s\"n"), + fprintf(stderr, _("%s: Not a device or file: \"%s\"\n"), progname, path); exit(1); } if (ioctl(fd, DIOCGMEDIASIZE, &size) != 0) { - fprintf(stderr, _("%s: " - "DIOCGMEDIASIZE failed on \"%s\": %s\n"), + fprintf(stderr, _("%s: DIOCGMEDIASIZE failed on \"%s\": %s\n"), progname, path, strerror(errno)); exit(1); } Index: xfsprogs/repair/dinode.c =================================================================== --- xfsprogs.orig/repair/dinode.c 2011-10-30 05:56:36.132124261 +0100 +++ xfsprogs/repair/dinode.c 2011-10-30 05:57:45.957126722 +0100 @@ -1439,7 +1439,7 @@ _("mismatch between format (%d) and size } if (dino->di_format == XFS_DINODE_FMT_LOCAL) { do_warn( -_("mismatch between format (%d) and size (%" PRId64 ") in symlink inode %" PRIu64 "n"), +_("mismatch between format (%d) and size (%" PRId64 ") in symlink inode %" PRIu64 "\n"), dino->di_format, (__int64_t)be64_to_cpu(dino->di_size), lino); return 1; Index: xfsprogs/repair/dir2.c =================================================================== --- xfsprogs.orig/repair/dir2.c 2011-10-30 05:56:36.156126568 +0100 +++ xfsprogs/repair/dir2.c 2011-11-02 10:16:46.593593447 +0100 @@ -1174,7 +1174,7 @@ _("would have corrected entry count in d ino, sfp->hdr.count, i); } else { do_warn( -_("corrected entry count in directory %" PRIu64 "u, was %d, now %d\n"), +_("corrected entry count in directory %" PRIu64 ", was %d, now %d\n"), ino, sfp->hdr.count, i); sfp->hdr.count = i; *dino_dirty = 1; Index: xfsprogs/repair/phase6.c =================================================================== --- xfsprogs.orig/repair/phase6.c 2011-10-30 05:56:36.144127454 +0100 +++ xfsprogs/repair/phase6.c 2011-10-30 05:57:45.973171205 +0100 @@ -2071,7 +2071,7 @@ longform_dir2_entry_check_data( if (is_inode_free(irec, ino_offset)) { nbad++; if (entry_junked( - _("entry \"%s\" in directory inode %" PRIu64 " points to free inode " PRIu64), + _("entry \"%s\" in directory inode %" PRIu64 " points to free inode %" PRIu64), fname, ip->i_ino, inum)) { dep->name[0] = '/'; libxfs_dir2_data_log_entry(tp, bp, dep); Index: xfsprogs/repair/scan.c =================================================================== --- xfsprogs.orig/repair/scan.c 2011-10-30 05:56:36.168127218 +0100 +++ xfsprogs/repair/scan.c 2011-10-30 05:57:45.981169953 +0100 @@ -289,14 +289,14 @@ _("bad back (left) sibling pointer (saw */ set_bmap(agno, agbno, XR_E_MULT); do_warn( -_("inode 0x%" PRIu64 "bmap block 0x%" PRIu64 " claimed, state is %d\n"), +_("inode %" PRIu64 "bmap block 0x%" PRIx64 " claimed, state is %d\n"), ino, bno, state); break; case XR_E_MULT: case XR_E_INUSE_FS: set_bmap(agno, agbno, XR_E_MULT); do_warn( -_("inode 0x%" PRIu64 " bmap block 0x%" PRIu64 " claimed, state is %d\n"), +_("inode %" PRIu64 " bmap block 0x%" PRIx64 " claimed, state is %d\n"), ino, bno, state); /* * if we made it to here, this is probably a bmap block @@ -311,7 +311,7 @@ _("inode 0x%" PRIu64 " bmap block 0x%" P case XR_E_BAD_STATE: default: do_warn( -_("bad state %d, inode 0x%" PRIu64 " bmap block 0x%" PRIu64 "\n"), +_("bad state %d, inode 0x%" PRIu64 " bmap block 0x%" PRIx64 "\n"), state, ino, bno); break; } @@ -338,7 +338,7 @@ _("bad state %d, inode 0x%" PRIu64 " bma if (numrecs > mp->m_bmap_dmxr[0] || (isroot == 0 && numrecs < mp->m_bmap_dmnr[0])) { do_warn( -_("inode 0x%" PRIu64 " bad # of bmap records (%u, min - %u, max - %u)\n"), +_("inode %" PRIu64 " bad # of bmap records (%u, min - %u, max - %u)\n"), ino, numrecs, mp->m_bmap_dmnr[0], mp->m_bmap_dmxr[0]); return(1); --WIyZ46R2i8wDzkSu-- From BATV+a576dd851a46f4afe15d+2995+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 5 04:32:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA59WKcM148444 for ; Sat, 5 Nov 2011 04:32:21 -0500 X-ASG-Debug-ID: 1320485539-255e03da0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E24DF223161 for ; Sat, 5 Nov 2011 02:32:19 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id W5tbXh72yVfYSQRp for ; Sat, 05 Nov 2011 02:32:19 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RMcbr-0001Nc-76; Sat, 05 Nov 2011 09:32:19 +0000 Date: Sat, 5 Nov 2011 05:32:19 -0400 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org X-ASG-Orig-Subj: XFS status update for October 2011 Subject: XFS status update for October 2011 Message-ID: <20111105093219.GA5303@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320485539 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79375 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean October finally saw the delayed release of Linux 3.1, which is a fairly boring release as XFS is concerned. In addition to a few bug fixes and cleanups the biggest item is an XFS-internal re organization of the source files, dropping all sub directories under fs/xfs. Due to the long Linux 3.1 release cycle development for 3.3 has already started full steam in October while adding a few more small optimization and fixes to the development tree for Linux 3.2, and merging that tree into mainline. Notable items for Linux 3.2 are speedup for parallel O_DIRECT reads and writes on high IOPS devices, optimizations for fsync(2) on directories and sync(2) latency, as well as further small improvements for metadata performance on highly parallel workloads. On the user space side xfsprogs saw a few more xfs_repair fixes, as well as some updates of mount point handling for the xfs_quota tools, which together with the updates from the last months was published in form of the xfsprogs 3.1.6 release. This was accompanied by an xfsdump 3.0.6 release, which does not include any new updates in October, but lots of work from the previous month. Xfstests saw two additional test cases and various fixes, and it's first versioned release ever. From BATV+a576dd851a46f4afe15d+2995+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 5 04:33:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA59XKil148572 for ; Sat, 5 Nov 2011 04:33:20 -0500 X-ASG-Debug-ID: 1320485599-79fa02aa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8770C223485 for ; Sat, 5 Nov 2011 02:33:19 -0700 (PDT) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id AtQbrrQFrZ6NyR4G for ; Sat, 05 Nov 2011 02:33:19 -0700 (PDT) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RMccn-0001P9-FA; Sat, 05 Nov 2011 09:33:17 +0000 Date: Sat, 5 Nov 2011 05:33:17 -0400 From: Christoph Hellwig To: Jakub Bogusz Cc: xfs@oss.sgi.com, Christoph Hellwig X-ASG-Orig-Subj: Re: [PATCH v2] xfsprogs: fix various incorrect printf formats Subject: Re: [PATCH v2] xfsprogs: fix various incorrect printf formats Message-ID: <20111105093317.GB5303@infradead.org> References: <20111025115233.GB22103@infradead.org> <20111025155916.GA19818@stranger.qboosh.pl> <20111102092012.GA3808@infradead.org> <20111105090029.GA15258@stranger.qboosh.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111105090029.GA15258@stranger.qboosh.pl> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320485599 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79375 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > > do_warn( > > -_("inode 0x%" PRIu64 "bmap block 0x%" PRIu64 " claimed, state is %d\n"), > > +_("inode 0x%" PRIu64 "bmap block 0x%" PRIx64 " claimed, state is %d\n"), > > ino, bno, state); > > break; > > case XR_E_MULT: > > case XR_E_INUSE_FS: > > set_bmap(agno, agbno, XR_E_MULT); > > do_warn( > > -_("inode 0x%" PRIu64 " bmap block 0x%" PRIu64 " claimed, state is %d\n"), > > +_("inode 0x%" PRIu64 " bmap block 0x%" PRIx64 " claimed, state is %d\n"), > > ino, bno, state); > > /* > > * if we made it to here, this is probably a bmap block > > These two entries still need fix in the first format strings of both > msgids... > > I'm attaching my version of the whole patch. I've already put the previous version in. I'll commit the updates attributed to you. Sorry for the mess, and thanks a lot for looking over this. From martin.rusko@gmail.com Sat Nov 5 15:07:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA5K77dn180737 for ; Sat, 5 Nov 2011 15:07:08 -0500 X-ASG-Debug-ID: 1320523626-17cf01170000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-gx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 34BE0222C84 for ; Sat, 5 Nov 2011 13:07:06 -0700 (PDT) Received: from mail-gx0-f181.google.com (mail-gx0-f181.google.com [209.85.161.181]) by cuda.sgi.com with ESMTP id Y8VaLO6j3FxmuDq3 for ; Sat, 05 Nov 2011 13:07:06 -0700 (PDT) Received: by ggdk6 with SMTP id k6so920935ggd.26 for ; Sat, 05 Nov 2011 13:07:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=ieid+w2eNB+Cx9kZtenzGSXg7hZ66WnKZgdEl4Ddhhs=; b=LXSWrAK2fszL3JtlEWWIefg3lcd0Nn9sdl93MGCl1241X1wjQdcN0HK7CzhgDlkMqm sKOkCIsO4keLbK7l2UwJLrVMjzKVbifX6qbsKAf5ik8ZX9DaE3ss4MGxT6kFNBIiMWAE 5ADa3cM6B7xwYF3tyM9U4Cy8th8kfFfJt+2lE= MIME-Version: 1.0 Received: by 10.42.156.9 with SMTP id x9mr27699309icw.42.1320523625886; Sat, 05 Nov 2011 13:07:05 -0700 (PDT) Received: by 10.42.229.68 with HTTP; Sat, 5 Nov 2011 13:07:05 -0700 (PDT) Date: Sat, 5 Nov 2011 21:07:05 +0100 Message-ID: X-ASG-Orig-Subj: Online TRIM/discard performance impact Subject: Online TRIM/discard performance impact From: Martin Rusko To: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-gx0-f181.google.com[209.85.161.181] X-Barracuda-Start-Time: 1320523627 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79417 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello, I wanted to ask if following performance drop with online discard enabled for XFS is normal. I went through mailing list archives and read information from Luk=E1=A8's page (http://people.redhat.com/lczerner/discard/) so I was prepared for some performance penalty. But this big? --> Filesystem is mounted with noatime and discard options ... /dev/sdb2 on /mnt/test-xfs type xfs (rw,noatime,discard) --> Deleting freshly unpacked linux kernel sources ... # time rm -rf linux-3.0.8 real 4m50.155s user 0m0.012s sys 0m0.940s =3D=3D> It took almost 5 minutes! --> Deleting same freshly unpacked linux kernel sources this time with filesystem mounted without 'discard' option ... /dev/sdb2 on /mnt/test-xfs type xfs (rw,noatime) # time rm -rf linux-3.0.8 real 0m1.023s user 0m0.024s sys 0m0.896s =3D=3D> It took a second and something. SSD drive in question is one of the latest with SF-2281 chipset. I expected, that TRIM function will just schedule sectors for garbage collection, which happens some time later (during which drive can be potentially slower). Trying the same tests with ext4 filesystem, it got following numbers. --> ext4 with 'discard' option ... /dev/sdb3 on /mnt/test-ext4 type ext4 (rw,noatime,discard) # time rm -rf linux-3.0.8 real 0m0.486s user 0m0.012s sys 0m0.468s --> ext4 without 'discard' option ... /dev/sdb3 on /mnt/test-ext4 type ext4 (rw,noatime) root@layla:/mnt/test-ext4# time rm -rf linux-3.0.8 real 0m0.483s user 0m0.020s sys 0m0.460s Tests were repeated several times and it was consistent. Deleting files on XFS filesystem mounted with 'discard' option was painfully slow. Kernel version was ... Linux layla 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:56:25 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux Is this expected behavior? Best Regards, Martin From clintm@kshs.lincs.sch.uk Sat Nov 5 19:23:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA60N3ms193642 for ; Sat, 5 Nov 2011 19:23:03 -0500 X-ASG-Debug-ID: 1320538980-25ff03000000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lsn.lincs.sch.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7E999222E21 for ; Sat, 5 Nov 2011 17:23:00 -0700 (PDT) Received: from lsn.lincs.sch.uk (tattershallprimary.lincs.sch.uk [92.43.66.11]) by cuda.sgi.com with ESMTP id l4riZcr9r4DmlJcP for ; Sat, 05 Nov 2011 17:23:00 -0700 (PDT) Received: from ([10.33.177.7]) by l2-irma-002.lsn.lincs.sch.uk with ESMTP with TLS id B3R28J1.69077794; Sun, 06 Nov 2011 00:21:56 +0000 Received: from SL-EX01.sleaford.local ([::1]) by SL-EX01.sleaford.local ([::1]) with mapi id 14.01.0289.001; Sun, 6 Nov 2011 00:21:59 +0000 From: Matthew Clint X-ASG-Orig-Subj: Your mailbox has exceeded its limit Subject: Your mailbox has exceeded its limit Thread-Topic: Your mailbox has exceeded its limit Thread-Index: AcycGhiWHbukZf35R5ilGSYiVqVwJA== Date: Sun, 6 Nov 2011 00:21:58 +0000 Message-ID: <6EA9400DDC1A184FB9585DC51380859920209650@SL-EX01.sleaford.local> Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [41.184.30.28] Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Barracuda-Connect: tattershallprimary.lincs.sch.uk[92.43.66.11] X-Barracuda-Start-Time: 1320538981 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4975 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.23 X-Barracuda-Spam-Status: No, SCORE=1.23 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MISSING_HEADERS, THREAD_INDEX, THREAD_TOPIC, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79435 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 1.21 MISSING_HEADERS Missing To: header 0.00 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Your mailbox has exceeded its limit; your webmail is currently running 99.7= % of its Quota limit of 100%. You cannot send or receive email properly unt= il you have updated your webmail account.To update your webmail account, cl= ick on the link below and paste in your browser to request for upgrade. https://docs.google.com/spreadsheet/viewform?formkey=3DdFlBeHh2empQYU5aaWJZ= TWNYMm45b2c6MQ We are sincerely sorry for any inconvenience this might cause you; we tend = to serve you better.Thanks for your co-operation. Webmail Update Team. =A92011= From vapier@gentoo.org Sat Nov 5 23:46:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA64kpd2206385 for ; Sat, 5 Nov 2011 23:46:52 -0500 X-ASG-Debug-ID: 1320554809-1deb002c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp.gentoo.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BC17C12627DD for ; Sat, 5 Nov 2011 21:46:49 -0700 (PDT) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by cuda.sgi.com with ESMTP id mIaGRnAN80XzSZwu for ; Sat, 05 Nov 2011 21:46:49 -0700 (PDT) Received: from localhost.localdomain (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id 6F5DD1B403B; Sun, 6 Nov 2011 04:46:48 +0000 (UTC) From: Mike Frysinger To: xfs@oss.sgi.com Cc: wkendall@sgi.com, aelder@sgi.com X-ASG-Orig-Subj: [PATCH] path: fix 1 byte overflow with empty lists Subject: [PATCH] path: fix 1 byte overflow with empty lists Date: Sun, 6 Nov 2011 00:46:57 -0400 Message-Id: <1320554817-2594-1-git-send-email-vapier@gentoo.org> X-Mailer: git-send-email 1.7.6.1 X-Barracuda-Connect: smtp.gentoo.org[140.211.166.183] X-Barracuda-Start-Time: 1320554810 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1460 1.0000 -1.1240 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.12 X-Barracuda-Spam-Status: No, SCORE=-1.12 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79452 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean If pap->pa_cnt is 0, then the local buffer is allocated as 1 byte, but the code then writes two bytes to it '/' and '\0'. Signed-off-by: Mike Frysinger --- common/path.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/common/path.c b/common/path.c index 66320de..ca24f6a 100644 --- a/common/path.c +++ b/common/path.c @@ -285,6 +285,8 @@ pa_gen( pa_t *pap ) for ( i = 0 ; i < pap->pa_cnt ; i++ ) { sz += strlen( pap->pa_array[ i ] ) + 1; } + if ( i == 0 ) + sz++; sz++; retp = ( char * )malloc( sz ); -- 1.7.6.1 From arekm@maven.pl Sun Nov 6 16:19:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_45, MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA6MJ7la012359 for ; Sun, 6 Nov 2011 16:19:08 -0600 X-ASG-Debug-ID: 1320617943-523b01310000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0143216217DC for ; Sun, 6 Nov 2011 14:19:03 -0800 (PST) Received: from mail-fx0-f53.google.com (mail-fx0-f53.google.com [209.85.161.53]) by cuda.sgi.com with ESMTP id ZYKBMlipH4MbGpMU for ; Sun, 06 Nov 2011 14:19:03 -0800 (PST) Received: by faan15 with SMTP id n15so1778853faa.26 for ; Sun, 06 Nov 2011 14:19:03 -0800 (PST) Received: by 10.223.5.201 with SMTP id 9mr43145066faw.5.1320617943092; Sun, 06 Nov 2011 14:19:03 -0800 (PST) Received: from t400.localnet (89-69-21-174.dynamic.chello.pl. [89.69.21.174]) by mx.google.com with ESMTPS id o16sm28572011fag.21.2011.11.06.14.19.02 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 06 Nov 2011 14:19:02 -0800 (PST) From: Arkadiusz =?utf-8?q?Mi=C5=9Bkiewicz?= To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Subject: Re: xfs_repair fails with corrupt dinode 17491441757, extent total = 1, nblocks = 0. This is a bug. Date: Sun, 6 Nov 2011 23:19:01 +0100 User-Agent: KMail/1.13.7 (Linux/3.1.0-09497-g5c8a0fb; KDE/4.7.3; x86_64; ; ) References: <201110311156.20421.arekm@maven.pl> In-Reply-To: <201110311156.20421.arekm@maven.pl> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <201111062319.01375.arekm@maven.pl> X-Barracuda-Connect: mail-fx0-f53.google.com[209.85.161.53] X-Barracuda-Start-Time: 1320617945 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79520 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Monday 31 of October 2011, Arkadiusz Mi=C5=9Bkiewicz wrote: > xfs_repair version 3.1.6 >=20 > disconnected inode 17491441754, moving to lost+found > disconnected inode 17491441755, moving to lost+found > disconnected inode 17491441756, moving to lost+found > disconnected inode 17491441757, moving to lost+found > corrupt dinode 17491441757, extent total =3D 1, nblocks =3D 0. This is a= bug. > Please capture the filesystem metadata with xfs_metadump and > report it to xfs@oss.sgi.com. > cache_node_purge: refcount was 1, not zero (node=3D0x21450c90) >=20 > fatal error -- 117 - couldn't iget disconnected inode > In meantime I'll probably make ugly hack by making "couldn't iget > disconnected inode" non fatal, so repair will be able to finish. With this one repair finished and then while repairing for second time (this time without hack) I got glibc catching invalid free: name create failed in ino 17873999459 (117), filesystem may be out of space bad hash table for directory inode 17875023137 (brak wpisu danych): przebud= owano rebuilding directory inode 17875023137 *** glibc detected *** /sbin/xfs_repair: free(): invalid next size (normal)= : 0x00007f9ffcdc4c00 *** =3D=3D=3D=3D=3D=3D=3D Backtrace: =3D=3D=3D=3D=3D=3D=3D=3D=3D /lib64/libc.so.6(+0x758b6)[0x7fa146a6b8b6] /lib64/libxfs.so.0(libxfs_getbufr+0x81)[0x7fa14738de81] /lib64/libxfs.so.0(cache_node_get+0xca)[0x7fa14738a39a] /lib64/libxfs.so.0(libxfs_getbuf+0x29)[0x7fa14738dfc9] /sbin/xfs_repair[0x425cd0] /sbin/xfs_repair[0x426aa6] /lib64/libpthread.so.0(+0x7ed5)[0x7fa146d8ced5] /lib64/libc.so.6(clone+0x6d)[0x7fa146acfe5d] =3D=3D=3D=3D=3D=3D=3D Memory map: =3D=3D=3D=3D=3D=3D=3D=3D 00400000-0043e000 r-xp 00000000 08:12 125854083 /s= bin/xfs_repair 0043f000-00440000 r--p 0003e000 08:12 125854083 /s= bin/xfs_repair 00440000-00441000 rw-p 0003f000 08:12 125854083 /s= bin/xfs_repair 00441000-2aa06000 rw-p 00000000 00:00 0 [h= eap] 7f9f00000000-7f9f01123000 rw-p 00000000 00:00 0 7f9f01123000-7f9f04000000 ---p 00000000 00:00 0 7f9f077ff000-7f9f07800000 ---p 00000000 00:00 0 7f9f07800000-7f9f08000000 rw-p 00000000 00:00 0 [...] =2D-=20 Arkadiusz Mi=C5=9Bkiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From david@fromorbit.com Sun Nov 6 17:06:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA6N6bCM014865 for ; Sun, 6 Nov 2011 17:06:38 -0600 X-ASG-Debug-ID: 1320620795-641501a50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9CD7A225611 for ; Sun, 6 Nov 2011 15:06:35 -0800 (PST) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id urQDvmDTiUhmoL5x for ; Sun, 06 Nov 2011 15:06:35 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAGgRt055LIil/2dsb2JhbABDqX+BBoFyAQEFOhwjEAgDGC4UDRgDIRO8UxKINmMEnl+HQg Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail04.adl6.internode.on.net with ESMTP; 07 Nov 2011 09:36:33 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RNBnL-0001ky-Ml; Mon, 07 Nov 2011 10:06:31 +1100 Date: Mon, 7 Nov 2011 10:06:31 +1100 From: Dave Chinner To: Eryu Guan Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: 075 112 redirect stderr of fsx to /dev/null too Subject: Re: [PATCH] xfstests: 075 112 redirect stderr of fsx to /dev/null too Message-ID: <20111106230631.GD5534@dastard> References: <1319941555-4405-1-git-send-email-guaneryu@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1319941555-4405-1-git-send-email-guaneryu@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1320620796 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0020 1.0000 -2.0083 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Oct 30, 2011 at 10:25:55AM +0800, Eryu Guan wrote: > In commit c18bf42de9d5d5fa05025754df1ff63f2147bd12 a warning message > will be printed to stderr if filesystem doesn't support fallocate(2). > The warning message will fail these tests though fsx returns SUCCESS. > > FSTYP -- ext3 > PLATFORM -- Linux/i686 debian-dev 3.1.0+ > MKFS_OPTIONS -- /dev/sda3 > MOUNT_OPTIONS -- -o acl,user_xattr /dev/sda3 /mnt/sda3 > > 075 12s ... - output mismatch (see 075.out.bad) > --- 075.out 2011-10-28 21:35:41.872573530 +0800 > +++ 075.out.bad 2011-10-30 10:31:02.607058029 +0800 > @@ -4,6 +4,9 @@ > ----------------------------------------------- > fsx.0 : -d -N numops -S 0 > ----------------------------------------------- > +fsx: main: filesystem does not support fallocate, disabling > +: Operation not supported > > So redirect stderr of fsx to /dev/null too. > > Signed-off-by: Eryu Guan > --- > 075 | 2 +- > 112 | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/075 b/075 > index 0f0a6ed..87d273f 100755 > --- a/075 > +++ b/075 > @@ -77,7 +77,7 @@ _do_test() > > # This cd and use of -P gets full debug on $here (not TEST_DEV) > cd $out > - if ! $here/ltp/fsx $_param -P $here $seq.$_n >/dev/null > + if ! $here/ltp/fsx $_param -P $here $seq.$_n &>/dev/null > then > echo " fsx ($_param) failed, $? - compare $seq.$_n.{good,bad,fsxlog}" > mv $out/$seq.$_n $here/$seq.$_n.full > diff --git a/112 b/112 > index 557350a..763b17a 100755 > --- a/112 > +++ b/112 > @@ -77,7 +77,7 @@ _do_test() > > # This cd and use of -P gets full debug on $here (not TEST_DEV) > cd $out > - if ! $here/ltp/fsx $_param -P $here $seq.$_n >/dev/null > + if ! $here/ltp/fsx $_param -P $here $seq.$_n &>/dev/null > then > echo " fsx ($_param) returned $? - see $seq.$_n.full" > mv $seq.$_n.fsxlog $here/$seq.$_n.full If this hasn't been committed, the correct fix is to pass the "-q" option to fsx to tell it not to emit these messages. We still really want any other output to stderr to cause a test failure.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From schumi.han@gmail.com Sun Nov 6 20:12:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA72CW2e024806 for ; Sun, 6 Nov 2011 20:12:32 -0600 X-ASG-Debug-ID: 1320631950-4095015c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-gx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 70001225E92 for ; Sun, 6 Nov 2011 18:12:30 -0800 (PST) Received: from mail-gx0-f181.google.com (mail-gx0-f181.google.com [209.85.161.181]) by cuda.sgi.com with ESMTP id X5SYsWwB76xSOHSJ for ; Sun, 06 Nov 2011 18:12:30 -0800 (PST) Received: by ggdk6 with SMTP id k6so2671390ggd.26 for ; Sun, 06 Nov 2011 18:12:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=NHpDhRfDSfwrgKhpchkcfYjTe91vua0WPpYf4ROu8gw=; b=VCqrWnryeFp9lxyL/nPwOqubgtns2o0Bt7egTFehQrRNPzb/NEyjH0vbqw3kAKmp+w HpoyaikbXm+snEF7CVajuwwzsdJ/T4EQ5BFR5sIZCaDdIhXliTZxAslU/reyRuMU6V8W GhOABUVgoCoyiD/J2AT7EfMYb/yb78ZEJ5mk8= MIME-Version: 1.0 Received: by 10.236.185.198 with SMTP id u46mr31286510yhm.113.1320631950327; Sun, 06 Nov 2011 18:12:30 -0800 (PST) Received: by 10.236.29.196 with HTTP; Sun, 6 Nov 2011 18:12:30 -0800 (PST) Date: Mon, 7 Nov 2011 10:12:30 +0800 Message-ID: X-ASG-Orig-Subj: Advanced format disk Subject: Advanced format disk From: Zhu Han To: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=20cf3056409f473d6e04b11b969a X-Barracuda-Connect: mail-gx0-f181.google.com[209.85.161.181] X-Barracuda-Start-Time: 1320631951 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79535 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --20cf3056409f473d6e04b11b969a Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi, I got several advanced format disk, whose physical size is 4096 bytes, but its logical size is 512 bytes: $ sudo fdisk -l /dev/sdb Disk /dev/sdb: 750.2 GB, 750156374016 bytes 255 heads, 63 sectors/track, 91201 cylinders Units =3D cylinders of 16065 * 512 =3D 8225280 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Disk /dev/sdb doesn't contain a valid partition table Is there any special tuning knob I should notice before formating it? IMHO, set the sector size as 4096 bytes is enough. The default block size is 4096 bytes. $ sudo xfs_info /dev/sdb meta-data=3D/dev/sdb isize=3D256 agcount=3D4, agsize=3D45785912 = blks =3D sectsz=3D4096 attr=3D2 data =3D bsize=3D4096 blocks=3D183143646, imaxpct=3D25 =3D sunit=3D0 swidth=3D0 blks naming =3D version 2 bsize=3D4096 ascii-ci=3D0 log =3Dinternal bsize=3D4096 blocks=3D89425, ver= sion=3D2 =3D sectsz=3D4096 sunit=3D1 blks, lazy-count=3D1 realtime =3Dnone extsz=3D4096 blocks=3D0, rtextents= =3D0 best regards, =E9=9F=A9=E7=AB=B9(Zhu Han) --20cf3056409f473d6e04b11b969a Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 SGksPGJyPjxicj5JIGdvdCBzZXZlcmFsIGFkdmFuY2VkIGZvcm1hdCBkaXNrLCB3aG9zZSBwaHlz aWNhbCBzaXplIGlzIDQwOTYgYnl0ZXMsIGJ1dCBpdHMgbG9naWNhbCBzaXplIGlzIDUxMiBieXRl czo8YnI+JCBzdWRvIGZkaXNrIC1sIC9kZXYvc2RiPGJyPjxicj5EaXNrIC9kZXYvc2RiOiA3NTAu MiBHQiwgNzUwMTU2Mzc0MDE2IGJ5dGVzPGJyPjI1NSBoZWFkcywgNjMgc2VjdG9ycy90cmFjaywg OTEyMDEgY3lsaW5kZXJzPGJyPgpVbml0cyA9IGN5bGluZGVycyBvZiAxNjA2NSAqIDUxMiA9IDgy MjUyODAgYnl0ZXM8YnI+U2VjdG9yIHNpemUgKGxvZ2ljYWwvcGh5c2ljYWwpOiA1MTIgYnl0ZXMg LyA0MDk2IGJ5dGVzPGJyPkkvTyBzaXplIChtaW5pbXVtL29wdGltYWwpOiA0MDk2IGJ5dGVzIC8g NDA5NiBieXRlczxicj5EaXNrIGlkZW50aWZpZXI6IDB4MDAwMDAwMDA8YnI+PGJyPkRpc2sgL2Rl di9zZGIgZG9lc24mIzM5O3QgY29udGFpbiBhIHZhbGlkIHBhcnRpdGlvbiB0YWJsZTxicj4KPGJy PklzIHRoZXJlIGFueSBzcGVjaWFsIHR1bmluZyBrbm9iIEkgc2hvdWxkIG5vdGljZSBiZWZvcmUg Zm9ybWF0aW5nIGl0PyBJTUhPLCBzZXQgdGhlIHNlY3RvciBzaXplIGFzIDQwOTYgYnl0ZXMgaXMg ZW5vdWdoLiBUaGUgZGVmYXVsdCBibG9jayBzaXplIGlzIDQwOTYgYnl0ZXMuPGJyPiQgc3VkbyB4 ZnNfaW5mbyAvZGV2L3NkYjxicj5tZXRhLWRhdGE9L2Rldi9zZGLCoMKgwqDCoMKgwqDCoMKgIGlz aXplPTI1NsKgwqDCoCBhZ2NvdW50PTQsIGFnc2l6ZT00NTc4NTkxMiBibGtzPGJyPgrCoMKgwqDC oMKgwqDCoCDCoCDCoCDCoCDCoCDCoCA9wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc2VjdHN6PTQwOTbCoCBhdHRyPTI8YnI+ZGF0YcKgwqDCoCDCoCDCoCDCoCA9 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnNpemU9NDA5NsKg wqAgYmxvY2tzPTE4MzE0MzY0NiwgaW1heHBjdD0yNTxicj7CoMKgwqDCoMKgwqDCoCDCoCDCoCDC oCDCoCDCoCA9wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Vu aXQ9MMKgwqDCoMKgwqAgc3dpZHRoPTAgYmxrczxicj5uYW1pbmfCoMKgwqDCoMKgID3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZlcnNpb24gMsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGJzaXplPTQwOTbCoMKgIGFzY2lpLWNpPTA8YnI+CmxvZ8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgPWludGVybmFswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBi c2l6ZT00MDk2wqDCoCBibG9ja3M9ODk0MjUsIHZlcnNpb249Mjxicj7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCA9wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc2VjdHN6PTQwOTbCoCBzdW5pdD0xIGJsa3MsIGxhenktY291bnQ9MTxicj5yZWFsdGlt ZcKgwqAgPW5vbmXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXh0c3o9NDA5 NsKgwqAgYmxvY2tzPTAsIHJ0ZXh0ZW50cz0wPGJyPgo8YnI+PGJyIGNsZWFyPSJhbGwiPmJlc3Qg cmVnYXJkcyw8YnI+6Z+p56u5KFpodSBIYW4pPGJyPjxicj4K --20cf3056409f473d6e04b11b969a-- From rjevskiy@gmail.com Mon Nov 7 00:15:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID, T_MIME_NO_TEXT,T_TVD_MIME_NO_HEADERS autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA76FfaK040059 for ; Mon, 7 Nov 2011 00:15:41 -0600 X-ASG-Debug-ID: 1320646539-3dd603ba0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 65B132264EE for ; Sun, 6 Nov 2011 22:15:39 -0800 (PST) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id HUnQHpT0Xcod5Q0S for ; Sun, 06 Nov 2011 22:15:39 -0800 (PST) Received: by bkaq10 with SMTP id q10so1718093bka.26 for ; Sun, 06 Nov 2011 22:15:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version:content-type; bh=bbmL/bN1670S1XOtb+Eow8pz1LHkBvemI5BDpnZWjnE=; b=dkv/FT6I0uBzxzgMb+HM1Hi0BfVTN2Rykf0FqsON45eCo6Ht/dYewI2HWb/7F/GOed J6hZnvWZHYmH06zlegKuqfkDbtGqTWGOutml9cvlv5ie5PszeaT4gc4yrjvqnGLKM7Eu jhnPZBKjs5wd1PwJLBozh3OjSCIfkXZXqCObw= Received: by 10.205.81.141 with SMTP id zy13mr18325765bkb.50.1320646538929; Sun, 06 Nov 2011 22:15:38 -0800 (PST) Received: from smtp.gmail.com (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id r12sm16427624bkw.5.2011.11.06.22.15.35 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 06 Nov 2011 22:15:36 -0800 (PST) Sender: Dmitry Monakhov From: Dmitry Monakhov To: Christoph Hellwig Cc: linux-fsdevel@vger.kernel.org, aelder@sgi.com, tytso@mit.edu, hch@lst.de, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/9] xfstests: add a new quota test that runs fsstress under ENOSPC conditions Subject: Re: [PATCH 7/9] xfstests: add a new quota test that runs fsstress under ENOSPC conditions In-Reply-To: <20111103193935.GA23014@infradead.org> References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> <1320342953-7973-7-git-send-email-dmonakhov@openvz.org> <20111103193935.GA23014@infradead.org> User-Agent: Notmuch/0.5-69-g3e4a9d6 (http://notmuchmail.org) Emacs/23.1.1 (i486-pc-linux-gnu) Date: Mon, 07 Nov 2011 10:15:33 +0400 Message-ID: <871utkmpa2.fsf@dmbot.sw.ru> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320646540 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.82 X-Barracuda-Spam-Status: No, SCORE=-1.82 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA590, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79551 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.20 BSF_SC0_SA590 Custom Rule SA590 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --=-=-= On Thu, 3 Nov 2011 15:39:35 -0400, Christoph Hellwig wrote: > On Thu, Nov 03, 2011 at 09:55:51PM +0400, Dmitry Monakhov wrote: > > - Same as 264 but with quota enabled. > > 269 is the new 270 > > > - IO performed from $qa_user user > > - fsstress granted with CAP_CHOWN capability. > > This fails in my test VM because it doesn't have setcap. If you > want to use additional non-standard tools please do a _notrun if > they aren't present. > > I don't quite understand why it would need CAP_CHOWN - chowns > from owned files do not require it, and the test runs fine with > the setcap line commented out. Yes, but fsstress want chown to random uid/gid int inode_change_ok(..) ... /* Make sure a caller can chown. */ if ((ia_valid & ATTR_UID) && (current_fsuid() != inode->i_uid || attr->ia_uid != inode->i_uid) && !capable(CAP_CHOWN)) return -EPERM; >From my experience fssstess with chown enabled is the most valuable quota accounting test. W/o chown this is just an useless time consumer. > > I'll commit it as-is for now, but unless I get some feedback on > why the setcap is require I'll add another commit to remove it ASAP. --=-=-= Content-Disposition: inline; filename=0001-xfstests-270-th-test-want-use-setcap-8.patch >From f8611f3bbc5ea2ac3672ee6c88d2d43d69351d49 Mon Sep 17 00:00:00 2001 From: Dmitry Monakhov Date: Mon, 7 Nov 2011 08:07:57 +0300 Subject: [PATCH] xfstests: 270'th test want use setcap(8) It wants to grant CAP_CHOWN to fsstress, without this capability chown(2) will fail due to EPERM. Since chown(2) is one of the most error prone places of quota accounting this makes 270'th test almost useless, so it is better to simply skip it. Signed-off-by: Dmitry Monakhov --- 270 | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/270 b/270 index ed1e31e..90e24f5 100755 --- a/270 +++ b/270 @@ -52,6 +52,9 @@ _workout() echo "fsstress $args" >> $here/$seq.full # Grant chown capability cp $FSSTRESS_PROG $tmp.fsstress.bin + if [ "`whereis setcap`" == "setcap:" ]; then + _notrun "setcap not installed." + fi setcap cap_chown=epi $tmp.fsstress.bin (su $qa_user -c "$tmp.fsstress.bin $args" &) > /dev/null 2>&1 -- 1.7.1 --=-=-= > > -- > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html --=-=-=-- From BATV+b5242edae5d5de85ed24+2997+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 7 01:38:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA77cDsA045625 for ; Mon, 7 Nov 2011 01:38:13 -0600 X-ASG-Debug-ID: 1320651491-137d03010000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 801DE162222E for ; Sun, 6 Nov 2011 23:38:11 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Guk0gsxmYRUmuBjZ for ; Sun, 06 Nov 2011 23:38:11 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RNJmS-0003j0-8l; Mon, 07 Nov 2011 07:38:08 +0000 Date: Mon, 7 Nov 2011 02:38:08 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Eryu Guan , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: 075 112 redirect stderr of fsx to /dev/null too Subject: Re: [PATCH] xfstests: 075 112 redirect stderr of fsx to /dev/null too Message-ID: <20111107073808.GA14283@infradead.org> References: <1319941555-4405-1-git-send-email-guaneryu@gmail.com> <20111106230631.GD5534@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111106230631.GD5534@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320651492 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79558 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 07, 2011 at 10:06:31AM +1100, Dave Chinner wrote: > If this hasn't been committed, the correct fix is to pass the "-q" > option to fsx to tell it not to emit these messages. We still really > want any other output to stderr to cause a test failure.... I already commited it. I'll also take care of fixing it up. From BATV+b5242edae5d5de85ed24+2997+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 7 04:21:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7ALQsI053349 for ; Mon, 7 Nov 2011 04:21:28 -0600 X-ASG-Debug-ID: 1320661281-393501150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 848B11CEA842 for ; Mon, 7 Nov 2011 02:21:22 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id sJFcmeK8KbFyYZqr for ; Mon, 07 Nov 2011 02:21:22 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RNMKP-0002fP-J0; Mon, 07 Nov 2011 10:21:21 +0000 Date: Mon, 7 Nov 2011 05:21:21 -0500 From: Christoph Hellwig To: Martin Rusko Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Online TRIM/discard performance impact Subject: Re: Online TRIM/discard performance impact Message-ID: <20111107102121.GA2891@infradead.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320661283 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79569 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Nov 05, 2011 at 09:07:05PM +0100, Martin Rusko wrote: > SSD drive in question is one of the latest with SF-2281 chipset. I > expected, that TRIM function will just schedule sectors for garbage > collection, which happens some time later (during which drive can be > potentially slower). Trying the same tests with ext4 filesystem, it > got following numbers. That's unfortunately not how it works - the TRIM command always drains the whole queue of outstanding requests, and thus has a fairly severe impact on performance. We could reduce it a bit by using vectored trims like Windows does, but the Linux blocklayer doesn't have the infrastructure for that yet. Your workload will remove a lot of inode clusters on XFS, while ext4 never deletes inodes. Using the ikeep mount option for XFS (can't be set during remount) should speed the performance with discard for your workload up a lot. I would still recommand to do a periodic fstrim run instead, though. From BATV+b5242edae5d5de85ed24+2997+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 7 04:30:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7AUddN053651 for ; Mon, 7 Nov 2011 04:30:40 -0600 X-ASG-Debug-ID: 1320661837-36ed01090000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 362E4101E25B for ; Mon, 7 Nov 2011 02:30:37 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id OmHtYEpLHU7wAq9i for ; Mon, 07 Nov 2011 02:30:37 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RNMTN-0005MY-E9 for xfs@oss.sgi.com; Mon, 07 Nov 2011 10:30:37 +0000 Date: Mon, 7 Nov 2011 05:30:37 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: xfs_getbmap assert Subject: xfs_getbmap assert Message-ID: <20111107103037.GA16213@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320661839 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79568 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean With Dmitris fsstress updates I can hit the following assert fairly regularly: [11904.943956] XFS: Assertion failed: ((iflags & BMV_IF_DELALLOC) != 0) || (map[i].br_startblock != DELAYSTARTBLOCK), file: /home/hch/work/linux-2.6/fs/xfs/xfs_bmap.c, line: 5604 which means we get an delalloc extent back from FIEMAP/GETBMAP despite asking for a flush beforehand. While we hold the iolock over the call and thus exclude new buffered writers from appearing that doesn't prevent shared writeable mmaps from creating new delalloc extents. I don't think this actually is a real issue, and a workaround would be extremly hard. For now I've just remove the assert in my tree: Index: xfs/fs/xfs/xfs_bmap.c =================================================================== --- xfs.orig/fs/xfs/xfs_bmap.c 2011-11-05 09:02:24.410021945 +0100 +++ xfs/fs/xfs/xfs_bmap.c 2011-11-05 09:03:54.036494235 +0100 @@ -5600,8 +5600,6 @@ xfs_getbmap( XFS_FSB_TO_BB(mp, map[i].br_blockcount); out[cur_ext].bmv_unused1 = 0; out[cur_ext].bmv_unused2 = 0; - ASSERT(((iflags & BMV_IF_DELALLOC) != 0) || - (map[i].br_startblock != DELAYSTARTBLOCK)); if (map[i].br_startblock == HOLESTARTBLOCK && whichfork == XFS_ATTR_FORK) { /* came to the end of attribute fork */ From dave@twin.jikos.cz Mon Nov 7 07:25:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7DPgWX059962 for ; Mon, 7 Nov 2011 07:25:42 -0600 X-ASG-Debug-ID: 1320672339-345700bf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from twin.jikos.cz (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5027A1CB8A9D; Mon, 7 Nov 2011 05:25:40 -0800 (PST) Received: from twin.jikos.cz (twin.jikos.cz [89.185.236.188]) by cuda.sgi.com with ESMTP id Cc1HeRDQbPpl198m; Mon, 07 Nov 2011 05:25:40 -0800 (PST) Received: from twin.jikos.cz (dave@localhost [127.0.0.1]) by twin.jikos.cz (8.13.6/8.13.6) with ESMTP id pA7DPYrg029368 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 7 Nov 2011 14:25:34 +0100 Received: (from dave@localhost) by twin.jikos.cz (8.13.6/8.13.6/Submit) id pA7DPXdQ029367; Mon, 7 Nov 2011 14:25:33 +0100 Date: Mon, 7 Nov 2011 14:25:33 +0100 From: David Sterba To: Dmitry Monakhov Cc: linux-fsdevel@vger.kernel.org, aelder@sgi.com, tytso@mit.edu, hch@lst.de, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/9] xfstests: add a new test that runs fsstress under ENOSPC conditions Subject: Re: [PATCH 6/9] xfstests: add a new test that runs fsstress under ENOSPC conditions Message-ID: <20111107132533.GP12759@twin.jikos.cz> Reply-To: dave@jikos.cz Mail-Followup-To: Dmitry Monakhov , linux-fsdevel@vger.kernel.org, aelder@sgi.com, tytso@mit.edu, hch@lst.de, xfs@oss.sgi.com References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> <1320342953-7973-6-git-send-email-dmonakhov@openvz.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320342953-7973-6-git-send-email-dmonakhov@openvz.org> User-Agent: Mutt/1.4.2.2i X-Barracuda-Connect: twin.jikos.cz[89.185.236.188] X-Barracuda-Start-Time: 1320672341 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79580 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi, I saw this while running the newly added tests on btrfs: On Thu, Nov 03, 2011 at 09:55:50PM +0400, Dmitry Monakhov wrote: > --- /dev/null > +++ b/269 > +_workout() > +{ > + echo "" > + echo "Run fsstress" > + echo "" > + num_iterations=10 > + enospc_time=2 > + out=$SCRATCH_MNT/fsstress.$$ > + args="-p128 -n999999999 -f setattr=1 $FSSTRESS_AVOID -d $out" > + echo "fsstress $args" >> $here/$seq.full > + $FSSTRESS_PROG $args > /dev/null 2>&1 & > + pid=$! > + echo "Run dd writers in parallel" > + for ((i=0; i < num_iterations; i++)) > + do > + # File will be opened with O_TRUNC each time > + dd if=/dev/zero of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M count=1 \ > + > /dev/null 2>&1 > + sleep $enospc_time > + done > + kill $pid 269 [failed, exit status 1] - output mismatch (see 269.out.bad) --- 269.out 2011-11-07 13:26:23.000000000 +0100 +++ 269.out.bad 2011-11-07 14:07:44.000000000 +0100 @@ -3,3 +3,4 @@ Run fsstress Run dd writers in parallel +./269: line 60: kill: (9754) - No such process > + wait $pid > +} and the test is reported to fail. Seems that the dd commands finish in less 2 seconds. david From rjevskiy@gmail.com Mon Nov 7 07:31:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7DVHuB060211 for ; Mon, 7 Nov 2011 07:31:17 -0600 X-ASG-Debug-ID: 1320672675-0fc600050000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 731FB22765D for ; Mon, 7 Nov 2011 05:31:15 -0800 (PST) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id Rm1XsS1mWfTGg4fq for ; Mon, 07 Nov 2011 05:31:15 -0800 (PST) Received: by bkaq10 with SMTP id q10so2007896bka.26 for ; Mon, 07 Nov 2011 05:31:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version:content-type; bh=zx467+4cE1CDeWfyReun8eSzIk711GVPi1TSoFXaQqY=; b=KDox3KaOTbDrHDp6bVyWqokFrt6ZrWYJRTN8bGVPF4dK7o5441Dctw8TkxHq+cqwU1 lOuY/CHrzvGlRAivAeWmooAr+wbSXMOeoDRCt1QqZRnWI8VHMUZBHwIPr9zbiqlXl/Ym ZtxgMM6CT52jujulAF1nVWW/voLPIO8xAiWTI= Received: by 10.204.140.215 with SMTP id j23mr9577846bku.52.1320672675103; Mon, 07 Nov 2011 05:31:15 -0800 (PST) Received: from smtp.gmail.com (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id z13sm14221038bkw.8.2011.11.07.05.31.12 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 07 Nov 2011 05:31:13 -0800 (PST) Sender: Dmitry Monakhov From: Dmitry Monakhov To: dave@jikos.cz Cc: linux-fsdevel@vger.kernel.org, aelder@sgi.com, tytso@mit.edu, hch@lst.de, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/9] xfstests: add a new test that runs fsstress under ENOSPC conditions Subject: Re: [PATCH 6/9] xfstests: add a new test that runs fsstress under ENOSPC conditions In-Reply-To: <20111107132533.GP12759@twin.jikos.cz> References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> <1320342953-7973-6-git-send-email-dmonakhov@openvz.org> <20111107132533.GP12759@twin.jikos.cz> User-Agent: Notmuch/0.5-69-g3e4a9d6 (http://notmuchmail.org) Emacs/23.1.1 (i486-pc-linux-gnu) Date: Mon, 07 Nov 2011 17:31:11 +0400 Message-ID: <87sjm0kqjk.fsf@dmbot.sw.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320672676 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79580 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 7 Nov 2011 14:25:33 +0100, David Sterba wrote: > Hi, > > I saw this while running the newly added tests on btrfs: > > On Thu, Nov 03, 2011 at 09:55:50PM +0400, Dmitry Monakhov wrote: > > --- /dev/null > > +++ b/269 > > +_workout() > > +{ > > + echo "" > > + echo "Run fsstress" > > + echo "" > > + num_iterations=10 > > + enospc_time=2 > > + out=$SCRATCH_MNT/fsstress.$$ > > + args="-p128 -n999999999 -f setattr=1 $FSSTRESS_AVOID -d $out" > > + echo "fsstress $args" >> $here/$seq.full > > + $FSSTRESS_PROG $args > /dev/null 2>&1 & > > + pid=$! > > + echo "Run dd writers in parallel" > > + for ((i=0; i < num_iterations; i++)) > > + do > > + # File will be opened with O_TRUNC each time > > + dd if=/dev/zero of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M count=1 \ > > + > /dev/null 2>&1 > > + sleep $enospc_time > > + done > > + kill $pid > > 269 [failed, exit status 1] - output mismatch (see 269.out.bad) > --- 269.out 2011-11-07 13:26:23.000000000 +0100 > +++ 269.out.bad 2011-11-07 14:07:44.000000000 +0100 > @@ -3,3 +3,4 @@ > Run fsstress > > Run dd writers in parallel > +./269: line 60: kill: (9754) - No such process > > > + wait $pid > > +} > > and the test is reported to fail. Seems that the dd commands finish in less 2 > seconds. Have you recompile fsstress via make? test explicitly want use new feature "-f setattr=1" > > > david > -- > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From martin.rusko@gmail.com Mon Nov 7 08:31:47 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7EVlfi061915 for ; Mon, 7 Nov 2011 08:31:47 -0600 X-ASG-Debug-ID: 1320676305-547400400000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-qw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2604D16D049B for ; Mon, 7 Nov 2011 06:31:45 -0800 (PST) Received: from mail-qw0-f53.google.com (mail-qw0-f53.google.com [209.85.216.53]) by cuda.sgi.com with ESMTP id IX69CaWX9rNjl2oO for ; Mon, 07 Nov 2011 06:31:45 -0800 (PST) Received: by qadz32 with SMTP id z32so626677qad.26 for ; Mon, 07 Nov 2011 06:31:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=Wo6W8YezsyZCFkdEIWrrt4V3tnkaz0ihIddYj0WOFpw=; b=Kmz5s4x4mW5Iq7P+jjOoWzpny+nwkAGcmh+VjQ0vRZXfrihkxyheMGt1qYwlMMuy3+ o/+90j1/eRSp/VhkDp2t//WYdBFU47Uviubzz19mAWQZvIkl8C3fMFrL59CGz5E6XNiH L7wOYUyXIXBcWuU/6CoboHhv1suXoSQ6awLF8= MIME-Version: 1.0 Received: by 10.42.155.74 with SMTP id t10mr47768082icw.49.1320676304907; Mon, 07 Nov 2011 06:31:44 -0800 (PST) Received: by 10.42.240.70 with HTTP; Mon, 7 Nov 2011 06:31:44 -0800 (PST) In-Reply-To: <20111107102121.GA2891@infradead.org> References: <20111107102121.GA2891@infradead.org> Date: Mon, 7 Nov 2011 15:31:44 +0100 Message-ID: X-ASG-Orig-Subj: Re: Online TRIM/discard performance impact Subject: Re: Online TRIM/discard performance impact From: Martin Rusko To: Christoph Hellwig Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-qw0-f53.google.com[209.85.216.53] X-Barracuda-Start-Time: 1320676306 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79583 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 7, 2011 at 11:21 AM, Christoph Hellwig wrot= e: > On Sat, Nov 05, 2011 at 09:07:05PM +0100, Martin Rusko wrote: >> SSD drive in question is one of the latest with SF-2281 chipset. I >> expected, that TRIM function will just schedule sectors for garbage >> collection, which happens some time later (during which drive can be >> potentially slower). Trying the same tests with ext4 filesystem, it >> got following numbers. > > That's unfortunately not how it works - the TRIM command always drains > the whole queue of outstanding requests, and thus has a fairly severe > impact on performance. =A0We could reduce it a bit by using vectored > trims like Windows does, but the Linux blocklayer doesn't have the > infrastructure for that yet. > > Your workload will remove a lot of inode clusters on XFS, while ext4 > never deletes inodes. Using the ikeep mount option for XFS (can't be > set during remount) should speed the performance with discard for > your workload up a lot. =A0I would still recommand to do a periodic > fstrim run instead, though. > As per man page ... ikeep|noikeep When inode clusters are emptied of inodes, keep them around on the disk (ikeep) - this is the traditional XFS behaviour and is still the default for now. Using the noikeep option, inode clusters are returned to the free space pool. ... which would imply, that it should be actually rather fast by default. Even if I had set this explicitly, it didn't really help ... # mount -o noatime,discard,ikeep /dev/data/test-xfs /mnt/disk /dev/mapper/data-test--xfs on /mnt/disk type xfs (rw,noatime,discard,ikeep) # time rm -rf linux-3.0.8 real 4m47.897s user 0m0.032s sys 0m0.992s ... normally it would be deleted in a second or even faster. I'm fine to use periodic fstrim, let say once a day. But this is such a big difference, that it makes me curious if it is expected behavior or if I'm doing something terribly wrong. Any idea? Thanks! Martin From alexandernaumann@gmx.de Mon Nov 7 08:36:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.3 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,J_CHICKENPOX_33,J_CHICKENPOX_43,T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7EauHB062068 for ; Mon, 7 Nov 2011 08:36:57 -0600 X-ASG-Debug-ID: 1320676613-7c30004b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailout-de.gmx.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 372211CEB4F3 for ; Mon, 7 Nov 2011 06:36:54 -0800 (PST) Received: from mailout-de.gmx.net (mailout-de.gmx.net [213.165.64.22]) by cuda.sgi.com with SMTP id yH4TfrR9SqsCX1FT for ; Mon, 07 Nov 2011 06:36:54 -0800 (PST) Received: (qmail invoked by alias); 07 Nov 2011 14:36:52 -0000 Received: from p4FDC0643.dip0.t-ipconnect.de (EHLO [192.168.15.21]) [79.220.6.67] by mail.gmx.net (mp006) with SMTP; 07 Nov 2011 15:36:52 +0100 X-Authenticated: #2220048 X-Provags-ID: V01U2FsdGVkX18RoPk5s6sRHE1ch/C6WW3s0/yn4lujgKl3jAPsrx fXY9hz3mOUtBrO Message-ID: <1320676611.3192.36.camel@AlfLaptop> X-ASG-Orig-Subj: Crash with XFS Subject: Crash with XFS From: Alexander Naumann To: xfs@oss.sgi.com Date: Mon, 07 Nov 2011 15:36:51 +0100 Content-Type: multipart/alternative; boundary="=-BD+yAaNRJCDVYep6RroT" X-Mailer: Evolution 3.2.0- Mime-Version: 1.0 X-Y-GMX-Trusted: 0 X-Barracuda-Connect: mailout-de.gmx.net[213.165.64.22] X-Barracuda-Start-Time: 1320676615 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79584 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --=-BD+yAaNRJCDVYep6RroT Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Hi! I would be glad if anybody can give me any hint on the following subject. I have a linux server running formatted with XFS. Afer a couple of days (about 6 or 7) I get the following crash: Nov 6 15:44:03 archive kernel: BUG: unable to handle kernel NULL pointer dereference at 0000000000000044 Nov 6 15:44:03 archive kernel: IP: [] xfs_inode_ag_iterator+0x4a/0xce Nov 6 15:44:03 archive kernel: PGD 0 Nov 6 15:44:03 archive kernel: Oops: 0000 [#1] SMP Nov 6 15:44:03 archive kernel: last sysfs file: /sys/devices/pci0000:00/0000:00:1c.0/0000:08:00.1/host2/rport-2:0-0/target2:0:0/fc_transport/target2:0:0/port_name Nov 6 15:44:03 archive kernel: CPU 13 Nov 6 15:44:03 archive kernel: Modules linked in: iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi wcte11xp wctc4xxp wct4xxp wct1xxp wcte12xp dahdi_voicebus dahdi_transcode dahdi dm_round_robin qla2xxx scsi_dh_rdac scsi_dh_emc scsi_ dh_alua scsi_dh_hp_sw af_packet ipt_REDIRECT iptable_nat nf_nat ipt_REJECT xt_tcpudp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack iptable_filter ip_tables x_tables ipmi_si ipmi_watchdog ipmi_devintf ipmi_msghandler fan ac ipv6 fuse dm_multipath scsi_dh psmouse usbhid hid evdev ehci_hcd uhci_hcd iTCO_wdt rtc_cmos pcspkr serio_raw iTCO_vendor_support usbcore thermal bnx2 rtc_core rtc_lib button processor thermal_sys unix Nov 6 15:44:03 archive kernel: Nov 6 15:44:03 archive kernel: Pid: 659, comm: kswapd0 Not tainted 2.6.34.7-64bit #9 0P658H/PowerEdge R910 Nov 6 15:44:03 archive kernel: RIP: 0010:[] [] xfs_inode_ag_iterator+0x4a/0xce Nov 6 15:44:03 archive kernel: RSP: 0018:ffff88085eb1bcb0 EFLAGS: 00010282 Nov 6 15:44:03 archive kernel: RAX: 0000000000000000 RBX: ffff88085841b800 RCX: 0000000000000000 Nov 6 15:44:03 archive kernel: RDX: 0000000000000001 RSI: 0000000000000000 RDI: 0000000000000000 Nov 6 15:44:03 archive kernel: RBP: ffff88085eb1bd10 R08: 0000000000000001 R09: ffff88085eb1bd24 Nov 6 15:44:03 archive kernel: R10: ffffffffff000000 R11: ffff88047d42b0e8 R12: ffff88085eb1bd24 Nov 6 15:44:03 archive kernel: R13: 0000000000000000 R14: ffff88085eb1bd24 R15: 0000000000000000 Nov 6 15:44:03 archive kernel: FS: 0000000000000000(0000) GS:ffff8800023a0000(0000) knlGS:0000000000000000 Nov 6 15:44:03 archive kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b Nov 6 15:44:03 archive kernel: CR2: 0000000000000044 CR3: 00000000016cb000 CR4: 00000000000006a0 Nov 6 15:44:03 archive kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 Nov 6 15:44:03 archive kernel: DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Nov 6 15:44:03 archive kernel: Process kswapd0 (pid: 659, threadinfo ffff88085eb1a000, task ffff88085f4706b0) Nov 6 15:44:03 archive kernel: Stack: Nov 6 15:44:03 archive kernel: ffff88085eb1bce4 000000018102914a 0000000000000000 ffffffff811d268f Nov 6 15:44:03 archive kernel: <0> ffff88085841b800 0000000000000000 0000005500000283 ffff88085841b800 Nov 6 15:44:03 archive kernel: <0> ffff88085eb1bd24 00000000ffffffff 00000000000002bc 00000000000000d0 Nov 6 15:44:03 archive kernel: Call Trace: Nov 6 15:44:03 archive kernel: [] ? xfs_reclaim_inode+0x0/0x212 Nov 6 15:44:03 archive kernel: [] xfs_reclaim_inode_shrink+0x61/0x123 Nov 6 15:44:03 archive kernel: [] shrink_slab +0xd8/0x148 Nov 6 15:44:03 archive kernel: [] kswapd+0x625/0x89d Nov 6 15:44:03 archive kernel: [] ? isolate_pages_global+0x0/0x23f Nov 6 15:44:03 archive kernel: [] ? autoremove_wake_function+0x0/0x38 Nov 6 15:44:03 archive kernel: [] ? kswapd+0x0/0x89d Nov 6 15:44:03 archive kernel: [] kthread+0x7d/0x85 Nov 6 15:44:03 archive kernel: [] kernel_thread_helper+0x4/0x10 Nov 6 15:44:03 archive kernel: [] ? kthread+0x0/0x85 Nov 6 15:44:03 archive kernel: [] ? kernel_thread_helper+0x0/0x10 Nov 6 15:44:03 archive kernel: Code: c0 48 89 75 b8 89 55 b4 89 4d b0 44 89 45 ac 74 03 41 8b 01 89 45 d4 45 31 ff 45 31 ed eb 69 48 8b 7d c0 44 89 ee e8 2d d1 fe ff <83> 78 44 00 49 89 c4 75 0a 48 89 c7 e8 ad c2 fe ff eb 47 44 8b Nov 6 15:44:03 archive kernel: RIP [] xfs_inode_ag_iterator+0x4a/0xce Nov 6 15:44:03 archive kernel: RSP Nov 6 15:44:03 archive kernel: CR2: 0000000000000044 Nov 6 15:44:03 archive kernel: ---[ end trace 3bcf38b06227bae0 ]--- Or like this: Oct 22 08:30:05 archive kernel: BUG: unable to handle kernel NULL pointer dereference at 0000000000000044 Oct 22 08:30:05 archive kernel: IP: [] xfs_reclaim_inode_shrink+0xc3/0x123 Oct 22 08:30:05 archive kernel: [] shrink_slab +0xcb/0x148 Oct 22 08:30:05 archive kernel: [] kswapd+0x625/0x89d Oct 22 08:30:05 archive kernel: [] ? isolate_pages_global+0x0/0x23f Oct 22 08:30:05 archive kernel: [] ? autoremove_wake_function+0x0/0x38 Oct 22 08:30:05 archive kernel: [] ? kswapd+0x0/0x89d Oct 22 08:30:05 archive kernel: [] kthread+0x7d/0x85 Oct 22 08:30:05 archive kernel: [] kernel_thread_helper+0x4/0x10 Oct 22 08:30:05 archive kernel: [] ? kthread+0x0/0x85 Oct 22 08:30:05 archive kernel: [] ? kernel_thread_helper+0x0/0x10 The system is a Dell R910 (Intek Xeon CPU E7530, 24 cores (with hyperthreading). 32GB Ram, Raid Controller is Perc H700, SAS discs, Raid 5 with 1.7TB, formatted with XFS. Kernel version 2.6.34.7 is running (64bit kernel on a 32bit system, Debian packages). There is a multipathing fibrechannel conenction to an external storage, which partition is also formatted with XFS. xfs-tools are version 3.0.4. Host 2 is one of the FC connections. Does anybody has a hint to this crash? I could not find any solution in any bugtracker so I am not sure if it is already fixed. The system itself is under load (Load-Average is about 20 / 18 / 17). Are any other informations needed? Local filesystem informations: xfs_info / meta-data=/dev/root isize=256 agcount=32, agsize=13683646 blks = sectsz=512 attr=0 data = bsize=4096 blocks=437876672, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=32768, version=1 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=65536 blocks=0, rtextents=0 Thanks in advance Alex --=-BD+yAaNRJCDVYep6RroT Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 7bit Hi!

I would be glad if anybody can give me any hint on the following subject.
I have a linux server running formatted with XFS. Afer a couple of days (about 6 or 7) I get the following crash:


Nov  6 15:44:03 archive kernel: BUG: unable to handle kernel NULL pointer dereference at 0000000000000044
Nov  6 15:44:03 archive kernel: IP: [<ffffffff811d3248>] xfs_inode_ag_iterator+0x4a/0xce
Nov  6 15:44:03 archive kernel: PGD 0
Nov  6 15:44:03 archive kernel: Oops: 0000 [#1] SMP
Nov  6 15:44:03 archive kernel: last sysfs file: /sys/devices/pci0000:00/0000:00:1c.0/0000:08:00.1/host2/rport-2:0-0/target2:0:0/fc_transport/target2:0:0/port_name
Nov  6 15:44:03 archive kernel: CPU 13
Nov  6 15:44:03 archive kernel: Modules linked in: iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi wcte11xp wctc4xxp wct4xxp wct1xxp wcte12xp dahdi_voicebus dahdi_transcode dahdi dm_round_robin qla2xxx scsi_dh_rdac scsi_dh_emc scsi_
dh_alua scsi_dh_hp_sw af_packet ipt_REDIRECT iptable_nat nf_nat ipt_REJECT xt_tcpudp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack iptable_filter ip_tables x_tables ipmi_si ipmi_watchdog ipmi_devintf ipmi_msghandler fan ac ipv6
fuse dm_multipath scsi_dh psmouse usbhid hid evdev ehci_hcd uhci_hcd iTCO_wdt rtc_cmos pcspkr serio_raw iTCO_vendor_support usbcore thermal bnx2 rtc_core rtc_lib button processor thermal_sys unix
Nov  6 15:44:03 archive kernel:
Nov  6 15:44:03 archive kernel: Pid: 659, comm: kswapd0 Not tainted 2.6.34.7-64bit #9 0P658H/PowerEdge R910
Nov  6 15:44:03 archive kernel: RIP: 0010:[<ffffffff811d3248>]  [<ffffffff811d3248>] xfs_inode_ag_iterator+0x4a/0xce
Nov  6 15:44:03 archive kernel: RSP: 0018:ffff88085eb1bcb0  EFLAGS: 00010282
Nov  6 15:44:03 archive kernel: RAX: 0000000000000000 RBX: ffff88085841b800 RCX: 0000000000000000
Nov  6 15:44:03 archive kernel: RDX: 0000000000000001 RSI: 0000000000000000 RDI: 0000000000000000
Nov  6 15:44:03 archive kernel: RBP: ffff88085eb1bd10 R08: 0000000000000001 R09: ffff88085eb1bd24
Nov  6 15:44:03 archive kernel: R10: ffffffffff000000 R11: ffff88047d42b0e8 R12: ffff88085eb1bd24
Nov  6 15:44:03 archive kernel: R13: 0000000000000000 R14: ffff88085eb1bd24 R15: 0000000000000000
Nov  6 15:44:03 archive kernel: FS:  0000000000000000(0000) GS:ffff8800023a0000(0000) knlGS:0000000000000000
Nov  6 15:44:03 archive kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Nov  6 15:44:03 archive kernel: CR2: 0000000000000044 CR3: 00000000016cb000 CR4: 00000000000006a0
Nov  6 15:44:03 archive kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Nov  6 15:44:03 archive kernel: DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Nov  6 15:44:03 archive kernel: Process kswapd0 (pid: 659, threadinfo ffff88085eb1a000, task ffff88085f4706b0)
Nov  6 15:44:03 archive kernel: Stack:
Nov  6 15:44:03 archive kernel:  ffff88085eb1bce4 000000018102914a 0000000000000000 ffffffff811d268f
Nov  6 15:44:03 archive kernel: <0> ffff88085841b800 0000000000000000 0000005500000283 ffff88085841b800
Nov  6 15:44:03 archive kernel: <0> ffff88085eb1bd24 00000000ffffffff 00000000000002bc 00000000000000d0
Nov  6 15:44:03 archive kernel: Call Trace:
Nov  6 15:44:03 archive kernel:  [<ffffffff811d268f>] ? xfs_reclaim_inode+0x0/0x212
Nov  6 15:44:03 archive kernel:  [<ffffffff811d332d>] xfs_reclaim_inode_shrink+0x61/0x123
Nov  6 15:44:03 archive kernel:  [<ffffffff81075f45>] shrink_slab+0xd8/0x148
Nov  6 15:44:03 archive kernel:  [<ffffffff810765da>] kswapd+0x625/0x89d
Nov  6 15:44:03 archive kernel:  [<ffffffff8107445f>] ? isolate_pages_global+0x0/0x23f
Nov  6 15:44:03 archive kernel:  [<ffffffff81040882>] ? autoremove_wake_function+0x0/0x38
Nov  6 15:44:03 archive kernel:  [<ffffffff81075fb5>] ? kswapd+0x0/0x89d
Nov  6 15:44:03 archive kernel:  [<ffffffff81040472>] kthread+0x7d/0x85
Nov  6 15:44:03 archive kernel:  [<ffffffff81002c74>] kernel_thread_helper+0x4/0x10
Nov  6 15:44:03 archive kernel:  [<ffffffff810403f5>] ? kthread+0x0/0x85
Nov  6 15:44:03 archive kernel:  [<ffffffff81002c70>] ? kernel_thread_helper+0x0/0x10
Nov  6 15:44:03 archive kernel: Code: c0 48 89 75 b8 89 55 b4 89 4d b0 44 89 45 ac 74 03 41 8b 01 89 45 d4 45 31 ff 45 31 ed eb 69 48 8b 7d c0 44 89 ee e8 2d d1 fe ff <83> 78 44 00 49 89 c4 75 0a 48 89 c7 e8 ad c2 fe ff eb 47 44 8b
Nov  6 15:44:03 archive kernel: RIP  [<ffffffff811d3248>] xfs_inode_ag_iterator+0x4a/0xce
Nov  6 15:44:03 archive kernel:  RSP <ffff88085eb1bcb0>
Nov  6 15:44:03 archive kernel: CR2: 0000000000000044
Nov  6 15:44:03 archive kernel: ---[ end trace 3bcf38b06227bae0 ]---


Or like this:
Oct 22 08:30:05 archive kernel: BUG: unable to handle kernel NULL pointer dereference at 0000000000000044
Oct 22 08:30:05 archive kernel: IP: [<ffffffff811d338f>] xfs_reclaim_inode_shrink+0xc3/0x123

Oct 22 08:30:05 archive kernel:  [<ffffffff81075f38>] shrink_slab+0xcb/0x148
Oct 22 08:30:05 archive kernel:  [<ffffffff810765da>] kswapd+0x625/0x89d
Oct 22 08:30:05 archive kernel:  [<ffffffff8107445f>] ? isolate_pages_global+0x0/0x23f
Oct 22 08:30:05 archive kernel:  [<ffffffff81040882>] ? autoremove_wake_function+0x0/0x38
Oct 22 08:30:05 archive kernel:  [<ffffffff81075fb5>] ? kswapd+0x0/0x89d
Oct 22 08:30:05 archive kernel:  [<ffffffff81040472>] kthread+0x7d/0x85
Oct 22 08:30:05 archive kernel:  [<ffffffff81002c74>] kernel_thread_helper+0x4/0x10
Oct 22 08:30:05 archive kernel:  [<ffffffff810403f5>] ? kthread+0x0/0x85
Oct 22 08:30:05 archive kernel:  [<ffffffff81002c70>] ? kernel_thread_helper+0x0/0x10

The system is a Dell R910 (Intek Xeon CPU E7530, 24 cores (with hyperthreading).
32GB Ram, Raid Controller is Perc H700, SAS discs, Raid 5 with 1.7TB, formatted with XFS.
Kernel version 2.6.34.7 is running (64bit kernel on a 32bit system, Debian packages).
There is a multipathing fibrechannel conenction to an external storage, which partition is also formatted with XFS.
xfs-tools are version 3.0.4.
Host 2 is one of the FC connections.

Does anybody has a hint to this crash?
I could not find any solution in any bugtracker so I am not sure if it is already fixed.

The system itself is under load (Load-Average is about 20 / 18 / 17).

Are any other informations needed?

Local filesystem informations:
xfs_info  /
meta-data=/dev/root              isize=256    agcount=32, agsize=13683646 blks
         =                       sectsz=512   attr=0
data     =                       bsize=4096   blocks=437876672, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=32768, version=1
         =                       sectsz=512   sunit=0 blks, lazy-count=0
realtime =none                   extsz=65536  blocks=0, rtextents=0



Thanks in advance
Alex

--=-BD+yAaNRJCDVYep6RroT-- From martin.rusko@gmail.com Mon Nov 7 08:44:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7Ei8Ob062530 for ; Mon, 7 Nov 2011 08:44:08 -0600 X-ASG-Debug-ID: 1320677047-0f6c01a00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-iy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E6604227CAF for ; Mon, 7 Nov 2011 06:44:07 -0800 (PST) Received: from mail-iy0-f181.google.com (mail-iy0-f181.google.com [209.85.210.181]) by cuda.sgi.com with ESMTP id damAx9YADGZJpm8o for ; Mon, 07 Nov 2011 06:44:07 -0800 (PST) Received: by iaen33 with SMTP id n33so512051iae.26 for ; Mon, 07 Nov 2011 06:44:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=FfRvNL6mxLHz9bo5CwVTikELu5d/EIeeRqjSGcJ52lU=; b=aqaOCFeWTPs/lqocY/PcN4z5RMzZQ70zXIOmJJmFZ8lDH2mQ2g6Zb3LSZ+B5o6QjYD ulYTrMUp9sYMYhkCZgMI43RRel3FWJNa5/WDiCs63nXf019ixoQecPOJy4mzIxxxvF4I tKV/vv6Z2uE696Q70+hTIpunK7Ymjm6iyzAvc= MIME-Version: 1.0 Received: by 10.42.151.196 with SMTP id f4mr47974078icw.17.1320677047354; Mon, 07 Nov 2011 06:44:07 -0800 (PST) Received: by 10.42.240.70 with HTTP; Mon, 7 Nov 2011 06:44:07 -0800 (PST) In-Reply-To: References: Date: Mon, 7 Nov 2011 15:44:07 +0100 Message-ID: X-ASG-Orig-Subj: Re: Advanced format disk Subject: Re: Advanced format disk From: Martin Rusko To: Zhu Han Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-iy0-f181.google.com[209.85.210.181] X-Barracuda-Start-Time: 1320677047 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79584 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 7, 2011 at 3:12 AM, Zhu Han wrote: > Hi, > > I got several advanced format disk, whose physical size is 4096 bytes, bu= t > its logical size is 512 bytes: > $ sudo fdisk -l /dev/sdb > > Disk /dev/sdb: 750.2 GB, 750156374016 bytes > 255 heads, 63 sectors/track, 91201 cylinders > Units =3D cylinders of 16065 * 512 =3D 8225280 bytes > Sector size (logical/physical): 512 bytes / 4096 bytes > I/O size (minimum/optimal): 4096 bytes / 4096 bytes > Disk identifier: 0x00000000 > > Disk /dev/sdb doesn't contain a valid partition table > > Is there any special tuning knob I should notice before formating it? IMH= O, > set the sector size as 4096 bytes is enough. The default block size is 40= 96 > bytes. > $ sudo xfs_info /dev/sdb > meta-data=3D/dev/sdb=A0=A0=A0=A0=A0=A0=A0=A0 isize=3D256=A0=A0=A0 agcount= =3D4, agsize=3D45785912 blks > =A0=A0=A0=A0=A0=A0=A0 =A0 =A0 =A0 =A0 =A0 =3D=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 sectsz=3D4096=A0 attr=3D2 > data=A0=A0=A0 =A0 =A0 =A0 =3D=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0 bsize=3D4096=A0=A0 blocks=3D183143646, > imaxpct=3D25 > =A0=A0=A0=A0=A0=A0=A0 =A0 =A0 =A0 =A0 =A0 =3D=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 sunit=3D0=A0=A0=A0=A0=A0 swidth=3D0= blks > naming=A0=A0=A0=A0=A0 =3D=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0 version 2=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 bsiz= e=3D4096 > ascii-ci=3D0 > log=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =3Dinternal=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0 bsize=3D4096=A0=A0 blocks=3D89425, version=3D2 > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =3D=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 sectsz=3D4096=A0 sunit=3D1 bl= ks, > lazy-count=3D1 > realtime=A0=A0 =3Dnone=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0 extsz=3D4096=A0=A0 blocks=3D0, rtextents=3D0 > > One thing is to make sure, that your partitions are aligned to physical sector size. Recent fdisk will do it properly. See options '-c' (or 'c' in interactive mode) which sets DOS compatibility mode and '-u' (or 'u' in interactive mode) which sets units which fdisk uses. You want no DOS compatibility and units of sectors. Then first partition starts on 2048 sector (so 1MiB is available for GRUB for example) and it's gets things nicely aligned ... 2048 logical sectors =3D 256 physical sectors. If you are creating more than one partition, use something like +34G while specifying end of the partition (so the next one is aligned as well). Martin From schumi.han@gmail.com Mon Nov 7 08:51:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7EpJnv062877 for ; Mon, 7 Nov 2011 08:51:19 -0600 X-ASG-Debug-ID: 1320677477-018f00730000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-gy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2E7871F2F883 for ; Mon, 7 Nov 2011 06:51:17 -0800 (PST) Received: from mail-gy0-f181.google.com (mail-gy0-f181.google.com [209.85.160.181]) by cuda.sgi.com with ESMTP id bzALsiieLA9vp3HF for ; Mon, 07 Nov 2011 06:51:17 -0800 (PST) Received: by gyd10 with SMTP id 10so7530228gyd.26 for ; Mon, 07 Nov 2011 06:51:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=Sj0Bgh8QS59kxp1HOtZn4OzagZskcTLU0S8Av6Poo58=; b=UFpXh88UEl8ovDASM8VUmp84fy5fpXDH+urdiLldPUsd/ECYR8NKvAiazRHfMCC2TV N9/ZiNCuNeHi5K9Udg/hsKRxI5m/Cq6pa38AvFHOq/1RGh2D/dRThTZ97dqMpusZwIRn cRBGvYhGjZTaAwGr1cGvfkMnX/rLjJ3n5XeDw= MIME-Version: 1.0 Received: by 10.236.179.105 with SMTP id g69mr33711516yhm.130.1320677477526; Mon, 07 Nov 2011 06:51:17 -0800 (PST) Received: by 10.236.29.196 with HTTP; Mon, 7 Nov 2011 06:51:17 -0800 (PST) In-Reply-To: References: Date: Mon, 7 Nov 2011 22:51:17 +0800 Message-ID: X-ASG-Orig-Subj: Re: Advanced format disk Subject: Re: Advanced format disk From: Zhu Han To: Martin Rusko Cc: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=20cf303a2d13e92e1704b1262fba X-Barracuda-Connect: mail-gy0-f181.google.com[209.85.160.181] X-Barracuda-Start-Time: 1320677478 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79586 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --20cf303a2d13e92e1704b1262fba Content-Type: text/plain; charset=ISO-8859-1 On Mon, Nov 7, 2011 at 10:44 PM, Martin Rusko wrote: > On Mon, Nov 7, 2011 at 3:12 AM, Zhu Han wrote: > > Hi, > > > > I got several advanced format disk, whose physical size is 4096 bytes, > but > > its logical size is 512 bytes: > > $ sudo fdisk -l /dev/sdb > > > > Disk /dev/sdb: 750.2 GB, 750156374016 bytes > > 255 heads, 63 sectors/track, 91201 cylinders > > Units = cylinders of 16065 * 512 = 8225280 bytes > > Sector size (logical/physical): 512 bytes / 4096 bytes > > I/O size (minimum/optimal): 4096 bytes / 4096 bytes > > Disk identifier: 0x00000000 > > > > Disk /dev/sdb doesn't contain a valid partition table > > > > Is there any special tuning knob I should notice before formating it? > IMHO, > > set the sector size as 4096 bytes is enough. The default block size is > 4096 > > bytes. > > $ sudo xfs_info /dev/sdb > > meta-data=/dev/sdb isize=256 agcount=4, agsize=45785912 blks > > = sectsz=4096 attr=2 > > data = bsize=4096 blocks=183143646, > > imaxpct=25 > > = sunit=0 swidth=0 blks > > naming = version 2 bsize=4096 > > ascii-ci=0 > > log =internal bsize=4096 blocks=89425, > version=2 > > = sectsz=4096 sunit=1 blks, > > lazy-count=1 > > realtime =none extsz=4096 blocks=0, rtextents=0 > > > > > > One thing is to make sure, that your partitions are aligned to > physical sector size. Recent fdisk will do it properly. See options > '-c' (or 'c' in interactive mode) which sets DOS compatibility mode > and '-u' (or 'u' in interactive mode) which sets units which fdisk > uses. You want no DOS compatibility and units of sectors. Then first > partition starts on 2048 sector (so 1MiB is available for GRUB for > example) and it's gets things nicely aligned ... 2048 logical sectors > = 256 physical sectors. > If the whole disk is used for the file system (it is not a bootable disk so no partition is created), can I ignore these settings safely? > > If you are creating more than one partition, use something like +34G > while specifying end of the partition (so the next one is aligned as > well). > > Martin > --20cf303a2d13e92e1704b1262fba Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable


On Mon, Nov 7, 2011 at 10:44 PM, Martin = Rusko <marti= n.rusko@gmail.com> wrote:
On Mon, Nov 7, 2011 at 3:12 AM, Zhu Han &= lt;schumi.han@gmail.com> wro= te:
> Hi,
>
> I got several advanced format disk, whose physical size is 4096 bytes,= but
> its logical size is 512 bytes:
> $ sudo fdisk -l /dev/sdb
>
> Disk /dev/sdb: 750.2 GB, 750156374016 bytes
> 255 heads, 63 sectors/track, 91201 cylinders
> Units =3D cylinders of 16065 * 512 =3D 8225280 bytes
> Sector size (logical/physical): 512 bytes / 4096 bytes
> I/O size (minimum/optimal): 4096 bytes / 4096 bytes
> Disk identifier: 0x00000000
>
> Disk /dev/sdb doesn't contain a valid partition table
>
> Is there any special tuning knob I should notice before formating it? = IMHO,
> set the sector size as 4096 bytes is enough. The default block size is= 4096
> bytes.
> $ sudo xfs_info /dev/sdb
> meta-data=3D/dev/sdb=A0=A0=A0=A0=A0=A0=A0=A0 isize=3D256=A0=A0=A0 agco= unt=3D4, agsize=3D45785912 blks
> =A0=A0=A0=A0=A0=A0=A0 =A0 =A0 =A0 =A0 =A0 =3D=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 sectsz=3D4096=A0 attr=3D2
> data=A0=A0=A0 =A0 =A0 =A0 =3D=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0 bsize=3D4096=A0=A0 blocks=3D183143646,
> imaxpct=3D25
> =A0=A0=A0=A0=A0=A0=A0 =A0 =A0 =A0 =A0 =A0 =3D=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 sunit=3D0=A0=A0=A0=A0=A0 swidth= =3D0 blks
> naming=A0=A0=A0=A0=A0 =3D=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0 version 2=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 b= size=3D4096
> ascii-ci=3D0
> log=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =3Dinternal=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0 bsize=3D4096=A0=A0 blocks=3D89425, version=3D2
> =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =3D=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 sectsz=3D4096=A0 sunit=3D1= blks,
> lazy-count=3D1
> realtime=A0=A0 =3Dnone=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0 extsz=3D4096=A0=A0 blocks=3D0, rtextents=3D0
>
>

One thing is to make sure, that your partitions are aligned to<= br> physical sector size. Recent fdisk will do it properly. See options
'-c' (or 'c' in interactive mode) which sets DOS compatibil= ity mode
and '-u' (or 'u' in interactive mode) which sets units whic= h fdisk
uses. You want no DOS compatibility and units of sectors. Then first
partition starts on 2048 sector (so 1MiB is available for GRUB for
example) and it's gets things nicely aligned ... 2048 logical sectors =3D 256 physical sectors.

If the whole disk is use= d for the file system (it is not a bootable disk so no partition is created= ), can I ignore these settings safely?
=A0

If you are creating more than one partition, use something like +34G
while specifying end of the partition (so the next one is aligned as
well).

Martin

--20cf303a2d13e92e1704b1262fba-- From martin.rusko@gmail.com Mon Nov 7 09:14:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7FE2Qg063664 for ; Mon, 7 Nov 2011 09:14:03 -0600 X-ASG-Debug-ID: 1320678841-547000e70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-gx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 389361301B3A for ; Mon, 7 Nov 2011 07:14:01 -0800 (PST) Received: from mail-gx0-f181.google.com (mail-gx0-f181.google.com [209.85.161.181]) by cuda.sgi.com with ESMTP id VM4idM7E5FPVavnA for ; Mon, 07 Nov 2011 07:14:01 -0800 (PST) Received: by ggnv2 with SMTP id v2so698881ggn.26 for ; Mon, 07 Nov 2011 07:14:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=Xl4N3rCjfbfl4mYPxdprwuY78R0waFjcVi2Kw1M+FwI=; b=R0+2FjP43rHq7vh+8vUdL2AHqVDsUWB0THU9Z8R4o9ZmjF7nsR3ZDHQ9CKRIMPJ8sX BE+ZVxpnOPTH1lNmweF1XtZTeUgX/cHy/zLAeNc3Dr/RguTPNy3OrufPCNrGpXsKo4ob zaQPQZBRto1lBffZYQ3sW4ADZNUhv/Mt8Cfi8= MIME-Version: 1.0 Received: by 10.42.41.143 with SMTP id p15mr48260154ice.9.1320678840516; Mon, 07 Nov 2011 07:14:00 -0800 (PST) Received: by 10.42.240.70 with HTTP; Mon, 7 Nov 2011 07:14:00 -0800 (PST) In-Reply-To: References: Date: Mon, 7 Nov 2011 16:14:00 +0100 Message-ID: X-ASG-Orig-Subj: Re: Advanced format disk Subject: Re: Advanced format disk From: Martin Rusko To: Zhu Han Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-gx0-f181.google.com[209.85.161.181] X-Barracuda-Start-Time: 1320678842 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79587 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 7, 2011 at 3:51 PM, Zhu Han wrote: > > > > On Mon, Nov 7, 2011 at 10:44 PM, Martin Rusko > wrote: >> >> On Mon, Nov 7, 2011 at 3:12 AM, Zhu Han wrote: >> > Hi, >> > >> > I got several advanced format disk, whose physical size is 4096 bytes, >> > but >> > its logical size is 512 bytes: >> > $ sudo fdisk -l /dev/sdb >> > >> > Disk /dev/sdb: 750.2 GB, 750156374016 bytes >> > 255 heads, 63 sectors/track, 91201 cylinders >> > Units =3D cylinders of 16065 * 512 =3D 8225280 bytes >> > Sector size (logical/physical): 512 bytes / 4096 bytes >> > I/O size (minimum/optimal): 4096 bytes / 4096 bytes >> > Disk identifier: 0x00000000 >> > >> > Disk /dev/sdb doesn't contain a valid partition table >> > >> > Is there any special tuning knob I should notice before formating it? >> > IMHO, >> > set the sector size as 4096 bytes is enough. The default block size is >> > 4096 >> > bytes. >> > $ sudo xfs_info /dev/sdb >> > meta-data=3D/dev/sdb=A0=A0=A0=A0=A0=A0=A0=A0 isize=3D256=A0=A0=A0 agco= unt=3D4, agsize=3D45785912 blks >> > =A0=A0=A0=A0=A0=A0=A0 =A0 =A0 =A0 =A0 =A0 =3D=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 sectsz=3D4096=A0 attr=3D2 >> > data=A0=A0=A0 =A0 =A0 =A0 =3D=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0 bsize=3D4096=A0=A0 blocks=3D183143646, >> > imaxpct=3D25 >> > =A0=A0=A0=A0=A0=A0=A0 =A0 =A0 =A0 =A0 =A0 =3D=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 sunit=3D0=A0=A0=A0=A0=A0 swidth= =3D0 blks >> > naming=A0=A0=A0=A0=A0 =3D=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0 version 2=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 b= size=3D4096 >> > ascii-ci=3D0 >> > log=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =3Dinternal=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0 bsize=3D4096=A0=A0 blocks=3D89425, >> > version=3D2 >> > =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 =3D=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 sectsz=3D4096=A0 sunit=3D1= blks, >> > lazy-count=3D1 >> > realtime=A0=A0 =3Dnone=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0 extsz=3D4096=A0=A0 blocks=3D0, rtextents=3D0 >> > >> > >> >> One thing is to make sure, that your partitions are aligned to >> physical sector size. Recent fdisk will do it properly. See options >> '-c' (or 'c' in interactive mode) which sets DOS compatibility mode >> and '-u' (or 'u' in interactive mode) which sets units which fdisk >> uses. You want no DOS compatibility and units of sectors. Then first >> partition starts on 2048 sector (so 1MiB is available for GRUB for >> example) and it's gets things nicely aligned ... 2048 logical sectors >> =3D 256 physical sectors. > > If the whole disk is used for the file system (it is not a bootable disk = so > no partition is created), can I ignore these settings safely? > I've heard about some WD drives with jumper switch, which could be used to shift logical sectors by one to be aligned somehow with dos-compatible partitioning. If you don't have this jumper on or you don't have drive with it, you can ignore it. >> >> If you are creating more than one partition, use something like +34G >> while specifying end of the partition (so the next one is aligned as >> well). >> From wkendall@sgi.com Mon Nov 7 09:14:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7FEble063713 for ; Mon, 7 Nov 2011 09:14:38 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id B4E578F806F; Mon, 7 Nov 2011 07:14:34 -0800 (PST) Received: from [128.162.233.117] (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 9098B70006EC; Mon, 7 Nov 2011 09:14:34 -0600 (CST) Message-ID: <4EB7F5DA.5040103@sgi.com> Date: Mon, 07 Nov 2011 09:14:34 -0600 From: Bill Kendall User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.23) Gecko/20110921 Thunderbird/3.1.15 MIME-Version: 1.0 To: Mike Frysinger Cc: xfs@oss.sgi.com Subject: Re: [PATCH] path: fix 1 byte overflow with empty lists References: <1320554817-2594-1-git-send-email-vapier@gentoo.org> In-Reply-To: <1320554817-2594-1-git-send-email-vapier@gentoo.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/05/2011 11:46 PM, Mike Frysinger wrote: > If pap->pa_cnt is 0, then the local buffer is allocated as 1 byte, > but the code then writes two bytes to it '/' and '\0'. > > Signed-off-by: Mike Frysinger Looks good, Reviewed-by: Bill Kendall From aelder@sgi.com Mon Nov 7 10:10:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7GATTX066088 for ; Mon, 7 Nov 2011 10:10:29 -0600 Received: from xmail.sgi.com (pv-excas3-dc21.corp.sgi.com [137.38.102.206]) by relay3.corp.sgi.com (Postfix) with ESMTP id BF203AC003; Mon, 7 Nov 2011 08:10:25 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Mon, 7 Nov 2011 10:10:24 -0600 Message-ID: <1320682224.3186.5.camel@doink> Subject: [PATCH, updated] xfs: Fix possible memory corruption in xfs_readlink From: Alex Elder Reply-To: To: XFS Mailing List CC: Carlos Maiolino , Ben Hutchings Date: Mon, 7 Nov 2011 10:10:24 -0600 In-Reply-To: <1320156842.30281.28.camel@deadeye> References: <1320156842.30281.28.camel@deadeye> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Carlos Maiolino Fixes a possible memory corruption when the link is larger than MAXPATHLEN and XFS_DEBUG is not enabled. This also remove the S_ISLNK assert, since the inode mode is checked previously in xfs_readlink_by_handle() and via VFS. Updated to address concerns raised by Ben Hutchings about the loose attention paid to 32- vs 64-bit values, and the lack of handling a potentially negative pathlen value: - Changed type of "pathlen" to be xfs_fsize_t, to match that of ip->i_d.di_size - Added checking for a negative pathlen to the too-long pathlen test, and generalized the message that gets reported in that case to reflect the change As a result, if a negative pathlen were encountered, this function would return EFSCORRUPTED (and would fail an assertion for a debug build)--just as would a too-long pathlen. Signed-off-by Alex Elder --- fs/xfs/xfs_vnodeops.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) Index: b/fs/xfs/xfs_vnodeops.c =================================================================== --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -112,7 +112,7 @@ xfs_readlink( char *link) { xfs_mount_t *mp = ip->i_mount; - int pathlen; + xfs_fsize_t pathlen; int error = 0; trace_xfs_readlink(ip); @@ -122,13 +122,19 @@ xfs_readlink( xfs_ilock(ip, XFS_ILOCK_SHARED); - ASSERT(S_ISLNK(ip->i_d.di_mode)); - ASSERT(ip->i_d.di_size <= MAXPATHLEN); - pathlen = ip->i_d.di_size; if (!pathlen) goto out; + if (pathlen < 0 || pathlen > MAXPATHLEN) { + xfs_alert(mp, "%s: inode (%llu) bad symlink length (%lld)", + __func__, (unsigned long long) ip->i_ino, + (long long) pathlen); + ASSERT(0); + return XFS_ERROR(EFSCORRUPTED); + } + + if (ip->i_df.if_flags & XFS_IFINLINE) { memcpy(link, ip->i_df.if_u1.if_data, pathlen); link[pathlen] = '\0'; From cmaiolino@redhat.com Mon Nov 7 10:32:34 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7GWXJv066969 for ; Mon, 7 Nov 2011 10:32:34 -0600 X-ASG-Debug-ID: 1320683552-193403d30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 324D5102ABB1; Mon, 7 Nov 2011 08:32:32 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id RwaN0dvV9JnMfQFV; Mon, 07 Nov 2011 08:32:32 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pA7GWOB7018518 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 7 Nov 2011 11:32:25 -0500 Received: from andromeda.usersys.redhat.com (ovpn-113-26.phx2.redhat.com [10.3.113.26]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id pA7GWKxs027207 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Mon, 7 Nov 2011 11:32:23 -0500 Date: Mon, 7 Nov 2011 14:31:08 -0200 From: Carlos Maiolino To: Alex Elder Cc: XFS Mailing List , Ben Hutchings X-ASG-Orig-Subj: Re: [PATCH, updated] xfs: Fix possible memory corruption in xfs_readlink Subject: Re: [PATCH, updated] xfs: Fix possible memory corruption in xfs_readlink Message-ID: <20111107163108.GA21214@andromeda.usersys.redhat.com> References: <1320156842.30281.28.camel@deadeye> <1320682224.3186.5.camel@doink> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320682224.3186.5.camel@doink> User-Agent: Mutt/1.5.20 (2009-12-10) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1320683553 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean ACK, below my signoff On Mon, Nov 07, 2011 at 10:10:24AM -0600, Alex Elder wrote: > From: Carlos Maiolino > > Fixes a possible memory corruption when the link is larger than > MAXPATHLEN and XFS_DEBUG is not enabled. This also remove the > S_ISLNK assert, since the inode mode is checked previously in > xfs_readlink_by_handle() and via VFS. > > Updated to address concerns raised by Ben Hutchings about the loose > attention paid to 32- vs 64-bit values, and the lack of handling a > potentially negative pathlen value: > - Changed type of "pathlen" to be xfs_fsize_t, to match that of > ip->i_d.di_size > - Added checking for a negative pathlen to the too-long pathlen > test, and generalized the message that gets reported in that case > to reflect the change > As a result, if a negative pathlen were encountered, this function > would return EFSCORRUPTED (and would fail an assertion for a debug > build)--just as would a too-long pathlen. > > Signed-off-by Alex Elder Signed-off-by: Carlos Maiolino > > --- > fs/xfs/xfs_vnodeops.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > Index: b/fs/xfs/xfs_vnodeops.c > =================================================================== > --- a/fs/xfs/xfs_vnodeops.c > +++ b/fs/xfs/xfs_vnodeops.c > @@ -112,7 +112,7 @@ xfs_readlink( > char *link) > { > xfs_mount_t *mp = ip->i_mount; > - int pathlen; > + xfs_fsize_t pathlen; > int error = 0; > > trace_xfs_readlink(ip); > @@ -122,13 +122,19 @@ xfs_readlink( > > xfs_ilock(ip, XFS_ILOCK_SHARED); > > - ASSERT(S_ISLNK(ip->i_d.di_mode)); > - ASSERT(ip->i_d.di_size <= MAXPATHLEN); > - > pathlen = ip->i_d.di_size; > if (!pathlen) > goto out; > > + if (pathlen < 0 || pathlen > MAXPATHLEN) { > + xfs_alert(mp, "%s: inode (%llu) bad symlink length (%lld)", > + __func__, (unsigned long long) ip->i_ino, > + (long long) pathlen); > + ASSERT(0); > + return XFS_ERROR(EFSCORRUPTED); > + } > + > + > if (ip->i_df.if_flags & XFS_IFINLINE) { > memcpy(link, ip->i_df.if_u1.if_data, pathlen); > link[pathlen] = '\0'; > > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs -- --Carlos From wkendall@sgi.com Mon Nov 7 10:58:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7GwTmV068171 for ; Mon, 7 Nov 2011 10:58:29 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id 0CFD9AC004; Mon, 7 Nov 2011 08:58:28 -0800 (PST) Received: from [128.162.233.117] (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id AE90F700076B; Mon, 7 Nov 2011 10:58:28 -0600 (CST) Message-ID: <4EB80E34.9070704@sgi.com> Date: Mon, 07 Nov 2011 10:58:28 -0600 From: Bill Kendall User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.23) Gecko/20110921 Thunderbird/3.1.15 MIME-Version: 1.0 To: Bill Kendall Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfstests: add 059 and 060 for multi-stream xfsdump References: <1320322464-6559-1-git-send-email-wkendall@sgi.com> In-Reply-To: <1320322464-6559-1-git-send-email-wkendall@sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/03/2011 07:14 AM, Bill Kendall wrote: > Implement the multi-stream placeholder tests 059 and 060. The comments > imply that these tests existed on IRIX, but I was unable to find them. > > Test 059 does a simple 4-way dump and restore. Test 060 does a 4-way > dump, then restores each dump file individually (in a cumulative > fashion). > > The tests are skipped if the installed xfsdump does not support > multi-stream output. > > Signed-off-by: Bill Kendall > --- > 059 | 23 ++++++++++++++--------- > 060 | 29 ++++++++++++++++++++--------- > common.dump | 40 ++++++++++++++++++++++++++++++++++++++-- > group | 4 ++-- > 4 files changed, 74 insertions(+), 22 deletions(-) I realized the .out files were not included in my patch. I'll repost shortly... Bill From wkendall@sgi.com Mon Nov 7 11:22:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_42, J_CHICKENPOX_64,T_LOTS_OF_MONEY autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7HMNM0068717 for ; Mon, 7 Nov 2011 11:22:23 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3AB8E8F8084; Mon, 7 Nov 2011 09:22:20 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 2A8A470016D4; Mon, 7 Nov 2011 11:22:20 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id DC68720DF332; Mon, 7 Nov 2011 11:22:19 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH v2] xfstests: add 059 and 060 for multi-stream xfsdump Date: Mon, 7 Nov 2011 11:22:16 -0600 Message-Id: <1320686536-1399-1-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Implement the multi-stream placeholder tests 059 and 060. The comments imply that these tests existed on IRIX, but I was unable to find them. Test 059 does a simple 4-way dump and restore. Test 060 does a 4-way dump, then restores each dump file individually (in a cumulative fashion). The tests are skipped if the installed xfsdump does not support multi-stream output. Signed-off-by: Bill Kendall --- Changed for v2: - Included the expected-output files. 059 | 23 +++++++---- 059.out | 76 +++++++++++++++++++++++++++++++++++++ 060 | 29 ++++++++++---- 060.out | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ common.dump | 40 +++++++++++++++++++- group | 4 +- 6 files changed, 270 insertions(+), 22 deletions(-) create mode 100644 059.out create mode 100644 060.out diff --git a/059 b/059 index 6348f0e..1f3f8e3 100755 --- a/059 +++ b/059 @@ -1,10 +1,10 @@ #! /bin/bash # FS QA Test No. 059 # -# place holder for IRIX 059 test for xfsdump/xfsrestore multi streams +# Test multi-stream xfsdump/xfsrestore. # #----------------------------------------------------------------------- -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. +# Copyright (c) 2000-2001, 2011 SGI. All Rights Reserved. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as @@ -22,26 +22,31 @@ #----------------------------------------------------------------------- # # creator -owner=ivanr@sgi.com +owner=wkendall@sgi.com seq=`basename $0` echo "QA output created by $seq" here=`pwd` tmp=/tmp/$$ -status=1 # failure is the default! +status=0 # success is the default! trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 # get standard environment, filters and checks . ./common.rc -. ./common.filter - -_notrun "Place holder for IRIX test 059" +. ./common.dump # real QA test starts here _supported_fs xfs -_supported_os IRIX +_supported_os Linux + +_require_multi_stream + +_create_dumpdir_fill_multi +_do_dump_multi_file --multi 4 +_do_restore_multi_file --multi 4 +_ls_compare_sub +_diff_compare # success, all done -status=0 exit diff --git a/059.out b/059.out new file mode 100644 index 0000000..7d670e1 --- /dev/null +++ b/059.out @@ -0,0 +1,76 @@ +QA output created by 059 +Creating directory system to dump using src/fill. +Setup ....................................... +Dumping to files... +xfsdump -f DUMP_FILE.0 -M stress_tape_media.0 -f DUMP_FILE.1 -M stress_tape_media.1 -f DUMP_FILE.2 -M stress_tape_media.2 -f DUMP_FILE.3 -M stress_tape_media.3 -L stress_059 SCRATCH_MNT +xfsdump: using file dump (drive_simple) strategy +xfsdump: using file dump (drive_simple) strategy +xfsdump: using file dump (drive_simple) strategy +xfsdump: using file dump (drive_simple) strategy +xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT +xfsdump: dump date: DATE +xfsdump: session id: ID +xfsdump: session label: "stress_059" +xfsdump: ino map +xfsdump: stream 0: ino INO offset NUM to ino INO offset NUM +xfsdump: stream 1: ino INO offset NUM to ino INO offset NUM +xfsdump: stream 2: ino INO offset NUM to ino INO offset NUM +xfsdump: stream 3: ino INO offset NUM to end +xfsdump: ino map construction complete +xfsdump: estimated dump size: NUM bytes +xfsdump: estimated dump size per stream: NUM bytes +xfsdump: /var/xfsdump/inventory created +xfsdump: dump size (non-dir files) : NUM bytes +xfsdump: dump complete: SECS seconds elapsed +xfsdump: Dump Status: SUCCESS +Restoring from file... +xfsrestore -f DUMP_FILE.0 -f DUMP_FILE.1 -f DUMP_FILE.2 -f DUMP_FILE.3 -L stress_059 RESTORE_DIR +xfsrestore: using file dump (drive_simple) strategy +xfsrestore: using file dump (drive_simple) strategy +xfsrestore: using file dump (drive_simple) strategy +xfsrestore: using file dump (drive_simple) strategy +xfsrestore: restore complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS +Comparing listing of dump directory with restore directory +Files TMP.dump_dir and TMP.restore_dir are identical +Comparing dump directory with restore directory +Files DUMP_DIR/big and RESTORE_DIR/DUMP_SUBDIR/big are identical +Files DUMP_DIR/large000 and RESTORE_DIR/DUMP_SUBDIR/large000 are identical +Files DUMP_DIR/large111 and RESTORE_DIR/DUMP_SUBDIR/large111 are identical +Files DUMP_DIR/large222 and RESTORE_DIR/DUMP_SUBDIR/large222 are identical +Files DUMP_DIR/small and RESTORE_DIR/DUMP_SUBDIR/small are identical +Files DUMP_DIR/sub/a and RESTORE_DIR/DUMP_SUBDIR/sub/a are identical +Files DUMP_DIR/sub/a00 and RESTORE_DIR/DUMP_SUBDIR/sub/a00 are identical +Files DUMP_DIR/sub/a000 and RESTORE_DIR/DUMP_SUBDIR/sub/a000 are identical +Files DUMP_DIR/sub/b and RESTORE_DIR/DUMP_SUBDIR/sub/b are identical +Files DUMP_DIR/sub/b00 and RESTORE_DIR/DUMP_SUBDIR/sub/b00 are identical +Files DUMP_DIR/sub/big and RESTORE_DIR/DUMP_SUBDIR/sub/big are identical +Files DUMP_DIR/sub/c and RESTORE_DIR/DUMP_SUBDIR/sub/c are identical +Files DUMP_DIR/sub/c00 and RESTORE_DIR/DUMP_SUBDIR/sub/c00 are identical +Files DUMP_DIR/sub/d and RESTORE_DIR/DUMP_SUBDIR/sub/d are identical +Files DUMP_DIR/sub/d00 and RESTORE_DIR/DUMP_SUBDIR/sub/d00 are identical +Files DUMP_DIR/sub/e and RESTORE_DIR/DUMP_SUBDIR/sub/e are identical +Files DUMP_DIR/sub/e00 and RESTORE_DIR/DUMP_SUBDIR/sub/e00 are identical +Files DUMP_DIR/sub/e000 and RESTORE_DIR/DUMP_SUBDIR/sub/e000 are identical +Files DUMP_DIR/sub/f and RESTORE_DIR/DUMP_SUBDIR/sub/f are identical +Files DUMP_DIR/sub/f00 and RESTORE_DIR/DUMP_SUBDIR/sub/f00 are identical +Files DUMP_DIR/sub/g and RESTORE_DIR/DUMP_SUBDIR/sub/g are identical +Files DUMP_DIR/sub/g00 and RESTORE_DIR/DUMP_SUBDIR/sub/g00 are identical +Files DUMP_DIR/sub/h and RESTORE_DIR/DUMP_SUBDIR/sub/h are identical +Files DUMP_DIR/sub/h00 and RESTORE_DIR/DUMP_SUBDIR/sub/h00 are identical +Files DUMP_DIR/sub/h000 and RESTORE_DIR/DUMP_SUBDIR/sub/h000 are identical +Files DUMP_DIR/sub/i and RESTORE_DIR/DUMP_SUBDIR/sub/i are identical +Files DUMP_DIR/sub/i00 and RESTORE_DIR/DUMP_SUBDIR/sub/i00 are identical +Files DUMP_DIR/sub/j and RESTORE_DIR/DUMP_SUBDIR/sub/j are identical +Files DUMP_DIR/sub/j00 and RESTORE_DIR/DUMP_SUBDIR/sub/j00 are identical +Files DUMP_DIR/sub/k and RESTORE_DIR/DUMP_SUBDIR/sub/k are identical +Files DUMP_DIR/sub/k00 and RESTORE_DIR/DUMP_SUBDIR/sub/k00 are identical +Files DUMP_DIR/sub/k000 and RESTORE_DIR/DUMP_SUBDIR/sub/k000 are identical +Files DUMP_DIR/sub/l and RESTORE_DIR/DUMP_SUBDIR/sub/l are identical +Files DUMP_DIR/sub/l00 and RESTORE_DIR/DUMP_SUBDIR/sub/l00 are identical +Files DUMP_DIR/sub/m and RESTORE_DIR/DUMP_SUBDIR/sub/m are identical +Files DUMP_DIR/sub/m00 and RESTORE_DIR/DUMP_SUBDIR/sub/m00 are identical +Files DUMP_DIR/sub/n and RESTORE_DIR/DUMP_SUBDIR/sub/n are identical +Files DUMP_DIR/sub/n00 and RESTORE_DIR/DUMP_SUBDIR/sub/n00 are identical +Files DUMP_DIR/sub/small and RESTORE_DIR/DUMP_SUBDIR/sub/small are identical +Only in SCRATCH_MNT: RESTORE_SUBDIR diff --git a/060 b/060 index 6e58e5b..4adc00f 100755 --- a/060 +++ b/060 @@ -1,10 +1,10 @@ #! /bin/bash # FS QA Test No. 060 # -# place holder for IRIX 060 test for xfsdump/xfsrestore multi streams +# Test multi-stream xfsdump and restoring one stream at a time. # #----------------------------------------------------------------------- -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. +# Copyright (c) 2000-2001, 2011 SGI. All Rights Reserved. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as @@ -22,26 +22,37 @@ #----------------------------------------------------------------------- # # creator -owner=ivanr@sgi.com +owner=wkendall@sgi.com seq=`basename $0` echo "QA output created by $seq" here=`pwd` tmp=/tmp/$$ -status=1 # failure is the default! +status=0 # success is the default! trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 # get standard environment, filters and checks . ./common.rc -. ./common.filter - -_notrun "Place holder for IRIX test 060" +. ./common.dump # real QA test starts here _supported_fs xfs -_supported_os IRIX +_supported_os Linux + +_require_multi_stream + +_create_dumpdir_fill_multi +_do_dump_multi_file --multi 4 +_prepare_restore_dir +base=$dump_file +opts="" +for x in 0 1 2 3; do + _do_restore_file_cum -f $base.$x $opts + opts=-R +done +_ls_compare_sub +_diff_compare # success, all done -status=0 exit diff --git a/060.out b/060.out new file mode 100644 index 0000000..29a1c5e --- /dev/null +++ b/060.out @@ -0,0 +1,120 @@ +QA output created by 060 +Creating directory system to dump using src/fill. +Setup ....................................... +Dumping to files... +xfsdump -f DUMP_FILE.0 -M stress_tape_media.0 -f DUMP_FILE.1 -M stress_tape_media.1 -f DUMP_FILE.2 -M stress_tape_media.2 -f DUMP_FILE.3 -M stress_tape_media.3 -L stress_060 SCRATCH_MNT +xfsdump: using file dump (drive_simple) strategy +xfsdump: using file dump (drive_simple) strategy +xfsdump: using file dump (drive_simple) strategy +xfsdump: using file dump (drive_simple) strategy +xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT +xfsdump: dump date: DATE +xfsdump: session id: ID +xfsdump: session label: "stress_060" +xfsdump: ino map +xfsdump: stream 0: ino INO offset NUM to ino INO offset NUM +xfsdump: stream 1: ino INO offset NUM to ino INO offset NUM +xfsdump: stream 2: ino INO offset NUM to ino INO offset NUM +xfsdump: stream 3: ino INO offset NUM to end +xfsdump: ino map construction complete +xfsdump: estimated dump size: NUM bytes +xfsdump: estimated dump size per stream: NUM bytes +xfsdump: /var/xfsdump/inventory created +xfsdump: dump size (non-dir files) : NUM bytes +xfsdump: dump complete: SECS seconds elapsed +xfsdump: Dump Status: SUCCESS +Restoring cumumlative from file... +xfsrestore -f DUMP_FILE -r RESTORE_DIR +xfsrestore: using file dump (drive_simple) strategy +xfsrestore: searching media for dump +xfsrestore: examining media file 0 +xfsrestore: dump description: +xfsrestore: hostname: HOSTNAME +xfsrestore: mount point: SCRATCH_MNT +xfsrestore: volume: SCRATCH_DEV +xfsrestore: session time: TIME +xfsrestore: level: 0 +xfsrestore: session label: "stress_060" +xfsrestore: media label: "stress_tape_media.0" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: 3 directories and 41 entries processed +xfsrestore: directory post-processing +xfsrestore: restoring non-directory files +xfsrestore: NOTE: restore interrupted: SECS seconds elapsed: may resume later using -R option +xfsrestore: Restore Status: INCOMPLETE +Restoring cumumlative from file... +xfsrestore -R -f DUMP_FILE -r RESTORE_DIR +xfsrestore: using file dump (drive_simple) strategy +xfsrestore: resuming restore previously begun DATE +xfsrestore: examining media file 0 +xfsrestore: seeking past media file directory dump +xfsrestore: restoring non-directory files +xfsrestore: NOTE: restore interrupted: SECS seconds elapsed: may resume later using -R option +xfsrestore: Restore Status: INCOMPLETE +Restoring cumumlative from file... +xfsrestore -R -f DUMP_FILE -r RESTORE_DIR +xfsrestore: using file dump (drive_simple) strategy +xfsrestore: resuming restore previously begun DATE +xfsrestore: examining media file 0 +xfsrestore: seeking past media file directory dump +xfsrestore: restoring non-directory files +xfsrestore: NOTE: restore interrupted: SECS seconds elapsed: may resume later using -R option +xfsrestore: Restore Status: INCOMPLETE +Restoring cumumlative from file... +xfsrestore -R -f DUMP_FILE -r RESTORE_DIR +xfsrestore: using file dump (drive_simple) strategy +xfsrestore: resuming restore previously begun DATE +xfsrestore: examining media file 0 +xfsrestore: seeking past media file directory dump +xfsrestore: restoring non-directory files +xfsrestore: restore complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS +Comparing listing of dump directory with restore directory +Files TMP.dump_dir and TMP.restore_dir are identical +Comparing dump directory with restore directory +Files DUMP_DIR/big and RESTORE_DIR/DUMP_SUBDIR/big are identical +Files DUMP_DIR/large000 and RESTORE_DIR/DUMP_SUBDIR/large000 are identical +Files DUMP_DIR/large111 and RESTORE_DIR/DUMP_SUBDIR/large111 are identical +Files DUMP_DIR/large222 and RESTORE_DIR/DUMP_SUBDIR/large222 are identical +Files DUMP_DIR/small and RESTORE_DIR/DUMP_SUBDIR/small are identical +Files DUMP_DIR/sub/a and RESTORE_DIR/DUMP_SUBDIR/sub/a are identical +Files DUMP_DIR/sub/a00 and RESTORE_DIR/DUMP_SUBDIR/sub/a00 are identical +Files DUMP_DIR/sub/a000 and RESTORE_DIR/DUMP_SUBDIR/sub/a000 are identical +Files DUMP_DIR/sub/b and RESTORE_DIR/DUMP_SUBDIR/sub/b are identical +Files DUMP_DIR/sub/b00 and RESTORE_DIR/DUMP_SUBDIR/sub/b00 are identical +Files DUMP_DIR/sub/big and RESTORE_DIR/DUMP_SUBDIR/sub/big are identical +Files DUMP_DIR/sub/c and RESTORE_DIR/DUMP_SUBDIR/sub/c are identical +Files DUMP_DIR/sub/c00 and RESTORE_DIR/DUMP_SUBDIR/sub/c00 are identical +Files DUMP_DIR/sub/d and RESTORE_DIR/DUMP_SUBDIR/sub/d are identical +Files DUMP_DIR/sub/d00 and RESTORE_DIR/DUMP_SUBDIR/sub/d00 are identical +Files DUMP_DIR/sub/e and RESTORE_DIR/DUMP_SUBDIR/sub/e are identical +Files DUMP_DIR/sub/e00 and RESTORE_DIR/DUMP_SUBDIR/sub/e00 are identical +Files DUMP_DIR/sub/e000 and RESTORE_DIR/DUMP_SUBDIR/sub/e000 are identical +Files DUMP_DIR/sub/f and RESTORE_DIR/DUMP_SUBDIR/sub/f are identical +Files DUMP_DIR/sub/f00 and RESTORE_DIR/DUMP_SUBDIR/sub/f00 are identical +Files DUMP_DIR/sub/g and RESTORE_DIR/DUMP_SUBDIR/sub/g are identical +Files DUMP_DIR/sub/g00 and RESTORE_DIR/DUMP_SUBDIR/sub/g00 are identical +Files DUMP_DIR/sub/h and RESTORE_DIR/DUMP_SUBDIR/sub/h are identical +Files DUMP_DIR/sub/h00 and RESTORE_DIR/DUMP_SUBDIR/sub/h00 are identical +Files DUMP_DIR/sub/h000 and RESTORE_DIR/DUMP_SUBDIR/sub/h000 are identical +Files DUMP_DIR/sub/i and RESTORE_DIR/DUMP_SUBDIR/sub/i are identical +Files DUMP_DIR/sub/i00 and RESTORE_DIR/DUMP_SUBDIR/sub/i00 are identical +Files DUMP_DIR/sub/j and RESTORE_DIR/DUMP_SUBDIR/sub/j are identical +Files DUMP_DIR/sub/j00 and RESTORE_DIR/DUMP_SUBDIR/sub/j00 are identical +Files DUMP_DIR/sub/k and RESTORE_DIR/DUMP_SUBDIR/sub/k are identical +Files DUMP_DIR/sub/k00 and RESTORE_DIR/DUMP_SUBDIR/sub/k00 are identical +Files DUMP_DIR/sub/k000 and RESTORE_DIR/DUMP_SUBDIR/sub/k000 are identical +Files DUMP_DIR/sub/l and RESTORE_DIR/DUMP_SUBDIR/sub/l are identical +Files DUMP_DIR/sub/l00 and RESTORE_DIR/DUMP_SUBDIR/sub/l00 are identical +Files DUMP_DIR/sub/m and RESTORE_DIR/DUMP_SUBDIR/sub/m are identical +Files DUMP_DIR/sub/m00 and RESTORE_DIR/DUMP_SUBDIR/sub/m00 are identical +Files DUMP_DIR/sub/n and RESTORE_DIR/DUMP_SUBDIR/sub/n are identical +Files DUMP_DIR/sub/n00 and RESTORE_DIR/DUMP_SUBDIR/sub/n00 are identical +Files DUMP_DIR/sub/small and RESTORE_DIR/DUMP_SUBDIR/sub/small are identical +Only in SCRATCH_MNT: RESTORE_SUBDIR +Only in RESTORE_DIR: xfsrestorehousekeepingdir diff --git a/common.dump b/common.dump index 076517d..31a75c5 100644 --- a/common.dump +++ b/common.dump @@ -75,6 +75,14 @@ done have_mtvariable=false [ `uname` = "Linux" ] && have_mtvariable=true + +_require_multi_stream() +{ + $XFSDUMP_PROG -JF -f /dev/null -f /dev/null 2> /dev/null | + grep -q "too many -f arguments" && + _notrun "xfsdump multi-stream support required" +} + # # do a remote/local mt # @@ -536,6 +544,18 @@ _do_create_dumpdir_fill() cd $here } +_mk_fillconfig_multi() +{ + _mk_fillconfig1 + cat <>$tmp.config +# pathname size in bytes +# +large000 8874368 $nobody $nobody +large111 2582912 $nobody $nobody +large222 7825792 $nobody $nobody +End-of-File +} + _create_dumpdir_largefile() { _wipe_fs @@ -580,6 +600,17 @@ _create_dumpdir_fill_ea() _stable_fs } +# +# Create enough files, and a few large enough files, so that +# some files are likely to be split across streams. +# +_create_dumpdir_fill_multi() +{ + _wipe_fs + _mk_fillconfig_multi + _do_create_dumpdir_fill + _stable_fs +} # # Append a subset of the fill'ed files @@ -802,9 +833,11 @@ _dump_filter_main() -e 's/time:[ ].*/time: TIME/' \ -e 's/date:[ ].*/date: DATE/' \ -e 's/dump begun .*/dump begun DATE/' \ + -e 's/previously begun .*/previously begun DATE/' \ -e 's/[0-9][0-9]* seconds/SECS seconds/' \ -e 's/restore.[0-9][0-9]*/restore.PID/' \ - -e 's/ino [0-9][0-9]*/ino INO/' \ + -e 's/ino [0-9][0-9]*/ino INO/g' \ + -e '/stream [0-9]:/s/offset [0-9][0-9]*/offset NUM/g' \ -e '/: dump size/s/[0-9][0-9]*/NUM/' \ -e '/dump size:/s/[0-9][0-9]*/NUM/' \ -e '/dump size per stream:/s/[0-9][0-9]*/NUM/' \ @@ -862,7 +895,7 @@ _invutil_filter() _dir_filter() { sed \ - -e "s#$dump_file#DUMP_FILE#" \ + -e "s#$dump_file#DUMP_FILE#g" \ -e "s#$SCRATCH_DEV#SCRATCH_DEV#" \ -e "s#$SCRATCH_RAWDEV#SCRATCH_DEV#" \ -e "s#$dumptape#TAPE_DEV#" \ @@ -959,6 +992,9 @@ _parse_restore_args() --no-check-quota) do_quota_check=false ;; + -R) + restore_args="$restore_args $1" + ;; *) _fail "invalid argument to common.dump function: $1" ;; diff --git a/group b/group index 616cbdd..79b8c8c 100644 --- a/group +++ b/group @@ -169,8 +169,8 @@ deprecated 056 dump ioctl auto quick 057 acl auto 058 acl auto -059 dump ioctl -060 dump ioctl +059 dump ioctl auto quick +060 dump ioctl auto quick 061 dump ioctl auto quick 062 attr udf auto quick 063 dump attr auto quick -- 1.7.0.4 From wkendall@sgi.com Mon Nov 7 11:50:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7HoxdQ069543 for ; Mon, 7 Nov 2011 11:50:59 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id 64ADB8F8049; Mon, 7 Nov 2011 09:50:59 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 56F9970006E6; Mon, 7 Nov 2011 11:50:59 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id 1859A20DF332; Mon, 7 Nov 2011 11:50:58 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH] xfstests: fix permissions on non-executable tests Date: Mon, 7 Nov 2011 11:50:53 -0600 Message-Id: <1320688253-2432-1-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Tests that are not executable are made executable when they are run, causing git to report them as modified. Fix this by changing non-executable tests to have permissions of 0755. Signed-off-by: Bill Kendall --- 0 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 255 mode change 100644 => 100755 256 mode change 100644 => 100755 257 mode change 100644 => 100755 258 mode change 100644 => 100755 259 mode change 100644 => 100755 260 mode change 100644 => 100755 261 mode change 100644 => 100755 262 mode change 100644 => 100755 263 mode change 100644 => 100755 266 mode change 100644 => 100755 267 mode change 100644 => 100755 268 diff --git a/255 b/255 old mode 100644 new mode 100755 diff --git a/256 b/256 old mode 100644 new mode 100755 diff --git a/257 b/257 old mode 100644 new mode 100755 diff --git a/258 b/258 old mode 100644 new mode 100755 diff --git a/259 b/259 old mode 100644 new mode 100755 diff --git a/260 b/260 old mode 100644 new mode 100755 diff --git a/261 b/261 old mode 100644 new mode 100755 diff --git a/262 b/262 old mode 100644 new mode 100755 diff --git a/263 b/263 old mode 100644 new mode 100755 diff --git a/266 b/266 old mode 100644 new mode 100755 diff --git a/267 b/267 old mode 100644 new mode 100755 diff --git a/268 b/268 old mode 100644 new mode 100755 -- 1.7.0.4 From bpm@sgi.com Mon Nov 7 14:04:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7K4oDZ074446 for ; Mon, 7 Nov 2011 14:04:50 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id 73560304059; Mon, 7 Nov 2011 12:04:47 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 09AD5431F74; Mon, 7 Nov 2011 14:05:04 -0600 (CST) Date: Mon, 7 Nov 2011 14:05:03 -0600 From: Ben Myers To: Chandra Seetharaman Cc: xfs@oss.sgi.com Subject: Re: [RFC PATCH 0/4] Rearrange code to make the code more readable Message-ID: <20111107200503.GH20464@sgi.com> References: <20111027220523.2638.12351.sendpatchset@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111027220523.2638.12351.sendpatchset@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Chandra, On Thu, Oct 27, 2011 at 05:05:23PM -0500, Chandra Seetharaman wrote: > These are the split up patches from patch 1/5 that I posted today, as > suggested by Christoph. > > These define some new inline functions and macros, rearrange > the code for easier reading, simplification of code paths > and prepare for the changes to support pquota and gquota > simultaneously. All four of these patches look good to me. Reviewed-by: Ben Myers Regards, Ben From david@fromorbit.com Mon Nov 7 14:15:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7KFBmt074789 for ; Mon, 7 Nov 2011 14:15:11 -0600 X-ASG-Debug-ID: 1320696908-1a7801670000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1A10B22675C for ; Mon, 7 Nov 2011 12:15:08 -0800 (PST) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id qUtqJWoC9rGPYxxy for ; Mon, 07 Nov 2011 12:15:08 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAOY5uE55LIil/2dsb2JhbABDqXCBBoFyAQEEAScTHCMFCwgDDgouFCUDIROIArgmEog2YwSdEokP Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail05.adl6.internode.on.net with ESMTP; 08 Nov 2011 06:45:07 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RNVaz-0003pN-HY; Tue, 08 Nov 2011 07:15:05 +1100 Date: Tue, 8 Nov 2011 07:15:05 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_getbmap assert Subject: Re: xfs_getbmap assert Message-ID: <20111107201505.GE5534@dastard> References: <20111107103037.GA16213@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111107103037.GA16213@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1320696910 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79606 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 07, 2011 at 05:30:37AM -0500, Christoph Hellwig wrote: > With Dmitris fsstress updates I can hit the following assert fairly > regularly: > > [11904.943956] XFS: Assertion failed: ((iflags & BMV_IF_DELALLOC) != 0) || > (map[i].br_startblock != DELAYSTARTBLOCK), file: > /home/hch/work/linux-2.6/fs/xfs/xfs_bmap.c, line: 5604 > > which means we get an delalloc extent back from FIEMAP/GETBMAP despite > asking for a flush beforehand. While we hold the iolock over the call > and thus exclude new buffered writers from appearing that doesn't > prevent shared writeable mmaps from creating new delalloc extents. Possibly. However, we might actually be tripping over speculative delalloc regions beyond EOF - flushing will not convert those at all. There's already a comment earlier on like this: /* * even after flushing the inode, there can still be delalloc * blocks on the inode beyond EOF due to speculative * preallocation. These are not removed until the release * function is called or the inode is inactivated. Hence we * cannot assert here that ip->i_delayed_blks == 0. */ Can you see if that is the case that is being triggered? > I don't think this actually is a real issue, and a workaround would > be extremly hard. For now I've just remove the assert in my tree: Probably the right thing to do, anyway. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Nov 7 14:18:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7KIK0x074880 for ; Mon, 7 Nov 2011 14:18:20 -0600 X-ASG-Debug-ID: 1320697098-1a8301580000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C69BB2267A3 for ; Mon, 7 Nov 2011 12:18:18 -0800 (PST) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id QKCcB86YrBsmW1TW for ; Mon, 07 Nov 2011 12:18:18 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAOY5uE55LIil/2dsb2JhbABDqXCBBoFyAQEEATocIwULCAMYLhQlAyETiAK4JhKINmMEpiE Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail05.adl6.internode.on.net with ESMTP; 08 Nov 2011 06:48:17 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RNVe4-0003q6-TD; Tue, 08 Nov 2011 07:18:16 +1100 Date: Tue, 8 Nov 2011 07:18:16 +1100 From: Dave Chinner To: Alexander Naumann Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Crash with XFS Subject: Re: Crash with XFS Message-ID: <20111107201816.GF5534@dastard> References: <1320676611.3192.36.camel@AlfLaptop> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320676611.3192.36.camel@AlfLaptop> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1320697099 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0266 1.0000 -1.8487 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.85 X-Barracuda-Spam-Status: No, SCORE=-1.85 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79606 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 07, 2011 at 03:36:51PM +0100, Alexander Naumann wrote: > Hi! > > I would be glad if anybody can give me any hint on the following > subject. > I have a linux server running formatted with XFS. Afer a couple of days > (about 6 or 7) I get the following crash: > > > Nov 6 15:44:03 archive kernel: BUG: unable to handle kernel NULL > pointer dereference at 0000000000000044 > Nov 6 15:44:03 archive kernel: IP: [] > xfs_inode_ag_iterator+0x4a/0xce ..... > The system is a Dell R910 (Intek Xeon CPU E7530, 24 cores (with > hyperthreading). 32GB Ram, Raid Controller is Perc H700, SAS > discs, Raid 5 with 1.7TB, formatted with XFS. Kernel version > 2.6.34.7 is running (64bit kernel on a 32bit system, Debian ^^^^^^^^ Upgrade. There were problems in .34 to do with inode reclaim that were fixed in .35 and .36.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Nov 7 14:52:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7Kqums075883 for ; Mon, 7 Nov 2011 14:52:56 -0600 X-ASG-Debug-ID: 1320699173-5b1c00040000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AC6C81488C15 for ; Mon, 7 Nov 2011 12:52:53 -0800 (PST) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id Nt1iUohuRAJfvTyE for ; Mon, 07 Nov 2011 12:52:53 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAHBEuE55LIil/2dsb2JhbABEqXKBBoFyAQEFOhwjEAgDDgouFCUDIRPAQBKJGQSdEokP Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail05.adl6.internode.on.net with ESMTP; 08 Nov 2011 07:22:52 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RNWBW-0003yp-K9; Tue, 08 Nov 2011 07:52:50 +1100 Date: Tue, 8 Nov 2011 07:52:50 +1100 From: Dave Chinner To: Dmitry Monakhov Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu X-ASG-Orig-Subj: Re: [PATCH 1/9] xfstests: fsstress add command line style output for show_opts Subject: Re: [PATCH 1/9] xfstests: fsstress add command line style output for show_opts Message-ID: <20111107205250.GG5534@dastard> References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1320699175 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79609 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 03, 2011 at 09:55:45PM +0400, Dmitry Monakhov wrote: > Once some combination of seed+fs_ops result in regression it is > reasonable to document that combination. It is usefull to dump > that configuration in command line style. Later this line may be > simply hardcoded in to regression test. ..... > @@ -345,7 +345,10 @@ int main(int argc, char **argv) > zero_freq(); > break; > case 'S': > - show_ops(0, NULL); > + i = 0; > + if (optarg[0] == 'c') > + i = 1; > + show_ops(1, NULL); I don't think that does what it is supposed to do... Cheers, Dave. -- Dave Chinner david@fromorbit.com From wkendall@sgi.com Mon Nov 7 14:59:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7KxeOT076016 for ; Mon, 7 Nov 2011 14:59:40 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5BEA0304048 for ; Mon, 7 Nov 2011 12:59:40 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 48E0A70016E1 for ; Mon, 7 Nov 2011 14:59:40 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id 005F120E36FD; Mon, 7 Nov 2011 14:59:39 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Subject: [PATCH v2 0/8] xfsdump: enable support for multiple streams Date: Mon, 7 Nov 2011 14:58:23 -0600 Message-Id: <1320699511-12281-1-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Version 2 of this series changes only patch #3. POSIX semaphores are now used instead of rolling our own, as suggested by Christoph. We lose the ability to count the number of waiting threads, which was used in some asserts. There was adequate coverage in related asserts, so this was deemed acceptable. This series resurrects the IRIX multi-stream support for splitting a backup among several output files/tapes. This offers some nice performance improvements, particularly in xfsrestore where a single stream often cannot keep the filesystem/disks busy. I've observed a 1.7x improvement on a backup and a 5x improvement on restore. I have a couple of xfstests for this, and will submit those once a few outstanding xfsdump test patches have been reviewed. There's a bit more work to do: - Now that xfsdump has threads once again, the tape I/O ring buffer support can be enabled. This series leaves it disabled so that more testing can be done in that area. - Currently the stream split points are determined by doing an extra inode scan. This is unchanged from how it was done on IRIX. I'd like to change this so that enough info is kept from the initial inode scan to determine appropriate split points without an additional scan. - You may notice in the last patch of this series that a lot of "miniroot" references also look at whether or not the dump is to a pipe. Now that the "miniroot" checks are gone, it's possible to clean up the pipe-related code too. I've got a separate patch series for that which I'll submit later. From wkendall@sgi.com Mon Nov 7 14:59:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7Kxec1076025 for ; Mon, 7 Nov 2011 14:59:41 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id C4FB230406A; Mon, 7 Nov 2011 12:59:40 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 7D0DC70016E3; Mon, 7 Nov 2011 14:59:40 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id 432C120E36F7; Mon, 7 Nov 2011 14:59:39 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH v2 3/8] xfsdump: implement lock abstraction with pthreads Date: Mon, 7 Nov 2011 14:58:26 -0600 Message-Id: <1320699511-12281-4-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320699511-12281-1-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This patch implements xfsdump's locking abstraction using pthread locking primitives. The obsolete IRIX locking code has been removed. The POSIX semaphore implementation on Linux does not provide a count of threads waiting to decrement the semaphore, so qsemPblocked() has been removed. It was called from a few asserts, but the current count of the semaphore was also checked in adjacent asserts, so it was deemed acceptable to remove the qsemPblocked() asserts. A few debug-level log calls had to be changed to use the "no lock" flag to prevent locks from being acquired out of order. This is used in various debug messages throughout xfsdump. Signed-off-by: Bill Kendall --- Changes in v2: - Use POSIX semaphores (sem_t) instead of rolling our own with a pthread mutex and condition, as suggested by Christoph. common/main.c | 2 +- common/qlock.c | 355 +++++++++++------------------------------------------ common/qlock.h | 13 +-- common/ring.c | 4 - restore/content.c | 17 ++- 5 files changed, 88 insertions(+), 303 deletions(-) diff --git a/common/main.c b/common/main.c index 08be16e..be8a921 100644 --- a/common/main.c +++ b/common/main.c @@ -359,7 +359,7 @@ main( int argc, char *argv[] ) /* initialize the spinlock allocator */ - ok = qlock_init( miniroot ); + ok = qlock_init( ); if ( ! ok ) { return mlog_exit(EXIT_ERROR, RV_INIT); } diff --git a/common/qlock.c b/common/qlock.c index 6c9ee16..adaa7dd 100644 --- a/common/qlock.c +++ b/common/qlock.c @@ -19,6 +19,9 @@ #include #include +#include +#include + #include "types.h" #include "qlock.h" #include "mlog.h" @@ -27,24 +30,13 @@ struct qlock { ix_t ql_ord; /* ordinal position of this lock */ - pid_t ql_owner; - /* who owns this lock - */ -#ifdef HIDDEN - ulock_t ql_uslockh; - /* us lock handle - */ -#endif /* HIDDEN */ + pthread_mutex_t ql_mutex; }; typedef struct qlock qlock_t; /* internal qlock */ -#define QLOCK_SPINS 0x1000 - /* how many times to spin on lock before sleeping for it - */ - #define QLOCK_THRDCNTMAX 256 /* arbitrary limit on number of threads supported */ @@ -67,15 +59,13 @@ static ordmap_t qlock_ordalloced; */ struct thrddesc { - pid_t td_pid; + pthread_t td_tid; ordmap_t td_ordmap; }; typedef struct thrddesc thrddesc_t; -#ifdef HIDDEN static thrddesc_t qlock_thrddesc[ QLOCK_THRDCNTMAX ]; /* holds the ordmap for each thread */ -#endif #define QLOCK_ORDMAP_SET( ordmap, ord ) ( ordmap |= 1U << ord ) /* sets the ordinal bit in an ordmap @@ -93,21 +83,6 @@ static thrddesc_t qlock_thrddesc[ QLOCK_THRDCNTMAX ]; /* checks if any bits less than ord are set in the ordmap */ -#ifdef HIDDEN -static usptr_t *qlock_usp; -#else -static void *qlock_usp; -#endif /* HIDDEN */ - - /* pointer to shared arena from which locks are allocated - */ - -#ifdef HIDDEN -static char *qlock_arenaroot = "xfsrestoreqlockarena"; - /* shared arena file name root - */ -#endif - /* REFERENCED */ static bool_t qlock_inited = BOOL_FALSE; /* to sanity check initialization @@ -115,22 +90,13 @@ static bool_t qlock_inited = BOOL_FALSE; /* forward declarations */ -#ifdef HIDDEN -static void qlock_ordmap_add( pid_t pid ); -static ordmap_t *qlock_ordmapp_get( pid_t pid ); -static ix_t qlock_thrdix_get( pid_t pid ); -#endif +static void qlock_ordmap_add( pthread_t tid ); +static ordmap_t *qlock_ordmapp_get( pthread_t tid ); +static ix_t qlock_thrdix_get( pthread_t tid ); bool_t -qlock_init( bool_t miniroot ) +qlock_init( void ) { -#ifdef HIDDEN - char arenaname[ 100 ]; - /* REFERENCED */ - intgen_t nwritten; - intgen_t rval; -#endif - /* sanity checks */ ASSERT( ! qlock_inited ); @@ -143,44 +109,6 @@ qlock_init( bool_t miniroot ) */ qlock_ordalloced = 0; - /* if miniroot, fake it - */ - if ( miniroot ) { - qlock_inited = BOOL_TRUE; - qlock_usp = 0; - return BOOL_TRUE; - } -#ifdef HIDDEN - - /* generate the arena name - */ - nwritten = sprintf( arenaname, - "/tmp/%s.%d", - qlock_arenaroot, - get_pid() ); - ASSERT( nwritten > 0 ); - ASSERT( ( size_t )nwritten < sizeof( arenaname )); - - /* configure shared arenas to automatically unlink on last close - */ - rval = usconfig( CONF_ARENATYPE, ( u_intgen_t )US_SHAREDONLY ); - if ( rval ) { - mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_NOLOCK, - _("unable to configure shared arena for auto unlink: %s\n"), - strerror( errno )); - return BOOL_FALSE; - } - - /* allocate a shared arena for the locks - */ - qlock_usp = usinit( arenaname ); - if ( ! qlock_usp ) { - mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_NOLOCK, - _("unable to allocate shared arena for thread locks: %s\n"), - strerror( errno )); - return BOOL_FALSE; - } - /* now say we are initialized */ qlock_inited = BOOL_TRUE; @@ -191,7 +119,6 @@ qlock_init( bool_t miniroot ) qlock_inited = BOOL_FALSE; return BOOL_FALSE; } -#endif /* HIDDEN */ return BOOL_TRUE; } @@ -199,28 +126,13 @@ qlock_init( bool_t miniroot ) bool_t qlock_thrdinit( void ) { -#ifdef HIDDEN - intgen_t rval; - /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - - /* add thread to shared arena - */ - rval = usadd( qlock_usp ); - if ( rval ) { - mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_NOLOCK, - _("unable to add thread to shared arena: %s\n"), - strerror( errno )); - return BOOL_FALSE; - } /* add thread to ordmap list */ - qlock_ordmap_add( get_pid() ); -#endif /* HIDDEN */ + qlock_ordmap_add( pthread_self() ); return BOOL_TRUE; } @@ -244,14 +156,9 @@ qlock_alloc( ix_t ord ) qlockp = ( qlock_t * )calloc( 1, sizeof( qlock_t )); ASSERT( qlockp ); -#ifdef HIDDEN - /* allocate a us lock: bypass if miniroot + /* initialize the mutex */ - if ( qlock_usp ) { - qlockp->ql_uslockh = usnewlock( qlock_usp ); - ASSERT( qlockp->ql_uslockh ); - } -#endif /* HIDDEN */ + pthread_mutex_init( &qlockp->ql_mutex, NULL ); /* assign the ordinal position */ @@ -263,44 +170,34 @@ qlock_alloc( ix_t ord ) void qlock_lock( qlockh_t qlockh ) { -#ifdef HIDDEN qlock_t *qlockp = ( qlock_t * )qlockh; - pid_t pid; + pthread_t tid; ix_t thrdix; ordmap_t *ordmapp; /* REFERENCED */ - bool_t lockacquired; -#endif + intgen_t rval; /* sanity checks */ ASSERT( qlock_inited ); - /* bypass if miniroot - */ - if ( ! qlock_usp ) { - return; - } - -#ifdef HIDDEN - - /* get the caller's pid and thread index + /* get the caller's tid and thread index */ - pid = get_pid(); + tid = pthread_self(); - thrdix = qlock_thrdix_get( pid ); + thrdix = qlock_thrdix_get( tid ); /* get the ordmap for this thread */ - ordmapp = qlock_ordmapp_get( pid ); + ordmapp = qlock_ordmapp_get( tid ); - /* assert that this lock not already held + /* assert that this lock not already held by this thread */ if ( QLOCK_ORDMAP_GET( *ordmapp, qlockp->ql_ord )) { mlog( MLOG_NORMAL | MLOG_WARNING | MLOG_NOLOCK, - _("lock already held: thrd %d pid %d ord %d map %x\n"), + _("lock already held: thrd %d tid %lu ord %d map %x\n"), thrdix, - pid, + tid, qlockp->ql_ord, *ordmapp ); } @@ -310,278 +207,176 @@ qlock_lock( qlockh_t qlockh ) */ if ( QLOCK_ORDMAP_CHK( *ordmapp, qlockp->ql_ord )) { mlog( MLOG_NORMAL | MLOG_WARNING | MLOG_NOLOCK, - _("lock ordinal violation: thrd %d pid %d ord %d map %x\n"), + _("lock ordinal violation: thrd %d tid %lu ord %d map %x\n"), thrdix, - pid, + tid, qlockp->ql_ord, *ordmapp ); } ASSERT( ! QLOCK_ORDMAP_CHK( *ordmapp, qlockp->ql_ord )); - /* acquire the us lock + /* acquire the lock */ - lockacquired = uswsetlock( qlockp->ql_uslockh, QLOCK_SPINS ); - ASSERT( lockacquired ); - - /* verify lock is not already held - */ - ASSERT( ! qlockp->ql_owner ); + rval = pthread_mutex_lock( &qlockp->ql_mutex ); + ASSERT( !rval ); /* add ordinal to this threads ordmap */ QLOCK_ORDMAP_SET( *ordmapp, qlockp->ql_ord ); - - /* indicate the lock's owner - */ - qlockp->ql_owner = pid; -#endif /* HIDDEN */ } void qlock_unlock( qlockh_t qlockh ) { -#ifdef HIDDEN qlock_t *qlockp = ( qlock_t * )qlockh; - pid_t pid; ordmap_t *ordmapp; /* REFERENCED */ intgen_t rval; -#endif /* sanity checks */ ASSERT( qlock_inited ); - /* bypass if miniroot - */ - if ( ! qlock_usp ) { - return; - } - -#ifdef HIDDEN - /* get the caller's pid - */ - pid = get_pid(); - /* get the ordmap for this thread */ - ordmapp = qlock_ordmapp_get( pid ); + ordmapp = qlock_ordmapp_get( pthread_self() ); /* verify lock is held by this thread */ ASSERT( QLOCK_ORDMAP_GET( *ordmapp, qlockp->ql_ord )); - ASSERT( qlockp->ql_owner == pid ); - - /* clear lock owner - */ - qlockp->ql_owner = 0; /* clear lock's ord from thread's ord map */ QLOCK_ORDMAP_CLR( *ordmapp, qlockp->ql_ord ); - /* release the us lock + /* release the lock */ - rval = usunsetlock( qlockp->ql_uslockh ); + rval = pthread_mutex_unlock( &qlockp->ql_mutex ); ASSERT( ! rval ); -#endif /* HIDDEN */ } qsemh_t qsem_alloc( ix_t cnt ) { -#ifdef HIDDEN - usema_t *usemap; + sem_t *semp; + intgen_t rval; /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - /* allocate a us semaphore + /* allocate a semaphore */ - usemap = usnewsema( qlock_usp, ( intgen_t )cnt ); - ASSERT( usemap ); + semp = ( sem_t * )calloc( 1, sizeof( sem_t )); + ASSERT( semp ); - return ( qsemh_t )usemap; -#else - return 0; -#endif /* HIDDEN */ + /* initialize the semaphore + */ + rval = sem_init( semp, 0, cnt ); + ASSERT( !rval ); + + return ( qsemh_t )semp; } void qsem_free( qsemh_t qsemh ) { -#ifdef HIDDEN - usema_t *usemap = ( usema_t * )qsemh; + sem_t *semp = ( sem_t * )qsemh; + intgen_t rval; /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - /* free the us semaphore + /* destroy the mutex and condition + */ + rval = sem_destroy( semp ); + ASSERT( !rval ); + + /* free the semaphore */ - usfreesema( usemap, qlock_usp ); -#endif /* HIDDEN */ + free( semp ); } void qsemP( qsemh_t qsemh ) { -#ifdef HIDDEN - usema_t *usemap = ( usema_t * )qsemh; + sem_t *semp = ( sem_t * )qsemh; intgen_t rval; /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); /* "P" the semaphore */ - rval = uspsema( usemap ); - if ( rval != 1 ) { - mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_NOLOCK, - _("unable to \"P\" semaphore: " - "rval == %d, errno == %d (%s)\n"), - rval, - errno, - strerror( errno )); - } - ASSERT( rval == 1 ); -#endif /* HIDDEN */ + rval = sem_wait( semp ); + ASSERT( !rval ); } void qsemV( qsemh_t qsemh ) { -#ifdef HIDDEN - usema_t *usemap = ( usema_t * )qsemh; + sem_t *semp = ( sem_t * )qsemh; intgen_t rval; /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); /* "V" the semaphore */ - rval = usvsema( usemap ); - if ( rval != 0 ) { - mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_NOLOCK, - _("unable to \"V\" semaphore: " - "rval == %d, errno == %d (%s)\n"), - rval, - errno, - strerror( errno )); - } - ASSERT( rval == 0 ); -#endif /* HIDDEN */ + rval = sem_post( semp ); + ASSERT( !rval ); } bool_t qsemPwouldblock( qsemh_t qsemh ) { -#ifdef HIDDEN - usema_t *usemap = ( usema_t * )qsemh; + sem_t *semp = ( sem_t * )qsemh; + int count; intgen_t rval; - + /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - /* check the semaphore - */ - rval = ustestsema( usemap ); + rval = sem_getvalue( semp, &count ); + ASSERT( !rval ); - /* if equal to zero, no tokens left. if less than zero, other thread(s) - * currently waiting. - */ - if ( rval <= 0 ) { - return BOOL_TRUE; - } else { - return BOOL_FALSE; - } -#else -return BOOL_FALSE; -#endif /* HIDDEN */ + return count <= 0 ? BOOL_TRUE : BOOL_FALSE; } size_t qsemPavail( qsemh_t qsemh ) { -#ifdef HIDDEN - usema_t *usemap = ( usema_t * )qsemh; + sem_t *semp = ( sem_t * )qsemh; + int count; intgen_t rval; - - /* sanity checks - */ - ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - - /* check the semaphore - */ - rval = ustestsema( usemap ); - - /* if greater or equal to zero, no one is blocked and that is the number - * of resources available. if less than zero, absolute value is the - * number of blocked threads. - */ - if ( rval < 0 ) { - return 0; - } else { - return ( size_t )rval; - } -#else -return 0; -#endif /* HIDDEN */ -} -size_t -qsemPblocked( qsemh_t qsemh ) -{ -#ifdef HIDDEN - usema_t *usemap = ( usema_t * )qsemh; - intgen_t rval; - /* sanity checks */ ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - /* check the semaphore - */ - rval = ustestsema( usemap ); + rval = sem_getvalue( semp, &count ); + ASSERT( !rval ); - /* if greater or equal to zero, no one is blocked. if less than zero, - * absolute value is the number of blocked threads. - */ - if ( rval < 0 ) { - return ( size_t )( 0 - rval ); - } else { - return 0; - } -#else -return 0; -#endif /* HIDDEN */ + return count < 0 ? 0 : count; } /* internal ordinal map abstraction */ -#ifdef HIDDEN static void -qlock_ordmap_add( pid_t pid ) +qlock_ordmap_add( pthread_t tid ) { ASSERT( qlock_thrdcnt < QLOCK_THRDCNTMAX ); - qlock_thrddesc[ qlock_thrdcnt ].td_pid = pid; + qlock_thrddesc[ qlock_thrdcnt ].td_tid = tid; qlock_thrddesc[ qlock_thrdcnt ].td_ordmap = 0; qlock_thrdcnt++; } static thrddesc_t * -qlock_thrddesc_get( pid_t pid ) +qlock_thrddesc_get( pthread_t tid ) { thrddesc_t *p; thrddesc_t *endp; @@ -592,29 +387,27 @@ qlock_thrddesc_get( pid_t pid ) p < endp ; p++ ) { - if ( p->td_pid == pid ) { + if ( pthread_equal( p->td_tid, tid ) ) { return p; } } - ASSERT( 0 ); return 0; } static ordmap_t * -qlock_ordmapp_get( pid_t pid ) +qlock_ordmapp_get( pthread_t tid ) { thrddesc_t *p; - p = qlock_thrddesc_get( pid ); + p = qlock_thrddesc_get( tid ); return &p->td_ordmap; } static ix_t -qlock_thrdix_get( pid_t pid ) +qlock_thrdix_get( pthread_t tid ) { thrddesc_t *p; - p = qlock_thrddesc_get( pid ); + p = qlock_thrddesc_get( tid ); ASSERT( p >= &qlock_thrddesc[ 0 ] ); return ( ix_t )( p - &qlock_thrddesc[ 0 ] ); } -#endif diff --git a/common/qlock.h b/common/qlock.h index 1880aff..ae411bb 100644 --- a/common/qlock.h +++ b/common/qlock.h @@ -21,19 +21,13 @@ /* qlock - quick locks abstraction * * threads may allocate quick locks using qlock_alloc, and free them with - * qlock_free. the abstraction is initialized with qlock_init. the underlying - * mechanism is the IRIX us lock primitive. in order to use this, a temporary - * shared arena is created in /tmp. this will be automatically unlinked - * when the last thread exits. + * qlock_free. the abstraction is initialized with qlock_init. * * deadlock detection is accomplished by giving an ordinal number to each * lock allocated, and record all locks held by each thread. locks may not * be acquired out of order. that is, subsequently acquired locks must have * a lower ordinal than all locks currently held. for convenience, the ordinals * of all locks to be allocated will be defined in this file. - * - * ADDITION: added counting semaphores. simpler to do here since same - * shared arena can be used. */ #define QLOCK_ORD_CRIT 0 @@ -54,7 +48,7 @@ typedef void *qlockh_t; /* opaque handle */ -extern bool_t qlock_init( bool_t miniroot ); +extern bool_t qlock_init( void ); /* called by main to initialize abstraction. returns FALSE if * utility should abort. */ @@ -98,8 +92,5 @@ extern bool_t qsemPwouldblock( qsemh_t qsemh ); extern size_t qsemPavail( qsemh_t qsemh ); /* number of resources available */ -extern size_t qsemPblocked( qsemh_t qsemh ); - /* number of threads currently blocked on this semaphore - */ #endif /* QLOCK_H */ diff --git a/common/ring.c b/common/ring.c index e1dddba..b6074d1 100644 --- a/common/ring.c +++ b/common/ring.c @@ -258,9 +258,7 @@ ring_reset( ring_t *ringp, ring_msg_t *msgp ) /* re-initialize the ring */ ASSERT( qsemPavail( ringp->r_ready_qsemh ) == 0 ); - ASSERT( qsemPblocked( ringp->r_ready_qsemh ) == 0 ); ASSERT( qsemPavail( ringp->r_active_qsemh ) == 0 ); - ASSERT( qsemPblocked( ringp->r_active_qsemh ) <= 1 ); ringp->r_ready_in_ix = 0; ringp->r_ready_out_ix = 0; ringp->r_active_in_ix = 0; @@ -277,9 +275,7 @@ ring_reset( ring_t *ringp, ring_msg_t *msgp ) qsemV( ringp->r_ready_qsemh ); } ASSERT( qsemPavail( ringp->r_ready_qsemh ) == ringp->r_len ); - ASSERT( qsemPblocked( ringp->r_ready_qsemh ) == 0 ); ASSERT( qsemPavail( ringp->r_active_qsemh ) == 0 ); - ASSERT( qsemPblocked( ringp->r_active_qsemh ) <= 1 ); } void diff --git a/restore/content.c b/restore/content.c index 2228a7f..8dfa456 100644 --- a/restore/content.c +++ b/restore/content.c @@ -8911,7 +8911,8 @@ partial_reg( ix_t d_index, /* If not found, find a free one, fill it in and return */ if ( ! isptr ) { - mlog(MLOG_NITTY, "partial_reg: no entry found for %llu\n", ino); + mlog(MLOG_NITTY | MLOG_NOLOCK, + "partial_reg: no entry found for %llu\n", ino); /* find a free one */ for (i=0; i < partialmax; i++ ) { if (persp->a.parrest[i].is_ino == 0) { @@ -8950,8 +8951,10 @@ found: /* no existing entry for this drive, fill in the values */ bsptr->offset = offset; bsptr->endoffset = endoffset; - mlog(MLOG_NITTY, "partial_reg: update entry [%d]: " - "\n", d_index, offset, endoffset); + mlog(MLOG_NITTY | MLOG_NOLOCK, + "partial_reg: update entry [%d]: " + "\n", + d_index, offset, endoffset); } else { bool_t ret; @@ -8960,9 +8963,11 @@ found: */ bsptr->endoffset = endoffset; ret = partial_check2(isptr, fsize); - mlog(MLOG_NITTY, "partial_reg: extend entry [%d]: " - "\n", d_index, endoffset); - mlog(MLOG_NITTY, "partial_reg: partial_check returns: %d\n", ret); + mlog(MLOG_NITTY | MLOG_NOLOCK, + "partial_reg: extend entry [%d]: \n", + d_index, endoffset); + mlog(MLOG_NITTY | MLOG_NOLOCK, + "partial_reg: partial_check returns: %d\n", ret); } pi_unlock(); -- 1.7.0.4 From wkendall@sgi.com Mon Nov 7 14:59:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7Kxfni076029 for ; Mon, 7 Nov 2011 14:59:41 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id EE0E8304048; Mon, 7 Nov 2011 12:59:40 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id B290870016E8; Mon, 7 Nov 2011 14:59:40 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id 7060720E3700; Mon, 7 Nov 2011 14:59:40 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH v2 8/8] xfsdump: enable multiple streams Date: Mon, 7 Nov 2011 14:58:31 -0600 Message-Id: <1320699511-12281-9-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320699511-12281-1-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean IRIX contained an environment referred to as "miniroot" where sproc threads were either not available, or at least not used in xfsdump. Throughout xfsdump there's a "miniroot" variable which indicates whether or not thread support is enabled. On Linux this variable has always been false in order to disable support for multiple streams. Now that the threading infracstructure has been converted over to pthreads, this patch removes the "miniroot" variable and enables the option of using multiple streams. Note that another feature in xfsdump, using a ring buffer for I/O to tapes, also depends on thread support. I'm leaving that disabled for now until more testing has been done. Signed-off-by: Bill Kendall Reviewed-by: Christoph Hellwig --- common/drive.c | 20 +------ common/drive.h | 8 +-- common/drive_minrmt.c | 15 +++--- common/drive_scsitape.c | 15 +++--- common/drive_simple.c | 8 ++-- common/main.c | 124 +++++----------------------------------------- dump/content.c | 35 ++++++------- dump/getopt.h | 4 +- man/man8/xfsdump.8 | 8 +-- man/man8/xfsrestore.8 | 4 +- restore/content.c | 23 ++++----- restore/getopt.h | 4 +- 12 files changed, 74 insertions(+), 194 deletions(-) diff --git a/common/drive.c b/common/drive.c index 227fecd..32a7191 100644 --- a/common/drive.c +++ b/common/drive.c @@ -81,7 +81,7 @@ static drive_strategy_t *strategypp[] = { * specified on the command line. */ bool_t -drive_init1( int argc, char *argv[ ], bool_t singlethreaded ) +drive_init1( int argc, char *argv[ ] ) { intgen_t c; ix_t driveix; @@ -103,18 +103,6 @@ drive_init1( int argc, char *argv[ ], bool_t singlethreaded ) } } - /* validate drive count - */ - if ( singlethreaded && drivecnt > 1 ) { - mlog( MLOG_NORMAL, _( - "too many -%c arguments: " - "maximum is %d when running in miniroot\n"), - GETOPT_DUMPDEST, - 1 ); - usage( ); - return BOOL_FALSE; - } - /* allocate an array to hold ptrs to drive descriptors */ if (drivecnt > 0) { @@ -221,8 +209,7 @@ drive_init1( int argc, char *argv[ ], bool_t singlethreaded ) intgen_t score; score = ( * sp->ds_match )( argc, argv, - drivep, - singlethreaded ); + drivep ); if ( ! bestsp || score > bestscore ) { bestsp = sp; bestscore = score; @@ -237,8 +224,7 @@ drive_init1( int argc, char *argv[ ], bool_t singlethreaded ) bestsp->ds_description ); ok = ( * bestsp->ds_instantiate )( argc, argv, - drivep, - singlethreaded ); + drivep ); if ( ! ok ) { return BOOL_FALSE; } diff --git a/common/drive.h b/common/drive.h index 4dc4270..f693976 100644 --- a/common/drive.h +++ b/common/drive.h @@ -140,15 +140,13 @@ struct drive_strategy { */ intgen_t ( * ds_match )( intgen_t argc, char *argv[ ], - struct drive *drivep, - bool_t singlethreaded ); + struct drive *drivep ); /* returns degree of match. drivep has been pre-allocated * and initialized with generic info. */ bool_t ( * ds_instantiate )( intgen_t argc, char *argv[ ], - struct drive *drivep, - bool_t singlethreaded ); + struct drive *drivep ); /* creates a drive manager instance, by filling in the * blanks of the pre-allocated drive descriptor * returns FALSE on failure. @@ -648,7 +646,7 @@ extern size_t partialmax; * * Returns FALSE if utility should be aborted. */ -extern bool_t drive_init1( int argc, char *argv[], bool_t singlethreaded ); +extern bool_t drive_init1( int argc, char *argv[] ); /* drive_init2 - allocate and initialize read and write hdr buffers, diff --git a/common/drive_minrmt.c b/common/drive_minrmt.c index 3ff4d0f..5f5f96c 100644 --- a/common/drive_minrmt.c +++ b/common/drive_minrmt.c @@ -257,8 +257,8 @@ extern int rmtwrite( int, const void *, uint); /* strategy functions */ -static intgen_t ds_match( int, char *[], drive_t *, bool_t ); -static intgen_t ds_instantiate( int, char *[], drive_t *, bool_t ); +static intgen_t ds_match( int, char *[], drive_t * ); +static intgen_t ds_instantiate( int, char *[], drive_t * ); /* manager operations */ @@ -404,7 +404,7 @@ static u_int32_t cmdlineblksize = 0; */ /* ARGSUSED */ static intgen_t -ds_match( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) +ds_match( int argc, char *argv[], drive_t *drivep ) { intgen_t fd; intgen_t c; @@ -464,7 +464,7 @@ ds_match( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) */ /*ARGSUSED*/ static bool_t -ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) +ds_instantiate( int argc, char *argv[], drive_t *drivep ) { drive_context_t *contextp; intgen_t c; @@ -487,9 +487,10 @@ ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) ASSERT( contextp ); memset( ( void * )contextp, 0, sizeof( *contextp )); - /* transfer indication of singlethreadedness to context + /* do not enable a separate I/O thread, + * more testing to be done first... */ - contextp->dc_singlethreadedpr = singlethreaded; + contextp->dc_singlethreadedpr = BOOL_TRUE; /* scan the command line for the I/O buffer ring length * and record checksum request @@ -580,7 +581,7 @@ ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) /* if threads not allowed, allocate a record buffer. otherwise * create a ring, from which buffers will be taken. */ - if ( singlethreaded ) { + if ( contextp->dc_singlethreadedpr ) { contextp->dc_bufp = ( char * )memalign( PGSZ, STAPE_MAX_RECSZ ); ASSERT( contextp->dc_bufp ); } else { diff --git a/common/drive_scsitape.c b/common/drive_scsitape.c index f24d604..71b809f 100644 --- a/common/drive_scsitape.c +++ b/common/drive_scsitape.c @@ -299,8 +299,8 @@ extern int rmtwrite( int, const void *, uint); /* strategy functions */ -static intgen_t ds_match( int, char *[], drive_t *, bool_t ); -static intgen_t ds_instantiate( int, char *[], drive_t *, bool_t ); +static intgen_t ds_match( int, char *[], drive_t * ); +static intgen_t ds_instantiate( int, char *[], drive_t * ); /* manager operations */ @@ -506,7 +506,7 @@ is_scsi_driver(char *pathname) */ /* ARGSUSED */ static intgen_t -ds_match( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) +ds_match( int argc, char *argv[], drive_t *drivep ) { struct mtget mt_stat; intgen_t fd; @@ -544,7 +544,7 @@ ds_match( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) */ /*ARGSUSED*/ static bool_t -ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) +ds_instantiate( int argc, char *argv[], drive_t *drivep ) { drive_context_t *contextp; intgen_t c; @@ -567,9 +567,10 @@ ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) ASSERT( contextp ); memset( ( void * )contextp, 0, sizeof( *contextp )); - /* transfer indication of singlethreadedness to context + /* do not enable a separate I/O thread, + * more testing to be done first... */ - contextp->dc_singlethreadedpr = singlethreaded; + contextp->dc_singlethreadedpr = BOOL_TRUE; /* scan the command line for the I/O buffer ring length * and record checksum request @@ -670,7 +671,7 @@ ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) /* if threads not allowed, allocate a record buffer. otherwise * create a ring, from which buffers will be taken. */ - if ( singlethreaded ) { + if ( contextp->dc_singlethreadedpr ) { contextp->dc_bufp = ( char * )memalign( PGSZ, STAPE_MAX_RECSZ ); ASSERT( contextp->dc_bufp ); } else { diff --git a/common/drive_simple.c b/common/drive_simple.c index cb88aa8..086d162 100644 --- a/common/drive_simple.c +++ b/common/drive_simple.c @@ -98,8 +98,8 @@ extern size_t pgsz; /* strategy functions */ -static intgen_t ds_match( int, char *[], drive_t *, bool_t ); -static intgen_t ds_instantiate( int, char *[], drive_t *, bool_t ); +static intgen_t ds_match( int, char *[], drive_t * ); +static intgen_t ds_instantiate( int, char *[], drive_t * ); /* declare manager operators */ @@ -178,7 +178,7 @@ static drive_ops_t drive_ops = { */ /* ARGSUSED */ static intgen_t -ds_match( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) +ds_match( int argc, char *argv[], drive_t *drivep ) { bool_t isrmtpr; struct stat64 statbuf; @@ -221,7 +221,7 @@ ds_match( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) */ /*ARGSUSED*/ static bool_t -ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) +ds_instantiate( int argc, char *argv[], drive_t *drivep ) { drive_context_t *contextp; diff --git a/common/main.c b/common/main.c index 38b3889..5880723 100644 --- a/common/main.c +++ b/common/main.c @@ -87,10 +87,6 @@ bool_t preemptchk( int ); static bool_t loadoptfile( int *argcp, char ***argvp ); static char * stripquotes( char *p ); static void shiftleftby1( char *p, char *endp ); -static bool_t in_miniroot_heuristic( void ); -#ifdef HIDDEN -static void mrh_sighandler( int ); -#endif static void sighandler( int ); static int childmain( void * ); static bool_t sigint_dialog( void ); @@ -111,11 +107,6 @@ intgen_t version = 3; intgen_t subversion = 0; char *progname = 0; /* used in all error output */ char *homedir = 0; /* directory invoked from */ -#ifdef HIDDEN -bool_t miniroot = BOOL_FALSE; -#else -bool_t miniroot = BOOL_TRUE; -#endif /* HIDDEN */ bool_t pipeline = BOOL_FALSE; bool_t stdoutpiped = BOOL_FALSE; pthread_t parenttid; @@ -215,16 +206,11 @@ main( int argc, char *argv[] ) if ( ! ok ) { return mlog_exit(EXIT_ERROR, RV_INIT); } - /* scan the command line for the miniroot, info, progress + /* scan the command line for the info, progress * report options, and stacksz. */ minstacksz = MINSTACKSZ; maxstacksz = MAXSTACKSZ; -#ifdef HIDDEN - miniroot = BOOL_FALSE; -#else - miniroot = BOOL_TRUE; -#endif /* HIDDEN */ infoonly = BOOL_FALSE; progrpt_enabledpr = BOOL_FALSE; optind = 1; @@ -275,9 +261,6 @@ main( int argc, char *argv[] ) } maxstacksz = tmpstacksz; break; - case GETOPT_MINIROOT: - miniroot = BOOL_TRUE; - break; case GETOPT_HELP: infoonly = BOOL_TRUE; mlog_exit_hint(RV_USAGE); @@ -349,13 +332,6 @@ main( int argc, char *argv[] ) return mlog_exit(EXIT_ERROR, RV_INIT); } - /* perform an experiment to determine if we are in the miniroot. - * various features will be disallowed if in miniroot. - */ - if ( ! miniroot && in_miniroot_heuristic( )) { - miniroot = BOOL_TRUE; - } - /* initialize message logging (stage 2) - allocate the message lock */ ok = mlog_init2( ); @@ -473,7 +449,7 @@ main( int argc, char *argv[] ) * terribly time-consuming here. A second initialization pass * will be done shortly. */ - ok = drive_init1( argc, argv, miniroot ); + ok = drive_init1( argc, argv ); if ( ! ok ) { return mlog_exit(EXIT_ERROR, RV_INIT); } @@ -503,11 +479,7 @@ main( int argc, char *argv[] ) VERSION, version, subversion ); - if ( miniroot ) { - mlog( MLOG_VERBOSE | MLOG_BARE, _( - " - " - "Running single-threaded\n") ); - } else if ( ! pipeline && ! stdoutpiped && sistr && dlog_allowed( )) { + if ( ! pipeline && ! stdoutpiped && sistr && dlog_allowed( )) { mlog( MLOG_VERBOSE | MLOG_BARE, _( " - " "type %s for status and control\n"), @@ -531,11 +503,10 @@ main( int argc, char *argv[] ) */ mlog_tell_streamcnt( drivecnt ); - /* initialize the state of signal processing. if miniroot or - * pipeline, just want to exit when a signal is received. otherwise, - * hold signals so they don't interfere with sys calls; they will - * be released at pre-emption points and upon pausing in the main - * loop. + /* initialize the state of signal processing. if in a pipeline, just + * want to exit when a signal is received. otherwise, hold signals so + * they don't interfere with sys calls; they will be released at + * pre-emption points and upon pausing in the main loop. */ sigfillset(&sa.sa_mask); @@ -551,7 +522,7 @@ main( int argc, char *argv[] ) sigaction( SIGPIPE, &sa, NULL ); sigaction( SIGCHLD, &sa, NULL ); - if ( ! miniroot && ! pipeline ) { + if ( ! pipeline ) { sigset_t blocked_set; stop_in_progress = BOOL_FALSE; @@ -594,10 +565,9 @@ main( int argc, char *argv[] ) return mlog_exit(EXIT_ERROR, RV_INIT); } - /* if miniroot or a pipeline, go single-threaded - * with just one stream. + /* if in a pipeline, go single-threaded with just one stream. */ - if ( miniroot || pipeline ) { + if ( pipeline ) { intgen_t exitcode; sa.sa_handler = sighandler; @@ -977,9 +947,6 @@ usage( void ) ULO(_("(show verbosity in messages)"), GETOPT_SHOWLOGLEVEL ); #endif /* REVEAL */ ULO(_(""), GETOPT_RINGLEN ); -#ifdef REVEAL - ULO(_("(miniroot restrictions)"), GETOPT_MINIROOT ); -#endif /* REVEAL */ ULN(_("- (stdout)") ); ULN(_("") ); #endif /* DUMP */ @@ -1030,9 +997,6 @@ usage( void ) #endif /* REVEAL */ ULO(_(" ..."), GETOPT_NOSUBTREE ); ULO(_(""), GETOPT_RINGLEN ); -#ifdef REVEAL - ULO(_("(miniroot restrictions)"), GETOPT_MINIROOT ); -#endif /* REVEAL */ ULN(_("- (stdin)") ); ULN(_("") ); #endif /* RESTORE */ @@ -1081,9 +1045,9 @@ preemptchk( int flg ) return BOOL_FALSE; } - /* signals not caught in these cases + /* signals not caught if in a pipeline */ - if ( miniroot || pipeline ) { + if ( pipeline ) { return BOOL_FALSE; } @@ -1400,66 +1364,6 @@ loadoptfile( intgen_t *argcp, char ***argvp ) return BOOL_TRUE; } -#ifdef HIDDEN -static pid_t mrh_cid; -#endif - -static bool_t -in_miniroot_heuristic( void ) -{ - return BOOL_TRUE; - -#ifdef HIDDEN - SIG_PF prev_handler_hup; - SIG_PF prev_handler_term; - SIG_PF prev_handler_int; - SIG_PF prev_handler_quit; - SIG_PF prev_handler_cld; - bool_t in_miniroot; - - /* attempt to call sproc. - */ - prev_handler_hup = sigset( SIGHUP, SIG_IGN ); - prev_handler_term = sigset( SIGTERM, SIG_IGN ); - prev_handler_int = sigset( SIGINT, SIG_IGN ); - prev_handler_quit = sigset( SIGQUIT, SIG_IGN ); - prev_handler_cld = sigset( SIGCLD, mrh_sighandler ); - ( void )sighold( SIGCLD ); - mrh_cid = ( pid_t )sproc( ( void ( * )( void * ))exit, PR_SALL, 0 ); - if ( mrh_cid < 0 ) { - in_miniroot = BOOL_TRUE; - } else { - while ( mrh_cid >= 0 ) { - ( void )sigpause( SIGCLD ); - } - in_miniroot = BOOL_FALSE; - } - ( void )sigset( SIGHUP, prev_handler_hup ); - ( void )sigset( SIGTERM, prev_handler_term ); - ( void )sigset( SIGINT, prev_handler_int ); - ( void )sigset( SIGQUIT, prev_handler_quit ); - ( void )sigset( SIGCLD, prev_handler_cld ); - - return in_miniroot; -#endif /* HIDDEN */ -} - -#ifdef HIDDEN -static void -mrh_sighandler( int signo ) -{ - if ( signo == SIGCLD ) { - pid_t cid; - intgen_t stat; - - cid = wait( &stat ); - if ( cid == mrh_cid ) { - mrh_cid = -1; - } - } -} -#endif - /* parent and children share this handler. */ static void @@ -1470,9 +1374,9 @@ sighandler( int signo ) if ( dlog_sighandler( signo ) ) return; - /* if in miniroot, don't do anything risky. just quit. + /* if in pipeline, don't do anything risky. just quit. */ - if ( miniroot || pipeline ) { + if ( pipeline ) { intgen_t rval; mlog( MLOG_TRACE | MLOG_NOTE | MLOG_NOLOCK | MLOG_PROC, diff --git a/dump/content.c b/dump/content.c index 33f1166..3a7f508 100644 --- a/dump/content.c +++ b/dump/content.c @@ -244,7 +244,6 @@ typedef struct pds pds_t; extern void usage( void ); extern bool_t preemptchk( int ); extern char *homedir; -extern bool_t miniroot; extern bool_t pipeline; extern bool_t stdoutpiped; extern char *sistr; @@ -2352,7 +2351,7 @@ content_stream_dump( ix_t strmix ) inomap_next_nondir, inomap_contextp, ( intgen_t * )&rv, - ( miniroot || pipeline ) ? + pipeline ? (bool_t (*)(int))preemptchk : 0, bstatbufp, bstatbuflen ); @@ -2586,24 +2585,22 @@ decision_more: * from all streams have been registered. */ if ( drivep->d_capabilities & DRIVE_CAP_FILES ) { - if ( ! miniroot ) { - if ( stream_cnt( ) > 1 ) { - mlog( MLOG_VERBOSE, _( - "waiting for synchronized " - "session inventory dump\n") ); - sc_stat_pds[ strmix ].pds_phase = PDS_INVSYNC; - } + if ( stream_cnt( ) > 1 ) { + mlog( MLOG_VERBOSE, _( + "waiting for synchronized " + "session inventory dump\n") ); + sc_stat_pds[ strmix ].pds_phase = PDS_INVSYNC; + } - /* first be sure all threads have begun - */ - while ( sc_thrdsarrivedcnt < drivecnt ) { - sleep( 1 ); - } - /* now wait for survivors to checkin - */ - while ( sc_thrdsdonecnt < stream_cnt( )) { - sleep( 1 ); - } + /* first be sure all threads have begun + */ + while ( sc_thrdsarrivedcnt < drivecnt ) { + sleep( 1 ); + } + /* now wait for survivors to checkin + */ + while ( sc_thrdsdonecnt < stream_cnt( )) { + sleep( 1 ); } /* proceeed */ diff --git a/dump/getopt.h b/dump/getopt.h index 8a55631..ba26c93 100644 --- a/dump/getopt.h +++ b/dump/getopt.h @@ -27,7 +27,7 @@ * facilitating easy changes. */ -#define GETOPT_CMDSTRING "ab:c:d:ef:hl:mop:qs:t:v:z:AB:CDEFG:H:I:JL:M:NO:PRSTUVWY:Z" +#define GETOPT_CMDSTRING "ab:c:d:ef:hl:mop:qs:t:v:z:AB:CDEFG:H:I:JL:M:NO:PRSTUVWY:" #define GETOPT_DUMPASOFFLINE 'a' /* dump DMF dualstate files as offline */ #define GETOPT_BLOCKSIZE 'b' /* blocksize for rmt */ @@ -80,6 +80,6 @@ #define GETOPT_SHOWLOGLEVEL 'W' /* show level of log messages */ /* 'X' */ #define GETOPT_RINGLEN 'Y' /* specify I/O buffer ring length */ -#define GETOPT_MINIROOT 'Z' /* apply miniroot restrictions */ +/* 'Z' used on irix for miniroot */ #endif /* GETOPT_H */ diff --git a/man/man8/xfsdump.8 b/man/man8/xfsdump.8 index 46e6bd5..5360378 100644 --- a/man/man8/xfsdump.8 +++ b/man/man8/xfsdump.8 @@ -66,10 +66,6 @@ option. Other techniques, such as making a second copy of the dump image, provide more protection against media failures than multiple media files will. .P -However, the current implementation in Linux only supports one destination -and running single threaded. Therefore, the above comments -regarding multiple streams describe the possible future capabilities. -.P .I xfsdump maintains an online dump inventory in \f2/var/lib/xfsdump/inventory\f1. The @@ -391,8 +387,8 @@ Specify I/O buffer ring length. uses a ring of output buffers to achieve maximum throughput when dumping to tape drives. The default ring length is 3. -However, this is only supported when running multi-threaded -which has not been done for Linux yet - making this option benign. +However, this is not currently enabled on +Linux yet, making this option benign. .TP 5 .B \- A lone diff --git a/man/man8/xfsrestore.8 b/man/man8/xfsrestore.8 index 8e33ee9..aad97fa 100644 --- a/man/man8/xfsrestore.8 +++ b/man/man8/xfsrestore.8 @@ -426,8 +426,8 @@ Specify I/O buffer ring length. uses a ring of input buffers to achieve maximum throughput when restoring from tape drives. The default ring length is 3. -However, this is only supported when running multi-threaded -which has not been done for Linux yet - making this option benign. +However, this is not currently enabled on +Linux yet, making this option benign. .TP 5 .B \- A lone diff --git a/restore/content.c b/restore/content.c index 0108a40..a9e0b20 100644 --- a/restore/content.c +++ b/restore/content.c @@ -660,7 +660,6 @@ typedef struct tran tran_t; extern void usage( void ); extern bool_t preemptchk( void ); extern char *homedir; -extern bool_t miniroot; extern bool_t pipeline; extern bool_t stdoutpiped; extern char *sistr; @@ -2544,14 +2543,12 @@ content_stream_restore( ix_t thrdix ) } tranp->t_sync5 = SYNC_BUSY; unlock( ); - if ( ! miniroot ) { - if ( drivecnt > 1 ) { - mlog( MLOG_TRACE, - "waiting for other streams to exit\n" ); - } - while ( cldmgr_otherstreamsremain( thrdix )) { - sleep( 1 ); - } + if ( drivecnt > 1 ) { + mlog( MLOG_TRACE, + "waiting for other streams to exit\n" ); + } + while ( cldmgr_otherstreamsremain( thrdix )) { + sleep( 1 ); } mlog( MLOG_DEBUG, @@ -3006,10 +3003,10 @@ applydirdump( drive_t *drivep, return RV_INTR; } - /* if miniroot or pipeline , call preemptchk( ) to + /* if in a pipeline , call preemptchk( ) to * print status reports */ - if ( miniroot || pipeline ) + if ( pipeline ) { mlog( MLOG_DEBUG , "preemptchk( )\n"); @@ -3543,10 +3540,10 @@ applynondirdump( drive_t *drivep, fhdrp->fh_offset ); } - /* if miniroot or pipeline , call preemptchk( ) to + /* if in a pipeline , call preemptchk( ) to * print status reports */ - if ( miniroot || pipeline ) + if ( pipeline ) { mlog( MLOG_DEBUG , "preemptchk( )\n"); diff --git a/restore/getopt.h b/restore/getopt.h index 4ee865d..63568de 100644 --- a/restore/getopt.h +++ b/restore/getopt.h @@ -26,7 +26,7 @@ * purpose is to contain that command string. */ -#define GETOPT_CMDSTRING "a:b:c:def:himn:op:qrs:tv:wABCDEFG:H:I:JL:M:NO:PQRS:TUVWX:Y:Z" +#define GETOPT_CMDSTRING "a:b:c:def:himn:op:qrs:tv:wABCDEFG:H:I:JL:M:NO:PQRS:TUVWX:Y:" #define GETOPT_WORKSPACE 'a' /* workspace dir (content.c) */ #define GETOPT_BLOCKSIZE 'b' /* blocksize for rmt */ @@ -79,6 +79,6 @@ #define GETOPT_SHOWLOGLEVEL 'W' /* show level of log messages */ #define GETOPT_NOSUBTREE 'X' /* subtree to exclude */ #define GETOPT_RINGLEN 'Y' /* specify I/O buffer ring length */ -#define GETOPT_MINIROOT 'Z' /* apply miniroot restrictions */ +/* 'Z' used on irix for miniroot */ #endif /* GETOPT_H */ -- 1.7.0.4 From wkendall@sgi.com Mon Nov 7 14:59:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7KxiJG076057 for ; Mon, 7 Nov 2011 14:59:44 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id D05FCAC003; Mon, 7 Nov 2011 12:59:40 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 77C6070016E1; Mon, 7 Nov 2011 14:59:40 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id 2868121E23C8; Mon, 7 Nov 2011 14:59:39 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH v2 1/8] xfsdump: link with libpthread Date: Mon, 7 Nov 2011 14:58:24 -0600 Message-Id: <1320699511-12281-2-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320699511-12281-1-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This patch changes xfsdump/xfsrestore to link with libpthread in preparation for enabling multi-stream support. The libpthread checks are the same as those used in xfsprogs. Signed-off-by: Bill Kendall Reviewed-by: Christoph Hellwig --- configure.in | 3 +++ dump/Makefile | 2 +- include/builddefs.in | 1 + m4/Makefile | 1 + m4/package_pthread.m4 | 19 +++++++++++++++++++ restore/Makefile | 2 +- 6 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 m4/package_pthread.m4 diff --git a/configure.in b/configure.in index b7ea1eb..8d4a256 100644 --- a/configure.in +++ b/configure.in @@ -67,6 +67,9 @@ AC_MULTILIB($enable_lib64) AC_PACKAGE_NEED_UUID_H AC_PACKAGE_NEED_UUIDCOMPARE +AC_PACKAGE_NEED_PTHREAD_H +AC_PACKAGE_NEED_PTHREADMUTEXINIT + AC_PACKAGE_NEED_NCURSES_H AC_PACKAGE_WANT_WORKING_LIBNCURSES diff --git a/dump/Makefile b/dump/Makefile index ce964a0..d193f68 100644 --- a/dump/Makefile +++ b/dump/Makefile @@ -89,7 +89,7 @@ HFILES = $(LOCALINCL) LHFILES = $(COMMINCL) $(INVINCL) LINKS = $(COMMINCL) $(COMMON) $(INVINCL) $(INVCOMMON) LDIRT = $(LINKS) -LLDLIBS = $(LIBUUID) $(LIBHANDLE) $(LIBATTR) $(LIBRMT) +LLDLIBS = $(LIBUUID) $(LIBHANDLE) $(LIBATTR) $(LIBRMT) $(LIBPTHREAD) LTDEPENDENCIES = $(LIBRMT) LCFLAGS = -DDUMP diff --git a/include/builddefs.in b/include/builddefs.in index f69c038..d5cc8d3 100644 --- a/include/builddefs.in +++ b/include/builddefs.in @@ -16,6 +16,7 @@ CFLAGS = @CFLAGS@ LIBRMT = $(TOPDIR)/librmt/librmt.la LIBXFS = @libxfs@ LIBATTR = @libattr@ +LIBPTHREAD = @libpthread@ LIBUUID = @libuuid@ LIBCURSES = @libcurses@ LIBHANDLE = @libhdl@ diff --git a/m4/Makefile b/m4/Makefile index 8ce63f8..9a35056 100644 --- a/m4/Makefile +++ b/m4/Makefile @@ -17,6 +17,7 @@ LSRCFILES = \ package_attrdev.m4 \ package_globals.m4 \ package_ncurses.m4 \ + package_pthread.m4 \ package_utilies.m4 \ package_uuiddev.m4 \ package_xfslibs.m4 \ diff --git a/m4/package_pthread.m4 b/m4/package_pthread.m4 new file mode 100644 index 0000000..be21d29 --- /dev/null +++ b/m4/package_pthread.m4 @@ -0,0 +1,19 @@ +AC_DEFUN([AC_PACKAGE_NEED_PTHREAD_H], + [ AC_CHECK_HEADERS(pthread.h) + if test $ac_cv_header_pthread_h = no; then + AC_CHECK_HEADERS(pthread.h,, [ + echo + echo 'FATAL ERROR: could not find a valid pthread header.' + exit 1]) + fi + ]) + +AC_DEFUN([AC_PACKAGE_NEED_PTHREADMUTEXINIT], + [ AC_CHECK_LIB(pthread, pthread_mutex_init,, [ + echo + echo 'FATAL ERROR: could not find a valid pthread library.' + exit 1 + ]) + libpthread=-lpthread + AC_SUBST(libpthread) + ]) diff --git a/restore/Makefile b/restore/Makefile index 003ea16..ce3d6b4 100644 --- a/restore/Makefile +++ b/restore/Makefile @@ -99,7 +99,7 @@ HFILES = $(LOCALINCL) LHFILES = $(COMMINCL) $(INVINCL) LINKS = $(COMMINCL) $(COMMON) $(INVINCL) $(INVCOMMON) LDIRT = $(LINKS) -LLDLIBS = $(LIBUUID) $(LIBHANDLE) $(LIBATTR) $(LIBRMT) +LLDLIBS = $(LIBUUID) $(LIBHANDLE) $(LIBATTR) $(LIBRMT) $(LIBPTHREAD) LTDEPENDENCIES = $(LIBRMT) LCFLAGS = -DRESTORE -- 1.7.0.4 From wkendall@sgi.com Mon Nov 7 14:59:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7Kxiak076055 for ; Mon, 7 Nov 2011 14:59:44 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id F035B8F8096; Mon, 7 Nov 2011 12:59:40 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 9C50670016E7; Mon, 7 Nov 2011 14:59:40 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id 681C120E36FF; Mon, 7 Nov 2011 14:59:40 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH v2 7/8] xfsdump: path lookup cache must be thread specific Date: Mon, 7 Nov 2011 14:58:30 -0600 Message-Id: <1320699511-12281-8-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320699511-12281-1-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The xfsrestore path lookup routine (maps an ino + generation number to a pathname) contains a cache for fast lookups of consecutive files in the same parent directory. This cache either needs to be protected by a lock or a cache is needed per thread. I took the latter approach since it doesn't add lock contention and it increases the cache hit rate (it's relatively unlikely that each stream is processing files in the same directory). Signed-off-by: Bill Kendall Reviewed-by: Christoph Hellwig --- restore/tree.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/restore/tree.c b/restore/tree.c index 7bddddf..9e4e83c 100644 --- a/restore/tree.c +++ b/restore/tree.c @@ -3441,7 +3441,7 @@ Node2path( nh_t nh, char *path, char *errmsg ) static intgen_t Node2path_recurse( nh_t nh, char *buf, intgen_t bufsz, intgen_t level ) { - static path_cache_t cache = { NH_NULL, 0, "" }; + static __thread path_cache_t cache = { NH_NULL, 0, "" }; node_t *np; nh_t parh; xfs_ino_t ino; -- 1.7.0.4 From wkendall@sgi.com Mon Nov 7 14:59:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7KxiXO076060 for ; Mon, 7 Nov 2011 14:59:44 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id 11664AC008; Mon, 7 Nov 2011 12:59:41 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 9B32A70016E6; Mon, 7 Nov 2011 14:59:40 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id 5FE3220E36FE; Mon, 7 Nov 2011 14:59:40 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH v2 6/8] xfsdump: process thread exit status Date: Mon, 7 Nov 2011 14:58:29 -0600 Message-Id: <1320699511-12281-7-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320699511-12281-1-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When IRIX sprocs were in use, the main thread was notified of a thread exit just as if a child process exited -- it received SIGCHLD. The main thread would grab the pid and exit status, then call cldmgr_died() to inform it that the child was gone so the slot in the child array could be freed up for reuse. This patch implements a similar mechanism for pthreads. The "c_busy" field in struct cld has been replaced with a "c_state" field that indicates whether the array slot is free (C_AVAIL), in use (C_ALIVE), or is waiting to be joined (C_EXITED). Additionally a "c_exit_code" field has been added to store the thread's exit value. Normally this is set when the thread entry function returns, but it is initialized to EXIT_INTERRUPT in case the thread is cancelled or calls pthread_exit() rather than returning (neither of which happens in the code today). When the child thread starts, it registers a pthread cleanup handler which takes care of marking the child as C_EXITED and notifies the main thread that a child is gone. Doing this in a cleanup handler ensures that it's done regardless of how the thread exits. The main thread's loop is based around sigsuspsend(), so the notification is done by sending SIGUSR1. The main thread will then call cldmgr_join() to join all exited threads and obtain their exit status. Additional changes: * cldmgr_findbypid() has been removed, it's no longer referenced. * stream_dead() no longer grabs the lock(), because it's called only from cldmgr_join() which already holds the lock(). Signed-off-by: Bill Kendall Reviewed-by: Christoph Hellwig --- common/cldmgr.c | 88 +++++++++++++++++++++++++++++++++++------------------- common/cldmgr.h | 7 +++- common/main.c | 33 +++++--------------- common/stream.c | 3 +- common/stream.h | 1 + 5 files changed, 73 insertions(+), 59 deletions(-) diff --git a/common/cldmgr.c b/common/cldmgr.c index 4574834..be7de34 100644 --- a/common/cldmgr.c +++ b/common/cldmgr.c @@ -26,6 +26,7 @@ #include #include +#include "exit.h" #include "types.h" #include "lock.h" #include "qlock.h" @@ -36,8 +37,12 @@ extern size_t pgsz; #define CLD_MAX ( STREAM_SIMMAX * 2 ) + +typedef enum { C_AVAIL, C_ALIVE, C_EXITED } state_t; + struct cld { - bool_t c_busy; + state_t c_state; + intgen_t c_exit_code; pthread_t c_tid; ix_t c_streamix; int ( * c_entry )( void *arg1 ); @@ -50,8 +55,8 @@ static cld_t cld[ CLD_MAX ]; static bool_t cldmgr_stopflag; static cld_t *cldmgr_getcld( void ); -static cld_t * cldmgr_findbytid( pthread_t ); static void *cldmgr_entry( void * ); +static void cldmgr_cleanup( void * ); /* REFERENCED */ static pthread_t cldmgr_parenttid; @@ -87,6 +92,7 @@ cldmgr_create( int ( * entry )( void *arg1 ), return BOOL_FALSE; } + cldp->c_exit_code = EXIT_INTERRUPT; cldp->c_streamix = streamix; cldp->c_entry = entry; cldp->c_arg1 = arg1; @@ -117,18 +123,37 @@ cldmgr_stop( void ) cldmgr_stopflag = BOOL_TRUE; } -void -cldmgr_died( pthread_t tid ) +intgen_t +cldmgr_join( void ) { - cld_t *cldp = cldmgr_findbytid( tid ); + cld_t *p = cld; + cld_t *ep = cld + sizeof( cld ) / sizeof( cld[ 0 ] ); + intgen_t xc = EXIT_NORMAL; - if ( ! cldp ) { - return; - } - cldp->c_busy = BOOL_FALSE; - if ( ( intgen_t )( cldp->c_streamix ) >= 0 ) { - stream_dead( tid ); + lock(); + for ( ; p < ep ; p++ ) { + if ( p->c_state == C_EXITED ) { + if ( ( intgen_t )( p->c_streamix ) >= 0 ) { + stream_dead( p->c_tid ); + } + pthread_join( p->c_tid, NULL ); + if ( p->c_exit_code != EXIT_NORMAL && xc != EXIT_FAULT ) + xc = p->c_exit_code; + if ( p->c_exit_code != EXIT_NORMAL ) { + mlog( MLOG_DEBUG | MLOG_PROC | MLOG_NOLOCK, + "child (thread %lu) requested stop: " + "exit code %d (%s)\n", + p->c_tid, p->c_exit_code, + exit_codestring( p->c_exit_code )); + } + + // reinit this child for reuse + memset( ( void * )p, 0, sizeof( cld_t )); + } } + unlock(); + + return xc; } bool_t @@ -147,7 +172,7 @@ cldmgr_remainingcnt( void ) cnt = 0; lock( ); for ( ; p < ep ; p++ ) { - if ( p->c_busy ) { + if ( p->c_state == C_ALIVE ) { cnt++; } } @@ -164,7 +189,7 @@ cldmgr_otherstreamsremain( ix_t streamix ) lock( ); for ( ; p < ep ; p++ ) { - if ( p->c_busy && p->c_streamix != streamix ) { + if ( p->c_state == C_ALIVE && p->c_streamix != streamix ) { unlock( ); return BOOL_TRUE; } @@ -182,8 +207,8 @@ cldmgr_getcld( void ) lock(); for ( ; p < ep ; p++ ) { - if ( ! p->c_busy ) { - p->c_busy = BOOL_TRUE; + if ( p->c_state == C_AVAIL ) { + p->c_state = C_ALIVE; break; } } @@ -192,27 +217,14 @@ cldmgr_getcld( void ) return ( p < ep ) ? p : 0; } -static cld_t * -cldmgr_findbytid( pthread_t tid ) -{ - cld_t *p = cld; - cld_t *ep = cld + sizeof( cld ) / sizeof( cld[ 0 ] ); - - for ( ; p < ep ; p++ ) { - if ( p->c_busy && pthread_equal( p->c_tid, tid )) { - break; - } - } - - return ( p < ep ) ? p : 0; -} - static void * cldmgr_entry( void *arg1 ) { cld_t *cldp = ( cld_t * )arg1; pthread_t tid = pthread_self( ); + pthread_cleanup_push( cldmgr_cleanup, arg1 ); + if ( ( intgen_t )( cldp->c_streamix ) >= 0 ) { stream_register( tid, ( intgen_t )cldp->c_streamix ); } @@ -220,7 +232,21 @@ cldmgr_entry( void *arg1 ) "thread %lu created for stream %d\n", tid, cldp->c_streamix ); + cldp->c_exit_code = ( * cldp->c_entry )( cldp->c_arg1 ); + + pthread_cleanup_pop( 1 ); - ( * cldp->c_entry )( cldp->c_arg1 ); return NULL; } + +static void +cldmgr_cleanup( void *arg1 ) +{ + cld_t *cldp = ( cld_t * )arg1; + + lock(); + cldp->c_state = C_EXITED; + // signal the main thread to look for exited threads + kill( getpid( ), SIGUSR1 ); + unlock(); +} diff --git a/common/cldmgr.h b/common/cldmgr.h index e393b82..1df0c0c 100644 --- a/common/cldmgr.h +++ b/common/cldmgr.h @@ -39,9 +39,12 @@ extern bool_t cldmgr_create( int ( * entry )( void *arg1 ), */ extern void cldmgr_stop( void ); -/* cldmgr_died - tells the child manager that the child died +/* cldmgr_join - join child threads that have exited. + * returns EXIT_NORMAL if all exited normally (or no threads have exited), + * EXIT_FAULT if any threads requested a core dump, or another EXIT_* + * value if any threads exited abnormally. */ -extern void cldmgr_died( pthread_t tid ); +extern intgen_t cldmgr_join( void ); /* cldmgr_stop_requested - returns TRUE if the child should gracefully * terminate. diff --git a/common/main.c b/common/main.c index d4dbe28..38b3889 100644 --- a/common/main.c +++ b/common/main.c @@ -137,10 +137,6 @@ static bool_t sighup_received; static bool_t sigterm_received; static bool_t sigquit_received; static bool_t sigint_received; -static size_t prbcld_cnt; -static pid_t prbcld_pid; -static intgen_t prbcld_xc; -static intgen_t prbcld_signo; /* REFERENCED */ static intgen_t sigstray_received; static bool_t progrpt_enabledpr; @@ -168,6 +164,8 @@ main( int argc, char *argv[] ) intgen_t exitcode; rlim64_t tmpstacksz; struct sigaction sa; + intgen_t prbcld_xc = EXIT_NORMAL; + intgen_t xc; bool_t ok; /* REFERENCED */ int rval; @@ -563,7 +561,6 @@ main( int argc, char *argv[] ) sigint_received = BOOL_FALSE; sigquit_received = BOOL_FALSE; sigstray_received = BOOL_FALSE; - prbcld_cnt = 0; alarm( 0 ); @@ -573,6 +570,7 @@ main( int argc, char *argv[] ) sigaddset( &blocked_set, SIGTERM ); sigaddset( &blocked_set, SIGQUIT ); sigaddset( &blocked_set, SIGALRM ); + sigaddset( &blocked_set, SIGUSR1 ); pthread_sigmask( SIG_SETMASK, &blocked_set, NULL ); sa.sa_handler = sighandler; @@ -581,6 +579,7 @@ main( int argc, char *argv[] ) sigaction( SIGTERM, &sa, NULL ); sigaction( SIGQUIT, &sa, NULL ); sigaction( SIGALRM, &sa, NULL ); + sigaction( SIGUSR1, &sa, NULL ); } /* do content initialization. @@ -710,31 +709,16 @@ main( int argc, char *argv[] ) * stop. furthermore, note that core should be dumped if * the child explicitly exited with EXIT_FAULT. */ - if ( prbcld_cnt ) { - if ( prbcld_xc == EXIT_FAULT || prbcld_signo != 0 ) { + xc = cldmgr_join( ); + if ( xc ) { + if ( xc == EXIT_FAULT ) { coredump_requested = BOOL_TRUE; stop_timeout = ABORT_TIMEOUT; } else { stop_timeout = STOP_TIMEOUT; } + prbcld_xc = xc; stop_requested = BOOL_TRUE; - if ( prbcld_xc != EXIT_NORMAL ) { - mlog( MLOG_DEBUG | MLOG_PROC, - "child (pid %d) requested stop: " - "exit code %d (%s)\n", - prbcld_pid, - prbcld_xc, - exit_codestring( prbcld_xc )); - } else if ( prbcld_signo ) { - ASSERT( prbcld_signo ); - mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_PROC, - _("child (pid %d) faulted: " - "signal number %d (%s)\n"), - prbcld_pid, - prbcld_signo, - sig_numstring( prbcld_signo )); - } - prbcld_cnt = 0; } /* all children died normally. break out. @@ -1528,6 +1512,7 @@ sighandler( int signo ) sigquit_received = BOOL_TRUE; break; case SIGALRM: + case SIGUSR1: break; default: sigstray_received = signo; diff --git a/common/stream.c b/common/stream.c index 48e25ee..6704661 100644 --- a/common/stream.c +++ b/common/stream.c @@ -86,19 +86,18 @@ stream_register( pthread_t tid, intgen_t streamix ) p->s_exit_hint = RV_NONE; } +/* NOTE: lock() must be held when calling stream_dead() */ void stream_dead( pthread_t tid ) { spm_t *p = spm; spm_t *ep = spm + N(spm); - lock(); for ( ; p < ep ; p++ ) if ( pthread_equal( p->s_tid, tid ) ) { p->s_state = S_ZOMBIE; break; } - unlock(); ASSERT( p < ep ); } diff --git a/common/stream.h b/common/stream.h index 292792e..4b3799f 100644 --- a/common/stream.h +++ b/common/stream.h @@ -43,6 +43,7 @@ typedef enum { S_FREE, S_RUNNING, S_ZOMBIE } stream_state_t; extern void stream_init( void ); extern void stream_register( pthread_t tid, intgen_t streamix ); +/* NOTE: lock() must be held when calling stream_dead */ extern void stream_dead( pthread_t tid ); extern void stream_free( pthread_t tid ); extern int stream_find_all( stream_state_t states[], -- 1.7.0.4 From wkendall@sgi.com Mon Nov 7 14:59:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7Kxhbh076051 for ; Mon, 7 Nov 2011 14:59:44 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id B4BEE304067; Mon, 7 Nov 2011 12:59:40 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 77CD570016E2; Mon, 7 Nov 2011 14:59:40 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id 36CF520E36F6; Mon, 7 Nov 2011 14:59:39 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH v2 2/8] xfsdump: remove multi-stream synchronous dir dump Date: Mon, 7 Nov 2011 14:58:25 -0600 Message-Id: <1320699511-12281-3-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320699511-12281-1-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When doing multi-stream dumps, the directories are dumped by each stream in lock-step fashion. A stream backs up a given directory, then waits for all others to finish that directory, then they all move on to the next one. During restore a single stream is chosen to apply the directory dump. This patch changes xfsdump so that only one stream dumps the directories. The other streams begin dumping files immediately. This results in a faster backup, which is presumably why multiple streams are being used in the first place. It also removes the barrier routines in qlock.c as they were only used by the "SYNCDIR" code. Signed-off-by: Bill Kendall Reviewed-by: Christoph Hellwig --- common/qlock.c | 37 ---------- common/qlock.h | 11 --- dump/content.c | 193 ++++++++++++----------------------------------------- restore/content.c | 33 +++++++++ 4 files changed, 75 insertions(+), 199 deletions(-) diff --git a/common/qlock.c b/common/qlock.c index fd0e98d..6c9ee16 100644 --- a/common/qlock.c +++ b/common/qlock.c @@ -568,43 +568,6 @@ return 0; #endif /* HIDDEN */ } -qbarrierh_t -qbarrier_alloc( void ) -{ -#ifdef HIDDEN - barrier_t *barrierp; - - /* sanity checks - */ - ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - - /* allocate a us barrier - */ - barrierp = new_barrier( qlock_usp ); - ASSERT( barrierp ); - - return ( qbarrierh_t )barrierp; -#else -return 0; -#endif /* HIDDEN */ -} - -void -qbarrier( qbarrierh_t qbarrierh, size_t thrdcnt ) -{ -#ifdef HIDDEN - barrier_t *barrierp = ( barrier_t * )qbarrierh; - - /* sanity checks - */ - ASSERT( qlock_inited ); - ASSERT( qlock_usp ); - - barrier( barrierp, thrdcnt ); -#endif /* HIDDEN */ -} - /* internal ordinal map abstraction */ #ifdef HIDDEN diff --git a/common/qlock.h b/common/qlock.h index 54469ea..1880aff 100644 --- a/common/qlock.h +++ b/common/qlock.h @@ -102,15 +102,4 @@ extern size_t qsemPblocked( qsemh_t qsemh ); /* number of threads currently blocked on this semaphore */ -typedef void *qbarrierh_t; -#define QBARRIERH_NULL 0 - /* opaque handle - */ -extern qbarrierh_t qbarrier_alloc( void ); - /* allocates a rendezvous barrier - */ -extern void qbarrier( qbarrierh_t barrierh, size_t thrdcnt ); - /* causes thrdcnt threads to rendezvous - */ - #endif /* QLOCK_H */ diff --git a/dump/content.c b/dump/content.c index 54c97d1..64bfe54 100644 --- a/dump/content.c +++ b/dump/content.c @@ -64,9 +64,6 @@ #include "getdents.h" #include "arch_xlate.h" -#undef SYNCDIR -#define SYNCDIR - /* max "unsigned long long int" */ #define ULONGLONG_MAX 18446744073709551615LLU @@ -231,7 +228,6 @@ typedef struct extent_group_context extent_group_context_t; struct pds { enum { PDS_NULL, /* per-drive activity not begun */ PDS_INOMAP, /* dumping inomap */ - PDS_DIRRENDEZVOUS, /* waiting to dump dirs */ PDS_DIRDUMP, /* dumping dirs */ PDS_NONDIR, /* dumping nondirs */ PDS_INVSYNC, /* waiting for inventory */ @@ -263,9 +259,6 @@ static rv_t dump_dirs( ix_t strmix, xfs_bstat_t *bstatbufp, size_t bstatbuflen, void *inomap_contextp ); -#ifdef SYNCDIR -static rv_t dump_dirs_rendezvous( void ); -#endif /* SYNCDIR */ static rv_t dump_dir( ix_t strmix, jdm_fshandle_t *, intgen_t, @@ -485,12 +478,6 @@ static bool_t sc_dumpextattrpr = BOOL_TRUE; static bool_t sc_dumpasoffline = BOOL_FALSE; /* dump dual-residency HSM files as offline */ -#ifdef SYNCDIR -static size_t sc_thrdsdirdumpsynccnt = 0; -static size_t sc_thrdswaitingdirdumpsync1 = 0; -static size_t sc_thrdswaitingdirdumpsync2 = 0; -static qbarrierh_t sc_barrierh; -#endif /* SYNCDIR */ static bool_t sc_savequotas = BOOL_TRUE; /* save quota information in dump @@ -1466,14 +1453,13 @@ baseuuidbypass: var_skip( &fsid, inomap_skip ); /* fill in write header template content info. always produce - * an inomap and dir dump for each media file. + * an inomap for each media file. the dirdump flag will be set + * in content_stream_dump() for streams which dump the directories. */ ASSERT( sizeof( cwhdrtemplatep->ch_specific ) >= sizeof( *scwhdrtemplatep )); scwhdrtemplatep->cih_mediafiletype = CIH_MEDIAFILETYPE_DATA; scwhdrtemplatep->cih_level = ( int32_t )sc_level; - scwhdrtemplatep->cih_dumpattr = CIH_DUMPATTR_INOMAP - | - CIH_DUMPATTR_DIRDUMP; + scwhdrtemplatep->cih_dumpattr = CIH_DUMPATTR_INOMAP; if ( subtreecnt ) { scwhdrtemplatep->cih_dumpattr |= CIH_DUMPATTR_SUBTREE; } @@ -1714,22 +1700,6 @@ baseuuidbypass: } } -#ifdef SYNCDIR - /* allocate a barrier to synchronize directory dumping - */ - if ( drivecnt > 1 ) { - sc_barrierh = qbarrier_alloc( ); - } - - /* initialize the number of players in the synchronized dir dump. - * they drop out when last media file complete. MUST be modified - * under lock( ). - */ - sc_thrdsdirdumpsynccnt = drivecnt; - -#endif /* SYNCDIR */ - - return BOOL_TRUE; } @@ -1877,10 +1847,6 @@ content_statline( char **linespp[ ] ) strcat( statline[ statlinecnt ], "dumping inomap" ); break; - case PDS_DIRRENDEZVOUS: - strcat( statline[ statlinecnt ], - "waiting for synchronized directory dump" ); - break; case PDS_DIRDUMP: sprintf( &statline[ statlinecnt ] [ strlen( statline[ statlinecnt ] ) ], @@ -2157,6 +2123,11 @@ content_stream_dump( ix_t strmix ) scwhdrp->cih_endpt.sp_flags = STARTPT_FLAGS_END; } + // the first stream dumps the directories + if ( strmix == 0 ) { + scwhdrp->cih_dumpattr |= CIH_DUMPATTR_DIRDUMP; + } + /* fill in inomap fields of write hdr */ inomap_writehdr( scwhdrp ); @@ -2322,39 +2293,41 @@ content_stream_dump( ix_t strmix ) return mlog_exit(EXIT_FAULT, rv); } - /* now dump the directories. use the bigstat iterator - * capability to call my dump_dir function - * for each directory in the bitmap. + /* now dump the directories, if this is a stream that dumps + * directories. use the bigstat iterator capability to call + * my dump_dir function for each directory in the bitmap. */ - sc_stat_pds[ strmix ].pds_dirdone = 0; - rv = dump_dirs( strmix, - bstatbufp, - bstatbuflen, - inomap_contextp ); - if ( rv == RV_INTR ) { - stop_requested = BOOL_TRUE; - goto decision_more; - } - if ( rv == RV_EOM ) { - hit_eom = BOOL_TRUE; - goto decision_more; - } - if ( rv == RV_DRIVE ) { - free( ( void * )bstatbufp ); - return mlog_exit(EXIT_NORMAL, rv); - } - if ( rv == RV_ERROR ) { - free( ( void * )bstatbufp ); - return mlog_exit(EXIT_ERROR, rv); - } - if ( rv == RV_CORE ) { - free( ( void * )bstatbufp ); - return mlog_exit(EXIT_FAULT, rv); - } - ASSERT( rv == RV_OK ); - if ( rv != RV_OK ) { - free( ( void * )bstatbufp ); - return mlog_exit(EXIT_FAULT, rv); + if ( scwhdrp->cih_dumpattr & CIH_DUMPATTR_DIRDUMP ) { + sc_stat_pds[ strmix ].pds_dirdone = 0; + rv = dump_dirs( strmix, + bstatbufp, + bstatbuflen, + inomap_contextp ); + if ( rv == RV_INTR ) { + stop_requested = BOOL_TRUE; + goto decision_more; + } + if ( rv == RV_EOM ) { + hit_eom = BOOL_TRUE; + goto decision_more; + } + if ( rv == RV_DRIVE ) { + free( ( void * )bstatbufp ); + return mlog_exit(EXIT_NORMAL, rv); + } + if ( rv == RV_ERROR ) { + free( ( void * )bstatbufp ); + return mlog_exit(EXIT_ERROR, rv); + } + if ( rv == RV_CORE ) { + free( ( void * )bstatbufp ); + return mlog_exit(EXIT_FAULT, rv); + } + ASSERT( rv == RV_OK ); + if ( rv != RV_OK ) { + free( ( void * )bstatbufp ); + return mlog_exit(EXIT_FAULT, rv); + } } /* finally, dump the non-directory files beginning with this @@ -2527,20 +2500,6 @@ decision_more: */ done = all_nondirs_committed; -#ifdef SYNCDIR - /* drop out of the synchronous dump game if done - */ - if ( done ) { - /* REFERENCED */ - size_t tmpthrdsdirdumpsynccnt; - lock( ); - tmpthrdsdirdumpsynccnt = sc_thrdsdirdumpsynccnt; - sc_thrdsdirdumpsynccnt--; - unlock( ); - ASSERT( tmpthrdsdirdumpsynccnt > 0 ); - } -#endif /* SYNCDIR */ - /* tell the inventory about the media file */ if ( inv_stmt != INV_TOKEN_NULL ) { @@ -2833,22 +2792,6 @@ dump_dirs( ix_t strmix, __s32 buflenout; intgen_t rval; -#ifdef SYNCDIR - /* have all threads rendezvous - */ - if ( sc_thrdsdirdumpsynccnt > 1 && stream_cnt( ) > 1 ) { - rv_t rv; - mlog( bulkstatcallcnt == 0 ? MLOG_VERBOSE : MLOG_NITTY, - _("waiting for synchronized directory dump\n") ); - sc_stat_pds[ strmix ].pds_phase = PDS_DIRRENDEZVOUS; - rv = dump_dirs_rendezvous( ); - if ( rv == RV_INTR ) { - return RV_INTR; - } - ASSERT( rv == RV_OK ); - } -#endif /* SYNCDIR */ - if ( bulkstatcallcnt == 0 ) { mlog( MLOG_VERBOSE, _( "dumping directories\n") ); @@ -2948,58 +2891,6 @@ dump_dirs( ix_t strmix, /* NOTREACHED */ } -#ifdef SYNCDIR -static rv_t -dump_dirs_rendezvous( void ) -{ - static size_t localsync1; - static size_t localsync2; - - sc_thrdswaitingdirdumpsync2 = 0; - lock( ); - sc_thrdswaitingdirdumpsync1++; - localsync1 = sc_thrdswaitingdirdumpsync1; - localsync2 = sc_thrdswaitingdirdumpsync2; - unlock( ); - while ( localsync2 == 0 - && - localsync1 < min( stream_cnt( ), sc_thrdsdirdumpsynccnt )) { - sleep( 1 ); - if ( cldmgr_stop_requested( )) { - lock( ); - sc_thrdswaitingdirdumpsync1--; - unlock( ); - return RV_INTR; - } - lock( ); - localsync1 = sc_thrdswaitingdirdumpsync1; - localsync2 = sc_thrdswaitingdirdumpsync2; - unlock( ); - } - lock( ); - sc_thrdswaitingdirdumpsync1--; - sc_thrdswaitingdirdumpsync2++; - localsync2 = sc_thrdswaitingdirdumpsync2; - unlock( ); - while ( localsync2 < min( stream_cnt( ), sc_thrdsdirdumpsynccnt )) { - sleep( 1 ); - if ( cldmgr_stop_requested( )) { - return RV_INTR; - } - lock( ); - localsync2 = sc_thrdswaitingdirdumpsync2; - unlock( ); - } - if ( cldmgr_stop_requested( )) { - return RV_INTR; - } - - qbarrier( sc_barrierh, min( stream_cnt( ), sc_thrdsdirdumpsynccnt )); - - return RV_OK; -} -#endif /* SYNCDIR */ - static rv_t dump_dir( ix_t strmix, jdm_fshandle_t *fshandlep, diff --git a/restore/content.c b/restore/content.c index 34fc4a0..2228a7f 100644 --- a/restore/content.c +++ b/restore/content.c @@ -625,6 +625,9 @@ struct tran { intgen_t t_persfd; /* file descriptor of the persistent state file */ + size64_t t_dirdumps; + /* bitset of streams which contain a directory dump + */ sync_t t_sync1; /* to single-thread attempt to validate command line * selection of dump with online inventory @@ -1184,6 +1187,12 @@ content_init( intgen_t argc, char *argv[ ], size64_t vmsz ) return BOOL_FALSE; } + /* assume all streams contain a directory dump. streams will remove + * themselves from this bitset if they do not contain a directory dump. + */ + ASSERT( drivecnt <= sizeof(tranp->t_dirdumps) * NBBY ); + tranp->t_dirdumps = ( 1ULL << drivecnt ) - 1; + /* the user may specify stdin as the restore source stream, * by a single dash ('-') with no option letter. This must * appear between the last lettered argument and the destination @@ -2237,6 +2246,30 @@ content_stream_restore( ix_t thrdix ) unlock( ); continue; } + if ( !(scrhdrp->cih_dumpattr & CIH_DUMPATTR_DIRDUMP) ) { + /* if no streams have a directory dump, issue a + * message and exit. first set SYNC_BUSY to prevent + * other threads from coming through here and issuing + * the same message. + */ + tranp->t_dirdumps &= ~(1ULL << thrdix); + if ( !tranp->t_dirdumps ) { + tranp->t_sync3 = SYNC_BUSY; + } + unlock( ); + if ( !tranp->t_dirdumps ) { + mlog( MLOG_VERBOSE | MLOG_ERROR, _( + "no directory dump found\n") ); + Media_end( Mediap ); + return mlog_exit(EXIT_NORMAL, RV_ERROR); + } + sleep( 1 ); + if ( cldmgr_stop_requested( )) { + Media_end( Mediap ); + return mlog_exit(EXIT_NORMAL, RV_INTR); + } + continue; + } tranp->t_sync3 = SYNC_BUSY; unlock( ); if ( ! tranp->t_dirattrinitdonepr ) { -- 1.7.0.4 From wkendall@sgi.com Mon Nov 7 14:59:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64, LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7KxiO1076063 for ; Mon, 7 Nov 2011 14:59:44 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1B731AC009; Mon, 7 Nov 2011 12:59:41 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 8755E70016E5; Mon, 7 Nov 2011 14:59:40 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id 53AA620E36FD; Mon, 7 Nov 2011 14:59:40 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH v2 5/8] xfsdump: convert IRIX sproc threads to pthreads Date: Mon, 7 Nov 2011 14:58:28 -0600 Message-Id: <1320699511-12281-6-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320699511-12281-1-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The existing (disabled) threading code in xfsdump is based on IRIX sprocs. This patch converts the code to use pthreads. The threading code remains disabled at this point. Changes: - pid_t to pthread_t - getpid() to pthread_self() - "pid1 == pid2" to pthread_equal(tid1, tid2) - sigprocmask() to pthread_sigmask() - sproc() to pthread_create() Also the following are not referenced and have been removed: - cldmgr_pid2streamix() - PROCMAX - r_slavepid - sproc.c and sproc.h Signed-off-by: Bill Kendall Reviewed-by: Christoph Hellwig --- common/Makefile | 2 +- common/cldmgr.c | 56 ++++++++++++++-------------- common/cldmgr.h | 8 +--- common/dlog.c | 4 +- common/drive_minrmt.c | 2 +- common/drive_scsitape.c | 2 +- common/main.c | 20 +++++----- common/mlog.c | 44 +++++++++++----------- common/ring.c | 9 +--- common/ring.h | 1 - common/sproc.c | 42 --------------------- common/sproc.h | 23 ----------- common/stream.c | 94 +++++++++++++++++++++-------------------------- common/stream.h | 22 +++++----- dump/Makefile | 4 +- dump/content.c | 4 +- restore/Makefile | 2 - restore/content.c | 5 +- 18 files changed, 127 insertions(+), 217 deletions(-) delete mode 100644 common/sproc.c delete mode 100644 common/sproc.h diff --git a/common/Makefile b/common/Makefile index 8d9d868..ad3d61a 100644 --- a/common/Makefile +++ b/common/Makefile @@ -13,7 +13,7 @@ LSRCFILES = arch_xlate.c arch_xlate.h \ hsmapi.c hsmapi.h inventory.c inventory.h lock.c lock.h \ main.c media.c media.h media_rmvtape.h mlog.c mlog.h \ openutil.c openutil.h path.c path.h qlock.c qlock.h \ - rec_hdr.h ring.c ring.h sproc.c sproc.h stream.c \ + rec_hdr.h ring.c ring.h stream.c \ stream.h timeutil.c timeutil.h ts_mtio.h types.h util.c util.h default install install-dev : diff --git a/common/cldmgr.c b/common/cldmgr.c index d327bab..4574834 100644 --- a/common/cldmgr.c +++ b/common/cldmgr.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "types.h" #include "lock.h" @@ -31,14 +32,13 @@ #include "stream.h" #include "mlog.h" #include "cldmgr.h" -#include "sproc.h" extern size_t pgsz; #define CLD_MAX ( STREAM_SIMMAX * 2 ) struct cld { bool_t c_busy; - pid_t c_pid; + pthread_t c_tid; ix_t c_streamix; int ( * c_entry )( void *arg1 ); void * c_arg1; @@ -50,32 +50,31 @@ static cld_t cld[ CLD_MAX ]; static bool_t cldmgr_stopflag; static cld_t *cldmgr_getcld( void ); -static cld_t * cldmgr_findbypid( pid_t ); -static int cldmgr_entry( void * ); +static cld_t * cldmgr_findbytid( pthread_t ); +static void *cldmgr_entry( void * ); /* REFERENCED */ -static pid_t cldmgr_parentpid; +static pthread_t cldmgr_parenttid; bool_t cldmgr_init( void ) { ( void )memset( ( void * )cld, 0, sizeof( cld )); cldmgr_stopflag = BOOL_FALSE; - cldmgr_parentpid = getpid( ); + cldmgr_parenttid = pthread_self( ); return BOOL_TRUE; } bool_t cldmgr_create( int ( * entry )( void *arg1 ), - u_intgen_t inh, ix_t streamix, char *descstr, void *arg1 ) { cld_t *cldp; - pid_t cldpid; + intgen_t rval; - ASSERT( getpid( ) == cldmgr_parentpid ); + ASSERT( pthread_equal( pthread_self( ), cldmgr_parenttid ) ); cldp = cldmgr_getcld( ); if ( ! cldp ) { @@ -91,22 +90,22 @@ cldmgr_create( int ( * entry )( void *arg1 ), cldp->c_streamix = streamix; cldp->c_entry = entry; cldp->c_arg1 = arg1; - cldpid = ( pid_t )sproc( cldmgr_entry, inh, ( void * )cldp ); - if ( cldpid < 0 ) { + rval = pthread_create( &cldp->c_tid, NULL, cldmgr_entry, cldp ); + if ( rval ) { mlog( MLOG_NORMAL | MLOG_ERROR | MLOG_PROC, _( - "sproc failed creating %s thread for stream %u: %s\n"), + "failed creating %s thread for stream %u: %s\n"), descstr, streamix, - strerror( errno )); + strerror( rval )); } else { mlog( MLOG_NITTY | MLOG_PROC, - "%s thread created for stream %u: pid %d\n", + "%s thread created for stream %u: tid %lu\n", descstr, streamix, - cldpid ); + cldp->c_tid ); } - return cldpid < 0 ? BOOL_FALSE : BOOL_TRUE; + return rval ? BOOL_FALSE : BOOL_TRUE; } void @@ -119,16 +118,16 @@ cldmgr_stop( void ) } void -cldmgr_died( pid_t pid ) +cldmgr_died( pthread_t tid ) { - cld_t *cldp = cldmgr_findbypid( pid ); + cld_t *cldp = cldmgr_findbytid( tid ); if ( ! cldp ) { return; } cldp->c_busy = BOOL_FALSE; if ( ( intgen_t )( cldp->c_streamix ) >= 0 ) { - stream_dead( pid ); + stream_dead( tid ); } } @@ -194,13 +193,13 @@ cldmgr_getcld( void ) } static cld_t * -cldmgr_findbypid( pid_t pid ) +cldmgr_findbytid( pthread_t tid ) { cld_t *p = cld; cld_t *ep = cld + sizeof( cld ) / sizeof( cld[ 0 ] ); for ( ; p < ep ; p++ ) { - if ( p->c_busy && p->c_pid == pid ) { + if ( p->c_busy && pthread_equal( p->c_tid, tid )) { break; } } @@ -208,19 +207,20 @@ cldmgr_findbypid( pid_t pid ) return ( p < ep ) ? p : 0; } -static int +static void * cldmgr_entry( void *arg1 ) { cld_t *cldp = ( cld_t * )arg1; - pid_t pid = getpid( ); + pthread_t tid = pthread_self( ); - cldp->c_pid = pid; if ( ( intgen_t )( cldp->c_streamix ) >= 0 ) { - stream_register( pid, ( intgen_t )cldp->c_streamix ); + stream_register( tid, ( intgen_t )cldp->c_streamix ); } mlog( MLOG_DEBUG | MLOG_PROC, - "child %d created for stream %d\n", - pid, + "thread %lu created for stream %d\n", + tid, cldp->c_streamix ); - return ( * cldp->c_entry )( cldp->c_arg1 ); + + ( * cldp->c_entry )( cldp->c_arg1 ); + return NULL; } diff --git a/common/cldmgr.h b/common/cldmgr.h index bb3f612..e393b82 100644 --- a/common/cldmgr.h +++ b/common/cldmgr.h @@ -30,7 +30,6 @@ extern bool_t cldmgr_init( void ); * encountered */ extern bool_t cldmgr_create( int ( * entry )( void *arg1 ), - u_intgen_t inh, ix_t streamix, char *descstr, void *arg1 ); @@ -42,18 +41,13 @@ extern void cldmgr_stop( void ); /* cldmgr_died - tells the child manager that the child died */ -extern void cldmgr_died( pid_t pid ); +extern void cldmgr_died( pthread_t tid ); /* cldmgr_stop_requested - returns TRUE if the child should gracefully * terminate. */ extern bool_t cldmgr_stop_requested( void ); -/* cldmgr_pid2streamix - retrieves the stream index. returns -1 if - * not associated with any stream. - */ -extern intgen_t cldmgr_pid2streamix( pid_t pid ); - /* cldmgr_remainingcnt - returns number of children remaining */ extern size_t cldmgr_remainingcnt( void ); diff --git a/common/dlog.c b/common/dlog.c index 8cf9a65..51666cf 100644 --- a/common/dlog.c +++ b/common/dlog.c @@ -429,7 +429,7 @@ promptinput( char *buf, sigaddset( &dlog_registered_sigs, SIGQUIT ); } - sigprocmask( SIG_UNBLOCK, &dlog_registered_sigs, &orig_set ); + pthread_sigmask( SIG_UNBLOCK, &dlog_registered_sigs, &orig_set ); /* wait for input, timeout, or interrupt. * note we come out of the select() frequently in order to @@ -455,7 +455,7 @@ promptinput( char *buf, /* restore signal handling */ - sigprocmask( SIG_SETMASK, &orig_set, NULL ); + pthread_sigmask( SIG_SETMASK, &orig_set, NULL ); sigemptyset( &dlog_registered_sigs ); /* check for timeout or interrupt diff --git a/common/drive_minrmt.c b/common/drive_minrmt.c index 836b663..3ff4d0f 100644 --- a/common/drive_minrmt.c +++ b/common/drive_minrmt.c @@ -577,7 +577,7 @@ ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) drivep->d_cap_est = -1; drivep->d_rate_est = -1; - /* if sproc not allowed, allocate a record buffer. otherwise + /* if threads not allowed, allocate a record buffer. otherwise * create a ring, from which buffers will be taken. */ if ( singlethreaded ) { diff --git a/common/drive_scsitape.c b/common/drive_scsitape.c index 8c1bd49..f24d604 100644 --- a/common/drive_scsitape.c +++ b/common/drive_scsitape.c @@ -667,7 +667,7 @@ ds_instantiate( int argc, char *argv[], drive_t *drivep, bool_t singlethreaded ) drivep->d_cap_est = -1; drivep->d_rate_est = -1; - /* if sproc not allowed, allocate a record buffer. otherwise + /* if threads not allowed, allocate a record buffer. otherwise * create a ring, from which buffers will be taken. */ if ( singlethreaded ) { diff --git a/common/main.c b/common/main.c index 25c0838..d4dbe28 100644 --- a/common/main.c +++ b/common/main.c @@ -32,6 +32,7 @@ #include #include #include +#include #include "exit.h" #include "types.h" @@ -117,7 +118,7 @@ bool_t miniroot = BOOL_TRUE; #endif /* HIDDEN */ bool_t pipeline = BOOL_FALSE; bool_t stdoutpiped = BOOL_FALSE; -pid_t parentpid; +pthread_t parenttid; char *sistr; size_t pgsz; size_t pgmask; @@ -195,10 +196,10 @@ main( int argc, char *argv[] ) */ mlog_init0(); - /* Get the parent's pid. will be used in signal handling + /* Get the parent's pthread id. will be used * to differentiate parent from children. */ - parentpid = getpid( ); + parenttid = pthread_self( ); rval = atexit(mlog_exit_flush); assert(rval == 0); @@ -395,11 +396,11 @@ main( int argc, char *argv[] ) ASSERT( ( intgen_t )pgsz > 0 ); pgmask = pgsz - 1; - /* report parent pid + /* report parent tid */ mlog( MLOG_DEBUG | MLOG_PROC, - "parent pid is %d\n", - parentpid ); + "parent tid is %lu\n", + parenttid ); /* get the current working directory: this is where we will dump * core, if necessary. some tmp files may be placed here as well. @@ -572,7 +573,7 @@ main( int argc, char *argv[] ) sigaddset( &blocked_set, SIGTERM ); sigaddset( &blocked_set, SIGQUIT ); sigaddset( &blocked_set, SIGALRM ); - sigprocmask( SIG_SETMASK, &blocked_set, NULL ); + pthread_sigmask( SIG_SETMASK, &blocked_set, NULL ); sa.sa_handler = sighandler; sigaction( SIGINT, &sa, NULL ); @@ -676,7 +677,6 @@ main( int argc, char *argv[] ) if ( ! init_error ) { for ( stix = 0 ; stix < drivecnt ; stix++ ) { ok = cldmgr_create( childmain, - CLONE_VM, stix, "child", ( void * )stix ); @@ -895,7 +895,7 @@ main( int argc, char *argv[] ) if ( coredump_requested ) { mlog( MLOG_DEBUG | MLOG_PROC, "core dump requested, aborting (pid %d)\n", - parentpid ); + getpid() ); abort(); } @@ -1560,7 +1560,7 @@ childmain( void *arg1 ) drivep = drivepp[ stix ]; ( * drivep->d_opsp->do_quit )( drivep ); - exit( exitcode ); + return exitcode; } diff --git a/common/mlog.c b/common/mlog.c index 2265895..b0135b9 100644 --- a/common/mlog.c +++ b/common/mlog.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "types.h" #include "qlock.h" @@ -40,7 +41,7 @@ extern char *progname; extern void usage( void ); -extern pid_t parentpid; +extern pthread_t parenttid; #ifdef DUMP static FILE *mlog_fp = NULL; /* stderr */; @@ -385,7 +386,7 @@ mlog_va( intgen_t levelarg, char *fmt, va_list args ) if ( ! ( levelarg & MLOG_BARE )) { intgen_t streamix; - streamix = stream_getix( getpid() ); + streamix = stream_getix( pthread_self( ) ); if ( mlog_showss ) { sprintf( mlog_ssstr, ":%s", mlog_ss_names[ ss ] ); @@ -568,10 +569,10 @@ rv_getdesc(rv_t rv) int _mlog_exit( const char *file, int line, int exit_code, rv_t rv ) { - pid_t pid; + pthread_t tid; const struct rv_map *rvp; - pid = getpid(); + tid = pthread_self(); rvp = rv_getdesc(rv); @@ -595,7 +596,7 @@ _mlog_exit( const char *file, int line, int exit_code, rv_t rv ) * most accurate information about the termination condition. */ - if (pid == parentpid) { + if ( pthread_equal( tid, parenttid ) ) { if (mlog_main_exit_code == -1) { mlog_main_exit_code = exit_code; mlog_main_exit_return = rv; @@ -608,7 +609,7 @@ _mlog_exit( const char *file, int line, int exit_code, rv_t rv ) int exit_code; rv_t exit_return, exit_hint; - if (stream_get_exit_status(pid, + if (stream_get_exit_status(tid, states, N(states), &state, @@ -618,8 +619,8 @@ _mlog_exit( const char *file, int line, int exit_code, rv_t rv ) &exit_hint)) { if (exit_code == -1) { - stream_set_code(pid, exit_code); - stream_set_return(pid, rv); + stream_set_code(tid, exit_code); + stream_set_return(tid, rv); } } } @@ -630,10 +631,10 @@ _mlog_exit( const char *file, int line, int exit_code, rv_t rv ) void _mlog_exit_hint( const char *file, int line, rv_t rv ) { - pid_t pid; + pthread_t tid; const struct rv_map *rvp; - pid = getpid(); + tid = pthread_self(); rvp = rv_getdesc(rv); mlog( MLOG_DEBUG | MLOG_NOLOCK, @@ -655,10 +656,10 @@ _mlog_exit_hint( const char *file, int line, rv_t rv ) * information about the termination condition. */ - if (pid == parentpid) + if ( pthread_equal( tid, parenttid ) ) mlog_main_exit_hint = rv; else - stream_set_hint( pid, rv ); + stream_set_hint( tid, rv ); } @@ -670,10 +671,10 @@ mlog_get_hint( void ) bool_t ok; rv_t hint; - if (getpid() == parentpid) + if ( pthread_equal( pthread_self(), parenttid ) ) return mlog_main_exit_hint; - ok = stream_get_exit_status(getpid(), states, N(states), + ok = stream_get_exit_status(pthread_self(), states, N(states), NULL, NULL, NULL, NULL, &hint); ASSERT(ok); return hint; @@ -697,8 +698,8 @@ mlog_get_hint( void ) void mlog_exit_flush(void) { - pid_t pids[STREAM_SIMMAX]; - int i, npids; + pthread_t tids[STREAM_SIMMAX]; + int i, ntids; const struct rv_map *rvp; stream_state_t states[] = { S_RUNNING, S_ZOMBIE }; bool_t incomplete = BOOL_FALSE; @@ -713,13 +714,13 @@ mlog_exit_flush(void) if (mlog_main_exit_hint == RV_USAGE) return; - npids = stream_find_all(states, N(states), pids, STREAM_SIMMAX); - if (npids > 0) { + ntids = stream_find_all(states, N(states), tids, STREAM_SIMMAX); + if (ntids > 0) { /* print the state of all the streams */ fprintf(mlog_fp, _("%s: %s Summary:\n"), progname, PROGSTR_CAPS ); - for (i = 0; i < npids; i++) { + for (i = 0; i < ntids; i++) { stream_state_t state; intgen_t streamix; int exit_code; @@ -727,7 +728,7 @@ mlog_exit_flush(void) /* REFERENCED */ bool_t ok; - ok = stream_get_exit_status(pids[i], + ok = stream_get_exit_status(tids[i], states, N(states), &state, @@ -743,11 +744,10 @@ mlog_exit_flush(void) /* print status of this stream */ rvp = rv_getdesc(rv); fprintf(mlog_fp, - _("%s: stream %d (pid %d) %s " + _("%s: stream %d %s " "%s (%s)\n"), progname, streamix, - pids[i], drivepp[streamix]->d_pathname, rvp->rv_string, rvp->rv_desc); diff --git a/common/ring.c b/common/ring.c index b6074d1..0d2feb0 100644 --- a/common/ring.c +++ b/common/ring.c @@ -123,7 +123,6 @@ ring_create( size_t ringlen, /* kick off the slave thread */ ok = cldmgr_create( ring_slave_entry, - CLONE_VM, drive_index, _("slave"), ringp ); @@ -417,11 +416,7 @@ ring_slave_entry( void *ringctxp ) sigaddset( &blocked_set, SIGTERM ); sigaddset( &blocked_set, SIGQUIT ); sigaddset( &blocked_set, SIGALRM ); - sigprocmask( SIG_SETMASK, &blocked_set, NULL ); - - /* record slave pid to be used to kill slave - */ - ringp->r_slavepid = getpid( ); + pthread_sigmask( SIG_SETMASK, &blocked_set, NULL ); /* loop reading and precessing messages until told to die */ @@ -494,5 +489,5 @@ ring_slave_entry( void *ringctxp ) ring_slave_put( ringp, msgp ); } - exit( 0 ); + return 0; } diff --git a/common/ring.h b/common/ring.h index 56e3924..caa505c 100644 --- a/common/ring.h +++ b/common/ring.h @@ -134,7 +134,6 @@ struct ring { time32_t r_first_io_time; off64_t r_all_io_cnt; /* ALL BELOW PRIVATE!!! */ - pid_t r_slavepid; size_t r_len; ring_msg_t *r_msgp; size_t r_ready_in_ix; diff --git a/common/sproc.c b/common/sproc.c deleted file mode 100644 index 3b1425a..0000000 --- a/common/sproc.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - * - * 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. - * - * This program is distributed in the hope that it would be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include - -#define STACKSIZE 65536 - -int -sproc (int (*entry) (void *), int flags, void *arg) -{ - int retval = -1; -#ifdef HIDDEN - void *newstack; - - if ( (newstack = calloc (1, STACKSIZE)) != NULL ) { - void ** stackp = ((void **)newstack)+(STACKSIZE -1)/sizeof(void*); - - flags |= SIGCHLD; - - retval = clone (entry, stackp, flags, arg); - } -#endif - - return retval; -} diff --git a/common/sproc.h b/common/sproc.h deleted file mode 100644 index 46111ff..0000000 --- a/common/sproc.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - * - * 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. - * - * This program is distributed in the hope that it would be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -#ifndef SPROC_H -#define SPROC_H - -int sproc (int (*) (void *), int, void *); - -#endif /* SPROC_H */ diff --git a/common/stream.c b/common/stream.c index adaf7c0..48e25ee 100644 --- a/common/stream.c +++ b/common/stream.c @@ -19,18 +19,19 @@ #include #include +#include + #include "types.h" #include "exit.h" #include "stream.h" #include "lock.h" #include "mlog.h" -#define PROCMAX ( STREAM_SIMMAX * 2 + 1 ) #define N(a) (sizeof((a)) / sizeof((a)[0])) struct spm { stream_state_t s_state; - pid_t s_pid; + pthread_t s_tid; intgen_t s_ix; int s_exit_code; rv_t s_exit_return; @@ -38,37 +39,28 @@ struct spm { }; typedef struct spm spm_t; -extern pid_t parentpid; static spm_t spm[ STREAM_SIMMAX * 3 ]; static bool_t initialized = BOOL_FALSE; void stream_init( void ) { -#ifdef HIDDEN - /* REFERENCED */ - intgen_t rval; - - rval = ( intgen_t )usconfig( CONF_INITUSERS, PROCMAX ); - ASSERT( rval >= 0 ); -#endif /* HIDDEN */ - ( void )memset( ( void * )spm, 0, sizeof( spm )); initialized = BOOL_TRUE; } /* * Note that the stream list structure (updated via the stream_* functions) - * is indexed by pid. Multiple processes can be registered against the same - * stream index, typically: the primary content process that does the work; - * and the drive slave process, which just processes stuff off the ring buffer. - * In general having multiple pids registered per stream is not an issue for - * termination status reporting, as the mlog_exit* logging functions only + * is indexed by pthread_t (tid). Multiple processes can be registered against + * the same stream index, typically: the primary content process that does the + * work; and the drive slave process, which just processes stuff off the ring + * buffer. In general having multiple tids registered per stream is not an issue + * for termination status reporting, as the mlog_exit* logging functions only * ever get called out of the primary content process. */ void -stream_register( pid_t pid, intgen_t streamix ) +stream_register( pthread_t tid, intgen_t streamix ) { spm_t *p = spm; spm_t *ep = spm + N(spm); @@ -87,7 +79,7 @@ stream_register( pid_t pid, intgen_t streamix ) if ( p >= ep ) return; - p->s_pid = pid; + p->s_tid = tid; p->s_ix = streamix; p->s_exit_code = -1; p->s_exit_return = RV_NONE; @@ -95,14 +87,14 @@ stream_register( pid_t pid, intgen_t streamix ) } void -stream_dead( pid_t pid ) +stream_dead( pthread_t tid ) { spm_t *p = spm; spm_t *ep = spm + N(spm); lock(); for ( ; p < ep ; p++ ) - if ( p->s_pid == pid ) { + if ( pthread_equal( p->s_tid, tid ) ) { p->s_state = S_ZOMBIE; break; } @@ -111,14 +103,14 @@ stream_dead( pid_t pid ) } void -stream_free( pid_t pid ) +stream_free( pthread_t tid ) { spm_t *p = spm; spm_t *ep = spm + N(spm); lock(); for ( ; p < ep ; p++ ) { - if ( p->s_pid == pid ) { + if ( pthread_equal( p->s_tid, tid ) ) { (void) memset( (void *) p, 0, sizeof(spm_t) ); p->s_state = S_FREE; break; @@ -130,22 +122,22 @@ stream_free( pid_t pid ) int stream_find_all( stream_state_t states[], int nstates, - pid_t pids[], int npids ) + pthread_t tids[], int ntids ) { int i, count = 0; spm_t *p = spm; spm_t *ep = spm + N(spm); - ASSERT(nstates > 0 && npids > 0); + ASSERT(nstates > 0 && ntids > 0); if (!initialized) return 0; /* lock - make sure we get a consistent snapshot of the stream status */ lock(); - for ( ; p < ep && count < npids; p++ ) + for ( ; p < ep && count < ntids; p++ ) for (i = 0; i < nstates; i++) if (p->s_state == states[i]) { - pids[count++] = p->s_pid; + tids[count++] = p->s_tid; break; } unlock(); @@ -153,7 +145,7 @@ stream_find_all( stream_state_t states[], int nstates, } static spm_t * -stream_find( pid_t pid, stream_state_t s[], int nstates ) +stream_find( pthread_t tid, stream_state_t s[], int nstates ) { int i; spm_t *p = spm; @@ -163,7 +155,7 @@ stream_find( pid_t pid, stream_state_t s[], int nstates ) /* note we don't lock the stream array in this function */ for ( ; p < ep ; p++ ) - if ( p->s_pid == pid ) { + if ( pthread_equal( p->s_tid, tid ) ) { /* check state */ for (i = 0; i < nstates; i++) if (p->s_state == s[i]) @@ -174,8 +166,8 @@ stream_find( pid_t pid, stream_state_t s[], int nstates ) { static const char *state_strings[] = { "S_FREE", "S_RUNNING", "S_ZOMBIE" }; mlog( MLOG_DEBUG | MLOG_ERROR | MLOG_NOLOCK | MLOG_BARE, - "stream_find(): no stream with pid: %d and state%s:", - pid, nstates == 1 ? "" : "s" ); + "stream_find(): no stream with tid: %lu and state%s:", + tid, nstates == 1 ? "" : "s" ); for (i = 0; i < nstates; i++) mlog( MLOG_DEBUG | MLOG_ERROR | MLOG_NOLOCK | MLOG_BARE, " %s", state_strings[s[i]]); @@ -187,20 +179,18 @@ stream_find( pid_t pid, stream_state_t s[], int nstates ) } /* - * Note, the following function is called from two places: - * main.c:sighandler(), and mlog.c:mlog_va() in the first case we - * aren't allowed to take locks, and in the second locking may be - * disabled and we are already protected by another lock. So no - * locking is done in this function. + * Note, the following function is called from mlog.c:mlog_va(), + * where locking may be disabled and we are already protected by + * another lock. So no locking is done in this function. */ intgen_t -stream_getix( pid_t pid ) +stream_getix( pthread_t tid ) { stream_state_t states[] = { S_RUNNING }; spm_t *p; intgen_t ix; - p = stream_find( pid, states, N(states) ); + p = stream_find( tid, states, N(states) ); ix = p ? p->s_ix : -1; return ix; } @@ -213,43 +203,43 @@ stream_getix( pid_t pid ) * streams. */ -#define stream_set(field_name, pid, value) \ +#define stream_set(field_name, tid, value) \ stream_state_t states[] = { S_RUNNING }; \ spm_t *p; \ - pid_t mypid = getpid(); \ + pthread_t mytid = pthread_self(); \ \ - if (mypid != (pid)) { \ + if ( !pthread_equal(mytid, (tid))) { \ mlog( MLOG_DEBUG | MLOG_ERROR | MLOG_NOLOCK, \ "stream_set_" #field_name "(): " \ - "foreign stream (pid %d) " \ - "not permitted to update this stream (pid %d)\n", \ - mypid, (pid)); \ + "foreign stream (tid %lu) " \ + "not permitted to update this stream (tid %lu)\n",\ + mytid, (tid)); \ return; \ } \ \ lock(); \ - p = stream_find( (pid), states, N(states) ); \ + p = stream_find( (tid), states, N(states) ); \ if (p) p->s_exit_ ## field_name = (value); \ unlock(); -void stream_set_code( pid_t pid, int exit_code ) +void stream_set_code( pthread_t tid, int exit_code ) { - stream_set( code, pid, exit_code ); + stream_set( code, tid, exit_code ); } -void stream_set_return( pid_t pid, rv_t rv ) +void stream_set_return( pthread_t tid, rv_t rv ) { - stream_set( return, pid, rv ); + stream_set( return, tid, rv ); } -void stream_set_hint( pid_t pid, rv_t rv ) +void stream_set_hint( pthread_t tid, rv_t rv ) { - stream_set( hint, pid, rv ); + stream_set( hint, tid, rv ); } bool_t -stream_get_exit_status( pid_t pid, +stream_get_exit_status( pthread_t tid, stream_state_t states[], int nstates, stream_state_t *state, @@ -262,7 +252,7 @@ stream_get_exit_status( pid_t pid, spm_t *p; lock(); - p = stream_find( pid, states, nstates ); + p = stream_find( tid, states, nstates ); if (! p) goto unlock; if (state) *state = p->s_state; diff --git a/common/stream.h b/common/stream.h index 984634c..292792e 100644 --- a/common/stream.h +++ b/common/stream.h @@ -42,19 +42,19 @@ typedef enum { S_FREE, S_RUNNING, S_ZOMBIE } stream_state_t; extern void stream_init( void ); -extern void stream_register( pid_t pid, intgen_t streamix ); -extern void stream_dead( pid_t pid ); -extern void stream_free( pid_t pid ); +extern void stream_register( pthread_t tid, intgen_t streamix ); +extern void stream_dead( pthread_t tid ); +extern void stream_free( pthread_t tid ); extern int stream_find_all( stream_state_t states[], int nstates, - pid_t pids[], - int npids ); -extern intgen_t stream_getix( pid_t pid ); -extern void stream_set_code( pid_t pid, int code ); -extern void stream_set_return( pid_t pid, rv_t rv ); -extern void stream_set_hint( pid_t pid, rv_t rv ); -extern bool_t stream_exists( pid_t pid ); -extern bool_t stream_get_exit_status( pid_t pid, + pthread_t tids[], + int ntids ); +extern intgen_t stream_getix( pthread_t tid ); +extern void stream_set_code( pthread_t tid, int code ); +extern void stream_set_return( pthread_t tid, rv_t rv ); +extern void stream_set_hint( pthread_t tid, rv_t rv ); +extern bool_t stream_exists( pthread_t tid ); +extern bool_t stream_get_exit_status( pthread_t tid, stream_state_t states[], int nstates, stream_state_t *state, diff --git a/dump/Makefile b/dump/Makefile index d193f68..97879fa 100644 --- a/dump/Makefile +++ b/dump/Makefile @@ -30,7 +30,6 @@ COMMINCL = \ ts_mtio.h \ types.h \ util.h \ - sproc.h \ rec_hdr.h INVINCL = \ @@ -68,8 +67,7 @@ COMMON = \ ring.c \ stream.c \ timeutil.c \ - util.c \ - sproc.c + util.c LOCALS = \ content.c \ diff --git a/dump/content.c b/dump/content.c index 64bfe54..33f1166 100644 --- a/dump/content.c +++ b/dump/content.c @@ -1666,12 +1666,12 @@ baseuuidbypass: sigaddset( &tty_set, SIGINT ); sigaddset( &tty_set, SIGQUIT ); sigaddset( &tty_set, SIGHUP ); - sigprocmask( SIG_BLOCK, &tty_set, &orig_set ); + pthread_sigmask( SIG_BLOCK, &tty_set, &orig_set ); result = create_inv_session( gwhdrtemplatep, &fsid, mntpnt, fsdevice, subtreecnt, strmix ); - sigprocmask( SIG_SETMASK, &orig_set, NULL ); + pthread_sigmask( SIG_SETMASK, &orig_set, NULL ); if ( !result ) { return BOOL_FALSE; diff --git a/restore/Makefile b/restore/Makefile index ce3d6b4..c6f3f25 100644 --- a/restore/Makefile +++ b/restore/Makefile @@ -25,7 +25,6 @@ COMMINCL = \ qlock.h \ rec_hdr.h \ ring.h \ - sproc.h \ stream.h \ timeutil.h \ ts_mtio.h \ @@ -64,7 +63,6 @@ COMMON = \ path.c \ qlock.c \ ring.c \ - sproc.c \ stream.c \ timeutil.c \ util.c diff --git a/restore/content.c b/restore/content.c index 8dfa456..0108a40 100644 --- a/restore/content.c +++ b/restore/content.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "types.h" #include "timeutil.h" @@ -2227,7 +2228,7 @@ content_stream_restore( ix_t thrdix ) #if DEBUG_DUMPSTREAMS { static int count[STREAM_MAX] = {0}; - intgen_t streamix = stream_getix( getpid() ); + intgen_t streamix = stream_getix( pthread_self() ); if (++(count[streamix]) == 30) { mlog( MLOG_TRACE, "still waiting for dirs to be restored\n"); @@ -2390,7 +2391,7 @@ content_stream_restore( ix_t thrdix ) #if DEBUG_DUMPSTREAMS { static int count[STREAM_MAX] = {0}; - intgen_t streamix = stream_getix( getpid() ); + intgen_t streamix = stream_getix( pthread_self() ); if (++(count[streamix]) == 30) { mlog( MLOG_NORMAL, "still waiting for dirs post-processing\n"); -- 1.7.0.4 From wkendall@sgi.com Mon Nov 7 14:59:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7KxidJ076053 for ; Mon, 7 Nov 2011 14:59:44 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id D903F8F8033; Mon, 7 Nov 2011 12:59:40 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 81A7570016E4; Mon, 7 Nov 2011 14:59:40 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id 4B5F820E36FB; Mon, 7 Nov 2011 14:59:40 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH v2 4/8] xfsdump: simplify qlock ordinal bitmap Date: Mon, 7 Nov 2011 14:58:27 -0600 Message-Id: <1320699511-12281-5-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320699511-12281-1-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The qlock abstraction manages an array of ordinal bitmaps, one bitmap for each thread. The bitmap indicates which locks a thread is holding and is used to verify that the locks are obtained in the correct order. There is no need to use an array to store the bitmaps, and in fact adding entries to the array is broken because qlock_thrdcnt is not protected by a lock. A simpler approach is to create a per-thread bitmap using thread local storage. With this change, there is no need for each new thread to register with the qlock abstraction, so qlock_thrdinit() goes away. Remove qlock_init() since it can be statically initialized, and that means there's no need for a flag (qlock_inited) indicating that the module has been initialized. Also there's no longer a need to track or limit the number of threads that the qlock abstraction can handle. Signed-off-by: Bill Kendall Reviewed-by: Christoph Hellwig --- common/cldmgr.c | 4 - common/main.c | 7 -- common/qlock.c | 191 ++++--------------------------------------------------- common/qlock.h | 11 +--- 4 files changed, 14 insertions(+), 199 deletions(-) diff --git a/common/cldmgr.c b/common/cldmgr.c index 7784a15..d327bab 100644 --- a/common/cldmgr.c +++ b/common/cldmgr.c @@ -213,12 +213,8 @@ cldmgr_entry( void *arg1 ) { cld_t *cldp = ( cld_t * )arg1; pid_t pid = getpid( ); - /* REFERENCED */ - bool_t ok; cldp->c_pid = pid; - ok = qlock_thrdinit( ); - ASSERT( ok ); if ( ( intgen_t )( cldp->c_streamix ) >= 0 ) { stream_register( pid, ( intgen_t )cldp->c_streamix ); } diff --git a/common/main.c b/common/main.c index be8a921..25c0838 100644 --- a/common/main.c +++ b/common/main.c @@ -357,13 +357,6 @@ main( int argc, char *argv[] ) miniroot = BOOL_TRUE; } - /* initialize the spinlock allocator - */ - ok = qlock_init( ); - if ( ! ok ) { - return mlog_exit(EXIT_ERROR, RV_INIT); - } - /* initialize message logging (stage 2) - allocate the message lock */ ok = mlog_init2( ); diff --git a/common/qlock.c b/common/qlock.c index adaa7dd..ae8466d 100644 --- a/common/qlock.c +++ b/common/qlock.c @@ -37,14 +37,6 @@ typedef struct qlock qlock_t; /* internal qlock */ -#define QLOCK_THRDCNTMAX 256 - /* arbitrary limit on number of threads supported - */ - -static size_t qlock_thrdcnt; - /* how many threads have checked in - */ - typedef size_t ordmap_t; /* bitmap of ordinals. used to track what ordinals have * been allocated. @@ -58,12 +50,7 @@ static ordmap_t qlock_ordalloced; /* to enforce allocation of only one lock to each ordinal value */ -struct thrddesc { - pthread_t td_tid; - ordmap_t td_ordmap; -}; -typedef struct thrddesc thrddesc_t; -static thrddesc_t qlock_thrddesc[ QLOCK_THRDCNTMAX ]; +static __thread ordmap_t thread_ordmap; /* holds the ordmap for each thread */ @@ -83,69 +70,12 @@ static thrddesc_t qlock_thrddesc[ QLOCK_THRDCNTMAX ]; /* checks if any bits less than ord are set in the ordmap */ -/* REFERENCED */ -static bool_t qlock_inited = BOOL_FALSE; - /* to sanity check initialization - */ - -/* forward declarations - */ -static void qlock_ordmap_add( pthread_t tid ); -static ordmap_t *qlock_ordmapp_get( pthread_t tid ); -static ix_t qlock_thrdix_get( pthread_t tid ); - -bool_t -qlock_init( void ) -{ - /* sanity checks - */ - ASSERT( ! qlock_inited ); - - /* initially no threads checked in - */ - qlock_thrdcnt = 0; - - /* initially no ordinals allocated - */ - qlock_ordalloced = 0; - - /* now say we are initialized - */ - qlock_inited = BOOL_TRUE; - - /* add the parent thread to the thread list - */ - if ( ! qlock_thrdinit( )) { - qlock_inited = BOOL_FALSE; - return BOOL_FALSE; - } - - return BOOL_TRUE; -} - -bool_t -qlock_thrdinit( void ) -{ - /* sanity checks - */ - ASSERT( qlock_inited ); - - /* add thread to ordmap list - */ - qlock_ordmap_add( pthread_self() ); - - return BOOL_TRUE; -} qlockh_t qlock_alloc( ix_t ord ) { qlock_t *qlockp; - /* sanity checks - */ - ASSERT( qlock_inited ); - /* verify the ordinal is not already taken, and mark as taken */ ASSERT( ! QLOCK_ORDMAP_GET( qlock_ordalloced, ord )); @@ -172,48 +102,34 @@ qlock_lock( qlockh_t qlockh ) { qlock_t *qlockp = ( qlock_t * )qlockh; pthread_t tid; - ix_t thrdix; - ordmap_t *ordmapp; /* REFERENCED */ intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - - /* get the caller's tid and thread index + /* get the caller's tid */ tid = pthread_self(); - thrdix = qlock_thrdix_get( tid ); - - /* get the ordmap for this thread - */ - ordmapp = qlock_ordmapp_get( tid ); - /* assert that this lock not already held by this thread */ - if ( QLOCK_ORDMAP_GET( *ordmapp, qlockp->ql_ord )) { + if ( QLOCK_ORDMAP_GET( thread_ordmap, qlockp->ql_ord )) { mlog( MLOG_NORMAL | MLOG_WARNING | MLOG_NOLOCK, - _("lock already held: thrd %d tid %lu ord %d map %x\n"), - thrdix, + _("lock already held: tid %lu ord %d map %x\n"), tid, qlockp->ql_ord, - *ordmapp ); + thread_ordmap ); } - ASSERT( ! QLOCK_ORDMAP_GET( *ordmapp, qlockp->ql_ord )); + ASSERT( ! QLOCK_ORDMAP_GET( thread_ordmap, qlockp->ql_ord )); /* assert that no locks with a lesser ordinal are held by this thread */ - if ( QLOCK_ORDMAP_CHK( *ordmapp, qlockp->ql_ord )) { + if ( QLOCK_ORDMAP_CHK( thread_ordmap, qlockp->ql_ord )) { mlog( MLOG_NORMAL | MLOG_WARNING | MLOG_NOLOCK, - _("lock ordinal violation: thrd %d tid %lu ord %d map %x\n"), - thrdix, + _("lock ordinal violation: tid %lu ord %d map %x\n"), tid, qlockp->ql_ord, - *ordmapp ); + thread_ordmap ); } - ASSERT( ! QLOCK_ORDMAP_CHK( *ordmapp, qlockp->ql_ord )); + ASSERT( ! QLOCK_ORDMAP_CHK( thread_ordmap, qlockp->ql_ord )); /* acquire the lock */ @@ -222,32 +138,23 @@ qlock_lock( qlockh_t qlockh ) /* add ordinal to this threads ordmap */ - QLOCK_ORDMAP_SET( *ordmapp, qlockp->ql_ord ); + QLOCK_ORDMAP_SET( thread_ordmap, qlockp->ql_ord ); } void qlock_unlock( qlockh_t qlockh ) { qlock_t *qlockp = ( qlock_t * )qlockh; - ordmap_t *ordmapp; /* REFERENCED */ intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - - /* get the ordmap for this thread - */ - ordmapp = qlock_ordmapp_get( pthread_self() ); - /* verify lock is held by this thread */ - ASSERT( QLOCK_ORDMAP_GET( *ordmapp, qlockp->ql_ord )); + ASSERT( QLOCK_ORDMAP_GET( thread_ordmap, qlockp->ql_ord )); /* clear lock's ord from thread's ord map */ - QLOCK_ORDMAP_CLR( *ordmapp, qlockp->ql_ord ); + QLOCK_ORDMAP_CLR( thread_ordmap, qlockp->ql_ord ); /* release the lock */ @@ -261,10 +168,6 @@ qsem_alloc( ix_t cnt ) sem_t *semp; intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - /* allocate a semaphore */ semp = ( sem_t * )calloc( 1, sizeof( sem_t )); @@ -284,10 +187,6 @@ qsem_free( qsemh_t qsemh ) sem_t *semp = ( sem_t * )qsemh; intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - /* destroy the mutex and condition */ rval = sem_destroy( semp ); @@ -304,10 +203,6 @@ qsemP( qsemh_t qsemh ) sem_t *semp = ( sem_t * )qsemh; intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - /* "P" the semaphore */ rval = sem_wait( semp ); @@ -320,10 +215,6 @@ qsemV( qsemh_t qsemh ) sem_t *semp = ( sem_t * )qsemh; intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - /* "V" the semaphore */ rval = sem_post( semp ); @@ -337,10 +228,6 @@ qsemPwouldblock( qsemh_t qsemh ) int count; intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - rval = sem_getvalue( semp, &count ); ASSERT( !rval ); @@ -354,60 +241,8 @@ qsemPavail( qsemh_t qsemh ) int count; intgen_t rval; - /* sanity checks - */ - ASSERT( qlock_inited ); - rval = sem_getvalue( semp, &count ); ASSERT( !rval ); return count < 0 ? 0 : count; } - -/* internal ordinal map abstraction - */ -static void -qlock_ordmap_add( pthread_t tid ) -{ - ASSERT( qlock_thrdcnt < QLOCK_THRDCNTMAX ); - qlock_thrddesc[ qlock_thrdcnt ].td_tid = tid; - qlock_thrddesc[ qlock_thrdcnt ].td_ordmap = 0; - qlock_thrdcnt++; -} - -static thrddesc_t * -qlock_thrddesc_get( pthread_t tid ) -{ - thrddesc_t *p; - thrddesc_t *endp; - - for ( p = &qlock_thrddesc[ 0 ], - endp = &qlock_thrddesc[ qlock_thrdcnt ] - ; - p < endp - ; - p++ ) { - if ( pthread_equal( p->td_tid, tid ) ) { - return p; - } - } - - return 0; -} - -static ordmap_t * -qlock_ordmapp_get( pthread_t tid ) -{ - thrddesc_t *p; - p = qlock_thrddesc_get( tid ); - return &p->td_ordmap; -} - -static ix_t -qlock_thrdix_get( pthread_t tid ) -{ - thrddesc_t *p; - p = qlock_thrddesc_get( tid ); - ASSERT( p >= &qlock_thrddesc[ 0 ] ); - return ( ix_t )( p - &qlock_thrddesc[ 0 ] ); -} diff --git a/common/qlock.h b/common/qlock.h index ae411bb..6c2dd18 100644 --- a/common/qlock.h +++ b/common/qlock.h @@ -21,7 +21,7 @@ /* qlock - quick locks abstraction * * threads may allocate quick locks using qlock_alloc, and free them with - * qlock_free. the abstraction is initialized with qlock_init. + * qlock_free. * * deadlock detection is accomplished by giving an ordinal number to each * lock allocated, and record all locks held by each thread. locks may not @@ -48,15 +48,6 @@ typedef void *qlockh_t; /* opaque handle */ -extern bool_t qlock_init( void ); - /* called by main to initialize abstraction. returns FALSE if - * utility should abort. - */ - -extern bool_t qlock_thrdinit( void ); - /* called by each thread to prepare it for participation - */ - extern qlockh_t qlock_alloc( ix_t ord ); /* allocates a qlock with the specified ordinal. returns * NULL if lock can't be allocated. -- 1.7.0.4 From wkendall@sgi.com Mon Nov 7 15:04:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7L40Ji076282 for ; Mon, 7 Nov 2011 15:04:00 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id CDBF0AC007; Mon, 7 Nov 2011 13:03:56 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 94D3070016E1; Mon, 7 Nov 2011 15:03:56 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id 5655320E36F6; Mon, 7 Nov 2011 15:03:56 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH] xfstests: ignore fsstress file count for 022 Date: Mon, 7 Nov 2011 15:03:52 -0600 Message-Id: <1320699832-12693-1-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The recently added fsstress operations result in a different number of directories and files being created for xfsdump test 022, which causes the test to fail since the expected xfsrestore output records these numbers. Filter out the numbers to prevent this from breaking in the future. Also increase the number of fsstress operations used to populate the filesystem so that we get roughly the same number of directories and files as we used to for this test. Signed-off-by: Bill Kendall --- 022 | 3 ++- 022.out.irix | 2 +- 022.out.linux | 2 +- common.dump | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/022 b/022 index 76d18e6..b83b063 100755 --- a/022 +++ b/022 @@ -53,7 +53,8 @@ _require_tape $TAPE_DEV _create_dumpdir_stress _erase_hard _do_dump_sub -_do_restore +# filter out the file count, it changes as fsstress adds new operations +_do_restore | sed -e "/entries processed$/s/[0-9][0-9]*/NUM/g" _ls_compare_sub # success, all done diff --git a/022.out.irix b/022.out.irix index 725d6cd..f72876a 100644 --- a/022.out.irix +++ b/022.out.irix @@ -46,7 +46,7 @@ xfsrestore: searching media for directory dump xfsrestore: preparing drive xfsrestore: examining media file 0 xfsrestore: reading directories -xfsrestore: 30 directories and 89 entries processed +xfsrestore: NUM directories and NUM entries processed xfsrestore: directory post-processing xfsrestore: restoring non-directory files xfsrestore: restore complete: SECS seconds elapsed diff --git a/022.out.linux b/022.out.linux index 9466747..a843b0c 100644 --- a/022.out.linux +++ b/022.out.linux @@ -46,7 +46,7 @@ xfsrestore: searching media for directory dump xfsrestore: preparing drive xfsrestore: examining media file 0 xfsrestore: reading directories -xfsrestore: 30 directories and 89 entries processed +xfsrestore: NUM directories and NUM entries processed xfsrestore: directory post-processing xfsrestore: restoring non-directory files xfsrestore: restore complete: SECS seconds elapsed diff --git a/common.dump b/common.dump index 31a75c5..493a5f7 100644 --- a/common.dump +++ b/common.dump @@ -301,7 +301,7 @@ _create_dumpdir_stress() _wipe_fs _param="-f link=10 -f creat=10 -f mkdir=10 -f truncate=5 -f symlink=10" - _count=200 + _count=240 rm -rf $dump_dir if ! mkdir $dump_dir; then echo " failed to mkdir $dump_dir" -- 1.7.0.4 From david@fromorbit.com Mon Nov 7 15:22:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7LMeIJ076792 for ; Mon, 7 Nov 2011 15:22:41 -0600 X-ASG-Debug-ID: 1320700957-56c700cc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 300F41488917 for ; Mon, 7 Nov 2011 13:22:38 -0800 (PST) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id tzMeZyMNP21Myb76 for ; Mon, 07 Nov 2011 13:22:38 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAGhLuE55LIil/2dsb2JhbABDqXKBBoFyAQEFOhwjEAgDDgouFCUDIRPAPRKJGQSmIQ Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail05.adl6.internode.on.net with ESMTP; 08 Nov 2011 07:52:37 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RNWeJ-00043Y-MZ; Tue, 08 Nov 2011 08:22:35 +1100 Date: Tue, 8 Nov 2011 08:22:35 +1100 From: Dave Chinner To: Dmitry Monakhov Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu X-ASG-Orig-Subj: Re: [PATCH 09/12] xfstests: add a new test that runs fsstress under ENOSPC conditions Subject: Re: [PATCH 09/12] xfstests: add a new test that runs fsstress under ENOSPC conditions Message-ID: <20111107212235.GH5534@dastard> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> <1320330301-2682-10-git-send-email-dmonakhov@openvz.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320330301-2682-10-git-send-email-dmonakhov@openvz.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1320700959 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79611 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 03, 2011 at 06:24:58PM +0400, Dmitry Monakhov wrote: > During stress testing we want to cover as much code paths as possible > fsstress is very good for this purpose. But it has expandable nature > (disk usage almost continually grow). So once it goes in no ENOSPC > condition it will be where till the end. But by running 'dd' writers > in parallel we can regularly trigger ENOSPC but only for a limited > periods of time because each time it opens the same file with O_TRUNC. ..... So you have a 512MB filesystem, and you do: > +# Disable all sync operations to get higher load > +FSSTRESS_AVOID="$FSSTRESS_AVOID -ffsync=0 -fsync=0 -ffdatasync=0" > +_workout() > +{ > + echo "" > + echo "Run fsstress" > + echo "" > + num_iterations=10 > + enospc_time=2 > + out=$SCRATCH_MNT/fsstress.$$ > + args="-p128 -n999999999 -f setattr=1 $FSSTRESS_AVOID -d $out" > + echo "fsstress $args" >> $here/$seq.full > + $FSSTRESS_PROG $args > /dev/null 2>&1 & run a bunch of fsstress processes > + pid=$! > + echo "Run dd writers in parallel" > + for ((i=0; i < num_iterations; i++)) > + do > + # File will be opened with O_TRUNC each time > + dd if=/dev/zero of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M count=1 \ > + > /dev/null 2>&1 > + sleep $enospc_time > + done Then write the same 1MB file 10 times, 2 seconds apart, giving a total space usage of the dd processes of 1MB over 20s. > + kill $pid > + wait $pid > +} Then kill the fsstress. AFAICT, fsstress won't always fill 511MB in 20s - on my test systems the fill rate is typically around 5s per 100MB, which would result in the filesystem not being filled with this test and hence not exercising ENOSPC. Perhaps this would be better done like test 083, which uses a fixed number of write-only operations per fsstress process that is known to end up at ENOSPC, rather than hoping it gets there in 20s. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Nov 7 15:39:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA7LdBYd077662 for ; Mon, 7 Nov 2011 15:39:11 -0600 X-ASG-Debug-ID: 1320701131-1a7a02420000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3954022903D for ; Mon, 7 Nov 2011 13:25:32 -0800 (PST) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id isJRHpVsLnEyeiiH for ; Mon, 07 Nov 2011 13:25:32 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAGhLuE55LIil/2dsb2JhbABDqXKBBoFyAQEFOhwjEAgDDgouFCUDIRPAPRKJGQSmIQ Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail05.adl6.internode.on.net with ESMTP; 08 Nov 2011 07:55:30 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RNWh8-00044j-6K; Tue, 08 Nov 2011 08:25:30 +1100 Date: Tue, 8 Nov 2011 08:25:30 +1100 From: Dave Chinner To: Dmitry Monakhov Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu X-ASG-Orig-Subj: Re: [PATCH 09/12] xfstests: add a new test that runs fsstress under ENOSPC conditions Subject: Re: [PATCH 09/12] xfstests: add a new test that runs fsstress under ENOSPC conditions Message-ID: <20111107212530.GI5534@dastard> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> <1320330301-2682-10-git-send-email-dmonakhov@openvz.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320330301-2682-10-git-send-email-dmonakhov@openvz.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1320701133 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79612 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 03, 2011 at 06:24:58PM +0400, Dmitry Monakhov wrote: > +# real QA test starts here > +_supported_fs generic > +_supported_os Linux > +_require_scratch > +_need_to_be_root > + > +umount $SCRATCH_DEV 2>/dev/null > +_scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seq.full 2>&1 > +_scratch_mount _require_scratch unmounts the SCRATCH_DEV. no need to do it explicitly. Same for the next new test in the series, too. Cheers, Dave. -- Dave Chinner david@fromorbit.com From aelder@sgi.com Mon Nov 7 20:02:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8224oE085154 for ; Mon, 7 Nov 2011 20:02:04 -0600 Received: from xmail.sgi.com (pv-excas3-dc21-nlb.corp.sgi.com [137.38.102.207]) by relay2.corp.sgi.com (Postfix) with ESMTP id AB7C7304043; Mon, 7 Nov 2011 18:02:01 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Mon, 7 Nov 2011 20:02:01 -0600 Message-ID: <1320717720.3186.87.camel@doink> Subject: Re: [PATCH v2 1/8] xfsdump: link with libpthread From: Alex Elder Reply-To: To: Bill Kendall CC: Date: Mon, 7 Nov 2011 20:02:00 -0600 In-Reply-To: <1320699511-12281-2-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> <1320699511-12281-2-git-send-email-wkendall@sgi.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 2011-11-07 at 14:58 -0600, Bill Kendall wrote: > This patch changes xfsdump/xfsrestore to link with libpthread in > preparation for enabling multi-stream support. The libpthread checks > are the same as those used in xfsprogs. > > Signed-off-by: Bill Kendall > Reviewed-by: Christoph Hellwig Looks good to me. Reviewed-by: Alex Elder From aelder@sgi.com Mon Nov 7 20:02:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA822BY8085178 for ; Mon, 7 Nov 2011 20:02:11 -0600 Received: from xmail.sgi.com (pv-excas3-dc21.corp.sgi.com [137.38.102.206]) by relay3.corp.sgi.com (Postfix) with ESMTP id 32FB1AC004; Mon, 7 Nov 2011 18:02:08 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Mon, 7 Nov 2011 20:02:07 -0600 Message-ID: <1320717726.3186.88.camel@doink> Subject: Re: [PATCH v2 2/8] xfsdump: remove multi-stream synchronous dir dump From: Alex Elder Reply-To: To: Bill Kendall CC: Date: Mon, 7 Nov 2011 20:02:06 -0600 In-Reply-To: <1320699511-12281-3-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> <1320699511-12281-3-git-send-email-wkendall@sgi.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 2011-11-07 at 14:58 -0600, Bill Kendall wrote: > When doing multi-stream dumps, the directories are dumped by each > stream in lock-step fashion. A stream backs up a given directory, > then waits for all others to finish that directory, then they all > move on to the next one. During restore a single stream is chosen to > apply the directory dump. > > This patch changes xfsdump so that only one stream dumps the > directories. The other streams begin dumping files immediately. > This results in a faster backup, which is presumably why multiple > streams are being used in the first place. > > It also removes the barrier routines in qlock.c as they were only > used by the "SYNCDIR" code. > > Signed-off-by: Bill Kendall > Reviewed-by: Christoph Hellwig Nice change. Reviewed-by: Alex Elder From aelder@sgi.com Mon Nov 7 20:02:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA822CJG085187 for ; Mon, 7 Nov 2011 20:02:12 -0600 Received: from xmail.sgi.com (pv-excas3-dc21-nlb.corp.sgi.com [137.38.102.207]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9F77A304043; Mon, 7 Nov 2011 18:02:12 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Mon, 7 Nov 2011 20:02:12 -0600 Message-ID: <1320717731.3186.89.camel@doink> Subject: Re: [PATCH v2 3/8] xfsdump: implement lock abstraction with pthreads From: Alex Elder Reply-To: To: Bill Kendall CC: Date: Mon, 7 Nov 2011 20:02:11 -0600 In-Reply-To: <1320699511-12281-4-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> <1320699511-12281-4-git-send-email-wkendall@sgi.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 2011-11-07 at 14:58 -0600, Bill Kendall wrote: > This patch implements xfsdump's locking abstraction using pthread > locking primitives. The obsolete IRIX locking code has been removed. > > The POSIX semaphore implementation on Linux does not provide a count > of threads waiting to decrement the semaphore, so qsemPblocked() > has been removed. It was called from a few asserts, but the current > count of the semaphore was also checked in adjacent asserts, so > it was deemed acceptable to remove the qsemPblocked() asserts. > > A few debug-level log calls had to be changed to use the "no lock" > flag to prevent locks from being acquired out of order. This is > used in various debug messages throughout xfsdump. > > Signed-off-by: Bill Kendall I have not done a very thorough review, but this looks OK to me. -Alex From aelder@sgi.com Mon Nov 7 20:02:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA822I8M085215 for ; Mon, 7 Nov 2011 20:02:18 -0600 Received: from xmail.sgi.com (pv-excas3-dc21.corp.sgi.com [137.38.102.206]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1517BAC003; Mon, 7 Nov 2011 18:02:18 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Mon, 7 Nov 2011 20:02:17 -0600 Message-ID: <1320717736.3186.90.camel@doink> Subject: Re: [PATCH v2 4/8] xfsdump: simplify qlock ordinal bitmap From: Alex Elder Reply-To: To: Bill Kendall CC: Date: Mon, 7 Nov 2011 20:02:16 -0600 In-Reply-To: <1320699511-12281-5-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> <1320699511-12281-5-git-send-email-wkendall@sgi.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 2011-11-07 at 14:58 -0600, Bill Kendall wrote: > The qlock abstraction manages an array of ordinal bitmaps, one bitmap > for each thread. The bitmap indicates which locks a thread is holding > and is used to verify that the locks are obtained in the correct order. > > There is no need to use an array to store the bitmaps, and in fact > adding entries to the array is broken because qlock_thrdcnt is not > protected by a lock. A simpler approach is to create a per-thread bitmap > using thread local storage. > > With this change, there is no need for each new thread to register with > the qlock abstraction, so qlock_thrdinit() goes away. Remove > qlock_init() since it can be statically initialized, and that means > there's no need for a flag (qlock_inited) indicating that the module has > been initialized. Also there's no longer a need to track or limit the > number of threads that the qlock abstraction can handle. > > Signed-off-by: Bill Kendall > Reviewed-by: Christoph Hellwig Wow, nice cleanup. Reviewed-by: Alex Elder From aelder@sgi.com Mon Nov 7 20:02:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA822Ohm085235 for ; Mon, 7 Nov 2011 20:02:25 -0600 Received: from xmail.sgi.com (pv-excas3-dc21-nlb.corp.sgi.com [137.38.102.207]) by relay1.corp.sgi.com (Postfix) with ESMTP id D20DC8F804B; Mon, 7 Nov 2011 18:02:21 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Mon, 7 Nov 2011 20:02:21 -0600 Message-ID: <1320717740.3186.91.camel@doink> Subject: Re: [PATCH v2 5/8] xfsdump: convert IRIX sproc threads to pthreads From: Alex Elder Reply-To: To: Bill Kendall CC: Date: Mon, 7 Nov 2011 20:02:20 -0600 In-Reply-To: <1320699511-12281-6-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> <1320699511-12281-6-git-send-email-wkendall@sgi.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 2011-11-07 at 14:58 -0600, Bill Kendall wrote: > The existing (disabled) threading code in xfsdump is based on IRIX > sprocs. This patch converts the code to use pthreads. The threading code > remains disabled at this point. > > Changes: > - pid_t to pthread_t > - getpid() to pthread_self() > - "pid1 == pid2" to pthread_equal(tid1, tid2) > - sigprocmask() to pthread_sigmask() > - sproc() to pthread_create() > > Also the following are not referenced and have been removed: > - cldmgr_pid2streamix() > - PROCMAX > - r_slavepid > - sproc.c and sproc.h > > Signed-off-by: Bill Kendall > Reviewed-by: Christoph Hellwig Looks good. Reviewed-by: Alex Elder From aelder@sgi.com Mon Nov 7 20:03:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA823NYi085277 for ; Mon, 7 Nov 2011 20:03:23 -0600 Received: from xmail.sgi.com (pv-excas3-dc21-nlb.corp.sgi.com [137.38.102.207]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2452E8F8050; Mon, 7 Nov 2011 18:03:23 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Mon, 7 Nov 2011 20:03:22 -0600 Message-ID: <1320717802.3186.97.camel@doink> Subject: Re: [PATCH v2 6/8] xfsdump: process thread exit status From: Alex Elder Reply-To: To: Bill Kendall CC: Date: Mon, 7 Nov 2011 20:03:22 -0600 In-Reply-To: <1320699511-12281-7-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> <1320699511-12281-7-git-send-email-wkendall@sgi.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 2011-11-07 at 14:58 -0600, Bill Kendall wrote: > When IRIX sprocs were in use, the main thread was notified of a thread > exit just as if a child process exited -- it received SIGCHLD. The main > thread would grab the pid and exit status, then call cldmgr_died() to > inform it that the child was gone so the slot in the child array could > be freed up for reuse. > > This patch implements a similar mechanism for pthreads. The "c_busy" > field in struct cld has been replaced with a "c_state" field that > indicates whether the array slot is free (C_AVAIL), in use (C_ALIVE), or > is waiting to be joined (C_EXITED). Additionally a "c_exit_code" field > has been added to store the thread's exit value. Normally this is set > when the thread entry function returns, but it is initialized to > EXIT_INTERRUPT in case the thread is cancelled or calls pthread_exit() > rather than returning (neither of which happens in the code today). > > When the child thread starts, it registers a pthread cleanup handler > which takes care of marking the child as C_EXITED and notifies the main > thread that a child is gone. Doing this in a cleanup handler ensures > that it's done regardless of how the thread exits. The main thread's > loop is based around sigsuspsend(), so the notification is done by > sending SIGUSR1. The main thread will then call cldmgr_join() to join > all exited threads and obtain their exit status. > > Additional changes: > * cldmgr_findbypid() has been removed, it's no longer referenced. > * stream_dead() no longer grabs the lock(), because it's called > only from cldmgr_join() which already holds the lock(). > > Signed-off-by: Bill Kendall > Reviewed-by: Christoph Hellwig Looks OK to me. Again, I've looked over this pretty closely, but have not been as thorough as I often am. Reviewed-by: Alex Elder From aelder@sgi.com Mon Nov 7 20:03:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA823ULA085293 for ; Mon, 7 Nov 2011 20:03:30 -0600 Received: from xmail.sgi.com (pv-excas3-dc21.corp.sgi.com [137.38.102.206]) by relay3.corp.sgi.com (Postfix) with ESMTP id BDCF5AC006; Mon, 7 Nov 2011 18:03:28 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Mon, 7 Nov 2011 20:03:28 -0600 Message-ID: <1320717807.3186.98.camel@doink> Subject: Re: [PATCH v2 7/8] xfsdump: path lookup cache must be thread specific From: Alex Elder Reply-To: To: Bill Kendall CC: Date: Mon, 7 Nov 2011 20:03:27 -0600 In-Reply-To: <1320699511-12281-8-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> <1320699511-12281-8-git-send-email-wkendall@sgi.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 2011-11-07 at 14:58 -0600, Bill Kendall wrote: > The xfsrestore path lookup routine (maps an ino + generation number to a > pathname) contains a cache for fast lookups of consecutive files in the > same parent directory. This cache either needs to be protected by a lock > or a cache is needed per thread. I took the latter approach since it > doesn't add lock contention and it increases the cache hit rate (it's > relatively unlikely that each stream is processing files in the same > directory). > > Signed-off-by: Bill Kendall > Reviewed-by: Christoph Hellwig So you're fixing a bug, and making it work better at the same time, by simply adding one keyword. Looks good. Reviewed-by: Alex Elder From aelder@sgi.com Mon Nov 7 20:03:35 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA823ZSx085309 for ; Mon, 7 Nov 2011 20:03:35 -0600 Received: from xmail.sgi.com (pv-excas3-dc21-nlb.corp.sgi.com [137.38.102.207]) by relay1.corp.sgi.com (Postfix) with ESMTP id 87F588F8050; Mon, 7 Nov 2011 18:03:35 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Mon, 7 Nov 2011 20:03:35 -0600 Message-ID: <1320717814.3186.99.camel@doink> Subject: Re: [PATCH v2 8/8] xfsdump: enable multiple streams From: Alex Elder Reply-To: To: Bill Kendall CC: Date: Mon, 7 Nov 2011 20:03:34 -0600 In-Reply-To: <1320699511-12281-9-git-send-email-wkendall@sgi.com> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> <1320699511-12281-9-git-send-email-wkendall@sgi.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 2011-11-07 at 14:58 -0600, Bill Kendall wrote: > IRIX contained an environment referred to as "miniroot" where > sproc threads were either not available, or at least not used > in xfsdump. Throughout xfsdump there's a "miniroot" variable > which indicates whether or not thread support is enabled. On > Linux this variable has always been false in order to disable > support for multiple streams. > > Now that the threading infracstructure has been converted over > to pthreads, this patch removes the "miniroot" variable and > enables the option of using multiple streams. > > Note that another feature in xfsdump, using a ring buffer for > I/O to tapes, also depends on thread support. I'm leaving that > disabled for now until more testing has been done. > > Signed-off-by: Bill Kendall > Reviewed-by: Christoph Hellwig Really, really nice work Bill. Reviewed-by: Alex Elder From aelder@sgi.com Mon Nov 7 20:05:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA825TMJ085357 for ; Mon, 7 Nov 2011 20:05:29 -0600 Received: from xmail.sgi.com (pv-excas3-dc21-nlb.corp.sgi.com [137.38.102.207]) by relay1.corp.sgi.com (Postfix) with ESMTP id AFDF78F8039; Mon, 7 Nov 2011 18:05:29 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Mon, 7 Nov 2011 20:05:29 -0600 Message-ID: <1320717928.3186.100.camel@doink> Subject: Re: [PATCH] xfstests: ignore fsstress file count for 022 From: Alex Elder Reply-To: To: Bill Kendall CC: Date: Mon, 7 Nov 2011 20:05:28 -0600 In-Reply-To: <1320699832-12693-1-git-send-email-wkendall@sgi.com> References: <1320699832-12693-1-git-send-email-wkendall@sgi.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 2011-11-07 at 15:03 -0600, Bill Kendall wrote: > The recently added fsstress operations result in a different > number of directories and files being created for xfsdump test > 022, which causes the test to fail since the expected xfsrestore > output records these numbers. Filter out the numbers to prevent > this from breaking in the future. > > Also increase the number of fsstress operations used to populate > the filesystem so that we get roughly the same number of > directories and files as we used to for this test. > > Signed-off-by: Bill Kendall Looks good. Reviewed-by: Alex Elder From aelder@sgi.com Mon Nov 7 20:11:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA82BW1c085481 for ; Mon, 7 Nov 2011 20:11:32 -0600 Received: from xmail.sgi.com (pv-excas3-dc21.corp.sgi.com [137.38.102.206]) by relay3.corp.sgi.com (Postfix) with ESMTP id 272DAAC006; Mon, 7 Nov 2011 18:11:32 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Mon, 7 Nov 2011 20:11:31 -0600 Message-ID: <1320718291.3186.103.camel@doink> Subject: Re: [PATCH v2] xfstests: add 059 and 060 for multi-stream xfsdump From: Alex Elder Reply-To: To: Bill Kendall CC: Date: Mon, 7 Nov 2011 20:11:31 -0600 In-Reply-To: <1320686536-1399-1-git-send-email-wkendall@sgi.com> References: <1320686536-1399-1-git-send-email-wkendall@sgi.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 2011-11-07 at 11:22 -0600, Bill Kendall wrote: > Implement the multi-stream placeholder tests 059 and 060. The comments > imply that these tests existed on IRIX, but I was unable to find them. > > Test 059 does a simple 4-way dump and restore. Test 060 does a 4-way > dump, then restores each dump file individually (in a cumulative > fashion). > > The tests are skipped if the installed xfsdump does not support > multi-stream output. > > Signed-off-by: Bill Kendall I haven't run these yet, but this looks good. Reviewed-by: Alex Elder From aelder@sgi.com Mon Nov 7 20:11:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA82BcFj085498 for ; Mon, 7 Nov 2011 20:11:38 -0600 Received: from xmail.sgi.com (pv-excas3-dc21-nlb.corp.sgi.com [137.38.102.207]) by relay1.corp.sgi.com (Postfix) with ESMTP id 769C38F8039; Mon, 7 Nov 2011 18:11:38 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Mon, 7 Nov 2011 20:11:38 -0600 Message-ID: <1320718297.3186.104.camel@doink> Subject: Re: [PATCH] xfstests: fix permissions on non-executable tests From: Alex Elder Reply-To: To: Bill Kendall CC: Date: Mon, 7 Nov 2011 20:11:37 -0600 In-Reply-To: <1320688253-2432-1-git-send-email-wkendall@sgi.com> References: <1320688253-2432-1-git-send-email-wkendall@sgi.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 2011-11-07 at 11:50 -0600, Bill Kendall wrote: > Tests that are not executable are made executable when they are > run, causing git to report them as modified. Fix this by > changing non-executable tests to have permissions of 0755. > > Signed-off-by: Bill Kendall Looks good. I update these occasionally so they're all executable again. I guess I should do something so this is more automatic in the future... Thanks. Reviewed-by: Alex Elder From wu.bo@cn.fujitsu.com Mon Nov 7 21:39:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA83dCR7088823 for ; Mon, 7 Nov 2011 21:39:13 -0600 X-ASG-Debug-ID: 1320723550-2b6200530000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 042AB16235EA for ; Mon, 7 Nov 2011 19:39:10 -0800 (PST) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id 7T2NdLvLUv5hN4pJ for ; Mon, 07 Nov 2011 19:39:10 -0800 (PST) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id BC375170125; Tue, 8 Nov 2011 11:39:08 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pA83d7Ue010512; Tue, 8 Nov 2011 11:39:07 +0800 Received: from localhost.localdomain ([10.167.225.174]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011110811390767-21274 ; Tue, 8 Nov 2011 11:39:07 +0800 Message-ID: <4EB8A441.7090506@cn.fujitsu.com> Date: Tue, 08 Nov 2011 11:38:41 +0800 From: WuBo User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: linux-fsdevel@vger.kernel.org, Linux Btrfs , xfs@oss.sgi.com, Christoph Hellwig X-ASG-Orig-Subj: [PATCH v2 0/3] xfstests: Add a group of reservation space test Subject: [PATCH v2 0/3] xfstests: Add a group of reservation space test X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-08 11:39:07, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-08 11:39:09, Serialize complete at 2011-11-08 11:39:09 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1320723551 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0041 1.0000 -1.9944 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.99 X-Barracuda-Spam-Status: No, SCORE=-1.99 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79637 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Changes v1->v2: - Make test-set support generic This patch set add a group of reservation space test. Especailly for btrfs. It includes three parts: copy workload, prealloc and write posix. For test 273, I hope it's usefull for Josef's reserve improve work. For test 274 and 275, the current btrfs is not pass yet. Wu Bo (3): xfstests 273: add a copy and reserve test xfstests 274: add a prealloc and reserve test xfstests 275: add a write and reserve test 273 | 145 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 273.out | 4 ++ 274 | 91 +++++++++++++++++++++++++++++++++++++++ 274.out | 5 ++ 275 | 89 ++++++++++++++++++++++++++++++++++++++ 275.out | 5 ++ group | 3 + 7 files changed, 342 insertions(+), 0 deletions(-) create mode 100755 273 create mode 100644 273.out create mode 100755 274 create mode 100644 274.out create mode 100755 275 create mode 100644 275.out -- 1.7.3.1 From wu.bo@cn.fujitsu.com Mon Nov 7 21:41:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA83fHOa088887 for ; Mon, 7 Nov 2011 21:41:17 -0600 X-ASG-Debug-ID: 1320723668-5ec900410000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4E1AF22A342 for ; Mon, 7 Nov 2011 19:41:13 -0800 (PST) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id PZnW87eXAmOOEHpW for ; Mon, 07 Nov 2011 19:41:13 -0800 (PST) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id 1D0A617011D; Tue, 8 Nov 2011 11:41:07 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pA83f4LU010605; Tue, 8 Nov 2011 11:41:05 +0800 Received: from localhost.localdomain ([10.167.225.174]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011110811410458-21287 ; Tue, 8 Nov 2011 11:41:04 +0800 Message-ID: <4EB8A4B6.3030604@cn.fujitsu.com> Date: Tue, 08 Nov 2011 11:40:38 +0800 From: WuBo User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: linux-fsdevel@vger.kernel.org, Linux Btrfs , xfs@oss.sgi.com, Christoph Hellwig X-ASG-Orig-Subj: [PATCH v2 1/3] xfstests 273: add a copy and reserve test Subject: [PATCH v2 1/3] xfstests 273: add a copy and reserve test References: <4EB8A441.7090506@cn.fujitsu.com> In-Reply-To: <4EB8A441.7090506@cn.fujitsu.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-08 11:41:04, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-08 11:41:07, Serialize complete at 2011-11-08 11:41:07 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1320723676 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79636 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This test is a stress test. It creates a set of threads for coping small files into disk. I use a 2G disk for test, the ENOSPC arises usually but the disk is not full under kenerl 3.0 with intel64. Signed-off-by: Wu Bo --- 273 | 145 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 273.out | 4 ++ group | 1 + 3 files changed, 150 insertions(+), 0 deletions(-) create mode 100755 273 create mode 100644 273.out diff --git a/273 b/273 new file mode 100755 index 0000000..2965132 --- /dev/null +++ b/273 @@ -0,0 +1,145 @@ +#! /bin/bash +# FS QA Test No. 273 +# +# reservation test with heavy cp workload +# +#----------------------------------------------------------------------- +# Copyright (c) 2011-2012 Fujitsu, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +#creator +owner=wu.bo@cn.fujitsu.com + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=0 # success is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -rf $SCRATCH_MNT/* $tmp.* + _scratch_unmount +} + +. ./common.rc +. ./common.filter + +threads=50 +count=1 + +_threads_set() +{ + _cpu_num=`cat /proc/cpuinfo | grep "processor" | wc -l` + threads=$(($_cpu_num * 50)) + if [ $threads -gt 200 ] + then + threads=200 + fi +} + +_file_create() +{ + _i=0 + + if ! mkdir $SCRATCH_MNT/origin + then + echo "mkdir origin err" + status=1 + exit + fi + + cd $SCRATCH_MNT/origin + + _disksize=`df --block-size=1 | grep $SCRATCH_DEV | awk '{print $2}'` + _disksize=$(($_disksize / 3)) + _num=$(($_disksize / $count / $threads / 4096)) + _count=$count + while [ $_i -lt $_num ] + do + dd if=/dev/zero of=file_$_i bs=4096 count=$_count >/dev/null 2>&1 + _i=$(($_i + 1)) + done + + cd $here +} + +_porter() +{ + _suffix=$1 + + if ! mkdir $SCRATCH_MNT/sub_$_suffix + then + echo "mkdir sub_xxx err" + status=1 + exit + fi + + cp -r $SCRATCH_MNT/origin $SCRATCH_MNT/sub_$_suffix >$seq.full 2>&1 + if [ $? -ne 0 ] + then + echo "_porter $_suffix not complete" + fi + + sync +} + +_do_workload() +{ + _pids="" + _pid=1 + + rm -rf $SCRATCH_MNT/* + + _threads_set + _file_create + + _threads=$threads + + while [ $_pid -lt $_threads ] + do + _porter $_pid & + _pids="$_pids $!" + _pid=$(($_pid + 1)) + done + + wait $_pids +} + +# real QA test starts here +_supported_fs generic +_supported_os IRIX Linux +_require_scratch + +echo "------------------------------" +echo "start the workload" +echo "------------------------------" + +rm -f $seq.full + +umount $SCRATCH_DEV 2>/dev/null +_scratch_mkfs_sized $((2 * 1024 * 1024 * 1024)) >>$seq.full 2>&1 +_scratch_mount + +_do_workload + +_check_scratch_fs +status=$? +exit diff --git a/273.out b/273.out new file mode 100644 index 0000000..146af43 --- /dev/null +++ b/273.out @@ -0,0 +1,4 @@ +QA output created by 273 +------------------------------ +start the workload +------------------------------ diff --git a/group b/group index 616cbdd..b8245bf 100644 --- a/group +++ b/group @@ -386,3 +386,4 @@ deprecated 270 auto quota rw prealloc ioctl enospc 271 auto rw quick 272 auto enospc rw +273 auto rw -- 1.7.3.1 From wu.bo@cn.fujitsu.com Mon Nov 7 21:41:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_24, J_CHICKENPOX_47 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA83fdsE088914 for ; Mon, 7 Nov 2011 21:41:39 -0600 X-ASG-Debug-ID: 1320723697-27c3008b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D2CB61623603 for ; Mon, 7 Nov 2011 19:41:37 -0800 (PST) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id nTZwQZ3M0MdMojQl for ; Mon, 07 Nov 2011 19:41:37 -0800 (PST) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id 40C58170128; Tue, 8 Nov 2011 11:41:36 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pA83fYdA010617; Tue, 8 Nov 2011 11:41:34 +0800 Received: from localhost.localdomain ([10.167.225.174]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011110811413420-21293 ; Tue, 8 Nov 2011 11:41:34 +0800 Message-ID: <4EB8A4D4.4000000@cn.fujitsu.com> Date: Tue, 08 Nov 2011 11:41:08 +0800 From: WuBo User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: linux-fsdevel@vger.kernel.org, Linux Btrfs , xfs@oss.sgi.com, Christoph Hellwig X-ASG-Orig-Subj: [PATCH v2 2/3] xfstests 274: add a prealloc and reserve test Subject: [PATCH v2 2/3] xfstests 274: add a prealloc and reserve test References: <4EB8A441.7090506@cn.fujitsu.com> In-Reply-To: <4EB8A441.7090506@cn.fujitsu.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-08 11:41:34, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-08 11:41:36, Serialize complete at 2011-11-08 11:41:36 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1320723698 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79637 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This test is for preallocation test. If the disk is full, just with a prealloc file has some free space that prealloc early. We need to check whether the write to the free space is success or not. Signed-off-by: Wu Bo --- 274 | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 274.out | 5 +++ group | 1 + 3 files changed, 97 insertions(+), 0 deletions(-) create mode 100755 274 create mode 100644 274.out diff --git a/274 b/274 new file mode 100755 index 0000000..b658004 --- /dev/null +++ b/274 @@ -0,0 +1,91 @@ +#! /bin/bash +# FS QA Test No. 274 +# +# preallocation test +# +#----------------------------------------------------------------------- +# Copyright (c) 2011-2012 Fujitsu, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +#creator +owner=wu.bo@cn.fujitsu.com + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=0 # success is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $SCRATCH_MNT/* $tmp.* + _scratch_unmount +} + +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs generic +_supported_os IRIX Linux +_require_scratch + +echo "------------------------------" +echo "preallocation test" +echo "------------------------------" + +rm -f $seq.full + +umount $SCRATCH_DEV 2>/dev/null +_scratch_mkfs_sized $((1 * 1024 * 1024 * 1024)) >>$seq.full 2>&1 +_scratch_mount + +rm -rf $SCRATCH_MNT/* +cd $SCRATCH_MNT +dd if=/dev/zero of=test bs=4K count=1 >/dev/null 2>&1 +if [ $? -ne 0 ] +then + echo "create file err" + status=1 + exit +fi + +fallocate -n -o 4K -l 1M test >/dev/null 2>&1 +if [ $? -ne 0 ] +then + echo "fallocate file err" + status=1 + exit +fi + +dd if=/dev/zero of=tmp1 bs=1M >/dev/null 2>&1 +dd if=/dev/zero of=tmp2 bs=4K >/dev/null 2>&1 +sync + +dd if=/dev/zero of=test seek=1 bs=4K count=2 conv=notrunc >/dev/null 2>&1 +if [ $? -ne 0 ] +then + echo "fill prealloc range err" + status=1 + exit +fi + +echo "done" +exit diff --git a/274.out b/274.out new file mode 100644 index 0000000..edbf3cc --- /dev/null +++ b/274.out @@ -0,0 +1,5 @@ +QA output created by 274 +------------------------------ +preallocation test +------------------------------ +done diff --git a/group b/group index b8245bf..44a9999 100644 --- a/group +++ b/group @@ -387,3 +387,4 @@ deprecated 271 auto rw quick 272 auto enospc rw 273 auto rw +274 auto rw -- 1.7.3.1 From wu.bo@cn.fujitsu.com Mon Nov 7 21:42:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA83gOoP088944 for ; Mon, 7 Nov 2011 21:42:25 -0600 X-ASG-Debug-ID: 1320723739-4b9a00ca0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 40E5622A3BC for ; Mon, 7 Nov 2011 19:42:22 -0800 (PST) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id aSyzZVGUf6LVsOFK for ; Mon, 07 Nov 2011 19:42:22 -0800 (PST) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id E1805170144; Tue, 8 Nov 2011 11:42:13 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pA83gCts010661; Tue, 8 Nov 2011 11:42:12 +0800 Received: from localhost.localdomain ([10.167.225.174]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011110811421138-21310 ; Tue, 8 Nov 2011 11:42:11 +0800 Message-ID: <4EB8A4F9.8060006@cn.fujitsu.com> Date: Tue, 08 Nov 2011 11:41:45 +0800 From: WuBo User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: linux-fsdevel@vger.kernel.org, Linux Btrfs , xfs@oss.sgi.com, Christoph Hellwig X-ASG-Orig-Subj: [PATCH v2 3/3] xfstests 275: add a write and reserve test Subject: [PATCH v2 3/3] xfstests 275: add a write and reserve test References: <4EB8A441.7090506@cn.fujitsu.com> In-Reply-To: <4EB8A441.7090506@cn.fujitsu.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-08 11:42:11, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-08 11:42:14, Serialize complete at 2011-11-08 11:42:14 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1320723744 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79636 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This test is for write-posix test. If writing a file when the disk is almost full, the posix wants the call to write as much as possible but not none. quote the POSIX: If a write() requests that more bytes be written than there is room for (for example, [XSI] [Option Start] the process' file size limit or [Option End] the physical end of a medium), only as many bytes as there is room for shall be written. For example, suppose there is space for 20 bytes more in a file before reaching a limit. A write of 512 bytes will return 20. The next write of a non-zero number of bytes would give a failure return (except as noted below). Signed-off-by: Wu Bo --- 275 | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 275.out | 5 +++ group | 1 + 3 files changed, 95 insertions(+), 0 deletions(-) create mode 100755 275 create mode 100644 275.out diff --git a/275 b/275 new file mode 100755 index 0000000..214262e --- /dev/null +++ b/275 @@ -0,0 +1,89 @@ +#! /bin/bash +# FS QA Test No. 275 +# +# The posix write test. when write size is larger than disk free size, +# should write as more as possible +# +#----------------------------------------------------------------------- +# Copyright (c) 2011-2012 Fujitsu, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +#creator +owner=wu.bo@cn.fujitsu.com + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=0 # success is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $SCRATCH_MNT/* $tmp.* + _scratch_unmount +} + +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs generic +_supported_os IRIX Linux +_require_scratch + +echo "------------------------------" +echo "write lack test" +echo "------------------------------" + +rm -f $seq.full + +umount $SCRATCH_DEV 2>/dev/null +_scratch_mkfs_sized $((1 * 1024 * 1024 * 1024)) >>$seq.full 2>&1 +_scratch_mount + +rm -rf $SCRATCH_MNT/* +cd $SCRATCH_MNT + +dd if=/dev/zero of=tmp1 bs=4K count=1 >/dev/null 2>&1 +if [ $? -ne 0 ] +then + echo "create file err" + status=1 + exit +fi + +dd if=/dev/zero of=tmp2 bs=1M >/dev/null 2>&1 +dd if=/dev/zero of=tmp3 bs=4K >/dev/null 2>&1 +sync + +rm -f tmp1 +sync + +dd if=/dev/zero of=tmp1 bs=8K count=1 >/dev/null 2>&1 +_filesize=`du tmp1 | awk '{print $1}'` +if [ $_filesize -ne 4 ] +then + echo "write file err" + status=1 + exit +fi + +echo "done" +exit diff --git a/275.out b/275.out new file mode 100644 index 0000000..30af43c --- /dev/null +++ b/275.out @@ -0,0 +1,5 @@ +QA output created by 275 +------------------------------ +write lack test +------------------------------ +done diff --git a/group b/group index 44a9999..8cdddd6 100644 --- a/group +++ b/group @@ -388,3 +388,4 @@ deprecated 272 auto enospc rw 273 auto rw 274 auto rw +275 auto rw -- 1.7.3.1 From rjevskiy@gmail.com Tue Nov 8 02:36:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA88athg101338 for ; Tue, 8 Nov 2011 02:36:55 -0600 X-ASG-Debug-ID: 1320741131-394902f00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6825922AAF0 for ; Tue, 8 Nov 2011 00:32:11 -0800 (PST) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id AGhOPFDqYHq5Sgl6 for ; Tue, 08 Nov 2011 00:32:11 -0800 (PST) Received: by bkaq10 with SMTP id q10so212773bka.26 for ; Tue, 08 Nov 2011 00:32:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version:content-type; bh=3XCQnW/ZKl3UBhNvO4pJcG85DcMuWpcswMoEV4KlepY=; b=TceRhVAY1rt+1ZEYR1nlBpGJckuH1PyJMyHa0t2HYtRIVJL96NNAj2ka7CDLnUR5EQ yDunDjD5mriOn3M+TA5h+UxEhc0/oAsli7X14hGlIDwI0b953RppbxEZeQ/wLsKVb4H7 UDH3mZcA7OrM8iJg0ZOTlc/lSow/VlYBG4rPw= Received: by 10.204.130.85 with SMTP id r21mr22042432bks.38.1320741131043; Tue, 08 Nov 2011 00:32:11 -0800 (PST) Received: from smtp.gmail.com (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id dq2sm103409bkb.11.2011.11.08.00.32.06 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 08 Nov 2011 00:32:07 -0800 (PST) Sender: Dmitry Monakhov From: Dmitry Monakhov To: Dave Chinner Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, hch@lst.de, aelder@sgi.com, tytso@mit.edu X-ASG-Orig-Subj: Re: [PATCH 09/12] xfstests: add a new test that runs fsstress under ENOSPC conditions Subject: Re: [PATCH 09/12] xfstests: add a new test that runs fsstress under ENOSPC conditions In-Reply-To: <20111107212235.GH5534@dastard> References: <1320330301-2682-1-git-send-email-dmonakhov@openvz.org> <1320330301-2682-10-git-send-email-dmonakhov@openvz.org> <20111107212235.GH5534@dastard> User-Agent: Notmuch/0.5-69-g3e4a9d6 (http://notmuchmail.org) Emacs/23.1.1 (i486-pc-linux-gnu) Date: Tue, 08 Nov 2011 12:32:05 +0400 Message-ID: <87lirrkoai.fsf@dmbot.sw.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320741132 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79656 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, 8 Nov 2011 08:22:35 +1100, Dave Chinner wrote: > On Thu, Nov 03, 2011 at 06:24:58PM +0400, Dmitry Monakhov wrote: > > During stress testing we want to cover as much code paths as possible > > fsstress is very good for this purpose. But it has expandable nature > > (disk usage almost continually grow). So once it goes in no ENOSPC > > condition it will be where till the end. But by running 'dd' writers > > in parallel we can regularly trigger ENOSPC but only for a limited > > periods of time because each time it opens the same file with O_TRUNC. > > ..... > > So you have a 512MB filesystem, and you do: > > > +# Disable all sync operations to get higher load > > +FSSTRESS_AVOID="$FSSTRESS_AVOID -ffsync=0 -fsync=0 -ffdatasync=0" > > +_workout() > > +{ > > + echo "" > > + echo "Run fsstress" > > + echo "" > > + num_iterations=10 > > + enospc_time=2 > > + out=$SCRATCH_MNT/fsstress.$$ > > + args="-p128 -n999999999 -f setattr=1 $FSSTRESS_AVOID -d $out" > > + echo "fsstress $args" >> $here/$seq.full > > + $FSSTRESS_PROG $args > /dev/null 2>&1 & > > run a bunch of fsstress processes > > > + pid=$! > > + echo "Run dd writers in parallel" > > + for ((i=0; i < num_iterations; i++)) > > + do > > + # File will be opened with O_TRUNC each time > > + dd if=/dev/zero of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M count=1 \ > > + > /dev/null 2>&1 > > + sleep $enospc_time > > + done > > Then write the same 1MB file 10 times, 2 seconds apart, giving a > total space usage of the dd processes of 1MB over 20s. Hmm.. definitely it should not have count parameter at all, it supposed to run until ENOSPC (that's why it's called spaceconsumer), similar to 270'th testcase. Patch will be in the list in a minute. > > > + kill $pid > > + wait $pid > > +} > > Then kill the fsstress. > > AFAICT, fsstress won't always fill 511MB in 20s - on my test systems > the fill rate is typically around 5s per 100MB, which would result > in the filesystem not being filled with this test and hence not > exercising ENOSPC. Perhaps this would be better done like test 083, > which uses a fixed number of write-only operations per fsstress > process that is known to end up at ENOSPC, rather than hoping it > gets there in 20s. > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > -- > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From dmonlist@gmail.com Tue Nov 8 02:42:02 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA88g2iK101451 for ; Tue, 8 Nov 2011 02:42:02 -0600 X-ASG-Debug-ID: 1320741720-038502ee0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 972451DBA4B0 for ; Tue, 8 Nov 2011 00:42:01 -0800 (PST) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id WjCA7erIMvGb25Q6 for ; Tue, 08 Nov 2011 00:42:01 -0800 (PST) Received: by bkaq10 with SMTP id q10so218577bka.26 for ; Tue, 08 Nov 2011 00:42:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer; bh=qpoJbccGgXMJbKSfL+3envv+suRBVjan3uyf7vI5ZB4=; b=aaD4cnUFqqQq0pWH3D59Z080v5akkVBI2SDexB4zkrrPLoY2tu+OdtVlk4Z8HeagJp /Dti81FLD9luFLopBJYsf8WVT84KapkA+Iy4c9DoVtuas2bHnehlz7DKXofh55QbaDjV WnwxyQm4+dgeIh1kjx0xHwiZ7coTFYZIPii9c= Received: by 10.204.152.4 with SMTP id e4mr13187517bkw.56.1320741720494; Tue, 08 Nov 2011 00:42:00 -0800 (PST) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id fu17sm728823bkc.9.2011.11.08.00.41.58 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 08 Nov 2011 00:41:59 -0800 (PST) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Cc: hch@lst.de, david@fromorbit.com, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 1/3] xfstests: fix argument typo Subject: [PATCH 1/3] xfstests: fix argument typo Date: Tue, 8 Nov 2011 12:41:53 +0400 Message-Id: <1320741715-32692-1-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320741721 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79656 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Dmitry Monakhov --- ltp/fsstress.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/ltp/fsstress.c b/ltp/fsstress.c index 09c9529..9b3af17 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -385,7 +385,7 @@ int main(int argc, char **argv) i = 0; if (optarg[0] == 'c') i = 1; - show_ops(1, NULL); + show_ops(i, NULL); printf("\n"); nousage=1; break; -- 1.7.1 From dmonlist@gmail.com Tue Nov 8 02:42:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA88g3Kr101459 for ; Tue, 8 Nov 2011 02:42:03 -0600 X-ASG-Debug-ID: 1320741720-038502ee0001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E8E791DBA4B2 for ; Tue, 8 Nov 2011 00:42:02 -0800 (PST) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id hi0T6s3XttaFDQ5R for ; Tue, 08 Nov 2011 00:42:02 -0800 (PST) Received: by mail-bw0-f53.google.com with SMTP id q10so218577bka.26 for ; Tue, 08 Nov 2011 00:42:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=IoM1ykMLVPD6GbFdGN7V0fBc11lG3scNXoxHC5o6kEA=; b=YT1t9Pb2RbvFxtNdhajCtbclRy8yECk1/9dtl5atHH4XFu3JXgFk12SoEkk+U+Em39 juOEiv4G87IVTLcbDcyh3UOLTBEalSy2j3+fmyuAsXyr1iSUmAOmc2vQJgyoPB14NQVP 8T/xA2yPzyO6R+isKBLH4GPLS7jrnKGU3p8rE= Received: by 10.205.114.65 with SMTP id ez1mr21546679bkc.99.1320741722206; Tue, 08 Nov 2011 00:42:02 -0800 (PST) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id fu17sm728823bkc.9.2011.11.08.00.42.00 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 08 Nov 2011 00:42:01 -0800 (PST) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Cc: hch@lst.de, david@fromorbit.com, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 2/3] xfstests: fix typo in 260'th test Subject: [PATCH 2/3] xfstests: fix typo in 260'th test Date: Tue, 8 Nov 2011 12:41:54 +0400 Message-Id: <1320741715-32692-2-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320741715-32692-1-git-send-email-dmonakhov@openvz.org> References: <1320741715-32692-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320741722 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79656 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean dd should not have count argument because it suposed to work untill ENOSPC. Also it is reasonable to log dd's output, do that for both 269'th and 270'th tests Signed-off-by: Dmitry Monakhov --- 269 | 4 ++-- 270 | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/269 b/269 index 61e83ad..206492b 100755 --- a/269 +++ b/269 @@ -53,8 +53,8 @@ _workout() for ((i=0; i < num_iterations; i++)) do # File will be opened with O_TRUNC each time - dd if=/dev/zero of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M count=1 \ - > /dev/null 2>&1 + dd if=/dev/zero of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M \ + >> $here/$seq.full 2>&1 sleep $enospc_time done kill $pid diff --git a/270 b/270 index ed1e31e..e45029f 100755 --- a/270 +++ b/270 @@ -63,7 +63,7 @@ _workout() # File will be opened with O_TRUNC each time su $qa_user -c "dd if=/dev/zero \ of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M " \ - > /dev/null 2>&1 + >> $here/$seq.full 2>&1 sleep $enospc_time done -- 1.7.1 From dmonlist@gmail.com Tue Nov 8 02:42:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA88g5hS101472 for ; Tue, 8 Nov 2011 02:42:05 -0600 X-ASG-Debug-ID: 1320741720-038502ee0002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8B9451DBA4BA for ; Tue, 8 Nov 2011 00:42:04 -0800 (PST) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id nB5aCEEZXowVZPIs for ; Tue, 08 Nov 2011 00:42:04 -0800 (PST) Received: by mail-bw0-f53.google.com with SMTP id q10so218577bka.26 for ; Tue, 08 Nov 2011 00:42:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=0p5OhOzrVq2zcR2ZFm0GoxKMLcUOHcWS/rcGlfzb8A4=; b=Ziuttg1IEL2vaZ7iS8fUJXQtUgbEMU/y/xq1aIjniw6tv9oj+AOC7u7O/X5Qyltcph IWT71Yc/PfCnTXwNnPu61FRG3F+Fi2cg0hRcuJKiF/KCj0ptWojoxBVBYGBHFf30Mc/w kpvcrABUjsj2C2WDWzOzrXYnRCsT9m7Rd/Dws= Received: by 10.205.112.6 with SMTP id eq6mr22064988bkc.16.1320741724007; Tue, 08 Nov 2011 00:42:04 -0800 (PST) Received: from localhost.localdomain (swsoft-msk-nat.sw.ru. [195.214.232.10]) by mx.google.com with ESMTPS id fu17sm728823bkc.9.2011.11.08.00.42.02 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 08 Nov 2011 00:42:03 -0800 (PST) Sender: Dmitry Monakhov From: Dmitry Monakhov To: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Cc: hch@lst.de, david@fromorbit.com, Dmitry Monakhov X-ASG-Orig-Subj: [PATCH 3/3] xfstests: remove duplicated umount $scratch_dev Subject: [PATCH 3/3] xfstests: remove duplicated umount $scratch_dev Date: Tue, 8 Nov 2011 12:41:55 +0400 Message-Id: <1320741715-32692-3-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1320741715-32692-1-git-send-email-dmonakhov@openvz.org> References: <1320741715-32692-1-git-send-email-dmonakhov@openvz.org> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1320741724 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79656 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean _require_scratch unmounts the SCRATCH_DEV. So it is not necessery to do it explicitly at the first time. Signed-off-by: Dmitry Monakhov --- 232 | 1 - 233 | 1 - 269 | 3 +-- 270 | 3 +-- 271 | 3 +-- 272 | 3 +-- 6 files changed, 4 insertions(+), 10 deletions(-) diff --git a/232 b/232 index fb4a872..2795da7 100755 --- a/232 +++ b/232 @@ -72,7 +72,6 @@ _require_scratch _require_quota _need_to_be_root -umount $SCRATCH_DEV 2>/dev/null _scratch_mkfs >> $seq.full 2>&1 _scratch_mount "-o usrquota,grpquota" chmod 777 $SCRATCH_MNT diff --git a/233 b/233 index e6ba7ef..28e6ac7 100755 --- a/233 +++ b/233 @@ -80,7 +80,6 @@ _require_quota _require_user _need_to_be_root -umount $SCRATCH_DEV 2>/dev/null _scratch_mkfs >> $seq.full 2>&1 _scratch_mount "-o usrquota,grpquota" chmod 777 $SCRATCH_MNT diff --git a/269 b/269 index 206492b..7e13ed9 100755 --- a/269 +++ b/269 @@ -64,10 +64,9 @@ _workout() # real QA test starts here _supported_fs generic _supported_os Linux -_require_scratch _need_to_be_root +_require_scratch -umount $SCRATCH_DEV 2>/dev/null _scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seq.full 2>&1 _scratch_mount diff --git a/270 b/270 index e45029f..6a349b4 100755 --- a/270 +++ b/270 @@ -74,12 +74,11 @@ _workout() # real QA test starts here _supported_fs generic _supported_os Linux -_require_scratch _require_quota _require_user _need_to_be_root +_require_scratch -umount $SCRATCH_DEV 2>/dev/null _scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seq.full 2>&1 _scratch_mount "-o usrquota,grpquota" chmod 777 $SCRATCH_MNT diff --git a/271 b/271 index b4e6043..58a7f91 100755 --- a/271 +++ b/271 @@ -39,10 +39,9 @@ trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 # real QA test starts here _supported_fs ext4 _supported_os Linux -_require_scratch _need_to_be_root +_require_scratch -umount $SCRATCH_DEV 2>/dev/null _scratch_mkfs_sized $((128 * 1024 * 1024)) >> $seq.full 2>&1 # -onoload and EXT4_SYNC_FL on file is important becase result in diff --git a/272 b/272 index a35ef83..26dfa3b 100755 --- a/272 +++ b/272 @@ -83,10 +83,9 @@ chattr_opt: $chattr_opt" # real QA test starts here _supported_fs ext3 ext4 _supported_os Linux -_require_scratch _need_to_be_root +_require_scratch -umount $SCRATCH_DEV 2>/dev/null _scratch_mkfs_sized $((64 * 1024 * 1024)) >> $seq.full 2>&1 _scratch_mount -- 1.7.1 From BATV+24cb1aa6f689616f0478+2998+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 8 02:58:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA88wlGk101954 for ; Tue, 8 Nov 2011 02:58:48 -0600 X-ASG-Debug-ID: 1320742726-0fe1032b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0DB231DBA5B9 for ; Tue, 8 Nov 2011 00:58:46 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id uPiPaXbu07iDfots for ; Tue, 08 Nov 2011 00:58:46 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RNhW1-0007Yy-TI for xfs@oss.sgi.com; Tue, 08 Nov 2011 08:58:45 +0000 Message-Id: <20111108085614.478431403@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Tue, 08 Nov 2011 03:56:14 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/5] log all file size updates Subject: [PATCH 0/5] log all file size updates X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320742727 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79658 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean With more reports showing up that the VFS writeback code is not able to write back our size updates dirtied from the I/O completion handler in reasonable time I think it's time to move to logging all file size updates ASAP, that is for 3.2 and maybe after a reasonable testing period even -stable. This series has been sent out a few times, and I've been doing QA on it for weeks. Note that I haven't implemented the log space reservations from ->writepage - see the actual patch for the rationale. From BATV+24cb1aa6f689616f0478+2998+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 8 02:58:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_74, J_CHICKENPOX_84 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA88wm4I101959 for ; Tue, 8 Nov 2011 02:58:48 -0600 X-ASG-Debug-ID: 1320742726-571100290000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0E41822AB61 for ; Tue, 8 Nov 2011 00:58:46 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id IN2OEbCCSJggAoti for ; Tue, 08 Nov 2011 00:58:46 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RNhW2-0007a4-An for xfs@oss.sgi.com; Tue, 08 Nov 2011 08:58:46 +0000 Message-Id: <20111108085846.291838677@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Tue, 08 Nov 2011 03:56:16 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Subject: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues References: <20111108085614.478431403@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-split-workqueues X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320742727 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79658 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The new concurrency managed workqueues are cheap enough that we can create per-filesystem instead of global workqueues. This allows us to remove the trylock or defer scheme on the ilock, which has the potential of delaying size updates, and is not helpful once we start to log the inode size. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_aops.c | 39 ++++++++++----------------------------- fs/xfs/xfs_aops.h | 2 -- fs/xfs/xfs_buf.c | 17 ----------------- fs/xfs/xfs_mount.h | 3 +++ fs/xfs/xfs_super.c | 43 ++++++++++++++++++++++++++++++++++++++++++- 5 files changed, 55 insertions(+), 49 deletions(-) Index: linux-2.6/fs/xfs/xfs_aops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-08 08:08:11.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-08 08:09:29.458887066 +0100 @@ -131,21 +131,15 @@ static inline bool xfs_ioend_is_append(s * will be the intended file size until i_size is updated. If this write does * not extend all the way to the valid file size then restrict this update to * the end of the write. - * - * This function does not block as blocking on the inode lock in IO completion - * can lead to IO completion order dependency deadlocks.. If it can't get the - * inode ilock it will return EAGAIN. Callers must handle this. */ -STATIC int +STATIC void xfs_setfilesize( - xfs_ioend_t *ioend) + struct xfs_ioend *ioend) { - xfs_inode_t *ip = XFS_I(ioend->io_inode); + struct xfs_inode *ip = XFS_I(ioend->io_inode); xfs_fsize_t isize; - if (!xfs_ilock_nowait(ip, XFS_ILOCK_EXCL)) - return EAGAIN; - + xfs_ilock(ip, XFS_ILOCK_EXCL); isize = xfs_ioend_new_eof(ioend); if (isize) { trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size); @@ -154,7 +148,6 @@ xfs_setfilesize( } xfs_iunlock(ip, XFS_ILOCK_EXCL); - return 0; } /* @@ -168,10 +161,12 @@ xfs_finish_ioend( struct xfs_ioend *ioend) { if (atomic_dec_and_test(&ioend->io_remaining)) { + struct xfs_mount *mp = XFS_I(ioend->io_inode)->i_mount; + if (ioend->io_type == IO_UNWRITTEN) - queue_work(xfsconvertd_workqueue, &ioend->io_work); + queue_work(mp->m_unwritten_workqueue, &ioend->io_work); else if (xfs_ioend_is_append(ioend)) - queue_work(xfsdatad_workqueue, &ioend->io_work); + queue_work(mp->m_data_workqueue, &ioend->io_work); else xfs_destroy_ioend(ioend); } @@ -212,23 +207,9 @@ xfs_end_io( * We might have to update the on-disk file size after extending * writes. */ - error = xfs_setfilesize(ioend); - ASSERT(!error || error == EAGAIN); - + xfs_setfilesize(ioend); done: - /* - * If we didn't complete processing of the ioend, requeue it to the - * tail of the workqueue for another attempt later. Otherwise destroy - * it. - */ - if (error == EAGAIN) { - atomic_inc(&ioend->io_remaining); - xfs_finish_ioend(ioend); - /* ensure we don't spin on blocked ioends */ - delay(1); - } else { - xfs_destroy_ioend(ioend); - } + xfs_destroy_ioend(ioend); } /* Index: linux-2.6/fs/xfs/xfs_aops.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_aops.h 2011-11-08 08:02:50.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_aops.h 2011-11-08 08:08:55.915886285 +0100 @@ -18,8 +18,6 @@ #ifndef __XFS_AOPS_H__ #define __XFS_AOPS_H__ -extern struct workqueue_struct *xfsdatad_workqueue; -extern struct workqueue_struct *xfsconvertd_workqueue; extern mempool_t *xfs_ioend_pool; /* Index: linux-2.6/fs/xfs/xfs_buf.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_buf.c 2011-11-08 08:02:50.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_buf.c 2011-11-08 08:08:55.919886682 +0100 @@ -45,8 +45,6 @@ static kmem_zone_t *xfs_buf_zone; STATIC int xfsbufd(void *); static struct workqueue_struct *xfslogd_workqueue; -struct workqueue_struct *xfsdatad_workqueue; -struct workqueue_struct *xfsconvertd_workqueue; #ifdef XFS_BUF_LOCK_TRACKING # define XB_SET_OWNER(bp) ((bp)->b_last_holder = current->pid) @@ -1797,21 +1795,8 @@ xfs_buf_init(void) if (!xfslogd_workqueue) goto out_free_buf_zone; - xfsdatad_workqueue = alloc_workqueue("xfsdatad", WQ_MEM_RECLAIM, 1); - if (!xfsdatad_workqueue) - goto out_destroy_xfslogd_workqueue; - - xfsconvertd_workqueue = alloc_workqueue("xfsconvertd", - WQ_MEM_RECLAIM, 1); - if (!xfsconvertd_workqueue) - goto out_destroy_xfsdatad_workqueue; - return 0; - out_destroy_xfsdatad_workqueue: - destroy_workqueue(xfsdatad_workqueue); - out_destroy_xfslogd_workqueue: - destroy_workqueue(xfslogd_workqueue); out_free_buf_zone: kmem_zone_destroy(xfs_buf_zone); out: @@ -1821,8 +1806,6 @@ xfs_buf_init(void) void xfs_buf_terminate(void) { - destroy_workqueue(xfsconvertd_workqueue); - destroy_workqueue(xfsdatad_workqueue); destroy_workqueue(xfslogd_workqueue); kmem_zone_destroy(xfs_buf_zone); } Index: linux-2.6/fs/xfs/xfs_super.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_super.c 2011-11-08 08:02:50.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_super.c 2011-11-08 08:08:55.927886477 +0100 @@ -769,6 +769,40 @@ xfs_setup_devices( return 0; } +STATIC int +xfs_init_mount_workqueues( + struct xfs_mount *mp) +{ +#define XFS_WQ_NAME_LEN 512 + char name[XFS_WQ_NAME_LEN]; + + snprintf(name, XFS_WQ_NAME_LEN, "xfs-data/%s", mp->m_fsname); + mp->m_data_workqueue = alloc_workqueue(name, WQ_MEM_RECLAIM, 1); + if (!mp->m_data_workqueue) + goto out; + + snprintf(name, XFS_WQ_NAME_LEN, "xfs-conv/%s", mp->m_fsname); + mp->m_unwritten_workqueue = alloc_workqueue(name, WQ_MEM_RECLAIM, 1); + if (!mp->m_unwritten_workqueue) + goto out_destroy_data_iodone_queue; + + return 0; + +out_destroy_data_iodone_queue: + destroy_workqueue(mp->m_data_workqueue); +out: + return -ENOMEM; +#undef XFS_WQ_NAME_LEN +} + +STATIC void +xfs_destroy_mount_workqueues( + struct xfs_mount *mp) +{ + destroy_workqueue(mp->m_data_workqueue); + destroy_workqueue(mp->m_unwritten_workqueue); +} + /* Catch misguided souls that try to use this interface on XFS */ STATIC struct inode * xfs_fs_alloc_inode( @@ -1020,6 +1054,7 @@ xfs_fs_put_super( xfs_unmountfs(mp); xfs_freesb(mp); xfs_icsb_destroy_counters(mp); + xfs_destroy_mount_workqueues(mp); xfs_close_devices(mp); xfs_free_fsname(mp); kfree(mp); @@ -1353,10 +1388,14 @@ xfs_fs_fill_super( if (error) goto out_free_fsname; - error = xfs_icsb_init_counters(mp); + error = xfs_init_mount_workqueues(mp); if (error) goto out_close_devices; + error = xfs_icsb_init_counters(mp); + if (error) + goto out_destroy_workqueues; + error = xfs_readsb(mp, flags); if (error) goto out_destroy_counters; @@ -1419,6 +1458,8 @@ xfs_fs_fill_super( xfs_freesb(mp); out_destroy_counters: xfs_icsb_destroy_counters(mp); +out_destroy_workqueues: + xfs_destroy_mount_workqueues(mp); out_close_devices: xfs_close_devices(mp); out_free_fsname: Index: linux-2.6/fs/xfs/xfs_mount.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_mount.h 2011-11-08 08:02:50.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_mount.h 2011-11-08 08:08:55.931904609 +0100 @@ -211,6 +211,9 @@ typedef struct xfs_mount { struct shrinker m_inode_shrink; /* inode reclaim shrinker */ int64_t m_low_space[XFS_LOWSP_MAX]; /* low free space thresholds */ + + struct workqueue_struct *m_data_workqueue; + struct workqueue_struct *m_unwritten_workqueue; } xfs_mount_t; /* From BATV+24cb1aa6f689616f0478+2998+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 8 02:58:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA88wmsS101956 for ; Tue, 8 Nov 2011 02:58:48 -0600 X-ASG-Debug-ID: 1320742726-44e402540000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4C68C1DBA5BE for ; Tue, 8 Nov 2011 00:58:47 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id ec32fMQcq21h4Xef for ; Tue, 08 Nov 2011 00:58:47 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RNhW2-0007b6-Me for xfs@oss.sgi.com; Tue, 08 Nov 2011 08:58:46 +0000 Message-Id: <20111108085846.654476311@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Tue, 08 Nov 2011 03:56:18 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/5] xfs: log file size updates as part of unwritten extent conversion Subject: [PATCH 4/5] xfs: log file size updates as part of unwritten extent conversion References: <20111108085614.478431403@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-piggy-back-unwritten-size-updates X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320742727 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79658 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean If we convert and unwritten extent past the current i_size log the size update as part of the extent manipulation transactions instead of doing an unlogged metadata update later. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_aops.c | 11 ++++++----- fs/xfs/xfs_iomap.c | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 6 deletions(-) Index: linux-2.6/fs/xfs/xfs_iomap.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_iomap.c 2011-11-08 08:02:50.234386118 +0100 +++ linux-2.6/fs/xfs/xfs_iomap.c 2011-11-08 08:14:04.319888994 +0100 @@ -31,6 +31,7 @@ #include "xfs_ialloc_btree.h" #include "xfs_dinode.h" #include "xfs_inode.h" +#include "xfs_inode_item.h" #include "xfs_btree.h" #include "xfs_bmap.h" #include "xfs_rtalloc.h" @@ -645,6 +646,7 @@ xfs_iomap_write_unwritten( xfs_trans_t *tp; xfs_bmbt_irec_t imap; xfs_bmap_free_t free_list; + xfs_fsize_t i_size; uint resblks; int committed; int error; @@ -705,7 +707,22 @@ xfs_iomap_write_unwritten( if (error) goto error_on_bmapi_transaction; - error = xfs_bmap_finish(&(tp), &(free_list), &committed); + /* + * Log the updated inode size as we go. We have to be careful + * to only log it up to the actual write offset if it is + * halfway into a block. + */ + i_size = XFS_FSB_TO_B(mp, offset_fsb + count_fsb); + if (i_size > offset + count) + i_size = offset + count; + + i_size = xfs_new_eof(ip, i_size); + if (i_size) { + ip->i_d.di_size = i_size; + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + } + + error = xfs_bmap_finish(&tp, &free_list, &committed); if (error) goto error_on_bmapi_transaction; Index: linux-2.6/fs/xfs/xfs_aops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-08 08:12:31.586400976 +0100 +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-08 08:14:04.319888994 +0100 @@ -183,13 +183,14 @@ xfs_end_io( ioend->io_error = -error; goto done; } + } else { + /* + * We might have to update the on-disk file size after + * extending writes. + */ + xfs_setfilesize(ioend); } - /* - * We might have to update the on-disk file size after extending - * writes. - */ - xfs_setfilesize(ioend); done: xfs_destroy_ioend(ioend); } From BATV+24cb1aa6f689616f0478+2998+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 8 02:58:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_35 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA88wmNq101957 for ; Tue, 8 Nov 2011 02:58:48 -0600 X-ASG-Debug-ID: 1320742726-0bcc03370000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4DDF916243B2 for ; Tue, 8 Nov 2011 00:58:47 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 4dmDGOh3cWXUjkCh for ; Tue, 08 Nov 2011 00:58:47 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RNhW2-0007aa-GR for xfs@oss.sgi.com; Tue, 08 Nov 2011 08:58:46 +0000 Message-Id: <20111108085846.466994570@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Tue, 08 Nov 2011 03:56:17 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/5] xfs: do not require an ioend for new EOF calculation Subject: [PATCH 3/5] xfs: do not require an ioend for new EOF calculation References: <20111108085614.478431403@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-simplify-eof-calculation X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320742727 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79657 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Replace xfs_ioend_new_eof with a new inline xfs_new_eof helper that doesn't require and ioend, and is available also outside of xfs_aops.c. Also make the code a bit more clear by using a normal if statement instead of a slightly misleading MIN(). Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_aops.c | 26 +++++--------------------- fs/xfs/xfs_inode.h | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 21 deletions(-) Index: linux-2.6/fs/xfs/xfs_aops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-08 08:11:44.891887054 +0100 +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-08 08:12:31.586400976 +0100 @@ -99,24 +99,6 @@ xfs_destroy_ioend( } /* - * If the end of the current ioend is beyond the current EOF, - * return the new EOF value, otherwise zero. - */ -STATIC xfs_fsize_t -xfs_ioend_new_eof( - xfs_ioend_t *ioend) -{ - xfs_inode_t *ip = XFS_I(ioend->io_inode); - xfs_fsize_t isize; - xfs_fsize_t bsize; - - bsize = ioend->io_offset + ioend->io_size; - isize = MAX(ip->i_size, ip->i_new_size); - isize = MIN(isize, bsize); - return isize > ip->i_d.di_size ? isize : 0; -} - -/* * Fast and loose check if this write could update the on-disk inode size. */ static inline bool xfs_ioend_is_append(struct xfs_ioend *ioend) @@ -140,7 +122,7 @@ xfs_setfilesize( xfs_fsize_t isize; xfs_ilock(ip, XFS_ILOCK_EXCL); - isize = xfs_ioend_new_eof(ioend); + isize = xfs_new_eof(ip, ioend->io_offset + ioend->io_size); if (isize) { trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size); ip->i_d.di_size = isize; @@ -362,6 +344,8 @@ xfs_submit_ioend_bio( xfs_ioend_t *ioend, struct bio *bio) { + struct xfs_inode *ip = XFS_I(ioend->io_inode); + atomic_inc(&ioend->io_remaining); bio->bi_private = ioend; bio->bi_end_io = xfs_end_bio; @@ -370,8 +354,8 @@ xfs_submit_ioend_bio( * If the I/O is beyond EOF we mark the inode dirty immediately * but don't update the inode size until I/O completion. */ - if (xfs_ioend_new_eof(ioend)) - xfs_mark_inode_dirty(XFS_I(ioend->io_inode)); + if (xfs_new_eof(ip, ioend->io_offset + ioend->io_size)) + xfs_mark_inode_dirty(ip); submit_bio(wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE, bio); } Index: linux-2.6/fs/xfs/xfs_inode.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_inode.h 2011-11-08 08:02:50.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_inode.h 2011-11-08 08:13:01.290386996 +0100 @@ -278,6 +278,20 @@ static inline struct inode *VFS_I(struct } /* + * If this I/O goes past the on-disk inode size update it unless it would + * be past the current in-core or write in-progress inode size. + */ +static inline xfs_fsize_t +xfs_new_eof(struct xfs_inode *ip, xfs_fsize_t new_size) +{ + xfs_fsize_t i_size = max(ip->i_size, ip->i_new_size); + + if (new_size > i_size) + new_size = i_size; + return new_size > ip->i_d.di_size ? new_size : 0; +} + +/* * i_flags helper functions */ static inline void From BATV+24cb1aa6f689616f0478+2998+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 8 02:58:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA88wm4h101980 for ; Tue, 8 Nov 2011 02:58:49 -0600 X-ASG-Debug-ID: 1320742727-0bc403560000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CF46716243B3 for ; Tue, 8 Nov 2011 00:58:47 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id FI7SynxiKTLDSCeh for ; Tue, 08 Nov 2011 00:58:47 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RNhW2-0007bc-T2 for xfs@oss.sgi.com; Tue, 08 Nov 2011 08:58:46 +0000 Message-Id: <20111108085846.850882616@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Tue, 08 Nov 2011 03:56:19 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 5/5] xfs: log file size updates at I/O completion time Subject: [PATCH 5/5] xfs: log file size updates at I/O completion time References: <20111108085614.478431403@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-log-file-size-updates X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320742727 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79657 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Do not use unlogged metadata updates and the VFS dirty bit for updating the file size after writeback. In addition to causing various problems with updates getting delayed for far too log this also drags in the unscalable VFS dirty tracking, and is one of the few remaining unlogged metadata updates. Note that we allocate a new transaction from the I/O completion handler. While this sounds fairly dangerous it isn't an issue in practice given that any appending write alreay had to start a transaction in writepages to allocate blocks, and we'll start throtteling there if we run low on log space or memory. We could still occasionally stall in the completion handler, but given that we have per-filesystems workqueues for the I/O completions, and completions that do not have to either convert unwritten extents or update the file size are processed from interrupt context we do not have to worry about this stalling a system to death. In addition to that implementing log reservations from ->writepage that are only released by a different thread requires a lot of work, and even with that wasn't quite doable in a deadlock-free manner. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_aops.c | 49 ++++++++++++++++++++++++++++--------------------- fs/xfs/xfs_file.c | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 22 deletions(-) Index: linux-2.6/fs/xfs/xfs_aops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-07 12:19:32.935315100 +0100 +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-07 12:19:35.625815654 +0100 @@ -26,6 +26,7 @@ #include "xfs_bmap_btree.h" #include "xfs_dinode.h" #include "xfs_inode.h" +#include "xfs_inode_item.h" #include "xfs_alloc.h" #include "xfs_error.h" #include "xfs_rw.h" @@ -114,22 +115,39 @@ static inline bool xfs_ioend_is_append(s * not extend all the way to the valid file size then restrict this update to * the end of the write. */ -STATIC void +STATIC int xfs_setfilesize( struct xfs_ioend *ioend) { struct xfs_inode *ip = XFS_I(ioend->io_inode); + struct xfs_mount *mp = ip->i_mount; + struct xfs_trans *tp; xfs_fsize_t isize; + int error = 0; xfs_ilock(ip, XFS_ILOCK_EXCL); isize = xfs_new_eof(ip, ioend->io_offset + ioend->io_size); - if (isize) { - trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size); - ip->i_d.di_size = isize; - xfs_mark_inode_dirty(ip); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + + if (!isize) + return 0; + + trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size); + + tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS); + error = xfs_trans_reserve(tp, 0, XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0); + if (error) { + xfs_trans_cancel(tp, 0); + return error; } - xfs_iunlock(ip, XFS_ILOCK_EXCL); + xfs_ilock(ip, XFS_ILOCK_EXCL); + + ip->i_d.di_size = isize; + xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + + return xfs_trans_commit(tp, 0); } /* @@ -183,12 +201,10 @@ xfs_end_io( ioend->io_error = -error; goto done; } - } else { - /* - * We might have to update the on-disk file size after - * extending writes. - */ - xfs_setfilesize(ioend); + } else if (xfs_ioend_is_append(ioend)) { + error = xfs_setfilesize(ioend); + if (error) + ioend->io_error = error; } done: @@ -345,19 +361,10 @@ xfs_submit_ioend_bio( xfs_ioend_t *ioend, struct bio *bio) { - struct xfs_inode *ip = XFS_I(ioend->io_inode); - atomic_inc(&ioend->io_remaining); bio->bi_private = ioend; bio->bi_end_io = xfs_end_bio; - /* - * If the I/O is beyond EOF we mark the inode dirty immediately - * but don't update the inode size until I/O completion. - */ - if (xfs_new_eof(ip, ioend->io_offset + ioend->io_size)) - xfs_mark_inode_dirty(ip); - submit_bio(wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE, bio); } Index: linux-2.6/fs/xfs/xfs_file.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_file.c 2011-11-07 12:19:20.490314774 +0100 +++ linux-2.6/fs/xfs/xfs_file.c 2011-11-07 12:58:28.834315624 +0100 @@ -436,6 +436,36 @@ xfs_aio_write_isize_update( } } +STATIC int +xfs_aio_write_isize_reset( + struct xfs_inode *ip) +{ + struct xfs_mount *mp = ip->i_mount; + struct xfs_trans *tp; + int error = 0; + + tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS); + error = xfs_trans_reserve(tp, 0, XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0); + if (error) { + xfs_trans_cancel(tp, 0); + return error; + } + + xfs_ilock(ip, XFS_ILOCK_EXCL); + + if (ip->i_d.di_size <= ip->i_size) { + xfs_iunlock(ip, XFS_ILOCK_EXCL); + xfs_trans_cancel(tp, 0); + return 0; + } + + ip->i_d.di_size = ip->i_size; + xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + + return xfs_trans_commit(tp, 0); +} + /* * If this was a direct or synchronous I/O that failed (such as ENOSPC) then * part of the I/O may have been written to disk before the error occurred. In @@ -447,14 +477,18 @@ xfs_aio_write_newsize_update( struct xfs_inode *ip, xfs_fsize_t new_size) { + bool reset = false; if (new_size == ip->i_new_size) { xfs_rw_ilock(ip, XFS_ILOCK_EXCL); if (new_size == ip->i_new_size) ip->i_new_size = 0; if (ip->i_d.di_size > ip->i_size) - ip->i_d.di_size = ip->i_size; + reset = true; xfs_rw_iunlock(ip, XFS_ILOCK_EXCL); } + + if (reset) + xfs_aio_write_isize_reset(ip); } /* From BATV+24cb1aa6f689616f0478+2998+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 8 02:58:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA88wnuW101994 for ; Tue, 8 Nov 2011 02:58:50 -0600 X-ASG-Debug-ID: 1320742726-0bc9035e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F1AE116243AF for ; Tue, 8 Nov 2011 00:58:46 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id jEUeUFcIqkOfzW9J for ; Tue, 08 Nov 2011 00:58:46 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RNhW2-0007ZY-4P for xfs@oss.sgi.com; Tue, 08 Nov 2011 08:58:46 +0000 Message-Id: <20111108085846.083679026@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Tue, 08 Nov 2011 03:56:15 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/5] fix: force shutdown handling in xfs_end_io Subject: [PATCH 1/5] fix: force shutdown handling in xfs_end_io References: <20111108085614.478431403@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-fix-end-io-error-handling X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320742726 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79657 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Only ioend->io_error gets propagated back to e.g. AIO completions. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_aops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: linux-2.6/fs/xfs/xfs_aops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-02 09:00:45.569119028 +0100 +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-07 12:19:22.282316090 +0100 @@ -189,7 +189,7 @@ xfs_end_io( int error = 0; if (XFS_FORCED_SHUTDOWN(ip->i_mount)) { - error = -EIO; + ioend->io_error = -EIO; goto done; } if (ioend->io_error) From BATV+24cb1aa6f689616f0478+2998+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 8 08:38:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8EctK8125373 for ; Tue, 8 Nov 2011 08:38:55 -0600 X-ASG-Debug-ID: 1320763134-256b03420000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CE6B71F31541; Tue, 8 Nov 2011 06:38:54 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id X6pKMJcPxO7d8UzW; Tue, 08 Nov 2011 06:38:54 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RNmpA-0000u2-Iy; Tue, 08 Nov 2011 14:38:52 +0000 Date: Tue, 8 Nov 2011 09:38:52 -0500 From: Christoph Hellwig To: Alex Elder Cc: XFS Mailing List , Ben Hutchings , Carlos Maiolino X-ASG-Orig-Subj: Re: [PATCH, updated] xfs: Fix possible memory corruption in xfs_readlink Subject: Re: [PATCH, updated] xfs: Fix possible memory corruption in xfs_readlink Message-ID: <20111108143852.GA2486@infradead.org> References: <1320156842.30281.28.camel@deadeye> <1320682224.3186.5.camel@doink> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320682224.3186.5.camel@doink> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320763134 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.32 X-Barracuda-Spam-Status: No, SCORE=-1.32 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=COMMA_SUBJECT, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79680 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From sales@homegames.co.uk Tue Nov 8 09:49:15 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.5 required=5.0 tests=BAYES_50,URIBL_BLACK autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8FnF4X129747 for ; Tue, 8 Nov 2011 09:49:15 -0600 X-ASG-Debug-ID: 1320767346-2fe400aa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp-out-59.livemail.co.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 878951F3176D; Tue, 8 Nov 2011 07:49:06 -0800 (PST) Received: from smtp-out-59.livemail.co.uk (mail213-171-216-216.livemail.co.uk [213.171.216.216]) by cuda.sgi.com with ESMTP id ytUdhC0wJsy5JRtN; Tue, 08 Nov 2011 07:49:06 -0800 (PST) Received: by smtp-out-59.livemail.co.uk (Postfix, from userid 1000) id 4B0F716C1A; Tue, 8 Nov 2011 15:49:05 +0000 (GMT) Received: from IIS690.xtreme.support.co.uk (server213-171-218-90.livedns.org.uk [213.171.218.90]) by smtp-out-59.livemail.co.uk (Postfix) with ESMTP id 261DE16C20; Tue, 8 Nov 2011 15:49:03 +0000 (GMT) Received: from mail pickup service by IIS690.xtreme.support.co.uk with Microsoft SMTPSVC; Tue, 8 Nov 2011 15:49:02 +0000 Reply-To: , From: To: <271975erasmusadele@gmail.com>, , , , , , , , , , , , , , <17667barrett.mckool@gmail.com>, , , , <5seowebgek@gmail.com>, , , , , , , , <102031rgoginen@gmail.com>, , , , , , , , , , , , , , , , , , , <1302524879-4737-1-git-send-email-namhyung@gmail.com>, , <1302534596-31250-1-git-send-email-wanlong.gao@gmail.com>, , , , , , , , , , , , , , , , , , , , , , <4da289e1.3090709@gmail.com>, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , <240145@gmail.com>, , , , , , , , , , , , , <142259rrexecjobs@gmail.com>, , , , , , , , , , , , , , , <4vastation@gmail.com>, , , , , , , , , , , <1111neerjt@gmail.com>, , , <212259kittie.edwards@gmail.com>, , , , , , <8263airmicronesia@gmail.com>, , , , , , , , , , , , , , , , , , , , , , <2chainzcasting@gmail.com>, , , , , , , , , , , , , , <136280mfymadari@gmail.com>, , <20218prakashjob123@gmail.com>, <201104111641.16852.lisi.reisz@gmail.com>, <155343bio.taiga@gmail.com>, , , , , , , , , , <19pmcwhjcg@mail.gmail.com>, , , , , , , , , , , , , , , , , , , , , , , , , , <48836rrexecjobs@gmail.com>, , , <132daveblinux@gmail.com>, , , , , , , <9434187imrajib11@gmail.com>, <422892doddytop@gmail.com>, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , <3annefi7@gmail.com>, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , X-ASG-Orig-Subj: Buy Custom Made University Diplomas, Fake College Degrees and Transcripts of World Famous Universities. recommends this site Subject: ***** SUSPECTED SPAM ***** Buy Custom Made University Diplomas, Fake College Degrees and Transcripts of World Famous Universities. recommends this site Date: Tue, 8 Nov 2011 15:49:01 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4862 Message-ID: X-OriginalArrivalTime: 08 Nov 2011 15:49:02.0942 (UTC) FILETIME=[F05067E0:01CC9E2D] X-Barracuda-Connect: mail213-171-216-216.livemail.co.uk[213.171.216.216] X-Barracuda-Start-Time: 1320767348 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4463 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 2.00 X-Barracuda-Spam-Status: Yes, SCORE=2.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, HEAD_LONG, NO_REAL_NAME, RDNS_DYNAMIC, SUBJ_BUY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79684 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.90 SUBJ_BUY Subject line starts with Buy or Buying 0.50 HEAD_LONG Message headers are very long 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Priority: 5 (Lowest) X-MSMail-Priority: Low Importance: Low X-Barracuda-Spam-Flag: YES X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Your friend Buy Custom Made University Diplomas, Fake College Degrees = and Transcripts of World Famous Universities. (janebrow1@​aol.com) = has recommended this site to you, and sends you the following message: *************************************************************************= *********************************************** Buy fake/novelty university diplomas and degrees online. We design our Degree or Diploma Certificates and Transcripts to look = 99.99% identical to world famous originals including identical security = grade transcript paper, identical water markings, raised-ink crests, = embossed seals, correct card stock weight (60-100lb depending upon = institution specifications). Most post-secondary institutions available. ---> http://rurls.ru/31s <--- *************************************************************************= *********************************************** http://www.darts-online.co.uk/proddetail.asp?prod=3D1045-25 From bpm@sgi.com Tue Nov 8 10:39:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8GdITU132787 for ; Tue, 8 Nov 2011 10:39:18 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id 682118F8033 for ; Tue, 8 Nov 2011 08:39:15 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 3FCBB431F74; Tue, 8 Nov 2011 10:39:32 -0600 (CST) Date: Tue, 8 Nov 2011 10:39:32 -0600 From: Ben Myers To: xfs@oss.sgi.com Subject: [BUG] assert in xfs_imap_to_bp, line 185 Message-ID: <20111108163932.GA22095@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi XFS Folks, I am able to hit this assert consistently when running test 111 on recent (commit 9e4c109a) oss xfs bits: [ 1930.808669] XFS (sdb4): Corruption detected. Unmount and run xfs_repair [ 1930.808676] XFS (sdb4): bad inode magic/vsn daddr 64 #8 (magic=5858) [ 1930.815037] XFS: Assertion failed: 0, file: /root/xfs/fs/xfs/xfs_inode.c, line: 185 [ 1930.822727] ------------[ cut here ]------------ [ 1930.826688] kernel BUG at /root/xfs/fs/xfs/xfs_message.c:101! [ 1930.826688] invalid opcode: 0000 [#1] SMP [ 1930.826688] CPU 2 [ 1930.826688] Modules linked in: xfs exportfs af_packet microcode fuse loop dm_mod e1000 shpchp iTCO_wdt tpm_tis tpm sg sr_mod pci_hotplug cdrom serio_raw iTCO_vendor_support floppy intel_rng tpm_bios e752x_e dac edac_core pcspkr i2c_i801 i2c_core container button uhci_hcd ehci_hcd usbcore sd_mod crc_t10dif edd ext3 mbcache jbd fan processor ide_pci_generic piix ide_core ata_generic ata_piix libata aic79xx scsi_tra nsport_spi scsi_mod thermal thermal_sys hwmon [ 1930.826688] [ 1930.826688] Pid: 1894, comm: mount Not tainted 3.1.0-rc9-0.7-default+ #2 Supermicro X6DHR-8G/X6DHR-8GS/X6DHR-8G/X6DHR-8GS [ 1930.826688] RIP: 0010:[] [] assfail+0x1d/0x30 [xfs] [ 1930.826688] RSP: 0018:ffff8801fd157b38 EFLAGS: 00010292 [ 1930.826688] RAX: 000000000000005d RBX: 0000000000000008 RCX: 00000000000016a1 [ 1930.826688] RDX: 000000000000b4a9 RSI: 0000000000000046 RDI: 0000000000000246 [ 1930.826688] RBP: ffff8801fd157b38 R08: 0000000000000005 R09: 0000000000000000 [ 1930.826688] R10: 0000000000000000 R11: 0000000000000000 R12: ffff88021ed0a800 [ 1930.826688] R13: 0000000000000020 R14: ffff88021f4ca800 R15: 0000000000000000 [ 1930.826688] FS: 00007fe83ed507c0(0000) GS:ffff88022fd00000(0000) knlGS:0000000000000000 [ 1930.826688] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 1930.826688] CR2: 00007f4bc6f92bd0 CR3: 00000001fd7ff000 CR4: 00000000000006e0 [ 1930.826688] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 1930.826688] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 1930.826688] Process mount (pid: 1894, threadinfo ffff8801fd156000, task ffff88020e10e200) [ 1930.826688] Stack: [ 1930.826688] ffff8801fd157bb8 ffffffffa032d0a4 ffffffffa032fb7c ffff88020ec4ce00 [ 1930.826688] 0000000000000000 ffff8801fd157bd8 ffff8802027cb020 0000000000000000 [ 1930.826688] ffff88021f4caa20 00000000000002d0 ffff88020ec4ce00 0000000000000000 [ 1930.826688] Call Trace: [ 1930.826688] [] xfs_imap_to_bp+0x154/0x260 [xfs] [ 1930.826688] [] ? xfs_iread+0x7c/0x220 [xfs] [ 1930.826688] [] xfs_iread+0x7c/0x220 [xfs] [ 1930.826688] [] xfs_iget+0x1d0/0x5a0 [xfs] [ 1930.826688] [] xfs_mountfs+0x37a/0x670 [xfs] [ 1930.826688] [] xfs_fs_fill_super+0x1bf/0x270 [xfs] [ 1930.826688] [] mount_bdev+0x17e/0x200 [ 1930.826688] [] ? xfs_parseargs+0xbd0/0xbd0 [xfs] [ 1930.826688] [] xfs_fs_mount+0x10/0x20 [xfs] [ 1930.826688] [] mount_fs+0x48/0x190 [ 1930.826688] [] vfs_kern_mount+0x65/0xc0 [ 1931.070470] [] do_kern_mount+0x4e/0x100 [ 1931.070470] [] do_mount+0x3c3/0x810 [ 1931.070470] [] ? strndup_user+0x5b/0x70 [ 1931.070470] [] sys_mount+0xb3/0xe0 [ 1931.070470] [] system_call_fastpath+0x16/0x1b [ 1931.070470] Code: 00 00 00 48 89 45 c8 e8 72 fc ff ff c9 c3 55 41 89 d0 48 89 f1 48 89 fa 48 c7 c6 68 c6 35 a0 31 ff 48 89 e5 31 c0 e8 93 ff ff ff <0f> 0b eb fe 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 55 4c [ 1931.070470] RIP [] assfail+0x1d/0x30 [xfs] [ 1931.070470] RSP Does this ring a bell for anyone? I should mention that this is a machine recently set up for this purpose, so there isn't a history of it working correctly before... I will go back a release or two and try to reproduce this. THanks, Ben From dave@twin.jikos.cz Tue Nov 8 11:02:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8H27bR134270 for ; Tue, 8 Nov 2011 11:02:08 -0600 X-ASG-Debug-ID: 1320771724-67bc00cb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from twin.jikos.cz (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 83AB41036608; Tue, 8 Nov 2011 09:02:05 -0800 (PST) Received: from twin.jikos.cz (twin.jikos.cz [89.185.236.188]) by cuda.sgi.com with ESMTP id xlIE9hqFId3m7xxP; Tue, 08 Nov 2011 09:02:05 -0800 (PST) Received: from twin.jikos.cz (dave@localhost [127.0.0.1]) by twin.jikos.cz (8.13.6/8.13.6) with ESMTP id pA8H1rjD024591 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 8 Nov 2011 18:01:53 +0100 Received: (from dave@localhost) by twin.jikos.cz (8.13.6/8.13.6/Submit) id pA8H1m0v024589; Tue, 8 Nov 2011 18:01:48 +0100 Date: Tue, 8 Nov 2011 18:01:48 +0100 From: David Sterba To: Dmitry Monakhov Cc: dave@jikos.cz, linux-fsdevel@vger.kernel.org, aelder@sgi.com, tytso@mit.edu, hch@lst.de, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/9] xfstests: add a new test that runs fsstress under ENOSPC conditions Subject: Re: [PATCH 6/9] xfstests: add a new test that runs fsstress under ENOSPC conditions Message-ID: <20111108170146.GR12759@twin.jikos.cz> Reply-To: dave@jikos.cz Mail-Followup-To: Dmitry Monakhov , dave@jikos.cz, linux-fsdevel@vger.kernel.org, aelder@sgi.com, tytso@mit.edu, hch@lst.de, xfs@oss.sgi.com References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> <1320342953-7973-6-git-send-email-dmonakhov@openvz.org> <20111107132533.GP12759@twin.jikos.cz> <87sjm0kqjk.fsf@dmbot.sw.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87sjm0kqjk.fsf@dmbot.sw.ru> User-Agent: Mutt/1.4.2.2i X-Barracuda-Connect: twin.jikos.cz[89.185.236.188] X-Barracuda-Start-Time: 1320771726 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79689 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 07, 2011 at 05:31:11PM +0400, Dmitry Monakhov wrote: > > 269 [failed, exit status 1] - output mismatch (see 269.out.bad) > > --- 269.out 2011-11-07 13:26:23.000000000 +0100 > > +++ 269.out.bad 2011-11-07 14:07:44.000000000 +0100 > > @@ -3,3 +3,4 @@ > > Run fsstress > > > > Run dd writers in parallel > > +./269: line 60: kill: (9754) - No such process > > > > > + wait $pid > > > +} > > > > and the test is reported to fail. Seems that the dd commands finish in less 2 > > seconds. > Have you recompile fsstress via make? That was it, thanks. david From BATV+24cb1aa6f689616f0478+2998+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 8 11:04:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8H4r4T134590 for ; Tue, 8 Nov 2011 11:04:56 -0600 X-ASG-Debug-ID: 1320771891-742003b30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6406F10367FA; Tue, 8 Nov 2011 09:04:52 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id NC2I7NGVXtsUwxjx; Tue, 08 Nov 2011 09:04:52 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RNp6M-0004XX-OH; Tue, 08 Nov 2011 17:04:46 +0000 Date: Tue, 8 Nov 2011 12:04:46 -0500 From: Christoph Hellwig To: Dmitry Monakhov Cc: dave@jikos.cz, linux-fsdevel@vger.kernel.org, aelder@sgi.com, tytso@mit.edu, hch@lst.de, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/9] xfstests: add a new test that runs fsstress under ENOSPC conditions Subject: Re: [PATCH 6/9] xfstests: add a new test that runs fsstress under ENOSPC conditions Message-ID: <20111108170446.GA17399@infradead.org> References: <1320342953-7973-1-git-send-email-dmonakhov@openvz.org> <1320342953-7973-6-git-send-email-dmonakhov@openvz.org> <20111107132533.GP12759@twin.jikos.cz> <87sjm0kqjk.fsf@dmbot.sw.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87sjm0kqjk.fsf@dmbot.sw.ru> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320771892 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79689 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 07, 2011 at 05:31:11PM +0400, Dmitry Monakhov wrote: > Have you recompile fsstress via make? > test explicitly want use new feature "-f setattr=1" Btw, one useful thing for these patches would be to clearly error out if fsstress does't recognize the option. From BATV+24cb1aa6f689616f0478+2998+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 8 11:06:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8H69Vg134746 for ; Tue, 8 Nov 2011 11:06:09 -0600 X-ASG-Debug-ID: 1320771967-741e03c70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 234EE1543346; Tue, 8 Nov 2011 09:06:07 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id B9RD4mHFYFFOdeLh; Tue, 08 Nov 2011 09:06:07 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RNp7f-0005NP-1y; Tue, 08 Nov 2011 17:06:07 +0000 Date: Tue, 8 Nov 2011 12:06:07 -0500 From: Christoph Hellwig To: Ben Myers Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [BUG] assert in xfs_imap_to_bp, line 185 Subject: Re: [BUG] assert in xfs_imap_to_bp, line 185 Message-ID: <20111108170606.GA17457@infradead.org> References: <20111108163932.GA22095@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111108163932.GA22095@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320771968 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79691 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 08, 2011 at 10:39:32AM -0600, Ben Myers wrote: > Hi XFS Folks, > > I am able to hit this assert consistently when running test 111 on recent > (commit 9e4c109a) oss xfs bits: That's expected - the test must only be run on non-debug kernels. It corrupt the inode, and then we read it. A normal kernel shouldn't panic, but for the debug kernel we settled on an assert for it. I'm not sure it's a smart idea, and WANT_CORRUPTED_GOTO might be better in the end. From bpm@sgi.com Tue Nov 8 11:18:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8HItB8135683 for ; Tue, 8 Nov 2011 11:18:55 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id DF16230408E; Tue, 8 Nov 2011 09:18:51 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 9FB23431F74; Tue, 8 Nov 2011 11:19:08 -0600 (CST) Date: Tue, 8 Nov 2011 11:19:08 -0600 From: Ben Myers To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [BUG] assert in xfs_imap_to_bp, line 185 Message-ID: <20111108171908.GN20464@sgi.com> References: <20111108163932.GA22095@sgi.com> <20111108170606.GA17457@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111108170606.GA17457@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 08, 2011 at 12:06:07PM -0500, Christoph Hellwig wrote: > On Tue, Nov 08, 2011 at 10:39:32AM -0600, Ben Myers wrote: > > Hi XFS Folks, > > > > I am able to hit this assert consistently when running test 111 on recent > > (commit 9e4c109a) oss xfs bits: > > That's expected - the test must only be run on non-debug kernels. It > corrupt the inode, and then we read it. A normal kernel shouldn't > panic, but for the debug kernel we settled on an assert for it. > > I'm not sure it's a smart idea, and WANT_CORRUPTED_GOTO might be > better in the end. Thanks Christoph! Sorry for the extra noise.. I'll remember use the 'auto' group next time. -Ben From sgi-linux-xfs@lo.gmane.org Tue Nov 8 12:10:15 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,J_CHICKENPOX_22, J_CHICKENPOX_24,J_CHICKENPOX_43,J_CHICKENPOX_52,J_CHICKENPOX_56, J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8IAD3N140214 for ; Tue, 8 Nov 2011 12:10:15 -0600 X-ASG-Debug-ID: 1320775810-73fb00340000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lo.gmane.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1E9ED1CF55E8 for ; Tue, 8 Nov 2011 10:10:10 -0800 (PST) Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) by cuda.sgi.com with ESMTP id 5AayVdwxqN4w5Vhm for ; Tue, 08 Nov 2011 10:10:10 -0800 (PST) Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1RNq7d-0000h8-Fz for linux-xfs@oss.sgi.com; Tue, 08 Nov 2011 19:10:10 +0100 Received: from office1.visionpointsystems.com ([216.252.206.159]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 08 Nov 2011 19:10:09 +0100 Received: from acook by office1.visionpointsystems.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 08 Nov 2011 19:10:09 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: linux-xfs@oss.sgi.com From: Alan Cook X-ASG-Orig-Subj: XFS realtime =?utf-8?b?T19ESVJFQ1Q=?= failures Subject: XFS realtime =?utf-8?b?T19ESVJFQ1Q=?= failures Date: Tue, 8 Nov 2011 17:37:55 +0000 (UTC) Lines: 182 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: sea.gmane.org User-Agent: Loom/3.14 (http://gmane.org/) X-Loom-IP: 216.252.206.159 (Mozilla/5.0 (Windows NT 6.0; rv:7.0.1) Gecko/20100101 Firefox/7.0.1) X-Barracuda-Connect: lo.gmane.org[80.91.229.12] X-Barracuda-Start-Time: 1320775812 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79694 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I am having issues using the O_DIRECT flags for writing to files that reside on the realtime subvolume of an XFS file system. I have found a failure case for xfstests test 090 as well as another case that I will describe below. For test 090, I have the following setup: mkfs.xfs -f -llogdev=/dev/ram1 -rrtdev=/dev/ram2 -bsize=4096 /dev/ram0 mount -t xfs -o attr2,rtdev=/dev/ram2,logdev=/dev/ram1 /dev/ram0 /mnt/test mkfs.xfs -f -llogdev=/dev/ram4 -rrtdev=/dev/ram5 -bsize=4096 /dev/ram3 mount -t xfs -o attr2,rtdev=/dev/ram5,logdev=/dev/ram4 /dev/ram3 \ /mnt/test-scratch I have the following local.config in xfstests: #!/bin/bash export TEST_DEV="/dev/ram0" export TEST_MNT="/mnt/test" export TEST_DIR="/mnt/test" export TEST_LOGDEV="/dev/ram1" export TEST_RTDEV="/dev/ram2" export SCRATCH_DEV="/dev/ram3" export SCRATCH_MNT="/mnt/test-scratch" export SCRATCH_LOGDEV="/dev/ram4" export SCRATCH_RTDEV="/dev/ram5" export USE_EXTERNAL="yes" All devices are ramdisks. I find with the above setup, when I run 'xfstests/check 090', the test will block indefinitely on I/O for the first iteration of the test. This test was run using the latest code from the xfstests git repo and xfs git repo (kernel 3.1.0-rc9). For the other failure scenario, I have the following setup: mkfs.xfs -f -llogdev=/dev/ram1 -rrtdev=/dev/ram2 -bsize=4096 /dev/ram0 mount -t xfs -o attr2,rtdev=/dev/ram2,logdev=/dev/ram1 /dev/ram0 /mnt/test xfs_io -c 'chattr +t' /mnt/test I have setup all files under /mnt/test to be placed in the realtime portion using the realtime inherit flag set through xfs_io. If I do not use the flag and instead create the file using xfs_io and 'pwrite', I still encounter the same issue O_DIRECT hang issue. Using a fairly simple C application (below), the call to write() will hang the system indefinitely on kernel 2.6.32, or cause the kernel to kill the process on kernel 3.1.0-rc9 reporting a NULL pointer dereference (message below). I have traced the issue back to the use of the O_DIRECT and O_TRUNC flags. If the file to write to has been preallocated using xfs_io's 'pwrite' and 'truncate', omitting the O_TRUNC flag will allow the test application to complete without issue. As I understand it, the realtime subvolume has no requirements that all files be preallocated. Omitting the O_DIRECT flag will also allow the test to complete without issue, but with absolutely terrible I/O performance. Have I uncovered a legitimate or known bug or is there something wrong with my XFS setup? I can supply more information if needed. Thanks for any help. ---- Kernel 3.1.0-rc9 reports a NULL pointer dereference: [ 657.406892] BUG: unable to handle kernel NULL pointer dereference at 0000000000000090 [ 657.406905] IP: [] _raw_spin_lock+0x9/0x20 [ 657.406918] PGD 113f2e067 PUD 1144b3067 PMD 0 [ 657.406926] Oops: 0002 [#1] SMP [ 657.406932] CPU 0 [ 657.406935] Modules linked in: xfs exportfs brd binfmt_misc snd_pcm_oss ... [ 657.407008] [ 657.407012] Pid: 4573, comm: write-bench Not tainted 3.1.0-rc9-0.5-acook-xfs #1 Gigabyte Technology Co., Ltd. X58A-UD3R/X58A-UD3R [ 657.407020] RIP: 0010:[] [] _raw_spin_lock+0x9/0x20 [ 657.407027] RSP: 0018:ffff880115d83478 EFLAGS: 00010246 [ 657.407031] RAX: 0000000000010000 RBX: 0000000000000000 RCX: 0000000000000003 [ 657.407036] RDX: 0000000000000001 RSI: 000000004008aec1 RDI: 0000000000000090 [ 657.407040] RBP: ffff880115d83478 R08: ffff880037407280 R09: 0000000000000000 [ 657.407044] R10: 0000000000000001 R11: 0000000000000000 R12: 0080115d82000000 [ 657.407048] R13: 0000000000001000 R14: 0000000000000000 R15: 0000000000000000 [ 657.407053] FS: 00007f0a00ec3700(0000) GS:ffff88011fc00000(0000) knlGS:0000000000000000 [ 657.407058] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 657.407062] CR2: 0000000000000090 CR3: 000000010df5d000 CR4: 00000000000006f0 [ 657.407066] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 657.407071] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 657.407076] Process write-bench (pid: 4573, threadinfo ffff880115d82000, task ffff880119720240) [ 657.407080] Stack: [ 657.407082] ffff880115d834d8 ffffffffa03b9954 0000000000000001 0000000000000 090 [ 657.407088] 0002800900000000 ffff88003741a400 000000004008aec1 0000000000000 000 [ 657.407094] 0000000000000008 00004008aec10000 0000000000028009 ffff8801161d4 c80 [ 657.407101] Call Trace: [ 657.407117] [] _xfs_buf_find+0x64/0x1e0 [xfs] [ 657.407129] [] xfs_buf_get+0x30/0x160 [xfs] [ 657.407140] [] xfs_buf_read+0x16/0xa0 [xfs] [ 657.407158] [] xfs_trans_read_buf+0x1a0/0x2a0 [xfs] [ 657.407174] [] xfs_rtbuf_get+0xcf/0xf0 [xfs] [ 657.407180] [] ? brd_make_request+0x54/0x4ac [brd] [ 657.407196] [] xfs_rtget_summary+0x7a/0x110 [xfs] [ 657.407203] [] ? generic_make_request+0x2f0/0x3b0 [ 657.407220] [] xfs_rtallocate_extent_size+0x82/0x2b0 [xfs] [ 657.407235] [] ? kmem_zone_alloc+0x77/0xe0 [xfs] [ 657.407252] [] xfs_rtallocate_extent+0x140/0x1a0 [xfs] [ 657.407269] [] ? xfs_trans_add_item+0x28/0x70 [xfs] [ 657.407286] [] xfs_bmap_rtalloc+0x18d/0x300 [xfs] [ 657.407303] [] ? xfs_bmap_search_multi_extents+0x6d/0x100 [xfs] [ 657.407320] [] xfs_bmap_alloc+0x35/0x40 [xfs] [ 657.407337] [] xfs_bmapi_allocate+0xc9/0x2c0 [xfs] [ 657.407354] [] xfs_bmapi_write+0x40c/0x6f0 [xfs] [ 657.407368] [] xfs_iomap_write_direct+0x20b/0x3a0 [xfs] [ 657.407379] [] __xfs_get_blocks+0x2b5/0x370 [xfs] [ 657.407389] [] xfs_get_blocks_direct+0xf/0x20 [xfs] [ 657.407396] [] __blockdev_direct_IO+0x5ba/0xb90 [ 657.407407] [] xfs_vm_direct_IO+0x9f/0x120 [xfs] [ 657.407418] [] ? __xfs_get_blocks+0x370/0x370 [xfs] [ 657.407428] [] ? xfs_finish_ioend_sync+0x30/0x30 [xfs] [ 657.407439] [] generic_file_direct_write+0xb8/0x190 [ 657.407453] [] xfs_file_dio_aio_write+0x190/0x270 [xfs] [ 657.407469] [] xfs_file_aio_write+0x252/0x260 [xfs] [ 657.407478] [] ? tty_wakeup+0x3a/0x80 [ 657.407486] [] do_sync_write+0xd1/0x120 [ 657.407495] [] ? security_file_permission+0x1d/0xa0 [ 657.407502] [] vfs_write+0xcb/0x180 [ 657.407509] [] sys_write+0x50/0x90 [ 657.407517] [] system_call_fastpath+0x16/0x1b [ 657.407522] Code: 90 00 00 01 00 75 04 f0 0f b1 17 0f 94 c2 0f b6 c2 85 c0 c9 0f 95 c0 0f b6 c0 c3 0f 1f 80 00 00 00 00 55 b8 00 00 01 00 48 89 e5 0f [ 657.407566] RIP [] _raw_spin_lock+0x9/0x20 [ 657.407574] RSP [ 657.407578] CR2: 0000000000000090 [ 657.407590] ---[ end trace e406d45b83e0d669 ]--- Simple C application for testing: #include #include #define __USE_GNU #include int main(int argc, char **argv) { int fd = -1; unsigned char *buffer, *buffer_orig; unsigned long size = 32 * 1024 * 1024; /* 32 MiB */ unsigned long i = 0; if(argc < 2) { printf("%s \n", argv[0]); return 1; } buffer_orig = buffer = malloc(size + 4096); if(!buffer) { perror("malloc"); return 2; } /* open file for direct write on realtime partition */ fd = open(argv[1], O_TRUNC | O_CREAT | O_DIRECT | O_WRONLY, 0666); if(fd >= 0) { /* write hangs machine, or kill process depending on kernel version */ if(0 > write(fd, buffer, size)) { perror("write"); } close(fd); } free(buffer_orig); return 0; } From loforbes@alaska.edu Tue Nov 8 12:31:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_31 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8IV7MN141672 for ; Tue, 8 Nov 2011 12:31:07 -0600 X-ASG-Debug-ID: 1320777066-73fe00660000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-vw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8222E1CF50BD for ; Tue, 8 Nov 2011 10:31:06 -0800 (PST) Received: from mail-vw0-f53.google.com (mail-vw0-f53.google.com [209.85.212.53]) by cuda.sgi.com with ESMTP id K81e1KB2sFrcFHqB for ; Tue, 08 Nov 2011 10:31:06 -0800 (PST) Received: by vws19 with SMTP id 19so817422vws.26 for ; Tue, 08 Nov 2011 10:31:05 -0800 (PST) MIME-Version: 1.0 Received: by 10.52.74.69 with SMTP id r5mr34489781vdv.51.1320777065577; Tue, 08 Nov 2011 10:31:05 -0800 (PST) Received: by 10.52.90.19 with HTTP; Tue, 8 Nov 2011 10:31:05 -0800 (PST) Date: Tue, 8 Nov 2011 09:31:05 -0900 Message-ID: X-ASG-Orig-Subj: quota mismatch for NFS mount of XFS filesystem Subject: quota mismatch for NFS mount of XFS filesystem From: Liam Forbes To: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-vw0-f53.google.com[209.85.212.53] X-Barracuda-Start-Time: 1320777066 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79696 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I searched the archives, but didn't find anything about incorrect quota information for an NFS mounted XFS filesystem. I hope somebody might have an idea. We have a RHEL 5.7 server mounting a 15T XFS filesystem and exporting it to RHEL 5.6 and 5.7 clients. quota and xfs_quota on the server show a user using ~5.8T, but quota on a client only shows ~1.8T. Server: nfs2:~$ cat /etc/redhat-release Red Hat Enterprise Linux Server release 5.7 (Tikanga) nfs2:~$ uname -a Linux nfs2 2.6.18-274.3.1.el5 #1 SMP Fri Aug 26 18:49:02 EDT 2011 x86_64 x8= 6_64 nfs2:~$ rpm -qa | grep xfsprogs xfsprogs-2.9.4-1.el5.centos nfs2:~$ sudo quota -s -v -u krieger Disk quotas for user krieger (uid 3105): Filesystem blocks quota limit grace files quota limit g= race /dev/mapper/primaryfs_vg-primaryfs 5901G 0 0 310k 0 0 nfs2:~$ sudo /usr/sbin/xfs_quota xfs_quota> quota -u -h krieger Disk quotas for User krieger (3105) Filesystem Blocks Quota Limit Warn/Time Mounted on /dev/primaryfs_vg/primaryfs 5.8T 0 0 00 [------] /export/wrkdir20 xfs_quota> quit Client: pacman1:~$ cat /etc/redhat-release Red Hat Enterprise Linux Server release 5.6 (Tikanga) pacman1:~$ uname -a Linux pacman1 2.6.18-238.19.1.563g0000.el5 #1 SMP Fri Jul 15 20:26:36 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux pacman1:~$ sudo quota -s -v -u krieger Disk quotas for user krieger (uid 3105): Filesystem blocks quota limit grace files quota limit g= race nfs2:/export/wrkdir20 1806G 0 0 310k 0 0 Could there be a miscalculation due to differing block sizes? Other suggestions of what to look at? I'm not seeing any errors in logs (which doesn't surprise me). --=20 Regards, -liam -There are uncountably more irrational fears than rational ones. -P. Dolan Liam Forbes=A0 =A0 =A0=A0 HPC Systems Analyst,=A0 =A0 =A0 HPC&S Group Leade= r,=A0 =A0 =A0 CISSP ARSC, U of AK, Fairbanks=A0=A0 lforbes@arsc.edu 907-450-8618 fax: 907-450-8= 605 From cmaiolino@hades.usersys.redhat.com Tue Nov 8 12:47:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8IlgbV142991 for ; Tue, 8 Nov 2011 12:47:42 -0600 X-ASG-Debug-ID: 1320778060-08c6033d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hades.usersys.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D7B8022D0DF for ; Tue, 8 Nov 2011 10:47:41 -0800 (PST) Received: from hades.usersys.redhat.com ([187.60.101.4]) by cuda.sgi.com with ESMTP id Hx2txtaIoFPCcyq3 for ; Tue, 08 Nov 2011 10:47:41 -0800 (PST) Received: by hades.usersys.redhat.com (Postfix, from userid 500) id C5E2BE0202; Tue, 8 Nov 2011 16:47:38 -0200 (BRST) From: Carlos Maiolino To: xfs@oss.sgi.com Cc: Carlos Maiolino X-ASG-Orig-Subj: [PATCH 0/2] Set lost+found inode as used after its allocation Subject: [PATCH 0/2] Set lost+found inode as used after its allocation Date: Tue, 8 Nov 2011 16:46:28 -0200 Message-Id: <1320777990-6556-1-git-send-email-cmaiolino@redhat.com> X-Mailer: git-send-email 1.7.6.4 X-Barracuda-Connect: UNKNOWN[187.60.101.4] X-Barracuda-Start-Time: 1320778061 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0973 1.0000 -1.4089 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.81 X-Barracuda-Spam-Status: No, SCORE=-0.81 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79696 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This patch set ensure the inode allocated to the lost+found directory is set as used in AVL tree if it needs to be created (in case no lost+found directory is already created on the disk). Also, I added a new inline function to get AVL tree node offset which currently is being calculated whenever the offset is needed. From cmaiolino@hades.usersys.redhat.com Tue Nov 8 12:47:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8Ilgmt142992 for ; Tue, 8 Nov 2011 12:47:42 -0600 X-ASG-Debug-ID: 1320778061-08bd034d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hades.usersys.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BE5F022D0DD for ; Tue, 8 Nov 2011 10:47:41 -0800 (PST) Received: from hades.usersys.redhat.com ([187.60.101.4]) by cuda.sgi.com with ESMTP id 3jKqGEFYbHxVF3FX for ; Tue, 08 Nov 2011 10:47:41 -0800 (PST) Received: by hades.usersys.redhat.com (Postfix, from userid 500) id DB554E0203; Tue, 8 Nov 2011 16:47:38 -0200 (BRST) From: Carlos Maiolino To: xfs@oss.sgi.com Cc: Carlos Maiolino X-ASG-Orig-Subj: [PATCH 2/2] xfs_repair: Properly set lost+found inode as used Subject: [PATCH 2/2] xfs_repair: Properly set lost+found inode as used Date: Tue, 8 Nov 2011 16:46:30 -0200 Message-Id: <1320777990-6556-3-git-send-email-cmaiolino@redhat.com> X-Mailer: git-send-email 1.7.6.4 In-Reply-To: <1320777990-6556-1-git-send-email-cmaiolino@redhat.com> References: <1320777990-6556-1-git-send-email-cmaiolino@redhat.com> X-Barracuda-Connect: UNKNOWN[187.60.101.4] X-Barracuda-Start-Time: 1320778061 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79696 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This patch makes mk_orphanage() to properly set the inode link count of the recently allocated inode in the AVL tree, avoiding the lost+found directory to be bypass the link count check in phase7 and possibly leaving lost+found directory with a wrong link count. --- repair/phase6.c | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-) diff --git a/repair/phase6.c b/repair/phase6.c index adad61d..0e0e294 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -823,6 +823,8 @@ mk_orphanage(xfs_mount_t *mp) xfs_inode_t *ip; xfs_inode_t *pip; xfs_fsblock_t first; + ino_tree_node_t *irec; + int ino_offset = 0; int i; int committed; int error; @@ -875,6 +877,18 @@ mk_orphanage(xfs_mount_t *mp) ORPHANAGE, error); } ip->i_d.di_nlink++; /* account for . */ + ino = ip->i_ino; + + irec = find_inode_rec(mp, + XFS_INO_TO_AGNO(mp, ino), + XFS_INO_TO_AGINO(mp,ino)); + ino_offset = get_inode_offset(mp, ino, irec); + + /* Set the inode allocated to lost+found as used in the AVL + * tree, so it is not bypassed in phase 7 + */ + set_inode_used(irec,ino_offset); + add_inode_ref(irec,ino_offset); /* * now that we know the transaction will stay around, @@ -902,6 +916,8 @@ mk_orphanage(xfs_mount_t *mp) XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)), 0); + add_inode_reached(irec,ino_offset); + libxfs_trans_log_inode(tp, pip, XFS_ILOG_CORE); libxfs_dir_init(tp, ip, pip); libxfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); @@ -912,7 +928,6 @@ mk_orphanage(xfs_mount_t *mp) ORPHANAGE, error); } - ino = ip->i_ino; libxfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES|XFS_TRANS_SYNC); -- 1.7.6.4 From cmaiolino@hades.usersys.redhat.com Tue Nov 8 12:47:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8Ilhvq143007 for ; Tue, 8 Nov 2011 12:47:43 -0600 X-ASG-Debug-ID: 1320778061-0f0401220000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hades.usersys.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D74F3148A50C for ; Tue, 8 Nov 2011 10:47:41 -0800 (PST) Received: from hades.usersys.redhat.com ([187.60.101.4]) by cuda.sgi.com with ESMTP id OySZEmal4ohngbJJ for ; Tue, 08 Nov 2011 10:47:41 -0800 (PST) Received: by hades.usersys.redhat.com (Postfix, from userid 500) id CEFADE003C; Tue, 8 Nov 2011 16:47:38 -0200 (BRST) From: Carlos Maiolino To: xfs@oss.sgi.com Cc: Carlos Maiolino X-ASG-Orig-Subj: [PATCH 1/2] xfs_repair: Add inline function to get avl tree node Subject: [PATCH 1/2] xfs_repair: Add inline function to get avl tree node Date: Tue, 8 Nov 2011 16:46:29 -0200 Message-Id: <1320777990-6556-2-git-send-email-cmaiolino@redhat.com> X-Mailer: git-send-email 1.7.6.4 In-Reply-To: <1320777990-6556-1-git-send-email-cmaiolino@redhat.com> References: <1320777990-6556-1-git-send-email-cmaiolino@redhat.com> X-Barracuda-Connect: UNKNOWN[187.60.101.4] X-Barracuda-Start-Time: 1320778062 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79697 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean dd get_inode_offset() inline function, which will return the offset of a specific node in the AVL tree avoiding the need to calculate the the offset each time it needs to be used. --- repair/incore.h | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/repair/incore.h b/repair/incore.h index ee0e86a..8e311c9 100644 --- a/repair/incore.h +++ b/repair/incore.h @@ -311,6 +311,12 @@ void get_inode_rec(struct xfs_mount *mp, xfs_agnumber_t agno, ino_tree_node_t *ino_rec); extern avltree_desc_t **inode_tree_ptrs; + +static inline int +get_inode_offset(struct xfs_mount *mp, xfs_ino_t ino, ino_tree_node_t *irec) +{ + return XFS_INO_TO_AGINO(mp, ino) - irec->ino_startnum; +} static inline ino_tree_node_t * findfirst_inode_rec(xfs_agnumber_t agno) { -- 1.7.6.4 From sandeen@sandeen.net Tue Nov 8 12:55:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8ItuDl143829 for ; Tue, 8 Nov 2011 12:55:56 -0600 X-ASG-Debug-ID: 1320778554-0ee501150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AAEBC1543B8B for ; Tue, 8 Nov 2011 10:55:55 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id EXK14RLI3WUUzw80 for ; Tue, 08 Nov 2011 10:55:55 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 6E9C449632A0; Tue, 8 Nov 2011 12:55:54 -0600 (CST) Message-ID: <4EB97B3A.6000202@sandeen.net> Date: Tue, 08 Nov 2011 12:55:54 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1 MIME-Version: 1.0 To: Carlos Maiolino CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfs_repair: Properly set lost+found inode as used Subject: Re: [PATCH 2/2] xfs_repair: Properly set lost+found inode as used References: <1320777990-6556-1-git-send-email-cmaiolino@redhat.com> <1320777990-6556-3-git-send-email-cmaiolino@redhat.com> In-Reply-To: <1320777990-6556-3-git-send-email-cmaiolino@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1320778555 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79697 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/8/11 12:46 PM, Carlos Maiolino wrote: > This patch makes mk_orphanage() to properly set the inode link count of > the recently allocated inode in the AVL tree, avoiding the lost+found > directory to be bypass the link count check in phase7 and possibly leaving > lost+found directory with a wrong link count. Looks pretty good to me. I think maybe add_inode_reached shouldn't be called until the transaction to do it is complete, though? Otherwise that might fail and we'd still have marked it as reached; I think that could be a problem. Thanks, -Eric > --- > repair/phase6.c | 17 ++++++++++++++++- > 1 files changed, 16 insertions(+), 1 deletions(-) > > diff --git a/repair/phase6.c b/repair/phase6.c > index adad61d..0e0e294 100644 > --- a/repair/phase6.c > +++ b/repair/phase6.c > @@ -823,6 +823,8 @@ mk_orphanage(xfs_mount_t *mp) > xfs_inode_t *ip; > xfs_inode_t *pip; > xfs_fsblock_t first; > + ino_tree_node_t *irec; > + int ino_offset = 0; > int i; > int committed; > int error; > @@ -875,6 +877,18 @@ mk_orphanage(xfs_mount_t *mp) > ORPHANAGE, error); > } > ip->i_d.di_nlink++; /* account for . */ > + ino = ip->i_ino; > + > + irec = find_inode_rec(mp, > + XFS_INO_TO_AGNO(mp, ino), > + XFS_INO_TO_AGINO(mp,ino)); > + ino_offset = get_inode_offset(mp, ino, irec); > + > + /* Set the inode allocated to lost+found as used in the AVL > + * tree, so it is not bypassed in phase 7 > + */ > + set_inode_used(irec,ino_offset); > + add_inode_ref(irec,ino_offset); > > /* > * now that we know the transaction will stay around, > @@ -902,6 +916,8 @@ mk_orphanage(xfs_mount_t *mp) > XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)), 0); > > > + add_inode_reached(irec,ino_offset); > + > libxfs_trans_log_inode(tp, pip, XFS_ILOG_CORE); > libxfs_dir_init(tp, ip, pip); > libxfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); > @@ -912,7 +928,6 @@ mk_orphanage(xfs_mount_t *mp) > ORPHANAGE, error); > } > > - ino = ip->i_ino; > > libxfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES|XFS_TRANS_SYNC); > From sandeen@sandeen.net Tue Nov 8 12:56:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8IuLUq143856 for ; Tue, 8 Nov 2011 12:56:21 -0600 X-ASG-Debug-ID: 1320778580-08c603570000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B04B722D2D3 for ; Tue, 8 Nov 2011 10:56:20 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id pVWLgKzR3V4blZvq for ; Tue, 08 Nov 2011 10:56:20 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id CC3A249632A0; Tue, 8 Nov 2011 12:56:19 -0600 (CST) Message-ID: <4EB97B53.7080600@sandeen.net> Date: Tue, 08 Nov 2011 12:56:19 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1 MIME-Version: 1.0 To: Carlos Maiolino CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] xfs_repair: Add inline function to get avl tree node Subject: Re: [PATCH 1/2] xfs_repair: Add inline function to get avl tree node References: <1320777990-6556-1-git-send-email-cmaiolino@redhat.com> <1320777990-6556-2-git-send-email-cmaiolino@redhat.com> In-Reply-To: <1320777990-6556-2-git-send-email-cmaiolino@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1320778580 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79698 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/8/11 12:46 PM, Carlos Maiolino wrote: > dd get_inode_offset() inline function, which will return the offset > of a specific node in the AVL tree avoiding the need to calculate the > the offset each time it needs to be used. might be good to find the open-coded instances of this, and make them use the helper too. -Eric > --- > repair/incore.h | 6 ++++++ > 1 files changed, 6 insertions(+), 0 deletions(-) > > diff --git a/repair/incore.h b/repair/incore.h > index ee0e86a..8e311c9 100644 > --- a/repair/incore.h > +++ b/repair/incore.h > @@ -311,6 +311,12 @@ void get_inode_rec(struct xfs_mount *mp, xfs_agnumber_t agno, > ino_tree_node_t *ino_rec); > > extern avltree_desc_t **inode_tree_ptrs; > + > +static inline int > +get_inode_offset(struct xfs_mount *mp, xfs_ino_t ino, ino_tree_node_t *irec) > +{ > + return XFS_INO_TO_AGINO(mp, ino) - irec->ino_startnum; > +} > static inline ino_tree_node_t * > findfirst_inode_rec(xfs_agnumber_t agno) > { From cmaiolino@redhat.com Tue Nov 8 13:03:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8J3UL9144353 for ; Tue, 8 Nov 2011 13:03:31 -0600 X-ASG-Debug-ID: 1320779009-12d4015d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4416522CDF2 for ; Tue, 8 Nov 2011 11:03:29 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 816VaIA0Zk96Co97 for ; Tue, 08 Nov 2011 11:03:29 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pA8J3SCP005025 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 8 Nov 2011 14:03:28 -0500 Received: from andromeda.usersys.redhat.com (ovpn-113-26.phx2.redhat.com [10.3.113.26]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id pA8J3OSG017709 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Tue, 8 Nov 2011 14:03:27 -0500 Date: Tue, 8 Nov 2011 17:02:12 -0200 From: Carlos Maiolino To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] xfs_repair: Add inline function to get avl tree node Subject: Re: [PATCH 1/2] xfs_repair: Add inline function to get avl tree node Message-ID: <20111108190212.GB21214@andromeda.usersys.redhat.com> References: <1320777990-6556-1-git-send-email-cmaiolino@redhat.com> <1320777990-6556-2-git-send-email-cmaiolino@redhat.com> <4EB97B53.7080600@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4EB97B53.7080600@sandeen.net> User-Agent: Mutt/1.5.20 (2009-12-10) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1320779010 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 08, 2011 at 12:56:19PM -0600, Eric Sandeen wrote: > On 11/8/11 12:46 PM, Carlos Maiolino wrote: > > dd get_inode_offset() inline function, which will return the offset > > of a specific node in the AVL tree avoiding the need to calculate the > > the offset each time it needs to be used. > > might be good to find the open-coded instances of this, and > make them use the helper too. > > -Eric > Yep, I can trck down these instances and replace by this function later with no problem -- --Carlos From BATV+24cb1aa6f689616f0478+2998+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 8 13:07:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8J77XF144643 for ; Tue, 8 Nov 2011 13:07:07 -0600 X-ASG-Debug-ID: 1320779221-4d6b01290000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 408D11CEE7A1 for ; Tue, 8 Nov 2011 11:07:01 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id SLuWDcnkw7UaiZG6 for ; Tue, 08 Nov 2011 11:07:01 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RNr0e-00035R-Kh; Tue, 08 Nov 2011 19:07:00 +0000 Date: Tue, 8 Nov 2011 14:07:00 -0500 From: Christoph Hellwig To: Carlos Maiolino Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfs_repair: Properly set lost+found inode as used Subject: Re: [PATCH 2/2] xfs_repair: Properly set lost+found inode as used Message-ID: <20111108190700.GA7941@infradead.org> References: <1320777990-6556-1-git-send-email-cmaiolino@redhat.com> <1320777990-6556-3-git-send-email-cmaiolino@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320777990-6556-3-git-send-email-cmaiolino@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320779222 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79698 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 08, 2011 at 04:46:30PM -0200, Carlos Maiolino wrote: > This patch makes mk_orphanage() to properly set the inode link count of > the recently allocated inode in the AVL tree, avoiding the lost+found > directory to be bypass the link count check in phase7 and possibly leaving > lost+found directory with a wrong link count. Thanks a lot, this looks very good technically. Unfortunately I have a few style nipicks anyway: > @@ -875,6 +877,18 @@ mk_orphanage(xfs_mount_t *mp) > ORPHANAGE, error); > } > ip->i_d.di_nlink++; /* account for . */ > + ino = ip->i_ino; > + > + irec = find_inode_rec(mp, > + XFS_INO_TO_AGNO(mp, ino), > + XFS_INO_TO_AGINO(mp,ino)); Please always use whitespaces after the comma. > + ino_offset = get_inode_offset(mp, ino, irec); > + > + /* Set the inode allocated to lost+found as used in the AVL > + * tree, so it is not bypassed in phase 7 > + */ The canonical comment style would be: /* * Mark the inode allocated to lost+found as used in the AVL tree * so it is not skipped in phase 7. */ (also note the slight change in wording to make it easier to parse for me, but I'm no native speaker either) * > + set_inode_used(irec,ino_offset); > + add_inode_ref(irec,ino_offset); Same whitespace comment as above here. Feel free to add my: Reviewed-by: Christoph Hellwig after these cosmetic fixups. From BATV+24cb1aa6f689616f0478+2998+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 8 13:07:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8J7NrE144664 for ; Tue, 8 Nov 2011 13:07:23 -0600 X-ASG-Debug-ID: 1320779242-08c5019d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1C27E148A49C for ; Tue, 8 Nov 2011 11:07:22 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id iYIBRvnoYeA5nZ3m for ; Tue, 08 Nov 2011 11:07:22 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RNr10-000369-9n; Tue, 08 Nov 2011 19:07:22 +0000 Date: Tue, 8 Nov 2011 14:07:22 -0500 From: Christoph Hellwig To: Carlos Maiolino Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] xfs_repair: Add inline function to get avl tree node Subject: Re: [PATCH 1/2] xfs_repair: Add inline function to get avl tree node Message-ID: <20111108190722.GB7941@infradead.org> References: <1320777990-6556-1-git-send-email-cmaiolino@redhat.com> <1320777990-6556-2-git-send-email-cmaiolino@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320777990-6556-2-git-send-email-cmaiolino@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320779243 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79699 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 08, 2011 at 04:46:29PM -0200, Carlos Maiolino wrote: > dd get_inode_offset() inline function, which will return the offset > of a specific node in the AVL tree avoiding the need to calculate the > the offset each time it needs to be used. Looks good. We should also use it a bit more, but I can take care of that. Reviewed-by: Christoph Hellwig From david@fromorbit.com Tue Nov 8 16:55:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8MtISh160430 for ; Tue, 8 Nov 2011 16:55:19 -0600 X-ASG-Debug-ID: 1320792915-06fb00fa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 56C1C1CF68D5 for ; Tue, 8 Nov 2011 14:55:16 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id psHyfcPLy4qxXGKK for ; Tue, 08 Nov 2011 14:55:16 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAH+wuU55LIil/2dsb2JhbABDDqoTgQaBcgEBBTocIxAIAw4KLhQlAyETwCUSgzeCN4MtBKVYSw Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail06.adl2.internode.on.net with ESMTP; 09 Nov 2011 09:25:15 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RNuZV-0006i9-9L; Wed, 09 Nov 2011 09:55:13 +1100 Date: Wed, 9 Nov 2011 09:55:13 +1100 From: Dave Chinner To: Liam Forbes Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: quota mismatch for NFS mount of XFS filesystem Subject: Re: quota mismatch for NFS mount of XFS filesystem Message-ID: <20111108225513.GO5534@dastard> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1320792917 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79714 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 08, 2011 at 09:31:05AM -0900, Liam Forbes wrote: > I searched the archives, but didn't find anything about incorrect > quota information for an NFS mounted XFS filesystem. I hope somebody > might have an idea. > > We have a RHEL 5.7 server mounting a 15T XFS filesystem and exporting > it to RHEL 5.6 and 5.7 clients. quota and xfs_quota on the server > show a user using ~5.8T, but quota on a client only shows ~1.8T. > > Server: > nfs2:~$ cat /etc/redhat-release > Red Hat Enterprise Linux Server release 5.7 (Tikanga) > nfs2:~$ uname -a > Linux nfs2 2.6.18-274.3.1.el5 #1 SMP Fri Aug 26 18:49:02 EDT 2011 x86_64 x86_64 > nfs2:~$ rpm -qa | grep xfsprogs > xfsprogs-2.9.4-1.el5.centos > nfs2:~$ sudo quota -s -v -u krieger > Disk quotas for user krieger (uid 3105): > Filesystem blocks quota limit grace files quota limit grace > /dev/mapper/primaryfs_vg-primaryfs > 5901G 0 0 310k 0 0 > nfs2:~$ sudo /usr/sbin/xfs_quota > xfs_quota> quota -u -h krieger > Disk quotas for User krieger (3105) > Filesystem Blocks Quota Limit Warn/Time Mounted on > /dev/primaryfs_vg/primaryfs > 5.8T 0 0 00 [------] /export/wrkdir20 > xfs_quota> quit > > Client: > pacman1:~$ cat /etc/redhat-release > Red Hat Enterprise Linux Server release 5.6 (Tikanga) > pacman1:~$ uname -a > Linux pacman1 2.6.18-238.19.1.563g0000.el5 #1 SMP Fri Jul 15 20:26:36 > EDT 2011 x86_64 x86_64 x86_64 GNU/Linux > pacman1:~$ sudo quota -s -v -u krieger > Disk quotas for user krieger (uid 3105): > Filesystem blocks quota limit grace files quota limit grace > nfs2:/export/wrkdir20 > 1806G 0 0 310k 0 0 That looks like a 32bit variable overflow. In 512 byte blocks (sectors), 2^32 sectors overflows at 2T. And 5.8T ~= 2T + 2T + 1.8T. This is most likely to be an NFS issue - I'm not familiar with the Linux NFS quota protocol implementation, so I can't really say much more than that. Cheers, Dave. -- Dave Chinner david@fromorbit.com From aelder@oss.sgi.com Tue Nov 8 17:04:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=ALL_TRUSTED,BAYES_00, J_CHICKENPOX_21 autolearn=no version=3.4.0-r929098 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8N4HAx161322 for ; Tue, 8 Nov 2011 17:04:17 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id pA8N4EjI161230; Tue, 8 Nov 2011 17:04:14 -0600 Date: Tue, 8 Nov 2011 17:04:14 -0600 Message-Id: <201111082304.pA8N4EjI161230@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. xfs_for_3.2-rc1_v1-10720-g1ea6b8f X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 9e4c109ac822395e0aae650e4e3c9e4903f6602f X-Git-Newrev: 1ea6b8f48918282bdca0b32a34095504ee65bab5 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated bfe8684 filesystems: add set_nlink() b9075fa treewide: use __printf not __attribute__((format(printf,...))) 94054fa xfs: warn if direct reclaim tries to writeback pages 5619a69 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 59e5253 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 36b8d18 Merge branch 'next' of git://selinuxproject.org/~jmorris/linux-security e060c38 Merge branch 'master' into for-next 558feb0 fs: Convert vmalloc/memset to vzalloc 5a2f3a0 Merge branch 'next-evm' of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/ima-2.6 into next 9d8f13b security: new security_inode_init_security API adds function callback from 9e4c109ac822395e0aae650e4e3c9e4903f6602f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit bfe8684869601dacfcb2cd69ef8cfd9045f62170 Author: Miklos Szeredi Date: Fri Oct 28 14:13:29 2011 +0200 filesystems: add set_nlink() Replace remaining direct i_nlink updates with a new set_nlink() updater function. Signed-off-by: Miklos Szeredi Tested-by: Toshiyuki Okajima Signed-off-by: Christoph Hellwig commit b9075fa968a0a4347aef35e235e2995c0e57dddd Author: Joe Perches Date: Mon Oct 31 17:11:33 2011 -0700 treewide: use __printf not __attribute__((format(printf,...))) Standardize the style for compiler based printf format verification. Standardized the location of __printf too. Done via script and a little typing. $ grep -rPl --include=*.[ch] -w "__attribute__" * | \ grep -vP "^(tools|scripts|include/linux/compiler-gcc.h)" | \ xargs perl -n -i -e 'local $/; while (<>) { s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*printf\s*,\s*(.+)\s*,\s*(.+)\s*\)\s*\)\s*\)/__printf($1, $2)/g ; print; }' [akpm@linux-foundation.org: revert arch bits] Signed-off-by: Joe Perches Cc: "Kirill A. Shutemov" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 94054fa3fca1fd78db02cb3d68d5627120f0a1d4 Author: Mel Gorman Date: Mon Oct 31 17:07:45 2011 -0700 xfs: warn if direct reclaim tries to writeback pages Direct reclaim should never writeback pages. For now, handle the situation and warn about it. Ultimately, this will be a BUG_ON. Signed-off-by: Mel Gorman Cc: Dave Chinner Cc: Christoph Hellwig Cc: Johannes Weiner Cc: Wu Fengguang Cc: Jan Kara Cc: Minchan Kim Cc: Rik van Riel Cc: Mel Gorman Cc: Alex Elder Cc: Theodore Ts'o Cc: Chris Mason Cc: Dave Hansen Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 5619a693965b291315685bdfe01a0246ebd7e41e Merge: 37be944a0270402f9cda291a930b0286f6dc92f5 9e4c109ac822395e0aae650e4e3c9e4903f6602f Author: Linus Torvalds Date: Fri Oct 28 10:31:42 2011 -0700 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs * 'for-linus' of git://oss.sgi.com/xfs/xfs: (69 commits) xfs: add AIL pushing tracepoints xfs: put in missed fix for merge problem xfs: do not flush data workqueues in xfs_flush_buftarg xfs: remove XFS_bflush xfs: remove xfs_buf_target_name xfs: use xfs_ioerror_alert in xfs_buf_iodone_callbacks xfs: clean up xfs_ioerror_alert xfs: clean up buffer allocation xfs: remove buffers from the delwri list in xfs_buf_stale xfs: remove XFS_BUF_STALE and XFS_BUF_SUPER_STALE xfs: remove XFS_BUF_SET_VTYPE and XFS_BUF_SET_VTYPE_REF xfs: remove XFS_BUF_FINISH_IOWAIT xfs: remove xfs_get_buftarg_list xfs: fix buffer flushing during unmount xfs: optimize fsync on directories xfs: reduce the number of log forces from tail pushing xfs: Don't allocate new buffers on every call to _xfs_buf_find xfs: simplify xfs_trans_ijoin* again xfs: unlock the inode before log force in xfs_change_file_space xfs: unlock the inode before log force in xfs_fs_nfs_commit_metadata ... commit 59e52534172d845ebffb0d7e85fc56fb7b857051 Merge: 73692d9bb58ecc2fa73f4b2bfcf6eadaa6d49a26 0d89e54c8249645404283436d952afc261a04e1e Author: Linus Torvalds Date: Tue Oct 25 12:11:02 2011 +0200 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (59 commits) MAINTAINERS: linux-m32r is moderated for non-subscribers linux@lists.openrisc.net is moderated for non-subscribers Drop default from "DM365 codec select" choice parisc: Kconfig: cleanup Kernel page size default Kconfig: remove redundant CONFIG_ prefix on two symbols cris: remove arch/cris/arch-v32/lib/nand_init.S microblaze: add missing CONFIG_ prefixes h8300: drop puzzling Kconfig dependencies MAINTAINERS: microblaze-uclinux@itee.uq.edu.au is moderated for non-subscribers tty: drop superfluous dependency in Kconfig ARM: mxc: fix Kconfig typo 'i.MX51' Fix file references in Kconfig files aic7xxx: fix Kconfig references to READMEs Fix file references in drivers/ide/ thinkpad_acpi: Fix printk typo 'bluestooth' bcmring: drop commented out line in Kconfig btmrvl_sdio: fix typo 'btmrvl_sdio_sd6888' doc: raw1394: Trivial typo fix CIFS: Don't free volume_info->UNC until we are entirely done with it. treewide: Correct spelling of successfully in comments ... commit 36b8d186e6cc8e32cb5227f5645a58e1bc0af190 Merge: cd85b557414fe4cd44ea6608825e96612a5fe2b2 c45ed235abf1b0b6666417e3c394f18717976acd Author: Linus Torvalds Date: Tue Oct 25 09:45:31 2011 +0200 Merge branch 'next' of git://selinuxproject.org/~jmorris/linux-security * 'next' of git://selinuxproject.org/~jmorris/linux-security: (95 commits) TOMOYO: Fix incomplete read after seek. Smack: allow to access /smack/access as normal user TOMOYO: Fix unused kernel config option. Smack: fix: invalid length set for the result of /smack/access Smack: compilation fix Smack: fix for /smack/access output, use string instead of byte Smack: domain transition protections (v3) Smack: Provide information for UDS getsockopt(SO_PEERCRED) Smack: Clean up comments Smack: Repair processing of fcntl Smack: Rule list lookup performance Smack: check permissions from user space (v2) TOMOYO: Fix quota and garbage collector. TOMOYO: Remove redundant tasklist_lock. TOMOYO: Fix domain transition failure warning. TOMOYO: Remove tomoyo_policy_memory_lock spinlock. TOMOYO: Simplify garbage collector. TOMOYO: Fix make namespacecheck warnings. target: check hex2bin result encrypted-keys: check hex2bin result ... commit e060c38434b2caa78efe7cedaff4191040b65a15 Merge: 10e4ac572eeffe5317019bd7330b6058a400dfc2 cc39c6a9bbdebfcf1a7dee64d83bf302bc38d941 Author: Jiri Kosina Date: Thu Sep 15 15:08:05 2011 +0200 Merge branch 'master' into for-next Fast-forward merge with Linus to be able to merge patches based on more recent version of the tree. commit 558feb0818374d657fbc1ea03776ee20f204b3a6 Author: Joe Perches Date: Sat May 28 10:36:33 2011 -0700 fs: Convert vmalloc/memset to vzalloc Signed-off-by: Joe Perches Acked-by: Alex Elder Signed-off-by: Jiri Kosina commit 5a2f3a02aea164f4f59c0c3497772090a411b462 Merge: 1d568ab068c021672d6cd7f50f92a3695a921ffb 817b54aa45db03437c6d09a7693fc6926eb8e822 Author: James Morris Date: Tue Aug 9 10:31:03 2011 +1000 Merge branch 'next-evm' of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/ima-2.6 into next Conflicts: fs/attr.c Resolve conflict manually. Signed-off-by: James Morris commit 9d8f13ba3f4833219e50767b022b82cd0da930eb Author: Mimi Zohar Date: Mon Jun 6 15:29:25 2011 -0400 security: new security_inode_init_security API adds function callback This patch changes the security_inode_init_security API by adding a filesystem specific callback to write security extended attributes. This change is in preparation for supporting the initialization of multiple LSM xattrs and the EVM xattr. Initially the callback function walks an array of xattrs, writing each xattr separately, but could be optimized to write multiple xattrs at once. For existing security_inode_init_security() calls, which have not yet been converted to use the new callback function, such as those in reiserfs and ocfs2, this patch defines security_old_inode_init_security(). Signed-off-by: Mimi Zohar ----------------------------------------------------------------------- Summary of changes: fs/xfs/kmem.h | 7 +------ fs/xfs/xfs_aops.c | 8 ++++---- fs/xfs/xfs_iops.c | 41 +++++++++++++++++++++-------------------- fs/xfs/xfs_message.h | 42 ++++++++++++++++++++---------------------- 4 files changed, 46 insertions(+), 52 deletions(-) hooks/post-receive -- XFS development tree From david@fromorbit.com Tue Nov 8 17:11:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8NBLHB161944 for ; Tue, 8 Nov 2011 17:11:22 -0600 X-ASG-Debug-ID: 1320793880-070a01530000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5FCDC1CF6A6A for ; Tue, 8 Nov 2011 15:11:20 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id Khkqihxizpy3ouiL for ; Tue, 08 Nov 2011 15:11:20 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAO6zuU55LIil/2dsb2JhbABDqiKBBoFyAQEFOhwjEAgDDgouFCUDIRPAHhKJGwSmIw Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail06.adl2.internode.on.net with ESMTP; 09 Nov 2011 09:41:20 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RNup4-0006k4-5l; Wed, 09 Nov 2011 10:11:18 +1100 Date: Wed, 9 Nov 2011 10:11:18 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Subject: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Message-ID: <20111108231118.GP5534@dastard> References: <20111108085614.478431403@bombadil.infradead.org> <20111108085846.291838677@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111108085846.291838677@bombadil.infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1320793881 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0460 1.0000 -1.7248 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.72 X-Barracuda-Spam-Status: No, SCORE=-1.72 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79714 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 08, 2011 at 03:56:16AM -0500, Christoph Hellwig wrote: > The new concurrency managed workqueues are cheap enough that we can create > per-filesystem instead of global workqueues. This allows us to remove the > trylock or defer scheme on the ilock, which has the potential of delaying > size updates, and is not helpful once we start to log the inode size. So why does the per-mount workqueues allow removal of the trylock? IOWs, it might be worthwhile pointing to the commit (77d7a0c "xfs: Non-blocking inode locking in IO completion") to indicate that the functionality being removed was introduced to avoid IO completion deadlocks between dependent filesystems (e.g. XFS on loop device on XFS) and that moving to per-mount completion queues removes that dependency.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From aelder@oss.sgi.com Tue Nov 8 17:18:27 2011 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8NIQxt162450 for ; Tue, 8 Nov 2011 17:18:26 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id pA8NIPui162426; Tue, 8 Nov 2011 17:18:25 -0600 Date: Tue, 8 Nov 2011 17:18:25 -0600 Message-Id: <201111082318.pA8NIPui162426@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v3.2-rc1, created. v3.2-rc1 X-Git-Refname: refs/tags/v3.2-rc1 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 4ea8b996e5dd18145d945667fbcd9a6af234a30c This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v3.2-rc1 has been created at 4ea8b996e5dd18145d945667fbcd9a6af234a30c (tag) tagging 1ea6b8f48918282bdca0b32a34095504ee65bab5 (commit) replaces xfs_for_3.2-rc1_v1 tagged by Linus Torvalds on Mon Nov 7 16:17:17 2011 -0800 - Log ----------------------------------------------------------------- Linux 3.2-rc1 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (GNU/Linux) iQEcBAABAgAGBQJOuHUiAAoJEHm+PkMAQRiGbaQH/iU0xahxjVFn1ypTp0Vhuxt1 8QgL/hLMYuU5eSi3ezMr0oPMwiLwgTVkvRhTmbhS8RPRjlKrryc+WUmEMMxOQGtd bJquAWQcHn1aUF6PpiKVce4o8WzB7lOzNmtjVpGZ0rVgLj+yTBhLhlCuSM3OgiC3 JPdTO1JQpsyh+AY+F5fel7EBApgwPE6Y0jyICztXXDH6M0HifubZP5HG6uCO7cVX xvFTCx1684XYdG/ZBeNEyvdw4W96Xm7u9tx93r55i8axORu/pIWpIc4rO65a6rOM pGkWDdvy4udgTOf3g8MbBJQyN9gi+Dkj6263dBejfnyRgvWrOSCHT8OtyfB9XB8= =A4sP -----END PGP SIGNATURE----- Aaro Koskinen (84): staging: xgifb: eliminate #ifdef NewScratch staging: xgifb: delete duplicate #defines staging: xgifb: delete unused definitions staging: xgifb: vb_table: delete unused data staging: xgifb: delete unused structs staging: xgifb: eliminate #ifdef XGIFB_PAN staging: xgifb: probe: delete checks for mode "none" staging: xgifb: replace video_type with FB_TYPE_PACKED_PIXELS staging: xgifb: delete write-only variables staging: xgifb: delete driver version information staging: xgifb: delete an empty string staging: xgifb: delete unused module parameters and options staging: xgifb: fix ypan disable option staging: xgifb: delete duplicated code staging: xgifb: delete "off" option handling staging: xgifb: XGIfb_setup(): clean up driver messages staging: xgifb: XGIfb_setup(): delete redundant assignment staging: xgifb: check and report invalid option values staging: xgifb: fix LVDS LCD resolution data setup staging: xgifb: search video mode later in probe staging: xgifb: XGIfb_search_mode(): delete unreachable code staging: xgifb: assume the default video mode also when module staging: xgifb: delete duplicated default video mode setup code staging: xgifb: fail the probe if no supported LCD video mode found staging: xgifb: simplify default mode setup staging: xgifb: correct the default mode comment staging: xgifb: delete all references to mode "none" stating: xgifb: update module parameter descriptions staging: xgifb: use common init for module and built-in staging: xgifb: delete XGI_OpenCRTC() staging: xgifb: delete support for Chrontel 7017 TV output staging: xgifb: delete support for Chrontel 7005 TV output staging: xgifb: delete support for Chrontel 7007 TV output staging: xgifb: delete redundant Chrontel TV data staging: xgifb: refactor XGI_SetXG21LCD() and XGI_SetXG27LCD() staging: xgifb: refactor XGI_SetXG21LVDSPara() and XGI_SetXG27LVDSPara() staging: xgifb: delete commented-out routines staging: xgifb: eliminate #ifdef Tap4 staging: xgifb: do not initialize static data to 0 staging: xgifb: delete duplicated YFilter2 data staging: xgifb: delete duplicated YFilter1 data staging: xgifb: delete duplicated LCD data staging: xgifb: delete duplicated LCD table staging: xgifb: delete duplicated TV data tables staging: xgifb: delete duplicated timing data staging: xgifb: delete IF_DEF_VideoCapture staging: xgifb: delete Win9xDOSMode staging: xgifb: delete IF_DEF_OEMUtil staging: xgifb: delete IF_DEF_PWD staging: xgifb: delete IF_DEF_ScaleLCD staging: xgifb: properly delete MTRR region staging: xgifb: fix up MTRR printk staging: xgifb: delete redundant casts from mtrr_add() call staging: xgifb: main: use readb()/readw() to access iomapped memory staging: xgifb: unify #include order staging: xgifb: vb_init: use readl()/writel() to access iomapped memory staging: xgifb: add missing #include staging: xgifb: update TODO staging: xgifb: use PCI drvdata staging: xgifb: eliminate global fb_info variable staging: xgifb: eliminate global XGIhw_ext data staging: xgifb: inline XGIfb_query_VGA_config_space() staging: xgifb: add a global variable for the default refresh rate staging: xgifb: rename struct video_info to xgifb_video_info staging: xgifb: avoid direct references xgi_video_info staging: xgifb: dynamically allocate xgifb_video_info staging: xgifb: eliminate XGIfb_mode_no staging: xgifb: move xgifb_mode_idx into xgifb_video_info staging: xgifb: move XGIfb_rate_idx into xgifb_video_info staging: xgifb: move pseudo_palette into xgifb_video_info staging: xgifb: eliminate XGIfb_CRT2_write_enable variable staging: xgifb: eliminate default_var staging: xgifb: eliminate XGIfb_fix staging: xgifb: eliminate filter_tb global variable staging: xgifb: make XGIbios_mode const staging: xgifb: eliminate global XGI_Pr data staging: xgifb: move XGINew_RAMType into vb_device_info staging: xgifb: move XGINew_ChannelAB into vb_device_info staging: xgifb: move XGINew_DataBusWidth into vb_device_info staging: xgifb: make RAM type tables const staging: xgifb: make DAC tables const staging: xgifb: delete CRT1 state staging: xgifb: clean up 2nd display state MIPS: Fix build with C=1 Aaron Lu (1): mmc: core: add sd uhs string for mmc_ios_show Abhilash K V (1): ARM: OMAP: AM35x: remove hwmods that aren't generic Abhilash Kesavan (4): ARM: S5PV210: Remove unnecessary symbol for PM ARM: S5P: Make the common S5P PM code conditionally compile ARM: S5P: Make the sleep code common for S5P series SoCs ARM: S5P64X0: Add Power Management support AceLan Kao (1): dell-laptop: support Synaptics/Alps touchpad led Adam Cozzette (1): ums_realtek: do not use stack memory for DMA Adam Jackson (9): drm: Add KMS debug printk's for encoder and crtc fixup failure drm/i915: Remove "i2c_speed" nonsense from child device table drm/i915: Fix multifunction SDVO detection drm/i915: Rename intel_sdvo_hdmi_sink_detect drm/i915: Remove redundant bit shifting from intel_gmbus_set_speed drm/i915/dp: Fix the math in intel_dp_link_required drm/i915/dp: Remove eDP special cases from bandwidth checks drm/i915/dp: Introduce is_cpu_edp() drm/i915/dp: Fix eDP on PCH DP on CPT/PPT Aditya Kali (3): ext4: Fix bigalloc quota accounting and i_blocks value ext4: add some tracepoints in ext4/extents.c ext4: attempt to fix race in bigalloc code path Adrian Hunter (12): gpio: langwell: ensure alternate function is cleared mmc: core: add eMMC hardware reset support mmc: sdhci: add eMMC hardware reset support mmc: sdhci-pci: add eMMC hardware reset support mmc: mmc-test: add eMMC hardware reset test mmc: block: add eMMC hardware reset support mmc: block: fix boot partition switch error path mmc: block: support no access to boot partitions mmc: core: move ->request() call from atomic context mmc: sdhci-pci: add runtime pm support mmc: omap_hsmmc: ensure pbias configuration is always done mmc: sdhci-pci: add flag for devices that can support runtime PM Adrian Knoth (8): ALSA: hdspm - Allow for 8192 period size on RME MADI and AES cards ALSA: hdspm - Set period_bytes_min to 32 * 4 for new RME cards ALSA: hdspm - Reorder period sizes according to their bit representation ALSA: hdspm - Introduce hdspm_get_latency() to harmonize latency calculation ALSA: hdspm - Enable 32 samples/period on RME RayDAT/AIO ALSA: hdspm - Fix MADI channel format in the status ioctl ALSA: hdsp - Correct HDSP_VERSION_BIT constant, thus partly fixing RPM detection ALSA: hdspm - Enable all firmware ranges for PCI MADI/AES cards Afzal Mohammed (1): ARM: 7137/1: Fix error upon adding LL debug Ajay Kumar (7): ARM: SAMSUNG: Fix mask value for S5P64X0 CPU IDs video: s3c-fb: Add S5P64X0 specific s3c_fb_driverdata ARM: S5P64X0: Add register base and IRQ for Framebuffer ARM: S5P64X0: Set s3c_device_fb name ARM: S5P64X0: Add GPIO setup for LCD ARM: S5P6440: Add LCD-LTE480 and enable Framebuffer support ARM: S5P6450: Add LCD-LTE480 and enable Framebuffer support Akeem G. Abodunrin (4): igb: Code to prevent overwriting SFP I2C igb: Alternate MAC Address EEPROM Updates igb: Alternate MAC Address Updates for Func2&3 igb: Loopback functionality supports for i350 devices Akinobu Mita (5): mm/debug-pagealloc.c: use plain __ratelimit() instead of printk_ratelimit() lib/string.c: introduce memchr_inv() mm/debug-pagealloc.c: use memchr_inv debug-pagealloc: add support for highmem pages lib/spinlock_debug.c: print owner on spinlock lockup Akira Fujita (1): ext4: fix deadlock in ext4_ordered_write_end() Akshay Joshi (4): Staging: usbip: Remove trailing spaces. Staging: usbip: Fix braces and spaces to match coding style. gma500: Convert spaces to tabs in accel_2d.c. Drivers: i915: Fix all space related issues. Al Cooper (1): [media] media: Fix a UVC performance problem on systems with non-coherent DMA Al Viro (86): um: use subarch-obj instead of copying... um: switch {rt_,}sigreturn() to set_current_blocked() um: don't rely on sc.fpstate not having been reassigned prior to rt_sigreturn() um: make copy_sc() static um: series of __get_user() is costly in sigframe handling um: switch to -idirafter, get saner kern_constants.h out of that um: kill skas_ptregs.h um: take user_constants.h to include/generated um: -include user.h for USER_OBJ, trim includes um: kill a couple of useless includes of kern_constants.h um: get rid of kern_constants.h um: trim unused junk from user.h um: get rid of sysdep/checksum.h um: take vm-flags.h to sys-*/asm um: Get rid of UPT_SET/UPT_REG macros um: get rid of sysdep/sc.h um: get rid of unused macros in ptrace_user.h um: merge arch/um/sys-{i386,x86_64}/asm um: merge arch/um/sys-{i386,x86_64}/shared um: merge arch/um/sys-{i386,x86_64} um: kill dead code around uaccess um: merge hard_handler() instances, switch to use of SA_SIGINFO um: merge arch/um/os-Linux/sys-{i386,x86_64} um: kill includes of sysdep/sigcontext.h from stuff built with kernel headers um: switch stub_segv_handler to SA_SIGINFO variant, get rid of magic crap in there um: don't bother blocking SIGARLM and SIGUSR1 um: simplify set_handler() um: fill the handlers array at build time um: take system.h out of shared/sysdep um: take userland definition of barrier() to user.h um: start switching the references to host mcontext_t to its userland type um: finish conversion to mcontext_t um: shared/process.h is empty now; kill it um: sysdep/barrier.h is not used for anything um: merge skas_ptrace.h 32/64bit variants um: merge kernel_offsets_*.h um: arch_hweight.h is needed only on uml-x86 um: trim detritus from Makefile-i386 um: merge Makefile-{i386,x86_64} um: take arch/um/sys-x86 to arch/x86/um um: bury unused macros around ptrace.h um: make load_initrd() static, kill shared/initrd.h um: trim kern.h um: don't include kern.h unless it's needed um: shared/syscall.h is not even included um: kill shared/task.h and HOST_TASK_REGS um: make flush_tlb_kernel_range_common() static um: kill shared/tlb.h um: kill shared/mem_kern.h um: take register_winch_irq() into the caller of is_skas_winch() um: take chan_*.h and line.h to arch/um/drivers um: take mconsole*.h to arch/um/drivers um: kill um_uaccess.h um: kill useless include of user.h um: take um_mmu.h to asm/mmu.h, clean asm/mmu_context.h a bit um: merge tls_{32,64}.h um: merge host_ldt_{32,64}.h um: move asm/desc.h into arch/x86/um/asm um: merge os-Linux/tls.c into arch/x86/um/os-Linux/tls.c um: sanitize paths in sys_call_table* includes um: merge HOST_... of registers common on i386 and amd64 um: increase stack growth cushion in pagefault um: no need to play with save_sp in signal frame setup anymore um: merge signal_{32,64}.c um: take ldt.h to arch/x86/um/asm/mm_context.h um: take ubd_user.h to its users... um: asm/apic.h is there only to shadow the x86 one... um: required-features.h is there only to shadow x86 one... um: irq_vectors.h just shadows x86 one um: page_offset.h is never used um: fix gcov build breakage um: unify KSTK_... um: unify ptrace_user.h um: kill useless argument of free_chan() and free_one_chan() um: a couple of missing dependencies... um: clean Kconfig up a bit um: switch to generic-y um: hw_irq.h can go generic as well um: asm/pda.h is not needed anymore um: segment.h is x86-only and needed only there um: generic ftrace.h will do... um: kill system-um.h um: distribute exports to where exported stuff is defined um: switch to use of drivers/Kconfig vfs: d_invalidate() should leave mountpoints alone VFS: we need to set LOOKUP_JUMPED on mountpoint crossing Alan Cox (10): gma500: do a pass over the FIXME tags gma500: kill bogus code gma500: Fix backlight crash gma500: Fix up suspend/resume n_gsm: update TODO list n_gsm: Send CLD command on exit max3110: Fix up port->tty backreferencing staging: gma500: frame buffer locking staging: gma500: gtt based hardware scrolling console x86, mrst: Some drivers need to known when an SCU is available Alan Stern (11): PM / Runtime: Add macro to test for runtime PM events USB: EHCI: remove usages of hcd->state USB: gadget: storage: remove alignment assumption USB: document ehci-hcd's "companion" sysfs attribute USB: Update USB default wakeup settings USB: UHCI: improve comments and logic for root-hub suspend USB: Add wakeup info to debugging messages PM: Update the policy on default wakeup settings EHCI: workaround for MosChip controller bug PM / Runtime: Automatically retry failed autosuspends USB: Update last_busy time after autosuspend fails Alasdair G Kergon (5): dm kcopyd: fix job_pool leak dm table: add singleton feature dm table: add always writeable feature dm table: add immutable feature dm: export dm get md Alex Deucher (31): drm/radeon/kms: bail early in dvi_detect for digital only connectors drm/radeon/kms: handle !force case in connector detect more gracefully drm/radeon/kms: set DMA mask properly on newer PCI asics drm/radeon/kms: simplify r6xx blit code drm/radeon/kms: make r600-NI blit suspend code common drm/radeon/kms/DCE4.1: fix dig encoder to transmitter mapping drm/radeon/kms/DCE4.1: ss is not supported on the internal pplls drm/radeon/kms/DCE4.1: fix Select_CrtcSource EncodeMode setting for DP bridges (v2) drm/radeon/kms/atom: fix handling of FB scratch indices drm/radeon/kms: rework texture cache flush in r6xx+ blit code drm/radeon/kms/cayman/blit: specify CP_COHER_CNTL2 with surface_sync drm/radeon/kms: properly set panel mode for eDP drm/radeon/kms: cleanup atombios_adjust_pll() drm/radeon/kms: rework DP bridge checks drm/radeon/kms: only require 2.7 Ghz DP clock for NUTMEG drm/radeon/kms/atom: rework encoder dpms drm/radeon/kms: check for DP MST mode in a few more places (v2) drm/radeon/kms: allocate vram scratch page on 6xx+ drm/radeon/kms: move atom encoder setup to a new file drm/radeon/kms: make atombios_dvo_setup() version based drm/radeon/kms: make atombios_dig_encoder_setup() version based drm/radeon/kms: make atombios_dig_transmitter_setup() version based drm/radeon/kms: remove useless radeon_ddc_dump() drm/radeon/kms: always do extended edid probe drm/radeon/kms: split MSI check into a separate function drm/radeon/kms: Add MSI quirk for HP RS690 drm/radeon/kms: Add MSI quirk for Dell RS690 drm/radeon/kms: add MSI module parameter drm/radeon/kms: set HPD polarity in hpd_init() drm/radeon/kms: fix DP setup on TRAVIS bridges drm/radeon/kms: don't poll forever if MC GDDR link training fails Alex Hacker (2): ath9k_hw: use register name in place of magic value ath9k_hw: fix EIFS value to microseconds Alex Shi (2): slub: correct comments error for per cpu partial slub: Discard slab page when node partial > minimum partial number Alex,Shi (3): slub: Code optimization in get_partial_node() kswapd: avoid unnecessary rebalance after an unsuccessful balancing kswapd: assign new_order and new_classzone_idx after wakeup in sleeping Alexander Duyck (58): ixgbe: Refactor transmit map and cleanup routines ixgbe: replace reference to CONFIG_FCOE with IXGBE_FCOE ixgbe: Cleanup FCOE and VLAN handling in xmit_frame_ring ixgbe: Simplify transmit cleanup path ixgbe: convert rings from q_vector bit indexed array to linked list ixgbe: Add support for setting CC bit when SR-IOV is enabled ixgbe: Always tag VLAN tagged packets ixgbe: Change default Tx work limit size to 256 buffers v2 ixgbe: consolidate all MSI-X ring interrupts and poll routines into one ixgbe: cleanup allocation and freeing of IRQ affinity hint ixgbe: Use ring->dev instead of adapter->pdev->dev when updating DCA ixgbe: commonize ixgbe_map_rings_to_vectors to work for all interrupt types ixgbe: Drop unnecessary adapter->hw dereference in loopback test setup ixgbe: combine PCI_VDEVICE and board declaration to same line ixgbe: Update TXDCTL configuration to correctly handle WTHRESH ixgbe: cleanup reset paths ixgbe: cleanup configuration of EITRSEL and VF reset path ixgbe: Correctly name and handle MSI-X other interrupt ixgbe: remove redundant configuration of tx_sample_rate v2 ixgbe: Update packet buffer reservation to correct fdir headroom size ixgbe: make ixgbe_up and ixgbe_up_complete void functions ixgbe: Add missing code for enabling overheat sensor interrupt ixgbe: Add SFP support for missed 82598 PHY ixgbe: drop adapter from ixgbe_fso call documentation ixgbe: Make better use of memory allocations in one-buffer mode w/ RSC igb: Update RXDCTL/TXDCTL configurations igb: Update max_frame_size to account for an optional VLAN tag if present igb: drop support for single buffer mode igb: streamline Rx buffer allocation and cleanup igb: update ring and adapter structure to improve performance igb: Refactor clean_rx_irq to reduce overhead and improve performance igb: drop the "adv" off function names relating to descriptors igb: Replace E1000_XX_DESC_ADV with IGB_XX_DESC igb: Remove multi_tx_table and simplify igb_xmit_frame igb: Make Tx budget for NAPI user adjustable igb: split buffer_info into tx_buffer_info and rx_buffer_info igb: Consolidate creation of Tx context descriptors into a single function igb: Make first and tx_buffer_info->next_to_watch into pointers igb: Create separate functions for generating cmd_type and olinfo igb: Cleanup protocol handling in transmit path igb: Combine all flag info fields into a single tx_flags structure igb: consolidate creation of Tx buffer info and data descriptor igb: push data into first igb_tx_buffer sooner to reduce stack usage igb: Use node specific allocations for the q_vectors and rings igb: avoid unnecessary conversions from u16 to int igb: Consolidate all of the ring feature flags into a single value igb: Move ITR related data into work container within the q_vector igb: cleanup IVAR configuration igb: retire the RX_CSUM flag and use the netdev flag instead igb: leave staterr in place and instead us a helper function to check bits igb: fix recent VLAN changes that would leave VLANs disabled after reset igb: move TX hang check flag into ring->flags igb: add support for NETIF_F_RXHASH igb: avoid unnecessarily creating a local copy of the q_vector igb: Make certain one vector is always assigned in igb_request_irq igb: Fix features that are currently 82580 only and should also be i350 igb: Drop unnecessary write of E1000_IMS from igb_msix_other igb: Add workaround for byte swapped VLAN on i350 local traffic Alexander Graf (12): KVM: PPC: move compute_tlbie_rb to book3s common header KVM: PPC: Add papr_enabled flag KVM: PPC: Check privilege level on SPRs KVM: PPC: Interpret SDR1 as HVA in PAPR mode KVM: PPC: Read out syscall instruction on trap KVM: PPC: Add support for explicit HIOR setting KVM: PPC: Add PAPR hypercall code for PR mode KVM: PPC: Stub emulate CFAR and PURR SPRs KVM: PPC: Support SC1 hypercalls for PAPR in PR mode KVM: PPC: Enable the PAPR CAP for Book3S KVM: PPC: Add sanity checking to vcpu_run KVM: Update documentation to include detailed ENABLE_CAP description Alexander Guller (7): mlx4_en: Assigning TX irq per ring mlx4_en: Removing reserve vectors mlx4_en: Adjusting moderation per each ring mlx4_en: Added missing iounmap upon releasing a device mlx4_en: Fix QP number calculation according to module param mlx4_en: Fix crash upon device initialization error mlx4_en: Adding 40gb speed report for ethtool Alexander Shishkin (1): max3110: add sysrq support Alexander Simon (1): mac80211: fix indentation Alexander Smirnov (1): IEEE802.15.4: 6LoWPAN basic support Alexander Stein (2): ALSA: hda - Fix typo ALSA: hda_hwdep: Fix possible buffer overflow Alexander Tarasikov (2): mmc: msm_sdcc: Fix a typo in MSM SDCC driver gpio setup msm: Implement init_card operation for MSM SDCC Alexander Thomas (1): staging: usbip: fix up api changes that broke windows clients Alexandre Bounine (4): RapidIO: add mport driver for Tsi721 bridge RapidIO: fix potential null deref in rio_setup_device() drivers/net/rionet.c: fix ethernet address macros for LE platforms RapidIO: documentation update Alexey Dobriyan (2): crypto: whirlpool - count rounds from 0 lib/kstrtox: common code between kstrto*() and simple_strto*() functions Alexey Khoroshilov (7): Staging: serqt_usb2: fix sleeping with spinlock held staging/easycap: fix mismatch in easycap_poll() mutex lock-unlock staging: lirc: fix mismatch in mutex lock-unlock in imon_probe staging: lirc_sasem: fix NULL pointer dereference in sasem_probe staging: mei: unlock dev->device_lock mutex on error path in mei_open() staging: sep: call to sep_ioctl() may leave driver in unusable state jffs2: use mutex_is_locked() in __jffs2_flush_wbuf() Ali Bahar (24): staging: r8712u: Sets to SSID, and to AP MAC#, can now be done when the interface is Down. staging: r8712u: Interface-state not fully tracked. staging: r8712u: Merging Realtek's latest (v2.6.6). Added copyright banners. staging: r8712u: Merging Realtek's latest (v2.6.6). Added Larry's copyright. staging: r8712u: Merging Realtek's latest (v2.6.6). Copyright banners. staging: r8712u: Merging Realtek's latest (v2.6.6). Renamed _netdev_priv. staging: r8712u: Merging Realtek's latest (v2.6.6). Removed os_free_netdev. staging: r8712u: Merging Realtek's latest (v2.6.6). Removed _usb_alloc_urb. staging: r8712u: Merging Realtek's latest (v2.6.6). Removed _usb_submit_urb. staging: r8712u: Merging Realtek's latest (v2.6.6). Removed unused MSECS. staging: r8712u: Merging Realtek's latest (v2.6.6). Redundant NULL check. staging: r8712u: Merging Realtek's latest (v2.6.6). Updated include directives. staging: r8712u: Merging Realtek's latest (v2.6.6). Removed redundant .mem. staging: r8712u: Merging Realtek's latest (v2.6.6). No power tracking OID. staging: r8712u: Merging Realtek's latest (v2.6.6). stop_drv_timers moved. staging: r8712u: Merging Realtek's latest (v2.6.6). Use stack, not malloc. staging: r8712u: Merging Realtek's latest (v2.6.6). Tx-code refactoring. staging: r8712u: Merging Realtek's latest (v2.6.6). Rework efuse data handling. staging: r8712u: Merging Realtek's latest (v2.6.6). tx: NULL _in_ spin lock. staging: r8712u: Merging Realtek's latest (v2.6.6). New decl's and defines. staging: r8712u: Merging Realtek's latest (v2.6.6). Various fixes. staging: r8712u: Merging Realtek's latest (v2.6.6). Various fixes. staging: r8712u: Merging Realtek's latest (v2.6.6). Tx aggregation. staging: r8712u: Most return-values changed from -1 to proper errno macros. Alim Akhtar (3): ARM: EXYNOS4: register the second instance of pl330 DMAC ARM: S5PV210: register the second instance of pl330 DMAC ARM: S5PC100: register the second instance of pl330 DMAC Allan Stephens (23): tipc: Remove obsolete manipulation of message re-route count field tipc: Eliminate obsolete filter for unexpected unicast messages tipc: Display meaningful peer interface name during link creation tipc: Initialize peer session field of newly created link endpoint tipc: Enhance filtering of out-dated link reset messages tipc: Update obsolete references to multicast link tipc: Cosmetic changes to broadcast bearer send routine tipc: Remove non-executable code to handle broadcast bearer congestion tipc: Enhance cleanup of broadcast link when contact with node is lost tipc: Prevent broadcast link stalling when another node fails tipc: Fix node lock problems during broadcast message reception tipc: Remove deferred queue head caching during broadcast message reception tipc: Discard incoming broadcast messages that are unexpected tipc: Remove obsolete congestion handling when sending a broadcast NACK tipc: Eliminate redundant check when sending messages tipc: Prevent rounding issues when saving connect timeout option tipc: Ensure congested links receive bearer status updates tipc: Ensure both nodes recognize loss of contact between them tipc: Fix unsafe device list search when enabling bearer tipc: Remove redundant search when enabling bearer tipc: Lower limits for number of bearers and media types tipc: Prevent fragmented messages during initial name table exchange tipc: Enhance sending of bulk name table messages Allen Kay (3): intel-iommu: fix return value of iommu_unmap() API intel-iommu: set iommu_superpage on VM domains to lowest common denominator intel-iommu: fix superpage support in pfn_to_dma_pte() Allison Henderson (5): ext4: Add new ext4_discard_partial_page_buffers routines ext4: fix xfstests 75, 112, 127 punch hole failure ext4: fix 2nd xfstests 127 punch hole failure ext4: fix fsx truncate failure ext4: fix partial page writes Aloisio Almeida Jr (1): MAINTAINERS: Add NFC subsystem entry Alwin Beukers (24): staging: brcm80211: fixed checkpatch warnings staging: brcm80211: removed accessor functions for band type and etheraddress. staging: brcm80211: fixed function returns staging: brcm80211: made NULL ethernet address const staging: brcm80211: removed empty brcms_c_reset_bmac_done callback function staging: brcm80211: decreased indentation level of brcms_c_wme_setparams function staging: brcm80211: removed redundant code from brcms_c_set_gmode staging: brcm80211: cleanup of shared memory related wrapper functions staging: brcm80211: cleanup of transmit buffer size related wrapper function staging: brcm80211: cleanup of several wrapper functions staging: brcm80211: removed unneeded call to brcms_b_tx_fifo_suspended staging: brcm80211: removed synchronisation of wlc->machwcap field staging: brcm80211: remove brcms_b_dotxstatus wrapper function staging: brcm80211: combined if statements staging: brcm80211: remove N mode validation function brcm80211: cleanup function prototypes brcm80211: removed unused functions brcm80211: moved power conversion functions brcm80211: moved function brcmu_chipname brcm80211: moved function brcmu_parse_tlvs brcm80211: moved function brcmu_chspec_malformed brcm80211: moved function brcmu_mkiovar brcm80211: moved function brcmu_format_flags brcm80211: removed file wifi.c Ameen Rahman (1): qlcnic: Added error logging for firmware abort Amerigo Wang (1): Makefile: remove a duplicated line Amir Hanania (2): ixgbe - DDP last user buffer - error to warn ixgbe: Add FCoE DDP allocation failure counters to ethtool stats. Amit Beka (1): iwlagn: remove duplicate list init Amit Kumar Salecha (1): MAINTAINERS: change netxen_nic maintainers Amit Nagal (2): HID: hidraw: free list for all error in hidraw_open HID: hidraw: open count should not increase if error Amit Shah (8): virtio: console: Fix indentation virtio: console: Ignore port name update request if name already set virtio: console: Use wait_event_freezable instead of _interruptible virtio: console: Fix return type for get_inbuf() virtio: console: make get_inbuf() return port->inbuf if present virtio: console: rename variable virtio: console: make discard_port_data() use get_inbuf() virtio: console: add port stats for bytes received, sent and discarded Amitkumar Karwar (15): mwifiex: print driver version information mwifiex: use cfg80211 dynamic scan table and cfg80211_get_bss API libertas: update readme file mwifiex: fix 5GHz association issue mwifiex: update bss band information mwifiex: pass correct band parameter to ieee80211_channel_to_frequency() mwifiex: reset skb length before inserting to free queue mwifiex: remove unnecessary mwifiex_dump_station_info() call mwifiex: remove unreachable code mwifiex: fix Tx data rate display issue mwifiex: correct AMSDU aggregation check mwifiex: handle an error path correctly mwifiex: add support for Marvell pcie8766 chipset mwifiex: use separate wait condition for each command node mwifiex: fix make namespacecheck warnings Amon Ott (1): ceph: fix 32-bit ino numbers Amy Maloche (1): Input: add support for pm8xxx based vibrator driver Anand Gadiyar (1): usb: musb: Enable DMA mode1 RX for transfers without short packets Anatolij Gustschin (6): video: mb862xx-i2c: fix for reliable decoder register access powerpc/5200: mpc5200b.dtsi: add spi node address- and size-cells properties powerpc/5200: dts: digsy_mtc.dts: update to add can, pci, serial and spi powerpc/5200: dts: digsy_mtc.dts: add timer0 and timer1 gpio properties powerpc/5200: dts: digsy_mtc.dts: enable both MSCAN nodes powerpc/85xx: fix PHYS_64BIT selection for P1022DS Anderson Briglia (1): Bluetooth: Fix wrong memcpy size on LE start encryption Anderson Lizardo (1): Bluetooth: use recommended LE connection parameters Andi Kleen (26): serial: mfd: Initconst section fixes rcu: Fix mismatched variable in rcutree_trace.c perf tools: Make stat/record print fatal signals of the target program perf: Support setting the disassembler style x86, intel: Output microcode revision in /proc/cpuinfo x86, intel: Use c->microcode for Atom errata check coretemp: Get microcode revision from cpu_data drm/radeon: Drop inlines from evergreen_cs.c / r600_cs.c drm/radeon: drop inlines in r600_blit.c drm/radeon: Remove now unused functions in radeon driver drm/radeon: Remove more bogus inlines in the radeon driver. drm/radeon: Move more code out of line drm/radeon: Move r100_*_*reg out of line i915: Move i915_read/write out of line mfd: Fix ab3100 initconst section direct-io: separate fields only used in the submission path from struct dio direct-io: fix a wrong comment direct-io: rearrange fields in dio/dio_submit to avoid holes direct-io: use a slab cache for struct dio direct-io: separate map_bh from dio direct-io: inline the complete submission path direct-io: merge direct_io_walker into __blockdev_direct_IO vfs: do (nearly) lockless generic_file_llseek vfs: add generic_file_llseek_size ext4: replace cut'n'pasted llseek code with generic_file_llseek_size nfs: drop unnecessary locking in llseek Andiry Xu (13): xHCI: refine td allocation usbcore: refine warm reset logic usbcore: get BOS descriptor set usbcore: check device's LPM capability xHCI: set link state xHCI: test and clear RWC bit xHCI: Clear PLC for USB2 root hub ports xHCI: Check host USB2 LPM capability xHCI: test USB2 software LPM xHCI: set USB2 hardware LPM usbcore: add sysfs support to xHCI usb2 hardware LPM xHCI: AMD isoc link TRB chain bit quirk xHCI: fix debug message Andre Guedes (3): Bluetooth: Reduce critical region. Bluetooth: Check 'dev_class' in mgmt_device_found() Bluetooth: hci_le_adv_report_evt code refactoring Andrea Arcangeli (13): mremap: check for overflow using deltas mremap: avoid sending one IPI per page thp: mremap support and TLB optimization mm: thp: tail page refcounting fix powerpc: remove superfluous PageTail checks on the pte gup_fast powerpc: get_hugepte() don't put_page() the wrong page powerpc: gup_hugepte() avoid freeing the head page too many times powerpc: gup_hugepte() support THP based tail recounting powerpc: gup_huge_pmd() return 0 if pte changes s390: gup_huge_pmd() support THP tail recounting s390: gup_huge_pmd() return 0 if pte changes sparc: gup_pte_range() support THP based tail recounting thp: share get_huge_page_tail() Andreas Dilger (1): ext4: avoid setting directory i_nlink to zero Andreas Gruenbacher (3): vfs: indicate that the permission functions take all the MAY_* flags vfs: pass all mask flags check_acl and posix_acl_permission vfs: add a comment to inode_permission() Andreas Hofmeister (2): ipv6: Do not use routes from locally generated RAs ipv6: fix route lookup in addrconf_prefix_rcv() Andreas Krist (1): HID: hid-apple: add device ID of another wireless aluminium Andreas Oberritter (12): [media] DVB: dvb_frontend: fix stale parameters on initial frontend event [media] DVB: dvb_frontend: avoid possible race condition on first event [media] DVB: dvb_frontend: clear stale events on FE_SET_FRONTEND [media] DVB: dvb_frontend: update locking in dvb_frontend_{add, get_event} [media] DVB: Add SYS_TURBO for north american turbo code FEC [media] DVB: dvb_frontend: Fix compatibility criteria for satellite receivers [media] DVB: gp8psk-fe: use SYS_TURBO [media] DVB: improve documentation for satellite delivery systems [media] DVB: Change API version in documentation: 3 -> 5.4 [media] DVB: dvb_frontend: remove static assignments from dtv_property_cache_sync() [media] DVB: increment minor version after addition of SYS_TURBO [media] DVB: dvb_frontend: check function pointers on reinitialize Andrei Warkentin (2): MD: Allow restarting an interrupted incremental recovery. mmc: core: ext_csd.raw_* used in comparison but never set Andres Salomon (8): staging: olpc_dcon: remove noinit module variable staging: olpc_dcon: drop support for DCON v1 staging: olpc_dcon: replace remaining calls to i2c_smbus_read/write libertas: prioritize usb8388_olpc.bin firmware on OLPC machines mtd: provide an alias for the redboot module name jffs2: implement mount option parsing and compression overriding jffs2: add compr=lzo and compr=zlib options libertas: ensure we clean up a scan request properly Andrew Bresticker (1): memcg: replace ss->id_lock with a rwlock Andrew Kephart (1): udlfb: Search config descriptor if not at device level Andrew Lynn (1): mfd: Expose TurnOnStatus in ab8500 sysfs Andrew Morton (8): nbd-replace-some-printk-with-dev_warn-and-dev_info-checkpatch-fixes block/blk-sysfs.c: fix kerneldoc references include/linux/dmar.h: forward-declare struct acpi_dmar_header /proc/self/numa_maps: restore "huge" tag for hugetlb vmas mm-add-comment-explaining-task-state-setting-in-bdi_forker_thread-fix llist-return-whether-list-is-empty-before-adding-in-llist_add-fix drivers/net/ethernet/i825xx/3c505.c: fix build with dynamic debug include/linux/dma-mapping.h: add dma_zalloc_coherent() Andrew Vagin (1): perf: Fix counter of ftrace events Andrew Vasquez (1): [SCSI] qla2xxx: Correct inadvertent clearing of RISC_INTR status. Andrzej Jakowski (1): [SCSI] isci: overriding max_concurr_spinup oem parameter by max(oem, user) Andrzej Pietrasiewicz (1): [media] media: mem2mem: eliminate possible NULL pointer dereference Andy Doan (1): OMAPFB: make debug message more useful Andy Fleming (2): net: Allow skb_recycle_check to be done in stages phylib: Modify Vitesse RGMII skew settings Andy Green (12): I2C: OMAP2+: Name registers in I2C IP V2 only accordingly I2C: OMAP: add rev to omap i2c platform data I2C: OMAP1: set IP revision in platform data I2C: OMAP2+: Pass hwmod rev knowledge via platform_data when i2c bus added I2C: OMAP2+: use platform_data ip revision to select register map I2C: OMAP2+: Solve array bounds overflow error on i2c idle I2C: OMAP2+: address confused probed version naming I2C: OMAP1/OMAP2+: add flags field to omap i2c platform data I2C: OMAP2+: Pass flags up to omap i2c platform_data as well I2C: OMAP1: set i2c unit feature implementation flags in platform data I2C: OMAP2+: Convert omap I2C driver to use feature implementation flags from platform data I2C: OMAP1/OMAP2+: prepend I2C IP version to probed version shown in dev_info Andy Lutomirski (1): x86-64, unistd: Remove bogus __IGNORE_getcpu Andy Ross (4): asus-laptop: Platform detection for Pegatron Lucid asus-laptop: Pegatron Lucid ALS sensor asus-laptop: allow boot time control of Pegatron ALS sensor asus-laptop: Pegatron Lucid accelerometer Andy Shevchenko (17): [media] adp1653: check platform_data before usage [media] adp1653: check error code of adp1653_init_controls pch_phub: use kernel's '%pM' format option to print MAC staging: vt6655: simplify MAC printing by using %pM staging: vt6656: use %pM for printing MACs [media] adp1653: set media entity type ALSA: 6fire: don't use custom hex_to_bin() wireless: at76c50x: use native hex_pack_byte() method RDMA/amso1100: Use '%pM' format option to print MAC target: simplify target_parse_naa_6h_vendor_specific() iscsi-target: use native hex2bin for chap_string_to_hex tcm_fc: remove custom hex_to_bin in ft_parse_wwn lib: rename pack_hex_byte() to hex_byte_pack() kgdb: follow rename pack_hex_byte() to hex_byte_pack() security: follow rename pack_hex_byte() to hex_byte_pack() fat: follow rename pack_hex_byte() to hex_byte_pack() wireless: at76c50x: follow rename pack_hex_byte to hex_byte_pack Andy Walls (2): [media] cx23885, cx25840: Provide IR Rx timeout event reports [media] cx18: Fix FM radio Andy Whitcroft (1): readlinkat: ensure we return ENOENT for the empty pathname for normal lookups Aneesh Kumar K.V (5): fs/9p: Update zero-copy implementation in 9p fs/9p: inode file operation is properly initialized init_special_inode fs/9p: Cleanup option parsing in 9p net/9p: Convert net/9p protocol dumps to tracepoints vfs: add hex format for MAY_* flag values Angus Clark (1): stmmac: fix NULL pointer dereference in capabilities fixup (v2) Anirban Chakraborty (4): qlcnic: Fix enviroment variable for udev event generation during FW dump qlcnic: FW dump related changes MAINTAINERS: qlcnic qlcnic: Change CDRP function Anisse Astier (2): asus-laptop: pega_accel - Report accelerometer orientation change through udev asus-laptop: Add rfkill support for Pegatron Lucid tablet Anshuman Khandual (1): perf events, powerpc: Add POWER7 stalled-cycles-frontend/backend events Anssi Hannula (7): [media] move ati_remote driver from input/misc to media/rc [media] ati_remote: migrate to the rc subsystem [media] ati_remote: parent input devices to usb interface [media] ati_remote: fix check for a weird byte [media] ati_remote: add keymap for Medion X10 RF remote [media] ati_remote: add support for SnapStream Firefly remote [media] ati_remote: update Kconfig description Anton Blanchard (29): [SCSI] ipr: Always initiate hard reset in kdump kernel powerpc/pseries: Avoid spurious error during hotplug CPU add powerpc/numa: Enable SD_WAKE_AFFINE in node definition sched: Allow SD_NODES_PER_DOMAIN to be overridden powerpc/numa: Increase SD_NODES_PER_DOMAIN to 32. powerpc/numa: Disable NEWIDLE balancing at node level powerpc/numa: Remove duplicate RECLAIM_DISTANCE definition powerpc/numa: Remove double of_node_put in hot_add_node_scn_to_nid powerpc: Use for_each_node_by_type instead of open coding it powerpc: Coding style cleanups powerpc: Fix oops when echoing bad values to /sys/devices/system/memory/probe powerpc: Fix deadlock in icswx code memory hotplug: Refuse to add unaligned memory regions ehea: Remove NETIF_F_LLTX ehea: Update multiqueue support ehea: Remove force_irq logic in napi poll routine ehea: Remove num_tx_qps module option ehea: Dont check NETIF_F_TSO in TX path ehea: Add vlan_features ehea: Allocate large enough skbs to avoid partial cacheline DMA writes ehea: Simplify ehea_xmit2 and ehea_xmit3 ehea: Merge swqe2 TSO and non TSO paths ehea: Simplify type 3 transmit routine ehea: Remove some unused definitions ehea: Add 64bit statistics ehea: Remove LRO support ehea: Add GRO support ehea: Remove unused tcp_end field in send WQ [SCSI] Fix block queue and elevator memory leak in scsi_alloc_sdev Antonio Ospite (4): [media] videodev: fix a NULL pointer dereference in v4l2_device_release() leds: save the delay values after a successful call to blink_set() leds: turn the blink_timer off before starting to blink Documentation: update CodingStyle use of braces Antonio Quartulli (9): batman-adv: hash_add() has to discriminate on the return value batman-adv: correct several typ0s in the comments batman-adv: detect clients connected through a 802.11 device batman-adv: implement AP-isolation on the receiver side batman-adv: implement AP-isolation on the sender side batman-adv: print client flags in the local/global transtables output batman-adv: fix tt_local_reset_flags() function batman-adv: correctly set the data field in the TT_REPONSE packet batman-adv: unify hash_entry field position in tt_local/global_entry Antti Julku (2): Bluetooth: Add mgmt command for fast connectable mode Bluetooth: Add mgmt events for blacklisting Antti Palosaari (14): [media] dvb-usb: prepare for multi-frontend support (MFE) [media] dvb-usb: multi-frontend support (MFE) [media] anysee: use multi-frontend (MFE) [media] em28xx: use MFE lock for PCTV nanoStick T2 290e [media] af9015: map remote for Leadtek WinFast DTV2000DS [media] af9015: use logic or instead of sum numbers [media] a8293: Allegro A8293 SEC driver [media] tda10071: NXP TDA10071 DVB-S/S2 driver [media] em28xx: add support for PCTV DVB-S2 Stick 460e [2013:024f] [media] get_dvb_firmware: add dvb-fe-tda10071.fw [media] get_dvb_firmware: update tda10071 file url [media] tda10071: do not download last byte of fw [media] tda10071: change sleeps to more suitable ones [media] get_dvb_firmware: whitespace fix Archit Taneja (27): OMAP: DSS2: DISPC: Prepare dispc_dump_regs() for shortening OMAP: DSS2: DISPC: Shorten dispc_dump_regs() OMAP: DSS2: DISPC: dispc_save_context() and dispc_restore_context() cleanup OMAP: DSS2: DISPC: Shorten _dispc_set_color_conv_coef() OMAP: DSS2: Use a macro to declare size of the fifo_size array in dispc.c OMAP: DSS2: Use MIPI DSI enums from include/video/mipi_display.h OMAP: DSS2: DSI: Represent L4 and VP as sources of VC instead of modes OMAP: DSS2: Create enum for DSI operation modes OMAP: DSS2: DSI: Introduce generic write functions OMAP: DSS2: DSI: Remove functions dsi_vc_dcs_read_1() and dsi_vc_dcs_read_2() OMAP: DSS2: DSI: Split dsi_vc_dcs_read() into 2 functions OMAP: DSS2: DSI: Introduce generic read functions OMAP: DSS2: Clean up stallmode and io pad mode selection OMAP: DSS2: Create an enum for DSI pixel formats OMAP: DSS2: DSI: Send zero length packet in dsi_vc_send_null() OMAP: DSS2: DSI Video mode support OMAPDSS: DISPC: Reduce the number of arguments in dispc_ovl_setup() OMAPDSS: DISPC: Pass overlay params as arguments to dispc_ovl_setup() OMAPDSS: DISPC: Create helper function dispc_mgr_is_lcd() OMAPDSS: DISPC: Get correct pixel clock for TV manager OMAPDSS: DISPC: Remove hardcoded use of PPL in five tap clock calculation OMAPDSS: DISPC: Clean up scaling related clock and five tap calculations OMAPDSS: FEATURES: Create a range param to get max downscaling OMAPDSS/OMAP_VOUT: Fix incorrect OMAP3-alpha compatibility setting OMAPDSS: DISPC: VIDEO3 pipeline support OMAPDSS: DISPC: zorder support for DSS overlays ARM: OMAP: ctrl: Fix CONTROL_DSIPHY register fields Arend Van Spriel (1): staging: brcm80211: fix compile error on non-x86 archs since 3.0 kernel Arend van Spriel (99): staging: brcm80211: modify the FOREACH_BSS macro staging: brcm80211: use mutex instead of semaphore in dhd_linux.c staging: brcm80211: remove duplicated code from brcmf_init_iscan staging: brcm80211: remove volatile keyword from driver sources staging: brcm80211: use native error code in brcmf_c_pattern_atoh() staging: brcm80211: use mac_pton() instead of own implementation staging: brcm80211: replace semaphore by wait_queue for sysioc thread staging: brcm80211: remove volatile keyword used in struct rte_console staging: brcm80211: replace simple_strtoul usage in brcmsmac staging: brcm80211: replace simple_strtoul usage in brcmfmac staging: brcm80211: use PCI_DEVICE() macro in device table staging: brcm80211: remove unused rx status definitions staging: brcm80211: reformat long lines in brcmsmac to 80 columns staging: brcm80211: remove wl_alloc_dma_resources() function staging: brcm80211: remove dma_addrwidth() function staging: brcm80211: cleanup to get rid of 'over 80 character' line staging: brcm80211: fix 'uninitialized usage' compiler warning staging: brcm80211: remove target platform limitations for drivers staging: brcm80211: updated TODO file staging: brcm80211: use wait queues instead of semaphores in wl_cfg80211.c staging: brcm80211: remove W_SM and R_SM macros from dma.c staging: brcm80211: remove PHYSADDR macro from dma.c staging: brcm80211: replace BUS_SWAP32 macro with cpu_to_le32() staging: brcm80211: remove mips specific include from dma.c staging: brcm80211: restrict register access method for bcm47xx staging: brcm80211: restrict MIPS dma bug workaround to BCM47XX staging: brcm80211: make use of crc8 library function staging: brcm80211: make use of cordic library function staging: brcm80211: fix rtnl_lock issue when bringing down brcmfmac staging: brcm80211: fill in proper rx rate in mac80211 rx status staging: brcm80211: remove unused definition flag from top Makefile staging: brcm80211: remove macro definitions from brcmsmac Makefile staging: brcm80211: remove usage of macro WL11N_20MHZONLY staging: brcm80211: remove macro definitions from brcmfmac Makefile staging: brcm80211: rename key endian conversion functions staging: brcm80211: remove brcmf_find_msb() function staging: brcm80211: remove static function prototypes from main.c staging: brcm80211: use static qualifier for local symbols in brcmfmac staging: brcm80211: reduce sparse messages on brcmsmac sources staging: brcm80211: remove sparse warnings from mac80211_if.c staging: brcm80211: use static qualifier for local symbols in brcmsmac staging: brcm80211: remove extern keyword from function definition staging: brcm80211: replace 0 integer with NULL pointer staging: brcm80211: use address space qualifier in brcmfmac staging: brcm80211: remove sparse warning from main.c staging: brcm80211: remove 'default n' from Kconfig staging: brcm80211: remove static function variable in brcmfmac staging: brcm80211: remove static variables from wl_cfg80211.c staging: brcm80211: remove ioctl layer from brcmsmac staging: brcm80211: remove function ieee_set_channel() staging: brcm80211: remove devpath related nvram variable lookup staging: brcm80211: remove brcms_c_get_par and set_par functions staging: brcm80211: remove brcmfmac interface name override staging: brcm80211: remove for_each_bss() macro from brcmfmac driver staging: brcm80211: remove global variable from bcmsdh_sdmmc.c staging: brcm80211: remove static global variables from dhd_sdio.c staging: brcm80211: remove unconditional code blocks from brcmfmac staging: brcm80211: remove uncoditional code blocks from brcmsmac staging: brcm80211: remove ht_cap field from brcms_c_info structure staging: brcm80211: use fragment number provided in transmit frame staging: brcm80211: remove unused function si_pmu_ilp_clock() staging: brcm80211: make device initializer table for wme constant staging: brcm80211: remove dongle firmware related debug code staging: brcm80211: remove unnecessary mac80211 callbacks staging: brcm80211: changing interface to n-phy rssi compute function staging: brcm80211: change interface for common rssi compute function staging: brcm80211: convert endianess before handling the frame staging: brcm80211: use endian annotated structures in brcmsmac staging: brcm80211: move rssi computation to place we need it staging: brcm80211: use d11rxhdr structure in brcms_c_recover_tsf64() staging: brcm80211: only allow one call to add_interface callback staging: brcm80211: reducing indentation levels in bcmsdh_sdmmc.c staging: brcm80211: remove setting ssn to zero upon AMPDU_TX_START staging: brcm80211: remove filtering of received frames staging: brcm80211: remove brcmu_bprintf and related functions staging: brcm80211: replace brcmu_bitcount with hweight8 staging: brcm80211: move driver variable functions to srom.c staging: brcm80211: remove code duplication for driver variable lookup staging: brcm80211: change parameter in driver variable lookup staging: brcm80211: remove locking macro definitions staging: brcm80211: fix thread blocking issue in brcmf_sdbrcm_bus_stop() staging: brcm80211: remove invalid variable lookup from srom staging: brcm80211: use identifiers instead of string for srom lookup staging: brcm80211: use enum identifiers in srom variable tables staging: brcm80211: replace string based variable storage by linked list staging: brcm80211: remove parameter 'off' from _initvars_srom_pci() staging: brcm80211: cleanup driver variable references net: wireless: add brcm80211 drivers staging: brcm80211: remove brcm80211 driver from the staging tree brcm80211: remove sparse warning in fullmac debug function brcm80211: fix sparse endianess error in mac80211_if.c brcm80211: add endian annotation to packet filter structures brcm80211: rename variable in _brcmf_set_multicast_list() brcm80211: fix annotations in TOE configuration functions brcm80211: use endian annotations in scan related function brcm80211: use endian annotation for pmk related structure brcm80211: use endian annotations for assoc ie length request brcm80211: use endian annotation for roaming related parameters brcm80211: use endian annotation for scan time configuration Arik Nemtsov (38): wl12xx: Revert "wl12xx: schedule TX packets according to FW occupancy" wl12xx: Use a single fw for both STA and AP roles wl12xx: use 1 spare block in all cases wl12xx: handle dummy packet event also in ap mode wl12xx: fix session counter wl12xx: use dynamic hlids for AP-mode wl12xx: re-enable block ack session support wl12xx: AP-mode - set STA HT capabilities when adding a STA wl12xx: AP-mode - configure STA HT rates on join wl12xx: AP-mode - configure HT rate support to the FW wl12xx: track freed packets in FW by AC wl12xx: schedule TX packets according to FW packet occupancy wl12xx: handle wrap-around overflow in released Tx blocks FW counter wl12xx: enable AP advanced functionality wl12xx: set the AP-started flag only after setting keys wl12xx: AP-mode - prevent Tx to stale/invalid stations wl12xx: fix tx_queue_count spurious increment wl12xx: allow 11a AP-mode for wl127x devices mac80211: allow action frames with unknown BSSID in GO mode mac80211: add flag to indicate HW only Tx-agg setup support wl12xx: don't queue a new dummy packet if one is already pending wl12xx: don't indicate up PS-filtered dummy packets wl12xx: AP mode - don't regulate FW blocks for non-active STAs wl12xx: support up to 8 stations in AP-mode wl12xx: don't regulate links when a single STA is connected wl12xx: AP mode - enable the BA constraint event from the FW wl12xx: AP mode - clean BA and queue state in tx_reset wl12xx: set mac80211 flags for A-MPDU aggregation support mac80211: add ssid config to bss information in AP-mode wl12xx: AP mode - support hidden SSID wl12xx: correct fw_status structure for 8 sta support in AP-mode wl12xx: report the stop_ba event to all STAs in AP-mode mac80211: treat the WME sta flag as a bit nl80211: support sending TDLS commands/frames mac80211: standardize adding supported rates IEs mac80211: handle TDLS high-level commands and frames nl80211/mac80211: allow adding TDLS peers as stations mac80211: data path modification for TDLS peers Arjan van de Ven (1): net: make the tcp and udp file_operations for the /proc stuff const Arnaldo Carvalho de Melo (65): perf symbols: Stop using 'self' in map_groups__ methods perf buildid-list: Add option to show the running kernel build id perf buildid-list: Support showing the build id in an ELF file perf top browser: Fix up line width calculation perf top: Improve lost events warning perf report: Fix stdio event name header printing perf hists: Stop using 'self' for struct hists perf hists: Allow limiting the number of rows and columns in fprintf perf report: Add option to show total period perf hists: Threaded addition and sorting of entries perf browsers: Add live mode to the hists, annotate browsers perf top: Reuse the 'report' hist_entry/hists classes perf top: Add callgraph support perf annotate browser: Allow navigation to called functions perf top: Use the TUI interface by default perf annotate browser: Use -> to navigate on assembly lines perf hists browser: Don't offer symbol actions when symbols not on --sort perf hists browser: Fix TAB/UNTAB use with multiple events perf hists browser: Update the browser.nr_entries after the timer perf tools: Make --no-asm-raw the default perf hists browser: Recalculate browser pointers after resort/decay perf hists: Don't free decayed entries if in the annotation browser perf ui browser: Handle SIGWINCH perf ui browser: Remove ui_browser__add_exit_keys perf top: Remove entries from entries_collapsed on decay perf hists browser: Fix handling of TAB/UNTAB for multiple events perf hists browser: Invalidate ui_browser->top after timer calls perf annotate browser: Exit when pressing ESC or the left arrow perf ui browser: Add filter method perf annotate browser: Allow toggling the visualization of source code lines perf top: Honour --hide_{user,kernel}_symbols and the 'U' hotkey perf top: Fix the 'E' hotkey, select among multiple events perf hists browser: Add missing hotkeys to the help window perf tui: Catch signals to exit gracefully perf ui browser: Allow initial use without navigation UI elements perf hists: Don't format the percentage on hist_entry__snprintf perf tui: Remove unneeded call to newtCls on startup perf ui browser: Make the colors configurable and change the defaults perf top tui: Give color hints just on the percentage, like on --stdio perf ui browser: Honour the xterm colors perf hists: Move the dso and thread filters from hist_browser perf hists browser: Apply the dso and thread filters when merging new batches perf annotate browser: Don't change selection line when returning from callq perf hists browser: Honour symbol_conf.show_{nr_samples,total_period} perf hists: Don't decay total_period for filtered entries perf hists: Don't consider filtered entries when calculating column widths perf hists browser: Elide DSO column when it is set to just one DSO, ditto for threads perf ui browser: Use libslang to read keys perf hists browser: Refuse 'a' hotkey on non symbolic views perf evlist: Fix grouping of multiple events perf ui progress: Reimplement using slang perf ui: Improve handling sigwinch a bit perf ui: Reimplement ui_helpline using libslang perf ui: Reimplement ui__popup_menu using ui__browser perf ui: Reimplement the popup windows using libslang perf ui: Rename ui__warning_paranoid to ui__error_paranoid perf hists browser: Use K_TIMER perf ui browser: No need to switch char sets that often perf ui browser: Handle K_RESIZE in dialog windows perf header: Fix build on old systems perf hists: Fix recalculation of total_period when sorting entries perf hists browser: Warn about lost events perf report: Add progress bar when processing time ordered events perf top tui: Don't recalc column widths considering just the first page perf top: Fix live annotation in the --stdio interface Arnaud Lacombe (12): kconfig/streamline_config.pl: directly access LSMOD from the environment kconfig/streamline_config.pl: use options to determine operating mode kconfig/streamline_config.pl: merge local{mod,yes}config kconfig/nconf: nuke unreferenced `nohelp_text' kconfig: factor code in menu_get_ext_help() drivers/staging: do not use EXTRA_CFLAGS kconfig: fix __enabled_ macros definition for invisible and un-selected symbols scripts/Makefile.build: do not reference EXTRA_CFLAGS as CFLAGS replacement script/checkpatch.pl: warn about deprecated use of EXTRA_{A,C,CPP,LD}FLAGS [media] drivers/media: do not use EXTRA_CFLAGS powerpc/xics: Add __init to marker icp_native_init() Kbuild: append missing-syscalls to the default target list Arnaud Patard (Rtp) (8): imx51: add pata device imx51: add pata clock imx: efika: Enable pata. MX5: fix clock usage Fix pata imx resource efika: Configure esdhc cd/wp on efika mx/sb ARM: mx5: fix clock usage for suspend ARM: mx5: fix clock usage for suspend Arnd Bergmann (99): Merge branches 'imx/cleanup' and 'stericsson/cleanup' of git+ssh://master.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc into next/cleanup Merge branches 'tegra/board' and 'at91/board' into next/board serial/8250: Move UPIO_TSI to powerpc Merge branch 'omap/cleanup' into next/cleanup Merge branch 'samsung/cleanup' into next/cleanup Merge branch 'samsung/board' into next/board Merge branch 'stericsson/cleanup' into next/cleanup Merge branch 'davinci/cleanup' into next/cleanup Merge branch 'tegra/fixes' into next/fixes Merge branch 'for_3.2/voltage-cleanup' of git://gitorious.org/khilman/linux-omap-pm into omap/voltage Merge branch 'ixp/board' into next/board Merge branch 'omap/cleanup' into next/cleanup ARM: omap: use __devexit_p in dmtimer driver ARM: export rtc_lock for nvram driver ARM: SMP depends on MMU ARM: always use ARM_UNWIND for thumb2 kernels ARM: allow building alignment.c without PROC_FS ARM: vfp: use -mfloat-abi=soft to build vfp ARM: pm: let platforms select cpu_suspend support ARM: limit CONFIG_HAVE_IDE to platforms that do ARM: add io{read,write}{16,32}be functions ARM: pci: always export pcibios_bus_to_resource ARM: OC_ETM should not select ARM_AMBA ARM: common/vic: use proper __iomem annotations ARM: include linux/highmem.h in uaccess functions ASoC: imx: eukrea_tlv320 needs i2c ASoC: sh: use correct __iomem annotations video/omap: fix build dependencies ASoC: samsung: WM8994 depends on MFD_WM8994 Merge branch 'samsung/board' into next/board Merge branch 'omap/fixes' into fixes Merge branch 'imx/cleanup' into next/cleanup Merge branch 'imx/cleanup' into imx/devel Merge branches 'sirf/devel', 'at91/devel', 'imx/devel' and 'davinci/devel' into next/devel Merge branch 'sirf/cleanup' into next/cleanup ARM: pxa: make zylonite_pxa*_init declaration match code ARM: pxa: export symbols from pxa3xx-ulpi ARM: pxa: allow selecting just one of TREO680/CENTRO ARM: pxa: CPU_FREQ_TABLE is needed for CPU_FREQ ARM: pxa: pxa95x is incompatible with earlier pxa ARM: pxa: select POWER_SUPPLY on raumfeld ARM: pxa: centro and treo680 need palm27x ARM: pxa: sharpsl pm needs SPI ARM: pxa: use correct __iomem annotations Merge branch 'depends/rmk/devel-stable' into next/cleanup Merge branch 'imx/fixes' into next/fixes Merge branch 'stericsson/fixes' into next/cleanup Merge branch 'fixes' into next/fixes iommu/omap: always provide iommu debug code usb: gadget: pxa25x: is_vbus_present is gone mtd: nand_h1900 never worked Merge branch 'ep93xx/board' into next/board Merge branch 'samsung/devel' of git+ssh://git.linaro.org/home/arndbergmann/public_git/arm-soc into next/devel2 Merge branch 'tegra/cleanup' into next/cleanup Merge branch 'imx-features-for-arnd' of git://git.pengutronix.de/git/imx/linux-2.6 into imx/devel Merge branches 'imx/pata' and 'imx/sata' into next/driver Merge branch 'imx/board' into next/board Merge branch 'imx/devel' into next/devel Merge branches 'cross-platform/debug_ll' and 'cross-platform/cpu-mapping' into next/cross-platform Merge branch 'depends/rmk/debug' into tmp Merge branch 'depends/rmk/smp' into tmp Merge branch 'tegra/devel' into next/devel Merge branch 'samsung/devel' into next/devel2 Merge branch 'at91/trng' into next/driver Merge branch 'imx-cleanups-for-arnd' of git://git.pengutronix.de/git/imx/linux-2.6 into imx/cleanup Merge branch 'imx/cleanup' into next/cleanup Merge branch 'depends/rmk/gpio' into next/board mfd: remove CONFIG_MFD_SUPPORT Merge branch 'imx/fixes' into next/fixes Merge branch 'pxa/devel' into next/devel2 Merge branch 'pxa/fixes' into next/fixes Merge branches 'msm/dt', 'imx/dt' and 'at91/dt' into next/dt Merge branches 'depends/rmk/io', 'depends/rmk/l2x0' and 'depends/rmk/gpio' into highbank/soc Merge branch 'omap/cleanup' into next/cleanup2 Merge branch 'omap/voltage' into next/pm Merge branches 'stericsson/timer' and 'omap/dmtimer' into next/timer Merge branch 'omap/dt' into next/dt Merge branch 'dt/gic' into next/dt Merge branch 'depends/rmk/debug' into highbank/soc Merge branch 'dt/gic' into highbank/soc Merge branch 'depends/rmk/devel-stable' into imx/imx6q Merge branch 'dt/gic' into imx/imx6q Merge branch 'imx/devel' into imx/imx6q Merge branch 'cross-platform/debug_ll' into imx/imx6q Merge branch 'depends/rmk/gpio' into next/fixes Merge branch 'depends/rmk/memory_h' into next/fixes Merge branch 'depends/omap2_dss' into next/cleanup Merge branch 'next/fixes' into next/cleanup Merge branch 'stericsson/cleanup' into next/timer Merge branch 'depends/rmk/gpio' into next/devel Merge branch 'depends/rmk/devel-stable' into next/board Merge branch 'depends/rmk/memory_h' into next/fixes ARM: gic: use module.h instead of export.h Merge branch 'depends/rmk/memory_h' into next/cleanup2 Merge branch 'depends/rmk/memory_h' into next/cleanup2 Merge branch 'imx/devel' into next/dt Merge branch 'highbank/soc' into next/soc Merge branch 'picoxcell/soc' into next/soc Merge branch 'imx/imx6q' into next/soc Arne Caspari (1): [media] uvcvideo: Detect The Imaging Source CCD cameras by vendor and product ID Arne Jansen (6): btrfs: add an extra wait mode to read_extent_buffer_pages btrfs: add READAHEAD extent buffer flag btrfs: state information for readahead btrfs: initial readahead code and prototypes btrfs: hooks for readahead btrfs: use readahead API for scrub Artem Bityutskiy (2): UBIFS: introduce a helper to dump scanning info mtd: document parse_mtd_partitions Arun Thomas (1): x86, cpu: Add cpufeature flag for PCIDs Arvid Brodin (6): usb/isp1760: Move some code (prepare for next patch) usb/isp1760: Move isp1760_run within file (prepare for next patch) usb/isp1760: Use polling instead of SOF interrupts to fix Errata 2 usb/isp1760: Fix missing endpoint unlink when no mem during enqueue usb/isp1760: Fix problems that trigger WARNING at line 1136. usb/isp1760: Clear TT buffer on interrupted low & full speed transfers Arvydas Sidorenko (5): drivers/staging/crystalhd/: Fix a coding style issues staging: crystalhd/bc_dts_types.h: typedef cleanup [media] drivers/media/video/stk-webcam.c: webcam LED bug fix [media] drivers/media/video/stk-webcam.c: coding style issue [media] stk-webcam.c: webcam LED bug fix Ashish Chavan (8): ASoC: da7210: Add support for other DAI word lengths, format and mode ASoC: da7210: bugfix for head phone volume control ASoC: da7210: Add support for ADC & DAC equalizers ASoC: da7210: Add support for High pass and Voice filters for ADC and DAC ASoC: da7210: Add support for mute and zero cross controls ASoC: da7210: Add support for ALC and Noise suppression ASoC: da7210: Add support for DAPM ASoC: da7210: Add support for line out and DAC Avi Kivity (23): KVM: MMU: Do not unconditionally read PDPTE from guest memory KVM: Restore missing powerpc API docs KVM: x86 emulator: simplify emulate_2op_SrcV() KVM: x86 emulator: simplify emulate_2op_cl() KVM: x86 emulator: simplify emulate_2op_cl() KVM: x86 emulator: simplify emulate_1op() KVM: x86 emulator: merge the two emulate_1op_rax_rdx implementations KVM: x86 emulator: simplify emulate_1op_rax_rdx() KVM: x86 emulator: disable writeback for TEST KVM: x86 emulator: convert group 3 instructions to direct decode KVM: x86 emulator: move memop, memopp into emulation context KVM: x86 emulator: split dst decode to a generic decode_operand() KVM: x86 emulator: expand decode flags to 64 bits KVM: x86 emulator: switch src2 to generic decode_operand() KVM: x86 emulator: free up some flag bits near src, dst KVM: x86 emulator: switch OpImmUByte decode to decode_imm() KVM: x86 emulator: qualify OpReg inhibit_byte_regs hack KVM: x86 emulator: switch src decode to decode_operand() KVM: x86 emulator: simplify OpMem64 decode KVM: x86 emulator: streamline decode of segment registers KVM: x86 emulator: switch lds/les/lss/lfs/lgs to direct decode KVM: x86 emulator: convert push %sreg/pop %sreg to direct decode KVM: Fix simultaneous NMIs Axel Lin (189): regulator: tps65912: Remove unused define of TPS65912_MAX_REG_ID regulator: 88pm8607: Fix off-by-one value range checking in the case of no id is matched regulator: Ensure enough enable time for max8649 regulator: tps6507x: Remove num_voltages array ASoC: soc-io: Add CONFIG_REGMAP_I2C/CONFIG_REGMAP_SPI guards for regmap_init_i2c/regmap_init_spi ASoC: sgtl5000: fix module device table type for sgtl5000_dt_ids mtd: onenand: return proper error if regulator_get fails ASoC: s6000-pcm: remove unused variable 'dai' ASoC: soc-cache: Remove unneeded codec_drv pointer variable in snd_soc_flat_cache_init ASoC: soc-cache: Remove unneeded codec_drv pointer variable in snd_soc_lzo_get_blksize ASoC: soc-pcm: Remove unused global mutex ASoC: nuc900-pcm: remove unused variable 'dai' ASoC: sta32x: shortcut the for loop to get ir and mcs ASoC: Remove unreachable code in au1xac97c_drvprobe and au1xi2s_drvprobe ASoC: sta32x: Move resource allocation and release to the corresponding callback functions CRED: fix build error due to 'tgcred' undeclared ARM: 7063/1: Orion: gpio: add missing include of linux/types.h p54spi: add "spi:" prefix for stlc45xx modalias video: mxsfb: add missing include of linux/module.h video: nuc900fb: remove include of mach/clkdev.h ASoC: sn95031: Fix the logic to find free channel ARM: 7074/1: gpio: davinci: eliminate unused variable warnings ASoC: Add missing platform_device_put in raumfeld_audio_init error path ASoC: alc5623: Remove unused mutex ASoC: ad1980: Return proper error if vendor id mismatch ASoC: playpaq_wm8510: Return proper error if clk_get fails mtd: denali: remove calling mtd_device_unregister() after nand_release() mtd: nuc900_nand: add missing nand_release in nuc900_nand_remove mtd: nomadik_nand: add missing nand_release in nomadik_nand_remove mtd: pxa3xx_nand: fix a memory leak mtd: fsmc_nand: fix a memory leak mtd: mtdblock: Use DEFINE_MUTEX() for mtdblks_lock mtd: pxa3xx_nand: remove unused variable 'mtd' mtd: ndfc: fix a memory leak in ndfc_remove mtd: davinci_nand: remove redundant mtd_device_unregister mtd: onenand: remove redundant mtd_device_unregister before onenand_release mtd: fsl_upm: fix a memory leak in fun_chip_init error path ALSA: aoa: Remove obsolete cleanup for clientdata ALSA: keywest: Remove obsolete cleanup for clientdata ASoC: samsung: Fix checking return value of clk_get ASoC: tpa6130a2: Remove obsolete cleanup for clientdata ASoC: wm8995: Return -EINVAL if device ID mismatch ASoC: wm8995: Remove unused i2c variable in wm8995_remove() ASoC: sn95031: Staticize sn95031_pcm_hw_params ASoC: fsl: Fix error handling if platform_device_add fails dmaengine i.MX DMA/SDMA: add missing include of linux/module.h ASoC: Staticise bf5xx_pcm_ac97_new() ASoC: Staticise bf5xx_pcm_i2s_new() ASoC: Staticise jz4740_pcm_new() ASoC: Staticise nuc900_dma_getposition() ASoC: Add Kconfig and Makefile entries for rt5631 codec ASoC: Staticize rt5631_dai ASoC: Staticize sn95031_dais ASoC: Remove unneeded mutex_init in wl1273_probe() ASoC: Add missed free_irq in wm5100_remove and wm5100_probe error path ASoC: Drop exporting sn95031_get_mic_bias ASoC: Drop exporting ad1980_dai ASoC: Remove unused fields in struct mfld_mc_private ASoC: Staticise sst_platform_dai ASoC: Remove unused "control_data" field of struct wm8940_priv ASoC: Remove unused "control_data" field of struct wm8960_priv ASoC: Remove unused "control_data" field of struct wm8978_priv ASoC: Remove unused "control_data" field of struct wm9081_priv ASoC: Remove unused "control_data" field of struct wm9090_priv ASoC: Remove unused "control_data" field of struct wm8904_priv ASoC: Fix setting adau1373_dai->master for SND_SOC_DAIFMT_CBS_CFS ASoC: adau1701: Initialize codec->control_data before using it ASoC: Remove unused "control_data" field of struct alc5623_priv ASoC: Remove unused "control_data" field of struct cs4270_private ASoC: Remove unused "control_data" field of struct cs42l51_private ASoC: Remove unused "control_data" field of struct max98088_priv ASoC: Remove unused "control_data" field of struct max98095_priv ASoC: Remove unused "control_data" field of struct ak4671_priv ASoC: adau1701: Fix prototype for adau1701_set_sysclk ASoC: tlv320dac33: Add guarding parentheses to macros ASoC: Remove unused "control_data" field of struct cs4271_private ASoC: Remove unused "control_data" field of struct aic3x_priv ASoC: Add missed regulator_unregister_notifier and regulator_bulk_free in wm8995_remove ASoC: sn95031: Do not use static variable for channel_index ASoC: tlv320aic3x: Use driver_data field of struct i2c_device_id to identify models mtd: r852: make r852_pm_ops static ASoC: wm8782: Add __devexit_p at necessary place ASoC: kirkwood-i2s: Add __devexit_p at necessary place ASoC: samsung: Add __devexit_p at necessary places ASoC: tegra: Staticise tegra_i2s_dai and tegra_spdif_dai ASoC: Staticise samsung_spdif_dai ASoC: Staticise sh4_ssi_dai ASoC: Remove unused rate variable in magician_playback_hw_params ASoC: Remove unused srate variable in tegra_spdif_hw_params ASoC: Remove needless codec->dapm.bias_level assignment to SND_SOC_BIAS_OFF ASoC: Staticise simtec_audio_resume() ASoC: Staticise ep93xx_ac97_dai ASoC: txx9: Add __exit_p at necessary place ASoC: Fix setting update bits for WM8741_DACRMSB_ATTENUATION ASoC: samsung: s3c-i2s-v2.c needs module.h ASoC: wm8711: Use snd_soc_update_bits for read-modify-write ASoC: wm8971: Use snd_soc_update_bits for read-modify-write ASoC: wm8988: Use snd_soc_update_bits for read-modify-write ASoC: wm8994: Slightly optimize configure_clock ASoC: wm8995: Slightly optimize configure_clock ASoC: wm8994: Fix setting rate_reg for wm8994-aif2 ASoC: Avoid writing to WM8971_RESET in wm8971_resume ASoC: wm8750: Use snd_soc_update_bits for read-modify-write ASoC: wm8988: Use snd_soc_update_bits for read-modify-write ASoC: wm8711: Use snd_soc_update_bits for read-modify-write ASoC: Remove unneeded hw_write initialisation in ak4671 ASoC: Remove unneeded hw_write initialisation in wm8523 ASoC: Remove unused function declaration in imx-ssi.h ASoC: imx: Remove unused variable 'dai' ASoC: Remove unused variable 'wm9090' in wm9090_probe ASoC: wm8990: Convert to snd_soc_cache_sync for sync reg_cache with the hardware ASoC: wm8990: Remove incorrect comments ASoC: Return early with -EINVAL if invalid dai format is detected ASoC: wm8510: Convert to snd_soc_cache_sync ASoC: wm8711: Convert to snd_soc_cache_sync ASoC: wm8731: Convert to snd_soc_cache_sync ASoC: wm8750: Convert to snd_soc_cache_sync ASoC: wm8776: Convert to snd_soc_cache_sync ASoC: wm8940: Convert to snd_soc_cache_sync ASoC: wm8960: Convert to snd_soc_cache_sync ASoC: wm8971: Convert to snd_soc_cache_sync ASoC: wm8974: Convert to snd_soc_cache_sync ASoC: wm8988: Convert to snd_soc_cache_sync ASoC: ak4535: convert to soc-cache ASoC: Writing register default value for the reset register ASoC: ak4642: convert to soc-cache ASoC: Delete ads117x.h ASoC: Remove impossible case from wm8994_hw_params ASoC: da7210: convert to soc-cache ASoC: Make SND_SOC_SAARB and SND_SOC_TAVOREVB3 select MFD_88PM860X ASoC: pxa: Remove redundant snd_soc_dapm_sync() calls from machine drivers ASoC: sta32x: Set reg_cache_default to sta32x_regs ASoC: sta32x: Write the register default value to cache for reserved registers ASoC: ak4535: fixup cache register table ASoC: tlv320aic32x4: Use snd_soc_update_bits for read-modify-write ARM: S3C2443: Remove redundant s3c_register_clocks call for init_clocks ASoC: tlv320aic23: convert to soc-cache ASoC: alc5623: Convert codec->hw_read to snd_soc_read ASoC: tlv320aic3x: Convert codec->hw_read to snd_soc_read ASoC: wm8961: Convert codec->hw_read to snd_soc_read ASoC: wm8991: Fix wrong bit setting for WM8991_POWER_MANAGEMENT_2 ASoC: wm8991: Use snd_soc_update_bits for read-modify-write ASoC: wm8400: Fix wrong bit setting for WM8400_POWER_MANAGEMENT_2 ASoC: wm8990: Fix wrong bit setting for WM8990_POWER_MANAGEMENT_2 ASoC: wm8990: Use snd_soc_update_bits for read-modify-write ASoC: ad193x: Fix define of AD193X_PLL_INPUT_MASK video: platinumfb: Add __devexit_p at necessary place ASoC: wm8741: Fix setting interface format for DSP modes ASoC: wm8741: Use snd_soc_cache_sync to sync reg_cache with the hardware ASoC: wm8900: Fix wrong mask for setting DAC_CLKDIV/ADC_CLKDIV/LRCLK_MODE ASoC: wm8900: Fix the mask defines ASoC: wm8900: Use snd_soc_update_bits for read-modify-write ASoC: wm8580: Use snd_soc_update_bits for read-modify-write ASoC: ad193x: Use snd_soc_update_bits for read-modify-write ASoC: sgtl5000: Fix define for SGTL5000_BIAS_R_MASK ASoC: sgtl5000: Fix setting mic bias resistor ASoC: ssm2602: Use snd_soc_update_bits for read-modify-write ASoC: ak4641: Remove unused codec field from struct ak4641_priv ASoC: ak4641: Use SND_SOC_DAPM_DAC for Voice Playback stream widget ASoC: wm9081: Fix setting soft VMID ramp enable with VMID 2*240k ASoC: Fix reg_word_size for ak4104 ASoC: ak4671: Use snd_soc_update_bits for read-modify-write ASoC: rt5631: Remove unused codec field from struct rt5631_priv ASoC: wm8994: Use SND_SOC_DAPM_AIF_OUT for AIF3 Capture ASoC: wm8996: Use SND_SOC_DAPM_AIF_OUT for AIF2 Capture ASoC: Set sgtl5000->ldo in ldo_regulator_register ASoC: Use SGTL5000_LINREG_VDDD_MASK instead of hardcoded mask value ASoC: wm8996: Fix wrong mask for setting WM8996_AIF_CLOCKING_2 ASoC: sgtl5000: Fix wrong mask in some snd_soc_update_bits calls ASoC: max98095: Convert codec->hw_write to snd_soc_write mfd: Make sure to request twl6030 IRQ before using the irq_num platform-drivers-x86: eeepc-laptop: fix wrong test for successful registered led_classdev platform-drivers-x86: asus-wmi: fix resource leak in asus_wmi_led_exit platform-drivers-x86: asus-laptop: fix wrong test for successful registered led_classdev ARM: pxa/cm-x300: properly set bt_reset pin [CPUFREQ] db8500: remove unneeded for loop iteration over freq_table ASoC: wm8940: Properly set codec->dapm.bias_level ASoC: wm8940: Fix mask for setting BCLKDIV ASoC: tlv320aic23: Clear TLV320AIC23_MS_MASTER bit for slave mode ASoC: tlv320aic3x: Clear BIT_CLK_MASTER and WORD_CLK_MASTER bits for for slave mode ASoC: wm8711: Fix wrong mask for setting input audio data bit length select ASoC: Leave input audio data bit length settings untouched in wm8711_set_dai_fmt unicore32: EXPORT_SYMBOL needs export.h backlight: rename corgibl_limit_intensity() to genericbl_limit_intensity() drivers/leds/leds-lp5521.c: avoid writing uninitialized value to LP5521_REG_OP_MODE register drivers/leds/leds-lm3530.c: add __devexit_p where needed ARM: OMAP2+: l3-noc: Include linux/module.h ARM: OMAP: dmtimer: Include linux/module.h ARM: OMAP: omap_device: Include linux/export.h Ayan George (1): drivers/block/loop.c: remove unnecessary bdev argument from loop_clr_fd() Ayman El-Khashab (1): powerpc/4xx: enable and fix pcie gen1/gen2 on the 460sx Balaji T K (3): mmc: core: Put eMMC in Sleep mode before suspend ARM: OMAP4: hsmmc: Fix Pbias configuration on regulator OFF ARM: OMAP4: hsmmc: configure SDMMC1_DR0 properly Banajit Goswami (1): ARM: SAMSUNG: Consolidate common function to set SDHCI plat data Barry Song (21): ARM: mach-ux500: add explicit cpu_relax() for busy wait loop ARM: CSR: add lost Resource Sharing Control(RSC) node in dts ARM: CSR: extend the compatibility of gpio controller to pinmux in dts ARM: CSR: IRQ: add simple irq_domain so that hw irq can map to Linux dmaengine: delete redundant chan_id and chancnt initialization in dma drivers ARM: CSR: PM: save/restore timer status in suspend cycle ARM: CSR: PM: save/restore irq status in suspend cycle ARM: CSR: timer: do not initialise statics to 0 or NULL ARM: CSR: timer: space required before the open parenthesis '(' ARM: CSR: prima2: fix trailing whitespace ARM: CSR: clock: Fix indentation PM / Hibernate: Fix typo in a kerneldoc comment PM / Hibernate: Add resumewait param to support MMC-like devices as resume file PM / Hibernate: Add resumedelay kernel param in addition to resumewait PM / Hibernate: Do not initialize static and extern variables to 0 ARM: 7089/1: L2X0: add explicit cpu_relax() for busy wait loop ARM: 7090/1: CACHE-L2X0: filter start address can be 0 and is often 0 ARM: 7114/1: cache-l2x0: add resume entry for l2 in secure mode Merge branch 'l2x0' of rmk tree into prima2-l2x0 ARM: CSR: call l2x0_of_init to init L2 cache of SiRFprimaII ARM: CSR: PM: use outer_resume to resume L2 cache Bart Van Assche (6): docs/sysfs: Specify ABI documentation requirements docs/driver-model: Document device.groups docs/driver-model: Update device class docs futex: Fix spelling in a source code comment [SCSI] Make scsi_free_queue() kill pending SCSI commands ACPI: Fix CONFIG_ACPI_DOCK=n compiler warning Bartlomiej Zolnierkiewicz (34): pata_sil680: documentation fixes pata_sil680: constify tables pata_sil680: minor CodingStyle fixups pata_sc1200: fix DRV_NAME pata_cs5535: fix DRV_NAME libata: reduce ata_pci_[sff,bmdma]_init_one() size pata_sc1200: do not use c99 style comments pata_artop: unify ->prereset methods pata_hpt366: add hpt36x_find_mode() helper pata_cmd64x: add cmd64x_fixup() pata_cs5535: no need to program PIO0 timings during device init pata_ali: fix "Satelite" typo pata_cmd64x: documentation fix pata_serverworks: use standard cable detection methods pata_serverworks: cleanup cable detection pata_serverworks: add serverworks_fixup() pata_atiixp: add proper ->prereset method pata_scc: add proper cable detection method libata: ata_timing_compute() fixup pata_via: add via_fixup() pata_rdc: parallel scanning needs an extra locking pata_it8213: add UDMA100 and UDMA133 support pata_it8213: fix register naming used in it8213_set_piomode() libata: remove no longer needed pata_qdi driver pata_legacy: unify QDI ->set_piomode methods pata_legacy: use PIO mask defines pata_pdc2027x: add Power Management support pata_sl82c105: add Power Management support pata_artop: add Power Management support libata: make ata_sff_data_xfer_noirq() work with 32-bit PIO ata_piix: SITRE handling fix ata_piix: unify code for programming PIO and MWDMA timings pata_rdc: add Power Management support pata_efar: fix register naming used in efar_set_piomode() Baruch Siach (1): mac80211/mesh: make the preq queue lock consistent Bas Vermeulen (2): ASoC: 88pm860x-codec - Allow independent use of both I2S playback and capture ASoC: 88pm860x-codec - reset the codec correctly Bastian Hecht (2): [media] media: ov5642: Add support for arbitrary resolution ARM: sh7372 ap4evb NOR Flash USB boot fix Becky Bruce (4): powerpc: Hugetlb for BookE powerpc: Update mpc85xx/corenet 32-bit defconfigs powerpc: Update corenet64_smp_defconfig powerpc/fsl-booke: Fix settlbcam for 64-bit Ben Blum (2): cgroups: more safe tasklist locking in cgroup_attach_proc cgroups: don't attach task to subsystem if migration failed Ben Dooks (5): OF: Add of_match_ptr() macro tty: use of_match_ptr() for of_match_table entry Merge branches 'for-32/i2c/omap-v4', 'for-32/i2c/imx-dt', 'for-32/i2c/eg20t-v4', 'for-32/i2c/designware-v5' and 'for-32/i2c/au1550' into for-linus/i2c-3.2 Merge branch 'for-32/i2c/irqflags' into for-linus/i2c-3.2 Merge branches 'for-32/i2c/nomadik', 'for-32/i2c/s3c2410-dt' and 'for-32/i2c/tegra-iomem' into for-linus/i2c-3.2 Ben Gardiner (2): ASoC: davinci-mcasp: add support for unsigned PCM formats ASoC: davinci-pcm: trivial: replace link with actual chan/link Ben Hutchings (29): ethtool: Reformat struct ethtool_coalesce comments into kernel-doc format ethtool: Specify what kind of coalescing struct ethtool_coalesce covers ethtool: Correct description of 'max_coalesced_frames' fields ethtool: Explicitly state the exit condition for interrupt coalescing ethtool: Note common alternate exit condition for interrupt coalescing headers, pppox: Add missing #include to headers, ax25: Add missing #include to , headers, pppol2tp: Use __kernel_pid_t in headers, net: Use __kernel_sa_family_t in more definitions shared with userland headers, netfilter: Use kernel type names __u8, __u16, __u32 headers, tipc: Add missing #include to for userland headers, netfilter: Add missing #include for userland headers, xtables: Add missing #include headers, can: Add missing #include to [IA64] gpio: GENERIC_GPIO default must be n sfc: Correct error code for unsupported interrupt coalescing parameters sfc: Use consistent types for interrupt coalescing parameters sfc: Correct reporting and validation of TX interrupt coalescing sfc: Validate IRQ moderation parameters in efx_init_irq_moderation() sfc: Use correct fields of struct ethtool_coalesce ethtool: Make struct ethtool_rxnfc kernel-doc more self-consistent ethtool: Explicitly state that RX NFC rule locations are priorities ethtool: Clean up definitions of rule location arrays in RX NFC ethtool: Update ethtool_rxnfc::rule_cnt on return from ETHTOOL_GRXCLSRLALL RPS: Ensure that an expired hardware filter can be re-added later PCI: Add Solarflare vendor ID and SFC4000 device IDs PCI: Add quirk for known incorrect MPSS module: Enable dynamic debugging regardless of taint module,bug: Add TAINT_OOT_MODULE flag for modules not built in-tree Ben Skeggs (105): drm/nouveau/pm: store voltage in microvolts drm/nouveau/pm: initial attempt at parsing volt 0x40 drm/nouveau/pm: add yet another vid gpio tag drm/nouveau/pm: add support for parsing perflvl voltage on fermi chips drm/nouveau/pm: show any info we can manage to glean on current perflvl drm/nvc0/pm: enable voltage_get drm/nouveau/pm: allow voltage-only perflvl set, enable nvc0 drm/nouveau/pm: some fermi chipsets still use volt 0x30 drm/nva3/pm: rewrite clock readback functions, far more correct now drm/nouveau/pm: add hooks to get/set *all* clocks at once drm/nva3/pm: rewrite clock_set, and switch to new interfaces drm/nva3/pm: parse/reclock vdec/41a0 clocks drm/nva3/pm: tidy and add some comments here and there drm/nv50/gr: insert set/clr of a ctxprog flag at start/end of ctxprog drm/nouveau: add function to wait until a callback returns true drm/nva3/pm: idle graphics engine before changing clocks drm/nvc0/pm: initial implementation of clocks_get() drm/nvc0/pm: more complete parsing of clock domains drm/nouveau: rename nv40_mpeg to nv31_mpeg drm/nv31/mpeg: support for a single class3174 user drm/nouveau: embed nouveau_mm drm/nouveau: allow a nouveau_mm to be created with holes drm/nvc0/gr: add support for nvcf chipset drm/nvc0/vram: support non-uniform memory size per controller drm/nvc0/gr: copy GPC mpart config from PFFB drm/nouveau: don't complain for disabled timingset entries drm/nvc0/gr: unblacklist nvcf acceleration drm/nouveau/tmr: calibrate for ns timestamps on init drm/nvd0: add a card_type for 0xdX chipsets drm/nouveau: make general drm modesetting init common drm/nouveau: fixup init/fini sequence to deal with no CRTCs drm/nouveau: allow modeset module option to select 'headless mode' drm/nouveau: initial chipset description for nvdX chipsets drm/nvd0/i2c: initial implementation drm/nvd0/gpio: initial implementation drm/nouveau/bios: fix INIT_GPIO for new chipsets drm/nvd0/pm: enable clock/voltage hooks drm/nouveau/bios: allow passing in crtc to the init table parser drm/nvd0/disp: very initial evo setup drm/nvd0/disp: whip up some basic dma handling for the evo channels drm/nvd0/disp: start on interrupt handling drm/nvd0/disp: setup a couple of dma objects we'll need drm/nvd0/disp: start on SOR encoder functions drm/nvd0/disp: skeletal handling of modeset interrupts drm/nvd0/disp: initial crtc object implementation drm/nvd0/disp: they moved the linear flag.. drm/nvd0/disp: some magic to make evo happeir drm/nvd0/disp: remove lp reordering from vram dmaobj, create fb dmaobjs drm/nvd0/disp: extend the init voodoo to cover crtcs drm/nvd0/disp: dac encoder module drm/nvd0/disp: stub dac load detect, prevents oops drm/nvd0/disp: initial attempt at modeset irq handling drm/nvd0/disp: fixup clut so it actually works drm/nvd0/disp: push the update button in mode_set_base() drm/nvd0/disp: scaling drm/nvd0/disp: handle sync polarity, kill off some unknown drm/nvd0/disp: dac load detect drm/nvd0/disp: determine U table config in or_mode_set() drm/nvd0/disp: track down fb positioning method drm/nvd0/disp: untested LVDS support drm/nvd0/disp: do modeset irq handling from tasklet drm/nvd0/disp: rewrite irq handler, should be somewhat sturdier now drm/nvd0/disp: tidy up what we have so far drm/nvd0: lets not attempt to dereference a nv50_display pointer drm/nvc0/gr: remove max tpc count info drm/nvd0: no page flipping at the moment drm/nouveau: remove special-casing of hotplug detection type drm/nouveau: magic to make auxch on new macbooks booted in EFI mode work drm/nva3/pm: pll disabled if bit 0 of ctrl not set drm/nouveau: determine timing crystal freq from straps drm/nva3/pm: use crystal freq where appropriate drm/nva3/pm: fixup for NVAF special drm/nouveau/tmr: fix miscalculation of ratio on pre-nv4x chipsets drm/nouveau: workaround semaphore hw bug causing unnecessary interrupts drm/nouveau/dp: rewrite auxch transaction routines drm/nouveau/dp: remove reliance on vbios for native displayport drm/nouveau: tidy connector hotplug handler, punt messages to debug drm/nouveau/backlight: make more consistent with rest of driver style drm/nv50/backlight: take the sor into account when bashing regs drm/nv50/backlight: express brightness level in percent drm/nva3/backlight: add suppport for newer style backlight regs drm/nouveau/bios: check for null script pointers in parser drm/nouveau/dp: pass in required datarate to link training drm/nouveau/dp: restructure link training code drm/nouveau/dp: store unencoded link_bw everywhere drm/nouveau/dp: execute some more vbios tables relating to link rate drm/nouveau/dp: enable down-spread if vbios and sink support it drm/nv40/pm: parse geometric delta clock from vbios drm/nv40/pm: write nv40-specific reclocking routines drm/nouveau/dp: link rate scripts are selected with a comparison table drm/nouveau/dp: use alternate lane mask for nvaf drm/nvc0/gr: remove MODULE_FIRMWARE() lines drm/nouveau/dp: preserve non-pattern bits in DP_TRAINING_PATTERN_SET drm/nouveau/bios: simplify U/d table hash matching func to just match drm/nouveau/dp: return master dp table pointer too when looking up encoder drm/nouveau/dp: add support for displayport table 0x30 drm/nouveau: if requested, try harder at disabling sysmem pushbufs drm/nv50/gr: refactor initialisation drm/nv40/pm: execute memory reset script from vbios drm/nvc0/pm: minor clock readback fixes drm/nvd9/disp: stub some more api hooks so we don't oops on resume drm/nvd9/disp: bail out of mode_set_base if no fb bound to crtc drm/nvc0/fifo: avoid touching missing subfifos drm/nvc0/fb: slightly improve PMFB intr handling, move out of nvc0_graph.c drm/nouveau: remove allocations from gart populate() hook Ben Widawsky (4): drm/i915: Dumb down the semaphore logic drm/i915: Remove early exit on i915_gpu_idle drm/i915: ILK + VT-d workaround drm: Add Panel Self Refresh DP addresses Ben Wright (1): Staging: bcm: Macros: Fixed multiple coding style violations. Bengt Jonsson (2): mfd: hwacc power state db8500-prcmu accessor mfd: db8500-prcmu voltage domain consumers additions Benjamin Herrenschmidt (29): Merge remote-tracking branch 'jwb/next' into next Merge remote-tracking branch 'origin/master' into next powerpc/wsp: Add PCIe Root support to PowerEN/WSP Merge remote-tracking branch 'origin/master' into next powerpc/udbg: Fix Kconfig entry for avoiding 44x early debug with KVM powerpc/smp: More generic support for "soft hotplug" powerpc/pci: Call pcie_bus_configure_settings() powerpc/powernv: Don't clobber r9 in relative_toc() powerpc: Add skeleton PowerNV platform of: Change logic to overwrite cmd_line with CONFIG_CMDLINE powerpc/powernv: Add CPU hotplug support powerpc/powernv: Add OPAL takeover from PowerVM powerpc/powernv: Get kernel command line accross OPAL takeover powerpc/powernv: Basic support for OPAL powerpc/powernv: Add support for instanciating OPAL v2 from Open Firmware powerpc/powernv: Support for OPAL console powerpc/powernv: Hookup reboot and poweroff functions powerpc/powernv: Add RTC and NVRAM support plus RTAS fallbacks powerpc/powernv: Add OPAL ICS backend powerpc/powernv: Register and handle OPAL interrupts powerpc/powernv: Machine check and other system interrupts powerpc/powernv: Add support for p5ioc2 PCI-X and PCIe powerpc/powernv: Implement MSI support for p5ioc2 PCIe powerpc/powernv: Handle PCI-X/PCIe reset delay powerpc/pci: Don't configure PCIe settings when PCI_PROBE_ONLY is set powerpc/ptrace: Fix build with gcc 4.6 powerpc: Don't try OPAL takeover on old 970 blades PCI: Make pci_setup_bridge() non-static for use by arch code pci: Clamp pcie_set_readrq() when using "performance" settings Benjamin Larsson (1): [media] get_dvb_firmware: Firmware extraction for IT9135 based devices Benjamin Marzinski (1): GFS2: rewrite fallocate code to write blocks directly Benjamin Tissoires (2): HID: add autodetection of multitouch devices HID: multitouch: decide if hid-multitouch needs to handle mt devices Benny Halevy (5): nfsd41: use SEQ4_STATUS_BACKCHANNEL_FAULT when cb_sequence is invalid nfsd4: seq->status_flags may be used unitialized nfsd4: allow NFS4_SHARE_SIGNAL_DELEG_WHEN_RESRC_AVAIL | NFS4_SHARE_PUSH_DELEG_WHEN_UNCONTENDED nfsd4: typo logical vs bitwise negate for want_mask nfsd4: typo logical vs bitwise negate in nfsd4_decode_share_access Benoit Cousson (22): OMAP4: powerdomain data: add voltage domains ARM: OMAP2+: Add SoC specific map_io functions ARM: OMAP3: beagle-board: Use the omap_hwmod_name_get_dev API ARM: OMAP2+: pm: Use hwmod name instead of dev pointer ARM: OMAP2+: pm: Remove static devices variable for mpu, dsp, iva and l3 PM ARM: OMAP: omap_device: Create a default omap_device_pm_latency ARM: OMAP2+: devices: Remove all omap_device_pm_latency structures of: Add helpers to get one string in multiple strings property ARM: OMAP: omap_device: Add omap_device_[alloc|delete] for DT integration ARM: OMAP: omap_device: Add a method to build an omap_device from a DT node arm/dts: Add initial device tree support for OMAP4 SoC arm/dts: Add support for OMAP4 PandaBoard arm/dts: Add support for OMAP4 SDP board arm/dts: Add initial device tree support for OMAP3 SoC arm/dts: Add support for OMAP3 Beagle board ARM: OMAP2+: board-generic: Add DT support to generic board ARM: OMAP2+: board-generic: Add i2c static init ARM: OMAP2+: l3-noc: Add support for device-tree arm/dts: OMAP4: Add a main ocp entry bound to l3-noc driver arm/dts: OMAP3+: Add mpu, dsp and iva nodes ARM: OMAP2+: clock data: Remove redundant timer clkdev ARM: OMAP2+: timer: Remove omap_device_pm_latency Bernd Porr (1): staging: comedi: new driver usbduxsigma Bernd Schubert (1): nfsd4: Remove check for a 32-bit cookie in nfsd4_readdir() Bernhard Roth (1): atmel_serial: RS485: receiving enabled when sending data Bernie Thompson (4): drivers/video/udlfb match class, subclass, and protocol udlfb: add more comprehensive support for DPMS FB_BLANK_* modes udlfb: Enable fb_defio by default udlfb: Enable fbcon access to framebuffer by default Bhanu Prakash Gollapudi (38): [SCSI] bnx2fc: Reset the max receive frame size [SCSI] bnx2fc: Bug fixes in percpu_thread_create/destroy [SCSI] bnx2fc: Enable bsg_request support for bnx2fc [SCSI] bnx2fc: Remove erroneous kref_get on IO request [SCSI] bnx2fc: Do not attempt destroying NPIV port twice [SCSI] bnx2fc: Change function names of bnx2fc_netdev_setup/bnx2fc_netdev_cleanup [SCSI] bnx2fc: Reorganize cleanup code between interface_cleanup and if_destory [SCSI] bnx2fc: Handle NETDEV_UNREGISTER for vlan devices [SCSI] bnx2fc: Clear DESTROY_CMPL flag after firmware destroy [SCSI] bnx2fc: Do not reuse the fcoe connection id immediately [SCSI] bnx2fc: IO errors when receiving unsolicited LOGO [SCSI] bnx2fc: Fix NULL pointer deref during arm_cq. [SCSI] bnx2fc: code cleanup in bnx2fc_offload_session [SCSI] bnx2fc: Drop incoming ABTS [SCSI] fcoe: Move common functions to fcoe_transport library [SCSI] bnx2fc: Obtain WWNN/WWPN from the shared memory [SCSI] bnx2fc: Prevent creating of NPIV port with duplicate WWN [SCSI] bnx2fc: Bump version to 1.0.5 net: Define NETDEV_FCOE_WWNN, NETDEV_FCOE_WWPN only when CONFIG_LIBFCOE is enabled [SCSI] bnx2fc: Need not schedule destroy_work from __bnx2fc_destroy [SCSI] bnx2fc: Reset max receive frame size during link up [SCSI] bnx2fc: Send solicitation only after vlan discovery is complete [SCSI] bnx2fc: No abort issued for REC when it times out [SCSI] bnx2fc: Avoid calling bnx2fc_if_destroy with unnecessary locks [SCSI] bnx2fc: Fix panic caused because of incorrect errror handling in create(). [SCSI] bnx2fc: Fix FW assert during RSCN stress tests [SCSI] bnx2fc: Bumped version to 1.0.6 [SCSI] bnx2fc: Add driver documentation [SCSI] bnx2fc: Replace scsi_dma_map() with dma_map_sg(). [SCSI] bnx2fc: Handle bnx2fc_map_sg failure [SCSI] bnx2fc: Bumped version to 1.0.7 [SCSI] bnx2fc: call ctlr_link_up only when the interface is enabled [SCSI] fcoe,libfcoe: Move common code for fcoe_get_lesb to fcoe_transport [SCSI] bnx2fc: Return error statistics of remote peer [SCSI] bnx2fc: Bumped version to 1.0.8 [SCSI] bnx2fc: Handle ABTS timeout during ulp timeout [SCSI] bnx2fc: Handle SRR LS_ACC drop scenario [SCSI] bnx2fc: Bumped version to 1.0.9 Bharat Bhushan (1): powerpc: e500mc: Fix: use CONFIG_PPC_E500MC in idle_e500.S Bharata B Rao (1): sched: Add documentation for bandwidth control Bill Jordan (2): ath9k: fix MGMT packets when using TKIP ath9k: ath9k_hw_set_txpowerlimit sets previous txpower Bill Pemberton (1): staging: serqt_usb2: remove ssu100 from supported devices Bing Zhao (3): mwifiex: remove wireless.h inclusion and fix resulting bugs mwifiex: remove redundant variable scan_table_idx mmc: recognise SDIO cards with SDIO_CCCR_REV 3.00 Bjarne Steinsbo (2): ARM: OMAP4: Keyboard: Fix section mismatch in the board file ARM: OMAP: usb: musb: OMAP: Delete unused function Boaz Harrosh (29): nfsd4: fix failure to end nfsd4 grace period osd: Kconfig remove wrong FIXME exofs: Rename struct ore_components comps => oc exofs: Remove unused data_map member from exofs_sb_info ore: Make ore_striping_info and ore_calc_stripe_info public ore/exofs: Change the type of the devices array (API change) ore: Only IO one group at a time (API change) ore: cleanup: Embed an ore_striping_info inside ore_io_state ore: Remove check for ios->kern_buff in _prepare_for_striping to later exofs: Support for short read/writes ore: Support for short read/writes ore: Support for partial component table ore/exofs: Define new ore_verify_layout ore/exofs: Change ore_check_io API ore: Make ore_calc_stripe_info EXPORT_SYMBOL fs/Makefile: Always inspect exofs/ ore: RAID5 read ore: RAID5 Write exofs: Support for RAID5 read-4-write interface. ore: Enable RAID5 mounts fs/Makefile: Stupid typo breakage of exofs inclusion pnfs-obj: Remove redundant EOF from objlayout_io_state pnfs-obj: Return PNFS_NOT_ATTEMPTED in case of read/write_pagelist pnfs-obj: Get rid of objlayout_{alloc,free}_io_state pnfs-obj: Rename objlayout_io_state => objlayout_io_res pnfs-obj: move to ore 01: ore_layout & ore_components pnfs-obj: move to ore 02: move to ORE pnfs-obj: move to ore 03: Remove old raid engine pnfs-obj: Support for RAID5 read-4-write interface. Bob Peterson (2): GFS2: Use rbtree for resource groups and clean up bitmap buffer ref count scheme GFS2: speed up delete/unlink performance for large files Bogdan Radulescu (1): PM / ACPI: Blacklist Vaio VGN-FW520F machine known to require acpi_sleep=nonvs Bojan Prtvar (3): HID: zydacron: kfree() NULL pointer cleanup HID: prodikeys: kfree() NULL pointer cleanup Staging: comedi: fix initialization of static to 0 in ni_pcidio.c Bojan Smojver (1): PM / Hibernate: Improve performance of LZO/plain hibernation, checksum image Boojin Kim (17): ARM: S5P64X0: Add the devname for DMA clock DMA: PL330: Add support runtime PM for PL330 DMAC DMA: PL330: Update PL330 DMA API driver DMA: PL330: Support DMA_SLAVE_CONFIG command DMA: PL330: Remove the start operation for handling DMA_TERMINATE_ALL command DMA: PL330: Add DMA_CYCLIC capability ARM: SAMSUNG: Update to use PL330-DMA driver ARM: SAMSUNG: Add common DMA operations ARM: EXYNOS4: Use generic DMA PL330 driver ARM: S5PV210: Use generic DMA PL330 driver ARM: S5PC100: Use generic DMA PL330 driver ARM: S5P64X0: Use generic DMA PL330 driver ARM: SAMSUNG: Remove S3C-PL330-DMA driver spi/s3c64xx: Add support DMA engine API spi/s3c64xx: Merge dma control code ASoC: Samsung: Update DMA interface ARM: SAMSUNG: Remove Samsung specific enum type for dma direction Borislav Petkov (14): x86, amd: Avoid cache aliasing penalties on AMD family 15h x86: Add a BSP cpu_dev helper x86, amd: Move BSP code to cpu_dev helper x86-32, amd: Move va_align definition to unbreak 32-bit build EDAC, MCE, AMD: Print CPU number when reporting the error EDAC, MCE, AMD: Print valid addr when reporting an error EDAC, MCE, AMD: Drop local coreid reporting EDAC, MCE, AMD: Simplify NB MCE decoder interface amd64_edac: Add a fix for Erratum 505 x86, microcode: Correct microcode revision format x86, microcode, AMD: Add microcode revision to /proc/cpuinfo x86, MCE: Use notifier chain only for MCE decoding i7core_edac: Drop the edac_mce facility EDAC: Correct Kconfig dependencies Brian King (3): hvcs: Ensure page aligned partner info buffer [SCSI] ipr: Stop reading adapter dump prematurely [SCSI] ipr: Fix BUG on adapter dump timeout Brian Norris (56): mtd: nand: remove NAND_BBT_SCANBYTE1AND6 option mtd: nand: separate chip options / bbt_options mtd: nand: consolidate redundant flash-based BBT flags mtd: nand: rename NAND_USE_FLASH_BBT mtd: nand: move NAND_CREATE_EMPTY_BBT flag mtd: nand: rename CREATE_EMPTY bbt flag with proper prefix mtd: nand: renumber the reorganized flags in nand.h / bbm.h mtd: nand: improve comment on NAND_BBT_DYNAMIC_STRUCT mtd: nand: remove unnecessary TODO mtd: nand: multi-line comment style fixups mtd: remove printk's for [kv][mz]alloc failures mtd: spelling, capitalization, uniformity mtd: nand: handle ECC errors in OOB mtd: nand: ignore ECC errors for simple BBM scans mtd: tests: ignore corrected bitflips in OOB on mtd_readtest mtd: edit NAND-related comment mtd: nand: change KERN_DEBUG to KERN_INFO mtd: nand: convert printk() to pr_*() mtd: nand: style fixups in pr_* messages mtd: replace DEBUG() with pr_debug() mtd: cleanup style on pr_debug messages mtd: pcmciamtd: remove custom DEBUG() function mtd: remove CONFIG_MTD_DEBUG mtd: cleanup last uses of MTD_DEBUG config macros mtd: Kbuild: remove reference to MTD_PARTITIONS mtd: spelling fixes mtd: do not assume oobsize is power of 2 mtd: doc: remove mention of MEMSETOOBSEL mtd: remove MEMSETOOBSEL macro definition mtd: nand: fix spelling error (date => data) mtd: style fixups in multi-line comment, indentation mtd: support writing OOB without ECC mtd: nand: document nand_chip.oob_poi mtd: support reading OOB without ECC mtd: move mtd_oob_mode_t to shared kernel/user space mtd: rename MTD_OOB_* to MTD_OPS_* mtd: rename MTD_MODE_* to MTD_FILE_MODE_* mtd: add MEMWRITE ioctl mtd: document ABI mtd: nand: kill member `ops' of `struct nand_chip' mtd: kill old field for `struct mtd_info_user' mtd: nand: refactor scanning code mtd: nand: do not ignore all ECC errors mtd: nand: remove unnecessary variable mtd: nand: fix style mtd: nand: begin restructuring check_create mtd: nand: remove gotos in `check_create()' mtd: define `mtd_is_*()' functions mtd: utilize `mtd_is_*()' functions mtd: nand: report ECC errors properly when reading BBT mtd: nand: scrub BBT on ECC errors mtd: nand: wait to set BBT version mtd: nand: do not scan bad blocks with NAND_BBT_NO_OOB set mtd: nand: invalidate cache on unaligned reads mtd: nand: switch `check_pattern()' to standard `memcmp()' mtd: nand: initialize ops.mode Bruce Allan (8): e1000e: convert driver to use extended descriptors e1000e: bump driver version number e1000e: convert to netdev features/hw_features API e1000e: WoL can fail on 82578DM e1000e: WoL fails on device ID 0x1501 e1000e: bad short packets received when jumbos enabled on 82579 e1000e: locking bug introduced by commit 67fd4fcb e1000e: demote a debugging WARN to a debug log message Bruno Prémont (1): fb: sh-mobile: Fix deadlock risk between lock_fb_info() and console_lock() Bryan Schumaker (1): vfs: add "device" tag to /proc/self/mountstats Bryan Wu (1): Documentation: fix leds-class.txt duplicated word Carl E. Love (1): powerpc/perf_event: Fix Power6 L1 cache read & write event codes] Carolyn Wyborny (4): igb: Version bump. igb: Fix for Alt MAC Address feature on 82580 and later devices igb: Move DMA Coalescing init code to separate function. igb: VFTA Table Fix for i350 devices Carsten Otte (7): KVM: s390: check cpu_id prior to using it KVM: s390: fix return value of kvm_arch_init_vm KVM: s390: fix register setting [S390] load user asce on sie_fault [S390] fix possible deadlock in gmap_map_segment [S390] fix list corruption in gmap reverse mapping [S390] take mmap_sem when walking guest page table Casey Schaufler (4): Smack: Rule list lookup performance Smack: Repair processing of fcntl Smack: Clean up comments Smack: Provide information for UDS getsockopt(SO_PEERCRED) Catalin Marinas (5): ARM: 7058/1: LPAE: Cast the dma_addr_t argument to unsigned long in dma_to_virt ARM: 7059/1: LPAE: Use PMD_(SHIFT|SIZE|MASK) instead of PGDIR_* ARM: 7075/1: LPAE: Factor out 2-level page table definitions into separate files ARM: 7076/1: LPAE: Add (pte|pmd)val_t type definitions as u32 ARM: 7077/1: LPAE: Use a mask for physical addresses in page table entries Cesar Eduardo Barros (2): x86-64, doc: Remove int 0xcc from entry_64.S documentation net/ethernet: sc92031 is not Realtek Chad Dupuis (2): [SCSI] qla2xxx: Enable write permission to some debug related module parameters to be changed dynamically. [SCSI] qla2xxx: Fix "active_mask" may be used uninitialized warning. Changhwan Youn (7): ARM: EXYNOS4: Add support PPI in external GIC ARM: EXYNOS4: Add support MCT PPI for EXYNOS4212 ARM: EXYNOS4: Add support new EXYNOS4412 SoC ARM: EXYNOS4: Add support clock for EXYNOS4412 ARM: EXYNOS4: Add functions for gic interrupt handling ARM: EXYNOS4: Add MCT support for EXYNOS4412 ARM: EXYNOS4: Add support SMDK4412 Board Changli Gao (5): net: rps: support 802.1Q net: rps: support PPPOE session messages net: add the comment for skb->l4_rxhash net: Preserve ooo_okay when copying skb header net: rps: fix the support for PPPOE Chanwoo Choi (1): ARM: EXYNOS4: Update config file of NURI to enable RTC Chaoming Li (4): rtlwifi: Update to new Realtek version - Part I rtlwifi: rtl8192ce: Add new chip revisions rtlwifi: rtl8192se: Updates from latest Realtek driver version - Part II rtlwifi: rtl8192de: Updates from latest Reaktek driver - Part III Charles Chin (4): ALSA: hda - Remove bad code for IDT 92HD83 family patch ALSA: hda - Disable power-widget control for IDT 92HD83/93 as default ALSA: hda - Add support for 92HD65 / 92HD66 family of codecs ALSA: hda/sigmatel - Automatically retrieve digital I/O widgets Charulatha V (1): ARM: OMAP3: PM: fix pwrdm_post_transition call sequence Chauhan, Vijay (1): [SCSI] scsi_dh_rdac: Adding NetApp as a brand name for rdac Chen Gong (1): pstore: make pstore write function return normal success/fail value Cheng Renquan (5): scripts/kconfig/nconf: fix typo: unknow => unknown scripts/kconfig/nconf: fix memmove's length arg scripts/kconfig/nconf: dynamically alloc dialog_input_result scripts/kconfig/nconf: fix editing long strings scripts/kconfig/nconf: add KEY_HOME / KEY_END for dialog_inputbox Chris Bagwell (3): Input: wacom - remove unneeded touch pressure initialization Input: wacom - add ABS_DISTANCE to Bamboo Pen reports Input: wacom - correct max Y value on medium bamboos Chris Dunlop (1): md.c: trivial comment fix Chris Mason (14): Merge branch 'btrfs-3.0' into for-linus Btrfs: don't wait as long for more batches during SSD log commit Btrfs: make sure btrfs_remove_free_space doesn't leak EAGAIN Btrfs: fix extent pinning bugs in the tree log Btrfs: make sure to flush queued bios if write_cache_pages waits Btrfs: add a log of past tree roots Btrfs: ClearPageError during writepage and clean_tree_block Merge branch 'for-chris' of git://github.com/sensille/linux into integration Merge git://git.jan-o-sch.net/btrfs-unstable into integration Btrfs: fix the new inspection ioctls for 32 bit compat Btrfs: fix extent_buffer leak in the metadata IO error handling Btrfs: stop the readahead threads on failed mount Btrfs: fix race during transaction joins Btrfs: check for a null fs root when writing to the backup root log Chris Metcalf (4): arch/tile: avoid ISO namespace pollution with arch/tile: avoid exporting a symbol no longer used by gcc arch/tile: add the headers to the set of installed kernel headers arch/tile: factor out header Chris Rankin (13): [media] Add missing OK key to PCTV IR keymap [media] em28xx: pass correct buffer size to snprintf [media] em28xx: use atomic bit operations for devices-in-use mask [media] em28xx: clean up resources should init fail [media] em28xx: move printk lines outside mutex lock [media] em28xx: don't sleep on disconnect [media] EM28xx - Fix memory leak on disconnect or error [media] em28xx: ERROR: "em28xx_add_into_devlist" [drivers/media/video/em28xx/em28xx.ko] undefined! [media] em28xx: Fix em28xx_devused cleanup logic on error [media] em28xx: fix race on disconnect [media] em28xx: fix deadlock when unplugging and replugging a DVB adapter [media] em28xx: remove unused prototypes [media] em28xx: replug locking cleanup Chris Wilson (1): drm/i915: Defend against userspace creating a gem object with size==0 Christian Borntraeger (2): [S390] kvm: Handle diagnose 0x10 (release pages) virtio: console: wait for first console port for early console output Christian Dietrich (2): drivers/char/rtc: use printk_ratelimited instead of printk_ratelimit scsi/sg: use printk_ratelimited instead of printk_ratelimit Christian Ehrhardt (1): KVM: s390: implement sigp external call Christian Gmeiner (1): [media] adv7175: Make use of media bus pixel codes Christian Lamparter (9): carl9170: fix timekeeping for HW_COUNTER firmwares carl9170: import updated firmware headers carl9170: improve site survey carl9170: export HW random number generator p54: improve site survey carl9170: Use do_div for 64-bit division to fix 32-bit kernels p54: Use do_div for 64-bit division to fix 32-bit kernels minstrel_ht: fix Open BA session request floods carl9170: fix AMPDU TX_CTL_REQ_TX_STATUS handling Christoph Hellwig (54): [SCSI] libsas: sas_queuecommand doesnt need host_lock [SCSI] libsas: reindent sas_queuecommand [SCSI] libsas: fix sas_queuecommand return values block: export __make_request block: remove support for bio remapping from ->make_request block: refactor generic_make_request loop: remove the incorrect write_begin/write_end shortcut tfm_fc: use transport_handle_cdb_direct iscsi-target: always call transport_handle_cdb_direct target: remove transport_generic_handle_cdb target: don't opencode transport_release_cmd in transport_release_fe_cmd target: remove transport_free_se_cmd target: simplify transport_generic_remove target: simplify transport_put_cmd target: remove transport_generic_remove target: push session reinstatement out of transport_generic_free_cmd target: cleanup iblock bio submission target: cleanup pscsi request submission target: remove unused se_subsystem_api methods target: Cleanup unused target_core_base.h bits target: Cleanup unused se_task bits target: make more use of the task_flags field in se_task target: Remove unnecessary se_task members target: pack struct se_task more tightly target: make the ->get_cdb method optional target: replace ->get_cdb with a target_get_task_cdb helper target: remove the ->transport_split_cdb callback in se_cmd target: make iblock_emulate_sync_cache asynchronous target: clean up the backend interface to caching parameters target: remove the transport_qf_callback se_cmd callback target: remove SCF_EMULATE_QUEUE_FULL target: do not pass the queue object to transport_remove_cmd_from_queue target: use transport_cmd_check_stop_to_fabric consistently target: fix list walking in transport_free_dev_tasks target: factor some duplicate code for stopping a task target: remove TF_TIMER_STOP target: stop task timers earlier target: move depth_left manipulation out of transport_generic_request_failure target: remove the TRANSPORT_REMOVE state target: remove TRANSPORT_DEFERRED_CMD state target: remove unused TRANSPORT_ states target: use a workqueue for I/O completions target: remove the task_sg_bidi field se_task and pSCSI BIDI support target: merge transport_new_cmd_obj into transport_generic_new_cmd target: remove transport_allocate_tasks target: re-use the command S/G list for single-task commands vfs: fix spinning prevention in prune_icache_sb target: add back error handling in transport_complete_task target: split core_scsi2_emulate_crh target: split core_scsi3_emulate_pr target: pass the se_task to the CDB emulation callback target: refactor transport_emulate_control_cdb target: remove SCF_EMULATE_CDB_ASYNC target: use ->exectute_task for all CDB emulation Christoph Lameter (10): slub: free slabs without holding locks slub: Remove useless statements in __slab_alloc slub: Prepare inuse field in new_slab() slub: pass kmem_cache_cpu pointer to get_partial() slub: return object pointer from get_partial() / new_slab(). slub: per cpu cache for partial pages slub: update slabinfo tools to report per cpu partial list statistics mm: distinguish between mlocked and pinned pages mm: add comments to explain mm_struct fields mm: do not drain pagevecs for mlockall(MCL_FUTURE) Christopher Rice (1): drivers:staging:comedi:drivers:cb_das_cs.c codeing style issue Christopher Yeoh (1): Cross Memory Attach Chuck Lever (3): NFS: Fix documenting comment for nfs_create_request() NFS: Clean up nfs4_xdr_dec_secinfo() NFS: Remove no-op less-than-zero checks on unsigned variables. Clemens Buchacher (1): jme: fix irq storm after suspend/resume Clemens Ladisch (14): ALSA: isight: remove superfluous field ALSA: virtuoso: fix Essence ST(X) S/PDIF input ALSA: mpu401: clean up interrupt specification ALSA: ymfpci: fix PCM open error handling ALSA: pcm: add snd_pcm_hw_rule_noresample() ALSA: ymfpci: allow to disable the SRC ALSA: emu10k1: allow to disable the SRC ALSA: via82xx: allow to disable the SRC ALSA: usb-audio: increase control transfer timeout ALSA: control: add support for ENUMERATED user space controls firewire: ohci: work around selfID junk due to wrong gap count firewire: ohci: fix isochronous DMA synchronization dma-mapping: fix sync_single_range_* DMA debugging ALSA: ua101: fix crash when unplugging Clifton Barnes (3): drivers/power/ds2780_battery.c: create central point for calling w1 interface drivers/power/ds2780_battery.c: add a nolock function to w1 interface drivers/power/ds2780_battery.c: fix deadlock upon insertion and removal Colin Brophy (1): Staging: nvec: fixes coding style issues in nvec_kbd.c Colin Cross (6): PM / Runtime: Add might_sleep() to runtime PM functions cpu_pm: Add cpu power management notifiers cpu_pm: call notifiers during suspend ARM: gic: Use cpu pm notifiers to save gic state ARM: vfp: Use cpu pm notifiers to save vfp state ARM: gic: Allow gic arch extensions to provide irqchip flags Corentin Chary (3): scripts: add extract-vmlinux asus-laptop: hide leds on Pegatron Lucid asus-laptop: fix module description Curt Wohlgemuth (3): ext4: handle NULL p_ext in ext4_ext_next_allocated_block() writeback: send work item to queue_io, move_expired_inodes writeback: Add a 'reason' to wb_writeback_work Damian (1): fbdev: sh_mobile_meram: Assign meram to the SH7372_A4LC power domain Damian Hobson-Garcia (4): fbdev: sh_mobile_meram: Enable runtime PM fbdev: sh_mobile_meram: Enable/disable MERAM along with LCDC fbdev: sh_mobile_meram: Move private data from .h to .c fbdev: sh_mobile_meram: Backup/restore device registers on shutdown/resume Dan Ballard (1): kernel/sysctl.c: add cap_last_cap to /proc/sys/kernel Dan Carpenter (78): qla3xxx: remove an extra semi-colon libertas: remove some dead code in if_spi_prog_helper_firmware() USB: serial: remove duplicate returns HID: hid-lg4ff: silence sparse complaint HID: hid-lg4ff: add a kfree() to an error path rtl8712: don't just return -EFAULT in wpa_supplicant_ioctl() HID: unlock on error path in hid_device_probe() libertas: handle mesh networks in lbs_iface_active() bcma: signedness bug in bcma_get_next_core() bna: unlock on error path in pnad_pci_probe() bna: off by one in bfa_msgq_rspq_pi_update() Staging: hv: netvsc: return negative error codes [media] dib7000p: return error code on allocation failure [media] dib9000: return error code on failure [media] ddbridge: fix ddb_ioctl() jbd2: use gfp_t instead of int usb: dwc3: debugfs: add a kfree() on error to dwc3_testmode_open() mac80211: handle allocation failures in mesh_pathtbl_init() iwlwifi: fix double assign in iwl_start_tx_ba_trans_ready() iwlwifi: signedness bug in iwl_trans_pcie_tx_agg_alloc() 6LoWPAN: use kfree_skb() instead of kfree() 6LoWPAN: use the _safe version of list_for_each 6LoWPAN: call dev_put() on error in lowpan_newlink() mwifiex: add a kfree() to an error path mwifiex: remove unneeded NULL check ALSA: hdspm - potential info leak in snd_hdspm_hwdep_ioctl() ALSA: hdspm - cleanup __user tags in ioctl() HID: hiddev: potential info leak in hiddev_ioctl() Staging: rtl8192e: off by one in rtl8192_get_channel_map() Staging: vt6655-6: potential info leak in private_ioctl() NFC: use after free on error wl3501_cs: min_t() cast truncates high bits sound: oss: use strlcpy() in sound_timer_init() xen/pciback: double lock typo USB: message: cleanup min_t() cast in usb_sg_init() TTY: snyclinkmp: forever loop in tx_load_dma_buffer() Staging: vt6656: potential memory corruption [media] mxl111sf: fix a couple precedence bugs [media] dib9000: release a lock on error smscufx: change edid data to u8 instead of char caif: add error handling for allocation ALSA: oss-mixer - use strlcpy() instead strcpy() bnx2x: remove some dead code amd64_edac: Cleanup return type of amd64_determine_edac_cap() dma/timberdale: free_irq() on an error path Staging: iio/light/tsl2563: unlock on an error path Staging: iio/light/tsl2563: fix compile warning Staging: iio/adc/ad7150: release lock on error Staging: dt3155v4l: silence a compiler warning ath5k: remove some unneeded error handling code ath9k: remove some bogus error handling code [media] rc/ir-lirc-codec: cleanup __user tags cipso: remove an unneeded NULL check in cipso_v4_doi_add() Input: force feedback - potential integer wrap in input_ff_create() iwmc3200wifi: add a range check to iwm_cfg80211_get_key() PM / Suspend: Off by one in pm_suspend() nfsd4: typo logical vs bitwise negate vmwgfx: return -EFAULT instead of number of bytes remaining vmwgfx: memory leaks caused by double allocation vmwgfx: information leak in vmw_execbuf_copy_fence_user() CIFS: cleanup min_t() cast in cifs_read() USB: gadget: midi: fix range check in f_midi_out_open() USB: gadget: midi: memory leak in f_midi_bind_config() Staging: vt6655: memory corruption in check in wpa_set_wpadev() filter: use unsigned int to silence static checker warning [SCSI] aacraid: use lower snprintf() limit Staging: vt6656: whitespace cleanups in ioctl.c Staging: vt6656: add some range checks before memcpy() Staging: vt6655: whitespace fixes to iotcl.c Staging: vt6655: add some range checks before memcpy() target: Make pscsi_create_virtdevice use ERR_CAST 9p: move dereference after NULL check fs/9p: change an int to unsigned int ext4: error handling fix in ext4_ext_convert_to_initialized() ALSA: hwdep: silence integer overflow warning target/pscsi: blk_make_request() returns an ERR_PTR() [media] cx25821: off by one in cx25821_vidioc_s_input() bonding: comparing a u8 with -1 is always false Dan Magenheimer (1): xen: Fix selfballooning and ensure it doesn't go too far Dan McGee (8): pata_sis: extract a sis_port_base() method pata_sis: add mode_filter method for certain sis5513 chipsets pata_sis: enable MWDMA for UDMA 133 chipset pata_sis: mark most const data static as well pata_sis: code style cleanups for consistency mtd: mark block device queue as non-rotational lib/raid6: Fix filename emitted in generated code VFS: fix statfs() automounter semantics regression Dan Williams (20): [SCSI] libsas: export sas_alloc_task() USB: option: convert interface blacklisting to bitfields USB: option: convert Huawei K3765, K4505, K4605 reservered interface to blacklist USB: option: add ZTE product 0x0037 to sendsetup blacklist USB: option: add various ZTE device network interfaces to the blacklist [SCSI] libsas: sgpio write support [SCSI] isci: fix sgpio register definitions [SCSI] isci: initial sgpio write support [SCSI] libsas: disable scanning lun > 0 on ata devices [SCSI] libsas,libata: fix ->change_queue_{depth|type} for sata devices [SCSI] libsas: dynamic queue depth [SCSI] mvsas: remove mvs_slave_{alloc|configure} [SCSI] pm8001: remove pm8001_slave_{alloc|configure} [SCSI] libsas: fix try_test_sas_gpio_gp_bit() build error [SCSI] libsas: fix warnings when checking sata/stp protocol [SCSI] isci: fix support for large smp requests [SCSI] isci: atapi support [SCSI] isci: export phy events via ->lldd_control_phy() [SCSI] libsas: fix port->dev_list locking [SCSI] isci: revert bcn filtering Daniel De Graaf (3): xenbus: Fix loopback event channel assuming domain 0 xenbus: don't rely on xen_initial_domain to detect local xenstore xen/gntdev: Fix sleep-inside-spinlock Daniel Drake (11): libertas: link mesh device to wiphy libertas_usb: use USB interface as parent device libertas_usb: program OLPC EC wakeup mask for wake-on-WLAN libertas: disable functionality when interface is down libertas: implement if_sdio runtime power management [media] mmp_camera: add MODULE_ALIAS libertas: scan behaviour consistency improvements libertas: detect TX lockups and reset hardware libertas: fix changing interface type when interface is down mmc: enable runtime PM by default mmc: core: add a short delay in mmc_power_off Daniel Halperin (1): iwlagn: fix compile warnings when CONFIG_PM_SLEEP is not set Daniel Hellstrom (1): sparc32,leon: SRMMU MMU Table probe fix Daniel J Blueman (1): btrfs: fix oops on failure path Daniel Kurtz (10): Input: synaptics - refactor y inversion Input: synaptics - refactor agm packet parsing Input: synaptics - refactor initialization of abs position axes Input: synaptics - add image sensor support Input: synaptics - decode AGM packet types Input: mt - document devices reporting more touches than slots Input: synaptics - process finger (<=3) transitions Input: add BTN_TOOL_QUINTTAP for reporting 5 fingers on touchpad Input: synaptics - process finger (<=5) transitions Input: atmel_mxt_ts - use snprintf for sysfs attribute show method Daniel Mack (8): mtd: pxa3xx_nand: Fix blank page ECC mismatch USB: Add endpoint usage definitions to ch9.h ALSA: snd-usb: re-order the Makefile ALSA: snd-usb: re-order code ALSA: snd-usb: move code from urb.c to endpoint.c USB: gadget: midi: add midi function driver USB: gadget: midi: refactor the device code USB: gadget: f_midi: allow a dynamic number of input and output ports Daniel Martensson (4): caif-hsi: Making read and writes asynchronous. caif-hsi: HSI-Platform device register and unregisters itself caif-hsi: Added sanity check for length of CAIF frames caif-hsi: Added recovery check of CA wake status. Daniel Morsing (1): OMAP: DSS2: Don't allow moving managers away from enabled displays Daniel P. Berrange (1): md: don't delay reboot by 1 second if no MD devices exist Daniel Suchy (1): ALSA: HDA: conexant support for Lenovo T520/W520 Daniel Vetter (7): drm/i915: close PM interrupt masking races in the irq handler drm/i915: close PM interrupt masking races in the rps work func drm/i915: properly cancel rps_work on module unload v2 drm/i915: fix swizzling on gen6+ drm/i915: simplify swapin/out swizzle checking a bit io-mapping: ensure io_mapping_map_atomic _is_ atomic drm/i915: drop KM_USER0 argument to k(un)map_atomic Daniel van Vugt (1): HID: hid-magicmouse: Magic Trackpad has 1 button, not 2 Daniele Guerrieri (1): ALSA: usb-audio: Added support for Roland UM-ONE midi-usb interface Darrick J. Wong (4): ext4: ext4_rename should dirty dir_bh with the correct directory ext4: ext4_mkdir should dirty dir_block with newly created directory inode ext4: Fix comparison endianness problem in MMP initialization ext4: prevent stack overrun in ext4_file_open Dave Airlie (8): Merge branch 'drm-nouveau-next' of git://git.freedesktop.org/git/nouveau/linux-2.6 into drm-next Merge branch 'drm-intel-next' of git://people.freedesktop.org/~keithp/linux into drm-next Merge branch 'drm-vmware-next' into drm-core-next Merge branch 'drm-intel-next' of git://people.freedesktop.org/~keithp/linux into drm-core-next Merge tag 'v3.1-rc10' into drm-core-next Merge branch 'drm-intel-next' of git://people.freedesktop.org/~keithp/linux into drm-core-next Revert "drm/radeon/kms: add a new gem_wait ioctl with read/write flags" Revert "drm/ttm: add a way to bo_wait for either the last read or last write" Dave Jones (7): drm/radeon: Lower the severity of the radeon lockup messages. ACPI / PM: Add Sony VGN-FW21E to nonvs blacklist. [SCSI] pmcraid: pmcraid_chr_ioctl uses incorrect argument order to kmalloc() mm: output a list of loaded modules when we hit bad_page() x25: Fix NULL dereference in x25_recvmsg um: Fix kmalloc argument order in um/vdso/vma.c ACPI / PM: Add Sony VPCEB17FX to nonvs blacklist Dave Kleikamp (1): [SCSI] sd: remove arbitrary SD_MAX_DISKS namespace limit Dave Martin (4): net/smsc911x: Correctly configure 16-bit register access from DT ARM: 7029/1: Make cpu_architecture into a global variable ARM: 7030/1: entry: Remove unnecessary masking when decoding Thumb-2 instructions ARM: 7031/1: entry: Fix Thumb-2 undef handling for multi-CPU kernels David Ahern (4): perf script: Fix unknown feature comment perf tools: Add prelink suggestion to dso update message perf tools: handle endianness of feature bitmap perf hists browser: Do not exit on tab key with single event David Anders (1): rtc: add initial support for mcp7941x parts David Brown (3): msm_serial: Use relative resources for iomem msm_serial: Add devicetree support ARM: msm: Add devicetree support for msm8660-surf David Daney (10): netdev/phy: Use mdiobus_read() so that proper locks are taken. netdev/phy/icplus: Use mdiobus_write() and mdiobus_read() for proper locking. MIPS: Add more CPU identifiers for Octeon II CPUs. MIPS: Add probes for more Octeon II CPUs. MIPS: Add accessor macros for 64-bit performance counter registers. MIPS: perf: Cleanup formatting in arch/mips/kernel/perf_event.c MIPS: perf: Reorganize contents of perf support files. MIPS: perf: Add support for 64-bit perf counters. MIPS: perf: Add Octeon support for hardware perf. drivers/leds/leds-gpio.c: use gpio_get_value_cansleep() when initializing David Henningsson (7): ALSA: HDA: Refactor Realtek's automute ALSA: hda: hdmi: Hint matching between input devices and pcm devices ALSA: HDA: Fix naming of input jacks for IDT parser ALSA: HDA: Fix DAC assignment for secondary headphone on Sigmatel/IDT ALSA: jack - Add "Line In" input jack constants ALSA: HDA: Fixup Realtek headphone pin initialization ALSA: HDA: Add new revision for ALC662 David Herrmann (23): HID: Fix race condition between driver core and ll-driver HID: wiimote: Support rumble device HID: wiimote: Add force-feedback support HID: wiimote: Add accelerometer input device HID: wiimote: Parse accelerometer data HID: wiimote: Add IR input device HID: wiimote: Parse IR data HID: wiimote: Add missing extension DRM handlers HID: wiimote: Add register/eeprom memory support HID: wiimote: Helper functions for synchronous requests HID: wiimote: Add write-register helpers HID: wiimote: Add IR initializer HID: wiimote: Initialize IR cam on request HID: wiimote: Add status request HID: wiimote: Read wiimote battery charge level HID: wiimote: Add MAINTAINERS entry Bluetooth: hidp: Add support for NO_INIT_REPORTS quirk HID: wacom: Set input bits before registration Platform: Fix error path in samsung-laptop init Bluetooth: ath3k: Use GFP_KERNEL instead of GFP_ATOMIC Bluetooth: bcm203x: Fix race condition on disconnect Bluetooth: bcm203x: Use GFP_KERNEL in workqueue Bluetooth: bfusb: Fix error path on firmware load David Howells (8): KEYS: If install_session_keyring() is given a keyring, it should install it KEYS: keyctl_get_keyring_ID() should create a session keyring if create flag set KEYS: __key_link() should use the RCU deref wrapper for keyring payloads CRED: Fix prepare_kernel_cred() to provide a new thread_group_cred struct KEYS: Move the unreferenced key reaper to the keys garbage collector file KEYS: Make the key reaper non-reentrant KEYS: The dead key link reaper should be non-reentrant KEYS: Correctly destroy key payloads when their keytype is removed David Jander (1): leds: Convert mc13783 driver to mc13xxx MFD David Kilroy (29): staging: wlags49_h2: Remove non-linux configurations staging: wlags49_h2: Reindent hcfdef.h staging: wlags49_h2: Fix macro termination staging: wlags49_h2: Reindent hcf.c staging: wlags49_h2: Remove HCF_DL_ONLY staging: wlags49_h2: Simplify HCF_ENCAP usage staging: wlags49_h2: Remove some unused defines staging: wlags49_h2: Remove references to SSN staging: wlags49_h2: Remove MUL/DIV_BY_2 staging: wlags49_h2: Remove CKIP support from hcf staging: wlags49_h2: Remove HCF_EXT_MB from code. staging: wlags49_h2: Reformat TX_CNTL comment staging: wlags49_h2: Remove continuous tx test staging: wlags49_h2: Remove old WIRELESS_EXT support staging: wlags49_h2: Support standard WEXT events staging: wlags49_h2: Fixup WEXT capabilities staging: wlags49_h2: Declare support for WEXT 21 staging: wlags49_h2: Stop playing with length in GIWESSID handler staging: wlags49_h2: Use IW_HANDLER macro staging: wlags49_h2: Use C99 __func__ staging: wlags49_h2: Remove unused debug function staging: wlags49_h2: Remove bad debug message staging: wlags49_h2: Handle sysfs_create_group return correctly staging: wlags49_h2: Enable WPA in the HCF staging: wlags49_h2: Remove useless IWE_STREAM_ADD_XXX defines staging: wlags49_h2: Report WPA IE in scan results with IWEVGENIE staging: wlags49_h2: Make key setting more reliable staging: wlags49_h2: Fixup IW_AUTH handling staging: wlags49_h2: Fixup SIOCSIWGENIE David Rientjes (5): oom: thaw threads if oom killed thread is frozen before deferring oom: avoid killing kthreads if they assume the oom killed thread's mm oom: remove oom_disable_count oom: fix race while temporarily setting current's oom_score_adj cpusets: avoid looping when storing to mems_allowed if one node remains set David S. Miller (49): Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net Merge branch 'dccp' of git://eden-feed.erg.abdn.ac.uk/net-next-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/jkirsher/next-organize cxgbi: Fix scsi Kconfig dependencies. mlx4: Fix infiniband Kconfig dependencies. cnic: Fix select dependencies in bnx2fc/bnx2i Kconfig. net: Move sungem_phy.h under include/linux net: Fix sungem_phy sharing. Merge branch 'can/mscan' of git://git.pengutronix.de/git/mkl/linux-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/jkirsher/net-next Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next Merge branch 'batman-adv/next' of git://git.open-mesh.org/linux-merge Merge branch 'davem-next.mii' of git://git.kernel.org/pub/scm/linux/kernel/git/romieu/netdev-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/jkirsher/next-organize Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next net: Fix duplicate CONFIG_SLIP entry in driver/net/Makefile Merge branch 'master' of ../netdev-next/ Merge branch 'for-davem' of git://git.infradead.org/users/linville/wireless-next Merge git://github.com/Jkirsher/net-next Revert "Scm: Remove unnecessary pid & credential references in Unix socket's send and receive path" Merge git://github.com/Jkirsher/net-next Merge branch 'tipc-Sep17-2011' of git://openlinux.windriver.com/people/paulg/net-next Merge branch 'batman-adv/next' of git://git.open-mesh.org/linux-merge Merge branch 'master' of github.com:davem330/net-next Merge branch 'master' of github.com:davem330/net Merge branch 'davem-next.r8169' of git://violet.fr.zoreil.com/romieu/linux Merge git://github.com/Jkirsher/net-next Merge git://github.com/Jkirsher/net-next Merge git://github.com/Jkirsher/net-next Merge branch 'master' of github.com:davem330/net Merge git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next Merge branch 'for-davem' of git://git.infradead.org/users/linville/wireless-next sparc: Avoid calling sigprocmask() Merge git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next Merge branch 'nf' of git://1984.lsi.us.es/net Merge git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next Merge branch 'batman-adv/maint' of git://git.open-mesh.org/linux-merge sparc32: Remove non-kernel code from memcpy implementation. sparc32: Remove uses of %g7 in memcpy implementation. sparc32: Correct the return value of memcpy. Merge git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next Merge branch 'master' of ra.kernel.org:/pub/scm/linux/kernel/git/davem/net Merge branch 'batman-adv/maint' of git://git.open-mesh.org/linux-merge sparc64: Fix masking and shifting in VIS fpcmp emulation. neigh: Kill bogus SMP protected debugging message. Merge git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless David Sterba (6): btrfs: do not allow mounting non-subvolumes via subvol option Merge remote-tracking branch 'remotes/josef/for-chris' into btrfs-next-stable Merge branch 'hotfixes-20111024/josef/for-chris' into btrfs-next-stable btrfs: ratelimit WARN_ON in use_block_rsv i7core_edac: fix misuse of logical operation in place of bitop btrfs: separate superblock items out of fs_info David Vrabel (9): xen/balloon: account for pages released during memory setup xen/balloon: simplify test for the end of usable RAM xen: allow balloon driver to use more than one memory region xen: allow extra memory to be in multiple regions xen: release all pages within 1-1 p2m mappings xen: use generic functions instead of xen_{alloc, free}_vm_area() block: initialize the bounce pool if high memory may be added later block: xen-blkback: use API provided by xenbus module to map rings net: xen-netback: use API provided by xenbus module to map rings David Woodhouse (5): intel-iommu: Workaround IOTLB hang on Ironlake GPU intel-iommu: Export a flag indicating that the IOMMU is used for iGFX. intel-iommu: Workaround IOTLB hang on Ironlake GPU intel-iommu: Export a flag indicating that the IOMMU is used for iGFX. caif: Fix BUG() with network namespaces Davidlohr Bueso (1): kconfig: handle SIGINT in menuconfig Dean Nelson (4): e1000: save skb counts in TX to avoid cache misses e1000: don't enable dma receives until after dma address has been setup HWPOISON: convert pr_debug()s to pr_info()s hwmon: Avoid building drivers for powerpc that read/write ISA addresses Deepak Sikri (1): stmmac: support wake up irq from external sources (v3) Deepthi Dharwar (4): cpuidle: Move dev->last_residency update to driver enter routine; remove dev->last_state cpuidle: Remove CPUIDLE_FLAG_IGNORE and dev->prepare() cpuidle: Split cpuidle_state structure and move per-cpu statistics fields cpuidle: Single/Global registration of idle states Denis Pershin (1): usb: cdc-acm: Owen SI-30 support Devin Heitmueller (9): [media] staging: as102: Fix CodingStyle errors in file as102_drv.c [media] staging: as102: Fix CodingStyle errors in file as102_fw.c [media] staging: as102: Fix CodingStyle errors in file as10x_cmd.c [media] staging: as102: Fix CodingStyle errors in file as10x_cmd_stream.c [media] staging: as102: Fix CodingStyle errors in file as102_fe.c [media] staging: as102: Fix CodingStyle errors in file as102_usb_drv.c [media] staging: as102: Fix CodingStyle errors in file as10x_cmd_cfg.c [media] staging: as102: Add Elgato EyeTV DTT Deluxe [media] staging: as102: Properly handle multiple product names Diego Calleja (1): btrfs: fix memory leak in btrfs_defrag_file Dima Zavin (1): OMAP: DSS: dispc: enable/disable clocks in error handler Dimitri Sivanich (1): mm/vmstat.c: cache align vm_stat Dimitris Papastamos (19): regmap: Introduce caching support regmap: Add the indexed cache support regmap: Add the rbtree cache support regmap: Add the LZO cache support regmap: Add the regcache_sync trace event regmap: Incorporate the regcache core into regmap regmap: Remove redundant member `word_size' from regcache_rbtree_node regmap: Fix signed/unsigned comparison regmap: Implement generic syncing functionality regmap: Fix regcache_sync generic implementation regmap: Modify map->cache_bypass directly regmap: Grab the lock in regcache_cache_only() regmap: Make _regmap_write() global regmap: Lock the sync path, ensure we use the lockless _regmap_write() regmap: Save/restore the bypass state upon syncing regmap: Implement regcache_cache_bypass helper function regmap: Ensure we scream if we enable cache bypass/only at the same time regmap: Optimize the lookup path to use binary search regmap: Fix doc comment Dirk Brandewie (10): max3110: wake up fixes i2c-designware: Move checking of IP core version to i2c_dw_init() i2c-designware: split of i2c-designware.c into core and bus specific parts i2c-designware: Move retriveving the clock speed out of core code. i2c-designware: move i2c functionality bit field to be adapter specific i2c-designware: move controller config to bus specific portion of driver i2c-designware: Support multiple cores using same ISR i2c-designware: Push all register reads/writes into the core code. i2c-designware: Add support for Designware core behind PCI devices. i2c-designware: Add runtime power management support Dirk Eibach (1): net: Fix driver name for mdio-gpio.c Dmitry Artamonow (1): hwmon: (w83627ehf) add caseopen detection Dmitry Eremin-Solenikov (117): cpc925_edac: Support single-processor configurations mtd: ATMEL, AVR32: inline nand partition table access mtd: drop ceiva map driver mtd: drop physmap_configure mtd: cafe_nand: drop reference to CONFIG_MTD_CMDLINE_PARTS mtd: mtdpart: default to cmdlinepart, NULL partitions probing mtd: m25p80 don't specify default parsing options mtd: drop mtd_has_cmdlinepart() mtd: mtd_dataflash don't specify default parsing options mtd: sst25l don't specify default parsing options mtd: h720x-flash don't specify default parsing options mtd: impa7 don't specify default parsing options mtd: intel_vr_nor don't specify default parsing options mtd: rbtx4939-flash don't specify default parsing options mtd: atmel_nand don't specify default parsing options mtd: bcm_umi_nand don't specify default parsing options mtd: cmx270_nand don't specify default parsing options mtd: cs553x_nand don't specify default parsing options mtd: davinci_nand don't specify default parsing options mtd: edb7312 don't specify default parsing options mtd: fsl_upm don't specify default parsing options mtd: fsmc_nand don't specify default parsing options mtd: h1910 don't specify default parsing options mtd: jz4740_nand don't specify default parsing options mtd: lantiq-flash don't specify default parsing options mtd: latch-addr-flash don't specify default parsing options mtd: mpc5121_nfc don't specify default parsing options mtd: ndfc don't specify default parsing options mtd: omap2 don't specify default parsing options mtd: orion_nand don't specify default parsing options mtd: ppchameleonevb don't specify default parsing options mtd: pxa3xx_nand don't specify default parsing options mtd: s3c2410 don't specify default parsing options mtd: sharpsl don't specify default parsing options mtd: socrates_nand don't specify default parsing options mtd: tmio_nand don't specify default parsing options mtd: txx9ndfmc don't specify default parsing options mtd: onenand/generic don't specify default parsing options mtd: onenand/omap2 don't specify default parsing options mtd: samsung/onenand don't specify default parsing options mtd: add a flags for partitions which should just leave smth. after them ts72xx: use MTDPART_OFS_RETAIN for mtd partitioning mtd: plat-nand: drop unused fields from platform_nand_data mtd: lart: cleanup: drop HAVE_PARTITIONS mtd: add new API for handling MTD registration mtd: sst25l.c: use mtd_device_parse_register mtd: bfin-async-flash.c: use mtd_device_parse_register mtd: dc21285.c: use mtd_device_parse_register mtd: gpio-addr-flash.c: use mtd_device_parse_register mtd: h720x-flash.c: use mtd_device_parse_register mtd: impa7.c: use mtd_device_parse_register mtd: intel_vr_nor.c: use mtd_device_parse_register mtd: ixp2000.c: use mtd_device_parse_register mtd: ixp4xx.c: use mtd_device_parse_register mtd: lantiq-flash.c: use mtd_device_parse_register mtd: latch-addr-flash.c: use mtd_device_parse_register mtd: physmap.c: use mtd_device_parse_register mtd: plat-ram.c: use mtd_device_parse_register mtd: pxa2xx-flash.c: use mtd_device_parse_register mtd: rbtx4939-flash.c: use mtd_device_parse_register mtd: sa1100-flash.c: use mtd_device_parse_register mtd: solutionengine.c: use mtd_device_parse_register mtd: wr_sbc82xx_flash.c: use mtd_device_parse_register mtd: atmel_nand.c: use mtd_device_parse_register mtd: bcm_umi_nand.c: use mtd_device_parse_register mtd: cafe_nand.c: use mtd_device_parse_register mtd: cmx270_nand.c: use mtd_device_parse_register mtd: cs553x_nand.c: use mtd_device_parse_register mtd: davinci_nand.c: use mtd_device_parse_register mtd: edb7312.c: use mtd_device_parse_register mtd: fsmc_nand.c: use mtd_device_parse_register mtd: h1910.c: use mtd_device_parse_register mtd: jz4740_nand.c: use mtd_device_parse_register mtd: mxc_nand.c: use mtd_device_parse_register mtd: omap2.c: use mtd_device_parse_register mtd: orion_nand.c: use mtd_device_parse_register mtd: plat_nand.c: use mtd_device_parse_register mtd: ppchameleonevb.c: use mtd_device_parse_register mtd: pxa3xx_nand.c: use mtd_device_parse_register mtd: s3c2410.c: use mtd_device_parse_register mtd: sharpsl.c: use mtd_device_parse_register mtd: tmio_nand.c: use mtd_device_parse_register mtd: txx9ndfmc.c: use mtd_device_parse_register mtd: onenand/generic.c: use mtd_device_parse_register mtd: onenand/omap2.c: use mtd_device_parse_register mtd: onenand/samsung.c: use mtd_device_parse_register mtd: mtd_dataflash.c: use mtd_device_parse_register mtd: edb7312: correctly pass MTD name to parsers mtd: abstract last MTD partition parser argument mtd: prepare to convert of_mtd_parse_partitions to partition parser mtd: physmap_of: use ofpart through generic parsing mtd: m25p80: use ofpart through generic parsing mtd: fsl_elbc_nand: use ofpart through generic parsing mtd: fsl_upm: use ofpart through generic parsing mtd: mpc5121_nfc: use ofpart through generic parsing mtd: ndfc: use ofpart through generic parsing mtd: socrates_nand: use ofpart through generic parsing mtd: drop of_mtd_parse_partitions() mtd: physmap_of: move parse_obsolete_partitions to become separate parser mtd: physmap_of.c: use mtd_device_parse_register mtd: m25p80.c: use mtd_device_parse_register mtd: fsl_elbc_nand.c: use mtd_device_parse_register mtd: fsl_upm.c: use mtd_device_parse_register mtd: mpc5121_nfc.c: use mtd_device_parse_register mtd: ndfc.c: use mtd_device_parse_register mtd: socrates_nand.c: use mtd_device_parse_register mtd: maps: drop edb7312 support mtd: nand: drop edb7312 support mtd: hide parse_mtd_partitions mtd: remove put_partition_parser() from public header mtd: drop mtd_device_register mtd: make ofpart buildable as a separate module mtd: ofpart: add ofoldpart alias powerpc/85xx: sbc8560 - correct compilation if CONFIG_PHYS_ADDR_T_64BIT is set powerpc/85xx: ksi8560 - declare that localbus is compatbile with simple-bus powerpc/85xx: sbc8560 - declare that localbus is compatbile with simple-bus powerpc/mpc8349emitx: mark localbus as compatible with simple-bus Dmitry Kasatkin (6): evm: add support for different security.evm data types evm: crypto hash replaced by shash evm: additional parameter to pass integrity cache entry 'iint' evm: evm_verify_hmac must not return INTEGRITY_UNKNOWN evm: replace hmac_status with evm_status evm: clean verification status Dmitry Kravkov (3): bnx2x: Fix build error bnx2x: use FW 7.0.29.0 bnx2x: update driver version to 1.70.30-0 Dmitry Monakhov (7): ext4: Allow quota file use root reservation ext4: cleanup ext4_ext_grow_indepth code ext4: remove messy logic from ext4_ext_rm_leaf ext4: update EOFBLOCKS flag on fallocate properly ext4: migrate cleanup ext4: fix quota accounting during migration ext3: Allow quota file use root reservation Dmitry Tarnyagin (3): caif-hsi: Fixing a race condition in the caif_hsi code caif-hsi: Fix for wakeup condition problem caif-hsi: Make inactivity timeout configurable. Dmitry Torokhov (25): Input: polldev - immediately poll device upon opening Input: wacom_w8001 - implement open and close Input: wacom_w8001 - simplify w8001_remove Input: tsc2007 - convert to threaded IRQ Input: tsc2007 - add open and close methods Merge commit 'v3.1-rc4' into next Input: tegra-kbc - tighten locking Input: penmount - rework handling of different protocols Input: penmount - simplify unregister procedure Input: mma8450 - silence some 'uninitialized variable' warnings Input: synaptics_i2c - wrap suspend and resume in CONFIG_PM_SLEEP Input: ad7879-i2c - wrap suspend and resume in CONFIG_PM_SLEEP Input: lm8323 - wrap suspend and resume in CONFIG_PM_SLEEP Input: psmouse - switch to using dev_*() for messages Input: serio_raw - use kref instead of rolling out its own refcounting Input: serio_raw - rename serio_raw_list to serio_raw_client Input: serio_raw - perform proper locking when adding clients to list Input: serio_raw - use bool for boolean data Input: serio_raw - use dev_*() for messages Input: serio_raw - fix coding style issues Input: serio_raw - explicitly mark disconnected ports as dead Input: serio_raw - kick clients when disconnecting port Input: serio_raw - fix memory leak when closing char device WMI: properly cleanup devices to avoid crashes Merge branch 'next' into for-linus Domenico Andreoli (1): ARM: S3C24XX: Fix s3c24xx build errors if !CONFIG_PM Don Fry (3): iwlagn: replace beacon_time_fsf_bits variable with #define iwlagn: rename iwlagn module iwlwifi and alias to iwlagn. iwlagn: eliminate bus pointer from iwl_priv structure Don Skidmore (6): ixgbe: cleanup feature flags in ixgbe_probe ixgbe: fix ixgbe_fc_autoneg_fiber bug ixgbe: cleanup X540 interrupt enablement ixgbe: cleanup ixgbe_setup_gpie() for X540 ixgbe: add ECC warning for legacy interrupts ixgbe: bump version number Don Zickus (6): pstore: change mutex locking to spin_locks x86, nmi: Split out nmi from traps.c x86, nmi: Create new NMI handler routines x86, nmi: Wire up NMI handlers to new routines x86, nmi: Add in logic to handle multiple events and unknown NMIs x86, nmi: Track NMI usage stats Dong Aisheng (14): ASoC: mxs: add mxs-pcm driver ASoC: mxs: add mxs-saif driver ASoC: mxs: add mxs-sgtl5000 machine driver ASoC: mxs: add asoc configuration files ASoC: sgtl5000: add one missed cache reg ASoC: mxs-saif: clear clk gate first before register setting ASoC: mxs-sgtl5000: add record function ARM: mxs: add saif clock ARM: mxs: add saif device ARM: mxs: add sgtl5000 i2c device ARM: mxs: add mxs-sgtl5000 device ARM: mxs: correct the using of frac div for saif ASoC: mxs-saif: add record function ASoC: soc-core: symmetry checking for each DAIs separately Donggeun Kim (2): hwmon: Add driver for EXYNOS4 TMU [CPUFREQ] exynos4210: Show list of available frequencies Doron Cohen (1): [media] siano: apply debug flag to module level Dotan Barak (2): mlx4_core: Use the right function to free eq->page_list entries IPoIB: Use the right function to do DMA unmap pages Doug Anderson (1): TTY: serial_core: Fix crash if DCD drop during suspend Dr. David Alan Gilbert (1): udlfb: fix issues found with Sparse static analysis Ed Wildgoose (1): x86: geode: New PCEngines Alix system driver Edgar E. Iglesias (2): microblaze: Switch ELF_ARCH code to 189 microblaze: Raise SIGFPE/FPE_INTDIV for div by zero Eduard Hasenleithner (1): Input: wacom - add Intuos4 LED and OLED control Edward Lu (4): ath6kl: Support channel set request for startscan command ath6kl: Fix a typo in ath6k context ath6kl: Fix default key installation in AP mode ath6kl: Do not clear CONNECT bit setting in AP mode for STA disconnect Edward Sheldrake (1): [media] drxd: fix divide error Edwin van Vliet (1): drivers/tty/synclink: remove double comment Einar Lueck (2): qeth: support forced signal adapter indications qeth: exploit asynchronous delivery of storage blocks Eli Billauer (2): microblaze: Moved __dma_sync() to dma-mapping.h microblaze: Added DMA sync operations Eli Cohen (1): mlx4_core: Fix buddy->num_free allocation size Eliad Peller (56): mac80211: clear sta.drv_priv on reconfiguration wl12xx: temporarily disable advanced ap functions wl12xx: remove rx filtering stuff wl12xx: update fw status struct wl12xx: update acx commands wl12xx: update commands & events wl12xx: enable/disable role on interface add/remove wl12xx: add device role commands wl12xx: update scan cmd api wl12xx: update rx/tx wl12xx: change max/default template size wl12xx: use wl1271_acx_beacon_filter_opt for both sta and ap wl12xx: add set_rate_mgmt_params acx wl12xx: add system_hlid wl12xx: add ROC/CROC commands wl12xx: replace dummy_join with ROC/CROC commands wl12xx: update BT coex configuration params wl12xx: call wl12xx_cmd_set_peer_state() in AP mode wl12xx: don't remove key if hlid was already deleted wl12xx: add wl12xx_cmd_role_start_ibss() wl12xx: support IBSS vif type wl12xx: use ap_bcast_hlid for recorded keys wl12xx: don't remove key if hlid was already deleted wl12xx: don't wait for disconnection event wl12xx: initialize rate_set on band rates initialization wl12xx: increase psm_entry_retries wl12xx: enter psm only after station role was started nl80211/cfg80211: add STA WME parameters mac80211: add uapsd_queues and max_sp params fields nl80211/cfg80211: add WIPHY_FLAG_AP_UAPSD flag wl12xx: print acx id wl12xx: print the seq_num of rx packet wl12xx: add module_param to trigger BUG() on recovery wl12xx: add beacon_filtering debugfs file wl12xx: don't disconnect on recovery wl12xx: don't use WL1271_SCAN_OPT_PRIORITY_HIGH flag wl12xx: check for ROC on scan_complete wl12xx: add config_hangover command wl12xx: use kstrtoul_from_user wl12xx: declare support for WIPHY_FLAG_AP_UAPSD wl12xx: support p2p interfaces nl80211/cfg80211/mac80211: fix wme docs cfg80211: add cfg80211_find_vendor_ie() function wl12xx: remove TIM ie from probe response wl12xx: remove P2P ie from probe response wl12xx: send all pending packets on channel change wl12xx: Use dev_hlid for auth and assoc req wl12xx: implement set_bitrate_mask callback mac80211: add ieee80211_vif param to tsf functions cfg80211/mac80211: add netdev param to set_txq_params() mac80211: save tx params per sdata mac80211: pass vif param to conf_tx() callback wl12xx: configure rate policy for p2p operations wl12xx: disable AP-mode-specific quirks mac80211: fix remain_off_channel regression mac80211: config hw when going back on-channel Emil Tantilov (23): ixgbe: add check for supported modes ixgbe: clear RNBC only for 82598 ixgbe: cleanup some register reads ixgbe: fix FCRTL/H register dump for X540 ixgbe: remove duplicate netif_tx_start_all_queues ixgbe: avoid HW lockup when adapter is reset with Tx work pending ixgbe: add WOL support for X540 ixgbe: remove global reset to the MAC ixgbe: Cleanup q_vector interrupt throttle rate logic ixgbe: prevent link checks while resetting ixgbe: clear the data field in ixgbe_read_i2c_byte_generic ixgbe: remove return code for functions that always return 0 ixgbe: add support for new 82599 device ixgbe: send MFLCN to ethtool ixgbe: do not disable flow control in ixgbe_check_mac_link ixgbe: remove instances of ixgbe_phy_aq for 82598 and 82599 igb: fix static function warnings reported by sparse ixgbe: fix endianess when writing driver version to firmware ixgbe: allow eeprom writes via ethtool ixgbe: change the eeprom version reported by ethtool ixgbe: Fix link issues caused by a reset while interface is down ixgbe: fix disabling of Tx laser at probe ixgbe: fix reading of the buffer returned by the firmware Emmanuel Grumbach (83): iwlagn: use iwl_get_debug_level instead of iwl_debug_level iwlagn: introduce iwl-shared.h iwlagn: introduce struct iwl-shared - known by all layers iwlagn: debug_level moves to struct iwl_shared iwlagn: hw_params moves to iwl_shared iwlagn: cmd_queue moves to iwl_shared iwlagn: workqueue moves to iwl_shared iwlagn: priv->status moves to iwl_shared iwlagn: priv->lock moves to iwl_shared iwlagn: priv->mutex moves to iwl_shared iwlagn: modify the debug macro to be usable by all the layers iwlagn: add IWL_DEBUG_FW_ERRORS iwlagn: priv->sta_lock moves to iwl_shared iwlagn: bus layer chooses its transport layer iwlagn: add comments to iwl_bus / iwl_trans iwlagn: transport handler can register debugfs entries iwlagn: iwl_rx_queue moves to the iwl_trans_pcie iwlagn: move iwl_suspend / iwl_resume to the transport layer iwlagn: move ISR related data to transport layer iwlagn: move the NIC error flow to the transport layer iwlagn: move isr_statistics to transport layer iwlagn: reclaim the packets in transport layer iwlagn: move reclaim related functions iwlagn: move scd_bc_tbls and scd_base_addr to iwl_trans_pcie iwlagn: fix the check of IWLAGN_FIRST_AMPDU_QUEUE iwlagn: move all iwl_is_XXX helpers to iwl-shared.h iwlagn: move iwl_free_pages to iwl-shared.h iwlagn: transport layer should receive iwl_trans iwlagn: move hcmd_lock to transport layer iwlagn: move dump_csr and dump_fh to transport layer iwlagn: remove references to priv from the transport layer iwlagn: remove unused parameters from hw_params iwlagn: iwl-dev.h doesn't include iwl-fh.h any more iwlagn: move Keep Warm to transport layer iwlagn: add missing includes iwlagn: all function iwl-io.c receive iwl_bus iwlagn: iwl-pci doesn't include iwl-dev any more iwlagn: iwl_tid_data moves to iwl-shared iwlagn: remove dereferences of priv from transport iwlagn: stop the device before freeing it iwlagn: upper layer stores iwl_rxon_context in skb's CB iwlagn: set tx_fifo for ampdu in transport layer iwlagn: upper layer uses slabs to allocate tx cmds iwlagn: move the mapping ac to queue / fifo to transport iwlagn: allocate resources for TX BA session in transport iwlagn: move the check_empty logic to the transport layer iwlagn: move the disable agg logic to transport layer iwlagn: cosmetics in iwl-trans.h iwlagn: move wait_for_tx_queue_empty to transport layer iwlagn: move check_stuck_queue to transport layer iwlagn: move the stop / wake queue logic to transport layer iwlagn: move tx queues to transport layer iwlagn: merge iwl_pci_down and iwl_pci_remove iwlagn: remove priv dereferences from the transport layer iwlagn: clean up of transport layer iwlagn: move traffic_log back to upper layer iwlagn: iwl-trans.c can't dereference iwl_priv any more iwlagn: fix compilation when debug flags is unset iwlagn: warn about buggy fw that doesn't set SEQ_RX_FRAME iwlagn: unmap cmd queue's tfds as BIDI iwlagn: free the Tx cmd when a non empty Tx queue is freed iwlagn: move iwl_stop / wake_queue to the upper layer iwlagn: use enum iwl_rxon_context_id instead of u8 iwlagn: document the bus layer API iwlagn: add documentation to the transport layer iwlagn: provide data after WARN_ON iwlagn: remove the callback in host commands iwlagn: simplify the iwl_device_cmd layout iwlagn: remove uneeded declaration iwlagn: pending frames musn't be incremented if agg is on iwlagn: remove warning in iwl_rx_handle iwlagn: sparse warning priv->temperature is signed iwlagn: set the sequence control from the transport layer iwlagn: update rate scaling with BA notifications iwlagn: use kcalloc when possible for array allocation iwlagn: kill hw_params.max_stations iwlagn: fix a race in the unmapping of the TFDs iwlagn: warn only once if AGG state is wrong iwlagn: move iwl_beacon_time_mask_XXX near to usage iwlagn: move iwl_enable_rfkill_int and kill iwl-helpers.h iwlagn: remove uneeded include to iwl-dev.h iwlagn: add missing include to iwl-agn-rs.h iwlagn: fix the race in the unmapping of the HCMD Eric Andersson (1): Input: add driver for Bosch Sensortec's BMA150 accelerometer Eric Benoit (1): USB: pl2303: add id for SMART device Eric Dumazet (67): ipv6: some RCU conversions ipv6: use RCU in inet6_csk_xmit() ipv6: avoid a dst_entry refcount change in ipv6_destopt_rcv() ip6tnl: avoid touching dst refcount in ip6_tnl_xmit2() net: fix potential neighbour race in dst_ifdown() benet: fix build error on 32bit arch neigh: reduce arp latency net: cleanup some rcu_dereference_raw watchdog: Make the kthreads NUMA affine sunrpc: use better NUMA affinities rps: support IPIP encapsulation net_sched: sfb: optimize enqueue on full queue ixgbevf: provide 64 bit statistics net: linkwatch: allow vlans to get carrier changes faster tcp: md5: remove one indirection level in tcp_md5sig_pool ip6_tunnel: add optional fwmark inherit tcp: ECN blackhole should not force quickack mode tcp: unalias tcp_skb_cb flags and ip_dsfield tcp: rename tcp_skb_cb flags af_unix: dont send SCM_CREDENTIALS by default rcu: Use kthread_create_on_node() rcu: Make rcu_assign_pointer() unconditionally insert a memory barrier [SCSI] fcoe: use kthread_create_on_node tcp: report ECN_SEEN in tcp_info net: more accurate skb truesize be2net: fix truesize errors bnx2: fix skb truesize underestimation e1000: fix skb truesize underestimation igb: fix skb truesize underestimation ixgbe: fix skb truesize underestimation e1000e: fix skb truesize underestimation sky2: fix skb truesize underestimation ftgmac100: fix skb truesize underestimation vmxnet3: fix skb truesize underestimation niu: fix skb truesize underestimation ftmac100: fix skb truesize underestimation macvlan: handle fragmented multicast frames l2tp: fix a potential skb leak in l2tp_xmit_skb() l2tp: give proper headroom in pppol2tp_xmit() pptp: fix skb leak in pptp_xmit() net: add skb frag size accessors pptp: pptp_rcv_core() misses pskb_may_pull() call tcp: use TCP_INIT_CWND in tcp_fixup_sndbuf() mlx4_en: fix skb truesize underestimation ip_gre: dont increase dev->needed_headroom on a live device tcp: use TCP_DEFAULT_INIT_RCVWND in tcp_fixup_rcvbuf() pktgen: remove ndelay() call igbvf: fix truesize underestimation myri10ge: fix truesize underestimation tcp: remove unused tcp_fin() parameters net: constify skbuff and Qdisc elements bnx2x: fix skb truesize underestimation virtio_net: fix truesize underestimation tcp: add const qualifiers where possible inet: add rfc 3168 extract in front of INET_ECN_encapsulate() tg3: fix tigon3_dma_hwbug_workaround() tcp: md5: dont write skb head in tcp_md5_hash_header() tcp: md5: add more const attributes ipv4: tcp: fix TOS value in ACK messages sent from TIME_WAIT net_sched: cls_flow: use skb_header_pointer() |PATCH net-next] tg3: add tx_dropped counter ehea: fix skb_frag_size typo ipv6: tcp: fix TCLASS value in ACK messages sent from TIME_WAIT vlan: allow nested vlan_do_receive() udp: fix a race in encap_rcv handling l2tp: fix race in l2tp_recv_dequeue() net: add missing bh_unlock_sock() calls Eric Gouriou (2): ext4: optimize ext4_ext_convert_to_initialized() ext4: optimize memmmove lengths in extent/index insertions Eric Miao (5): ARM: pxa: fix building error by palm27x_lcd_init() when FB_PXA not defined ARM: pxa/z2: fix building error of pxa27x_cpu_suspend() no longer available ARM: pxa: pxa95x/saarb depends on pxa3xx code ARM: pxa: make pxafb_smart_*() empty when not enabled ARM: mmp: rename SHEEVAD to GPLUGD Eric Sandeen (2): ext4: use ext4_reserve_inode_write in ext4_xattr_set_handle ext4: fix race in xattr block allocation path Eric W. Biederman (16): net: Move rcu_barrier from rollback_registered_many to netdev_run_todo. sysfs: Implement support for tagged files in sysfs. class: Implement support for class attrs in tagged sysfs directories. bonding: Use a per netns implementation of /sys/class/net/bonding_masters. sysfs: Remove support for tagged directories with untagged members. sysfs: Reject with a warning invalid uses of tagged directories. macvtap: Close a race between macvtap_open and macvtap_dellink. macvtap: Fix macvtap_open races in the zero copy enable code. macvtap: Don't leak unreceived packets when we delete a macvtap device. macvtap: Rewrite macvtap_newlink so the error handling works. macvtap: Fix the minor device number allocation bonding: Add a forgetten sysfs_attr_init on class_attr_bonding_masters rtnetlink: Add missing manual netlink notification in dev_change_net_namespaces sysfs: Remove support for tagged directories with untagged members (again) compat: sync compat_stats with statfs. sysfs: Make sysfs_rename safe with sysfs_dirents in rbtrees. Erik Andrén (5): [media] gspca-stv06xx: Simplify register writes by avoiding special data structures [media] gspca-stv06xx: Simplify stv_init struct and vv6410 bridge init [media] gspca-stv06xx: Fix sensor init indentation [media] gspca-stv06xx: Remove writes to read-only registers [media] gspca-stv06xx: Triple frame rate by decreasing the scan rate Eryu Guan (3): ext4: remove comments about extent mount option in ext4_new_inode() jbd/jbd2: validate sb->s_first in journal_get_superblock() jbd2: Unify log messages in jbd2 code Fabian Godehardt (1): USB: g_printer: fix bug in unregistration Fabio Baltieri (1): powerpc/83xx: Add shutdown request support to MCU handling on MPC8349 MITX Fabio Estevam (14): ARM: mx50: Select IMX_HAVE_PLATFORM_FEC as done on other i.MX devices ARM: mxs: Remove unused header file ARM: imx: pwm: Add support for MX53 ARM: imx: Add PATA resources for other i.MX processors ARM: imx: Add PATA clock support ARM: imx: Define functions for registering PATA ARM: mx53_loco: Add support for the accelerometer ARM: imx: Introduce generic function for displaying silicon revision ARM: mach-imx/mx25_3ds: Add FlexCAN support ARM: mx31pdk: Fix build by passing IMX_HAVE_PLATFORM_MXC_MMC ARM: mach-qong: Add watchdog support ARM: mach-mxs/mx28evk: Only register devices if their GPIO requests succeeded ARM: mxs: Consolidate mm-mx23.c and mm-mx28.c into a single file drivers/video/backlight/l4f00242t03.c: use gpio_request_one() to simplify error handling Fabrice Jouhaud (1): ext4: fix ext4 so it works without CONFIG_PROC_FS Faisal Latif (3): RDMA/nes: Fix terminate connection RDMA/nes: Print IP address for critcal errors RDMA/nes: Support for Packed And Unaligned fpdus Felipe Balbi (64): usb: gadget: introduce gadget_is_dwc3() usb: Introduce DesignWare USB3 DRD Driver MAINTAINERS: add a maintainer for DesignWare USB3 driver usb: dwc3: core: add missing @ for kerneldoc usb: dwc3: ep0: fix 'transfered' typo usb: dwc3: gadget: set request dma to invalid when unmapping usb: dwc3: gadget: improve command completion debug message usb: dwc3: core: add defines for XferNotReady event on Control EPs usb: dwc3: add a bounce buffer for control endpoints usb: dwc3: ep0: add handling for unaligned OUT transfers usb: dwc3: core: add flag for EP0 direction usb: dwc3: ep0: simplify EP0 state machine usb: dwc3: ep0: fix Get Status handling usb: dwc3: ep0: clear all EP0 flags usb: dwc3: drop EP0_STALL state usb: dwc3: core: add ep0_next_event field usb: dwc3: use ep0_next_event field usb: dwc3: omap: fix dev_dbg() calls usb: dwc3: omap: do not enable DMA Disable Clear IRQ usb: dwc3: omap: use the macro we already have usb: dwc3: omap: drop DEV_PM_OPS for now usb: dwc3: omap: distinguish between SW and HW modes usb: dwc3: add module.h to dwc3-omap.c and core.c usb: dwc3: omap: change IRQ name to dwc3-omap usb: dwc3: omap: fix IRQ handling usb: dwc3: Fix definition of DWC3_GCTL_U2RSTECN usb: dwc3: define ScaleDown macro helper usb: dwc3: gadget: fix GCTL programming usb: dwc3: gadget: drop the useless dma_sync_single* calls usb: dwc3: ep0: giveback requests on stall_and_restart usb: dwc3: ep0: introduce ep0_expect_in flag usb: dwc3: omap: set idle and standby modes usb: dwc3: gadget: improve debug on link state change usb: gadget: audio: actually support both speeds usb: gadget: audio: queue wLength-sized requests usb: musb: fix build breakage usb: gadget: udc-core: fix bug on soft_connect interface usb/host: introduce USB_ARCH_HAS_XHCI usb: dwc3: ep0: Make USB30CV happy with SetAddress usb: dwc3: ep0: ignore direction on 2-stage transfer usb: dwc3: ep0: fix debug message usb: dwc3: gadget: add support for Bursts usb: dwc3: gadget: implement streams support usb: dwc3: add struct dwc3_hwparams usb: dwc3: core: cache GHWPARAMS* registers usb: dwc3: gadget: allow clock gating to work usb: dwc3: convert structures into bitshifts usb: gadget: langwell: don't use the_controller when it's not needed usb: gadget: langwell: convert to new style usb: gadget: net2272: convert to new style usb: gadget: net2280: convert to new style usb: gadget: renesas: convert to new style usb: gadget: r8a66597: convert to new style usb: gadget: fix typo for default U1/U2 exit latencies usb: gadget: storage: add superspeed support usb: gadget: renesas_usbhs: drop dependency usb: gadget: renesas_usbhs: fix compile warning usb: gadget: mv_udc: fix compile warning mfd: Remove twl4030-irq trailing whitespaces mfd: Implement bus_lock/bus_sync_unlock twl4030-irq methods mfd: Drop the twl4030-irq kthread mfd: Drop twl4030-irq's mask_work mfd: Drop twl4030-irq's edge_work mfd: Set twl4030-irq irq nested flag Felix Fietkau (60): ath9k_hw: remove the tx power index offset ath9k_hw: fix calculated runtime tx power limit ath9k_hw: do not limit initial tx power to 20 dbm ath9k_hw: calculate a much better approximation of channel noise ath9k: use the new channel noise value for signal strength and survey info cfg80211: fix a crash in nl80211_send_station ath9k: avoid sending a-mpdu packets to sleeping stations b43: reload phy and bss settings after core restarts ath9k: remove a bogus WARN_ON ath9k: fix regression in sending aggregated packets ath9k: use u8 for the tx key index ath9k: clean up the aggregation tid queue ath9k: move the sequence number from ath_frame_info to ath_buf ath9k: move seqno allocation in the tx path to ath_tx_setup_buffer ath9k: defer ath_tx_setup_buffer setup to the first tx attempt during aggr ath9k_hw: do not apply the 2.4 ghz ack timeout workaround to cts mac80211: retry sending failed BAR frames later instead of tearing down aggr ath9k_hw: drop an unused column in AR5008-AR9002 initvals ath9k_hw: fix the last register write for ar5416 addac ath9k: fix checks for first subframe delimiter padding mac80211: make ieee80211_send_bar available for drivers ath9k: eliminate common->{rx,tx}_chainmask ath9k: move a few functions around ath9k: always call ath_reset from workqueue context ath9k: merge reset related functions ath9k: implement .get_antenna and .set_antenna ath9k: fix enabling interrupts after a hardware error interrupt ath9k: make beacon timer initialization more reliable ath9k: ensure that rx is not enabled during a reset ath9k: remove ATH_TX_XRETRY and BUF_XRETRY flags ath9k: reduce the number of functions that access the tx descriptor ath9k: move ath_buf_set_rate to remove a forward declaration ath9k: call ath9k_hw_set_desc_link for beacon descriptors ath9k_hw: do not recalculate the descriptor checksum in ar9003_hw_fill_txdesc ath9k_hw: add a new API for setting tx descriptors ath9k: use the new API for setting tx descriptors ath9k_hw: remove the old tx descriptor API ath9k: optimize ath9k_ps_restore ath9k: remove a redundant check in ath_tx_form_aggr ath9k: optimize ath_tx_rc_status usage ath9k: do not insert padding into tx buffers on AR9380+ mac80211: fix endian issues and comments for BAR failure handling ath9k: fix setting the IEEE80211_TX_CTL_CLEAR_PS_FILT flag ath9k: sync the dma buffer after changing the retry flag ath9k_hw: clean up hardware revision checks ath9k_hw: remove dead code in the eeprom ops ath9k_hw: fix setting the hardware diversity flag ath9k_hw: remove ar9100_hw_compute_pll_control ath9k: fix a regression in ath9k_ps_restore ath9k: indicate which queues are blocked when stopping tx fails ath9k: keep track of what's triggering hardware resets ath9k: improve PS filter clearing and retry counting for A-MPDU ath9k: fix retry counting / BAR handling during queue flush ath9k: disable unnecessary PHY error reporting ath9k_hw: make ath9k_hw_set_interrupts use ah->imask by default ath9k_hw: clean up tx power handling ath: remove ath_regulatory::current_rd_ext ath9k_hw: remove EEP_REG_1 ath9k_hw: fix a regression in key miss handling ath9k: only send FCS-fail packets to mac80211 if requested Felix Radensky (1): powerpc/8xxx: Fix interrupt handling in MPC8xxx GPIO driver Feng Tang (2): x86/mrst: Add platform data for Max3110 devices ALSA: pcm - remove the dead code from snd_pcm_open_file() Finn Thain (4): macmace, macsonic: cleanup [SCSI] mac_esp: remove redundant mutual exclusion m68k/mac: Fix compiler warning in via_read_time() m68k/mac: Fix mac_irq_pending() for PSC MACE and SCC Flavio Leitner (3): bonding: fix wrong port enabling in 802.3ad route: fix ICMP redirect validation TCP: remove TCP_DEBUG Florent AUDEBERT (1): [media] stb0899: Removed an extra byte sent at init on DiSEqC bus Florian Faber (1): drivers/w1/w1_int.c: multiple masters used same init_name Florian Fainelli (3): ath9k: add missing AR9340 in ath_mac_bb_names r6040: invoke phy_{start,stop} when appropriate r6040: bump version to 0.28 and date to 07Oct2011. Florian Tobias Schandinat (21): viafb: use display information in info not in var for panning viafb: improve pitch handling viafb: use more compact modesetting functions viafb: kill viafb_load_crtc_timing viafb: remove superfluous register unlocking/locking viafb: remove superfluous mode lookup viafb: simplify viafb_fill_crtc_timing viafb: remove 640x480-60 CRT special case viafb: add new funcions to select a single mode viafb: eliminate viafb_get_pixclock viafb: use information in var for modesetting viafb: seperate hardware initialization viafb: eliminate modetable dependancy of LCD modesetting viafb: get rid of the remaining modetable structure assumptions Merge commit 'v3.1-rc2' into HEAD Merge branch 'pan-fixes' of git://linuxtv.org/pinchartl/fbdev into fbdev-next Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-3.x into fbdev-next Merge branch 'sh-mobile-lcdc' of git://linuxtv.org/pinchartl/fbdev into fbdev-next Merge branch 'viafb-next' of git://github.com/schandinat/linux-2.6 into fbdev-next Merge commit 'v3.1-rc9' into fbdev-next Merge branch 'for-florian' of git://gitorious.org/linux-omap-dss2/linux into fbdev-next Florian Westphal (3): netfilter: nf_conntrack: fix event flooding in GRE protocol tracker netfilter: ipv6: fix afinfo->route refcnt leak on error netfilter: do not propagate nf_queue errors in nf_hook_slow Francois Romieu (4): dl2k: use standard #defines from mii.h. sunbmac: use standard #defines from mii.h. r8169: expand received packet length indication. r8169: jumbo fixes. Frank Arnold (1): x86: cache_info: Update calculation of AMD L3 cache indices Frank Blaschka (5): qeth: l3 ipv6 vlan not working on shared OSA chpid iucv: introduce loadable iucv interface af_iucv: use loadable iucv interface if_ether: add new Ethernet Protocol ID for af_iucv qeth: add support for af_iucv HiperSockets transport Frank Schaefer (1): [media] gspca - sn9c20x: Fix status LED device 0c45:62b3 Franky Lin (66): staging: brcm80211: move sdio related variables to dhd_sdio.c staging: brcm80211: move ioctl response wait code to dhd_sdio.c staging: brcm80211: remove private timeout functions in fullmac staging: brcm80211: move brcmf_mmc_suspend to sdio layer in fullmac staging: brcm80211: remove global wait queue head sdioh_spinwait_sleep staging: brcm80211: remove code for unsupported chip staging: brcm80211: get rid of sd debug message macro in fullmac staging: brcm80211: remove structure sdio_hc in brcmfmac staging: brcm80211: remove SDLX_MSG from brcmfmac staging: brcm80211: remove BRCMF_SD_* debug macros from brcmfmac staging: brcm80211: absorb brcmf_sdcard_attach into brcmf_sdio_probe staging: brcm80211: absorb brcmf_sdcard_detach into brcmf_sdio_remove staging: brcm80211: revert removal of atomic initialization staging: brcm80211: placed suspend flag in gInstance in brcmfmac staging: brcm80211: remove struct brcmf_sdioh_driver from brcmfmac staging: brcm80211: remove vendor and device id check from brcmfmac staging: brcm80211: remove struct brcmf_sdio_card from brcmfmac staging: brcm80211: remove dead code from brcmfmac staging: brcm80211: remove dead client interrupt code from brcmfmac staging: brcm80211: remove function pointer of interrupt isr in brcmfmac staging: brcm80211: remove iovar IOV_BLOCKSIZE in brcmfmac staging: brcm80211: remove struct sdioh_info from brcmfmac staging: brcm80211: remove global var gInstance from brcmfmac staging: brcm80211: remove wext traces in fullmac staging: brcm80211: absorb brcmf_sdioh_iovar_op into brcmf_sdcard_iovar_op staging: brcm80211: absorb brcmf_sdioh_interrupt_register into brcmf_sdcard_intr_reg staging: brcm80211: absorb brcmf_sdioh_interrupt_deregister into brcmf_sdcard_intr_dereg staging: brcm80211: absorb brcmf_sdioh_abort into brcmf_sdcard_abort staging: brcm80211: remove dead code from dhd_sdio.c staging: brcm80211: remove wrapper functions in bcmsdh_sdmmc.c staging: brcm80211: remove unused parameter from data interface in fullmac staging: brcm80211: remove dead SDTEST code from fullmac staging: brcm80211: remove unused func parameter in wl_cfg80211 of fullmac staging: brcm80211: void * cleanup in fullmac staging: brcm80211: fix checkpatch warning in fullmac staging: brcm80211: consolidate SHOW_EVENTS code under BCMDBG in fullmac staging: brcm80211: remove duplicate set sb window address function staging: brcm80211: remove function wrapper of getting sb window address staging: brcm80211: remove unused sdioh data mode code in fullmac staging: brcm80211: remove unused sdioh command type code in fullmac staging: brcm80211: remove static function declaration in bcmsdh_sdmmc staging: brcm80211: remove static function declaration in dhd_linux staging: brcm80211: stop using kthread for iscan status check in fullmac staging: brcm80211: remove static function declaration in wl_cfg80211 staging: brcm80211: remove static function declaration in dhd_sdio staging: brcm80211: remove SOFTAP code from fullmac staging: brcm80211: remove fullmac module_param sd_f2_blocksize staging: brcm80211: remove fullmac module_param brcmf_deferred_tx staging: brcm80211: remove fullmac module_param for packet filter feature staging: brcm80211: remove global variable brcmf_roam from fullmac staging: brcm80211: remove global variable brcmf_radio_up from fullmac staging: brcm80211: remove _brcmf_sysioc_thread in fullmac staging: brcm80211: remove fullmac module_param for ARP offload feature staging: brcm80211: remove event handler thread from fullmac staging: brcm80211: remove fullmac module_param brcmf_dongle_memsize staging: brcm80211: remove fullmac module_param brcmf_sdiod_drive_strength staging: brcm80211: remove fullmac module_param for watchdog staging: brcm80211: remove fullmac module_param brcmf_idletime staging: brcm80211: remove global variables for data frame boundary staging: brcm80211: clean up rtnl_lock in fullmac staging: brcm80211: remove fullmac module_param for intr/poll mode staging: brcm80211: stop using assigned thread priority in fullmac staging: brcm80211: remove threads_only code from fullmac staging: brcm80211: remove redundant bus register layer from fullmac staging: brcm80211: clean up struct brcmf_if in fullmac staging: brcm80211: remove brcmf_op_if from fullmac Fredrik Svensson (1): mach-ux500: remove pull-pinconfig and add SPI2 Fry, Donald H (2): iwlagn: fix modinfo display for 135 ucode. iwlagn: simplify chain_noise_num_beacons indirection Gao feng (3): netconsole: enable netconsole can make net_device refcnt incorrent ipv4: avoid useless call of the function check_peer_pmtu ipv6: fix route error binding peer in func icmp6_dst_alloc Geert Uytterhoeven (4): keyboard: Do not include i825xx: Fix incorrect dependency for BVME6000_NET i2c: I2C_ELEKTOR should depend on HAS_IOPORT net/ethernet: Move mac89x0.c from apple to cirrus Gerlando Falauto (1): CIFS: fix automount for DFS shares Gerrit Renker (5): dccp: support for the exchange of NN options in established state 1/2 dccp: support for exchanging of NN options in established state 2/2 dccp ccid-2: use feature-negotiation to report Ack Ratio changes udplite: fast-path computation of checksum coverage ipv4: compat_ioctl is local to af_inet.c, make it static Gery Kahn (1): wl12xx: fixes for hw_pg_ver and chip id reporting Geunsik Lim (1): ftrace: Fix README to state tracing_on to start/stop tracing Giridhar Malavali (2): [SCSI] qla2xxx: Add support for ISP82xx to capture dump (minidump) on failure. [SCSI] qla2xxx: Issue mailbox command only when firmware hung bit is reset for ISP82xx. Giridhar Maruthy (1): ARM: EXYNOS4: Add PWM backlight support on ORIGEN Girish K S (3): mmc: core: eMMC 4.5 Power Class Selection Feature mmc: replace printk with appropriate display macro mmc: core: Add Power Off Notify Feature eMMC 4.5 Giuseppe CAVALLARO (18): stmmac: remove the STBus bridge setting from the GMAC code (v3) stmmac: remove the mmc code (v3) stmmac: add MMC support exported via ethtool (v3) stmmac: export DMA TX/RX rings via debugfs (v3) stmmac: rework the code to get the Synopsys ID (v3) stmmac: add HW DMA feature register (v3) stmmac: update the driver version (Aug_2011) (v3) stmmac: update the doc with new info about the driver's debug (v3) net/phy: add IC+ IP101A and support APS. net/phy: extra delay only for RGMII interfaces for IC+ IP 1001 stmmac: protect tx process with lock (V4) stmmac: update the driver version and doc (V4) stmmac: allow mtu bigger than 1500 in case of normal desc (V4) stmmac: allow mmc usage only if feature actually available (V4) stmmac: add CHAINED descriptor mode support (V4) stmmac: limit max_mtu in case of 4KiB and use __netdev_alloc_skb (V2) stmmac: fix a bug while checking the HW cap reg (v2) stmmac: update normal descriptor structure (v2) Glauber Costa (1): lib/percpu_counter.c: enclose hotplug only variables in hotplug ifdef Gleb Natapov (1): perf, intel: Use GO/HO bits in perf-ctr Grant Grundler (5): STAGING:iio:light: fix ISL29018 init to handle brownout NET: fix phy init for AX88772 USB ethernet NET: fix phy init for Asix AX88178 USB (GigE) NET: white space/coding style cleanup of asix driver NET: asix: fix ethtool -e for AX88178 USB dongle Grant Likely (11): devicetree: Add a registry of vendor prefixes devicetree: Document Qualcomm and Atmel prefixes Merge branch 'for-grant' of git://git.jdl.com/software/linux-3.0 into devicetree/next devicetree: fix build error on drivers/tty/serial/altera_jtaguart.c Merge commit 'v3.1' into spi/next Merge commit 'v3.1' into devicetree/next Devicetree: Expand on ARM Primecell binding documentation drivercore: Add helper macro for platform_driver boilerplate mmc: sdhci-tegra: Add Device Tree probing support gpio: Fix ARM versatile-express build failure Merge branch 'for-grant' of git://sources.calxeda.com/kernel/linux into devicetree/merge Grazvydas Ignotas (1): OMAP: omap_device: make latency autoadjust messages debug Greg Dietsche (2): iwlwifi: iwl-agn-rs.c: remove old comment iwlagn: iwl-agn-rs: remove unnecessary null check for sta and lq_sta Greg Farnum (1): ceph: let the set_layout ioctl set single traits Greg Harm (1): ext4: Don't normalize an falloc request if it can fit in 1 extent. Greg Kroah-Hartman (38): Merge git://git.kernel.org/pub/scm/linux/kernel/git/lwfinger/r8192E into staging-next staging: rts5139: add vmalloc.h to some files to fix the build. staging: iio: adis16220_core.c: add module.h Staging: remove drivers/char/scc.h as it should have gone a while ago Revert "tty: of_serial: add support for the DesignWare 8250" Revert "tty: serial8250: add helpers for the DesignWare 8250" Merge git://git.kernel.org/pub/scm/linux/kernel/git/lwfinger/r8192E into staging-next Staging: hv: add driver_data to hv_vmbus_device_id Staging: hv: file2alias: fix up alias creation logic for hv_vmbus_device_id Staging: hv: create VMBUS_DEVICE macro and use it. Staging: hv: fix up driver registering mess Staging: hv: hv_mouse: remove deviceinfo_callback function Staging: hv: hv_mouse: remove inputreport_callback function Staging: hv: hv_mouse: remove a forward declaration Staging: hv: hv_mouse: fix up remove() function Merge git://git.kernel.org/pub/scm/linux/kernel/git/lwfinger/r8192E into staging-next Merge 3.1-rc4 into staging-next Merge 3.1-rc4 into usb-next Merge branch 'for-next' of git://gitorious.org/usb/usb into usb-next MAINTAINERS: the staging tree dropped the "-2.6" suffix Staging: hv: move hyperv code out of staging directory Staging: hv: remove unneeded asm include file in hyperv.h hv: rename prep_negotiate_resp() to vmbus_prep_negotiate_resp() hv: remove a bunch of unused debug macros from hyperv.h Staging: hv: storvsc: remove last usage of DPRINT_WARN Staging: hv: remove last user of DPRINT() macro Staging: hv: remove vmbus_loglevel as it is not used at all anymore hv: remove unused LOWORD and HIWORD macros from hyperv.h hv: hyperv.h: remove unused module macros hv: hyperv.h: remove unneeded forward declarations of structures hv: remove free_channel() from hyperv.h hv: remove struct hv_device_info from hyperv.h Staging: wlags49_h2: Makefile: remove unneeded stuff Staging: wlags49_h25: Makefile: remove unneeded stuff Staging: rtl8192u: ieee80211: Makefile: remove unneeded stuff Revert "memory hotplug: Correct page reservation checking" Revert "TTY: call tty_driver_lookup_tty unconditionally" Merge branch 'staging-next' into Linux 3.1 Greg Lee (1): watchdog: Add WDIOC_GETTIMELEFT ioctl support to w83627 watchdog driver Greg Rose (11): ixgbevf: Check if EOP has changed before using it pci: Add flag indicating device has been assigned by KVM ixgbe: Reconfigure SR-IOV Init ixgbevf: Fix broken trunk vlan ixgbe: Add protection from VF invalid target DMA if_link: Add additional parameter to IFLA_VF_INFO for spoof checking ixgbe: Add new netdev op to turn spoof checking on or off per VF igbvf: Fix trunk vlan igb: Check if subordinate VFs are assigned to virtual machines ixgbe: Fix compiler warnings ixgbevf: Update release version Greg Ungerer (11): m68k: fix memcpy to unmatched/unaligned source and dest on 68000 m68k: reorganize Kconfig options to improve mmu/non-mmu selections m68k: merge mmu and non-mmu arch Makefiles m68k: merge the mmu and non-mmu kernel/Makefiles m68k: merge mmu and non-mmu include/asm/entry.h files m68k: move hardware vector setting from traps.c to its own file m68k: merge the mmu and non-mmu traps.c files m68knommu: use generic section names in setup code m68knommu: use generic section names in mm/init code m68knommu: remove extern declarations of memory_start/memory_end from mm/init m68knommu: create common externs for _ram* vars Guennadi Liakhovetski (93): dmatest: make dmatest threads freezable serial: sh-sci: don't filter on DMA device, use only channel ID dmaengine: shdma: protect against the IRQ handler dma: shdma: transfer based runtime PM mmc: sh_mmcif: simplify platform data [media] V4L: sh_mobile_ceu_camera: output image sizes must be a multiple of 4 [media] V4L: sh_mobile_ceu_camera: don't try to improve client scaling, if perfect [media] V4L: sh_mobile_ceu_camera: fix field addresses in interleaved mode [media] V4L: sh_mobile_ceu_camera: remove duplicated code [media] V4L: imx074: support the new mbus-config subdev ops [media] V4L: soc-camera: add helper functions for new bus configuration type [media] V4L: mt9m001: support the new mbus-config subdev ops [media] V4L: mt9m111: support the new mbus-config subdev ops [media] V4L: mt9t031: support the new mbus-config subdev ops [media] V4L: mt9t112: support the new mbus-config subdev ops [media] V4L: mt9v022: support the new mbus-config subdev ops [media] V4L: ov2640: support the new mbus-config subdev ops [media] V4L: ov5642: support the new mbus-config subdev ops [media] V4L: ov6650: support the new mbus-config subdev ops [media] V4L: ov772x: rename macros to not pollute the global namespace [media] V4L: ov772x: support the new mbus-config subdev ops [media] V4L: ov9640: support the new mbus-config subdev ops [media] V4L: ov9740: support the new mbus-config subdev ops [media] V4L: rj54n1cb0c: support the new mbus-config subdev ops [media] ARM: ap4evb: switch imx074 configuration to default number of lanes [media] V4L: sh_mobile_csi2: verify client compatibility [media] V4L: sh_mobile_csi2: support the new mbus-config subdev ops [media] V4L: tw9910: remove a not really implemented cropping support [media] V4L: tw9910: support the new mbus-config subdev ops [media] V4L: soc_camera_platform: support the new mbus-config subdev ops [media] V4L: soc-camera: compatible bus-width flags [media] ARM: mach-shmobile: convert mackerel to mediabus flags [media] sh: convert ap325rxa to mediabus flags [media] ARM: PXA: use gpio_set_value_cansleep() on pcm990 [media] V4L: atmel-isi: convert to the new mbus-config subdev operations [media] V4L: mx1_camera: convert to the new mbus-config subdev operations [media] V4L: mx2_camera: convert to the new mbus-config subdev operations [media] V4L: ov2640: remove undefined struct [media] V4L: mx3_camera: convert to the new mbus-config subdev operations [media] V4L: mt9m001, mt9v022: add a clarifying comment [media] V4L: omap1_camera: convert to the new mbus-config subdev operations [media] V4L: pxa_camera: convert to the new mbus-config subdev operations [media] V4L: sh_mobile_ceu_camera: convert to the new mbus-config subdev operations [media] V4L: soc-camera: camera client operations no longer compulsory [media] V4L: mt9m001: remove superfluous soc-camera client operations [media] V4L: mt9m111: remove superfluous soc-camera client operations [media] V4L: imx074: remove superfluous soc-camera client operations [media] V4L: mt9t031: remove superfluous soc-camera client operations [media] V4L: mt9t112: remove superfluous soc-camera client operations [media] V4L: mt9v022: remove superfluous soc-camera client operations [media] V4L: ov2640: remove superfluous soc-camera client operations [media] V4L: ov5642: remove superfluous soc-camera client operations [media] V4L: ov6650: remove superfluous soc-camera client operations [media] sh: ap3rxa: remove redundant soc-camera platform data fields [media] sh: migor: remove unused ov772x buswidth flag [media] V4L: ov772x: remove superfluous soc-camera client operations [media] V4L: ov9640: remove superfluous soc-camera client operations [media] V4L: ov9740: remove superfluous soc-camera client operations [media] V4L: rj54n1cb0c: remove superfluous soc-camera client operations [media] V4L: sh_mobile_csi2: remove superfluous soc-camera client operations [media] ARM: mach-shmobile: mackerel doesn't need legacy SOCAM_* flags anymore [media] V4L: soc_camera_platform: remove superfluous soc-camera client operations [media] V4L: tw9910: remove superfluous soc-camera client operations [media] V4L: soc-camera: remove soc-camera client bus-param operations and supporting code [media] V4L: mt9t112: fix broken cropping and scaling [media] V4L: sh-mobile-ceu-camera: fix mixed CSI2 & parallel camera case [media] V4L: omap1-camera: fix Oops with NULL platform data [media] V4L: add a new videobuf2 buffer state VB2_BUF_STATE_PREPARED [media] V4L: add two new ioctl()s for multi-size videobuffer management [media] V4L: videobuf2: update buffer state on VIDIOC_QBUF [media] V4L: document the new VIDIOC_CREATE_BUFS and VIDIOC_PREPARE_BUF ioctl()s [media] V4L: vb2: prepare to support multi-size buffers [media] V4L: vb2: add support for buffers of different sizes on a single queue [media] dmaengine: ipu-idmac: add support for the DMA_PAUSE control [media] V4L: sh-mobile-ceu-camera: prepare to support multi-size buffers [media] V4L: mx3-camera: prepare to support multi-size buffers [media] V4L: soc-camera: add 2 new ioctl() handlers [media] V4L: sh_mobile_ceu_camera: the host shall configure the pipeline [media] V4L: sh_mobile_csi2: do not guess the client, the host tells us [media] V4L: soc-camera: split a function into two [media] V4L: soc_camera_platform: do not leave dangling invalid pointers [media] V4L: soc-camera: call subdevice .s_power() method, when powering up or down [media] V4L: docbook documentation for struct v4l2_create_buffers [media] V4L: soc-camera: start removing struct soc_camera_device from client drivers [media] V4L: mt9m001, mt9v022: use internally cached pixel code [media] V4L: sh_mobile_csi2: fix unbalanced pm_runtime_put() [media] V4L: dynamically allocate video_device nodes in subdevices [media] V4L: add .g_std() core V4L2 subdevice operation [media] V4L: soc-camera: make (almost) all client drivers re-usable outside of the framework [media] V4L: replace soc-camera specific soc_mediabus.h with v4l2-mediabus.h [media] omap3isp: ccdc: remove redundant operation ARM: mach-shmobile: ag5evm needs CONFIG_I2C PM / QoS: Remove redundant check Guenter Roeck (14): hwmon: (pmbus) Add comments explaining internal driver API return values hwmon: (pmbus) Don't return errors from driver remove functions hwmon: (pmbus/adm1275) Add support for second current limit hwmon: (pmbus/adm1275) Add support for ADM1276 hwmon: (pmbus) Provide more documentation hwmon: (pmbus) Replace EINVAL return codes with more appropriate errors hwmon: (pmbus) Always call _pmbus_read_byte in core driver hwmon: (pmbus) Add support for Intersil power management chips hwmon: (pmbus) Add support for TEMP2 peak attributes hwmon: (pmbus/ltc2978) Explicit driver for LTC2978 hwmon: (pmbus/ltc2978) Add support for LTC3880 to LTC2978 driver hwmon: (pmbus) Add support for Lineage Power DC-DC converters hwmon: (pmbus_core) Simplify sign extensions hwmon: (w83627ehf) Fix broken driver init Guy Eilam (3): wl12xx: use 2 spare TX blocks for GEM cipher mac80211: refactor sta_info_insert_rcu to 3 main stages mac80211: fix race condition between assoc_done and first EAP packet Guy Martin (1): [media] stv090x: set status bits when there is no lock Gökçen Eraslan (1): HID: Add device IDs for Macbook Pro 8 keyboards H Hartley Sweeten (22): staging: dt3155v4l: Remove printk noise staging: dt3155v4l: pci_iomap returns a void __iomem * not a void * staging: dt3155v4l: remove irq_handler from struct dt3155_priv spi: spi-dw: fix all sparse warnings crypto: aes-x86 - quiet sparse noise about symbol not declared exofs/ore.c: local functions should be static exofs/super.c: local functions should be static ext3/balloc.c: local functions should be static regulator: remove duplicate REG_CTRL2 defines in tps65023 PM / VT: Cleanup #if defined uglyness and fix compile error ext4: functions should not be declared extern ext4: add __user decoration to calls of copy_{from,to}_user() ext4: quiet sparse noise about plain integer as NULL pointer nfs/super.c: local functions should be static mm/memblock.c: quiet sparse noise mm/thrash.c: quiet sparse noise mm/mempolicy.c: quiet sparse noise mm/huge_memory.c: quiet sparse noise lib/bitmap.c: quiet sparse noise about address space mm/page_cgroup.c: quiet sparse noise ceph/mds_client.c: quiet sparse noise ceph/super.c: quiet sparse noise H. Peter Anvin (5): random: Add support for architectural random hooks x86, random: Architectural inlines to get random integers with RDRAND x86, random: Verify RDRAND functionality and allow it to be disabled Merge commit 'v3.0' into x86/cpu x86, vsyscall: Add missing to arch/x86/mm/fault.c Haiyang Zhang (11): staging: hv: remove unnecessary includes in netvsc staging: hv: add newline to log messages in netvsc staging: hv: convert dev_ to netdev_ in netvsc staging: hv: fix a kernel warning in netvsc_linkstatus_callback() staging: hv: re-order the code in netvsc_probe() staging: hv: fix counting of #outstanding-sends in failed sends staging: hv: fix counting of available buffer slots when send fails staging: hv: fix the return status of netvsc_start_xmit() staging: hv: fix the page buffer when rndis data go across page boundary staging: hv: fix some typos in netvsc.c staging: hv: remove the carrier status check from netvsc_open() Hakan Kvist (1): USB: ftdi_sio: add PID for Sony Ericsson Urban Hamo (1): gpio: fix build error in include/asm-generic/gpio.h Hannes Reinecke (7): [SCSI] scsi_dh_alua: Evaluate TPGS setting from inquiry data [SCSI] scsi_dh: Fixup kernel-doc comments [SCSI] scsi_dh: Implement match callback function [SCSI] scsi_dh_alua: always update TPGS status on activate [SCSI] scsi_dh: Check for sdev state in store_dh_state() [SCSI] scsi_dh_alua: Fix Erroneous TPG ID check [SCSI] scsi_dh_alua: Decrease retry interval Hans J. Koch (1): uio: uio_pci_generic: Remove useless spin_lock Hans Petter Selasky (2): musb_gadget: Fix for spurious interrupts on endpoint zero. [media] Increase a timeout, so that bad scheduling does not accidentially cause a timeout Hans Schillstrom (1): IPVS netns shutdown/startup dead-lock Hans Verkuil (38): [media] radio-si4713.c: fix compiler warning [media] mt20xx.c: fix compiler warnings [media] wl128x: fix compiler warning + wrong write() return [media] saa7146: fix compiler warning [media] ddbridge: fix compiler warnings [media] mxl5005s: fix compiler warning [media] af9005-fe: fix compiler warning [media] tvaudio: fix compiler warnings [media] az6027: fix compiler warnings [media] mantis: fix compiler warnings [media] drxd_hard: fix compiler warnings [media] vpx3220, bt819: fix compiler warnings [media] si470x: fix compile warning [media] dvb_frontend: fix compile warning [media] vivi: fill in colorspace [media] ivtv: fill in service_set [media] v4l2-ioctl: more -ENOTTY fixes [media] videodev2.h: add V4L2_CTRL_FLAG_VOLATILE [media] v4l2-ctrls: replace is_volatile with V4L2_CTRL_FLAG_VOLATILE [media] v4l2-ctrls: implement new volatile autocluster scheme [media] v4l2-controls.txt: update auto cluster documentation [media] pwc: switch to the new auto-cluster volatile handling [media] vivi: add support for VIDIOC_LOG_STATUS [media] pwc: add support for VIDIOC_LOG_STATUS [media] saa7115: use the new auto cluster support [media] soc_camera: add control handler support [media] sh_mobile_ceu_camera: implement the control handler [media] ov9640: convert to the control framework [media] ov772x: convert to the control framework [media] rj54n1cb0c: convert to the control framework [media] mt9v022: convert to the control framework [media] ov2640: convert to the control framework [media] ov6650: convert to the control framework [media] ov9740: convert to the control framework [media] mt9m001: convert to the control framework [media] mt9m111: convert to the control framework [media] mt9t031: convert to the control framework [media] soc_camera: remove the now obsolete struct soc_camera_ops Hans de Goede (3): hwmon/f71882fg: Make all fan/pwm attr tables 2 dimensional hwmon/f71882fg: Add a f71882fg_create_fan_sysfs_files helper function hwmon/f71882fg: Make the decision wether to register fan attr. per fan Harish Zunjarrao (5): [SCSI] qla4xxx: Code cleanup for read/update flash using BSG [SCSI] qla4xxx: Add get ACB state support using BSG [SCSI] qla4xxx: Add read/update NVRAM support for 40xx adapters using BSG [SCSI] qla4xxx: Added restore factory defaults support using BSG [SCSI] qla4xxx: Added Get ACB support using BSG Harro Haan (1): USB: fix ehci alignment error Harry Wei (2): debugfs: Fix a comment mistake remove the messy code file Documentation/zh_CN/SubmitChecklist Hartley Sweeten (1): ep93xx: add support Vision EP9307 SoM Harvey Yang (2): Input: tc3589x-keypad - fix section mismatch warning i2c/scx200_acb: Fix section mismatch warning in scx200_pci_drv Hatim Ali (2): [media] s5p-tv: Add PM_RUNTIME dependency ARM: EXYNOS4: Add TVOUT support for SMDKV310 Hauke Mehrtens (12): bcma: move parsing of EEPROM into own function. bcma: move initializing of struct bcma_bus to own function. bcma: add functions to scan cores needed on SoCs bcma: add SOC bus bcma: add mips driver bcma: add serial console support bcma: get CPU clock bcm47xx: prepare to support different buses bcm47xx: make it possible to build bcm47xx without ssb. bcm47xx: add support for bcma bus bcm47xx: fix irq assignment for new SoCs. b43: add core rev 17 used on bcma SoC. Hayes Wang (2): r8169: define the early size for 8111evl r8169: support new chips of RTL8111F Hector Martin (1): powerpc/ps3: Add gelic udbg driver Hefty, Sean (4): RDMA/cma: Fix crash in cma_req_handler RDMA/cma: Check for NULL conn_param in rdma_accept IB/mad: Verify mgmt class in received MADs RDMA/ucm: Removed checks for unsigned value < 0 Heiko Carstens (8): nohz: Remove "Switched to NOHz mode" debugging messages seeq: fix compile breakage on s390 sysfs: add unsigned long cast to prevent compile warning time, s390: Get rid of compile warning [S390] zcore: add missing module.h include [S390] irqstats: split IPI interrupt accounting s390: add missing module.h/export.h includes pps gpio client: add missing dependency Heiko St?bner (2): ARM: S3C2443: Move clk_arm and clk_armdiv to common code ARM: S3C2416: Add comment describing the armdiv/armclk Heiko Stuebner (18): ARM: S3C24XX: Remove hw_addr from s3c24xx dma channel declarations ARM: S3C24XX: Remove s3c24xx_dma_addr definition ARM: S3C2443: Move i2s clock definitions to common code ARM: S3C2443: Define constant for HSSPI pclk ARM: S3C2416: Add HSSPI clock sourced from EPLL ARM: S3C2443: Add hsspi-clock from pclk and rename S3C2443 hsspi sclk ARM: SAMSUNG: Add adc registers for S3C2443/S3C2416 ARM: SAMSUNG: Fix mux bit modification in s3c_adc_select ARM: SAMSUNG: Allow overriding of adc device name for S3C24XX ARM: SAMSUNG: Add support s3c2443-adc for S3C2443 ARM: SAMSUNG: Add support s3c2416-adc for S3C2416/S3C2450 ARM: S3C2416: Add armdiv_mask constant ARM: S3C24XX: Add infrastructure to transmit armdiv to common code ARM: S3C2443: Add get_rate operation for clk_armdiv ARM: S3C2443: handle unset armdiv values gracefully ARM: S3C2443: Accommodate cpufreq frequency scheme in armdiv ARM: S3C24XX: use clk_get_rate to init fclk in common_setup_clocks ARM: S3C24XX: Add devname for hsmmc1 pclk Heiko Stübner (6): s3c-hsudc: Fix possible nullpointer dereference during probe s3c-hsudc: Add basic otg transceiver handling s3c-hsudc: implement vbus_draw hook regulator: Add driver for gpio-controlled regulators regulator: gpio-regulator add dependency on GENERIC_GPIO regulator: Fix possible nullpointer dereference in regulator_enable() Helmut Schaa (25): mac80211: Stop TX BA session if buf_size is zero mac80211: Don't use a buf_size=0 in ADDBA requests mac80211: Fill in skb->protocol information for injected frames mac80211: Don't use EAPOL frames for rate sampling rt2x00: Fix PCI interrupt processing race on SMP systems wireless: Introduce defines for BAR TID_INFO & MULTI_TID fields mac80211: Tear down BA session on BAR tx failure rt2x00: Minor optimizazion in txdone path rt2x00: Add LED_CFG register description rt2x00: Remove incorrect led blink rt2x00: Update some TX descriptor rt2x00: Avoid unnecessary uncached rt2x00: Move bssidx calculation into its own function rt2x00: Introduce sta_add/remove callbacks rt2x00: Add WCID to crypto struct rt2x00: Add WCID to HT TX descriptor rt2x00: Make use of sta_add/remove callbacks in rt2800 rt2x00: Forbid aggregation for STAs not programmed into the hw rt2x00: Use the available helper functions to initialize the WCID table mac80211: Allow noack flag overwrite for injected frames mac80211: Update injection documentation mac80211: Build TX radiotap header dynamically mac80211: Populate radiotap header with MCS info for TX frames nl80211: Add sta_flags to the station info mac80211: Provide station flags to cfg80211 Hendrik Brueckner (1): [S390] defconfig: switch on CONFIG_DEVTMPFS Henrik Rydberg (1): Revert "HID: multitouch: decide if hid-multitouch needs to handle mt devices" Henry Ptasinski (6): staging: brcm80211: fix for 'remove unnecessary braces' checkpatch warning staging: brcm80211: fix off-by-one error in swap functions staging: brcm80211: Remove swaps in R_REG and W_REG macros staging: brcm80211: Fix handling of firmware and inits on big-endian platforms staging: brcm80211: only enable brcmsmac if bcma is not set staging: brcm80211: use min_t() instead of min() Herbert Xu (5): crypto: sha - Fix build error due to crypto_sha1_update crypto: cryptd - Use subsys_initcall to prevent races with aesni crypto: user - Initialise match in crypto_alg_match crypto: user - Add dependency on NET crypto: user - Depend on NET instead of selecting it Herton Ronaldo Krzesinski (1): fb: avoid possible deadlock caused by fb_set_suspend Hidetoshi Seto (1): x86, mce: Do not call del_timer_sync() in IRQ context Hillf Danton (7): sched: Remove noop in next_prio() sched: Remove noop in lowest_flag_domain() sched, rt: Fix rq->rt.pushable_tasks bug in push_rt_task() sched: Remove resetting exec_start in put_prev_task_rt() MIPS: XLR, XLS: Add comment for smp setup mm/huge_memory: fix copying user highpage mm/huge_memory: fix typo when updating mmu cache Holger Brunck (1): powerpc/82xx: updates for mgcoge Hong Xu (1): ASoC: WM8904: Set `invert' bit for Capture Switch Hongjun Chen (1): powerpc/cpm: Clear muram before it is in use. Huang Shijie (3): mtd: add helper functions library and header files for GPMI NAND driver mtd: add GPMI-NAND driver in the config and Makefile mtd: add the common code for GPMI-NAND controller driver Huang Ying (5): net, rds, Replace xlist in net/rds/xlist.h with llist llist: Make some llist functions inline llist: Move cpu_relax() to after the cmpxchg() llist: Return whether list is empty before adding in llist_add() irq_work: Use llist in the struct irq_work logic Hugh Dickins (3): mm: fix race between mremap and removing migration entry radix_tree: clean away saw_unset_tag leftovers mm: munlock use mapcount to avoid terrible overhead Hui Wang (3): serial/imx: support to handle break character ARM i.MX avic: convert to use generic irq chip Input: imx_keypad - add pm suspend and resume support Ian Armstrong (1): [media] ivtv: Fix radio support Ian Campbell (76): net: add APIs for manipulating skb page fragments. net: convert core to skb paged frag APIs net: ipv4: convert to SKB frag APIs net: ipv6: convert to SKB frag APIs net: xfrm: convert to SKB frag APIs atm: convert to SKB paged frag API. IB: amso1100: convert to SKB paged frag API. IB: nes: convert to SKB paged frag API. IPoIB: convert to SKB paged frag API. tg3: convert to SKB paged frag API. bnx2: convert to SKB paged frag API. bnx2x: convert to SKB paged frag API. bnx2fc: convert to SKB paged frag API. fcoe: convert to SKB paged frag API. 3c59x: convert to SKB paged frag API. 8139cp: convert to SKB paged frag API. acenic: convert to SKB paged frag API. atl1c: convert to SKB paged frag API. atl1e: convert to SKB paged frag API. atlx: convert to SKB paged frag API. benet: convert to SKB paged frag API. bna: convert to SKB paged frag API. cassini: convert to SKB paged frag API. intel: convert to SKB paged frag API. enic: convert to SKB paged frag API. forcedeth: convert to SKB paged frag API. gianfar: convert to SKB paged frag API. greth: convert to SKB paged frag API. ibmveth: convert to SKB paged frag API. jme: convert to SKB paged frag API. ksz884x: convert to SKB paged frag API. macvtap: convert to SKB paged frag API. mv643xx: convert to SKB paged frag API. netxen: convert to SKB paged frag API. niu: convert to SKB paged frag API. ns83820: convert to SKB paged frag API. pasemi: convert to SKB paged frag API. qeth: convert to SKB paged frag API. qla3xxx: convert to SKB paged frag API. qlcnic: convert to SKB paged frag API. qlge: convert to SKB paged frag API. r8169: convert to SKB paged frag API. s2io: convert to SKB paged frag API. sfc: convert to SKB paged frag API. skge: convert to SKB paged frag API. sky2: convert to SKB paged frag API. starfire: convert to SKB paged frag API. stmmac: convert to SKB paged frag API. sungem: convert to SKB paged frag API. sunhme: convert to SKB paged frag API. tehuti: convert to SKB paged frag API. tsi108: convert to SKB paged frag API. typhoon: convert to SKB paged frag API. via-velocity: convert to SKB paged frag API. virtionet: convert to SKB paged frag API. vmxnet3: convert to SKB paged frag API. vxge: convert to SKB paged frag API. xen: netback: convert to SKB paged frag API. xen: netfront: convert to SKB paged frag API. et131x: convert to SKB paged frag API. hv: netvsc: convert to SKB paged frag API. myri10ge: convert to SKB paged frag API. cxgb3: convert to SKB paged frag API. chelsio: convert to SKB paged frag API. net: use DMA_x_DEVICE and dma_mapping_error with skb_frag_dma_map ehea: convert to SKB paged frag API emac: convert to SKB paged frag API. ll_temac: convert to SKB paged frag API. genirq: Add IRQF_RESUME_EARLY and resume such IRQs earlier net: do not take an additional reference in skb_frag_set_page mm: add a "struct page_frag" type containing a page, offset and length mlx4: convert to SKB paged frag API. cxgb4: convert to SKB paged frag API. cxgb4vf: convert to SKB paged frag API. cxgbi: convert to SKB paged frag API. net: add opaque struct around skb frag page Ian Munsie (1): tags, powerpc: Update tags.sh to support _GLOBAL symbols Ido Yariv (5): ARM: davinci: DA850: Add MMC/SD1 pinmux configuration ARM: davinci: DA850: Add GPIO pinmux configuration for wl1271 mmc: davinci: Add support for set_power callback ARM: davinci: AM18x: Add wl1271/wlan support ARM: davinci: Explicitly set channel controllers' default queues Igor M. Liplianin (4): [media] cx23885: fix type error [media] altera-stapl: it is time to move out from staging [media] dvb: Add support for pctv452e [media] pctv452e: Remove bogus code Igor Mammedov (1): memcg: do not expose uninitialized mem_cgroup_per_node to world Ike Panhc (7): MAINTAINERS: add new entry for ideapad-laptop ideapad: define vpc commands ideapad: change parameter of ideapad_sync_rfk_state ideapad: add event for Novo key ideapad: add debugfs support ideapad: remove sysfs node for cfg MAINTAINERS: add new entry for ideapad-laptop Ilan Elias (7): NFC: Add dev_up and dev_down control operations NFC: move nfc.h from include/net to include/net/nfc NFC: basic NCI protocol implementation NFC: driver for TI shared transport NFC: improve readability of an 'if' in nci core.c NFC: implicitly deactivate in nci_start_poll NFC: protect nci_data_exchange transactions Ilija Hadzic (11): drm/radeon: allow pcie gen2 speed on NI drm/radeon: allow pcie gen2 speed on Cayman drm/radeon/kms: simplify evergreen blit code drm/radeon/kms: demystify evergreen blit code drm/radeon/kms: demystify r600 blit code drm/radeon/kms: cleanup benchmark code drm/radeon/kms: add more elaborate benchmarks drm/radeon/kms: cleanup r600 blit code drm/radeon/kms: rename a variable for consistency drm/radeon/kms: blit code commoning drm/radeon/kms: use defined constants for crtc/hpd count instead of hard-coded value 6 Ilya Dryomov (6): Btrfs: pass the correct root to lookup_free_space_inode() Btrfs: fix a bug when opening seed devices Btrfs: close all bdevs on mount failure Btrfs: stop leaking btrfs_bios on readahead Btrfs: rename btrfs_bio multi -> bbio for consistency Btrfs: fix a potential btrfs_bio leak on scrub fixups Ilya Petrov (1): staging: nvec: add LED support Inderpal Singh (1): ARM: EXYNOS4: Configure MAX8997 PMIC for ORIGEN Ingo Molnar (21): Merge branch 'perf/urgent' into perf/core Merge branch 'perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core Merge commit 'v3.1-rc6' into core/locking Merge branch 'linus' into sched/core Merge commit 'v3.1-rc7' into perf/core Merge branch 'upstream/ticketlock-cleanup' of git://github.com/jsgf/linux-xen into x86/spinlocks Merge branch 'core' of git://amd64.org/linux/rric into perf/core Merge branch 'rcu/next' of git://github.com/paulmckrcu/linux into core/rcu Merge branch 'linus' into sched/core llist: Remove the platform-dependent NMI checks Merge commit 'v3.1-rc9' into sched/core Merge commit 'v3.1-rc9' into perf/core Merge branch 'ras' of git://amd64.org/linux/bp into perf/core x86, nmi, drivers: Fix nmi splitup build bug Merge branch 'perf/core' of git://github.com/acmel/linux into perf/core Merge branch 'tip/perf/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into perf/core Merge branch 'tip/perf/core' of git://github.com/rostedt/linux into perf/core Merge branch 'perf/core' of git://github.com/acmel/linux into perf/core Merge branch 'tip/perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into perf/core Merge branch 'perf/core' of git://github.com/acmel/linux into perf/core Merge branch 'tip/perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into perf/core Inki Dae (8): DRM: add DRM Driver for Samsung SoC EXYNOS4210. drm/exynos: fixed overlay data updating. drm/exynos: fixed overlay updating time at page flip. drm/exynos: added device object as argument of subdrv_probe(). drm/exynos: fixed bug to exynos_drm_fb_dev_reinit(). drm/exynos: added comments and code clean. drm/exynos: fixed page flip bug. drm/exynos: fixed build warnings and comments. J. Bruce Fields (87): nfsd4: fix seqid_mutating_error nfsd4: return nfserr_symlink on v4 OPEN of non-regular file locks: minor lease cleanup locks: move F_INPROGRESS from fl_type to fl_flags field locks: fix tracking of inprogress lease breaks locks: setlease cleanup nfsd4: clean up S_IS -> NF4 file type mapping nfsd: open-code special directory-hardlink check nfsd: clean up nfsd_mode_check() nfsd4: fix incorrect comment in nfsd4_set_nfs4_acl nfsd4: it's OK to return nfserr_symlink nfsd: remove unused defines Remove include/linux/nfsd/const.h nfsd4: permit read opens of executable-only files nfsd: prettify NFSD_MAY_* flag definitions nfsd4: simplify recovery dir setting nfsd4: stop using nfserr_resource for transitory errors nfsd4: replace some macros by functions nfsd4: name openowner data structures more clearly nfsd4: cleanup lock/stateowner initialization nfsd4: remove HAS_SESSION nfsd4: cleanup and consolidate seqid_mutating_err nfsd4: simplify lock openmode check nfsd4: get lock checks out of preprocess_seqid_op nfsd4: remove redundant is_open_owner check nfsd: remove include/linux/nfsd/syscall.h nfsd4: fix off-by-one-error in SEQUENCE reply nfsd4: remove typoed replay field nfsd4: simplify distinguishing lock & open stateid's nfsd4: consolidate lock & open stateid tables nfsd4: simplify stateid generation code, fix wraparound nfsd4: make delegation stateid's seqid start at 1 nfsd4: centralize handling of replay owners nfsd4: cleanup seqid op stateowner usage nfsd4: extend state lock over seqid replay logic nfsd4: eliminate impossible open replay case nfsd4: drop most stateowner refcounting nfsd4: eliminate unused lt_stateowner nfsd4: share common seqid checks nfsd4: simplify check_open logic nfsd4: move double-confirm test to open_confirm nfsd4: move CLOSE_STATE special case to caller nfsd4: split stateowners into open and lockowners nfsd4: split out some free_generic_stateid code nfsd4: rearrange to avoid a forward reference nfsd4: split up find_stateid nfsd4: split preprocess_seqid, cleanup nfsd4: pass around typemask instead of flags nfsd4: rename init_stateid nfsd4: remove redundant stateid initialization nfsd4: move some of nfs4_stateid into a separate structure nfsd4: add common dl_stid field to delegation nfsd4: share common stid-hashing helper function nfsd4: hash deleg stateid's like any other nfsd4: fix test_stateid for delegation stateid's nfsd4: use deleg changes to cleanup preprocess_stateid_op nfsd4: better stateid hashing nfsd4: replace oo_confirmed by flag bit nfsd4: match close replays on stateid, not open owner id nfsd4: simplify free_stateid nfsd4: construct stateid from clientid and counter nfsd4: hash closed stateid's like any other nfsd4: fix open downgrade, again nfsd4: make op_cacheresult another flag leases: split up generic_setlease into lock/unlock cases nfsd4: move client * to nfs4_stateid, add init_stid helper nfsd4: use idr for stateid's nfsd4: assume test_stateid always has session nfsd4: look up stateid's per clientid nfsd4: fix state lock usage in LOCKU nfsd4: clean up downgrading code nfsd4: cleanup state.h comments nfsd4: ignore WANT bits in open downgrade nfsd4: move access/deny validity checks to xdr code nfsd4: move name-length checks to xdr nfsd4: more robust ignoring of WANT bits in OPEN nfsd4: centralize renew_client() calls nfsd4: make is_open_owner boolean nfsd4: simplify process_open1 logic nfsd4: clean up open owners on OPEN failure nfsd4: preallocate nfs4_file in process_open1() nfsd4: do idr preallocation with stateid allocation nfsd4: preallocate open stateid in process_open1() nfsd4: warn on open failure after create nfsd4: remove unneeded CLAIM_DELEGATE_CUR workaround nfsd4: implement new 4.1 open reclaim types leases: fix write-open/read-lease race JJ Ding (10): Input: elantech - correct x, y value range for v2 hardware Input: elantech - get rid of ETP_2FT_* in elantech.h Input: elantech - use firmware provided x, y ranges Input: elantech - remove ETP_EDGE_FUZZ_V2 Input: elantech - packet checking for v2 hardware Input: elantech - clean up elantech_init Input: elantech - add v3 hardware support Input: elantech - add v4 hardware support Input: elantech - better support all those v2 variants Input: elantech - remove module parameter force_elantech Jaap Crezee (1): Staging: intel_sst: instel_sst: fixed some coding style issues. Jack Steiner (1): x86: uv2: Workaround for UV2 Hub bug (system global address format) Jack Wang (1): [SCSI] libsas: set sas_address and device type of rphy Jacob Keller (3): ixgbe add thermal sensor support for x540 hardware ixgbe: fix driver version initialization in firmware igb: enable l4 timestamping for v2 event packets Jaehoon Chung (3): mmc: sdhci-s3c: fix potential NULL dereference mmc: dw_mmc: modify DATA register offset mmc: core: support HPI send command Jake Burton (1): Staging: comedi: fix brace coding style issue in ni_atmio.c Jakob Bornecrantz (26): vmwgfx: Update register files to latest from vmware-sdk vmwgfx: Document vmw_fifo_reserve vmwgfx: Add comments for buffer pinning code vmwgfx: Make sure the reserved area is at the start of vram vmwgfx: Some comments and BUG_ON vmwgfx: Break out dirty submission code vmwgfx: Expand the command checker to cover screen object commands vmwgfx: Refactor common display unit functions to shared file vmwgfx: Add dmabuf helper functions for pinning vmwgfx: Add screen object support vmwgfx: Drop 3D Legacy Display Unit support vmwgfx: Place overlays in GMR area if we can vmwgfx: Add present and readback ioctls vmwgfx: Disallow user space to send present and readback commands vmwgfx: Be more strict with fb depths when using screen objects vmwgfx: Don't use virtual coords when using screen objects vmwgfx: Fix display system init & close functions vmwgfx: Whitespace & code style in display unit vmwgfx: Add vblank stubs vmwgfx: Emulate depth 32 framebuffers vmwgfx: Don't pass unused arguments to do_dirty functions vmwgfx: Use pointer return error codes vmwgfx: Free prefered mode on error path vmwgfx: Unreference surface on cursor error path vmwgfx: Move the prefered mode first in the list vmwgfx: Snoop DMA transfers with non-covering sizes James Hogan (1): HID: hidraw: protect hidraw_disconnect() better James Morris (23): Merge branch 'linus'; commit 'v3.1-rc1' into next Merge branch 'next-queue' into next Merge branch 'next-evm' of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/ima-2.6 into next EVM: ensure trusted and encypted key symbols are available to EVM integrity: sparse fix: move iint_initialized to integrity.h apparmor: sparse fix: make aa_create_aafs static selinux: sparse fix: make selinux_secmark_refcount static selinux: sparse fix: move selinux_complete_init selinux: sparse fix: declare selinux_disable() in security.h apparmor: sparse fix: include ipc.h apparmor: sparse fix: add apparmor.h to lib.c apparmor: sparse fix: rename shadowed variables in policy_unpack.c apparmor: sparse fix: include procattr.h in procattr.c ima: sparse fix: make ima_open_policy static ima: sparse fix: include linux/ima.h in ima_main.c selinux: sparse fix: eliminate warnings for selinuxfs selinux: sparse fix: fix warnings in netlink code selinux: sparse fix: include selinux.h in exports.c selinux: sparse fix: fix several warnings in the security server code security: sparse fix: Move security_fixup_op to security.h Merge branch 'next-evm' of git://github.com/mzohar/linux-evm into next Merge branch 'next-hex2bin' of git://github.com/mzohar/linux-evm into next Merge branch 'master' of git://gitorious.org/smack-next/kernel into next James Nuss (2): pps: default echo function pps: new client driver using GPIO James Smart (10): [SCSI] lpfc 8.3.26: Fix issues pertaining to SCSI/FC protocol. [SCSI] lpfc 8.3.26: Fix HBA initialization issues [SCSI] lpfc 8.3.26: Fix SYSFS interface issues [SCSI] lpfc 8.3.26: Change driver version to 8.3.26 [SCSI] lpfc 8.3.27: Miscellanous logic and interface fixes [SCSI] lpfc 8.3.27: Changed worst case mailbox timeout [SCSI] lpfc 8.3.27: Change algorithm for getting physical port name [SCSI] lpfc 8.3.27: Fix queue allocation failure recovery [SCSI] lpfc 8.3.27: T10 additions for SLI4 [SCSI] lpfc 8.3.27: Change driver version to 8.3.27 Jamie Iles (23): crypto: picoxcell - convert to platform ID table crypto: picoxcell - add connection ID to the clock name crypto: picoxcell - support for device tree matching crypto: picoxcell - fix possible invalid pointer dereference tty: serial: allow ports to override the irq handler tty: serial8250: allow platforms to override irq handler mips: msp71xx/serial: convert to pr_foo() helpers mips: msp71xx/serial: add workaround for DW UART tty: serial8250: remove UPIO_DWAPB{,32} tty: serial8250: add helpers for the DesignWare 8250 tty: of_serial: add support for the DesignWare 8250 tty: 8250: export serial8250_handle_irq tty: add a DesignWare 8250 driver mtd: denali: detect the number of banks before resetting NAND picoxcell: support for Picochip picoxcell devices picoxcell: add the DTS for pc3x2 and pc3x3 devices picoxcell: add the DTS for the PC7302 board picoxcell: remove custom ioremap implementation dw_apb_timer: constify clocksource name picoxcell: add a definition of VMALLOC_END dt: add helper to read 64-bit integers ARM: 7115/4: move __exception and friends to asm/exception.h crypto: picoxcell - add dependency on HAVE_CLK Jan Beulich (9): xen/pci: make bus notifier handler return sane values xen/pciback: use mutex rather than spinlock in passthrough backend xen/pciback: miscellaneous adjustments xen/pci: support multi-segment systems apic, i386/bigsmp: Fix false warnings regarding logical APIC ID mismatches x86-64: Don't apply destructive erratum workaround on unaffected CPUs x86-64: Fix CFI data for interrupt frames xen-blkback: use kzalloc() in favor of kmalloc()+memset() x86: constify PCI raw ops structures Jan Glauber (8): [S390] use ENTRY macro for sys_setns_wrapper [S390] Introduce get_clock_fast() [S390] qdio: add timestamp for last queue scan time [S390] qdio: EQBS retry after CCQ 96 [S390] qdio: reset outbound SBAL error states [S390] qdio: remove multicast polling [S390] add missing __tlb_flush_global() for !CONFIG_SMP [S390] qdio: prevent dsci access without adapter interrupts Jan H. Schönherr (1): sched: Remove rq->avg_load_per_task Jan Kara (4): ext3: Remove i_mutex from ext3_sync_file() quota: Drop path reference on error exit from quotactl udf: Remove web reference from UDF MAINTAINERS entry udf: Cleanup metadata flags handling Jan Kiszka (8): KVM: Clean up unneeded void pointer casts KVM: Avoid needless registrations of IRQ ack notifier for assigned devices KVM: x86: Move kvm_trace_exit into atomic vmexit section KVM: x86: Avoid guest-triggerable printks in APIC model KVM: Clean up and extend rate-limited output KVM: x86: Add module parameter for lapic periodic timer limit KVM: Split up MSI-X assigned device IRQ handler KVM: SVM: Keep intercepting task switching with NPT enabled Jan Schmidt (13): btrfs: added helper functions to iterate backrefs btrfs scrub: added unverified_errors btrfs scrub: print paths of corrupted files btrfs scrub: bugfix: mirror_num off by one btrfs: add mirror_num to extent_read_full_page btrfs scrub: use int for mirror_num, not u64 btrfs scrub: add fixup code for errors on nodatasum files btrfs: new ioctls to do logical->inode and inode->path resolving btrfs: btrfs_multi_bio replaced with btrfs_bio btrfs: Do not use bio->bi_bdev after submission btrfs: Put mirror_num in bi_bdev btrfs: Moved repair code from inode.c to extent_io.c btrfs: integrating raid-repair and scrub-fixup-nodatasum Jan Weitzel (2): mtd: use MTD_NAND_OMAP2 for OMAP4 w1: disable irqs in critical section Janusz Krzysztofik (1): [media] media: ov6650: stylistic improvements Jarkko Nikula (21): omap: mcbsp: Remove omap device API ARM: OMAP: mcbsp: Remove unused variables from platform data ARM: OMAP: mcbsp: Move out omap_mcbsp_register_board_cfg from plat-omap/devices.c ARM: OMAP: mcbsp: Implement generic register access ARM: OMAP: mcbsp: Make wakeup control generic ARM: OMAP: mcbsp: Make tranceiver configuration control register access generic ARM: OMAP: mcbsp: Make threshold based transfer code generic ARM: OMAP: mcbsp: Use per instance register cache size ARM: OMAP: mcbsp: Move sidetone clock management to mach-omap2/mcbsp.c ARM: OMAP: mcbsp: Cleanup sidetone control initialization and make it generic ARM: OMAP: mcbsp: Update mcbsp.h include dependencies ARM: OMAP: mcbsp: Move address definitions to arch/arm/mach-omap1/mcbsp.c ARM: OMAP: mcbsp: Start generalize omap2_mcbsp_set_clks_src ARM: OMAP: mcbsp: Start generalize signal muxing functions ASoC: Davinci: Fix FS polarity for I2S format ASoC: omap-mcbsp: Fix FS polarity for LEFT_J, DSP_A and DSP_B formats ASoC: omap-mcbsp: Prepare for init time DAI format setting ASoC: omap: Convert bunch of machine drivers to use init time DAI format ASoC: omap: Use single hw_params callback in sdp3430 and zoom2 MAINTAINERS: Update linux-omap git repository ARM: OMAP1: Remove unused omap-alsa.h Jarkko Sakkinen (6): Smack: check permissions from user space (v2) Smack: domain transition protections (v3) Smack: fix for /smack/access output, use string instead of byte Smack: compilation fix Smack: fix: invalid length set for the result of /smack/access Smack: allow to access /smack/access as normal user Jarod Wilson (13): [media] imon: rate-limit send_packet spew [media] mceusb: command/response updates from MS docs [media] mceusb: give hardware time to reply to cmds [media] mceusb: set wakeup bits for IR-based resume [media] mceusb: issue device resume cmd when needed [media] mceusb: query device for firmware emulator version [media] mceusb: get misc port data from hardware [media] mceusb: flash LED (emu v2+ only) to signal end of init [media] mceusb: report actual tx frequencies [media] mceusb: update version, copyright, author [media] redrat3: remove unused dev struct members [media] em28xx: add em28xx_ prefix to functions [media] imon: don't parse scancodes until intf configured Jason Baron (8): dynamic_debug: remove unused control variables dynamic_debug: add Jason Baron as maintainer dynamic_debug: make netdev_dbg() call __netdev_printk() dynamic_debug: make netif_dbg() call __netdev_printk() dynamic_debug: consolidate repetitive struct _ddebug descriptor definitions dynamic_debug: remove num_enabled accounting dynamic_debug: use a single printk() to emit messages dynamic_debug: fix undefined reference to `__netdev_printk' Jason Liu (14): imx5: not include the unused head file ARM: mx25: Print silicon revision on boot ARM: mx27: Print silicon revision on boot ARM: mx31: use generic function for displaying silicon revision ARM: mx35: use generic function for displaying silicon revision ARM: mx5: use generic function for displaying silicon revision ARM: i.MX: initialize l2x0 at early_init time slub: doc: update the slabinfo.c file path mtd: mxc_nand: add mx53 NFC driver support mtd: check parts pointer before using it ARM: mx5/mm: move i.MX50 mm stuff into mm.c ARM: mx5/mm: Remove MX51_DEBUG related mapping ARM: mx5/mm: consolidate TZIC map code ARM: mx25: Add the missing IIM base definition Jason Stubbs (3): platform: samsung_laptop: fix samsung brightness min/max calculations Platform: Brightness quirk for samsung laptop driver Platform: Samsung laptop DMI info for NC210/NC110 Jason Wang (1): macvtap: fix the uninitialized var using in macvtap_alloc_skb() Javi Merino (1): ARM: 7136/1: pl330: Fix a race condition Javier Cardona (22): mac80211: fix erroneous clearing of MESH_PATH_SN_VALID flag mac80211: improve mpath debugging mac80211: fix mpath timer NULL function mac80211: mesh locking fixes mac80211: fix mesh path flushing mac80211: mesh gate implementation {nl,mac}80211: add missing root mode meshconf entries {nl,cfg,mac}80211: let userspace set RANN interval {nl,cfg,mac}80211: let userspace make meshif mesh gate mac80211: Defer tranmission of mesh path errors mac80211: Fix RCU pointer dereference in mesh_path_discard_frame() mac80211: Remove mesh paths when an interface is removed mac80211: Improve mpath state locking mac80211: Remove redundant mesh path expiration checks mac80211: Don't iterate twice over all mpaths when once in sufficient mac80211: Consolidate {mesh,mpp}_path_flush into one function mac80211: Consolidate mesh path duplicated functions mac80211: Stop forwarding mesh traffic when tx queues are full mac80211: Start implementing QoS support for mesh interfaces mac80211: Mesh data frames must have the QoS header mac80211: Mark all mesh stations as QoS capable mac80211: Fix regression that allowed mpaths between non-peers. Javier Martin (1): [media] mt9p031: Aptina (Micron) MT9P031 5MP sensor driver Javier Martinez Canillas (1): [media] tvp5150: Add video format registers configuration values Jay Vosburgh (1): bonding: eliminate bond_close race conditions Jayachandran C (3): usb: OHCI/EHCI support for Netlogic XLS processor. MIPS:Netlogic:Fix section mismatch warnings. MIPS: Netlogic: Specify architecture CFLAGS Jayamohan Kallickal (8): [SCSI] be2iscsi: Fixing the /proc/interrupts problem V3 [SCSI] be2iscsi: Adding a shutdown Routine [SCSI] be2iscsi: Add pci_disable device [SCSI] be2iscsi: Fix for kdump failure [SCSI] be2iscsi: Fix for wrong dmsg setting in wrb [SCSI] be2iscsi: Fix for case where task->sc was cleanedup earlier [SCSI] be2iscsi: memset wrb for ring create [SCSI] be2iscsi: Move driver Version to 4.1.239.0 Jean Delvare (25): carminefb: Fix module parameters permissions drm/radeon/kms: Fix I2C mask definitions drm/radeon/kms: Simplify I2C post_xfer function hwmon: (w83627ehf) Fix negative 8-bit temperature values hwmon: (w83627ehf) Skip reading unused voltage registers hwmon: (w83627ehf) Move fan pins check to a separate function hwmon: (lm75) Document why clones are not detected hwmon: (w83627ehf) Uninline is_word_sized hwmon: (w83627ehf) Better fix for negative temperature values i2c-algo-bit: Let user test buses without failing i2c-algo-bit: Be verbose on bus testing failure i2c-algo-bit: Return standard fault codes i2c-algo-pca: Return standard fault codes hwmon: (lm73) Make detection less problematic hwmon: (ibmaem) Fix error paths hwmon: (ibmaem) Make instance initializations independent hwmon: (ibmaem) Avoid repeated memory allocations hwmon: (lm90) Fix warnings hwmon: (lm90) Make code more readable hwmon: (smsc47b397) Fix checkpatch errors hwmon: Use i2c_smbus_{read,write}_word_swapped hwmon: (w83627ehf) Properly report PECI and AMD-SI sensor types hwmon: (w83627ehf) Clean up probe function hwmon: (w83627ehf) Add support for the W83627UHG hwmon: (coretemp) Fix for non-SMP builds Jean Pihet (8): PM QoS: Move and rename the implementation files PM QoS: Minor clean-ups PM QoS: Code reorganization PM QoS: Reorganize data structs PM QoS: Generalize and export constraints management code PM QoS: Implement per-device PM QoS constraints PM QoS: Add global notification mechanism for device constraints PM / QoS: Update Documentation for the pm_qos and dev_pm_qos frameworks Jean-Christophe PLAGNIOL-VILLARD (4): at91: USB-A9G20 C01 & C11 board support at91: ohci-at91: always provide all the clocks pinctrl/sirf: fix sirfsoc_get_group_pins prototype ARM: at91: add at91sam9g20 and Calao USB A9G20 DT support Jean-François Moine (21): [media] gspca - ov519: Fix LED inversion of some ov519 webcams [media] gspca - sonixj: Fix the darkness of sensor om6802 in 320x240 [media] gspca - jeilinj: Cleanup code [media] gspca - sonixj: Adjust the contrast control [media] gspca - sonixj: Increase the exposure for sensor soi768 [media] gspca - sonixj: Cleanup source and remove useless instructions [media] gspca - kinect: Remove the gspca_debug definition [media] gspca - ov534_9: Use the new control mechanism [media] gspca - ov534_9: New sensor ov9712 and new webcam 05a9:8065 [media] gspca - main: Fix the isochronous transfer interval [media] gspca - main: Better values for V4L2_FMT_FLAG_COMPRESSED [media] gspca - benq: Remove the useless function sd_isoc_init [media] gspca - main: Use a better altsetting for image transfer [media] gspca - main: Handle the xHCI error on usb_set_interface() [media] gspca - topro: New subdriver for Topro webcams [media] gspca - spca1528: Increase the status waiting time [media] gspca - spca1528: Add some comments and update copyright [media] gspca - spca1528: Change the JPEG quality of the images [media] gspca - spca1528: Don't force the USB transfer alternate setting [media] gspca - main: Version change to 2.14.0 [media] gspca - main: Display the subdriver name and version at probe time Jean-Hugues Deschenes (3): i2c-designware: Use local version of readl & writel i2c-designware: Check component type register i2c-designware: Allow mixed endianness accesses Jeff Brown (3): HID: hid-debug: Show application usage for each collection. HID: hid-multitouch: Filter collections by application usage. HID: hid-multitouch: Add LG Display Multitouch device. Jeff Kirsher (88): drivers/net/ethernet: Add ethernet dir and config option 3c*/acenic/typhoon: Move 3Com Ethernet drivers amd: Move AMD (Lance) chipset drivers 8390: Move the 8390 related drivers broadcom: Move the Broadcom drivers chelsio: Move the Chelsio drivers intel: Move the Intel wired LAN drivers qlogic: Move the QLogic drivers smsc: Move the SMC (SMSC) drivers i825xx: Move the Intel 82586/82593/82596 based drivers ni5010: Move the Racal-Interlan (Micom) driver cassini/niu/sun*: Move the Sun drivers sfc: Move the Solarflare drivers be2net: Move the Emulex driver bna: Move the Brocade driver mlx4: Move the Mellanox driver myri*: Move the Myricom drivers s2io/vxge: Move the Exar drivers ehea/ibm*: Move the IBM drivers enic: Move the Cisco driver pasemic_mac*: Move the PA Semi driver tehuti: Move the Tehuti driver stmmac: Move the STMicroelectronics driver bmac/mace/macmace/mac89x0/cs89x0: Move the Macintosh (Apple) drivers *sonic/natsemi/ns83829: Move the National Semi-conductor drivers xscale: Move the Intel XScale IXP drivers ftgmac100/ftmac100: Move the Faraday drivers 8139*/atp/r8169/sc92031: Move the Realtek drivers de6*/dl2k/sundance: Move the D-Link drivers atl*: Move the Atheros drivers spider_net: fix compile issue introduced by driver move ewrk3/tulip: Move the DEC - Tulip drivers ioc3-eth/meth: Move the SGI drivers seeq: Move the SEEQ drivers pch_gbe: Move the OKI Semiconductor driver skge/sky2/mv643xx/pxa168: Move the Marvell Ethernet drivers via-*: Move the VIA drivers eth16i: Move the Allied Telesis/Fujitsu drivers freescale: Move the Freescale drivers ks8*/ksz8*: Move the Micrel drivers toshiba: Move the Toshiba drivers sis*: Move the Silicon Integrated Systems (SiS) drivers cirrus: Move the Cirrus network driver nuvoton: Move the Nuvoton driver tsi108*: Move the Tundra driver s6gmac: Move the s6gmac drivers davinci*/tlan/cpmac: Move the Texas Instruments (TI) drivers hamachi/yellowfin: Move the packet engine drivers octeon: Move the Cavium driver jme: Move the JME driver xilinx/ll_temac: Move the Xilinx drivers ipg: Move the IC Plus driver korina: Move the IDT driver mipsnet: Move the MIPS driver lantiq: Move the Lantiq SoC driver bfin_mac: Move the Analog Devices Inc driver macb: Move the Atmel driver r6040: Move the RDC driver fealnx: Move the Myson driver forcedeth: Move the NVIDIA nForce driver starfire: Move the Adaptec driver hp100: Move the HP driver dnet: Move the Dave Ethernet driver ethoc: Move the Avionic driver greth: Move the Aeroflex Gaisler driver enc28j60: Move the Microchip driver dm9000: Move the Davicom driver netx: Move the netx driver sh_eth: Move the Renesas SuperH driver xircom: Move the Xircom driver tile: Move the Tilera driver acenic: Move the Alteon driver drivers/net: Kconfig and Makefile cleanup fddi: Move the FDDI drivers skfp: Fix SysKonnect FDDI driver compile issues ppp: Move the PPP drivers hippi: Move the HIPPI driver plip: Move the PLIP driver slip: Move the SLIP drivers ixbmtr_cs: Move the IBM PCMCIA Token Ring driver com20020_cs: Move the PCMCIA Arcnet driver drivers/net: Kconfig & Makefile cleanup drivers/net/ethernet/*: Enabled vendor Kconfig options MII: fix Kconfig dependencies for MII e1000e: make function tables const cs89x0: Move the driver into the Cirrus dir i825xx:xscale:8390:freescale: Fix Kconfig dependancies etherh: Add MAINTAINERS entry for etherh Jeff Layton (32): cifs: switch CIFSSMBQAllEAs to use memcmp cifs: use memcpy for magic string in cifs signature generation BSRSPYL cifs: get rid of unused xid in cifs_get_root cifs: untangle server->maxBuf and CIFSMaxBufSize cifs: clean up checkSMB cifs: consolidate signature generating code cifs: trivial: remove obsolete comment cifs: make smb_msg local to read_from_socket cifs: check for unresponsive server every time we call kernel_recvmsg cifs: simplify read_from_socket cifs: clean up check_rfc1002_header PM / Freezer: Make fake_signal_wake_up() wake TASK_KILLABLE tasks too nfs: don't redirty inode when ncommit == 0 in nfs_commit_unstable_pages nfs: don't try to migrate pages with active requests cifs: turn read_from_socket into a wrapper around a vectorized version cifs: keep a reusable kvec array for receives cifs: add a third receive phase to cifs_demultiplex_thread cifs: move mid finding into separate routine cifs: eliminate is_multi_rsp parm to find_cifs_mid cifs: move buffer pointers into TCP_Server_Info cifs: find mid earlier in receive codepath cifs: break out 3rd receive phase into separate function cifs: add a callback function to receive the rest of the frame cifs: fix protocol definition for READ_RSP cifs: add cifs_async_readv cifs: convert cifs_readpages to use async reads cifs: allow for larger rsize= options and change defaults cifs: tune bdi.ra_pages in accordance with the rsize cifs: allow cifs_max_pending to be readable under /sys/module/cifs/parameters cifs, freezer: add wait_event_freezekillable and have cifs use it vfs: iov_iter: have iov_iter_advance decrement nr_segs appropriately nfs: set vs_hidden on nfs4_callback_version4 (try #2) Jeff Liu (1): btrfs: trivial fix, a potential memory leak in btrfs_parse_early_options() Jeff Moyer (3): blk-flush: fix invalid BUG_ON in blk_insert_flush blk-flush: move the queue kick into aio: allocate kiocbs in batches Jeff Skirvin (13): [SCSI] isci: fix missed unlock in apc_agent_timeout() [SCSI] isci: SATA/STP I/O is only returned in the normal path to libsas [SCSI] isci: fix decode of DONE_CRC_ERR TC completion status [SCSI] isci: The port state should be set to stopping on the last phy. [SCSI] isci: Lookup device references through requests in completions. [SCSI] isci: Immediately fail I/O to removed devices. [SCSI] isci: Fix tag leak in tasks and terminated requests. [SCSI] isci: Handle task request timeouts correctly. [SCSI] isci: No task_done callbacks in error handler paths. [SCSI] isci: Fix task management for SMP, SATA and on dev remove. [SCSI] isci: Remove redundant isci_request.ttype field. [SCSI] isci: No need to manage the pending reset bit on pending requests. [SCSI] isci: Fix hard reset timeout conditions. Jens Axboe (6): Merge branch 'for-3.2/core' into for-3.2/drivers block: rename __make_request() to blk_queue_bio() Merge branch 'v3.1-rc10' into for-3.2/core Merge branch 'stable/for-jens-3.2' of git://oss.oracle.com/git/kwilk/xen into for-3.2/drivers Merge branch 'for-linus' into for-3.2/core blk-throttle: use queue_is_locked() instead of lockdep_is_held() JeongHyeon Kim (1): ARM: EXYNOS4: Add support for ORIGEN board Jeremy Fitzhardinge (24): x86, cmpxchg: has LOCK_PREFIX x86, cmpxchg: Move 32-bit __cmpxchg_wrong_size to match 64 bit. x86, cmpxchg: Move 64-bit set64_bit() to match 32-bit x86, cmpxchg: Unify cmpxchg into cmpxchg.h x86: Add xadd helper macro x86: Use xadd helper more widely x86, ticketlock: Clean up types and accessors x86, ticketlock: Convert spin loop to C x86, ticketlock: Convert __ticket_spin_lock to use xadd() x86, ticketlock: Make __ticket_spin_trylock common x86, cmpxchg: Use __compiletime_error() to make usage messages a bit nicer xen: add dom0_op hypercall xen/dom0: set wallclock time in Xen x86, ticketlock: remove obsolete comment jump_label: use proper atomic_t initializer stop_machine: make stop_machine safe and efficient to call early jump_label: if a key has already been initialized, don't nop it out x86/jump_label: drop arch_jump_label_text_poke_early() sparc/jump_label: drop arch_jump_label_text_poke_early() jump_label: add arch_jump_label_transform_static() to optimise non-live code updates s390/jump-label: add arch_jump_label_transform_static() x86/jump_label: add arch_jump_label_transform_static() jump-label: initialize jump-label subsystem much earlier stop_machine: make stop_machine safe and efficient to call early Jerome Glisse (4): drm/radeon: avoid bouncing connector status btw disconnected & unknown drm/radeon: set hpd polarity at init time so hotplug detect works drm/radeon: flush read cache for gtt with fence on r6xx and newer GPU V3 drm/radeon/kms: consolidate GART code, fix segfault after GPU lockup V2 Jerome Marchand (2): staging: zram: fix zram locking staging: zram: prevent accessing an unallocated table when init fails early Jerry Huang (1): QE/FHCI: fixed the CONTROL bug Jesper Juhl (21): Remove unneeded version.h includes from drivers/video/ Documentation/ABI/: update version number references from 2.6.x to 3.x net/wan/hdlc_ppp: use break in switch USB: Remove test for NULL that'll never happen in usb_disconnect() x86, cleanup: Remove unneeded version.h include from arch/x86/ drivers/staging/rtl8187se: Don't pass huge struct by value drivers/staging/rtl8192u: Don't pass huge struct by value jffs2: Avoid unneeded 'if' before kfree Remove unneeded version.h include from lib/ Remove unneeded version.h includes from include/ Remove unneeded version.h include from arch/x86/ Remove unneeded version.h includes from arch/arm/ Remove unneeded version.h includes from drivers/block/ Remove unneeded version.h includes from drivers/scsi/ Remove unneeded version.h includes from drivers/target/ Remove unneeded version.h includes (and add where needed) for drivers/usb/ Remove unneeded version.h include from drivers/uwb/ viacam: Don't explode if pci_find_bus() returns NULL CIFS: Don't free volume_info->UNC until we are entirely done with it. target: Remove unneeded version.h includes mfd: Do not leak init_data in tps65912_device_init() Jesse Barnes (19): drm/i915: Use PIPE_CONTROL for flushing on gen6+. drm/i915: always set FDI composite sync bit drm/i915: PLL macro cleanup and pipe assertion check drm/i915: support 3 pipes on IVB+ drm/i915: split refclk code out of ironlake_crtc_mode_set drm/i915: use transcoder select bits on VGA and HDMI on CPT drm/i915: fix PCH PLL assertion check for 3 pipes drm/i915: add PLL sharing support to handle 3 pipes drm/i915: fix debug output for 3 pipe configs drm/i915: fix IVB cursor support drm/i915: fix transcoder PLL select masking drm/i915: export a CPT mode set verification function drm/i915: set watermarks for third pipe on IVB drm/i915: if transcoder disable fails, say which drm/i915: remove transcoder PLL mashing from mode_set per specs drm/i915: read full receiver capability field during DP hot plug drm/i915: add DP test request handling drm/i915: fix ILK+ infoframe support drm/i915: use correct SPD type value Jesse Brandeburg (5): ixgb: eliminate checkstack warnings e1000: convert hardware management from timers to threads e1000: convert mdelay to msleep e1000: convert to private mutex from rtnl e100: make sure vlan support isn't advertised on old adapters Jiaju Zhang (1): lib/Kconfig.debug: fix help message for DEFAULT_HUNG_TASK_TIMEOUT Jianyun Li (1): [SCSI] mvumi: Add Marvell UMI driver Jie Liu (1): block: fix a typo in the blk-cgroup.h file Jim Cromie (5): perf stat: Add --log-fd option to redirect stderr elsewhere perf stat: Fix +- nan% in --no-aggr runs perf stat: Suppress printing std-dev when its 0 perf stat: Allow tab as cvs delimiter perf stat: Fix spelling in comment Jim Keniston (1): powerpc/nvram: Add compression to fit more oops output into NVRAM Jim Rees (2): pnfsblock: fix return code confusion pnfsblock: fix size of upcall message Jim Rotmalm (1): zorro: Fix four checkpatch warnings Jim Wylder (1): USB: for usb_autopm_get_interface_async -EINPROGRESS is not an error Jimi Xenidis (2): powerpc/wsp: Fix Wire Speed Processor platform configs powerpc: Fix xmon for systems without MSR[RI] Jin Park (1): mfd: Fix aat2870 build failure for x86_64 Jingoo Han (2): video: s3c-fb: Add support EXYNOS4 FIMD ARM: EXYNOS4: Add usb ehci device to the SMDKV310 Jiri Kosina (14): HID: propagate return value correctly in hid_input_report() HID: add MacBookAir4,2 to hid_have_special_driver[] HID: make CONFIG_LOGIWHEELS_FF default to CONFIG_LOGITECH_FF Merge branch 'master' into for-next HID: MacbookAir4,1 and MacbookAir4,2 need entry in hid_mouse_ignore_list[] HID: consolidate MacbookAir 4,1 mappings HID: primax: remove spurious dependency parport_pc: release IO region properly if unsupported ITE887x card is found Merge branches 'acrux', 'logitech', 'multitouch', 'roccat' and 'wiimote' into for-linus Merge branch 'upstream-fixes' into for-linus Merge branch 'upstream' into for-linus kmod: prevent kmod_loop_msg overflow in __request_module() MAINTAINERS: add ASLR maintainer binfmt_elf: fix PIE execution with randomization disabled Jiri Olsa (13): tracing/filter: Use static allocation for filter predicates tracing/filter: Separate predicate init and filter addition tracing/filter: Remove field_name from filter_pred struct tracing/filter: Simplify tracepoint event lookup tracing/filter: Unify predicate tree walking, change check_pred_tree function to use it tracing/filter: Change count_leafs function to use walk_pred_tree tracing/filter: Change fold_pred_tree function to use walk_pred_tree tracing/filter: Change fold_pred function to use walk_pred_tree tracing/filter: Change filter_match_preds function to use walk_pred_tree tracing/filter: Add startup tests for events filter perf sched: Fix script command documentation perf symbols: Treat all memory maps without dso file as loaded perf tools: Fix tracing info recording Jiri Pinkava (1): mtd: nand: remove meaningless delay from nand_unlock Jiri Pirko (11): bonding: implement get_tx_queues rtnk_link_op rtnetlink: remove initialization of dev->real_num_tx_queues bonding: use ndo_change_rx_flags callback net: introduce IFF_UNICAST_FLT private flag net: remove use of ndo_set_multicast_list in drivers net: remove ndo_set_multicast_list callback net: vlan: goto another_round instead of calling __netif_receive_skb benet: remove bogus "unlikely" on vlan check br: remove redundant check and init net: consolidate and fix ethtool_ops->get_settings calling tg3: negate USE_PHYLIB flag check Jiri Slaby (18): TTY: serial, remove BTM from wait_until_sent TTY: msm_serial, remove unneeded console set TTY: serial, remove tasklet for tty_wakeup TTY: ami_serial, remove BTM from wait_until_sent TTY: remove tty_locked TTY: mxser+cyclades remove wait_until_sent debug code TTY: serial, use ASYNCB_CLOSING in uart_close TTY: serial, move locking in uart_close TTY: define tty_wait_until_sent_from_close TTY: use tty_wait_until_sent_from_close in tty_port_close_start TTY: use tty_wait_until_sent_from_close in other drivers TTY: serial, remove dead code from 68328 TTY: serial, fix includes in some drivers TTY: serial, move 68360 driver to staging TTY: drop driver reference in tty_open fail path TTY: make tty_add_file non-failing TTY: pty, release tty in all ptmx_open fail paths TTY: call tty_driver_lookup_tty unconditionally Jitendra Kalsaria (1): qlge: Adding Maintainer. Jiří Župka (1): Repair wrong named definition aligned_u64 Joachim Foerster (2): usb/isp1760: Let OF bindings depend on general CONFIG_OF instead of PPC_OF . usb/isp1760: Allow to optionally trigger low-level chip reset via GPIOLIB. Joakim Tjernlund (2): ucc_geth: Add SUPPORTED_MII and SUPPORTED_Autoneg usb: fhci-hcd: Allocate pram dynamically. Jochen Friedrich (4): ARM: 7027/1: simpad: Add ucb1x00 GPIO definitions and register GPIO ARM: 7024/1: simpad: Cleanup CS3 accessors. ARM: 7025/1: simpad: add GPIO based device definitions. ARM: 7026/1: simpad: replace ARM specific LED code Joe Carnuccio (3): [SCSI] qla2xxx: Correction to sysfs edc interface. [SCSI] qla2xxx: Provide method for updating I2C attached VPD. [SCSI] qla2xxx: Return sysfs error codes appropriate to conditions. Joe Handzik (1): cciss: add transport mode attribute to sys Joe Jin (1): xen-blkback: fixed indentation and comments Joe Perches (60): video: Fix speficied typo ipg: Use current logging styles ipg: Use const cfg80211: Update REG_DBG_PRINT macro and uses mtd: convert vmalloc/memset to vzalloc bnx2x: Remove local defines for %pM and mac address bnx2x: Coalesce pr_cont uses and fix DP typos bnx2x: Use pr_fmt and message logging cleanups dynamic_debug: Add __dynamic_dev_dbg dynamic_debug: Consolidate prefix output to single routine dynamic_debug: Remove uses of KERN_CONT in dynamic_emit_prefix dynamic_debug: Convert printks to pr_ staging: brcmfmac: Consolidate debugging macros [media] tda18271: Use printk extension %pV [media] tda18212: Use standard logging, remove tda18212_priv.h caif: Remove OOM messages, use kzalloc ath: Make ath_dbg void not int ath: Make ath_printk void not int and remove unused struct ath_common * [media] saa7146: Use current logging styles [media] rc-core.h: Surround macro with do {} while (0) [media] ene_ir: Use current logging styles [media] winbond-cir: Use current logging styles [media] bt8xx: Use current logging styles [media] et61x251: Use current logging styles [media] gl860: Use current logging styles [media] m5602: Use current logging styles [media] finepix: Use current logging styles [media] pac207: Use current logging styles [media] sn9c20x: Use current logging styles [media] t613: Use current logging styles [media] gspca: Use current logging styles batman-adv: Remove unnecessary OOM logging messages mac80211: Remove unnecessary OOM logging messages rfkill: Remove unnecessary OOM logging messages wireless: Remove unnecessary OOM logging messages s390: Convert vmalloc/memset to vzalloc atm: Convert vmalloc/memset to vzalloc drbd: Convert vmalloc/memset to vzalloc char: Convert vmalloc/memset to vzalloc isdn: Convert vmalloc/memset to vzalloc fs: Convert vmalloc/memset to vzalloc mm: Convert vmalloc/memset to vzalloc net: Convert vmalloc/memset to vzalloc drbd: Use angle brackets for system includes aix94xx: Use angle brackets for system includes iwlagn: Convert kzalloc to kcalloc treewide: Correct spelling of successfully in comments sata_sil24: Use const udf: Promote some debugging messages to udf_error udf: Rename udf_error to udf_err udf: Rename udf_warning to udf_warn udf: Convert printks to pr_ udf: Neaten logging output, use vsprintf extension %pV udf: Neaten udf_debug uses mm: neaten warn_alloc_failed mm/vmalloc.c: report more vmalloc failures treewide: use __printf not __attribute__((format(printf,...))) kernel.h/checkpatch: mark strict_strto and simple_strto as obsolete checkpatch: add a --strict check for utf-8 in commit logs netfilter: Remove unnecessary OOM logging messages Joe Thornber (2): dm: add persistent data library dm: add thin provisioning target Joerg Roedel (22): omap: iommu: Fix up mutex->spin_lock conversion of iommu_lock iommu/core: Use PAGE_SIZE instead of hard-coded value Merge branches 'debug/dma-api', 'arm/omap', 'arm/msm' and 'core' into api-2 iommu/omap: Fix build error with !IOMMU_SUPPORT perf, core: Introduce attrs to count in either host or guest mode perf, amd: Use GO/HO bits in perf-ctr iommu/amd: Fix wrong shift direction PCI: Move ATS implementation into own file PCI: Export ATS functions to modules PCI: Add implementation for PRI capability PCI: Add support for PASID capability iommu/core: Define iommu_ops and register_iommu only with CONFIG_IOMMU_API Driver core: Add iommu_ops to bus_type iommu/core: Add bus_type parameter to iommu_domain_alloc iommu/core: Convert iommu_found to iommu_present iommu/core: Use bus->iommu_ops in the iommu-api iommu/amd: Use bus_set_iommu instead of register_iommu iommu/vt-d: Use bus_set_iommu instead of register_iommu iommu/omap: Use bus_set_iommu instead of register_iommu iommu/msm: Use bus_set_iommu instead of register_iommu iommu/core: Remove global iommu_ops and register_iommu Merge branches 'amd/fixes', 'debug/dma-api', 'arm/omap', 'arm/msm', 'core', 'iommu/fault-reporting' and 'api/iommu-ops-per-bus' into next Joern Engel (4): target: Fix incorrect se_cmd assignment in core_tmr_drain_tmr_list target: Fix wrong se_tmr being added to drain_tmr_list target: Minor cleanups to core_tmr_drain_tmr_list target: Avoid double list_del for aborted se_tmr_req Johan Hedberg (1): Bluetooth: Set HCI_MGMT flag only in read_controller_info Johan Hovold (2): OMAP2+: PM: fix typos in misc. comment and error messages OMAP2+: PM: clean up error messages: replace printk with pr_err. Johann Felix Soden (2): Fix file references in drivers/ide/ Fix file references in Kconfig files Johannes Berg (80): cfg80211: split wext compatibility to separate header iwlagn: remove wireless extensions inclusions iwlegacy: remove wireless extensions inclusions ath5k: remove wireless extensions inclusions b43: remove wireless extensions inclusions b43legacy: remove wireless extensions inclusions rndis_wlan: remove wireless extensions inclusions wl12xx: remove wext dependencies wl1251: remove wext dependencies mwifiex: add wext include mac80211: remove linux/wireless.h inclusion cfg80211: remove unused wext handler exports iwlagn: reserve queue 10 for TX during scan dwell iwlagn: separate firmware version warning iwlagn: bump firmware API for some devices iwlagn: move context init after firmware loading iwlagn: support new P2P implementation mac80211: remove offchannel_tx API iwlagn: handle GO powersave mac80211: further optimise buffer expiry timer cfg80211: verify format of uAPSD information iwlagn: move PCI-E transport files iwlagn: generically provide iwl_trans_send_cmd_pdu iwlagn: Makefile whitespace cleanup iwlagn: clean up PM code iwlagn: rename iwl-pci.h to iwl-cfg.h iwlagn: remove unused function declarations iwlagn: move sysfs files to debugfs iwlagn: remove drvdata support from bus layer iwlagn: do not use interruptible waits cfg80211: validate IBSS BSSID mac80211: fix AP/VLAN PS buffer race iwlagn: move scan code to scan file iwlagn: remove common station priv iwlagn: split remain-on-channel iwlagn: fix dangling scan request iwlagn: fix slot programming iwlagn: remove Kelvin support iwlagn: make iwl_scan_cancel_timeout void iwlagn: refactor scan complete iwlagn: move iwl_process_scan_complete up iwlagn: fix scan complete processing cfg80211/mac80211: apply station uAPSD parameters selectively mac80211: let drivers inform it about per TID buffered frames mac80211: unify TIM bit handling mac80211: also expire filtered frames mac80211: split PS buffers into ACs mac80211: remove return value from add_pending_skbs mac80211: clear more-data bit on filtered frames mac80211: allow releasing driver-buffered frames mac80211: implement uAPSD mac80211: send (QoS) Null if no buffered frames mac80211: reply only once to each PS-poll mac80211: optimise station flags mac80211: add missing station flags to debugfs mac80211: explicitly notify drivers of frame release mac80211: allow out-of-band EOSP notification mac80211: document client powersave mac80211: dont assign seqno to or aggregate QoS Null frames net: use sock_valbool_flag to set/clear SOCK_RXQ_OVFL mac80211: pass no-CCK flag through to HW scan mac80211: fix offchannel TX cookie matching mac80211: optimise monitor xmit mac80211: remove tx_data ethertype mac80211: move fragment flag to info flag as dont-fragment mac80211: parse radiotap header earlier mac80211: dont adjust truesize mac80211: dont orphan TX skb iwlagn: update beacon smarter iwlagn: don't assign seqno to QoS Null frames iwlagn: send simple LQ command for WoWLAN iwlagn: stop interrupts when suspending iwlagn: remove 5000 hw header iwlagn: remove 6000 hw header mac80211: reformat TX unauthorised check mac80211: fix TID for null poll response mac80211: disable powersave for broken APs mac80211: warn only once about not finding a rate netlink: validate NLA_MSECS length netlink: clarify attribute length check documentation Johannes Stezenbach (1): usbmon vs. tcpdump: fix dropped packet count Johannes Thumshirn (1): staging: comedi: Added log subjects to printk()s in pcmmio Johannes Weiner (5): mm/page-writeback.c: document bdi_min_ratio mm: vmscan: drop nr_force_scan[] from get_scan_count mm: disable user interface to manually rescue unevictable pages memcg: skip scanning active lists based on individual size memcg: close race between charge and putback John Bonesio (1): ARM: zImage: Allow the appending of a device tree binary John Crispin (1): MIPS: Lantiq: Fix MTD registration of NOR device John Fastabend (15): ixgbe: fixup remaining call sites for arbitrary TCs ixgbe: remove unneeded fdir pb alloc case ixgbe: consolidate, setup for multiple traffic classes ixgbe: PFC not cleared on X540 devices ixgbe: DCB, do not call set_state() from IEEE mode ixgbe: dcb, set priority to traffic class mappings ixgbe: update {P}FC thresholds to account for X540 and loopback ixgbe: fixup hard dependencies on supporting 8 traffic classes ixgbe: DCB X540 devices support max traffic class of 4 ixgbe: X540 devices RX PFC frames pause traffic even if disabled dcb: add DCBX mode to event notifier attributes dcb: Add stub routines for !CONFIG_DCB net: allow vlan traffic to be received under bond ixgbe: fix smatch splat due to missing NULL check ixgbe: DCB, return max for IEEE traffic classes John Serock (1): Platform: Detect samsung laptop quirk when initial level is zero John Stultz (9): alarmtimers: Change alarmtimer functions to return alarmtimer_restart values alarmtimers: Push rearming peroidic timers down into alamrtimer handler alarmtimers: Add alarm_forward functionality alarmtimers: Remove interval cap limit hack alarmtimers: Remove period from alarm structure alarmtimers: Add more refined alarm state tracking alarmtimers: Add try_to_cancel functionality alarmtimers: Rework RTC device selection using class interface time: Cleanup old CONFIG_GENERIC_TIME references that snuck in John Sung (4): Input: penmount - fix the protocol Input: penmount - add PenMount 6000 support Input: penmount - add PenMount 3000 support Input: penmount - add PenMount 6250 support John W. Linville (27): Merge branch 'ath6kl-next' of master.kernel.org:/pub/scm/linux/kernel/git/kvalo/ath6kl Merge branch 'for-linville' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath6kl Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem ath9k: remove replicated null check in ath_pci_aspm_init b43: correct warning for uninitialized variable 'macstat' Merge branch 'for-linville' of git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem mac80211: refactor skb copy to failq in mesh_path_move_to_queue wl12xx/sdio_test.c: fix build breakage from WL127X_FW_NAME change Merge branch 'master' of git://git.infradead.org/users/linville/wireless-next into for-davem Merge branch 'for-linville' of git://github.com/lucacoelho/wl12xx Merge branch 'master' of ssh://infradead/~/public_git/wireless-next into for-davem Merge branch 'for-linville' of git://github.com/lucacoelho/wl12xx Revert "ath9k: do not insert padding into tx buffers on AR9380+" Merge branch 'master' of git://git.infradead.org/users/linville/wireless Merge branch 'master' of git://github.com/padovan/bluetooth-next Merge branch 'for-linville' of git://github.com/lucacoelho/wl12xx Merge branch 'master' of git://git.infradead.org/users/linville/wireless Merge branch 'master' of git://git.infradead.org/users/linville/wireless-next into for-davem Merge branch 'for-linville' of git://github.com/kvalo/ath6kl Merge branch 'master' of git://github.com/padovan/bluetooth-next ath6kl: fixup merge damage in ath6kl_mgmt_tx Merge branch 'master' of git://git.infradead.org/users/linville/wireless-next into for-davem Merge branch 'for-linville' of git://github.com/lucacoelho/wl12xx Merge branch 'master' of git://git.infradead.org/users/linville/wireless-next into for-davem Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem Jon Hunter (3): ARM: OMAP3+: dpll: use DPLLs recalc function instead of omap2_get_dpll_rate ARM: OMAP4: clock: Add missing clock divider for OCP_ABE_ICLK ARM: OMAP3+: Update DPLL Fint range for OMAP36xx and OMAP4xxx devices Jon Levell (1): USB: add quirk for Logitech C300 web cam Jon Mason (4): pch_gbe: remove unused variable PCI: Workaround for Intel MPS errata PCI: enable MPS "performance" setting to properly handle bridge MPS PCI: Clean-up MPS debug output Jon Medhurst (22): ARM: Add init_consistent_dma_size() ARM: omap: Setup consistent dma size at boot time ARM: mach-s3c64xx: Setup consistent dma size at boot time ARM: mach-s5p64x0: Setup consistent dma size at boot time ARM: mach-s5pv210: Setup consistent dma size at boot time ARM: mxc: Remove setting of consistent dma size ARM: mach-davinci: Setup consistent dma size at boot time ARM: mach-u300: Setup consistent dma size at boot time ARM: mach-at91: Setup consistent dma size at boot time ARM: mach-bcmring: Setup consistent dma size at boot time ARM: mach-shmobile: Setup consistent dma size at boot time ARM: Remove support for macro CONSISTENT_DMA_SIZE ARM: kprobes: Add config option for selecting the ARM kprobes tests ARM: kprobes: Add basic API tests ARM: kprobes: Framework for instruction set test cases ARM: kprobes: Add Thumb instruction simulation test cases ARM: kprobes: Add ARM instruction simulation test cases ARM: kprobes: Add exports for test code ARM: kprobes: Add decoding table self-consistency tests ARM: kprobes: Add decoding table test coverage analysis ARM: kprobes: Add some benchmarking to test module ARM: kprobes: Add introductory comment to test code Jonas Aaberg (5): ARM: ux500: Move timer code to separate file ARM: plat-nomadik: timer: Add support for periodic timers ARM: plat-nomadik: timer: Export reset functions ARM: ux500: Reprogram timers upon resume i2c-nomadik: cosmetic coding style corrections Jonas Aberg (1): mfd: Add db8500-pcmu watchdog accessor functions for watchdog Jonathan Brassow (1): dm log userspace: fix comment hyphens Jonathan Cameron (159): staging:iio:gyro:adis16130 fix adis16130_spi_read which was never selecting the channel staging:iio:adc: max1363 fix 2 raw sysfs issues. staging:iio:core simplify and fix a bug in iio_device_(un)register_event_set. staging:iio: sysfs.h remove unused val2 and dead macro. staging:iio:addac:adt7316 make interrupt mask sane. staging:iio:dac:ad5504 dereferencing just freed st in error path. staging:iio:accel:adis16201 overflow tx buffer. staging:iio: dummy sysfs group for autogenerated base directories. staging:iio: in case of buggy drivers avoid using undefined mask. staging:iio:various Stop drivers putting sysfs attributes in a directory named after the device. staging:iio:documentation trivial typo fix staging:iio:trivial sparse related cleanups. staging:iio:imu:adis16400: use strtobool for reset sysfs and don't assign unused tx members. staging:iio:imu:adis16400 remove now unused headers. staging:iio:triggers introduce iio_trigger_ops to take const bits out of iio_trig_structure. staging:iio:gyro:adis16260 remove some unused headers staging:iio:imu:adis16400 remove unused headers. staging:iio:gyro:adis16130 drop control of adc resolution. staging:iio:accel: usused header removals. staging:iio:adc: unused header removals. staging:iio:inclinometer.h remove as now unused. staging:iio:various header includes that should never have been. staging:iio:adc: header cleanup - remove unused. staging:iio:accel header housekeeping - remove unecessary includes. staging:iio:gyro and meter: header housecleaning. staging:iio:core flatten convenience function that only has one user. staging:iio:core squash trivial wrappers and use ida allocation func. staging:iio:sysfs cleanout header for unused definitions. staging:iio:light:tsl2583 allocate chip state with iio_dev staging:iio: Remove deprecated dev_data from iio_dev. staging:iio:accel:kxsd9 cleanup and conversion to iio_chan_spec. staging:iio: add quadrature correction to chan info types. staging:iio:gyro:adxrs450 move to iio_chan_spec registration staging:iio:gyro:adxrs450 make more use of spi_read and spi_write. staging:iio:gyro:adxrs450 squish some trivial single call point wrappers functions. staging:iio:gyro:adis16080 convert to iio_chan_spec. staging:iio:magnetometer:hmc5843 iio_chan_spec conversion. staging:iio:gyro:adis16130 move to iio_chan_spec registration. staging:iio:gyro:adis16060 convert to iio_chan_spec staging:iio:accel:adis16204: use peak_raw info_mask element + push some defs down from header. staging:iio:accel:adis16220 iio_chan_spec conversion. staging:iio:magnetometer:ak8975 convert to iio_chan_spec + cleanups. staging:iio:magnetometer: remove unused header magnet.h staging:iio:gyro: remove gyro.h staging:iio:accel remove unused accel.h header. staging:iio:adc remove unused adc.h. staging:iio: Introduce iio_core.h and move all core only stuff out of iio.h. staging:iio:events: use IIO_ and IIO_MOD_<> instead of IIO_EV_CLASS_ etc staging:iio: remove unneeded include staging:iio:imu:adis16344 support staging:iio:triggers. Add a reference get to the core for triggers. staging:iio:triggers reorder module put and device put to ensure that the ops are still there if put results in device deletion. staging:iio:trigger:sysfs trigger: Add a release function to avoid warning on module removal. staging:iio:pollfunc: Make explicit that private data is always pointer to a struct iio_dev. staging:iio: prevent removal of module connected to trigger. staging:iio:rename trigger_consumer.h to indicate it is core only. staging:iio: spit trigger.h into provider and consumer parts. staging:iio:trigger core. Trivial code cleanups. staging:iio:trigger push functions that don't need to be generaly available down into the core. staging: iio: kfifo buffer - push structure definition down into implementation. staging: iio: chrdev.h rationalization. staging: iio: remove specific chrdev for event reading. Get fd from ioctl on buffer. staging: iio: squash chrdev handler remains into users. staging: iio: push the main buffer chrdev down to the top level. staging: iio: remove now defunct header definitions and add some statics staging: iio: Documentation sysfs-bus-iio update for chrdev merge. staging:iio: remove broken support for multiple event interfaces. staging:iio: use ida_simple_get and ida_simple_remove + merge ids staging:iio: remove defunct iio_put and iio_get. staging:iio: remove orphaned function definition. staging:iio:trivial add a string array for IIO_RAW and IIO_PROCESSED. staging:iio: struct iio_dev formatting cleanup and documentation fixes. staging:iio:buffering drag some stray docs back to correct place. staging:iio:buffering cleanup ring_buffer_register_ex naming. staging:iio: push "sysfs.h" and linux/irq.h out of iio.h staging:iio:light:tsl2563 remove use of IIO_CHAN macro and make use modifier defines. staging:iio:light:tsl2563 remove unused headers. staging:iio:fix using iio_priv or iio_dev after iio_unregister_device staging:iio:various cleanup regulator use paths. staging:iio: ABI rework - add in_ or out_ prefix to channnels staging:iio:Documentation sysfs-bus-iio add in and out prefixes staging:iio:scan element types: introduce endian description to the data format. staging:iio:various move default scan mask setting after ring register or remove staging:iio: Switch the channel masks to bitmaps so as to allow for more channels. staging:iio:events - new 64 bit code structure and push out drivers. staging:iio: rework of attribute registration. staging:iio:attrs - make address a u64 to allow event codes to be used. staging:iio:naming in the EV_BIT macro fix. staging:iio: Add capacitance type and average_raw chan info. staging:iio:add adaptive event types and missing extract_type macro. staging:iio: Differential channel handling - use explicit flag rather than types. staging:iio:dac:ad5791 chan spec conversion. staging:iio:adc:ad7150: chan_spec conv + i2c_smbus commands + drop unused poweroff timeout control. staging:iio:adc:ad7152 use smbus read / write functions + checkpatch fixes staging:iio:adc:ad7152 set correct number of channels for ad7153. staging:iio:adc:ad7152 bring more into line with abi. staging:iio:adc:ad7291 bring into line with current abi + chan_spec conversion. staging:iio:imu:adis16400 cleanups staging:iio:light: V3 fix out of bounds reg_cache[] access staging:iio:tree wide. abi fixup for in_ out_ prefix introduction. staging:iio:adc:ad7606 add channel type specification to range attributes. staging:iio: move id and device name setting to iio_device_allocate. staging:iio:documentation general refresh of abi docs. staging:iio:documentation Add abi docs for capacitance adcs. staging:iio: treewide rename iio_triggered_ring_* to iio_triggered_buffer_* staging:iio: tree wide IIO_RING_TRIGGERED -> IIO_BUFFER_TRIGGERED staging:iio: tree wide IIO_RING_BUFFER config symbol to IIO_BUFFER staging:iio: rename ring_generic.h -> buffer_generic.h staging:iio: replacing term ring with buffer in the IIO core. staging:iio:accel:lis3l02dq ring->buffer renames. staging:iio:magnetometer:ak8975 use platform_data to pass the gpio number. staging:iio: Prevent reading from buffer chrdev when device has no buffer. staging:iio: unwind the IIO_IN -> IIO_VOLTAGE define staging:iio:adc:ad799x fix incorrect scan_type descriptions. staging:iio:adc:ad799x stop using IIO_CHAN macro. staging:iio:adc:ad799x trivial: use the convenient chan struct. staging:iio:adc:ad799x use a table for frequency values rather than big switch. staging:iio:adc:ad799x avoid bouncing back and forth from iio_priv space. staging:iio:adc:ad799x use the core handling for as much of the events as possible. staging:iio:adc:ad799x set the device name only once. staging:iio:adc:ad799x address and scan_index always match so stop using address staging:iio:adc:ad7606 add local define for chan_spec structures. staging:iio:adc:ad7606 trivial code style fix. staging:iio:adc:ad7606 make gpio request failures more consistent staging;iio:adc:ad7606 use iio_sw_buffer_preenable rather than local equiv staging:iio:adc:ad7606 refactor to remove st->irq and st->id. staging:iio:adc:ad7606 remove unused chip info elements. staging:iio:adc:ad7887 stop using IIO_CHAN macro. staging:iio:imu:adis16400 rename adis16344 -> adis16334. staging: iio: if(__LITTLE_ENDIAN) -> #ifdef __LITTLE_ENDIAN staging:iio:adc:ad7314 removal. Supported via hwmon. staging:iio:lisght:isl29018 use IIO_PROCESSED enum value. staging:iio:resolver:ad2s90 fix registration of null pointer staging:iio:resolver:ad2s90 ensure name is passed to iio_core. staging:iio:resolver:ad2s90 chan spec conversion staging:iio: rename gyro channels to anglvel staging:iio:Documentation gyro -> anglvel updates in attribute names staging:iio:resolver:ad2s120x chan spec conversion staging:iio:resolver rename ad2s120x ->ad2s1200 staging:iio:resolver:ad2s1210 ensure iio_dev->name is set staging:iio:resolver:ad2s1210 minimal chan spec conversion. staging:iio:resolver:ad2s1210 drop raw config register access staging:iio:resolver:ad2s1210 cleanup gpio handling. staging:iio:core:naming: dev_info to indio_dev for consistency staging:iio:accel:sca3000 dev_info to indio_dev renaming. staging:iio:adc:naming: dev_info to indio_dev for consistency staging:iio:dac/dds/impedance dev_info to indio_dev for consistency staging:iio: gpio build dependency fixing staging:iio: fix removal path to allow correct freeing. staging:iio:adc:max1363 incorrect allocation of available_scanmasks staging:iio:Documentation Simple dummy driver to explain the basics staging:iio:dummy Add event support + fake event generator staging:iio:dummy Add buffered reading support hwmon: AD7314 driver (ported from IIO) i2c: Functions for byte-swapped smbus_write/read_word_data hwmon: convert idr to ida and use ida_simple interface drivers/hwmon/hwmon.c: convert idr to ida and use ida_simple_get() drivers/rtc/class.c: convert idr to ida and use ida_simple_get() w1: ds2760 and ds2780, use ida for id and ida_simple_get() to get it Jonathan Corbet (1): [media] videobuf2: Do not unconditionally map S/G buffers into kernel space Jonathan E Brassow (2): dm log userspace: add log device dependency dm: raid fix device status indicator when array initializing Jonathan Lallinger (1): RDMA/cxgb4: Use correct QID in insert_recv_cqe() Jonathan Neuschäfer (2): UserModeLinux-HOWTO.txt: remove ^H characters UserModeLinux-HOWTO.txt: fix a typo Jonathan Nieder (1): crypto: padlock-aes - Make module loading even quieter when hardware is missing Jonghun Han (1): [media] media: DocBook: Fix trivial typo in Sub-device Interface Jonghwan Choi (7): mtd: s3c2410 nand: Remove uncessary null check ARM: S5P: Remove duplicate kdiv calculation ARM: EXYNOS4: Add support PM for EXYNOS4212 PM / Clocks: Remove redundant NULL checks before kfree() mm/memblock.c: small function definition fixes driver/misc/fsa9480.c fix potential null-pointer dereference ARM: SAMSUNG: Fix compile error due to kfree Jongpill Lee (3): ARM: EXYNOS4: Modify PMU register setting function ARM: EXYNOS4: Add PMU register definition for EXYNOS4212 ARM: EXYNOS4: Support suspend/resume for EXYNOS4212 Joonyoung Shim (1): ARM: SAMSUNG: Add clk enable/disable of pwm Jose Alberto Reguero (3): [media] tda827x: improve recection with limit frequencies [media] ttusb2: add support for the dvb-t part of CT-3650 v3 [media] ttusb2: TT CT-3650 CI support Josef Bacik (60): Btrfs: move stuff around in btrfs_inode to get better packing Btrfs: kill reserved_bytes in inode Btrfs: use d_obtain_alias when mounting subvol/subvolid Btrfs: fix how we mount subvol= Btrfs: use bytes_may_use for all ENOSPC reservations Btrfs: skip looking for delalloc if we don't have ->fill_delalloc Btrfs: calculate checksum space correctly Btrfs: kill the orphan space calculation for snapshots Btrfs: kill the durable block rsv stuff Btrfs: fix how we reserve space for deleting inodes Btrfs: ratelimit the generation printk for the free space cache Btrfs: kill unused parts of block_rsv Btrfs: don't try to commit in btrfs_block_rsv_check Btrfs: optimize how we account for space in truncate Btrfs: kill btrfs_truncate_reserve_metadata Btrfs: only reserve space in fallocate if we have to do a preallocate Btrfs: reduce the amount of space needed for truncates Btrfs: allow callers to specify if flushing can occur for btrfs_block_rsv_check Btrfs: fix call to btrfs_search_slot in free space cache Btrfs: fix space leak when we fail to make an allocation Btrfs: don't increase the block_rsv's size when emergency allocating space Btrfs: set truncate block rsv's size Btrfs: put the block group cache after we commit the super Btrfs: handle enospc accounting for free space inodes Btrfs: use the transactions block_rsv for the csum root Btrfs: don't get the block_rsv in btrfs_free_tree_block Btrfs: stop passing a trans handle all around the reservation code Btrfs: make sure to unset trans->block_rsv before running delayed refs Btrfs: delay iput when deleting a block group Btrfs: use the inode's mapping mask for allocating pages Btrfs: fix orphan cleanup regression Btrfs: check unused against how much space we actually want Btrfs: introduce convert_extent_bit Btrfs: stop using write_one_page Btrfs: use the global reserve as a backup for deleting inodes Btrfs: break out of orphan cleanup if we can't make progress Btrfs: allow us to overcommit our enospc reservations Btrfs: only inherit btrfs specific flags when creating files Btrfs: introduce mount option no_space_cache Btrfs: don't skip writing out a empty block groups cache Btrfs: add a io_ctl struct and helpers for dealing with the space cache Btrfs: check the return value of filemap_write_and_wait in the space cache Btrfs: take overflow into account in reserving space Btrfs: inline checksums into the disk free space cache Btrfs: wait for ordered extents if we didn't reclaim enough Btrfs: fix the amount of space reserved for unlink Btrfs: fix regression in re-setting a large xattr Btrfs: don't check bytes_pinned to determine if we should commit the transaction Btrfs: wait for ordered extents if we're in trouble when shrinking delalloc Btrfs: allow shrink_delalloc flush the needed reclaimed pages Btrfs: release trans metadata bytes before flushing delayed refs Btrfs: reserve some space for an orphan item when unlinking Btrfs: seperate out btrfs_block_rsv_check out into 2 different functions Btrfs: if we have a lot of pinned space, commit the transaction Btrfs: don't flush the cache inode before writing it Btrfs: release metadata from global reserve if we have to fallback for unlink Btrfs: use the global reserve when truncating the free space cache inode Btrfs: make a delayed_block_rsv for the delayed item insertion Btrfs: be smarter about committing the transaction in reserve_metadata_bytes Btrfs: fix delayed insertion reservation Josef Holzmayr (1): at91: add support for RSIs EWS board Joseph Handzik (1): cciss: Adds simple mode functionality Josh Boyer (4): powerpc/40x: Remove obsolete HCU4 board PCI quirk: mmc: Always check for lower base frequency quirk for Ricoh 1180:e823 Update email address for stable patch submission edac: Only build sb_edac on 64-bit Josh Stone (2): x86, perf, kprobes: Make kprobes's twobyte_is_boostable volatile x86: Fix compilation bug in kprobes' twobyte_is_boostable Joshua V. Dillon (1): HID: add support for MacBookAir4,2 keyboard. Jouni Malinen (48): mac80211_hwsim: Fix RX status reporting for HT nl80211: Indicate driver-based offchannel TX on mgmt_tx_cancel_wait cfg80211/nl80211: Send AssocReq IEs to user space in AP mode nl80211/cfg80211: Make addition of new sinfo fields safer nl80211/cfg80211: Allow SSID to be specified in new beacon command nl80211/cfg80211: Add crypto settings into NEW_BEACON nl80211/cfg80211: Add extra IE configuration to AP mode setup ath6kl: Use cfg80211_inform_bss instead of cfg80211_inform_bss_frame ath6kl: Add functionality for starting AP mode ath6kl: Fix AP mode (Re)AssocReq IE processing ath6kl: Delay initial group key setup in AP mode ath6kl: Use change_station() to authorize/unauthorize STAs ath6kl: Add new WMI commands and events for P2P ath6kl: Implement remain_on_channel and cancel_remain_on_channel ath6kl: Implement mgmt_tx ath6kl: Request P2P capabilities during target init ath6kl: Add cfg80211 calls for remain-on-channel events ath6kl: Use set_appie command to add Probe Request IEs ath6kl: Report received Probe Request frames to cfg80211 ath6kl: Notify cfg80211 of TX status of mgmt_tx frames ath6kl: Report received Action frames to cfg80211 ath6kl: Advertise supported mgmt_stypes ath6kl: Add support for new P2P iftypes in mode changes ath6kl: Include P2P IE(s) in GO Probe Response depending on request ath6kl: Return error from wmi.c instead of -EIO in ath6kl_cfg80211_scan ath6kl: Define __CHECK_ENDIAN__ for sparse ath6kl: Do not enable Probe Request reporting by default athk6l: Fix channel list processing in scan requests ath6kl: Fix WMI message structure for AP_SET_PVB ath6kl: Fix AP mode connect event parsing and TIM updates ath6kl: Allow AP mode to be configured ath6kl: Allow enabling of P2P support ath6kl: Fix static WEP configuration in AP mode cfg80211/nl80211: Add PMKSA caching candidate event ath6kl: Fix BSS update on roaming ath6kl: Remove deprecated WMI_OPT_RX_FRAME_EVENTID processing ath6kl: Remove RSSI update for internal node table ath6kl: Remove unnecessary node table update on disconnect event ath6kl: Replace internal node table with cfg80211 BSS table ath6kl: Remove the unused node table implementation ath6kl: Remove unnecessary bssinfo event header conversion ath6kl: Update BSS information after connection ath6kl: Export beacon interval and DTIM period through STA info ath6kl: Report PMKSA candidate events through cfg80211 ath6kl: fix TCP corruption cfg80211: Remove strict validation of AKM suites cfg80211: Validate cipher suite against supported ciphers mac80211: Fix TDLS support validation in add_station handler Juan Gutierrez (1): hwspinlock/core: use a mutex to protect the radix tree Julia Lawall (20): drivers/video/msm/mdp.c: adjust error handling code fs/ext2/balloc.c: delete useless initialization fs/ext3/balloc.c: delete useless initialization sound/soc/mxs/mxs-saif.c: add missing kfree drivers/usb/host/ohci-omap3.c: test the just-initialized value drivers/staging/usbip/userspace/libsrc/vhci_driver.c: test the just-initialized value drivers/staging/bcm/nvm.c: add missing kfree drivers/net/wireless/mwifiex/scan.c: test the just-initialized value [media] drivers/media/dvb/dvb-usb/usb-urb.c: adjust array index [media] drivers/media/video/hexium_gemini.c: delete useless initialization [media] drivers/media/video/zr364xx.c: add missing cleanup code mtd: bcm_umi_nand: clean up error handling code drivers/staging/mei/interface.c: take size of pointed value, not pointer pseries/iommu: Add missing kfree [SCSI] mpt2sas: take size of pointed value, not pointer KVM: VMX: trivial: use BUG_ON RDMA/nes: Add missing calls to ib_umem_release() ASoC: keep pointer to resource so it can be freed mfd: Clean timberdale error handling code up HID: drivers/hid/hid-roccat.c: eliminate a null pointer dereference Julian Andres Klode (21): staging: nvec: Include missing headers staging: nvec: Introduce new internal API for msg alloc/free staging: nvec: Introduce nvec_gpio_set_value() staging: nvec: Add is_event() and size() functions for nvec_msg staging: nvec: Rewrite the interrupt handler staging: nvec: Do not print free message for tx_scratch staging: nvec: Add myself to copyright and authors list staging: nvec: Enable the capslock LED in the keyboard driver staging: nvec: Have nvec_write_async() return -ENOMEM on OOM staging: nvec: Document public and private API staging: nvec: Move implementation-only macros out of the header staging: nvec: Export nvec_msg_free() to clients staging: nvec: Allow TX buffers only in the upper 75% of the pool staging: nvec: Handle filled up RX buffers staging: nvec: Reject incomplete messages staging: nvec: Return error in PS2 driver if write fails staging: nvec: ps2: Always sample 4 bytes instead of just 1 staging: nvec: Add battery quirk to ignore incomplete responses staging: nvec: Add myself to MAINTAINERS staging: nvec: Add missing includes and reorder them staging: nvec: Add a udelay(100) to nvec_interrupt Julian Scheel (1): [media] Add support for new revision of KNC 1 DVB-C cards. Using tda10024 instead of tda10023, which is compatible to tda10023 driver Jussi Kivilinna (13): crypto: blowfish - split generic and common c code crypto: blowfish - rename C-version to blowfish_generic crypto: tcrypt - add ctr(blowfish) speed test crypto: blowfish - add x86_64 assembly implementation crypto: blowfish-x86_64 - improve x86_64 blowfish 4-way performance crypto: blowfish-x86_64 - add credits crypto: tcrypt - add ctr(twofish) speed test crypto: twofish-x86-asm - make assembler functions use twofish_ctx instead of crypto_tfm crypto: twofish - add 3-way parallel x86_64 assembler implemention crypto: blowfish-x86_64 - fix ctr blocksize to 1 crypto: twofish-x86_64-3way - fix ctr blocksize to 1 crypto: testmgr - add blowfish test-vectors crypto: testmgr - add twofish tests Justin P. Mattock (4): lib: Kconfig.debug: Typo remove extra "it" mm/vmscan.c: fix a typo in a comment "relaimed" to "reclaimed" ipw2x00: comment typo fix encryptiong to encryption treewide: remove extra semicolons from various parts of the kernel K. Y. Srinivasan (165): Staging: hv: vmbus: Don't wait indefinitely for IRQ resouces Staging: hv: tools: Fix a checkpatch warning in hv_kvp_daemon.c Staging: hv: vmbus: Fix checkpatch warnings Staging: hv: util: kvp: Fix the reported OSVersion string Staging: hv: util: kvp: Cleanup kvp_get_domain_name() Staging: hv: vmbus: VMBUS is an ACPI enumerated device, get rid of the PCI signature Staging: hv: Replace struct hv_guid with the uuid type already defined in Linux Staging: hv: Add struct hv_vmbus_device_id to mod_devicetable.h Staging: hv: Add code to parse struct hv_vmbus_device_id table Staging: hv: vmbus: Introduce vmbus ID space in struct hv_driver Staging: hv: blkvsc: Use the newly introduced vmbus ID in the blockvsc driver Staging: hv: storvsc: Use the newly introduced vmbus ID in storvsc driver Staging: hv: netvsc: Use the newly introduced vmbus ID in netvsc driver Staging: hv: mousevsc: Use the newly introduced vmbus ID in mouse driver Staging: hv: util: Make hv_utils a vmbus device driver Staging: hv: vmbus: Cleanup vmbus_match() Staging: hv: vmbus: Cleanup vmbus_uevent() code Staging: hv: vmbus: Support the notion of id tables in vmbus_match() Staging: hv: vmbus: Get rid of an unnecessary include line in vmbus_drv.c Staging: hv: storvsc: Get rid of the DMI signature Staging: hv: netvsc: Get rid of the PCI signature Staging: hv: netvsc: Get rid of the DMI signature in netvsc_drv.c Staging: hv: util: Get rid of the DMI signature in hv_util.c Staging: hv: util: Get rid of the PCI signature in hv_util.c Staging: hv: vmbus: Get rid of some unnecessary comments Staging: hv: vmbus: Cleanup unnecessary comments in hv.c Staging: hv: vmbus: Cleanup error handling in hv_init() Staging: hv: vmbus: Get rid of unnecessay comments in connection.c Staging: hv: vmbus: Get rid of the function dump_gpadl_body() Staging: hv: vmbus: Get rid of the function dump_gpadl_header() Staging: hv: vmbus: Rename openMsg to open_msg in channel.c Staging: hv: vmbus: Get rid of unnecessary comments in channel.c Staging: hv: vmbus: Change the variable name openInfo to open_info in channel.c Staging: hv: vmbus: Cleanup error values in ringbuffer.c Staging: hv: vmbus: Cleanup the error return value in vmbus_recvpacket_raw() Staging: hv: netvsc: Get rid of an unnecessary print statement in netvsc_probe() Staging: hv: vmbus: Retry vmbus_post_msg() before giving up Staging: hv: storvsc: Cleanup error handling in storvsc_dev_add() Staging: hv: storvsc: Cleanup error handling in storvsc_channel_init() Staging: hv: storvsc: Cleanup error handling in storvsc_connect_to_vsp() Staging: hv: storvsc: Cleanup error handling in storvsc_do_io() Storage: hv: storvsc: Get rid of some unnecessary DPRINTs from storvsc.c Staging: hv: storvsc: Fix/cleanup some dated comments in storvsc.c Staging: hv: storvsc: Cleanup returned error code in storvsc_host_reset() Staging: hv: storvsc: Cleanup error code returned in storvsc_probe() Staging: hv: storvsc: Cleanup returned error code in storvsc_drv_init() Staging: hv: netvsc: Cleanup the returned error code in netvsc_probe() Staging: hv: netvsc: Cleanup error return codes in netvsc_destroy_recv_buf() Staging: hv: netvsc: Cleanup error return values in netvsc_init_recv_buf() Staging: hv: netvsc: Cleanup error returns in netvsc_connect_vsp() Staging: hv: netvsc: Cleanup error return values in netvsc_send() Staging: hv: netvsc: Cleanup error return codes in netvsc_device_add() Staging: hv: netvsc: Cleanup error codes in rndis_filter_receive() Staging: hv: netvsc: Cleanup error code in rndis_filter_query_device() Staging: hv: netvsc: Cleanup error return values in rndis_filter_set_packet_filter() Staging: hv: netvsc: Cleanup error returns in rndis_filter_init_device() Staging: hv: netvsc: Cleanup error code in rndis_filter_device_add() Staging: hv: mouse: Change the jump label Cleanup to cleanup Staging: hv: netvsc: Change the jump label Cleanup to cleanup Staging: hv: netvsc: Change the jump label Exit to exit Staging: hv: mouse: Get rid of the unused PCI signature Staging: hv: storvsc: Inline free_stor_device() Staging: hv: storvsc: Do not aquire an unnecessary reference on stor_device Staging: hv: storvsc: Rename must_get_stor_device() Staging: hv: storvsc: Rename get_stor_device() Staging: hv: storvsc: Cleanup alloc_stor_device() Staging: hv: storvsc: Introduce state to manage the lifecycle of stor device Staging: hv: storvsc: Prevent outgoing traffic when stor dev is being destroyed Staging: hv: storvsc: Get rid of release_stor_device() by inlining the code Staging: hv: storvsc: Get rid of final_release_stor_device() by inlining code Staging: hv: storvsc: Get rid of the reference counting in struct storvsc_device Staging: hv: netvsc: Inline the code for free_net_device() Staging: hv: netvsc: Cleanup alloc_net_device() Staging: hv: netvsc: Introduce state to manage the lifecycle of net device Staging: hv: netvsc: Prevent outgoing traffic when netvsc dev is destroyed Staging: hv: netvsc: Get rid of release_outbound_net_device() by inlining the code Staging: hv: netvsc: Get rid of release_inbound_net_device() by inlining the code Staging: hv: netvsc: Get rid of the refcnt field in struct netvsc_device Staging: hv: storvsc: Add code to handle IDE devices using the storvsc driver Staging: hv: storvsc: Handle IDE devices using the storvsc driver Staging: hv: blkvsc: Get rid of blkvsc_drv.c as this code is not used Staging: hv: storvsc: Optimize bounce buffer handling for the "write" case Staging: hv: storvsc: Optimize the bounce buffer handling in the "read" case Staging: hv: storvsc: Include storvsc.c in storvsc_drv.c Staging: hv: storvsc: Cleanup storvsc_drv.c after adding the contents of storvsc.c Staging: hv: storvsc: Add the contents of hyperv_storage.h to storvsc_drv.c Staging: hv: storvsc: Cleanup storvsc_drv.c after adding the contents of hyperv_storage.h Staging: hv: storvsc: Fixup srb and scsi status for INQUIRY and MODE_SENSE Staging: hv: storvsc: Fix a typo Staging: hv: storvsc: In case of scsi errors offline the device Staging: hv: storvsc: No need to copy from bounce buffer in case of a failure Staging: hv: util: Forcefully shutdown when shutdown is requested Staging: hv: util: Adjust guest time in a process context Staging: hv: vmbus: Check before invoking the channel callback Staging: hv: vmbus: Properly deal with de-registering channel callback Staging: hv: Fix a bug in vmbus_match() Staging: hv: vmbus: Get rid of vmbus_on_isr() by inlining the code Staging: hv: vmbus: Do not enable auto eoi Staging: hv: vmbus: Fixup indentation in vmbus_acpi_add() Staging: hv: vmbus: Get rid of some dated/redundant comments Staging: hv: vmbus: Get rid of an unnecessary check in vmbus_connect() Staging: hv: vmbus: Fix a checkpatch warning in ring_buffer.c Staging: hv: vmbus: Fix checkpatch warnings in connection.c Staging: hv: mousevsc: Fix checkpatch errors and warnings Staging: hv: util: Deal with driver register failures Staging: hv: vmbus: Fix a bug in error handling in vmbus_bus_init() Staging: hv: vmbus: Check for events before messages Staging: hv: vmbus: Cleanup the code in process_chn_event() Staging: hv: Update TODO file x86: Hyper-V: Integrate the clocksource with Hyper-V detection code Staging: hv: vmbus: Rename vmbus_child_device_create Staging: hv: vmbus: Rename vmbus_child_device_register Staging: hv: vmbus: Rename vmbus_child_device_unregister Staging: hv: vmbus: Cleanup dated comments in channel_mgmt.c Staging: hv: vmbus: Introduce a utility function to match hv_vmbus_device_id Staging: hv: vmbus: Change the signature of struct hv_driver probe function Staging: hv: storvsc: Use the driver_data to identify ide Staging: hv: vmbus: Introduce functions for setting and getting driver data Staging: hv: vmbus: Cleanup vmbus_remove() Staging: hv: storvsc: Get rid of storvsc_dev_add() by inlining the code Staging: hv: storvsc: Get rid of alloc_stor_device() by inlining the code Staging: hv: storvsc: Get rid of some unnecessary state and definitions Staging: hv: storvsc: Eliminate the usage of ext field in struct hv_device Staging: hv: netvsc: Get rid of the usage of the ext field in struct hv_device Staging: hv: mousevsc: Get rid of the usage of the ext field in struct hv_device Staging: hv: vmbus: Get rid of the ext field in struct hv_device Staging: hv: vmbus: Do not allocate struct hv_device_info on the stack Staging: hv: vmbus: Get rid of the module dependency Staging: hv: netvsc: Rename netDevice as net_device Staging: hv: netvsc: Rename rndisDevice to rndis_device Staging: hv: netvsc: Rename deviceInfo as device_info Staging: hv: netvsc: Cleanup the name and type of link_stat variable Staging: hv: util: Perform some service specific init/deinit in probe/remove Staging: hv: util: Properly handle util services in the util driver Staging: hv: vmbus: Get rid of hv_cb_utils[] and other unneeded code Staging: hv: Update the TODO file Staging: hv: mousevsc: Fixup struct hv_input_dev_info Staging: hv: mousevsc: Get rid of the struct input_device_context Staging: hv: mousevsc: Fixup some bogus WARN_ON() calls Staging: hv: mousevsc: Change the allocation flags to reflect interrupt context Staging: hv: mousevsc: Handle the case where we may get bogus report desc size Staging: hv: mousevsc: Correctly initialize the header size Staging: hv: mousevsc: Use completion primitive to synchronize Staging: hv: mousevsc: Cleanup and properly implement reportdesc_callback() Staging: hv: mousevsc: Get rid of unnecessary DPRINT calls Staging: hv: mousevsc: Cleanup error handling Staging: hv: mousevsc: Get rid of unnecessary pr_* calls Staging: hv: mousevsc: Free allocated memory in free_input_device() Staging: hv: mousevsc: Get rid of the unused state: num_outstanding_req Staging: hv: mousevsc: Cleanup alloc_input_device() Staging: hv: mousevsc: Get rid of mousevsc_on_send_completion() Staging: hv: mousevsc: Cleanup mousevsc_connect_to_vsp() Staging: hv: mousevsc: Get rid of mousevsc_on_device_remove() by inlining code Staging: hv: mousevsc: Now cleanup mousevsc_remove() Staging: hv: mousevsc: Get rid of ref_count state in struct mousevsc_dev Staging: hv: mousevsc: Cleanup camel cased enums Staging: hv: mousevsc: Get rid of mousevsc_on_receive_input_report() by inlining Staging: hv: mousevsc: Cleanup mousevsc_on_device_add() Staging: hv: mousevsc: Enable autoloading of the mouse driver Staging: hv: mousevsc: Get rid of unnecessary comments Staging: hv: util: Fix a bug in kvp implementation Staging: hv: util: Invoke cn_netlink_send() in a work context Staging: hv: netvsc: Fix a dereferencing issue Staging: hv: mousevsc: Fix a checkpatch warning Staging: hv: storvsc: Fix checkpatch warnings KAMEZAWA Hiroyuki (1): memcg: fix oom schedule_timeout() KOVACS Krisztian (1): tproxy: copy transparent flag when creating a time wait Kai Jiang (1): uio: Support physical addresses >32 bits on 32-bit systems Kailang Yang (1): ALSA: hda - ALC888S-VC remark to ALC886 Kalle Valo (39): Add ath6kl cleaned up driver ath6kl: don't force foreground scan when connected ath6kl: fix atomicity in ath6kl_cfg80211_scan_node() ath6kl: fix crash when interface is closed but scan is ongoing ath6kl: remove dependency to wireless extensions ath6kl: change aggreation timeout message from an error to a debug message ath6kl: fix function name conflicts with ath9k staging: remove ath6kl staging: remove ath6kl ath6kl: fix indentation in htc_issued_send() ath6kl: implement suspend support ath6kl: add testmode support ath6kl: fix compilation when NL80211_TESTMODE is disabled ath6kl: add firmware log support ath6kl: implement support to set firmware log parameters ath6kl: cleanup diagnose window read and write functions ath6kl: read fwlog from firmware ring buffer ath6kl: unify tx function names in htc.c ath6kl: unify rx function naming in htc.c ath6kl: separate firmware fetch from upload ath6kl: fix busy loop in ath6kl_bmi_get_rx_lkahd() ath6kl: add support for firmware API 2 format ath6kl: refactor firmware load address code ath6kl: refactor firmware ext data addr and reserved ram handling size ath6kl: read firmware start address from hardware ath6kl: read reserved ram size from firmware file ath6kl: add firmware capabilities support MAINTAINERS: update ath6kl Merge remote branch 'wireless-next/master' into ath6kl-next ath6kl: pass only unicast frames for aggregation ath6kl: allow firmware to override firmware patch address ath6kl: silence "invalid rate" warning ath6kl: add prefix parameter to ath6kl_dbg_dump() ath6kl: add sdio debug messages ath6kl: add debug logs for booting ath6kl: improve wmi debug messages ath6kl: fix size_t related warnings ath6kl: include vmalloc.h in debug.c of: include errno.h Kamalesh Babulal (1): sched: x86_32 Fix typo in switch_to() description Kamil Debski (1): [media] media: s5p-mfc: fix section mismatch Kantecki, Tomasz (1): igb: Fix for I347AT4 PHY cable length unit detection Karl Komierowski (1): mfd: Refactor ab8500 GPADC API, add raw access Karl Tsou (1): ASoC: Add DRC control for WM8996 Kartik Mohta (1): libertas_tf: deb_defs.h: Fix typo in include guard Kautuk Consul (5): staging: quatech_usb2: Potential lost wakeup scenario in TIOCMIWAIT xhci-mem.c: Check for ring->first_seg != NULL xhci-mem.c: xhci_segment_free: No need for checking seg argument mm/mmap.c: eliminate the ret variable from mm_take_all_locks() vmscan.c: fix invalid strict_strtoul() check in write_scan_unevictable_node() Kay Sievers (2): drivers/video/udlfb bind framebuffer to interface. loop: always allow userspace partitions and optionally support automatic scanning Kazuya Mio (1): ext4: fix the deadlock in mpage_da_map_and_submit() Keith Packard (33): drm/i915: Enable dither whenever display bpc < frame buffer bpc Merge branch 'drm-intel-fixes' into drm-intel-next drm/i915: broken copyright encoding in intel_bios.c drm/i915: Use DRM_DEBUG_KMS for all messages in intel_bios.c drv/i915: Pull display_clock_mode out of VBT table drm/i915: Document a few more BDB_GENERAL_FEATURES bits from PCH BIOS drm/i915: Allow SSC parameter to override VBT value drm/i915: Fix PCH SSC reference clock settings drm/i915: Use CK505 as non-SSC source where available drm/i915: All PCH refclks are 120MHz drm/i915: Initialize PCH refclks at modeset init time Merge branch 'drm-intel-fixes' into drm-intel-next drm/i915: Enable digital port hotplug on PCH systems drm/i915: Shut down PCH interrupts during irq_uninstall drm/i915: Only use VBT panel mode on eDP if no EDID is found drm/i915: Check eDP power when doing aux channel communications drm/i915: Unlock PCH_PP_CONTROL always drm/i915: Check for eDP inside edp panel on/off funcs drm/i915: Turn force VDD back off when panel running in intel_dp_dpms drm/i915: Ensure panel is on during DPMS off drm/i915: Delay DP i2c initialization until panel power timings are computed drm/i915: Wrap DP EDID fetch functions to enable eDP panel power drm/i915: Enable eDP panel power during I2C initialization sequence drm/i915: Ensure eDP powered up during DP_SET_POWER operation in dp_prepare drm/i915: Correct eDP panel power sequencing delay computations drm/i915: Move eDP panel fixed mode from dev_priv to intel_dp drm/i915: edp_panel_on does not need to return a bool drm/i915: Create helper functions to determine eDP power state drm/i915: Disable eDP VDD in a delayed work proc instead of synchronously drm/i915: Restrict ILK-specific eDP power hack to ILK drm/i915: No need to wait for eDP power off delay if panel is on Merge branch 'edp-training-fixes' into drm-intel-next Merge branch 'fix-pch-refclk' into foo Ken Milmore (1): drm/nouveau: enable hwmon support when both nouveau/hwmon are built as modules. Kenneth Graunke (2): drm/i915: Remove implied length of 2 from GFX_OP_PIPE_CONTROL #define. drm/i915: Rename PIPE_CONTROL bit defines to be less terse. Kevin Fang (1): ath6kl: Add beginning of AR6004 initialisation support Kevin Hilman (60): OMAP2+: hwmod: remove unused voltagedomain pointer OMAP2+: voltage: move PRCM mod offets into VC/VP structures OMAP2+: voltage: move prm_irqst_reg from VP into voltage domain OMAP2+: voltage: start towards a new voltagedomain layer OMAP3: voltage: rename "mpu" voltagedomain to "mpu_iva" OMAP3: voltagedomain data: add wakeup domain OMAP3+: voltage: add scalable flag to voltagedomain OMAP2+: powerdomain: add voltagedomain to struct powerdomain OMAP2: add voltage domains and connect to powerdomains OMAP3: powerdomain data: add voltage domains OMAP2+: powerdomain: add voltage domain lookup during register OMAP2+: voltage: keep track of powerdomains in each voltagedomain OMAP2+: voltage: split voltage controller (VC) code into dedicated layer OMAP2+: voltage: move VC into struct voltagedomain, misc. renames OMAP2+: voltage: enable VC bypass scale method when VC is initialized OMAP2+: voltage: split out voltage processor (VP) code into new layer OMAP2+: VC: support PMICs with separate voltage and command registers OMAP2+: add PRM VP functions for checking/clearing VP TX done status OMAP3+ VP: replace transaction done check/clear with VP ops OMAP2+: PRM: add register access functions for VC/VP OMAP3+: voltage: convert to PRM register access functions OMAP3+: VC: cleanup i2c slave address configuration OMAP3+: VC: cleanup PMIC register address configuration OMAP3+: VC bypass: use fields from VC struct instead of PMIC info OMAP3+: VC: cleanup voltage setup time configuration OMAP3+: VC: move on/onlp/ret/off command configuration into common init OMAP3+: VC: abstract out channel configuration OMAP3+: voltage domain: move PMIC struct from vdd_info into struct voltagedomain OMAP3+: VC: make I2C config programmable with PMIC-specific settings OMAP3+: PM: VC: handle mutant channel config for OMAP4 MPU channel OMAP3+: VC: use last nominal voltage setting to get current_vsel OMAP3+: VP: cleanup: move VP instance into voltdm, misc. renames OMAP3+: voltage: remove unneeded debugfs interface OMAP3+: VP: struct omap_vp_common: replace shift with __ffs(mask) OMAP3+: VP: move SoC-specific sys clock rate retreival late init OMAP3+: VP: move timing calculation/config into VP init OMAP3+: VP: create VP helper function for updating error gain OMAP3+: VP: remove omap_vp_runtime_data OMAP3+: VP: move voltage scale function pointer into struct voltagedomain OMAP3+: VP: update_errorgain(): return error if VP OMAP3+: VP: remove unused omap_vp_get_curr_volt() OMAP3+: VP: combine setting init voltage into common function OMAP3+: voltage: rename scale and reset functions using voltdm_ prefix OMAP3+: voltage: move/rename curr_volt from vdd_info into struct voltagedomain OMAP3+: voltdm: final removal of omap_vdd_info OMAP3+: voltage: rename omap_voltage_get_nom_volt -> voltdm_get_voltage OMAP3+: voltage: update nominal voltage in voltdm_scale() not VC post-scale OMAP2+: VC: more registers are per-channel starting with OMAP5 OMAP: omap_device: replace debug/warning/error prints with dev_* macros OMAP: omap_device: remove internal functions from omap_device.h OMAP: omap_device: when building return platform_device instead of omap_device OMAP: omap_device: device register functions now take platform_device pointer OMAP: omap_device: _disable_idle_on_suspend() takes platform_device pointer OMAP: omap_device: decouple platform_device from omap_device OMAP3: PM: fix UART handling when using no_console_suspend ARM: OMAP: voltage: voltage layer present, even when CONFIG_PM=n ARM: 7082/1: platform_device: pdev_archdata: add omap_device pointer I2C: OMAP: remove unneccesary use of pdev I2C: OMAP: remove dev->idle, use usage counting provided by runtime PM I2C: OMAP: remove unused function pointers from pdata Kevin McKinney (16): staging: bcm: fix coding style warnings and errors reported by checkpatch.pl tool Staging: bcm: Fix a coding style error reported by checkpatch.pl Staging: bcm: Fix memory leak reported during compile. Staging: bcm: Add size minimum size restrictions for IOCTL_IDLE_REQ Staging: bcm: Add size maximum size restrictions for IOCTL_IDLE_REQ Staging: bcm: Add min/max restrictions for IOCTL_BCM_REGISTER_READ_PRIVATE Staging: bcm: Alter LOC for readability/understandability purposes Staging: bcm: Fix coding style issues reported by checkpatch.pl Staging: bcm: Replace dated variable __FUNCTION__ reported by checkpatch.pl Staging: bcm: Remove assignment in if condition reported by checkpatch.pl Staging: bcm: Fix assignment issue in if statement reported by checkpatch.pl. Staging: bcm: Fix coding style issues reported by checkpatch.pl Staging: bcm: Remove assignment from if conditions reported by checkpatch.pl Staging: bcm: Fix coding style issues in InterfaceMisc.c Staging: bcm: Fix coding style issues in InterfaceDld.c Staging: bcm: Fix three initialization errors in InterfaceDld.c Kevin Tian (1): KVM: APIC: avoid instruction emulation for EOI writes Kevin Wilson (1): cleanup: remove unnecessary include. Kevin Winchester (2): x86: jump_label: arch_jump_label_text_poke_early: add missing __init x86, perf: Clean up perf_event cpu code Kim Phillips (1): crypto: talitos - handle descriptor not found in error path Kirill A. Shutemov (1): intel_scu_ipcutil: fix major device number handling Kirill Tkhai (1): m68k: Finally remove leftover markers sections Kjetil Oftedal (1): sparc: Add alignment flag to PCI expansion resources Klaus Schwarzkopf (2): usb gadget: clean up FSF boilerplate text usb: gadget: add new usb gadget for ACM and mass storage Konrad Rzeszutek Wilk (27): Revert "xen/debug: WARN_ON when identity PFN has no _PAGE_IOMAP flag set." xen-pcifront: Update warning comment to use 'e820_host' option. xen-swiotlb: Retry up three times to allocate Xen-SWIOTLB xen-swiotlb: Fix wrong panic. xen-swiotlb: When doing coherent alloc/dealloc check before swizzling the MFNs. xen/pciback: Use mutexes when working with Xenbus state transitions. xen/pciback: use mutex rather than spinlock in vpci backend xen/p2m: Make debug/xen/mmu/p2m visible again. xen/p2m: Use SetPagePrivate and its friends for M2P overrides. xen/pv-on-hvm:kexec: Fix implicit declaration of function 'xen_hvm_domain' 8250: ratelimit LSR safety check engaged warning. xen/pciback: Add flag indicating device has been assigned by Xen xen-blkfront: If no barrier or flush is supported, use invalid operation. xen/blkback: Support 'feature-barrier' aka old-style BARRIER requests. xen/blkback: Report VBD_WSECT (wr_sect) properly. xen/blkback: Fix the inhibition to map pages when discarding sector ranges. xen/blkback: Check for proper operation. xen/blkback: Fix two races in the handling of barrier requests. xen/pciback: Do not dereference psdev during printk when it is NULL. xen/pciback: Check if the device is found instead of blindly assuming so. xen/events: BUG() when we can't allocate our event->irq array. xen/events: Don't check the info for NULL as it is already done. xen/irq: If we fail during msi_capability_init return proper error code. xen/xenbus: Remove the unnecessary check. xen/enlighten: Fix compile warnings and set cx to known value. xen/p2m/debugfs: Fix potential pointer exception. xen/p2m/debugfs: Make type_name more obvious. Konstantin Khlebnikov (2): vfs: fix dentry leak in simple_fill_super() usbnet: fix oops in usbnet_start_xmit Konstantin Ozerkov (1): ALSA: intel8x0: Improve performance in virtual environment Krishna Kumar (2): virtio_net: Clean up set_skb_frag() virtio: Dont add "config" to list for !per_vq_vector Kristen Carlson Accardi (1): hsu: add runtime pm support Kristian Amlie (1): ALSA: usb-audio: add Starr Labs USB MIDI support Kristoffer Glembo (1): video: Add Aeroflex Gaisler GRVGA framebuffer device driver Krzysztof Wilczynski (3): ipvs: Expose ip_vs_ftp module parameters via sysfs. ipvs: Remove unused variable "cs" from ip_vs_leave function. ipvs: Fix compilation error in ip_vs.h for ip_vs_confirm_conntrack function. Kukjin Kim (50): ARM: EXYNOS4: Turn the mach-smdkc210.c into mach-smdv310.c ARM: SAMSUNG: Add support for detecting CPU at runtime ARM: S5P64X0: Use soc_is_s5p64x0() to distinguish cpu at runtime ARM: SAMSUNG: Add support for handling of cpu revision ARM: EXYNOS4: Use samsung_rev() to distinguish silicon revision tty: Add support serial for EXYNOS4212 SoC Merge branch 'next/topic-cleanup-dma' into next-samsung-cleanup ARM: S3C24XX: remove unused gpio codes Merge branch 'next/topic-cleanup-smdkv310' into next-samsung-cleanup Merge branch 'next/topic-cpuid-rev' into next/topic-add-exynos4212 Merge branch 'next/topic-cleanup-smdkv310' into next/topic-add-exynos4212 ARM: EXYNOS4: Add support new EXYNOS4212 SoC ARM: EXYNOS4: Add support clock for EXYNOS4212 ARM: EXYNOS4: Add support SMDK4212 Board Merge branch 'next-samsung-board-v3.1' into next-samsung-board ARM: SAMSUNG: Move map header file into plat-samsung Merge branch 'next/topic-plat-samsung-1' into next-samsung-cleanup Merge branch 'samsung_dma' of git://git.infradead.org/users/vkoul/slave-dma into next/topic-dma-samsung Merge branch 'next/topic-dma-pl330-devname-fix' into next/topic-dma-samsung gpio/s3c24xx: move gpio driver into drivers/gpio/ gpio/s3c64xx: move gpio driver into drivers/gpio/ gpio/s5p64x0: move gpio driver into drivers/gpio/ gpio/samsung: gpio-samsung.c to support Samsung GPIOs ARM: SAMSUNG: Update the name of regarding Samsung GPIO ARM: SAMSUNG: Remove useless Samsung GPIO related CONFIGs Merge branch 'next-samsung-board-v3.1' into next/topic-exynos4-devel-origen Merge branch 'next/topic-s3c64xx-devel' into next-samsung-devel Merge branch 'next/topic-exynos4-devel' into next-samsung-devel Merge branch 'next/topic-dma-samsung' into next-samsung-devel Merge branch 'next/topic-gpio-samsung' into next-samsung-devel ARM: SAMSUNG: Cleanup mach/clkdev.h ARM: SAMSUNG: Consolidate plat/pwm-clock.h ARM: SAMSUNG: Consolidate plat/pll.h ARM: SAMSUNG: Moving each SoC support header files ARM: SAMSUNG: Move S3C24XX header files to plat-samsung ARM: SAMSUNG: Move S5P header files to plat-samsung Merge branch 'next-samsung-cleanup' into next-samsung-devel-2 Merge branch 'next-samsung-board' into next-samsung-devel-2 Merge branch 'next-samsung-devel' into next-samsung-devel-2 Merge branch 'next-samsung-cleanup-2' into next-samsung-devel-2 Merge branch 'next-samsung-board-2' into next-samsung-devel-2 ARM: S3C24XX: To merge s3c24xx devs.c files to one devs.c ARM: S3C64XX: To merge devs.c files to one devs.c ARM: S5P: To merge devs.c files to one devs.c ARM: SAMSUNG: Cleanup plat-samsung/devs.c and devs.h ARM: SAMSUNG: Cleanup resources by using macro ARM: EXYNOS4: Remove useless codes on NURI board ARM: EXYNOS4: Fix the merge conflict ARM: 7134/1: Revert "EXYNOS4: Fix routing timer interrupt to offline CPU" ARM: EXYNOS: Add ARCH_EXYNOS and reorganize arch/arm/mach-exynos Kumar Appaiah (1): Documentation: thinkpad-acpi grammo fixes Kumar Gala (6): powerpc/85xx: Rename PowerPC core nodes to match other e500mc based .dts powerpc/fsl-booke: Handle L1 D-cache parity error correctly on e500mc powerpc: respect mem= setting for early memory limit setup powerpc/fsl-booke: Fix setup_initial_memory_limit to not blindly map powerpc/85xx: Setup secondary cores PIR with hard SMP id powerpc/85xx: Add 'fsl,pq3-gpio' compatiable for GPIO driver Kumar Sanghvi (6): RDMA/iwcm: Propagate ird/ord values upwards RDMA/{amso1100,cxgb3}: Minimal MPAv2 support RDMA/cxgb4: Add support for MPAv2 Enhanced RDMA Negotiation RDMA/cxgb4: Make sure flush CQ entries are collected on connection close RDMA/cxgb3: Serialize calls to CQ's comp_handler RDMA/cxgb4: Serialize calls to CQ's comp_handler Kuninori Morimoto (37): sh: ecovec: add renesas_usbhs DMAEngine support USB: use usb_endpoint_maxp() instead of le16_to_cpu() net/irda: sh_irda: add sh_irda_ prefix to all functions net/irda: sh_irda: update author's email address net/irda: sh_irda: add PM support ASoC: ak4642: fixup cache register table usb: gadget: renesas_usbhs: add suspend/resume support usb: gadget: renesas_usbhs: move USBHSF_PKT_xxx to pipe.c usb: gadget: renesas_usbhs: remove desc from usbhs_pipe_malloc usb: gadget: renesas_usbhs: each pipe hold maxpacket size usb: gadget: renesas_usbhs: struct usbhs_pipe hold handler usb: gadget: renesas_usbhs: tidyup INTENB0 method usb: gadget: renesas_usbhs: change usbhsc_bus_ctrl() to usbsc_set_buswait() usb: gadget: renesas_usbhs: add bus control functions usb: gadget: renesas_usbhs: add usbhs_bus_get_speed() usb: gadget: renesas_usbhs: move usbhsp_type() to usbhs_pipe_type() usb: gadget: renesas_usbhs: move usbhs_usbreq_get/set_val() to common.c usb: gadget: renesas_usbhs: remove unneeded parameter from usbhs_mod_is_host() usb: gadget: renesas_usbhs: add usbhs_dcp_dir_for_host() usb: gadget: renesas_usbhs: add struct usbhs_priv to packet done function usb: gadget: renesas_usbhs: add device select support in usbhs_pipe_config_update() usb: gadget: renesas_usbhs: add usbhs_pipe_name() usb: gadget: renesas_usbhs: move done callback to struct usbhs_pkt usb: gadget: renesas_usbhs: disable auto paket start on usbhs_pkt_push() usb: gadget: renesas_usbhs: modify pipe sequence settings usb: gadget: renesas_usbhs: disable pipe on top of interrupt usb: gadget: renesas_usbhs: support otg pin control usb: gadget: renesas_usbhs: make sure SOF packet sending-out control usb: gadget: renesas_usbhs: add usbhs_set_device_speed() support for host usb: gadget: renesas_usbhs: add INTSTS1 interrupt support usb: gadget: renesas_usbhs: add data/status stage handler usb: gadget: renesas_usbhs: usbhs_dcp_control_transfer_done() cares mod_host usb: gadget: renesas_usbhs: add mod_host support usb: gadget: renesas_usbhs: bugfix: don't modify platform data usb: gadget: renesas_usbhs: fixup driver compile style usb: renesas_usbhs: tidyup for smatch warnings usb: renesas_usbhs: fixup inconsistent return from usbhs_pkt_push() Kyle Manna (2): mfd: Turn on the twl4030-madc MADC clock arm: BeagleBoard: add support for the twl4030-madc Kyle Moffett (1): of_mdio: Don't phy_scan_fixups() twice Kyungmin Park (4): mtd: OneNAND: Detect the correct NOP when 4KiB pagesize mmc: core: mmc sanitize feature support for v4.5 mmc: core: new discard feature support at eMMC v4.5 mm: compaction: make compact_zone_order() static Lalit Chandivade (5): [SCSI] qla4xxx: Fix bidirectional CHAP. [SCSI] qla4xxx: Do not add duplicate CHAP entry in FLASH [SCSI] qla4xxx: Fix exporting boot targets to sysfs [SCSI] qla4xxx: Fix getting BIDI CHAP for boot targets [SCSI] qla4xxx: Free Device Database (DDB) reserved by FW Larry Finger (306): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 rtlwifi: Eliminate raw reads and writes from PCIe portion rtlwifi: Remove raw read/write routines from header b43: Remove EXPERIMENTAL designation from LP PHY selection Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 From: wlanfae staging: rtl8192e: Remove code dependent on RTL8190P staging: rtl8192e: Remove dead code associated with RTL8192SE staging: rtl8192e: Remove dead code associated with RTL8192CE staging: rtl8192e: Remove dead code associated with RTL8192SU staging: rtl8192e: Remove dead code associated with RTL8192U staging: rtl8192e: Remove internal references to RTL8192E staging: rtl8192e: Fix edit error in removal of dead code associated with RTL8190P staging: rtl8192e: Fix kernel panics due to RX skb allocation failures staging: rtl8192e: Remove dead code associated with CONFIG_MP staging: rtl8192e: Remove dead code inside 'ifdef MERGE_TO_DO' staging: rtl8192e: Remove dead code involved with TO_DO_LIST staging: rtl8192e: Remove dead code involved with TO_DO staging: rtl8192e: Remove dead code associated with USB_USE_ALIGNMENT staging: rtl8192e: Remove dead code associated with CONFIG_ASPM_OR_D3 staging: rtl8192e: Remove dead code associated with COMPATIBLE_WITH_RALINK_MESH staging: rtl8192e: Remove dead code associated with PF_SYNCTHREAD staging: rtl8192e: Remove dead code from removal of ENABLE_TKIP11N staging: rtl8192e: Remove references to ENABLE_GPIO_RADIO_CTL staging: rtl8192e: Remove ifdefs that depend on ENABLE_DOT11D staging: rtl8192e: Remove code dependent of JOHN_DUMP staging: rtl8192e: Remove dead code associated with USB_TX_DRIVER_AGGREGATION_ENABLE staging: rtl8192e: Remove dead code associated with TCP_CSUM_OFFLOAD_RX staging: rtl8192e: Remove dead code associated with SUPPORT_USPD staging: rtl8192e: Remove dead code associated with USB_RX_AGGREGATION_SUPPORT staging: rtl8192e: Remove dead code associated with RTK_DMP_PLATFORM staging: rtl8192e: Remove dead code associated with NOT_YET staging: rtl8192e: Remove dead code associated with WIFI_TEST staging: rtl8192e: Remove dead code associated with ADHOC_11N staging: rtl8192e: Remove dead code associated with BUILT_IN_MSHCLASS staging: rtl8192e: Remove dead code associated with WMM_Hang_8187 staging: rtl8192e: Remove dead code associated with FOR_ANDROID_X86 and FOR_MOBLIN staging: rtl8192e: Remove dead code associated with CUSTOMER_ID_INTEL_CMPC and CONFIG_CRDA staging: rtl8192e: IEEE80211_RADIOTAP_F_BADFCS is defined in kernel, do not duplicate staging: rtl8192e: Remove dead code associated with BUILT_IN_CRYPTO staging: rtl8192e: Remove dead code associated with CONFIG_CFG_80211 staging: rtl8192e: Remove dead code associated with IRQF_SHARED staging: rtl8192e: Remove dead code associated with CONFIG_RTLLIB_CRYPT_TKIP staging: rtl8192e: Remove dead code associated with CONFIG_64BIT_DMA staging: rtl8192e: Remove dead code associated with ENABLE_NULL_PT_DEBUG staging: rtl8192e: Remove dead code associated with CONFIG_BT_30 staging: rtl8192e: Remove dead code associated with CONFIG_CRYPTO_HMAC staging: rtl8192e: Remove dead code associated with _ENABLE_SW_BEACON staging: rtl8192e: Remove dead code associated with RTL819x_DEBUG staging: rtl8192e: Remove ifdefs for CONFIG_RTLLIB_DEBUG staging: rtl8192e: Remove dead code associated with _RTL8192_EXT_PATCH_ staging: rtl8192e: Remove dead code associated with CONFIG_RTLWIFI_DEBUGFS staging: rtl8192e: Remove dead code associated with CONFIG_FW_SETCHAN staging: rtl8192e: Remove LOOP_TEST as parameter staging: rtl8192e: Remove dead code associated with EFUSE_REPG_WORKAROUND staging: rtl8192e: Remove conditional code associated with EEPROM_OLD_FORMAT_SUPPORT staging: rtl8192e: Remove dead code associated with CONFIG_RTL_RFKILL staging: rtl8192e: Fix unload/reload problem staging: rtl8192e: Fix compilation warnings staging: rtl8192e: Convert typedef BSS_QOS to struct bss_qos staging: rtl8192e: Convert typedef TX_TS_RECORD to struct tx_ts_record staging: rtl8192e: Convert typedef RX_TS_RECORD to struct rx_ts_record staging: rtl8192e: Convert typedef TS_COMMON_INFO to struct ts_common_info staging: rtl8192e: Convert typedef RT_HIGH_THROUGHPUT to struct rt_hi_throughput staging: rtl8192e: Convert typedef RT_HTINFO_STA_ENTRY to struct rt_htinfo_sta_entry staging: rtl8192e: Convert typedef BSS_HT to struct bss_ht staging: rtl8192e: Convert typedef MIMO_RSSI to struct mimo_rssi staging: rtl8192e: Convert typedef MIMOPS_CTRL to struct mimops_ctrl staging: rtl8192e: Convert typedef HT_INFORMATION_ELE to struct ht_info_ele staging: rtl8192e: Convert typedef HT_CAPABILITY_ELE to struct ht_capab_ele staging: rtl8192e: Convert typedef BA_RECORD to struct ba_record staging: rtl8192e: Convert typedef MIMO_EVM to struct mimo_evm staging: rtl8192e: Convert typedef FALSE_ALARM_STATISTICS to struct false_alarm_stats staging: rtl8192e: Convert typedef BB_REGISTER_DEFINITION_T to struct bb_reg_definition staging: rtl8192e: Convert typedef TX_FWINFO_T to struct tx_fwinfo staging: rtl8192e: Convert typedef TX_FWINFO_8190PCI to struct tx_fwinfo_8190pci staging: rtl8192e: Convert typedef LOG_INTERRUPT_8190_T to struct log_int_8190 staging: rtl8192e: Convert typedef phy_ofdm_rx_status_rxsc_sgien_exintfflag to struct phy_ofdm_rx_status_rxsc_sgien_exintfflag staging: rtl8192e: Convert typedef phy_sts_ofdm_819xpci_t to struct phy_sts_ofdm_819xpci staging: rtl8192e: Convert typedef WMM_TSPEC to struct wmm_tspec staging: rtl8192e: Convert typedef OCTET_STRING to struct octet_string staging: rtl8192e: Convert typedef QOS_TSTREAM to struct qos_tstream staging: rtl8192e: Convert typedef STA_QOS to struct sta_qos staging: rtl8192e: Convert typedef RT_SMOOTH_DATA_4RF to struct rt_smooth_data_4rf staging: rtl8192e: Convert typedef RT_PM_WOL_PATTERN_INFO to struct rt_pm_wol_info staging: rtl8192e: Convert typedef RT_POWER_SAVE_CONTROL to struct rt_pwr_save_ctrl staging: rtl8192e: Convert typedef RT_LINK_DETECT_T to struct rt_link_detect staging: rtl8192e: Convert typedef SW_CAM_TABLE to struct sw_cam_table staging: rtl8192e: Convert typedef RT_PMKID_LIST to struct rt_pmkid_list staging: rtl8192e: Convert typedef RT_INTEL_PROMISCUOUS_MODE_INFO to struct rt_intel_promisc_mode staging: rtl8192e: Convert typedef RT_PCI_CAPABILITIES_HEADER to struct rt_pci_capab_header staging: rtl8192e: Convert typedef RX_REORDER_ENTRY to struct rx_reorder_entry staging: rtl8192e: Convert typedef ACM to struct acm staging: rtl8192e: Convert typedef tx_desc to struct tx_desc staging: rtl8192e: Convert typedef CHANNEL_ACCESS_SETTING to struct channel_access_setting staging: rtl8192e: Convert typedef rt_tx_rahis_t to struct rt_tx_rahis staging: rtl8192e: Convert typedef phy_sts_cck_819xpci_t to struct phy_sts_cck_819xpci staging: rtl8192e: Convert typedef tx_desc_cmd to struct tx_desc_cmd staging: rtl8192e: Convert typedef rx_desc to struct rx_desc staging: rtl8192e: Convert typedef rx_fwinfo to struct rx_fwinfo staging: rtl8192e: Convert typedef cmpk_txfb_t to struct cmpk_txfb staging: rtl8192e: Convert typedef cmpk_intr_sta_t to struct cmpk_intr_sta staging: rtl8192e: Convert typedef cmpk_set_cfg_t to struct cmpk_set_cfg staging: rtl8192e: Convert typedef cmpk_tx_status_t to struct cmpk_tx_status staging: rtl8192e: Convert typedef cmpk_rx_dbginfo_t to struct cmpk_rx_dbginfo staging: rtl8192e: Convert typedef cmpk_tx_rahis_t to struct cmpk_tx_rahis staging: rtl8192e: Convert typedef fw_seg_container to struct fw_seg_container staging: rtl8192e: Convert typedef rt_firmware to struct rt_firmware staging: rtl8192e: Convert typedef SwChnlCmd to struct sw_chnl_cmd staging: rtl8192e: Convert typedef rtl_reg_debug to struct rtl_reg_debug staging: rtl8192e: Convert typedef txbbgain_struct to struct txbbgain_struct staging: rtl8192e: Convert typedef tx_ring to struct tx_ring staging: rtl8192e: Convert typedef ccktxbbgain_struct to struct ccktxbbgain staging: rtl8192e: Convert typedef DRxPathSel to struct drx_path_sel staging: rtl8192e: Convert typedef dig_t to struct dig_t staging: rtl8192e: Convert typedef DCMD_TXCMD_T to struct dcmd_txcmd staging: rtl8192e: Convert typedef rtl_fs_debug to struct rtl_fs_debug staging: rtl8192e: Convert typedef tx_pending_t to struct tx_pending staging: rtl8192e: Convert typedef IbssParms to struct ibss_parms staging: rtl8192e: Convert typedef init_gain to struct init_gain staging: rtl8192e: Convert typedef cb_desc to struct cb_desc staging: rtl8192e: Convert typedef bandwidth_autoswitch to struct bandwidth_autoswitch staging: rtl8192e: Convert typedef rate_adaptive to struct rate_adaptive staging: rtl8192e: Convert typedef mp_adapter to struct mp_adapter staging: rtl8192e: Convert typedef ieee_param to struct ieee_param staging: rtl8192e: Convert typedef adhoc_peer_entry_t to struct adhoc_peer_entry staging: rtl8192e: Convert typedef adhoc_peers_info_t to struct adhoc_peers_info staging: rtl8192e: Convert typedef Stats to struct rt_stats staging: rtl8192e: Convert typedef r8192_priv to struct r8192_priv staging: rtl8192e: Convert typedef buffer to struct buffer staging: rtl8192e: Convert delayed_work_struct_rsl to struct delayed_work and work_struct_rsl to struct work_struct staging: rtl8192e: Convert typedef SEQUENCE_CONTROL to union sequence_control staging: rtl8192e: Convert typedef BA_PARAM_SET to union ba_param_set staging: rtl8192e: Convert typedef DELBA_PARAM_SET to union delba_param_set staging: rtl8192e: Convert typedef HT_CAPABILITY to union ht_capability staging: rtl8192e: Convert typedef HT_CAPABILITY_MACPARA to union ht_capability_macpara staging: rtl8192e: Convert typedef QOS_TSINFO to union qos_tsinfo staging: rtl8192e: Convert typedef TSPEC_BODY to union tspec_body staging: rtl8192e: Convert typedef QOS_TCLAS to union qos_tclas staging: rtl8192e: Convert typedef ACI_AIFSN to union aci_aifsn staging: rtl8192e: Convert typedef ECW to union ecw staging: rtl8192e: Convert typedef AC_PARAM to union ac_param staging: rtl8192e: Convert typedef frameqos to union frameqos staging: rtl8192e: Prepare header files to ease use of typedef enum conversion staging: rtl8192e: Convert typedef rtl819x_loopback_e to enum rtl819x_loopback staging: rtl8192e: Convert typedef VERSION_8190 to enum version_8190_loopback staging: rtl8192e: Convert typedef RF_OpType_E to enum rf_optype staging: rtl8192e: Convert typedef POWER_SAVE_MODE to enum power_save_mode staging: rtl8192e: Convert typedef INTERFACE_SELECT_8190PCI to enum interface_select_8190pci staging: rtl8192e: Convert typedef cmpk_element_e to enum cmpk_element staging: rtl8192e: Convert typedef firmware_init_step_e to enum firmware_init_step staging: rtl8192e: Convert typedef opt_rst_type_e to enum opt_rst_type staging: rtl8192e: Convert typedef desc_packet_type_e to enum desc_packet_type staging: rtl8192e: Convert typedef firmware_source_e to enum firmware_source staging: rtl8192e: Convert typedef firmware_status_e to enum firmware_status staging: rtl8192e: Convert typedef BaseBand_Config_Type to enum baseband_config staging: rtl8192e: Convert typedef SwChnlCmdID to enum sw_chnl_cmd_id staging: rtl8192e: Convert typedef HW90_BLOCK_E to enum hw90_block staging: rtl8192e: Convert typedef RF90_RADIO_PATH_E to enum rf90_radio_path staging: rtl8192e: Convert typedef HT_MCS_RATE to enum ht_mcs_rate staging: rtl8192e: Convert typedef HT_CHANNEL_WIDTH to enum ht_channel_width staging: rtl8192e: Convert typedef HT_EXTCHNL_OFFSET to enum ht_extchnl_offset staging: rtl8192e: Convert typedef CHNLOP to enum chnl_op staging: rtl8192e: Convert typedef HT_ACTION to enum ht_action staging: rtl8192e: Convert typedef HT_BW40_SC_E to enum ht_bw40_sc staging: rtl8192e: Convert typedef HT_SPEC_VER to enum ht_spec_ver staging: rtl8192e: Convert typedef HT_AGGRE_MODE_E to enum ht_aggre_mode staging: rtl8192e: Convert typedef HT_IOT_PEER_E to enum ht_iot_peer staging: rtl8192e: Convert typedef HT_IOT_ACTION_E to enum ht_iot_action staging: rtl8192e: Convert typedef HT_IOT_RAFUNC to enum ht_iot_rafunc staging: rtl8192e: Convert typedef RT_HT_CAPBILITY to enum rt_ht_capability staging: rtl8192e: Convert typedef ACK_POLICY to enum ack_policy staging: rtl8192e: Convert typedef QOS_ELE_SUBTYPE to enum qos_ele_subtype staging: rtl8192e: Convert typedef DIRECTION_VALUE to enum direction_value staging: rtl8192e: Convert typedef ACM_METHOD to enum acm_method staging: rtl8192e: Convert typedef TR_SELECT to enum tr_select staging: rtl8192e: Convert typedef nic_t to enum nic_t staging: rtl8192e: Convert typedef RT_EEPROM_TYPE to enum rt_eeprom_type staging: rtl8192e: Convert typedef DCMD_TXCMD_OP to enum dcmg_txcmd_op staging: rtl8192e: Convert typedef RT_RF_TYPE_819xU to enum rt_rf_type_819xu staging: rtl8192e: Convert typedef RF_STEP_E to enum rf_step staging: rtl8192e: Convert typedef RT_STATUS to enum rt_status staging: rtl8192e: Convert typedef RT_CUSTOMER_ID to enum rt_customer_id staging: rtl8192e: Convert typedef RESET_TYPE to enum reset_type staging: rtl8192e: Convert typedef IC_INFERIORITY_8192S to enum ic_inferiority_8192s staging: rtl8192e: Convert typedef PCI_BRIDGE_VENDOR to enum pci_bridge_vendor staging: rtl8192e: Convert typedef TWO_PORT_STATUS to enum two_port_status staging: rtl8192e: Convert typedef DBGP_FLAG_E to enum dbgp_flag staging: rtl8192e: Convert typedef dm_dig_sta_e to enum dm_dig_sta staging: rtl8192e: Convert typedef dm_ratr_sta_e to enum dm_ratr_sta staging: rtl8192e: Convert typedef dm_dig_op_e to enum dm_dig_op_sta staging: rtl8192e: Convert typedef dm_dig_alg_e to enum dm_dig_alg staging: rtl8192e: Convert typedef DM_DIG_TWO_PORT_ALG_E to enum dm_dig_two_port_alg staging: rtl8192e: Convert typedef DM_DIG_EXT_PORT_ALG_E to enum dm_dig_ext_port_alg staging: rtl8192e: Convert typedef dm_dig_dbg_e to enum dm_dig_dbg staging: rtl8192e: Convert typedef dm_dig_connect_e to enum dm_dig_connect staging: rtl8192e: Convert typedef dm_dig_pd_th_e to enum dm_dig_pd_th staging: rtl8192e: Convert typedef dm_dig_cs_ratio_e to enum dm_dig_cs_ratio staging: rtl8192e: Convert typedef DM_CCK_Rx_Path_Method to enum dm_cck_rx_path_method staging: rtl8192e: Convert typedef DM_DBG_E to enum dm_dbg staging: rtl8192e: Convert typedef HAL_DEF_VARIABLE to enum hal_def_variable staging: rtl8192e: Convert typedef HW_VARIABLES to enum hw_variables staging: rtl8192e: Convert typedef RT_OP_MODE to enum rt_op_mode staging: rtl8192e: Convert typedef ACT_CATEGORY to enum act_category staging: rtl8192e: Convert typedef TS_ACTION to enum ts_action staging: rtl8192e: Convert typedef BA_ACTION to enum ba_action staging: rtl8192e: Convert typedef InitialGainOpType to enum init_gain_op_type staging: rtl8192e: Convert typedef LED_CTL_MODE to enum led_ctl_mode staging: rtl8192e: Convert typedef RT_RF_TYPE_DEF to enum rt_rf_type_def staging: rtl8192e: Convert typedef WIRELESS_MODE to enum wireless_mode staging: rtl8192e: Convert typedef WIRELESS_NETWORK_TYPE to enum wireless_network_type staging: rtl8192e: Convert typedef erp_t to enum erp_t staging: rtl8192e: Convert typedef Fsync_State to enum fsync_state staging: rtl8192e: Convert typedef RT_PS_MODE to enum rt_ps_mode staging: rtl8192e: Convert typedef IPS_CALLBACK_FUNCION to enum ips_callback_function staging: rtl8192e: Convert typedef RT_JOIN_ACTION to enum rt_join_action staging: rtl8192e: Convert typedef RT_RF_POWER_STATE to enum rt_rf_power_state staging: rtl8192e: Convert typedef WOLPATTERN_TYPE to enum wol_pattern_type staging: rtl8192e: Convert typedef country_code_type_t to enum country_code_type staging: rtl8192e: Convert typedef SCAN_OPERATION_BACKUP_OPT to enum scan_op_backup_opt staging: rtl8192e: Convert typedef FW_CMD_IO_TYPE to enum fw_cmd_io_type staging: rtl8192e: Convert typedef RATR_TABLE_MODE_8192S to enum ratr_table_mode_8192s staging: rtl8192e: Convert typedef HT_AGGRE_SIZE_E to enum ht_aggre_size staging: rtl8192e: Convert typedefs that can be replaced with #define rtlwifi: Install updated rate-mapping routine rtlwifi: rtl8192ce: Convert to use the new rate-mapping routine in rtlwifi rtlwifi: rtl8192cu: Convert to use the new rate-mapping routine in rtlwifi rtlwifi: rtl8192se: Convert to use the new rate-mapping routine in rtlwifi rtlwifi: rtl8192de: Convert to use the new rate-mapping routine in rtlwifi staging: rtl8192e: Remove files that are not used staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part I staging: rtl8192e: Modify time handling staging: rtl8192e: Remove extraneous log message staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part II staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part III staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part IV staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part V staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part VI staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part VII staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part VIII staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part IX staging: rtl8192e: Cleanup checkpatch -f errors - Part X staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part XI staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part XII staging: rtl8192e: Cleanup checkpatch -f errors - Part XIII staging: rtl8192e: Cleanup checkpatch -f errors - Part XIV staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part XV staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part XVI staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part XVII staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part XVIII staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part I staging: rtl8192e: Modify time handling staging: rtl8192e: Remove extraneous log message staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part II staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part III staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part IV staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part V staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part VI staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part VII staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part VIII staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part IX staging: rtl8192e: Cleanup checkpatch -f errors - Part X staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part XI staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part XII staging: rtl8192e: Cleanup checkpatch -f errors - Part XIII staging: rtl8192e: Cleanup checkpatch -f errors - Part XIV staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part XV staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part XVI staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part XVII staging: rtl8192e: Cleanup checkpatch -f warnings and errors - Part XVIII staging: rtl8192e: Remove MAC_FMT and MAC_ARG for %pM staging: rtl8192e: Fix sparse (non-endian) messages - Part I staging: rtl8192e: Fix sparse (non-endian) warnings - Part II staging: rtl8192e: Add endian checking switch to Makefile staging: rtl8192e: Remove MAC_FMT and MAC_ARG for %pM staging: rtl8192e: Fix sparse (non-endian) messages - Part I staging: rtl8192e: Fix sparse (non-endian) warnings - Part II staging: rtl8192e: Add endian checking switch to Makefile staging: rtl8192e: Fix array overrun b43: Relax requirement for descriptors to be in the DMA zone ath9k: Fix a smatch warnings b43: Fix swatch warning staging: rtl8192e: Remove dead code involving MOVE_INTO_HANDLER staging: rtl8192e: Fix smatch error and warning in rtl_core.c staging: rtl8192e: Fix smatch info output for r8192E_dev.c staging: rtl8192e: Fix smatch warning in rtl_wx.c staging: rtl8192e: Silence smatch info in r8192E_cmdpkt.c staging: rtl8192e: Fix smatch warning in rtl819x_BAProc.c staging: rtl8192e: Fix smatch error in r8192E_phy.c staging: rtl8192e: Fix smatch warnings regarding large arrays on stack staging: rtl8192e: Fix various problems noted by smatch staging: rtl8192e: Fix format warning staging: r8712u: Tracking kmemleak false positives. rtlwifi: rtl8192ce: Change modinfo messages rtlwifi: rtl8192se: Change modinfo messages rtlwifi: rtl8192de: Change modinfo messages rtlwifi: Combine instances of RTL_HAL_IS_CCK_RATE macros. rtlwifi: Remove unused routine _usb_readN_sync rtlwifi: Remove unused _usb_nbytes_read_write and _usb_writeN_sync staging: r8712u: Fix possible out-of-bounds index with TKIP and AES keys rtlwifi: Change debug parameter to apply to individual drivers rtlwifi: Change PCI drivers to use the new PM framework b43: Remove unneeded message Lars-Peter Clausen (29): ASoC: DAPM: Allow multiple mixer sources to be routed via the same switch ASoC: Add ADAU1373 codec support ASoC: Blackfin: ADAU1373 eval board support ASoC: soc_codec_reg_show use snd_soc_codec_readable_register regmap: Add support for device specific write and read flag masks. regmap: Make debugfs stubs static inline ASoC: ad193x: Setup regmap read and write flag masks for SPI ASoC: ssm2602: Do not dereference codec->control_data ASoC: ssm2602: Set initial bias level to standby ASoC: ssm2602: Support setting the oscillator and the clock output state regmap: regcache_rbtree_{set,get}_register: Use regcache_{set,get}_val regmap: rbtree-cache: Move cached rbnode handling into lookup function staging:iio:dac:ad5638: Fix channel address MAINTAINERS: Add maintainer for Analog Devices sound CODECs staging:iio:dac: Add AD5064 driver staging:iio:dac:ad5791: Use correct DAC bit-size staging:iio:dac:ad5791: Allow asymmetrical reference voltages staging:iio:dac:ad5791: Convert attributes to new naming spec staging:iio:dac:ad5791: Fix scale unit staging:iio:dac:ad5686: Check for negative values staging:iio:trigger:bfin-timer: Fix compile error staging:iio:dac: Add AD5360 driver mfd: Make jz4740_adc_driver static MIPS: JZ4740: Use generic irq chip MIPS: JZ4740: GPIO: Simplify IRQ demuxer MIPS: JZ4740: GPIO: Check correct IRQ in demux handler Blackfin: bf537-stamp: register adau1701 codec and asoc machine driver Blackfin: bf537-stamp: Register adav801 codec and ASoC machine driver Blackfin: bf537-stamp: register ASoC EVAL-ADAU1373 board driver Laszlo Ersek (1): xen-blkfront: plug device number leak in xlblk_init() error path Laura Abbott (2): ARM: 7068/1: process: change from __backtrace to dump_stack in show_regs ARM: 7125/1: Add unwinding annotations for 64bit division functions Laurent Pinchart (95): vfb: use display information in info not in var for panning staging: xgifb: use display information in info not in var for panning acornfb: Dont BUG() on invalid pan parameters s3fb: use display information in info not in var for panning mx3fb: use display information in info not in var for panning neofb: use display information in info not in var for panning savagefb: use display information in info not in var for panning sm501fb: use display information in info not in var for panning imsttfb: use display information in info not in var for panning gxt4500: use display information in info not in var for panning pm2fb: use display information in info not in var for panning sisfb: use display information in info not in var for panning atmel_lcdfb: use display information in info not in var for panning intelfb: use display information in info not in var for panning tridentfb: use display information in info not in var for panning vga16fb: use display information in info not in var for panning radeonfb: use display information in info not in var for panning hgafb: use display information in info not in var for panning pm3fb: use display information in info not in var for panning acornfb: use display information in info not in var for panning fbdev: unicore32: use display information in info not in var for panning s3c-fb: use display information in info not in var for panning mb862xxfb: use display information in info not in var for panning g364fb: use display information in info not in var for panning arkfb: use display information in info not in var for panning 68328fb: use display information in info not in var for panning vt8623fb: use display information in info not in var for panning vt8500lcdfb: use display information in info not in var for panning fbdev: da8xx: use display information in info not in var for panning fbdev: sh_mobile_lcdc: Turn dot clock on before resuming from runtime PM fbdev: sh_mobile_lcdc: Replace hardcoded register values with macros fbdev: sh_mobile_lcdc: Don't acknowlege interrupts unintentionally fbdev: sh_mobile_lcdc: Compute clock pattern using divider denominator fbdev: sh_mobile_lcdc: Split LCDC start code from sh_mobile_lcdc_start fbdev: sh_mobile_lcdc: Store the frame buffer base address when panning fbdev: sh_mobile_lcdc: Restart LCDC in runtime PM resume handler fbdev: sh_mobile_meram: Replace hardcoded register values with macros fbdev: sh_mobile_meram: Validate ICB configuration outside mutex fbdev: sh_mobile_meram: Fix MExxCTL register save on runtime PM suspend fbdev: sh_mobile_meram: Remove unneeded sh_mobile_meram.h 68328fb: use display information in info not in var for panning acornfb: Dont BUG() on invalid pan parameters acornfb: use display information in info not in var for panning arkfb: use display information in info not in var for panning atmel_lcdfb: use display information in info not in var for panning radeonfb: use display information in info not in var for panning fbdev: da8xx: use display information in info not in var for panning fbdev: unicore32: use display information in info not in var for panning g364fb: use display information in info not in var for panning gxt4500: use display information in info not in var for panning hgafb: use display information in info not in var for panning imsttfb: use display information in info not in var for panning intelfb: use display information in info not in var for panning mb862xxfb: use display information in info not in var for panning mx3fb: use display information in info not in var for panning neofb: use display information in info not in var for panning pm2fb: use display information in info not in var for panning pm3fb: use display information in info not in var for panning s3c-fb: use display information in info not in var for panning s3fb: use display information in info not in var for panning savagefb: use display information in info not in var for panning sisfb: use display information in info not in var for panning sm501fb: use display information in info not in var for panning tridentfb: use display information in info not in var for panning vfb: use display information in info not in var for panning vga16fb: use display information in info not in var for panning vt8500lcdfb: use display information in info not in var for panning vt8623fb: use display information in info not in var for panning staging: xgifb: use display information in info not in var for panning iommu/omap-iovmm: support non page-aligned buffers in iommu_vmap sh_mobile_meram: Reset ICBs at unregistration time fbdev: sh_mobile_lcdc: Adjust requested parameters in .fb_check_var fbdev: sh_mobile_lcdc: Add support for format changes at runtime fbdev: sh_mobile_lcdc: use display information in info for panning fbdev: sh_mobile_lcdc: Update fix.line_length in .fb_set_par() fbdev: sh_mobile_lcdc: Avoid forward declarations fbdev: sh_mobile_lcdc: Split channel initialization from probe function fbdev: sh_mobile_lcdc: Remove sh_mobile_lcdc_set_bpp() [media] omap3isp: Don't accept pipelines with no video source as valid [media] omap3isp: Move platform data definitions from isp.h to media/omap3isp.h [media] omap3isp: Don't fail streamon when the sensor doesn't implement s_stream [media] omap3isp: video: Avoid crashes when pipeline set stream operation fails [media] mt9t001: Aptina (Micron) MT9T001 3MP sensor driver [media] uvcvideo: Remove deprecated UVCIOC ioctls USB: export video.h to the includes available for userspace [media] omap3isp: Move media_entity_cleanup() from unregister() to cleanup() [media] omap3isp: Move *_init_entities() functions to the init/cleanup section [media] omap3isp: Add missing mutex_destroy() calls [media] omap3isp: Fix memory leaks in initialization error paths [media] omap3isp: Report the ISP revision through the media controller API [media] omap3isp: preview: Remove horizontal averager support [media] omap3isp: preview: Rename min/max input/output sizes defines [media] omap3isp: preview: Add crop support on the sink pad [media] omap_vout: Add poll() support ARM: OMAP: I2C: Fix omap_register_i2c_bus() return value on success Lauri Hintsala (1): ARM: mach-mxs: fix machines' initializers order Lee Jones (1): mach-ux500: remove most of the ugly machine_is_*() calls Lee, Chun-Yi (4): acer-wmi: check wireless capability flag before register rfkill acer-wmi: add ACER_WMID_v2 interface flag to represent new notebooks acer-wmi: check the existence of internal wireless device when set capability acer-wmi: replaced the hard coded bitmap by the communication devices bitmap from SMBIOS Lei Wen (6): mtd: pxa3xx_nand: fix nand detection issue mtd: pxa3xx_nand: enhance suspend and resume routine mtd: pxa3xx_nand: convert all printk into dev_* mtd: pxa3xx_nand: sperate each chip individual info mtd: pxa3xx_nand: enable multiple chip select support ARM: 7098/1: kdump: copy kernel relocation code at the kexec prepare stage Len Brown (4): tools/power turbostat: less verbose debugging mrst pmu: update comment Merge branches 'atomic-io', 'lockdep', 'misc', 'pm-profile' and 'pnp-cleanup' into acpi Merge branches 'acpi', 'idle', 'mrst-pmu' and 'pm-tools' into next Leo Yan (3): ARM: mmp: add sram allocator ARM: mmp: register audio sram bank ARM: mmp: register internal sram bank Leonid V. Fedorenchik (63): Staging: cx25821: Get rid of typedef in cx25821.h Staging: cx25821: Rename member name in struct cx25821_dev Staging: cx25821: Delete file cx25821-gpio.h Staging: cx25821: Move EXPORT_SYMBOL() to the right place Staging: cx25821: Use DEFINE_PCI_DEVICE_TABLE for cx25821_pci_tbl Staging: cx25821: Fix wrong statement indent in cx25821-cards.c Staging: cx25821: Fix wrong statement indent in cx25821-core.c Staging: cx25821: Fix wrong statement indent in cx25821-i2c.c Staging: cx25821: Fix too long lines in cx25821-audio.h Staging: cx25821: Fix obscure line endings in cx25821-audio-upstream.c Staging: cx25821: Fix long lines in cx25821-audio-upstream.c Staging: cx25821: Fix long lines in cx25821-audio-upstream.h Staging: cx25821: Replace :? by if-else in cx25821-video-upstream-ch2.c Staging: cx25821: Fix labels' placement in cx25821-video-upstream-ch2.c Staging: cx25821: Fix wrong line endings in cx25821-video-upstream-ch2.c Staging: cx25821: Fix long lines in cx25821-video-upstream-ch2.c Staging: cx25821: Fix long lines in cx25821-video-upstream-ch2.h Staging: cx25821: Fix long lines in cx25821-video-upstream.c Staging: cx25821: Fix long lines in cx25821-video-upstream.h Staging: cx25821: Fix labels' placement in cx25821-video.c Staging: cx25821: Fix function signatures Staging: cx25821: Fix obscure line endings Staging: cx25821: Fix indent in comment Staging: cx25821: Change indent with spaces to tabs 1 Staging: cx25821: Change indent with spaces to tabs 2 Staging: cx25821: Change indent with spaces to tabs 3 Staging: cx25821: Change indent with spaces to tabs 4 Staging: cx25821: Change indent with spaces to tabs 5 Staging: cx25821: Change indent with spaces to tabs 6 Staging: cx25821: Change indent with spaces to tabs 7 Staging: cx25821: Change indent with spaces to tabs 8 Staging: cx25821: Change indent with spaces to tabs 9 Staging: cx25821: Change indent with spaces to tabs 10 Staging: cx25821: Change indent with spaces to tabs 11 Staging: cx25821: Change indent with spaces to tabs 12 Staging: cx25821: Change indent with spaces to tabs 13 Staging: cx25821: Change indent with spaces to tabs 14 Staging: cx25821: Change indent with spaces to tabs 15 Staging: cx25821: Change indent with spaces to tabs 16 Staging: cx25821: Change indent with spaces to tabs 17 Staging: cx25821: Change indent with spaces to tabs 18 Staging: cx25821: Change indent with spaces to tabs 19 Staging: cx25821: Change indent with spaces to tabs 20 Staging: cx25821: Change indent with spaces to tabs 21 Staging: cx25821: Change indent with spaces to tabs 22 Staging: cx25821: Change indent with spaces to tabs 23 Staging: cx25821: Change indent with spaces to tabs 24 Staging: cx25821: Change indent with spaces to tabs 25 Staging: cx25821: Change indent with spaces to tabs 26 Staging: cx25821: Change indent with spaces to tabs 27 Staging: cx25821: Change indent with spaces to tabs 28 Staging: cx25821: Change indent with spaces to tabs 29 Staging: cx25821: Change indent with spaces to tabs 30 Staging: cx25821: Change indent with spaces to tabs 31 Staging: cx25821: Change indent with spaces to tabs 32 Staging: cx25821: Change indent with spaces to tabs 33 Staging: cx25821: Change indent with spaces to tabs 34 Staging: cx25821: Change indent with spaces to tabs 35 Staging: cx25821: Fix braces around statements in cx25821-video.c Staging: cx25821: Replace :? by if-else in cx25821-video.c Staging: cx25821: cx25821-video.h: Line up constant Staging: cx25821: cx25821-video.h: Fix indent Staging: cx25821: cx25821-video.h: Fix long lines Li Dongyang (4): xen-blkfront: add BLKIF_OP_DISCARD and discard request struct xen-blkback: Implement discard requests ('feature-discard') xen-blkfront: Handle discard requests. xen-blkfront: fix a deadlock while handling discard response Li Haifeng (2): ext2: fix the outdated comment in ext2_nfs_get_inode() mm: fix kunmap_high() comment Li Zefan (8): Btrfs: fix defragmentation regression Btrfs: use i_size_read() in btrfs_defrag_file() Btrfs: fix wrong max_to_defrag in btrfs_defrag_file() Btrfs: honor extent thresh during defragmentation Btrfs: fix array bound checking Btrfs: remove BUG_ON() in compress_file_range() Btrfs: fix direct-io vs nodatacow Documentation: update cgroups notes Liam Girdwood (2): ASoC: dapm - Add DAPM stream completion event. ASoC: dapm - change stream event dbg to vdgb Linas Vepstas (5): MAINTAINERS: Linas has moved Hexagon: Export ksyms defined in assembly files. Hexagon: Support dynamic module loading. Hexagon: kgdb support files Add extra arch overrides to asm-generic/checksum.h Linus Torvalds (184): Linux 3.1-rc10 Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux Merge branch 'v4l_for_linus' of git://linuxtv.org/mchehab/for_linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc Merge branch 'fix/hda' of git://github.com/tiwai/sound Merge git://github.com/herbertx/crypto Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging Merge branch 'samsung-fixes-4' of git://github.com/kgene/linux-samsung Merge branch 'for-linus' of http://people.redhat.com/agk/git/linux-dm Merge git://git.infradead.org/iommu-2.6 Linux 3.1 Merge branch 'stable/e820-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen Merge branches 'stable/bug.fixes-3.2' and 'stable/mmu.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen Merge branches 'stable/drivers-3.2', 'stable/drivers.bugfixes-3.2' and 'stable/pci.fixes-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k Merge branch 'next' of git://selinuxproject.org/~jmorris/linux-security Merge branch 'for-linus' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/apm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial Merge branch 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next Merge branch 'for-linus' of git://opensource.wolfsonmicro.com/regmap Merge branch 'for-next' of git://git.linaro.org/people/triad/linux-pinctrl Merge branch 'pm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm Merge branch 'for-3.2' of git://linux-nfs.org/~bfields/linux Merge branch 'nfs-for-3.2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs Merge branch 'for-linus' of git://github.com/gregungerer/m68knommu Merge branch 'for-linus' of git://github.com/ericvh/linux Merge git://github.com/rustyrussell/linux Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging Merge branch 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net Merge branch 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Remove stale "depends on NETDEV_1000"in staging drivers Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'for-linus' of git://git.open-osd.org/linux-open-osd Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin Merge branch 'slab/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux Merge branch 'upstream-linus' of git://github.com/jgarzik/libata-dev Merge branch 'devicetree/next' of git://git.secretlab.ca/git/linux-2.6 Merge branch 'gpio' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm Merge branch 'amba' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm Merge branch 'clk' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'x86-cpufeature-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'x86-geode-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'x86-microcode-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'x86-rdrand-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'x86-spinlocks-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'x86-vdso-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'drm-core-next' of git://people.freedesktop.org/~airlied/linux Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch '3.2-without-smb2' of git://git.samba.org/sfrench/cifs-2.6 Merge http://sucs.org/~rohan/git/gfs2-3.0-nmw Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/hch/vfs-queue Merge branch 'devel-stable' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc Merge branch 'next-rebase' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Merge branch 'for-linus' of git://ceph.newdream.net/git/ceph-client Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 Merge branch 'gpio/next' of git://git.secretlab.ca/git/linux-2.6 Merge branch 'spi/next' of git://git.secretlab.ca/git/linux-2.6 Merge branch 'devicetree/merge' of git://git.secretlab.ca/git/linux-2.6 Merge git://github.com/rustyrussell/linux Merge branch 'fbdev-next' of git://github.com/schandinat/linux-2.6 Merge branch 'kvm-updates/3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'for-linus' of git://neil.brown.name/md Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86 Merge branch 'next' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'akpm' (Andrew's incoming) Merge Qualcom Hexagon architecture Merge git://github.com/herbertx/crypto Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'pstore' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394 Merge branch 'for-linus' of git://opensource.wolfsonmicro.com/regulator Merge branch 'for-linus/i2c-3.2' of git://git.fluff.org/bjdooks/linux Merge branch 'next/fixes' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'next/cleanup' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'next/driver' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'next/timer' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'next/pm' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'next/deletion' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'next/board' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'next/devel' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'next/cross-platform' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'next/cleanup2' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'next/dt' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'next/soc' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'for-linus' of git://github.com/richardweinberger/linux Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/hch/vfs-queue Merge git://github.com/rustyrussell/linux Merge branch 'akpm' (Andrew's incoming - part two) Merge branch 'misc-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux Merge branch 'for-3.2' of git://linux-nfs.org/~bfields/linux Merge branch 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac Merge branch 'for-linus' of git://git.selinuxproject.org/~jmorris/linux-security Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/linux-dm Revert "perf: Add PM notifiers to fix CPU hotplug races" Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ohad/hwspinlock Merge branch 'sh-latest' of git://github.com/pmundt/linux-sh Merge branch 'for-next' of git://git.infradead.org/users/sameo/mfd-2.6 Merge branch 'next' of git://github.com/kernelslacker/cpufreq Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net Merge git://git.samba.org/sfrench/cifs-2.6 Merge branch 'devicetree/merge' of git://git.secretlab.ca/git/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media Merge branch 'process_vm' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'nfs-for-3.2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs Merge branch 'for-linus' of git://github.com/cmetcalf-tilera/linux-tile Merge git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-next Merge branch 'for-3.2/core' of git://git.kernel.dk/linux-block Merge branch 'for-3.2/drivers' of git://git.kernel.dk/linux-block Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 Merge git://www.linux-watchdog.org/linux-watchdog Merge branch 'pm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm Merge branch 'next/cleanup3' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'next/devel2' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'next/move' of git://git.linaro.org/people/arnd/arm-soc Merge branch 'fixes' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'rmobile-latest' of git://github.com/pmundt/linux-sh Merge git://github.com/rustyrussell/linux Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client Merge branch 'stable/vmalloc-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen hid/apple: modern macbook airs use the standard apple function key translations Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild Merge branch 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild Merge branch 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending Merge branch 'writeback-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs Merge branch 'stable/cleanups-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen Merge branch 'upstream/xen-settime' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen Merge branch 'upstream/jump-label-noearly' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen Revert "hvc_console: display printk messages on console." Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6 Merge git://git.infradead.org/mtd-2.6 Merge git://git.samba.org/sfrench/cifs-2.6 Merge branch 'urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap Linux 3.2-rc1 Linus Walleij (50): mach-u300: retire odd singlemem variant mach-u300: drop SEMI config option mach-u300: patch physoffset by default mach-u300: delete bogus memory mappings mach-u300: retire AVE device ARM: 7032/1: plat-nomadik: break out GPIO driver specifics ARM: 7033/1: mach-u300: break out GPIO driver specifics ARM: 7034/1: mach-u300: delete irq_to_gpio() function ARM: 7035/1: mach-ks8695: move GPIO driver to GPIO subsystem ARM: 7036/1: mach-ks8695: break out GPIO driver specifics ARM: 7037/1: mach-ks8695: fix GPIO LEDs ARM: 7038/1: mach-davinci: move GPIO driver to GPIO subsystem ARM: 7039/1: mach-davinci: move DaVinci TNET GPIO driver to GPIO subsystem ARM: 7040/1: mach-davinci: break out GPIO driver specifics ARM: 7041/1: gpio-ep93xx: hookup the to_irq callback in the driver ARM: 7043/1: mach-ixp2000: rename GPIO header ARM: 7044/1: mach-lpc32xx: move LPC32XX GPIO driver to GPIO subsystem ARM: 7045/1: mach-lpc32xx: break out GPIO driver specifics ARM: 7049/1: mach-sa1100: move SA1100 GPIO driver to GPIO subsystem ARM: 7050/1: mach-sa1100: delete irq_to_gpio() function ARM: 7056/1: plat-nomadik: kill off ARM: 7057/1: mach-pnx4008: rename GPIO header mach-ux500: factor out l2x0 handling code ARM: 7083/1: rewrite U300 GPIO to use gpiolib mtd: drop Integrator flash map Kconfig gpio/nomadik: use genirq core to track enablement ARM: mach-ux500: unlock I&D l2x0 caches before init ARM: 7042/3: mach-ep93xx: break out GPIO driver specifics ARM: 7103/1: plat-pxa: move PXA GPIO driver to GPIO subsystem ARM: 7104/1: plat-pxa: break out GPIO driver specifics clocksource: fixup ux500 build problems drivers: create a pin control subsystem pinctrl: add a driver for the U300 pinmux ARM: 7084/1: mach-integrator: retire some timer macros ARM: 7085/2: mach-integrator: clockevent supports oneshot mode ARM: 7086/2: mach-integrator: modernize clock event registration ARM: 7087/2: mach-integrator: get timer frequency from clock ARM: 7102/1: mach-integrator: update defconfig ARM: 6217/4: mach-realview: expose PB1176 ROM using physmap and map_rom mfd: Add missing #ifdef around tc3589x PM block mfd: Break out ab5500 debugfs code mfd: Delete ab3550 driver mfd: Fix db5500-prcmu defines mfd: Rename db8500-prcmu init function mfd: Refactor db8500-prcmu request_clock() function mfd: Convert db8500-prcmu panic() into pr_crit() [CPUFREQ] db8500: support all frequencies ARM: mark empty gpio.h files empty mfd: Fix missing abx500 header file updates ARM: 7142/1: davinci: mark GPIO implementation complex Liu Bo (1): Btrfs: do not set EXTENT_DIRTY along with EXTENT_DELALLOC Liu Gang (2): drivers/rapidio/rio-scan.c: use discovered bit to test if enumeration is complete arch/powerpc/sysdev/fsl_rio.c: release rapidio port I/O region resource if port failed to initialize Liu Shuo (1): mtd: nand: don't free the global data too early Liu Yu (3): powerpc/math_emu/efp: Use pr_debug instead of printk powerpc/math_emu/efp: No need to round if the result is exact powerpc/math_emu/efp: Look for errata handler when type mismatches Liu, Jinsong (2): x86: TSC deadline definitions KVM: emulate lapic tsc deadline timer for guest Lorenzo Bianconi (1): mac80211: max_tp_rate2 management of minstrel_ht Lorenzo Colitti (1): ipv6: updates to privacy addresses per RFC 4941. Lothar Waßmann (1): mxs-dma: enable CLKGATE before accessing registers Lu Guanqun (6): ALSA: core: trivial code style fix ALSA: core: release the constraint check for replace ops ASoC: sst_platform: trivial coding style fix ASoC: sst_platform: using builtin function ASoC: sst_platform: fix memory leak staging: intel_sst: fix compile error Luben Tuikov (2): USB: storage: Use normalized sense when emulating autosense [SCSI] libsas: Allow expander T-T attachments Lucas De Marchi (2): kconfig: fix set but not used variables sysctl: add support for poll() Luciano Coelho (10): wl12xx: add support for multiple SSIDs in sched_scan wl12xx: use SCAN_SSID_TYPE_PUBLIC when using the wildcard in sched_scan nl80211/cfg80211: add match filtering for sched_scan Merge branch 'wl12xx-next' into for-linville wl12xx: remove deprecated CONFIG_WL12XX_HT flag wl12xx: add support for sched_scan filters wl12xx: increase number of allowed SSIDs in sched_scan wl12xx: ignore sched scan match sets without SSID wl12xx: fix forced passive scans wl12xx: set max_sched_scan_ie_len correctly Luck, Tony (2): pstore: defer inserting OOPS entries into pstore ACPI atomicio: Convert width in bits to bytes in __acpi_ioremap_fast() Ludovic Desroches (8): mmc: atmel-mci: change namespace mmc: atmel-mci: change atmci_readl and atmci_writel macros mmc: atmel-mci: indentation mmc: atmel-mci: add pdc support and runtime capabilities detection mmc: atmel-mci: change atmci_start_command to atmci_send_command mmc: atmel-mci: use ATMEL_PDC_SCND_BUF_OFF instead of a literal value mmc: atmel-mci: correct sg buffer size evaluation mmc: atmel-mci: fix a potential issue about pending PDC interrupts Luis R. Rodriguez (5): wireless: relicense regulatory header to ISC MAINTANERS: update Qualcomm Atheros addresses ath9k_hw: add AR9580 support ath9k: add AR9580 support ath9k_htc: add AVM FRITZ!WLAN 11N v2 support Luiz Augusto von Dentz (2): Bluetooth: make use of connection number to optimize the scheduler Bluetooth: mark l2cap_create_iframe_pdu as static Luiz Ramos (1): [media] Fix wrong register mask in gspca/sonixj.c Lukas Czerner (4): ext3: remove deprecated oldalloc loop: add discard support for loop devices ext4: remove deprecated oldalloc btrfs: return EINVAL if start > total_bytes in fitrim ioctl Lutz Sammer (2): [media] TT-budget S2-3200 cannot tune on HB13E DVBS2 transponder [media] stb0899: Fix slow and not locking DVB-S transponder(s) Maarten Lankhorst (2): oprofile, x86: Convert memory allocation to static array ALSA: ctxfi: Bump playback substreams to 256 Maciej Å»enczykowski (3): net: allow CAP_NET_RAW to set socket options IP{,V6}_TRANSPARENT net: use INET_ECN_MASK instead of hardcoded 3 net: make bonding slaves honour master's skb->priority Magnus Damm (31): ARM: mach-shmobile: sh73a0 PFC pull-up support for SDHI0+2 ARM: mach-shmobile: Kota2 SCIFA2 and SMSC911X support ARM: mach-shmobile: Kota2 KEYSC support ARM: mach-shmobile: Kota2 GPIO Keys support ARM: mach-shmobile: Kota2 GPIO LEDs support ARM: mach-shmobile: Kota2 MMCIF support ARM: mach-shmobile: Kota2 SCIFA4 and SCIFB support ARM: mach-shmobile: Kota2 SDHI0 and SDHI1 support ARM: mach-shmobile: sh7372 generic suspend/resume support ARM: mach-shmobile: sh7372 A3SM support ARM: mach-shmobile: sh7372 sleep warning fixes ARM: mach-shmobile: sh7372 A3SP support (v4) ARM: mach-shmobile: sh7372 A4R support (v4) sh: intc: Add IRQ trigger bit field check sh: pfc: get_config_reg() shift clean up sh: pfc: Remove unused gpio_in_use member sh: pfc: Add GPIO IRQ support leds: Renesas TPU LED driver drivers/leds/leds-renesas-tpu.c: update driver to use workqueue drivers/leds/leds-renesas-tpu.c: move Renesas TPU LED driver platform data ARM: mach-shmobile: Break out INTC IRQ code sh: intc: Allow triggering on both edges for ARM SoCs ARM: mach-shmobile: sh7372 Mackerel NOR Flash USB boot fix ARM: mach-shmobile: sh73a0 GPIO IRQ support ARM: mach-shmobile: Use common INTC IRQ code on sh7367 ARM: mach-shmobile: Use common INTC IRQ code on sh7377 ARM: mach-shmobile: Use common INTC IRQ code on sh7372 ARM: mach-shmobile: Use common INTC IRQ code on sh73a0 ARM: mach-shmobile: SDHI0 GPIO hotplug for AG5EVM ARM: mach-shmobile: Add support for PINT though INTC macros ARM: mach-shmobile: sh73a0 and AG5EVM PINT support Malahal Naineni (1): Check validity of cl_rpcclient in nfs_server_list_show Malcolm Priestley (5): [media] it913x_fe: frontend and tuner driver v1.05 [media] it9137: Fimrware retrival information for Kworld UB499-2T T09 (id 1b80:e409) [media] it913x: Driver for Kworld UB499-2T (id 1b80:e409) v1.05 [media] it913x-fe changes to power up and down of tuner [media] it913x [VER 1.07] Support for single ITE 9135 devices Mandeep Baines (1): forcedeth: Improve stats counters Mandeep Singh Baines (1): dm table: propagate non rotational flag Manfred Spraul (4): ipc/sem.c: fix return code race with semop vs. semop +semctl(IPC_RMID) ipc/sem.c: handle spurious wakeups ipc/sem.c: remove private structures from public header file include/linux/sem.h: make sysv_sem empty if SYSVIPC is disabled Manish Rangankar (10): [SCSI] scsi_transport_iscsi: Add conn login, kernel to user, event to support offload session login. [SCSI] qla4xxx: support iscsiadm session mgmt [SCSI] qla4xxx: Remove reduandant code after open-iscsi integration. [SCSI] qla4xxx: Boot from SAN support for open-iscsi [SCSI] qla4xxx: Clear DDB map index on the basis of AEN. [SCSI] qla4xxx: Fixed session destroy issue on link up-down. [SCSI] qla4xxx: Fixed device blocked issue on link up-down. [SCSI] qla4xxx: Fixed active session re-open issue. [SCSI] qla4xxx: Fixed target discovery failed issue. [SCSI] qla4xxx: updated device id check for BFS. Manish chopra (1): qlcnic: Change debug messages in loopback path Manjunath Hadli (1): [media] davinci vpbe: remove unused macro Manjunathappa, Prakash (2): video: da8xx-fb: Interrupt configuration of revised LCDC IP video: da8xx-fb: Increased resolution configuration of revised LCDC IP Manohar Vanga (8): staging: vme_user: change kmalloc+memset to kzalloc staging: vme: make [alloc|free]_consistent bridge specific staging: vme: keep track of registered buses staging: vme: change static device array to pointers staging: vme: add struct vme_dev for VME devices staging: vme: make match() driver specific to improve non-VME64x support staging: vme: get rid of struct vme_device_id and slots staging: vme_user: rename USER_BUS_MAX to VME_USER_BUS_MAX Manuel Lauss (31): au1200fb: use framebuffer_alloc() au1200fb: fixup PM au1200fb: make number of windows configurable at load time. au1200fb: switch to FB_SYS helpers au1200fb: fix hardcoded IRQ ASoC: Alchemy AC97C/I2SC audio support ASoC: Add a DB1x00 AC97 machine driver ALSA: deprecate MIPS AU1X00 AC97 driver ASoC: au1x: remove automatic DMA device registration from PSC drivers ASoC: au1x: update db1200 machine to the new way of things ASoC: au1x: use substream stream info directly fbdev: au1200fb: silence debug output fb: fix au1100fb bitrot. topstar-latop: ignore 0x82 event NET: au1000_eth: Pass MACDMA address through platform resource info. MIPS: Alchemy: Always build power code MIPS: Alchemy: support multiple GPIO styles in one kernel MMC: au1xmmc: Remove Alchemy CPU subtype dependencies MIPS: Remove __init from add_wired_entry() MIPS: Alchemy: abstract USB block control register access MIPS: Alchemy: rewrite USB platform setup. MIPS: Alchemy: more base address cleanup MIPS: Alchemy: Redo PCI as platform driver MIPS, IDE: Alchem, au1xxx-ide: Remove pb1200/db1200 header dep MIPS: Alchemy: clean DMA code of CONFIG_SOC_AU1??? defines MIPS: Alchemy: kill au1xxx.h header MIPS: Alchemy: remove all CONFIG_SOC_AU1??? defines i2c-au1550: remove usage of volatile keyword i2c-au1550: remove unused ack_timeout i2c-au1550: increase timeout waiting for master done i2c-au1550: dev_pm_ops conversion Manuel Stahl (1): staging: iio: Move sensor drivers to sub menus Marc Dietrich (16): ARM: tegra: paz00: add support serial port on JP1 ARM: tegra: paz00: enable rfkill for internal wifi card ARM: tegra: paz00: enable wifi led ARM: tegra: paz00: reorder the SDHCI channel init ARM: tegra: paz00: add clocks required for usb operation staging: nvec: convert to use platform register and mfdcells staging: nvec: coding style fixes / add copyright notice staging: nvec: Use print_hex_dump() where appropriate staging: nvec: rework the nvec slave init staging: nvec: fix unmute of speakers staging: nvec: update ToDo list staging: nvec: add MAINTAINERS info staging: nvec: fix Kconfig dependencies staging: nvec: send suspend messages synchronously spi/tegra: fix compilation error in spi-tegra.c staging/nvec: fix compilation error in nvec.c Marc Kleine-Budde (3): net/can/mscan: add __iomem annotations MAINTAINERS: can: the mailinglist moved to vger.kernel.org can: remove references to berlios mailinglist Marc Zyngier (6): genirq: Add support for per-cpu dev_id interrupts genirq: percpu: allow interrupt type to be set at enable time Merge commit '32cffdd' into ppi-irq-core-for-rmk ARM: gic: consolidate PPI handling ARM: gic, local timers: use the request_percpu_irq() interface ARM: EXYNOS4: convert MCT to percpu interrupt API Marcel Apfelbaum (4): IB: Add new InfiniBand link speeds IPoIB: Handle extended rates in debugfs mlx4_core: Add extended port capabilities support IB/mlx4: Configure extended active speeds Marcelo Tosatti (1): KVM: x86: report valid microcode update ID Marcin Slusarz (3): drm/nouveau: fix printk typo in ioremap failure path drm: fix error message about failed procfs file registration drm: simplify error printing in drm_debugfs_create_files Marcos Paulo Souza (1): Documentation: Computone ip2 is orphaned Marcos Paulo de Souza (5): drivers/staging/bcm/InterfaceDld.c: Fix checkpatch warnings include: linux: skbuf.h: Fix parameter documentation [SCSI] scsi_transport_iscsi: Fix documentation os parameter Documentation: fix inotify source file paths Documentation: HFS is orphaned Marcus Folkesson (6): regulator: tps65023: Fixes i2c configuration issues regulator: tps65023: Fixes i2c configuration issues regulator: tps65023: Set missing bit for update core-voltage regulator: tps65023: Setting correct core regulator for tps65021 regulator: tps65023: Added support for the similiar TPS65020 chip serial: pxa: work around for errata #20 Marek Lindner (7): ath9k: remove eeprom txgain override for minor version < 19 batman-adv: reuse tt_len() to calculate tt buffer length batman-adv: merge update_transtable() into tt related code batman-adv: rename all instances of batman_packet to batman_ogm_packet batman-adv: agglomerate all batman iv ogm processing functions in a single file batman-adv: move routing packet initialization into corresponding file batman-adv: agglomerate all batman iv ogm sending functions in the batman iv file Marek Olšák (2): drm/ttm: add a way to bo_wait for either the last read or last write drm/radeon/kms: add a new gem_wait ioctl with read/write flags Marek Szyprowski (14): [media] MAINTAINERS: add entries for s5p-mfc and s5p-tv drivers [media] media: vb2: add a check if queued userptr buffer is large enough [media] media: vb2: fix handling MAPPED buffer flag [media] media: vb2: change plane sizes array to unsigned int[] [media] media: vb2: dma contig allocator: use dma_addr instread of paddr [media] media: vb2: change queue initialization order [media] staging: dt3155v4l: fix build break ARM: EXYNOS4: enable frame buffer on Universal C210 board ARM: EXYNOS4: enable frame buffer on Nuri board gpio/samsung: fix broken configuration for EXYNOS4 GPIO banks gpio/samsung: fix GPIO interrupt registration for EXYNOS4 SoCs gpio/samsung: correct pin configuration for S5PC100/S5PC110/EXYNOS4 [media] media: vb2: fix incorrect return value ARM: S5P: fix offset calculation on gpio-interrupt Mariano Guerra (1): Staging: comedi: do not initialise statics to 0 or NULL Mark A. Grondona (1): EDAC: Fix incorrect edac mode reporting in sb_edac Mark Brown (242): ASoC: Add device tree binding for WM8731 ASoC: Trivial formatting fix in soc-core.c ASoC: Implement new DC servo readback mode for late WM8994 revisions ASoC: Support separate left and right channel dcs_codes values ASoC: Parse board ID/revision information from WM1250-EV1 board ASoC: Remove -codec from WM8523 driver name ASoC: Remove redundant -codec from WM8580 driver name Merge branch 'for-3.1' into for-3.2 ASoC: Use new register map API for ASoC generic physical I/O ASoC: Add regmap as a control type Merge branch 'regmap-asoc' into for-3.2 regmap: Add kerneldoc for struct regmap_config regmap: Allow devices to specify which registers are accessible regmap: Add precious registers to the driver interface regmap: Just send the buffer directly for single register writes Merge branches 'regmap-linus' and 'regmap-interface' into regmap-next regmap: Add basic tracepoints regmap: Implement writable register checks regmap: Use a local header for API internals regmap: Provide register map dump via debugfs regmap: Skip precious registers when dumping registers via debugfs ASoC: Remove unneeded -codec from WM8753 driver name Merge branch 'for-3.1' into for-3.2 regmap: Fix kerneldoc errors for regmap Merge branch 'regmap-interface' into regmap-next ASoC: Update SMDKs for WM8580 -codec removal ASoC: Remove some more redundant -codecs from driver names Merge branch 'for-3.1' into for-3.2 regmap: Use int rather than size_t for lengths when logging blocks regmap: Fix type of field width specifiers for x86_64 regmap: Remove unused type and list fields from bus interface ASoC: Refactor WM8741 regulator handling into CODEC generic code ASoC: Add SPI support for WM8741 ASoC: Fix warning in WM1250-EV1 driver Merge branch 'for-3.1' into for-3.2 ASoC: Specify register defaults for WM8958 MICBIAS1 and MICBIAS2 Merge branch 'for-3.1' into for-3.2 Merge branch 'for-3.1' into for-3.2 Merge branch 'regmap-linus' into regmap-next Merge branch 'for-3.1' into for-3.2 ASoC: Allow userspace control of Speyside headphone output ASoC: Add bitfield definitions for WM8958 MICBIAS registers ASoC: Add device tree binding for WM8510 ASoC: Add device tree binding for WM8523 ASoC: Add device tree support for WM8580 ASoC: Add device tree binding for WM8711 ASoC: Add device tree binding for WM8728 ASoC: Add device tree binding for WM8737 ASoC: Add device tree binding for WM8750 ASoC: Add device tree binding for WM8753 ASoC: Add VMID widget for wm_hubs devices ASoC: Disable WM8994 VMID for digital only paths ASoC: Remove redundant -codec from WM8750 Merge branch 'for-3.1' into for-3.2 ASoC: Support !CONFIG_REGMAP builds Merge branch 'for-3.1' into for-3.2 regmap: Add functions to check for access on registers regmap: Share some of the debugfs infrastructure ready for more files regmap: Provide access information via debugfs Merge branch 'for-3.1' into for-3.2 ASoC: Add device tree binding for WM8741 ASoC: Correct revision display for WM1250-EV1 module ASoC: Disable pulls on WM8994 AIF2 when starting it ASoC: Run Speyside WM8962 at 512fs ASoC: Add WM8958 noise gate support ASoC: Implement WM8994 thermal warning and shutdown interrupt support ASoC: Fix backport of WM8994 thermal warning Merge branch 'for-3.1' into for-3.2 Merge branch 'for-3.1' into for-3.2 regmap: Allow drivers to specify register defaults Merge branch 'regmap-interface' into regmap-next mfd: Convert WM831x to use regmap API mfd: Provide regmap register access info from wm831x driver mfd: Use device ID matching for WM831x SPI driver mfd: Convert WM8994 to use new register map API mfd: Convert WM8400 to regmap API Merge branch 'regmap-mfd' into regmap-next ASoC: Automatically manage WM8996 MICBIAS regulating mode ASoC: Optimise WM8996 no interrupt path ASoC: Add basic WM8962 capture low/high pass filter control ASoC: Initial WM8962 DSP2 support ASoC: Report IRQ_NONE when we don't see an interrupt from WM8962 ASoC: Provide more detail on WM8962 thermal shutdown status Merge branch 'for-3.1' into for-3.2 ASoC: Convert WM8523 to table based control and DAPM initialization ASoC: Allow idle_bias_off to be specified in CODEC drivers Merge branch 'for-3.1' into for-3.2 Merge branch 'for-3.1' into for-3.2 Merge branch 'for-3.1' into for-3.2 regulator: Add debugfs file showing the supply map table Merge branch 'for-3.1' into for-3.2 ASoC: Allow register defaults to be larger than unsigned short ASoC: Remove unused mutex from WM9090 driver ASoC: Remove redundant -codec from WM8776 driver name ASoC: Add device tree binding for WM8770 ASoC: Add device tree binding for WM8776 ASoC: Add device tree binding for WM8804 ASoC: Allow source specification for CODEC level sysclk Merge branch 'for-3.1' into for-3.2 ARM: SAMSUNG: Fix mask for S3C64xx CPU IDs Merge branch 'regmap-linus' into regmap-next regmap: Remove redundant owner field from the bus type struct regmap: Include the last register in debugfs output Merge branch 'for-3.1' into for-3.2 ASoC: Check that WM8996 FLL started even if we don't have the IRQ ASoC: Remove unused step size from debugfs CODEC write function regmap: Provide device read and write map interface for merging Merge branch 'regmap-interface' into regmap-next Merge branch 'topic/interface' of git://opensource.wolfsonmicro.com/regmap into for-3.2 staging: intel_sst: fix comment typo regulator: Implement deferred disable support ASoC: Disable WM8996 CPVDD supply when not in use ASoC: Correct channel numbers for WM8996 AIF2 ASoC: Fix WM8996 DC servo operation without IRQ Merge branch 'for-3.1' into for-3.2 ARM: S3C64XX: Remove unused CPU devices for Cragganmore ARM: S3C64XX: Hook up GPIO initiated DVS on Cragganmore ARM: S3C64XX: Use module identification for Cragganmore system builds ARM: S3C64XX: Hook up some additional supplies on Cragganmore ARM: S3C64XX: Add devices for Kilchoman audio module on Cragganmore ARM: S3C64XX: Register Lowland audio device on Cragganmore ASoC: Display the error code when we fail to add a DAPM control ASoC: WM8996 only needs bandgap for analogue functionality ASoC: Initial WM8996 headphone impedance measurement support ASoC: Add line loads to the list of supported detections for Speyside regmap: A cache type of _NONE behaves like a bypassed cache regmap: Prototype regcache_sync() regmap: Allow drivers to control cache_only flag ASoC: Fix unused variable warning in WM8996 ASoC: Refcount WM8996 bandgap from FLL too Merge branch 'for-3.1' into for-3.2 mfd: Support software initiated shutdown of WM831x PMICs ASoC: Add WM5100 driver ASoC: Trace and collect statistics for DAPM graph walking ASoC: Factor out per-widget DAPM power checks Merge branch 'for-3.1' into for-3.2 ASoC: Include delay.h in 88pm860x Merge branch 'peter/topic/for-mark/mcpdm_for-3.2' of git://gitorious.org/omap-audio/linux-audio into for-3.2 ASoC: Dynamically manage DBVDD2 and DBVDD3 on WM5100 ASoC: Add another DAPM stat for neighbour checks ASoC: Add missed BCLK rate to WM5100 driver Merge branch 'for-3.1' into for-3.2 ASoC: Support a wider range of sample rates on Speyside WM8962 ASoC: Rename WM8962 DMIC widget to DMIC_ENA ASoC: Convert WM8962 MICBIAS to a supply widget ASoC: Add support for on-board analogue microphones on Speyside WM8962 ASoC: Add DMIC control to Speyside WM8962 board ASoC: Don't force bias on ground referenced devices ASoC: Add platform data for WM1250 EV1 GPIOs ASoC: Set idle_bias_off for WM1250 EV1 ARM: S3C64xx: Add LDOVDD supply for CODEC on Cragganmore Merge branch 'for-3.1' into for-3.2 ASoC: Add device ID for WM9093 to WM9090 driver ASoC: Allow DAI formats to be specified in the dai_link ASoC: Use dai_fmt in speyside_wm8962 ASoC: Also count neighbour checks for supplies regmap: Fix lock used for regcache_cache_only() ASoC: Staticise non-exported symbols in rt5631 ASoC: Remove unused function check_vdac_to_outmix from rt5631 regmap: Fix apostrophe usage Merge branch 'for-3.1' into for-3.2 Merge branch 'for-3.1' into for-3.2 ASoC: Instantiate DAPM widgets before we do the DAI link init ASoC: Fix typo in 24.576MHz rate in WM5100 ASoC: Flush Samsung DMA on free mfd: Add WM1811 support ASoC: Add WM1811 support Merge branch 'for-3.1' into for-3.2 ASoC: Remove direct register cache accesses from WM8962 driver regulator: Fix return code from regulator_disable_deferred() ASoC: Factor write of widget power out into a separate function ASoC: Move bias level decision into main dapm_power_widgets() ASoC: Ensure all DAPM widgets have a power check callback ASoC: Factor out widget power check operation ASoC: Mark headphone, mic, speaker and line widgets as always connected ASoC: Do DAPM power checks only for widgets changed since last run ASoC: Reduce the number of neigbours we mark dirty when updating power ASoC: Add verbose debugging showing why widgets get marked dirty ASoC: Only run power_check() on a widget once per run ASoC: Don't mark the outputs of supplies as dirty on state changes ASoC: Stop checking for supplied widgets after we find the first ASoC: Use dapm_mark_dirty() for new DAPM widgets for consistency ASoC: Remove references to linux@wolfsonmicro.com ASoC: Ensure DAPM widgets are set up before we sync jacks Merge branch 'for-3.1' into for-3.2 regulator: Fix some bitrot in the machine driver documentation regulator: Clarify documentation for regulator-regulator supplies regulator: Add WM1811 support ASoC: Suppress early calls to snd_soc_dapm_sync() ASoC: Remove redundant snd_soc_dapm_sync() calls from machine drivers ASoC: Ensure all DAPM widgets are instantiated with the card ASoC: Assign power_check when we allocate DAPM widgets ASoC: Cache connected input and output recursions regmap: Use bsearch() to search the register defaults ASoC: Squash error codes from regmap down to -1 on read regmap: Return a sensible error code if we fail to read the cache regmap: Warn on raw I/O as well as bulk reads that bypass cache regmap: Allow rbtree to cache zero default values regmap: Ensure rbtree syncs registers set to zero properly ASoC: Fix DAPM sync for TLV320AIC3x custom DAPM widget ASoC: Convert Simtec machines to table based DAPM init ASoC: Convert H1940 to table based init ASoC: Convert RX1950 to table based init ASoC: Convert SmartQ to table based init ASoC: Convert SMDK WM8580 to table based DAPM init ASoC: Convert Jive to table based init regmap: Allow caches for devices with no defaults regulator: Add module.h include to gpio-regulator ASoC: Convert Goni to data based DAPM init ASoC: Add missing default for WM5100 Clocking 1 ASoC: Implement WM5100 accessory detection support ASoC: Instantiate card widgets immediately ARM: S3C64XX: Enable TCM support regmap: Support some block operations on cached devices ASoC: Update WM5100 accessory detection for revision A ASoC: Convert DA7210 to table based DAPM init regulator: Constify constraints name MANITAINERS: Add Cragganmore reference platform to Wolfson support mfd: Enable rbtree cache for wm831x devices ARM: S3C64XX: Fix SoC identification for S3C64xx devices gpio/samsung: Complain loudly if we don't know the SoC ASoC: Update WM1811 DCS codes for latest evaluation results ASoC: Convert WM9081 to table based control init ASoC: Fix prefixing of DAPM controls ASoC: WM9081 interrupt status register is volatile mfd: Convert pcf50633 to use new register map API mfd: Remove spurious newlines from wm831x-irq.c mfd: Allow WM8994 LDO enable pulls to be disabled mfd: Add more checks for WM8994 being active during suspend mfd: Select REGMAP_I2C from WM8400 mfd: Support software initiated shutdown of WM831x PMICs mfd: Simulate active high IRQs with wm831x gpiolib: Ensure struct gpio is always defined h8300: Move gpio.h to gpio-internal.h ASoC: Fix return value of wm5100_gpio_direction_out() cpufreq: Fix build of s3c64xx cpufreq driver for header change lis3lv02d: make regulator API usage unconditional backlight: fix broken regulator API usage in l4f00242t03 ASoC: Ensure WM8962 PLL registers are reset ASoC: Ensure the WM8962 oscillator and PLLs start up disabled ASoC: Ensure we always delay for WM8962 FLL when starting from SYSCLK watchdog: Convert wm831x driver to watchdog core Mark Einon (98): staging: et131x: Converting et1310_mac.c function and local names from CamelCase staging: et131x: Converting et1310_phy.c function and local names from CamelCase staging: et131x: Converting et1310_pm.c function and local names from CamelCase staging: et131x: Converting et1310_rx.c function and local names from CamelCase staging: et131x: Make static some local functions in et1310_rx.c staging: et131x: Converting et1310_rx.h variable names from CamelCase staging: et131x: add et1310_ prefix to et1310_mac.c functions staging: et131x: Convert et1310_tx.c function name from CamelCase staging: et131x: Fix variable typo carry_reg1 -> carry_reg2 staging: et131x: Remove redundant commented out code staging: et131x: Rename et131x_config_global_regs > et131x_configure_global_regs staging: et131x: Remove unecessary *etdev NULL check in et1310_phy_init() staging: et131x: Converting et1310_tx.c function and local names from CamelCase staging: et131x: Converting et1310_adapter.h variable names from CamelCase staging: et131x: Removing commented out code implemented elsewhere staging: et131x: Rename var name 'etdev' to 'adapter' throughout module staging: et131x: Fix link detection signalling staging: et131x: Fix free IRQ from IRQ context warning after tx_timeout staging: et131x: Update tx trans_start on device close to prevent tx_timeout staging: et131x: Further tidy up of 131x_pci_setup() MAINAINERS: Add details for drivers/staging/et131x staging: et131x: Remove unused xcvr_id in struct ce_stats staging: et131x: Remove redundant replica loopback code staging: et131x: Remove module_param et131x_speed_set staging: et131x: Use phy-device, mii_bus and ethtool_ops staging: et131x: converting et131x_ioctl to use phy_mii_ioctl staging: et131x: Remove xcvr_addr and et131x_xcvr_find staging: et131x: Remove redundant phy code staging: et131x: Use MII register defines from mii.h staging: et131x: Fix checkpatch whitespace warnings staging: et131x: Amend README file staging: et131x: Remove private adapter->linkspeed and use phydev->speed instead staging: et131x: Remove private adapter->duplex_mode and use phydev->duplex instead staging: et131x: Remove redundant struct adapter members staging: et131x: Remove PHY interrupt handling code from driver isr handler staging: et131x: remove calls to netif_carrier_[on|off] from et131x_mii_check staging: et131x: Remove registry_rx_mem_end from struct et131x_adapter staging: et131x: Remove cached_mask_value from et131x_adapter staging: et131x: Remove duplicated register defines from et1310_phy.h staging: et131x: Replace magic numbers in et1310_phy.c with defines staging: et131x: Remove struct mi_regs from et1310_phy.h staging: et131x: Remove ai_force_[duplex|speed] from et131x_adapter staging: et131x: Update README file mii: Convert spaces to tabs in mii.h mii: Remove references to DP83840 PHY in mii.h staging: et131x: support register dump in ethtool ops staging: et131x: Add link status to adapter struct staging: et131x: Remove et131x_check_mii() and move functionality into et131x_adjust_link() staging: et131x: Create et131x_[dis|en]able_txrx() calls staging: et131x: Remove header declaration of et131x_check_mii() staging: et131x: Bugfix - driver doesn't autoreneg after cable unplug/plug events staging: et131x: Remove TODO entry 'alloc_etherdev initilising memory with zero' staging: et131x: Introduce et1310_in_phy_coma() call staging: et131x: Remove adapter->bmsr, replace with phydev equivalents staging: et131x: Add pci suspend & resume functions staging: et131x: Fix add_timer() from et131x_open staging: et131x: Update TODO file for kernel parameters staging: et131x: Updating copyright statements and module authors staging: et131x: Fix indefinite low power sleep staging: et131x: Removing Olaf Hartmann's email as it bounces staging: et131x: Remove error path from suspend/resume code staging: et131x: Move pm calls from pci device to driver device staging: et131x: Remove file et131x_version.h staging: et131x: Fix et131x sparse warnings staging: et131x: Fix et131x smatch issues staging: et131x: Remove unused mac defines staging: et131x: Update TODO list staging: et131x: Put all .c files into one big file staging: et131x: Move function declarations from et131x.h to et131x.c staging: et131x: Move non-register defines from et131x.h to et131x.c staging: et131x: move et1310_address_map.h contents into et131x.h staging: et131x: move et1310_phy.h contents into et131x.h staging: et131x: move et131x_adapter.h contents into et131x.c staging: et131x: move et131x_defs.h contents into et131x.c staging: et131x: move et1310_rx.h contents into et131x.c staging: et131x: move et1310_tx.h contents into et131x.c staging: et131x: Update TODO list - remove 'put driver into single file' staging: et131x: Moving two extern inline functions to .c file staging: et131x: Make rx_ring.fbr{0,1} share a common structure staging: et131x: Fix issues when USE_FBR0 is not defined staging: et131x: use dma_alloc... instead of pci_alloc... staging: et131x: Match dma_alloc_ calls with dma_free_ calls staging: et131x: Tidy up PCI device table definition staging: et131x: on transmit, stop the queue if the next packet will fail staging: et131x: Convert rest of pci memory management to dma api staging: et131x: Remove unused defines staging: et131x: Remove unused rx_ring.recv_buffer_pool staging: et131x: Remove redundant et131x_reset_recv() call staging: et131x: Remove call to find pci pm capability staging: et131x: Remove unused rx_ring.recv_packet_pool staging: et131x: Remove some forward declarations staging: et131x: Remove forward declaration of et131x_adapter_setup staging: et131x: Remove more forward declarations staging: et131x: Remove yet more forward declarations staging: et131x: Remove even more forward declarations staging: et131x: Remove last of the forward declarations staging: et131x: Mainly whitespace changes to appease checkpatch staging: et131x: Remove redundant check and return statement Mark Kamichoff (1): net/usb: Add IPv6 support to the LG-VL600 LTE USB modem driver Mark Pearson (1): Staging: comedi: Fixed coding style issues. Mark Rustad (3): ixgbe: Fix PFC mask generation dcb: Use ifindex instead of ifname ixgbe: Correct check for change in FCoE priority Mark Rutland (19): perf: provide PMU when initing events ARM: perf: de-const struct arm_pmu perf: provide PMU when initing events ARM: perf: only register a CPU PMU when present ARM: perf: clean up event group validation ARM: perf: remove active_mask ARM: perf: move active_events into struct arm_pmu ARM: perf: move platform device to struct arm_pmu ARM: perf: indirect access to cpu_hw_events ARM: perf: remove unnecessary armpmu->stop ARM: perf: lock PMU registers per-CPU ARM: perf: add type field to struct arm_pmu ARM: perf: refactor event mapping ARM: perf: add support for multiple PMUs ARM: perf: remove event limit from pmu_hw_events ARM: perf: remove cpu-related misnomers ARM: perf: move arm_pmu into ARM: perf: Remove unnecessary armpmu->enable()s ARM: 7023/1: L2x0: Add interrupts property to OF binding Mark Salyzyn (2): [SCSI] pm8001: fix DEV_IS_GONE infinite retry [SCSI] pm8001: missing break statements Marko Ristola (1): [media] Refactor Mantis DMA transfer to deliver 16Kb TS data per interrupt Martin Bogomolni (1): ARM: highbank: Add cpu hotplug support Martin Hostettler (1): [media] v4l subdev: add dispatching for VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER Martin Peres (2): drm/nv04/pm: recalibrate timer on nvclk changes drm/nv50/gr: enable ctxprog xfer only when we need it to save power Martin Schwidefsky (22): clockevents: Make minimum delay adjustments configurable clockevents: Add direct ktime programming function s390: Use direct ktime path for s390 clockevent device PM / Hibernate: Include storage keys in hibernation image on s390 [S390] avoid warning in show_cpuinfo [S390] user per registers vs. ptrace single stepping [S390] memory leak with RCU_TABLE_FREE [S390] lowcore cleanup [S390] signal race with restarting system calls [S390] addressing mode limits and psw address wrapping [S390] add TIF_SYSCALL thread flag [S390] cleanup psw related bits and pieces [S390] allow all addressing modes [S390] smp: external call vs. emergency signal [S390] sparse: fix access past end of array warnings [S390] sparse: fix sparse static warnings [S390] sparse: fix sparse ANSI-C warnings [S390] sparse: fix sparse warnings about missing prototypes [S390] sparse: fix sparse warnings in math-emu [S390] sparse: fix sparse warnings with __user pointers [S390] sparse: fix sparse NULL pointer warnings [S390] sparse: fix sparse symbol shadow warning Martyn Welch (1): powerpc/86xx: Correct Gianfar support for GE boards Masakazu Mokuno (1): drivers/leds/led-triggers.c: fix memory leak Masami Hiramatsu (4): x86: Fix insn decoder for longer instruction ftrace/kprobes: Fix not to delete probes if in use perf probe: Fix to show correct error string perf tools: Fix a typo of command name as trace-cmd Mat Martineau (3): Bluetooth: Linearize skbs for use in BNEP, CMTP, HIDP, and RFCOMM Bluetooth: Handle fragmented skbs in bt_sock_stream_recvmsg() Bluetooth: Perform L2CAP SDU reassembly without copying data Mathias Krause (3): crypto: sha1 - export sha1_update for reuse crypto: sha1 - SSSE3 based SHA1 implementation for x86-64 tty: clearify structure initializer in notify_write() Mathieu Desnoyers (1): Tracepoint: Dissociate from module mutex Mathieu J. Poirier (1): hwspinlock/u8500: add hwspinlock driver Mats Randgaard (2): [media] TVP7002: Return V4L2_DV_INVALID if any of the errors occur [media] TVP7002: Changed register values Matt Burtch (1): ARM: i.MX28: shift frac value in _CLK_SET_RATE Matt Carlson (22): tg3: Remove dead code tg3: Consilidate MAC loopback code tg3: Pull phy int lpbk setup into separate func tg3: Restructure tg3_test_loopback tg3: Add external loopback support to selftest tg3: Update version to 3.120 tg3: Check all adv bits when checking config tg3: Fix missed MSI workaround tg3: Remove tp->rx_offset term when unneeded tg3: Add ability to turn off 1shot MSI tg3: Eliminate tg3_stop_fw() prototype tg3: Eliminate tg3_write_sig_post_reset() prototype tg3: Eliminate tg3_halt_cpu() prototype tg3: Code movement tg3: Fix APE mutex init and use tg3: Fix 4k tx bd segmentation code tg3: Fix 4k skb error recovery path tg3: Fix irq alloc error cleanup path tg3: Obtain PCI function number from device tg3: Schedule at most one tg3_reset_task run tg3: Eliminate timer race with reset_task tg3: Update version to 3.121 Matt Fleming (1): sparc: Use set_current_blocked() Matthew Daley (3): x25: Validate incoming call user data lengths x25: Handle undersized/fragmented skbs x25: Prevent skb overreads when checking call user data Matthew Garrett (1): USB: Fix runtime wakeup on OHCI Matthew McClintock (5): powerpc: Fix build dependencies for epapr.c which needs libfdt.h powerpc/85xx: Fix support for enabling doorbells for IPIs powerpc/85xx: issue 15 EOI after core reset for FSL CoreNet devices powerpc/fsl_booke: Fix comment in head_fsl_booke.S powerpc/85xx: Make kexec to interate over online cpus Matthias Dellweg (1): usb/core/devio.c: Check for printer class specific request Matthieu CASTET (2): mtd: nand_flash_detect_onfi propagate busw info EHCI : introduce a common ehci_setup Matthijs Kooijman (1): vlan: Don't propagate flag changes on down interfaces. Mattias Nilsson (7): mfd: Refactor DB8500 PRCMU reg access mfd: Extend DB8500 PRCMU mailbox defs mfd: Initialize DB8500 PRCMU regs mfd: Create a common interface for dbx500 PRCMU drivers mfd: Move to the new db500 PRCMU API mfd: Add db8500-prcmu accessors for PLL and SGA clock mfd: db8500-prcmu tweak for modem wakeup Mattias Wallin (7): ARM: plat-nomadik: MTU sched_clock as an option clocksource: add DBX500 PRCMU Timer support ARM: ux500: add support for clocksource DBX500 PRCMU mfd: ab5500 chip register access mach-ux500: ab5500 platform code added mfd: Add support for ab8500 v3.3 mfd: Remove support for early drop ab8500 chip Matvejchikov Ilya (1): slip: cleanup statistics generation Mauro Carvalho Chehab (36): [media] rc-main: Fix device de-registration logic [media] em28xx: Fix IR unregister logic v4l2-ioctl: properly return -EINVAL when parameters are wrong [media] tuner_xc2028: Allow selection of the frequency adjustment code for XC3028 [media] tuner/xc2028: Fix frequency offset for radio mode [media] tm6000: Don't try to use a non-existing interface [media] dvb-core, tda18271c2dd: define get_if_frequency() callback Merge tag 'v3.1-rc6' into staging/for_v3.2 [media] tm6000: Fix some CodingStyle issues [media] move tm6000 to drivers/media/video [media] rc tables: include linux/module.h Revert "[media] siano: apply debug flag to module level" [media] saa7115: Fix standards detection [media] pvrusb2: implement VIDIOC_QUERYSTD [media] v4l2-ioctl: Fill the default value for VIDIOC_QUERYSTD [media] saa7115: Trust that V4L2 core will fill the mask [media] pvrusb2: initialize standards mask before detecting standard [media] videodev2: Reorganize standard macros and add a few more macros [media] msp3400: Add standards detection to the driver [media] em28xx: Add VIDIOC_QUERYSTD support [media] cx23885: Don't use memset on vidioc_ callbacks [media] em28xx: implement VIDIOC_ENUM_FRAMESIZES i7core_edac: Fix oops when trying to inject errors edac: Move edac main structs to include/linux/edac.h i7core_edac: Don't enable memory scrubbing for Xeon 35xx MAINTAINERS: remove dropped edac_mce.* from the file i7core_edac: use edac's own way to print errors i7core_edac: return -ENODEV if no MC is found i7core_edac: Initialize memory name with cpu, channel, bank i7300_edac: Fix error cleanup logic edac: Add an experimental new driver to support Sandy Bridge CPU's edac: sb_edac: Add it to the building system edac: tag sb_edac as EXPERIMENTAL, as it requires more testing MAINTAINERS: add an entry for Edac Sandy Bridge driver [media] move cx25821 out of staging staging: Move media drivers to staging/media Mayuresh Janorkar (1): OMAP: DSS2: Add picodlp panel driver Meelis Roos (1): [SCSI] qlogicpti: fix timeout Mel Gorman (9): mm: memory hotplug: Check if pages are correctly reserved on a per-section basis mm: vmscan: do not writeback filesystem pages in direct reclaim mm: vmscan: remove dead code related to lumpy reclaim waiting on pages under writeback xfs: warn if direct reclaim tries to writeback pages ext4: warn if direct reclaim tries to writeback pages mm: vmscan: do not writeback filesystem pages in kswapd except in high priority mm: vmscan: throttle reclaim if encountering too many dirty pages under writeback mm: vmscan: immediately reclaim end-of-LRU dirty pages when writeback completes vmscan: abort reclaim/compaction if compaction can proceed Mi Jinlong (6): SUNRPC: Replace svc_addr_u by sockaddr_storage SUNRPC: compare scopeid for link-local addresses nfsd41: try to check reply size before operation nfs: fix bug about IPv6 address scope checking nfs: fix bug about IPv6 address scope checking nfs41: implement DESTROY_CLIENTID operation Miao Xie (1): Btrfs: fix race between multi-task space allocation and caching space Michael Büsch (1): b43/legacy: Remove firmware IDs Michael Chan (3): cnic, bnx2fc: Increase maximum FCoE sessions. cnic: Add timeout for ramrod replies. [SCSI] edd: Treat "XPRS" host bus type the same as "PCI" Michael Cree (2): alpha: wire up accept4 syscall alpha: wire up sendmmsg syscall Michael Ellerman (1): powerpc/wsp: Add MSI support for PCI on PowerEN Michael Grzeschik (1): [media] mt9m111: move lastpage to struct mt9m111 for multi instances Michael Hench (1): mtd: eLBC NAND: update ecc_stats.corrected when lteccr available Michael Hennerich (35): iio: core: deconstify members of struct iio_chan_spec iio: adc: New driver for AD7280A Lithium Ion Battery Monitoring System iio: impedance-analyzer: New driver for AD5933/4 Impedance Converter, Network Analyzer IIO: ADC: New driver for AD7190/AD7192/AD7195 4 Channel SPI ADC staging:iio: fix typo staging:iio:adc:ad7150: remove conversion mode handling. staging:iio:adc:ad7150: Add support for the second interrupt strobe. staging:iio:adc:ad7152: increase readability by introducing proper bit defines staging:iio:adc:ad7152: Miscellaneous fixes and touch-up staging:iio:adc:ad7152: update scale handling staging:iio:adc:ad7152: Add proper locking staging:iio:adc:ad7152: Update sample rate, conversion time, digital filter handling staging:iio:adc:ad7152: Fix differential channel return value and increase delay. staging:iio:imu: adis16400: Avoid using printk facility staging:iio:accel:adis16209: Fix double registration of in_incli0_index staging:iio:adc:ad7291: fix channel mapping staging:iio:adc:ad7291: Fix typos, change kconfig description and file header staging:iio:adc:ad7291: Fix AD7291_T_SENSE_MASK staging:iio:adc:ad7291: Add regulator, reference voltage and scale handling staging:iio:adc:ad7291: don't swab results twice and introduce more register defines staging:iio:adc:ad7291: fix mask bit generation staging:iio:adc:ad7291: introduce IIO_EVENT_CODE_EXTRACT_CHAN_TYPE and use accordingly staging:iio:adc:ad7291: fix channel mapping for event enables staging:iio:adc:ad7291: reset device and setup irq before it is enabled staging:iio:adc:ad7192: add temp_scale attribute, change module description staging:iio:adc:ad7192: return len and fix out of range checking staging:iio: ad7152: fix channel assignment for AD7153 staging: iio: adc: Replace, rewrite ad7745 from scratch. iio: adc: remove ADT75 driver - hwmon/lm75 will take over ADT75 support Input: adp5589-keys - add support for the ADP5585 derivatives iio: Spell fix - consistent use of Converter - no functional changes iio: adc: Relocate Capacitance to Digital Converters (CDC) into own subdir iio: cdc: Fix pushed event code - Typo, should be IIO_CAPACITANCE. hwmon: (lm75) Add support for Analog Devices ADT75 Blackfin: boards: clean up i2c_board_info Michael Holzheu (11): [S390] kdump: Add KEXEC_CRASH_CONTROL_MEMORY_LIMIT [S390] kdump: Add size to elfcorehdr kernel parameter [S390] Force PSW restart on online CPU [S390] Add real memory access functions [S390] kdump backend code [S390] kdump: Initialize vmcoreinfo note at startup [S390] Export vmcoreinfo note [S390] kdump: Add infrastructure for unmapping crashkernel memory [S390] Add architecture code for unmapping crashkernel memory [S390] Remove error checking from copy_oldmem_page() lib/string.c: fix strim() semantics for strings that have only blanks Michael Jones (2): OMAP2: PM debug: remove leftover debug code [media] omap3isp: queue: fail QBUF if user buffer is too small Michael Krufky (23): [media] dvb-usb: add ATSC support for the Hauppauge WinTV-Aero-M [media] dvb-usb: refactor MFE code for individual streaming config per frontend [media] dvb-usb: fix streaming failure on channel change [media] dvb-usb: improve sanity check of adap->active_fe in dvb_usb_ctrl_feed [media] mxl111sf: use adap->num_frontends_initialized to determine which frontend is being attached [media] dib0700: fix WARNING: please, no spaces at the start of a line [media] dib0700: fix WARNING: suspect code indent for conditional statements [media] dib0700: fix ERROR: space required before that '&' [media] dib0700: fix ERROR: space required after that ',' [media] dibusb-common: fix ERROR: space required after that ',' [media] dibusb-mb: fix ERROR: space required after that ',' [media] ttusb2: fix ERROR: space required after that ',' [media] dvb-usb-dvb: ERROR: space required after that ',' [media] cxusb: fix ERROR: do not use assignment in if condition [media] dibusb-common: fix ERROR: do not use assignment in if condition [media] dibusb-mb: fix ERROR: do not use assignment in if condition [media] digitv: fix ERROR: do not use assignment in if condition [media] m920x: fix ERROR: do not use assignment in if condition [media] opera1: fix ERROR: do not use assignment in if condition [media] DVB: add MaxLinear MxL111SF DVB-T demodulator driver [media] mxl111sf: add DVB-T support [media] mxl111sf: disable snr / ber calculations for DVB-T [media] mxl111sf: update demod_ops.info.name to "MaxLinear MxL111SF DVB-T demodulator" Michael Neuling (1): powerpc: fix building hvc_opal.c Michael Olbrich (1): [media] v4l: mem2mem: add wait_{prepare,finish} ops to m2m_testdev Michael Opdenacker (1): ASoC: fix checkpatch.pl error in omap-mcbsp Michael Riesch (1): usbnet: add timestamping support Michael S. Tsirkin (2): virtio-blk: use ida to allocate disk index virtio-blk: use ida to allocate disk index Michael Tandy (1): Input: adxl34x - documentation cleanup Michael Witten (2): Kconfig: Copyedit: DEBUG_SECTION_MISMATCH DRM: bug: RADEON_DEBUGFS_MAX_{NUM_FILES => COMPONENTS} Michal Hocko (6): cputime: Clean up cputime_to_usecs and usecs_to_cputime macros nohz: Fix update_ts_time_stat idle accounting nohz: Make idle/iowait counter update conditional proc: Consider NO_HZ when printing idle and iowait times rcu: Not necessary to pass rcu_read_lock_held() to rcu_dereference_protected() lguest: move process freezing before pending signals check Michal Malý (7): HID: lg4ff - Move handling of Logitech wheels to lg4ff driver HID: lg4ff - Add support for native mode switching HID: lg4ff - Add range setting support and sysfs interface HID: lg4ff - Add autocentering command accepted by Formula Force EX HID: lg4ff - Fix misleading info in Kconfig HID: lg4ff - Document sysfs interface for range setting HID: "hid-logitech" driver with Logitech Driving Force GT Michal Marek (7): kbuild: Do not delete empty files in make distclean Merge branch 'master/kconfig-localmodconfig' of git://github.com/lacombar/linux-2.6 into kbuild/kconfig Merge branch 'kconfig/for-next' of git://github.com/lacombar/linux-2.6 into kbuild/kconfig staging/cxt1e1: Header cleanup genksyms: Minor parser cleanup genksyms: Do not expand internal types genksyms: Regenerate lexer and parser Michal Nazarewicz (1): usb: Provide usb_speed_string() function Michal Schmidt (4): bnx2x: downgrade Max BW error message to debug bnx2x: resurrect RX hashing sunrpc: add MODULE_ALIAS to match the filesystem name params: make dashes and underscores in parameter names truly equal Michal Simek (11): microblaze: Clear top bit from cnt32_to_63 microblaze: Change label name in copy_tofrom_user microblaze: Separate fixup section definition microblaze: Change label names - copy_tofrom_user microblaze: Simplify logic for unaligned byte copying microblaze: Add loop unrolling for PAGE in copy_tofrom_user microblaze: Fix access_ok macro microblaze: Add PVR for Microblaze v8.20.a microblaze: Add __ucmpdi2() helper function microblaze: Remove NET_IP_ALIGN from system.h microblaze: Use delay slot in __strnlen_user, __strncpy_user MichaÅ‚ MirosÅ‚aw (4): ixgbevf: convert to ndo_fix_features ixgb: convert to ndo_fix_features ixgb: finish conversion to ndo_fix_features igbvf: convert to ndo_fix_features MichaÅ‚ SroczyÅ„ski (1): USB: pl2303: remove unreachable code Miche Baker-Harvey (1): hvc_console: display printk messages on console. Michel Dänzer (4): vmwgfx: Add support for depth 8 vmwgfx: Don't write to read-only registers vmwgfx: Fix 'bbp' typo vmwgfx: Print error diagnostics if depth doesn't match the host expectation Michio Honda (2): sctp: HEARTBEAT negotiation after ASCONF sctp: Bundle HEAERTBEAT into ASCONF_ACK Mihai Caraman (1): drivers/virt: add ioctl for 32-bit compat on 64-bit to fsl-hv-manager Mihai Maruseac (1): dev: use name hash for dev_seq_ops Mijhail Moreyra (4): [media] cx23885: Add ALSA support [media] cx23885: add definitions for HVR1500 to support audio [media] cx23885: correct the contrast, saturation and hue controls [media] cx23885: hooks the alsa changes into the video subsystem Mika Lansirinne (1): ixgbe: get pauseparam autoneg Mika Westerberg (13): ASoC: snappercl15: convert to use snd_soc_register_card() ARM: ep93xx: simone: register audio platform device ARM: ep93xx: edb93xx: register audio platform device ARM: ep93xx: snappercl15: register audio platform device ASoC: ep93xx-pcm: add MODULE_ALIAS ASoC: simone: convert to use snd_soc_register_card() ASoC: edb93xx: convert to use snd_soc_register_card() spi/spi-ep93xx: add module.h include dmaengine/ep93xx_dma: add module.h include ARM: 7135/1: ep93xx: bring back missing mfd: Add Intel MSIC driver x86, mrst: add platform support for MSIC MFD driver mfd: Add missing include to intel_msic Mike Christie (19): [SCSI] iscsi_transport: add support for net settings [SCSI] qla4xxx: add support for set_net_config [SCSI] iscsi class: add iface representation [SCSI] iscsi cls: sysfs group is_visible callout for conn attrs [SCSI] iscsi class: sysfs group is_visible callout for session attrs [SCSI] iscsi class: remove iface param mask [SCSI] iscsi class: sysfs group is_visible callout for iscsi host attrs [SCSI] be2iscsi: remove host and session casts [SCSI] iscsi class: expand vlan support [SCSI] libiscsi: don't bugon when if user sets markers [SCSI] iscsi class: add bsg support to iscsi class [SCSI] qla4xxx: export iface name [SCSI] scsi scan: don't fail scans when host is in recovery [SCSI] qla4xxx: select iscsi boot sysfs attrs [SCSI] iscsi class: Replace iscsi_get_next_target_id with IDA [SCSI] iscsi class: fix link local mispelling [SCSI] qla4xxx: fix data alignment and use nl helpers [SCSI] iscsi class: fix vlan configuration [SCSI] qla4xxx: export address/port of connection (fix udev disk names) Mike Ditto (1): forcedeth: Acknowledge only interrupts that are being processed Mike Frysinger (2): Blackfin: SMP: convert to common asm-generic/atomic.h Blackfin: merge asm/mutex.h into kbuild too Mike Galbraith (4): sched: fix broken SCHED_RESET_ON_FORK handling locking, drivers/dca: Annotate dca_lock as raw rcu: Wire up RCU_BOOST_PRIO for rcutree perf hists browser: Add missing stdarg.h include Mike Hench (1): mtd: eLBC NAND: remove elbc_fcm_ctrl->oob_poi Mike Marciniszyn (9): IB/qib: Correct nfreectxts for multiple HCAs IB/qib: Optimize RC/UC code by IB operation IB/qib: Decode path MTU optimization IB/qib: Eliminate divide/mod in converting idx to egr buf pointer IB/qib: Use RCU for qpn lookup IB/qib: Precompute timeout jiffies to optimize latency IB/qib: Remove s_lock around header validation IB/qib: Clean up checkpatch issue IB/qib: Fix panic in RC error flushing logic Mike McCormack (7): rtl8192e: reject rtl8192se cards with same PCI ID rtl8192e: Remove extra ifdefs rtl8192e: Remove CONFIG_RTL8192_IO_MAP rtl8192e: Remove WIRELESS_EXT macro checks rtl8192e: Remove occurences of #if 1 rtl8192e: Remove unused debug code rtl8192e: Add a TODO Mike Miller (3): [SCSI] hpsa: change confusing message to be more clear cciss: add small delay when using PCI Power Management to reset for kump hpsa: add small delay when using PCI Power Management to reset for kump Mike Sterling (1): Staging: hv: Add support for >2 TB LUN in storage driver. Mike Turquette (3): ARM: OMAP4: clock: round_rate and recalc functions for DPLL_ABE ARM: OMAP3+: dpll: use DPLL's round_rate when setting rate ARM: OMAP3+: dpll: assign clk rate from rounded rate during rate set Mike Waychison (2): KVM: x86: get_msr support for HV_X64_MSR_APIC_ASSIST_PAGE KVM: Really fix HV_X64_MSR_APIC_ASSIST_PAGE Mike Williams (1): powerpc/4xx: edac: Add comma to fix build error Mikhail Gruzdev (1): Blackfin: fix sparse warnings in copy_to/from_user Mikhail Kshevetskiy (3): mtd: m25p80: add support for at25df321a spi data flash tty/n_gsm: fix a bug in gsm_dlci_data_output (adaption = 2 case) tty/n_gsm: avoid fifo overflow in gsm_dlci_data_output Miklos Szeredi (8): vfs: ignore error on forced remount hypfs: remove unnecessary nlink setting jfs: remove unnecessary nlink setting ocfs2: remove unnecessary nlink setting logfs: remove unnecessary nlink setting filesystems: add missing nlink wrappers filesystems: add set_nlink() vfs: protect i_nlink Mikulas Patocka (7): sysfs: count subdirectories sysfs: use rb-tree for name lookups sysfs: remove s_sibling hacks sysfs: use rb-tree for inode number lookup dm kcopyd: add dm_kcopyd_zero to zero an area dm: add bufio vmscan: fix shrinker callback bug in fs/super.c Milan Broz (1): kobj_uevent: Ignore if some listeners cannot handle message Milton Miller (4): powerpc: Override dma_get_required_mask by platform hook and ops dma-mapping: Add get_required_mask if arch overrides default powerpc: Use the newly added get_required_mask dma_map_ops hook powerpc: Tidy up dma_map_ops after adding new hook Mimi Zohar (28): security: new security_inode_init_security API adds function callback integrity: move ima inode integrity data management xattr: define vfs_getxattr_alloc and vfs_xattr_cmp evm: re-release security: imbed evm calls in security hooks evm: evm_inode_post_removexattr evm: imbed evm_inode_post_setattr evm: add evm_inode_init_security to initialize new files evm: call evm_inode_init_security from security_inode_init_security evm: permit only valid security.evm xattrs to be updated evm: add evm_inode_setattr to prevent updating an invalid security.evm evm: building without EVM enabled fixes evm: fix evm_inode_init_security return code CIFS: remove local xattr definitions evm: fix build problems evm: add Kconfig TCG_TPM dependency evm: add MAINTAINERS entry encrypted-keys: create encrypted-keys directory encrypted-keys: remove trusted-keys dependency evm: remove TCG_TPM dependency evm: fix security/security_old_init_security return code evm: limit verifying current security.evm integrity evm: posix acls modify i_mode evm: permit mode bits to be updated lib: add error checking to hex2bin trusted-keys: check hex2bin result encrypted-keys: check hex2bin result target: check hex2bin result Minchan Kim (6): mm: compaction: trivial clean up in acct_isolated() mm: change isolate mode from #define to bitwise type mm: compaction: make isolate_lru_page() filter-aware mm: zone_reclaim: make isolate_lru_page() filter-aware mm: migration: clean up unmap_and_move() vmscan: add barrier to prevent evictable page in unevictable list Ming Lei (13): [media] uvcvideo: Set alternate setting 0 on resume if the bus has been reset usb: ehci: remove wmb in qh_update usb: ehci: only prepare zero packet for out transfer if required usb: ehci: fix comment for EHCI_SHRINK_JIFFIES usb: ehci: remove the 1st wmb in qh_append_tds PM / Runtime: pm_runtime_idle() can be called in atomic context PM / Runtime: Introduce trace points for tracing rpm_* functions PM / Runtime: Replace dev_dbg() with trace_rpm_*() PM / Tracing: build rpm-traces.c only if CONFIG_PM_RUNTIME is set ata_piix: make DVD Drive recognisable on systems with Intel Sandybridge chipsets(v2) PM / Runtime: Update document about callbacks PM / Runtime: Fix kerneldoc comment for rpm_suspend() PM / Runtime: Handle .runtime_suspend() failure correctly Mingkai Hu (1): powerpc/85xx: Rename p2040_rdb.c to p2041_rdb.c Misael Lopez Cruz (1): ASoC: omap-mcpdm: Replace legacy driver Mitko Haralanov (2): IB/qib: Hold links until tuning data is available IB/qib: Fix issue with link states and QSFP cables Mitsuo Hayasaka (2): bonding: use local function pointer of bond->recv_probe in bond_handle_frame mm: avoid null pointer access in vm_struct via /proc/vmallocinfo Moger, Babu (4): [SCSI] scsi_dh_rdac: Adding couple more vendor product ids [SCSI] scsi_dh_alua: Add one more check-condition for alua handler [SCSI] scsi_dh: check queuedata pointer before proceeding further [SCSI] scsi_dh_alua: Fix the time inteval for alua rtpg commands Mohammed Shafi Shajakhan (15): ath9k_htc: minor clean-up ath9k: optimize rate control statistics ath9k: remove obselete comments ath9k: Add support for get_stats callback ath9k_htc: Add get_stats call back ath9k: use appropriate debug mask ath9k: minor cleanup in ani ath9k: enable LED pin for AR946/8x chipsets ath9k: Fix PS wrappers and enabling LED rfkill: properly assign a boolean type ath9k: add Block ACK bitmap in sample debug ath9k/ath9k_htc: Fix PS wrappers for RF kill ath9k_hw: extend GPIO pin select mask for rfkill ath9k_hw: Fix number of GPIO pins for AR9287/9300 ath9k_hw: set pci_express capability true for AR9480 Murali Raja (1): net-netlink: Add a new attribute to expose TOS values via netlink Mythri P K (14): OMAP4: DSS2: HDMI: HDMI clean up to pass base_address OMAP4: DSS2: HDMI: Move pll and video configuration OMAP4: DSS2: HDMI: Use specific HDMI timings structure OMAP4: DSS2: HDMI: Move HDMI IP independent generic header OMAP4: DSS2: HDMI: Move the EDID definition from HDMI OMAP4: DSS2: HDMI: Split the current HDMI driver to move OMAP4: DSS2: HDMI: Move the HDMI IP dependent audio OMAP4: DSS2: HDMI: Rename the functions in HDMI IP library OMAP4: DSS2: HDMI: Function pointer approach to call OMAP4: DSS2: Rename hdmi_omap4_panel.c to hdmi_panel.c OMAPDSS: HDMI: Move the comments in avi infoframe OMAPDSS: HDMI: Replace hdmi_reg struct with u16 OMAPDSS: HDMI: Add missing register definitions OMAPDSS: HDMI: Add support to dump registers through debugfs MyungJoo Ham (7): regulator: max8952: removed unused mutex. PM / OPP: Add OPP availability change notifier. PM: Introduce devfreq: generic DVFS framework with device-specific OPPs PM / devfreq: Add common sysfs interfaces PM / devfreq: Add basic governors mfd: Wake-up from Suspend MAX8997 support [CPUFREQ] ARM Exynos4210 PM/Suspend compatibility with different bootloaders Márton Németh (1): staging: usbip: add a usbip protocol document Nadav Har'El (3): KVM: L1 TSC handling KVM: nVMX: Fix nested VMX TSC emulation KVM: SVM: Fix TSC MSR read in nested SVM Namhyung Kim (3): md/raid1: factor out common bio handling code dm: use local printk ratelimit dm: remove superfluous smp_mb Namjae Jeon (5): udf: Add readpages support for udf. mmc: core: general purpose MMC partition support. mmc: fix compile error when CONFIG_BLOCK is not enabled udf: Skip mirror metadata FE loading when metadata FE is ok isofs: add readpages support Nandita Dukkipati (1): Proportional Rate Reduction for TCP. Nao Nishijima (2): [SCSI] genhd: add a new attribute "alias" in gendisk [SCSI] sd: Use sd_printk() instead of printk() Nasir Abed (1): Staging: comedi: c6xdigio: fixed missing KERN_* in printk Nathan Fontenot (1): memory hotplug: Correct page reservation checking Naveen Krishna Chatradhi (1): ARM: SAMSUNG: Remove unnecessary duplication of plat_data on TSADC Neil Armstrong (1): init/do_mounts_rd.c: fix ramdisk identification for padded cramfs Neil Horman (2): dma-debug: hash_bucket_find needs to allow for offsets within an entry perf script: Add drop monitor script Neil Zhang (16): usb: gadget: mv_udc: refine the driver structure usb: gadget: mv_udc: add section information usb: gadget: mv_udc: fix kernel panic on some platforms usb: gadget: mv_udc: fix a clerical error usb: gadget: mv_udc: ep0 needn't set toggle flag usb: gadget: mv_udc: init next dtd ptr for dqh when init ep0 usb: gadget: mv_udc: fix bug when handle setup package. usb: gadget: mv_udc: add missing spinlock in ep enable/disable usb: gadget: mv_udc: set unused endpoint with right type usb: gadget: mv_udc: rewrite fifo flush usb: gadget: mv_udc: correct ep0 state usb: gadget: mv_udc: add shutdown function for it usb: gadget: mv_udc: fix dtd dma confusion usb: gadget: mv_udc: use DMA API for status_req's dma address usb: gadget: mv_udc: add test mode support usb: gadget: mv_udc: add clock gating support NeilBrown (30): md/bitmap: rename and tidy up BITMAP_PAGE_CLEAN md/bitmap: improve handling of 'allclean'. md/raid1: add documentation to r1_private_data_s data structure. md/raid5: remove pointless NULL test. md/raid1/ avoid bio search in end_sync_read() md/raid5: convert to macros into inline functions. md: remove some old DEBUGging code. md: remove PRINTK and dprintk debugging and use pr_debug md/raid0: convert some printks to pr_debug. md: removing typedefs: mdk_rdev_t -> struct md_rdev md: remove typedefs: mddev_t -> struct mddev md: remove typedefs: mdk_thread_t -> struct md_thread md: remove typedefs: r10bio_t -> struct r10bio and r1bio_t -> struct r1bio md: remove typedefs: mirror_info_t -> struct mirror_info md/linear: remove typedefs: dev_info_t -> struct dev_info md/faulty: remove typedef: conf_t -> struct faulty_conf md/linear: typedef removal: linear_conf_t -> struct linear_conf md/multipath: typedef removal: multipath_conf_t -> struct mpconf md/raid0: typedef removal: raid0_conf_t -> struct r0conf md/raid10: typedef removal: conf_t -> struct r10conf md/raid1: typedef removal: conf_t -> struct r1conf md/raid5: typedef removal: raid5_conf_t -> struct r5conf md/bitmap remove fault injection options. md: rename "mdk_personality" to "md_personality" md: add proper write-congestion reporting to RAID1 and RAID10. md: clear In_sync bit on devices added to an active array. NFS/sunrpc: don't use a credential with extra groups. md/raid5: fix bug that could result in reads from a failed device. md: Fix some bugs in recovery_disabled handling. md/raid10: Fix bug when activating a hot-spare. Nelson Elhage (1): epoll: fix spurious lockdep warnings Nestor Lopez Casado (2): HID: Add full support for Logitech Unifying receivers HID: hid-logitech-dj: fix off by one Nicholas Bellinger (24): target: Re-org of core_tmr_lun_reset target: Prevent TRANSPORT_FREE_CMD_INTR processing in core_tmr_drain_cmd_list target: Fix transport_cmd_finish_abort queue removal bug target: Prevent transport_send_task_abort when CHECK_CONDITION status target: Remove session_reinstatement parameter from ->transport_wait_for_tasks target: Convert ->transport_wait_for_tasks usage to transport_generic_free_cmd iscsi-target: Remove SCF_SE_LUN_CMD flag abuses target: Merge transport_cmd_finish_abort_tmr into transport_cmd_finish_abort target: Remove legacy + unused device active I/O shutdown code loopback: Prevent uninitialized use of tl_tpg in tcm_loop_queuecommand target: Fix REPORT TARGET PORT GROUPS handling with small allocation length target: transport_subsystem_check_init cleanups target: Fix BIDI t_task_cdb handling in transport_generic_new_cmd target: Fix incorrect transport_sent usage target: Remove legacy se_task->task_timer and associated logic target: Fix compile warning w/ missing module.h include target: Fix compile warning w/ missing module.h include tcm_loop: Add explict read buffer memset for SCF_SCSI_CONTROL_SG_IO_CDB target: Check -ENOMEM to signal QUEUE_FULL from fabric callbacks iscsi-target: Add missing CMDSN_LOWER_THAN_EXP check in iscsit_handle_scsi_cmd iscsi-target: Fix non-immediate TMR handling target: Make TFO->check_stop_free return free status target: Remove core TRANSPORT_FREE_CMD_INTR usage target: Add generic active I/O shutdown logic Nick Bowler (2): ARM: 7064/1: vexpress: Use wfi macro in platform_do_lowpower. crypto: ghash - Avoid null pointer dereference if no key is set Nico Erfurth (1): at91: merge board USB-A9260 and USB-A9263 together Nicolae Mogoreanu (1): 9p: fix 9p.txt to advertise msize instead of maxdata Nicolas Ferre (18): dmaengine: at_hdmac: replace spin_lock* with irqsave variants dmaengine: at_hdmac: improve power management routines dmaengine: at_hdmac: add wrappers for testing channel state dmaengine: at_hdmac: fix way to specify cyclic capability mtd: atmel_nand: fix wrong use of 0 as NULL mtd: atmel_nand: optimize read/write buffer functions ARM: at91: remove dependency for Atmel PWM driver selector in Kconfig ARM: at91: add defconfig for at91sam9g45 family tty/serial: RS485 bindings for device tree tty/serial: atmel_serial: change platform_data variable name tty/serial: atmel_serial: whitespace and braces modifications tty/serial: atmel_serial: auto-enumerate ports tty/serial: atmel_serial: add device tree support tty/serial: atmel_serial: bootconsole removed from auto-enumerates dt: Add empty of_match_node() macro ARM: at91: dt: at91sam9g45 family and board device tree files mmc: at91_mci: remove the use of irq_to_gpio dt: add empty of_alias_get_id() for non-dt builds Nicolas Pitre (109): ARM: 7013/1: P2V: Remove ARM_PATCH_PHYS_VIRT_16BIT ARM: introduce atag_offset to replace boot_params ARM: mach-clps711x: convert boot_params to atag_offset ARM: mach-cns3xxx: convert boot_params to atag_offset ARM: mach-davinci: convert boot_params to atag_offset ARM: mach-dove: convert boot-params to atag_offset ARM: mach-ebsa110: convert boot_params to atag_offset ARM: mach-ep93xx: convert boot_params to atag_offset ARM: mach-exynos4: convert boot_params to atag_offset ARM: mach-footbridge: convert boot_params to atag_offset ARM: mach-gemini: convert boot_params to atag_offset ARM: mach-h720x: convert boot_params to atag_offset ARM: mach-imx: convert boot_params to atag_offset ARM: mach-integrator: convert boot_params to atag_offset ARM: mach-iop13xx: convert boot_params to atag_offset ARM: mach-iop32x: convert boot_params to atag_offset ARM: mach-iop33x: convert boot_params to atag_offset ARM: mach-ixp2000: convert boot_params to atag_offset ARM: mach-ixp23xx: convert boot_params to atag_offset ARM: mach-ixp4xx: convert boot_params to atag_offset ARM: mach-kirkwood: convert boot_params to atag_offset ARM: mach-ks8695: convert boot_params to atag_offset ARM: mach-lpc32xx: convert boot_params to atag_offset ARM: mach-msm: convert boot_params to atag_offset ARM: mach-mv78xx0: convert boot_params to atag_offset ARM: mach-mx5: convert boot_params to atag_offset ARM: mach-netx: convert boot_params to atag_offset ARM: mach-nomadik: convert boot_params to atag_offset ARM: mach-nuc93x: convert boot_params to atag_offset ARM: mach-omap1: convert boot_params to atag_offset ARM: mach-omap2: convert boot_params to atag_offset ARM: mach-orion5x: convert boot_params to atag_offset ARM: mach-pnx4008: convert boot_params to atag_offset ARM: mach-pxa: convert boot_params to atag_offset ARM: mach-realview: convert boot_params to atag_offset ARM: mach-rpc: convert boot_params to atag_offset ARM: mach-s3c24*: convert boot_params to atag_offset ARM: mach-s5p64x0: convert boot_params to atag_offset ARM: mach-s3c64xx: convert boot_params to atag_offset ARM: mach-s5pc100, mach-s5pv210: convert boot_params to atag_offset ARM: mach-sa1100: convert boot_params to atag_offset ARM: mach-shark: convert boot_params to atag_offset ARM: mach-spear*: convert boot_params to atag_offset ARM: mach-tcc8k: convert boot_params to atag_offset ARM: mach-tegra: convert boot_params to atag_offset ARM: mach-u300: convert boot_params to atag_offset ARM: mach-ux500: convert boot-params to atag_offset ARM: mach-versatile: convert boot-params to atag_offset ARM: vexpress: convert boot_params to atag_offset ARM: mach-vt8500: convert boot_params to atag_offset ARM: mach-w90x900: remove useless boot_params entries ARM: mach-prima2: convert boot_params to atag_offset ARM: remove boot_params from struct machine_desc Merge the enabling by default of ARM_PATCH_PHYS_VIRT ARM: mach-prima2: move ARM_DMA_ZONE_SIZE to mdesc->dma_zone_size ARM: zImage: ensure it is always a multiple of 64 bits in size ARM: zImage: make sure appended DTB doesn't get overwritten by kernel .bss ARM: zImage: gather some string functions into string.c ARM: zImage: allow supplementing appended DTB with traditional ATAG data ARM: zImage: prevent constant copy+rebuild of lib1funcs.S ARM: mach-nuc93x: delete musb_debugfs.c: remove unneeded includes on ARM ARM: add an extra temp register to the low level debugging addruart macro ARM: plat-omap: make OMAP_UART_INFO into a relative offset ARM: mach-omap1: clean up debug-macro.S ARM: mach-omap2: clean up debug-macro.S ARM: mach-davinci: make DAVINCI_UART_INFO into a relative offset ARM: mach-davinci: clean up debug-macro.S ARM: prepare for removal of a bunch of files ARM: mach-dove: remove include/mach/memory.h ARM: mach-kirkwood: remove mach/memory.h ARM: mach-orion5x: remove mach/memory.h ARM: OMAP: move OMAP1 memory config from plat/memory.h to its mach/memory.h ARM: mach-omap2: remove mach/memory.h ARM: mach-iop33x: remove mach/memory.h ARM: mach-s3c2410: remove memory.h ARM: mach-mv78xx0: remove mach/memory.h ARM: mach-vexpress: remove mach/memory.h ARM: mach-w90x900: remove mach/memory.h ARM: mach-pnx4008: remove mach/memory.h ARM: mach-iop32x: remove mach/memory.h ARM: mach-nomadik: remove mach/memory.h ARM: mach-ux500: remove mach/memory.h ARM: mach-versatile: remove mach/memory.h ARM: mach-netx: remove mach/memory.h ARM: mach-lpc32xx: remove mach/memory.h ARM: mach-gemini: remove mach/memory.h ARM: mach-msm: remove mach/memory.h ARM: spear: remove mach/memory.h and plat/memory.h ARM: mach-mxs: remove mach/memory.h ARM: mach-nuc93x: remove mach/memory.h ARM: mach-cns3xxx: remove mach/memory.h ARM: mach-mmp: remove mach/memory.h ARM: plat-tcc: remove mach/memory.h ARM: mach-tegra: remove mach/memory.h ARM: mach-s5pc100: remove mach/memory.h ARM: mach-vt8500: remove mach/memory.h ARM: mach-h720x: remove mach/memory.h ARM: mach-ixp4xx: remove mach/memory.h ARM: mach-pxa: remove mach/memory.h ARM: mach-davinci: remove mach/memory.h ARM: mach-bcmring: remove mach/memory.h ARM: mach-zynq: remove mach/memory.h ARM: mach-prima2: remove mach/memory.h ARM: plat-mxc: remove mach/memory.h ARM: mach-s3c64xx: remove mach/memory.h ARM: mach-s5p64x0: remove mach/memory.h ARM: switch from NO_MACH_MEMORY_H to NEED_MACH_MEMORY_H ARM: 7139/1: fix compilation with CONFIG_ARM_ATAG_DTB_COMPAT and large TEXT_OFFSET Nikhil Rao (1): sched: Add exports tracking cfs bandwidth control statistics Nikitas Angelinas (2): ext4: MMP: kmmpd should use nodename from init_uts_ns.name, not sysname ext4: MMP: fix error message rate-limiting logic in kmmpd Nikola Diklic-Perin (1): tty/n_gsm: fix bug in tiocmset Nilesh Javali (1): [SCSI] qla4xxx: Add new FLT firmware region Nils Carlson (1): i7core_edac: scrubbing fixups Ning Jiang (1): serial-core: power up uart port early before we do set_termios when resuming Nishant Sarmukadam (1): mwl8k: Traffic to clients gets affected when one client leaves a cyrpto bss Nishanth Menon (4): OMAP4: PM: TWL6030: fix uv to voltage for >0x39 OMAP4: PM: TWL6030: address 0V conversions OMAP4: PM: TWL6030: add cmd register ARM: OMAP: omap_device: Add omap_device_get_by_hwmod_name Nithin Nayak Sujir (1): [SCSI] bnx2fc: Validate vlan id in NETDEV_UNREGISTER handler Nitin Gupta (1): zram: Fix sparse warnings Noah Watkins (5): staging: zram: make global var "devices" use unique name staging: zram: make global var "num_devices" use unique name ceph: replace leading spaces with tabs ceph: fix ceph_monc_init memory leak ceph: use kernel DNS resolver Nobuhiro Iwamatsu (7): sh: Fix implicit declaration of function numa_node_id TTY: serial: Move mutex_unlock in uart_close function HID: Add support MacbookAir 4,1 keyboard irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip sh: userimask.c needs linux/stat.h sh: modify the asm/sh_eth.h to linux/sh_eth.h in sh7757lcr sh: Add default uImage rule for sh7757lcr Octavian Purdila (1): i2c-designware: Fix PCI core warning on suspend/resume Ohad Ben-Cohen (25): omap: iommu: migrate to the generic IOMMU API omap: iommu/iovmm: move to dedicated iommu folder omap: iommu: stop exporting local functions omap: iommu: PREFETCH_IOTLB cleanup omap: iovmm: remove unused functionality omap: iommu: remove unused exported API omap: iommu: omapify 'struct iommu' and exposed API iommu: omap: add Kconfig OMAP dependency iommu/omap: cleanup: remove a redundant statement iommu/omap: ->unmap() should return order of unmapped page iommu/msm: ->unmap() should return order of unmapped page iommu/core: use the existing IS_ALIGNED macro iommu/core: Add fault reporting mechanism iommu/omap: Migrate to the generic fault report mechanism hwspinlock/core: simplify Kconfig hwspinlock/core: simplify 'owner' handling hwspinlock/omap: simplify allocation scheme hwspinlock/core/omap: fix id issues on multiple hwspinlock devices hwspinlock/core: remove stubs for register/unregister hwspinlock/core: register a bank of hwspinlocks in a single API call hwspinlock/omap: omap_hwspinlock_remove should be __devexit hwspinlock: add MAINTAINERS entries iommu/core: export iommu_set_fault_handler() iommu/core: let drivers know if an iommu fault handler isn't installed ARM: 7130/1: dev_archdata: add private iommu extension Olaf Hering (8): xen: use static initializers in xen-balloon.c xen/pv-on-hvm kexec: prevent crash in xenwatch_thread() when stale watch events arrive xen/pv-on-hvm kexec: rebind virqs to existing eventchannel ports xen/pv-on-hvm kexec+kdump: reset PV devices in kexec or crash kernel Staging: hv: vmbus: Show the modalias in /sys/bus/vmbus/devices/*/ xen/pv-on-hvm kexec: update xs_wire.h:xsd_sockmsg_type from xen-unstable xen/pv-on-hvm kexec: add xs_reset_watches to shutdown watches from old kernel staging: hv: storvsc: ignore SET_WINDOW scsi command Oleg Nesterov (3): tomoyo: remove tomoyo_gc_thread()->daemonize() staging: rtl8712: remove r8712_cmd_thread()->daemonize() PM / Freezer: Reimplement wait_event_freezekillable using freezer_do_not_count/freezer_count Oliver Hartkopp (4): can-gw: add netlink based CAN routing can/sja1000: add driver for EMS PCMCIA card candev: allow SJW user setting for bittiming calculation MAINTAINERS: Add can-gw include to maintained files Oliver Neukum (4): USB: ipw: convert to usb-wwan framework USB: add RESET_RESUME for webcams shown to be quirky btusb: add device entry for Broadcom SoftSailing HID: usbhid: cancel timer for retry synchronously Olivier Grenie (2): [media] dib0700: protect the dib0700 buffer access [media] dib0700: correct error message Olof Johansson (22): ARM: tegra: annotate IO_*_VIRT pointers ARM: tegra: timer: don't cast __iomem pointers ARM: tegra: tegra2_clocks: don't cast __iomem pointers ARM: tegra: tegra2_clocks: 0 -> NULL changes ARM: tegra: pcie: don't cast __iomem pointers ARM: tegra: pcie: include board.h ARM: tegra: pcie: 0 -> NULL changes ARM: tegra: tegra_init_cache should be static ARM: tegra: tegra_rtc_read_ms should be static ARM: tegra: tegra_powergate_is_powered should be static ARM: tegra: tegra2_clocks: don't export some tables ARM: tegra: dma: staticify some tables and functions ARM: tegra: cpu-tegra: sparse type fix ARM: tegra: cpu-tegra: unexport two functions ARM: tegra: devices.c should include devices.h ARM: tegra: update defconfig ARM: 7118/1: rename temp variable in read*_relaxed() ASoC: Tegra: sparse cleanup i2c-tegra: __iomem annotation fix dt/platform: minor cleanup af_packet: de-inline some helper functions ALSA: control: remove compilation warning on 32-bit Or Gerlitz (6): IB/mlx4: Enable 4K mtu for IBoE IB/mlx4: Don't set VLAN in IBoE WQEs' control segment mlx4_core: Deprecate log_num_vlan module param IB/iser: Use separate buffers for the login request/response IB/iser: DMA unmap TX bufs used for iSCSI/iSER headers MAINTAINERS/rds: update maintainer Oren Weil (14): staging: mei: removing dependency between WD and AMTHI init function. staging: mei: fix register access function comments staging: mei: registering the MEI driver with the kernel watchdog core interface staging: mei: adding watchdog ops staging: mei: adding watchdog ping staging: mei: adding set_timeout watchdog function staging: mei: renaming delayed work field and function to a meaningful name. staging: mei: resuming timer regardless of the watchdog timeout value. staging: mei: client init code cleanup staging: mei: removing wd module parameters staging: mei: adding mei_wd_stop function comment staging: mei: adding watchdog core dependency to kconfig staging: mei: Organize the initialization state machine. staging: mei: clean the TODO file from done tasks. Pablo Neira Ayuso (2): netfilter: export NAT definitions through linux/netfilter_ipv4/nf_nat.h MAINTAINERS: update netfilter maintainers Padmanabh Ratnakar (4): be2net: Fix endian issue in RX filter command be2net: Fix disabling multicast promiscous mode be2net: Prevent CQ full condition for Lancer be2net: Add detect UE feature for Lancer Padmavathi Venna (1): ARM: 7131/1: clkdev: Add Common Macro for clk_lookup Patrick Boettcher (1): [media] DiBcom: protect the I2C bufer access Patrick Titiano (2): OMAP4: PM: TWL6030: fix voltage conversion formula OMAP4: PM: TWL6030: fix ON/RET/OFF voltages Patrik Jakobsson (3): gma500: Only register interrupt handler for poulsbo hardware gma500: Don't enable MSI on Poulsbo gma500: Add VBLANK support for Poulsbo hardware Paul Bolle (46): eventpoll: fix comment typo 'evenpoll' Fix kernel-doc comment typo '@id' Fix documentation and comment typo 'no_hz' doc: fix broken references btmrvl_sdio: fix typo 'btmrvl_sdio_sd6888' bcmring: drop commented out line in Kconfig thinkpad_acpi: Fix printk typo 'bluestooth' aic7xxx: fix Kconfig references to READMEs cifs: Fix typo 'CIFS_NFSD_EXPORT' ARM: mxc: fix Kconfig typo 'i.MX51' tty: drop superfluous dependency in Kconfig MAINTAINERS: microblaze-uclinux@itee.uq.edu.au is moderated for non-subscribers h8300: drop puzzling Kconfig dependencies microblaze: add missing CONFIG_ prefixes cris: remove arch/cris/arch-v32/lib/nand_init.S Kconfig: remove redundant CONFIG_ prefix on two symbols parisc: Kconfig: cleanup Kernel page size default Drop default from "DM365 codec select" choice linux@lists.openrisc.net is moderated for non-subscribers MAINTAINERS: linux-m32r is moderated for non-subscribers staging: drop unused Kconfig symbols h8300: drivers/serial/Kconfig was moved m68k: drop unused Kconfig symbols m68k: drop unused Kconfig symbols ARM: imx: Fix typo 'MACH_MX31_3DS_MXC_NAND_USE_BBT' Blackfin: drop unused Kconfig symbol sh: drop unused Kconfig symbol mtd: clean up usage of MTD_DOCPROBE_ADDRESS alpha: drop unused Kconfig symbol sparc: drop unused Kconfig symbol um: drop unused Kconfig symbol sh: drop unused Kconfig symbol score: drop unused Kconfig symbols m32r: drop unused Kconfig symbol samples: drop unused Kconfig symbol arm: at91: drop unused Kconfig symbol openrisc: drop unused Kconfig symbols mips: drop unused Kconfig symbols powerpc: 40x: drop unused Kconfig symbol powerpc: drop unused Kconfig symbols x86: drop unused Kconfig symbol stmmac: drop unused Kconfig symbol pci: drop unused Kconfig symbol scsi: drop unused Kconfig symbol isdn: hisax: Fix typo 'HISAX_DE_AOC' [media] media: tea5764: reconcile Kconfig symbol and macro Paul E. McKenney (38): rcu: Update documentation to flag RCU_BOOST trace information rcu: Restore checks for blocking in RCU read-side critical sections rcu: Move rcu_head definition to types.h rcu: Update rcutorture documentation rcu: Abstract common code for RCU grace-period-wait primitives rcu: Catch rcutorture up to new RCU API additions rcu: Fix RCU's NMI documentation rcu: Drive configuration directly from SMP and PREEMPT rcu: Don't destroy rcu_torture_boost() callback until it is done rcu: Add event-tracing for RCU callback invocation rcu: Event-trace markers for computing RCU CPU utilization rcu: Put names into TINY_RCU structures under RCU_TRACE rcu: Add RCU type to callback-invocation tracing rcu: Update comments to reflect softirqs vs. kthreads rcu: Move RCU_BOOST declarations to allow compiler checking rcu: Add event-trace markers to TREE_RCU kthreads rcu: Make TINY_RCU also use softirq for RCU_BOOST=n rcu: Add grace-period, quiescent-state, and call_rcu trace events rcu: Simplify quiescent-state accounting rcu: Update documentation for additional RCU lockdep functions rcu: Remove unused and redundant interfaces rcu: Allow rcutorture's stat_interval parameter to be changed at runtime rcu: Document interpretation of RCU-lockdep splats rcu: Eliminate in_irq() checks in rcu_enter_nohz() rcu: Make rcu_implicit_dynticks_qs() locals be correct size rcu: Improve rcu_assign_pointer() and RCU_INIT_POINTER() documentation rcu: Move __rcu_read_unlock()'s barrier() within if-statement rcu: Dump local stack if cannot dump all CPUs' stacks rcu: Prevent early boot set_need_resched() from __rcu_pending() rcu: Simplify unboosting checks rcu: Prohibit grace periods during early boot rcu: Suppress NMI backtraces when stall ends before dump rcu: Avoid having just-onlined CPU resched itself when RCU is idle rcu: Permit rt_mutex_unlock() with irqs disabled rcu: Make rcu_torture_fqs() exit loops at end of test rcu: Make rcu_torture_boost() exit loops at end of test rcu: Remove rcu_needs_cpu_flush() to avoid false quiescent states rcu: Move propagation of ->completed from rcu_start_gp() to rcu_report_qs_rsp() Paul Fertser (1): plat-mxc: iomux-v3.h: implicitly enable pull-up/down when that's desired Paul Gortmaker (232): staging: Add module.h to drivers/staging users tipc: relocate/coalesce node cast in tipc_named_node_up staging: add module.h to various iio drivers usb: Add module.h to various dwc3 drivers [media] drivers/media: fix dependencies in video mt9t001/mt9p031 mmc: Add module.h to drivers/mmc users assuming implicit presence. module.h: split out the EXPORT_SYMBOL into export.h module.h: relocate MODULE_PARM_DESC into moduleparam.h range: fix bogus misuse of module.h to get printk() mm: delete various needless include mm: Add export.h for EXPORT_SYMBOL to active symbol exporters mm: Map most files to use export.h instead of module.h mm: fix implicit stat.h usage in dmapool.c kernel: Map most files to use export.h instead of module.h kernel: Add to files using it implicitly kernel: fix several implicit usasges of kmod.h kernel: fix two implicit header assumptions in irq_work.c kernel: ksysfs.c is implicitly using stat.h kernel: params.c needs module.h not moduleparam.h kernel: fix up module header handling in rcutiny files kernel: Fix files explicitly needing EXPORT_SYMBOL infrastructure net: Fix files explicitly needing to include module.h net: add moduleparam.h for users of module_param/MODULE_PARM_DESC net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules net: fix implicit kmod.h usage in bridge/br_stp_if.c fs: add export.h to files using EXPORT_SYMBOL/THIS_MODULE macros fs: add module.h to files that were implicitly using it acpi: add module.h to files implicitly using/relying on it. acpi: delete module.h include from files explicitly not needing it acpi: downgrade files from module.h to export.h where possible. acpi: add export.h to files using THIS_MODULE/EXPORT_SYMBOL x86: fix implicit include of in vsyscall_64 x86: Fix files explicitly requiring export.h for EXPORT_SYMBOL/THIS_MODULE x86: fix up files really needing to include module.h x86: efi_32.c is implicitly getting asm/desc.h via module.h powerpc: io-workarounds.c was implicitly getting init_mm powerpc: add export.h to files making use of EXPORT_SYMBOL powerpc: include export.h for files using EXPORT_SYMBOL/THIS_MODULE powerpc: Fix up modules that should be including module.h powerpc: Fix up implicit stat.h users powerpc: Fix up implicit sched.h users powerpc: cell/beat_wrapper.h is implicitly using memcpy functions powerpc: fix implicit notifier use in converting to export.h powerpc: fix implicit use of cache.h in kernel/firmware.c powerpc: fix implicit use of mutex.h by include/asm/spu.h powerpc: fix two implicit header uses in pseries/plpar_wrappers.h powerpc: convert hvconsole.c to export.h ; fix implicit use of errno.h powerpc: various straight conversions from module.h --> export.h powerpc: remove non-required uses of include arm: add elf.h to arch/arm/kernel/ptrace.c arm: fix implicit memset/string.h usage in various arch/arm files arm: fix implicit use of page.h in several arch/arm files arm: fix implicit use of moduleparam in mach-mx31*.c arm: fix implicit use of sched.h in bcmring/dma.c arm: add slab.h to plat-samsung files for GFP_KERNEL arm: remove several unnecessary module.h include instances arm: convert core files from module.h to export.h arm: Add export.h to ARM specific files as required. arm: fix implicit module.h users by adding it to arch/arm as required. arm: Add moduleparam.h to arch/arm files as required sparc: fix implicit use of spitfire.h in pcr.c and of_device_64.c sparc: fix implicit use of uaccess.h header in mdesc.c sparc: add export.h to arch/sparc files as required sparc: move symbol exporters to use export.h not module.h sparc: remove several unnecessary module.h include instances sparc: Add module.h to files previously implicitly using it. mips: fix implicit use of asm/elf.h in kernel/cpu-probe.c mips: fix implicit smp.h usage in various files. mips: migrate core kernel file from module.h --> export.h mips: remove needless include of module.h from core kernel files. mips: add export.h to files using EXPORT_SYMBOL/THIS_MODULE ia64: Add export.h to arch/ia64 specific files as required m68k: Add export.h to the m68k specific files as required avr32: add export.h to arch/avr32 for EXPORT_SYMBOL/THIS_MODULE parisc: Add export.h to files needing EXPORT_SYMBOL/THIS_MODULE parisc: add module.h to files really requiring it blackfin: Add export.h to files using EXPORT_SYMBOL/THIS_MODULE blackfin: add module.h to files implicitly expecting to use it. alpha: fix implicit stat.h usage in pci-sysfs.c alpha: Add export.h for THIS_MODULE/EXPORT_SYMBOL sh: fix implicit use of stat.h in arch/sh specific files sh: Add module.h to arch/sh specific files as required. sh: Add export.h to arch/sh specific files as required. microblaze: Add export.h to arch/microblaze files as required drivers/net: Add module.h to drivers who were implicitly using it drivers/net: Add export.h to files using EXPORT_SYMBOL/THIS_MODULE drivers/net: change moduleparam.h to module.h as required. drivers/net: Add moduleparam.h to drivers as required. drivers/net: wireless/ath/ath5k/debug.c does not need module.h drivers/net: fix mislocated headers in cxgb4/l2t.c crypto: add module.h to those files that are explicitly using it mtd: Add export.h for EXPORT_SYMBOL/THIS_MODULE where needed mtd: Add module.h to drivers users that were implicitly using it. block: add export.h to files using EXPORT_SYMBOL/THIS_MODULE macros block: Fix files that are modules and hence need module.h block: Change module.h -> export.h in bsg-lib.c of: of_pci.c needs export.h since it uses EXPORT_SYMBOLS drivers/base: transport_class explicitly requires EXPORT_SYMBOL drivers: power_supply_sysfs.c needs stat.h drivers/input: Add module.h to modular drivers implicitly using it drivers/input: add export.h to symbol exporting files. hid: Add module.h to fix up implicit users of it hid: Fix up files needing export.h for EXPORT_SYMBOL md: Add module.h to all files using it implicitly md: Add in export.h for files using EXPORT_SYMBOL sound: fix drivers needing module.h not moduleparam.h sound: add moduleparam.h to users of module_param/MODULE_PARM_DESC sound: Add module.h to the previously silent sound users sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed pci: Fix files needing export.h for EXPORT_SYMBOL/THIS_MODULE pci: add module.h to files implicitly relying on its presence. scsi: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required scsi: Fix up files implicitly depending on module.h inclusion usb: Add module.h to drivers/usb consumers who really use it. usb: Add export.h for EXPORT_SYMBOL/THIS_MODULE where needed usb: fix implicit usage of gfp.h in host/xhci-hub.c bluetooth: add module.h to drivers/bluetooth files as required. tty: Add module.h to drivers/tty users who just expect it there. tty: Add export.h for EXPORT_SYMBOL/THIS_MODULE to exporters rtc: Add module.h to implicit users in drivers/rtc i2c: add export.h to i2c-boardinfo.c for EXPORT_SYMBOL i2c: Add module.h to modular files prev. implicitly getting it cpuidle: Add module.h to drivers/cpuidle files as required. cpuidle: ladder.c needs module.h and not just moduleparam.h cpufreq: cpufreq_stats.c is a module, and should include module.h selinux: Add export.h to files using EXPORT_SYMBOL/THIS_MODULE video: Add export.h for THIS_MODULE/EXPORT_SYMBOL to drivers/video video: Add module.h to drivers/video files who really use it. infiniband: Fix up users implicitly relying on getting stat.h infiniband: Fix up module files that need to include module.h infiniband: add in export.h for files using EXPORT_SYMBOL/THIS_MODULE infiniband: add moduleparam.h to drivers/infiniband as required ide/ata: Add export.h for EXPORT_SYMBOL/THIS_MODULE where needed ide/ata: Add module.h to the implicit modular users drivers/base: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required. drivers/base: dma-coherent.c is a module and needs module.h drivers/base: base.h implicitly depends on drivers/base: change module.h -> export.h in power/common.c drivers/char: Add module.h to those who were using it implicitly drivers/char: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required drivers/char: Fix implicit use of err.h in ramoops.c drivers/clocksource: Add module.h to those who were using it implicitly drivers/dca: Add module.h to dca-core.c drivers/dca: Add export.h for THIS_MODULE to dca-sysfs.c drivers/dma: Add module.h to files implicitly using it. drivers/dma: Add export.h to ste_dma40.c drivers/edac: Add module.h to mce_amd_inj.c drivers/firewire: Add export.h for EXPORT_SYMBOL to core-iso.c drivers/firmware: Add module.h to google/gsmi.c drivers/gpio: Fix drivers who are implicit users of module.h drivers/hwmon: add module.h to ultra45_env.c drivers/isdn: Add module.h to ISDN files implicitly using it. drivers/isdn: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required. drivers/leds: Add module.h to files using it implicitly drivers/leds: Add export.h for THIS_MODULE to leds-cobalt-raq.c drivers/media: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required drivers/media: Add module.h to all files using it implicitly drivers/memstick: Add module.h to the prev. implicit modular users drivers/message: Add module.h to i2o/pci.c drivers/misc: Add module.h to files who are really modular. drivers/misc: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required. drivers/nfc: add module.h to nfcwilink.c drivers/of: Add module.h to of_spi.c drivers/of: include export.h for EXPORT_SYMBOL_GPL/THIS_MODULE as required drivers/power: Add module.h to the actual modules in drivers/power drivers/rapidio: idt_gen2.c is implicitly relying on getting stat.h drivers/sh: Add export.h for EXPORT_SYMBOL to intc/virq.c drivers/target: Add export.h to files as required. drivers/target: Add module.h to drivers/target files as required. drivers/w1: Add export.h for EXPORT_SYMBOL/THIS_MODULE drivers/w1: Add moduleparam.h to drivers/w1/w1_int.c drivers/zorro: Add export.h to proc.c bcma: add module.h to the modular portions of this driver bcma: fix implicit use of export.h contents gpu: Add export.h as required to drivers/gpu files. gpu: add module.h to drivers/gpu files as required. gpu: add moduleparam.h to drivers/gpu/drm/drm_crtc_helper.c mfd: Add module.h to the implicit drivers/mfd users mfd: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required mmc: Add module.h to drivers/mmc users assuming implicit presence. mmc: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required mmc: Fix implicit use of stat.h header in associated files ssb: Add module.h to the real modules in drivers/ssb ssb: Add export.h to files using EXPORT_SYMBOL/THIS_MODULE staging: Add export.h for THIS_MODULE/EXPORT_SYMBOL to drivers/staging users. staging: Add moduleparam.h to drivers/staging files as required staging: Add module.h to more drivers implicitly using it. uio: Add module.h to implicit drivers/uio users xen: Add module.h to modular drivers/xen users. xen: Add export.h for THIS_MODULE/EXPORT_SYMBOL to various xen users. kvm: fix implicit use of stat.h header file kvm: iommu.c file requires the full module.h present. lguest: add export.h to lguest files for THIS_MODULE/EXPORT_SYMBOL virtio: Add module.h to drivers/virtio users. intel-iommu: now needs export.h for EXPORT_SYMBOL_GPL regulator: Add export.h for THIS_MODULE to dummy.c regulator: Add module.h to drivers/regulator users as required regulator: Fix implicit use of notifier.h by driver.h spi: Add module.h to implicit users in drivers/spi spi: Add export.h for THIS_MODULE/EXPORT_SYMBOL to spi.c drivers/uwb: fix implicit use of stat.h uwb: Add module.h to the real uwb modular users. uwb: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required pcmcia: add module.h to db1xxx_ss.c since it is modular. pcmcia: Add export.h to drivers/pcmcia as required. pnp: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required watchdog: Add module.h to drivers/watchdog/stmp3xxx_wdt.c lib: dma-debug needs export.h for EXPORT_SYMBOL vermagic: delete unused include of sysdev.h: dont include for no reason net: inet_timewait_sock doesnt need net: sch_generic remove redundant use of device_cgroup.h: delete needless include miscdevice.h: delete unnecessary inclusion of module.h acpi: remove module.h include from platform/aclinux.h of_platform.h: delete needless include of: fix implicit use of errno.h in include/linux/of.h stop_machine.h: fix implicit use of smp.h for smp_processor_id miscdevice.h: fix up implicit use of lists and types linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h pm_runtime.h: explicitly requires notifier.h uwb.h: fix implicit use of asm/page.h for PAGE_SIZE crypto.h: remove unused crypto_tfm_alg_modname() inline include: convert various register fcns to macros to avoid include chaining include: replace linux/module.h with "struct module" wherever possible nf_conntrack.h: fix up fallout from implicit moduleparam.h presence ip_vs.h: fix implicit use of module_get/module_put from module.h bluetooth: macroize two small inlines to avoid module.h irq: don't put module.h into irq.h for tracking irqgen modules. Revert "tracing: Include module.h in define_trace.h" arm: Add export.h to recently added files for EXPORT_SYMBOL drivers/md: change module.h -> export.h in persistent-data/dm-* Paul Mackerras (4): powerpc: Fix hugetlb with CONFIG_PPC_MM_SLICES=y KVM: PPC: Assemble book3s{,_hv}_rmhandlers.S separately KVM: PPC: book3s_pr: Simplify transitions between virtual and real mode KVM: PPC: Implement H_CEDE hcall for book3s_hv in real-mode code Paul Moore (3): doc: Update the MAINTAINERS info for Paul Moore doc: Update the email address for Paul Moore in various source files bluetooth: Properly clone LSM attributes to newly created child connections Paul Mundt (12): Merge branch 'fbdev/panning-fixes' Merge branch 'fbdev/stable-updates' Merge branch 'fbdev/stable-updates' Merge branch 'viafb-next' of git://github.com/schandinat/linux-2.6 Merge branch 'sh/stable-updates' into sh-latest Merge branch 'rmobile-fixes-for-linus' into rmobile-latest Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into sh-latest Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into rmobile-latest Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into sh-latest Merge branches 'sh/core' and 'sh/kexec' into sh-latest Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into rmobile-latest Merge branch 'rmobile/kota2' into rmobile-latest Paul Parsons (4): mfd: Fix asic3 based SD card resume after suspend mfd: Add asic3 based LED suspend/resume handlers mfd: Make asic3_clk_enable() a void function mfd: Define asic3 gpio_chip label Paul Turner (14): sched: Implement hierarchical task accounting for SCHED_OTHER sched: Introduce primitives to account for CFS bandwidth tracking sched: Validate CFS quota hierarchies sched: Accumulate per-cfs_rq cpu usage and charge against bandwidth sched: Add a timer to handle CFS bandwidth refresh sched: Expire invalid runtime sched: Add support for throttling group entities sched: Add support for unthrottling group entities sched: Allow for positional tg_tree walks sched: Prevent interactions with throttled entities sched: Prevent buddy interactions with throttled entities sched: Migrate throttled tasks on HOTPLUG sched: Throttle entities exceeding their allowed bandwidth sched: Return unused runtime on group dequeue Paul Walmsley (18): OMAP3: id: remove identification codes that only correspond to marketing names OMAP3: id: remove useless strcpy()s OMAP3: id: use explicit omap_revision codes for 3505/3517 ES levels OMAP3: id: add fallthrough warning; fix some CodingStyle issues OMAP3: id: remove duplicate code for testing SoC ES level OMAP2+: id: remove OMAP_REVBITS_* macros OMAP: clockdomain: split clkdm_init() OMAP: clockdomain code/data: remove omap_chip bitmask from struct clockdomain OMAP: powerdomain: split pwrdm_init() into two functions OMAP: powerdomain: remove omap_chip bitmasks OMAP2+: hwmod: remove OMAP_CHIP* OMAP: id: remove OMAP_CHIP declarations, code ARM: OMAP4460: Clock: Adding support for 4460 specific clocks ARM: OMAP3: PM: fix I/O wakeup and I/O chain clock control detection ARM: OMAP3: PM: restrict erratum i443 handling to OMAP3430 only mmc: core: add workaround for controllers with broken multiblock reads mmc: omap_hsmmc: if multiblock reads are broken, disable them ARM: OMAP3: hwmod: fix variant registration and remove SmartReflex from common list Paul Zimmerman (5): usb: dwc3: gadget: fix DEPSTARTCFG for non-EP0 EPs usb: dwc3: gadget: driver should not wait for RxFIFO to drain usb: dwc3: gadget: make DWC3_EP_WEDGE do the right thing usb: dwc3: gadget: fix DMA offset calculation usb: gadget: storage: fix mass storage gadgets to work with Synopsys UDC Pavel Emelyanov (2): fs/pipe.c: add ->statfs callback for pipefs procfs: report EISDIR when reading sysctl dirs in proc Pavel Roskin (14): ath9k: remove all references to subsysid, it's never used ath5k: remove unused and write-only structures and fields ath5k: remove most references to XR ath5k: eliminate CHANNEL_* macros, use AR5K_MODE_* in channel->hw_value b43legacy: remove 64-bit DMA support b43legacy: report core number pcmcia: add PCMCIA_DEVICE_MANF_CARD_PROD_ID3 hostap_cs: support cards with "Version 01.02" as third product ID orinoco_cs: be more careful when matching cards with ID 0x0156:0x0002 ath: fix spelling of Grenada ath5k: clean up base.h and its use ath5k: remove last references to "softc" lib80211: remove exports for functions not called by other modules cfg80211: print bandwidth in chan_reg_rule_print_dbg() Pavel Shilovsky (13): CIFS: Fix incorrect max RFC1002 write size value CIFS: Simplify byte range locking code CIFS: Move byte range lock list from fd to inode CIFS: Fix error handling in cifs_readv_complete CIFS: Fix DFS handling in cifs_get_file_info CIFS: Implement caching mechanism for mandatory brlocks CIFS: Implement caching mechanism for posix brlocks CIFS: Send as many mandatory unlock ranges at once as possible CIFS: Make cifs_push_locks send as many locks at once as possible CIFS: Remove extra mutex_unlock in cifs_lock_add_if CIFS: Fix the VFS brlock cache usage in posix locking case CIFS: Simplify setlk error handling for mandatory locking CIFS: Cleanup byte-range locking code style Pawel Moll (2): ata: Make pata_of_platform.c compile again and work on non-PPC platforms virtio: Add platform bus driver for memory mapped virtio device Peiyu Li (1): usb: gadget: storage: adapt logic block size to bound block devices Pekka Enberg (3): Merge branch 'slab/urgent' into slab/next [media] media, rc: Use static inline functions to kill warnings Merge branches 'slab/next' and 'slub/partial' into slab/for-linus Pelle Windestam (2): staging: panel: Fixed checkpatch warning about simple_strtoul() drivers: staging: rts_pstor fixed checkpatch warnings Peng Tao (9): SUNRPC/NFS: make rpc pipe upcall generic pnfsblock: add missing rpc_put_mount and path_put pnfs: make _set_lo_fail generic pnfs: recoalesce when ld write pagelist fails pnfs: recoalesce when ld read pagelist fails pnfsblock: fix NULL pointer dereference pnfsblock: fix writeback deadlock nfs4: serialize layoutcommit NFS4: fix cb_recallany decode error Per Forlin (13): dmaengine/ste_dma40: add missing kernel doc for pending_queue dmaengine/ste_dma40: remove duplicate call to d40_pool_lli_free(). dmaengine/ste_dma40: fix Oops due to double free of client descriptor dmaengine/ste_dma40: fix memory leak due to prepared descriptors usb: gadget: storage: make FSG_NUM_BUFFERS variable size fault-inject: export fault injection functions mmc: core: add random fault injection fault-inject: add documentation on MMC IO fault injection mmc: core: clarify how to use post_req in case of errors mmc: mmci: simplify err check in mmci_post_request fault-inject: export setup_fault_attr() mmc: add module param to set fault injection attributes fault-injection: update documentation with the mmc module param Peter De Schrijver (3): arm/tegra: prepare Seaboard pinmux code for derived boards arm/tegra: add support for ventana pinmuxing arm/tegra: device tree support for ventana board Peter Foley (2): kbuild: prevent make from deleting _shipped files fixdep: fix extraneous dependencies Peter Huewe (1): net/mac80211/debugfs: Convert to kstrou8_from_user Peter Hurley (2): Bluetooth: Add LE link type for debugfs output Bluetooth: Allow ACL packets over USB in HCI_RAW mode Peter Hüwe (2): ARM: 7079/1: spi: Fix builderror in spi-pl022.c ARM: 7078/1: Footbridge: Sort KConfig Options alphabetically Peter Korsgaard (5): ARM: at91: at91sam9g45: add trng clock and platform device hw_random: add driver for atmel true hardware random number generator ARM: S3C2410: fix S3C_GPIO_SPACE #error message to match reality gpio/samsung: only register available gpio banks drivers/misc/ad525x_dpot-i2c.c: add i2c support for AD5161 Peter Oberparleiter (1): [S390] fix mismatch in summation of I/O IRQ statistics Peter Stuge (1): USB: ftdi_sio: Support TI/Luminary Micro Stellaris BD-ICDI Board Peter Turczak (1): m68knommu: fix problems with SPI/GPIO on ColdFire 520x Peter Ujfalusi (82): MFD: twl6040: Remove global pointer for platform_device MFD: twl6040: Add accessor for revision ID Input: twl6040-vibra: Use accessor to get revision information MFD: twl6040: Fix power on GPIO handling ASoC: twl6040: Chip initialization cleanup ASoC: twl6040: Use chip defaults in the initial reg_cache ASoC: twl6040: Fix the number of channels for vibra ASoC: twl6040: Correct supported number of playback channels ASoC: tpa6130a2: Model support cleanup ASoC: tpa6130a2: Remove model_id from platform data OMAP: McPDM: Convert McPDM device to omap_device OMAP4: hwmod: enable mcpdm hwmod device. ASoC: omap-mcpdm: Fix threshold and dma configuration ASoC: OMAP4: McPDM: Convert to hwmod/omap_device ASoC: twl6040: Lower the power on gain values at startup ASoC: twl6040: Fix comments for register names ASoC: twl6040: Remove strings "NULL" from DAPM route ASoC: twl6040: Introduce SW only shadow register ASoC: twl6040: Earphone path correction ASoC: twl6040: Use consistent names for Handsfree path ASoC: twl6040: Use consistent names for Headset path ASoC: twl6040: Support for AUX L/R output ASoC: twl6040/sdp4430: Change legacy DAI name ASoC/MFD: twl6040: Combine bit definitions for Headset control registers ASoC: omap-mcpdm: Correct the supported number of channels ASoC: twl6040: No need to read the INTID register ASoC: omap-mcbsp: Fix compile time warning about ambiguous ‘else’ ASoC: twl6040: Read the TRIM values from the chip ASoC: twl6040: Function to fetch the TRIM values ASoC: omap-mcpdm: API to configure offset cancellation ASoC: sdp4430: Configure McPDM offset cancellation ASoC: twl6040: Rename pga_event to out_drv_event ASoC: twl6040: Combine the custom volsw get, and put functions ASoC: twl6040: Move delayed_work struct inside twl6040_output for HS/HF ASoC: twl6040: Move the delayed_work for HS detection under twl6040_jack_data ASoC: twl6040: No need to change delay during HS ramp ASoC: twl6040: No need to change delay during HF ramp ASoC: twl6040: One workqueue should be enough ASoC: twl6040: correct loop counters for HS/HF ramp code ASoC: twl6040: Shift 2 identifies the HS output in out_drv_event ASoC: twl6040: Simplify code in out_drv_event for pending work check ASoC: omap-pcm: Fix the no period wakeup implementation ASoC: core: Introduce SOC_DOUBLE_VALUE macro ASoC: core: Introduce SOC_DOUBLE_R_VALUE macro ASoC: twl6040: Simplify custom put_volsw callback ASoC: Consolidate use of controls with custom get/put function ASoC: twl6040: Simplify custom get_volsw callback ASoC: twl6040: Prepare for core put_volsw/volsw_2r merger ASoC: core: Change SOC_SINGLE/DOUBLE_VALUE representation ASoC: core: Combine snd_soc_info_volsw/info_volsw_2r functions ASoC: core: Combine snd_soc_get_volsw/get_volsw_2r functions ASoC: core: Combine snd_soc_put_volsw/put_volsw_2r functions ASoC: twl6040: Simply call snd_soc_put_volsw form the custom code ASoC: core: Remove snd_soc_put_volsw_2r definition ASoC: twl6040: Warn user in twl6040_put_volsw for error case ASoC: Replace remaining use of *_volsw_2r with *_volsw ASoC: fix codec breakage caused by the volsw/volsw_2r merger ASoC: OMAP machines: Remove soc_dapm_sync() call from init ASoC: zoom2: Let core to deal with the DAPM widgets ASoC: zoom2: No need to call dapm_pin_enable at init time ASoC: sdp4430: Let core to deal with the DAPM widgets ASoC: sdp4430: No need to call dapm_pin_enable at init time ASoC: am3517evm: Let core to deal with the DAPM widgets ASoC: n810: Let the core to register DAPM widgets/routes and controls ASoC: osk5912: Let core to deal with the DAPM widgets ASoC: sdp3430: Let core to deal with the DAPM widgets ASoC: twl6040: Convert to table based init ASoC: twl4030: Convert to table based init ASoC: tlv320dac33: Convert to table based init Input: twl6040: Simplify vibra regsiter definitions MFD: twl6040: Cache the vibra control registers MFD: twl6040: function to query the vibra status for clients Input: twl6040-vibra: Check the selected path for vibra ASoC: twl6040: Support for vibra output paths ASoC: twl6040: Workaround for headset DC offset caused pop noise ASoC: twl6040: Remove Capture restriction for 17.64MHz sysclk ASoC: twl6040: Remove PLL usage restrictions ASoC: twl6040: Change event ordering for Earphone driver ASoC: twl6040: Rename the Earphone Driver event handler ASoC: core: Add flag to ignore pmdown_time at pcm_close ASoC: twl6040: Request core to inline the DAPM sequence ARM: OMAP2+: devices: Fixes for McPDM Peter Wippich (1): mtd: mtdchar: add missing initializer on raw write Peter Zijlstra (12): perf, x86: Avoid kfree() in CPU_STARTING perf: Add PM notifiers to fix CPU hotplug races posix-cpu-timers: Cure SMP accounting oddities lockdep: Comment all warnings sched, tracing: Show PREEMPT_ACTIVE state in trace_sched_switch llist: Add llist_next() sched: Convert to struct llist llist: Remove cpu_relax() usage in cmpxchg loops sched: Wrap scheduler p->cpus_allowed access sched: Unify the ->cpus_allowed mask copy microblaze: Remove __ARCH_WANT_INTERRUPTS_ON_CTXSW usage cputimer: Cure lock inversion Petr Uzel (1): [SCSI] st: fix race in st_scsi_execute_end Phil Edworthy (1): smsc911x: Add support for SMSC LAN89218 Philip Rakity (1): Input: tsc2007 - make sure that X plate resistance is specified Philippe Rétornaz (7): mx31moboard: Add poweroff support mfd: Unconditionally register mc13xxx regulator subdevice mfd: Implicitly register mc13xxx led subdevice ARM: imx+mc13xxx: remove obsolete leds and regulators flags mfd: Remove unused mc13xxx defines input: Add power button support for mc13783 ARM: imx/mx31moboard: Add mc13783 power button support Phillip Lougher (2): Squashfs: Add an option to set dev block size to 4K hfs: fix hfs_find_init() sb->ext_tree NULL ptr oops Phillip Susi (1): drivers/block/loop.c: emit uevent on auto release Pierre-Louis Bossart (4): ALSA: hda: option to enable arbitrary buffer/period sizes ALSA: usb: refine delay information with USB frame counter ALSA: hda/hdmi: expose ELD control ALSA: hdmi: fix printout of SAD sampling rates Pierrick Hascoet (2): [media] staging: as102: Initial import from Abilis [media] staging: as102: Fix licensing oversight Pieter-Paul Giesberts (1): staging: brcm80211: SPARC build error fix Ping Cheng (4): Input: wacom - lower the LED luminance Input: wacom - don't expose LED inactive option Input: wacom - add LED support for Cintiq 21ux2 Input: wacom - make LED status readable through sysfs Piotr Chmura (3): [media] staging: as102: Remove non-linux headers inclusion [media] staging: as102: Enable compilation [media] staging: as102: Add nBox Tuner Dongle support Pradheep Shrinivasan (1): Staging: go7007: fix braces coding style issue in wis-tw2804.c Prarit Bhargava (1): PCI hotplug: acpiphp: Prevent deadlock on PCI-to-PCI bridge remove Rabin Vincent (2): gpio/nomadik: disable clocks when unused ARM: 7120/1: remove bashism in check for multiple zreladdrs Rafael J. Wysocki (31): PM / Domains: Implement subdomain counters as atomic fields PM / Domains: Do not take parent locks to modify subdomain counters PM / Domains: Make pm_genpd_poweron() always survive parent removal PM / Domains: Add "wait for parent" status for generic PM domains PM / Domains: Allow generic PM domains to have multiple masters PM / Domains: Rename GPD_STATE_WAIT_PARENT to GPD_STATE_WAIT_MASTER PM / Domains: Rename argument of pm_genpd_add_subdomain() ARM / shmobile: Make A3RV be a subdomain of A4LC on SH7372 PM: Introduce struct pm_subsys_data PM: Reference counting of power.subsys_data PM / Domains: Use power.sybsys_data to reduce overhead PM: Move clock-related definitions and headers to separate file PM / Domains: Preliminary support for devices with power.irq_safe set Merge branch 'pm-fixes' into pm-domains PM / Domains: Split device PM domain data into base and need_restore PM / Runtime: Don't run callbacks under lock for power.irq_safe set PM / QoS: Add function dev_pm_qos_read_value() (v3) Merge branch 'pm-runtime' into pm-for-linus Merge branch 'pm-domains' into pm-for-linus Merge branch 'pm-qos' into pm-for-linus Merge branch 'pm-devfreq' into pm-for-linus PCI / PM: Extend PME polling to all PCI devices PCI / PM: Remove unnecessary error variable from acpi_dev_run_wake() Merge branch 'pm-runtime' into pm-for-linus PM: Fix build issue in main.c for CONFIG_PM_SLEEP unset PM / Hibernate: Freeze kernel threads after preallocating memory PM / ACPI: Blacklist Sony Vaio known to require acpi_sleep=nonvs PM / Sleep: Mark devices involved in wakeup signaling during suspend Merge branch 'pm-domains' into pm-for-linus ACPI: Drop ACPI_NO_HARDWARE_INIT thermal: Prevent polling from happening during system suspend RafaÅ‚ Bilski (3): [CPUFREQ] e_powersaver: Additional checks [CPUFREQ] e_powersaver: Check BIOS limit for CPU frequency [CPUFREQ] e_powersaver: Allow user to lower maximum voltage RafaÅ‚ MiÅ‚ecki (64): ssb: define boardflags bcma: use boardflags define from ssb code b43: rename TX header formats b43: use enum for firmware header format b43: support new TX header, noticed to be used by 598.314+ fw b43: support new RX header, noticed to be used in 598.314+ fw bcma: implement BCM4331 workaround for external PA lines b43: include HT-PHY in some common code b43: make forcing clock common (HT-PHY also uses that) b43: HT-PHY: init: zero EXTG registers b43: HT-PHY: init: implement few simple PHY writes b43: HT-PHY: init: copy tables and reset CCA b43: HT-PHY: init: init BPHY and upload 0x1a table b43: HT-PHY: init: add missing PHY mask/set ops b43: HT-PHY: init: add some AFE (Analog Frontend) operation b43: HT-PHY: init: add missing small-tables writes b43: HT-PHY: allow writing longer tables with a single call ssb: fix DMA translation for some specific boards b43: fix DMA on some bugged hardware b43: LCN-PHY: add very basic PHY ops b43: LCN-PHY: implement disabling radio b43: LCN-PHY: switch analog b43: LCN-PHY: add init tables b43: LCN-PHY: basic PHY init b43: LCN-PHY: init 0x2064 radio b43: warn when forcing PIO mode b43: drop Kconfig option of forcing PIO mode b43: HT-PHY: use separated function for forcing RF sequence b43: HT-PHY: read clip state b43: use 8K buffers for 64-bit DMA to workaround hardware bug b43: make HT-PHY support experimental b43: LCN-PHY: add R/W ops for PHY and radio b43: LCN-PHY: implement more PHY ops before radio init b43: LCN-PHY: prepare functions for channel switching ssb: use u16 for storing board rev bcma: extract some basic info about board from SPROM b43: LCN-PHY: implement saving and restoring PHY & radio configuration b43: LCN-PHY: minor fixes b43: LCN-PHY: put tables functions in correct file b43: LCN-PHY: rewrite 0x7 table at the end of init b43: LCN-PHY: upload additional 0x7 table b43: LCN-PHY: rename functions, get rid of magic names b43: LCN-PHY: add conditions for few operations b43: N-PHY: implement enabling TX power control b43: drop Copyright for not really copyrightable info b43: add my copyrights and myself as the module author b43: LCN-PHY: load TX gain table on init b43: N-PHY: use helper for checking IPA b43: N-PHY: replace some hacks with nice tables ops b43: N-PHY: split workarounds into per-PHY-ver functions b43: N-PHY: implement few random missing ops bcma: cc: export more control functions b43: LCN-PHY: tweaks for channel switching b43: LCN-PHY: set TX filters b43: LCN-PHY: implement SPUR avoidance mode b43: LCN-PHY: init TX power control b43: LCN-PHY: add more init tweaks b43: LCN-PHY: finish sense setup b43: add missing MMIO defines b43: update dummy transmission b43: LCN-PHY: minor clean ups b43: trivial: do not report any link quality instead of invalid one Revert "b43: trivial: do not report any link quality instead of invalid one" b43: N-PHY: report signal to mac80211 Raghavendra K T (1): memcg: rename mem variable to memcg Raja Mani (8): ath6kl: Print bad trailer data only when htc fails to parse trailer info ath6kl: Rearrange the variable and the value position in IF condition ath6kl: Avoid two memset to clear src and desr mac addr variable memory in ath6kl_wmi_dot11_hdr_remove() ath6kl: Use bit field macros to maintain wlan enabled and disabled status ath6kl: Fix crash during the connection process ath6kl: Release the memory allocated for the firmware ath6kl: Avoid finding bss presence in cfg80211 scan list ath6kl: Check sme state before delivering disconnect event to cfg80211 Rajendra Nayak (1): dt: add empty dt helpers for non-dt build Rajesh Borundia (3): netxen: add vlan LRO support netxen: Fix vhdr_len in case of non vlan packets. netxen: Add pcie workaround Rajkumar Manoharan (68): ath9k_hw: Add dump_eeprom support for AR9003 ath9k_hw: Add dump_eeprom support for eeprom_4k ath9k_hw: Add dump_eeprom support for AR9287 ath9k_hw: Add dump_eeprom support for eeprom_def ath9k: Dump base eeprom header ath9k: Dump modal eeprom header ath9k: Remove virtual wiphy specific frame type ath9k_hw: Optimize rx descriptor processing for AR9003 ath9k_hw: Update the radio parameters related to high_power ath9k_hw: Update AR9003 high_power tx gain table ath9k: do not enable interrupt on set interrupt mask ath9k_hw: Fix incorrect spur_freq_sd for AR9003 ath9k: Use atomic reference count for interrupt ops ath9k_hw: Fix exceed transmission burst-time of 5GHz ath9k: Fix rx overrun interrupt storm ath9k: Re-enable RXOEL interrupt after processing rx buffers ath9k: Remove unused argument tsf from ath9k_hw_rxprocdesc ath9k: qinfo never be NULL in setuptxqueue ath9k_hw: Remove unnecessary chainmask configuration ath9k: Remove SC_OP_ENABLE_APM ath9k: Move ath9k_init_crypto to common ath9k: Fix noisefloor history update for extn chains ath9k: Fix invalid noisefloor reading due to channel update ath9k: Dump modal noisefloor calibration history ath9k_hw: Fix descriptor status of TxOpExceeded ath9k: Change rate control to use legacy rate as last MRR ath9k_hw: Disable Walsh spatial spreading for 2 chains ath9k: Send legacy rated frames as unaggregated ath9k_hw: Set default slottime as 9us ath9k: Fix eifs/usec timeout for AR9287 v1.3+ ath9k: Add debugfs support for mac/baseband samples ath9k_hw: Fix rx latency of 11a mode mac80211: stop tx before doing hw config and rate update ath9k: Take the samples in unassociated state ath9k: Move cycle conters under cc_lock ath9k_hw: Fix magnitude/phase average in TxIQ Calibration ath9k_hw: Do full chip reset on 11A channels for AR9003 ath9k_hw: Fix magnitude/phase coeff correction ath9k: load noise floor from history after the full chip reset ath9k: Reset caldata on radio enable mac80211: Fix regression on queue stop during 2040 bss change wireless: Do not allow disabled channel in scan request ath9k: Store noise immunity values across scanning ath6kl: Fix compilation error while compiling w/o debug nl80211/cfg80211: Add support to disable CCK rate for management frame mac80211: Send the management frame at requested rate ath9k: Remove unnecessary AMPDU check at tx status ath9k: Remove redundant my beacon check at ath_rx_ps_beacon mac80211: Send nullfunc frames at lower rate during connection monitor ath9k_hw: Fix ASPM L1 issue for AR9480 ath9k_hw: Updated ar9003 initval table for AR9380 ath9k_hw: Update AR9003 initval to improve phase noise ath9k_hw: Updated AR9003 tx gain table for 5GHz ath9k_hw: Improve fast channel change for AR9003 chips ath9k_hw: Add support to reuse TxIQ cal measurements ath9k_hw: Add support to reuse Carrier leak calibration ath9k_hw: Cleanup Tx calibrations for AR9003 chips ath9k_hw: Support fast channel change on 5GHz for AR9003 chips ath9k_hw: Update normal/min noise floor value for AR9480 ath9k_hw: Add radio retention support for AR9480 ath9k_hw: Do fast channel change based on reusable calibration results ath9k_hw: Rename AR9480 -> AR9462 initvals ath9k: Rename AR9480 into AR9462 ath9k_hw: Fix regression of register offset for AR9003 chips ath9k_hw: Fix radio retention for AR9462 ath9k_hw: Fix regression of register offset of AR9330/AR9340 ath9k_hw: Update AR9485 initvals to fix system hang issue ath9k_hw: Fix noise floor calibration timeout on fast channel change Rakesh Iyer (1): Input: tegra-kbc - fix wakeup from suspend Rakib Mullick (5): drivers/misc/vmw_balloon.c: determine page allocation flag can_sleep outside loop drivers/misc/vmw_balloon.c: fix typo in code comment nfs: Fix unused variable warning from file.c nfs: Remove unused variable from write.c ACPI: Fix possible recursive locking in hwregs.c Ralf Baechle (10): NET: Korina: Don't include MIPS: cache: Provide cache flush operations for XFS MIPS: IP27: Sort out section mismatch. MIPS: 32-bit: Fix number of argument to epoll_wait. MIPS: PNX8550: Fix section mismatch MIPS: SNI: Fix conflicting wrapper symbols for headers. Revert "MIPS: LD/SD o32 macro GAS fix update" MIPS: Don't install vmlinuz if compressed kernel has not been configured. MIPS: MSP71xx: Fix build error. MIPS: O32: Provide definition of registers ta0 .. ta3. Randy Dunlap (19): regulator: aat2870-regulator.c needs module.h regulator: fix regulator/consumer.h kernel-doc warning staging: fix comedi build errors staging: fix ft1000 sparse warnings usb: fix dwc3 build when USB_GADGET_DWC3 is not enabled usb: fix ipw.c build error, select USB_SERIAL_WWAN xen-swiotlb: fix printk and panic args staging: fix rts5139 depends & build net: fix Makefile typos & build errors staging: fix rtl8192e build errors Input: twl6040-vibra - fix compiler warning wireless: fix kernel-doc warning in net/cfg80211.h [media] [-mmotm] media: video/adp1653.c needs module.h nfc: NFC_WILINK depends on NFC_NCI x86: Perf_event_amd.c needs IB/ipath: Add missing in ipath_chip_init.c usb gadget: fix langwell_udc.c build error jbd2: fix build when CONFIG_BUG is not enabled drivers/sfi: sfi_acpi.c needs sysfs.h Rasesh Mody (37): bna: Remove Unnecessary CNA Check bna: HW Interface Init Update bna: Remove get_regs Ethtool Support bna: Consolidated HW Registers for Supported HWs bna: Remove Obsolete File bfi_ctreg.h bna: MSGQ Implementation bna: Introduce ENET as New Driver and FW Interface bna: Tx and Rx Redesign bna: Add New HW Defs bna: ENET and Tx Rx Redesign Enablement bna: Remove Unused Code bna: Remove Obsolete Files bna: Driver Version changed to 3.0.2.0 bna: Naming Change and Minor Macro Fix bna: PCI Probe Fix bna: Interrupt Polling and NAPI Init Changes bna: TX Path and RX Path Changes bna: Formatting and Code Cleanup bna: Initialization and Locking Fix bna: Ethtool Enhancements and Fix bna: Async Mode Tx Rx Init Fix bna: MBOX IRQ Flag Check after Locking bna: TX Queue Depth Fix bna: SKB PCI UNMAP Fix bna: Driver Version changed to 3.0.2.1 bna: Semaphore Lock Fix bna: Set Ring Param Fix bna: Eliminate Small Race Condition Window in RX Path bna: PCI Probe Conf Lock Fix bna: Brocade 1860 IOC PLL, Reg Defs and ASIC Mode Changes bna: Capability Map and MFG Block Changes for New HW bna: Implement FW Download for New HW bna: Brocade 1860 HW Enablement bna: PLL Init Fix and Add Stats Attributes bna: Add Callback to Fix RXQ Stop bna: Driver Version changed to 3.0.2.2 bna: Multiple Definition and Interface Setup Fix Raul Gutierrez Segales (1): Platform: fix samsung-laptop DMI identification for N220 model Rayagond Kokatanur (1): stmmac: use predefined macros for HW cap register fields (V4) Raymond Yau (4): ALSA: ymfpci: add "Playback" to FM Legacy Volume control ALSA: hda - Add Headphone Playback Volume control for ad1988/ad1989 ALSA: HDA - Add Independent Headphone for all models of ad1988/ad1989 ALSA: hda - Add documentation for codec specific mixer controls of Analog codecs Rene Bollford (1): ideapad: Check if acpi already handle backlight power to avoid a page fault Renzo Dani (1): [media] update az6027 firmware URL Ricardo (1): ll_temac: Add support for ethtool Ricardo Ribalda Delgado (1): perf symbols: Increase symbol KSYM_NAME_LEN size Richard Cochran (8): dp83640: enable six external events and one periodic output net: introduce ptp one step time stamp mode for sync packets dp83640: add time stamp insertion for sync messages ixp4xx: support omicron ixp425 based boards net: validate HWTSTAMP ioctl parameters net: hold sock reference while processing tx timestamps dp83640: use proper function to free transmit time stamping packets dp83640: free packet queues on remove Richard Hartmann (1): USB: qcserial: Add support for Sierra Wireless MC8355/Gobi 3000 Richard Kuo (32): Hexagon: Add generic headers Hexagon: Core arch-specific header files Hexagon: Add bitops support Hexagon: Add atomic ops support Hexagon: Add syscalls Hexagon: Add processor and system headers Hexagon: Add threadinfo Hexagon: Add delay functions Hexagon: Add checksum functions Hexagon: Add memcpy and memset accelerated functions Hexagon: Add hypervisor interface Hexagon: Add signal functions Hexagon: Add init_task and process functions Hexagon: Add startup code Hexagon: Add interrupts Hexagon: Add time and timer functions Hexagon: Add ptrace support Hexagon: Provide basic debugging and system trap support. Hexagon: Add SMP support Hexagon: Add locking types and functions Hexagon: Add user access functions Hexagon: Provide basic implementation and/or stubs for I/O routines. Hexagon: Implement basic cache-flush support Hexagon: Implement basic TLB management routines for Hexagon. Hexagon: Provide DMA implementation Hexagon: Add ioremap support Hexagon: Add page table header files & etc. Hexagon: Add page-fault support. Hexagon: Comet platform support Hexagon: Add configuration and makefiles for the Hexagon architecture. Hexagon: Add basic stacktrace functionality for Hexagon architecture. Hexagon: Add self to MAINTAINERS Richard Weinberger (6): crypto: Make hifn_795x build depend on !ARCH_DMA_ADDR_T_64BIT um: merge delay_{32,64}.c um: we need sys/user.h only on i386 um: fix ubd cow size ramfs: remove module leftovers wanrouter: Remove kernel_lock annotations Richard Zhu (6): AHCI Add the AHCI SATA feature on the MX53 platforms MX53 Enable the AHCI SATA on MX53 ARD board MX53 Enable the AHCI SATA on MX53 LOCO board MX53 Enable the AHCI SATA on MX53 SMD board [libata] ahci_platform: Add the board_ids and pi refer to different features mmc: sdhci-esdhc-imx: Enable ADMA2 Rick Jones (3): Add ethtool -g support to 8139cp net: Remove unnecessary driver assignments of ethtool_ringparam fields to zero Add ethtool -g support to virtio_net Rigbert Hamisch (1): USB: qcserial: add device ID for "HP un2430 Mobile Broadband Module" Rik van Riel (1): vmscan: limit direct reclaim for higher order allocations Rob Clark (3): drm/gem: add functions for mmap offset creation drm/i915: use common functions for mmap offset creation drm: drm_ioctl() should zero-init extra data Rob Herring (19): MAINTAINERS: update devicetree maintainers of/irq: of_irq_find_parent: check for parent equal to child devicetree: Add ARM pl061 gpio controller binding doc devicetree: Add ARM pl022 spi controller binding doc ARM: 7009/1: l2x0: Add OF based initialization Merge remote-tracking branch 'rmk/devel-stable' into HEAD gpio: pl061: add DT binding support of/irq: introduce of_irq_init irq: support domains with non-zero hwirq base ARM: gic: add irq_domain support ARM: gic: add OF based initialization ARM: gic: fix irq_alloc_descs handling for sparse irq ARM: l2x0: add empty l2x0_of_init ARM: highbank: add devicetree source ARM: add Highbank core platform support MAINTAINERS: add Calxeda Highbank ARM platform ARM: highbank: add SMP support ARM: highbank: add suspend support ahci: add DT binding for Calxeda AHCI controller Robert Jarzmik (1): mtd: Add DiskOnChip G3 support Robert P. J. Day (1): tmpfs: add "tmpfs" to the Kconfig prompt to make it obvious. Robert Richter (3): oprofile, x86: Fix overflow and warning (commit 1d12d35) perf, x86: Share IBS macros between perf and oprofile perf, x86: Implement IBS initialization Robert Schwebel (1): usb: gadget: at91_udc: change french comments to english Robin Dong (5): ext4: use stream-alloc when mb_group_prealloc set to zero ext4: remove unused variable in ext4_mb_generate_from_pa() ext4: remove unused variable in mb_find_extent() ext4: fix a wrong comment in __mb_check_buddy() ext4: fix a typo in struct ext4_allocation_context Robin H. Johnson (1): [SCSI] mv_sas: OCZ RevoDrive3 & zDrive R4 support Roland Dreier (8): mlx4_core: Clean up error flow in mlx4_register_mac() intel-iommu: Fix AB-BA lockdep report MAINTAINERS: Update VT-d entry for drivers/pci -> drivers/iommu move target: Prevent cmd->se_queue_node double add target: Have core_tmr_alloc_req() take an explicit GFP_xxx flag Merge branches 'amso1100', 'cma', 'cxgb3', 'cxgb4', 'fdr', 'ipath', 'ipoib', 'misc', 'mlx4', 'misc', 'nes', 'qib' and 'xrc' into for-next IB/mthca: Fix buddy->num_free allocation size Merge branches 'iser', 'mthca' and 'qib' into for-next Roland Vossen (157): staging: brcm80211: bugfix for len==0 parameter in 3 fullmac functions staging: brcm80211: merged bmac.c into main.c staging: brcm80211: shuffled sections in main.c staging: brcm80211: removed function declaration typedefs from phy_int.h staging: brcm80211: removed function declaration typedefs from aiutils.h staging: brcm80211: removed function declaration typedefs from dma.h part 1 staging: brcm80211: removed function declaration typedefs from dma.h part 2 staging: brcm80211: removed function declaration typedefs from dma.h part 3 staging: brcm80211: removed function declaration typedefs from dma.h part 4 staging: brcm80211: removed function declaration typedefs from otp.c staging: brcm80211: removed function declaration typedefs from main.h,pub.h staging: brcm80211: removed function declaration typedefs from brcmutil staging: brcm80211: replaced various typedefs staging: brcm80211: replaced typedef wlc_rateset_t staging: brcm80211: replaced typedef wl_rateset_t by struct brcm_rateset staging: brcm80211: replaced all volatile typedefs staging: brcm80211: fix for checkpatch 'avoid externs in c file' warning staging: brcm80211: fix for checkpatch warnings in phy directory staging: brcm80211: resolved checkpatch warnings in LCN phy staging: brcm80211: resolved checkpatch warnings in N phy staging: brcm80211: fixed build issue for big endian platforms staging: brcm80211: remove MIPS specific 'sync' instruction in fullmac staging: brcm80211: removed R_REG and OR_REG macro's from fullmac staging: brcm80211: removed global variable from sdio fullmac staging: brcm80211: fixed checkpatch warnings for fullmac staging: brcm80211: fixed checkpatch warnings for brcmutil dir staging: brcm80211: fixed checkpatch warnings for 'include' dir staging: brcm80211: cleaned up softmac DMA layer staging: brcm80211: removed void * from softmac phy staging: brcm80211: simplified register access macro's in softmac staging: brcm80211: removed unused bus code from softmac staging: brcm80211: replaced void *btparam into struct pci_dev *btparam staging: brcm80211: removed void * from ai_ functions staging: brcm80211: removed brcms_c_module_unregister() call in ampdu.c staging: brcm80211: removed watchdog function from softmac staging: brcm80211: got rid of several void pointers for softmac PCI staging: brcm80211: replaced void pointers in dma functions staging: brcm80211: replaced void pointers in otp functions staging: brcm80211: got rid of several void pointers in softmac staging: brcm80211: removed unused MIPS specific SDRAM swap window staging: brcm80211: bugfix for exception on Sparc platforms staging: brcm80211: bugfix for fifo problem on 64 bits platforms. staging: brcm80211: removed unused code in dma.c staging: brcm80211: assigned physical addresses in dma.c correct type staging: brcm80211: bugfix for 32 bit power pc platform staging: brcm80211: removed NORADIO_ENAB() macro from softmac phy code staging: brcm80211: removed unused phy logging staging: brcm80211: removed unused #ifdef sections staging: brcm80211: got rid of static function declarations in softmac phy staging: brcm80211: removed static function declarations in aiutils.c staging: brcm80211: removed static function declarations in alloc.c staging: brcm80211: removed static function declarations in ampdu.c staging: brcm80211: removed static function declarations in antsel.c staging: brcm80211: removed static function declarations in channel.c staging: brcm80211: removed static function declarations in dma.c staging: brcm80211: removed static function declarations in mac80211_if.c staging: brcm80211: removed static function declarations in 3 files staging: brcm80211: cleaned up fullmac macro BRCMF_PM_RESUME_RETURN_ERROR staging: brcm80211: replaced fullmac BRCMF_PM_RESUME_WAIT macro with function staging: brcm80211: removed redundant macro's in softmac staging: brcm80211: removed redundant SI_INFO() macro from softmac staging: brcm80211: macro cleanup in softmac aiutils.h staging: brcm80211: macro cleanup in softmac ampdu.c staging: brcm80211: cleaned up softmac channel related macro's staging: brcm80211: cleaned up several softmac macro's staging: brcm80211: cleaned up several main.h/main.c related macro's staging: brcm80211: cleaned up softmac phy macro's affecting code flow staging: brcm80211: cleaned up softmac nicpci.c/nicpci.h macro's staging: brcm80211: cleaned up more softmac macro's staging: brcm80211: remove AP related code from softmac staging: brcm80211: cleaned up softmac pub.h macro's staging: brcm80211: cleaned up softmac scb.h macro's staging: brcm80211: cleaned up softmac srom macro staging: brcm80211: cleaned up softmac types.h macro's staging: brcm80211: cleaned up brcmu_utils.h macro's staging: brcm80211: cleaned up brcmu_wifi.h macro's staging: brcm80211: cleaned up fullmac macro's staging: brcm80211: removed fullmac BRCMF_IOCTL_MAGIC support staging: brcm80211: removed fullmac function brcmf_sdcard_iovar_op() staging: brcm80211: removed unused encryption/security functionality staging: brcm80211: removed softmac 'tunable' functionality staging: brcm80211: cleaned up unused softmac struct members staging: brcm80211: removed softmac ratespec override functionality staging: brcm80211: removed unused softmac code after macro cleanup staging: brcm80211: removed unused softmac struct brcms_c_if staging: brcm80211: removed several unused softmac main.h struct members staging: brcm80211: removed unused softmac transmit power variables staging: brcm80211: removed more unused softmac main.h struct members staging: brcm80211: removed softmac files alloc.c/alloc.h staging: brcm80211: fix for fullmac build problem staging: brcm80211: macro cleanup in softmac dma staging: brcm80211: cleanup of softmac macro EDCF_ENAB() staging: brcm80211: removed function brcms_c_wme_initparams_sta() staging: brcm80211: macro cleanup in softmac main.c staging: brcm80211: added clarification on softmac dma alignment staging: brcm80211: macro cleanup in softmac rate.h staging: brcm80211: separated public from private ioctl functions staging: brcm80211: simplification of brcmf_netdev_ioctl_priv() staging: brcm80211: cleaned up function brcmf_cfg80211_get_key() staging: brcm80211: fullmac sparse endianness encryption keys check staging: brcm80211: introduced fullmac function get/set u32 to/from dongle staging: brcm80211: simplified brcmf_proto_ioctl() staging: brcm80211: removed set_fs/get_fs/get_ds calls from brcmf_dev_ioctl() staging: brcm80211: fixed sparse endianness warnings on fullmac scan pars staging: brcm80211: fixed sparse endianness warnings on fullmac assoc pars staging: brcm80211: fixed sparse endianness warnings on fullmac scb pars staging: brcm80211: fixed sparse endianness warnings on fullmac ratespec staging: brcm80211: sparse endianness warnings on fullmac bss info staging: brcm80211: sparse endianness warnings on dongle events staging: brcm80211: various fulmac sparse endianness fixes staging: brcm80211: sparse endianness warnings for struct brcmf_proto_cdc_ioctl staging: brcm80211: sparse endianness warnings for struct sdpcm_shared staging: brcm80211: more fullmac sparse endianness scan related changes staging: brcm80211: removed two fullmac sparse spinlock warnings staging: brcm80211: added endianness check flag to fullmac Makefile staging: brcm80211: removed likely/unlikely calls staging: brcm80211: removed log after kzalloc()/kmalloc() failure staging: brcm80211: clarified fullmac io and event codes staging: brcm80211: consistent naming of struct net_device *ndev staging: brcm80211: simplified internal ioctl function once more staging: brcm80211: removed unused argument from softmac functions staging: brcm80211: deleted unused array of bss configurations in softmac staging: brcm80211: removed redundant wlc->cfg struct member staging: brcm80211: removed global var from aiutils.c staging: brcm80211: removed global vars in softmac ucode handling staging: brcm80211: removed unused softmac workaround staging: brcm80211: removed band related global vars from softmac staging: brcm80211: removed global var global_scb from softmac staging: brcm80211: various global var related changes in softmac staging: brcm80211: removed global variable in softmac otp staging: brcm80211: simple changes to softmac phy variables staging: brcm80211: declared global vars in softmac phy as const staging: brcm80211: removed some unused fmac variable declarations staging: brcm80211: removed unused smac tx ampdu packet queue staging: brcm80211: cleaning up tx rate control code in softmac staging: brcm80211: various __iomem additions to softmac. staging: brcm80211: reduced softmac sparse warnings staging: brcm80211: added __iomem qualifier to softmac main.c staging: brcm80211: added __iomem qualifier to softmac dma.c staging: brcm80211: added __iomem qualifier to softmac phy staging: brcm80211: reduce indentation level in dhd_sdio.c #1 staging: brcm80211: reduce indentation level in dhd_sdio.c #2 staging: brcm80211: reduce indentation level in dhd_sdio.c #3 staging: brcm80211: removed unused fullmac spinlock staging: brcm80211: removed unused softmac mimo disable code staging: brcm80211: removed fullmac function brcmf_bus_devreset() staging: brcm80211: removed 'enforce_mutex' parameter in fullmac staging: brcm80211: renamed ioctl functions/structs to dcmd staging: brcm80211: cleaned up buffer len defines in fullmac staging: brcm80211: removed functionality to disable N mode staging: brcm80211: cleaned up struct brcms_bss_cfg staging: brcm80211: fullmac: fixed double #include staging: brcm80211: softmac: added event tracing staging: brcm80211: smac: fix for 64 bit systems brcm80211: smac: removed redundant timer function parameters brcm80211: smac: decreased timer callback irq level brcm80211: fmac: fixed weird indentation RongQing Li (1): igb: fix a compile warning Rongjun Ying (2): ARM: CSR: PM: add sleep entry for SiRFprimaII pinctrl: add a driver for the CSR SiRFprimaII pinmux Roopa Prabhu (3): enic: Add SRIOV support enic: Helper code for SRIOV proxy commands enic: Add support for port profile association on a enic SRIOV VF Rose, Gregory V (1): ixgbe: Fix compile for kernel without CONFIG_PCI_IOV defined Roy Spliet (2): drm/nouveau/pm: add initial NV3x/NVCx memtiming support, improve other cards drm/nouveau/pm: Document and expose CL and WR for 0x1002Cx Roy.Li (1): ipv6: remove a rcu_read_lock in ndisc_constructor Ruslan Pisarev (16): Xen: fix whitespaces,tabs coding style issue in drivers/xen/balloon.c Xen: fix whitespaces,tabs coding style issue in drivers/xen/events.c Xen: fix braces coding style issue in gntdev.c and grant-table.c Xen: fix whitespaces,tabs coding style issue in drivers/xen/pci.c Xen: fix braces coding style issue in xenbus_probe.h Xen: fix braces and tabs coding style issue in xenbus_probe.c Staging: xgifb: Fixed up a errors "do not initialise statics to 0 or NULL" in XGI_main.h Staging: xgifb: Fixed up a errors "do not initialise statics to 0 or NULL" in XGI_main_26.c Staging: xgifb: Delete define XGIINITSTATIC in XGI_main_26.c and XGI_main.h Staging: pohmelfs: Coding style fixes in trans.c Staging: keucr: Coding style fixes in smscsi.c Staging: keucr: Coding style fixes in smil.h Staging: keucr: Coding style fixes in scsiglue.c Staging: keucr: Remove dead (comment) code in drivers/staging/keucr/smilsub.c Staging: keucr: fix comments, braces, whitespaces coding style issue in tm6000.h Staging: hv: Fix macros, tab errors and warning in drivers/staging/hv/hv_mouse.c Russell King (60): ARM: gpio: at91: remove redundant include of mach/gpio.h ARM: gpio: convert includes of mach/gpio.h and asm/gpio.h to linux/gpio.h ARM: gpio: omap: convert drivers to use asm/gpio.h rather than mach/gpio.h ARM: gpio: at91: convert drivers to use asm/gpio.h rather than mach/gpio.h ARM: gpio: nomadik: convert drivers to use asm/gpio.h rather than mach/gpio.h ARM: gpio: davinci: convert drivers to use asm/gpio.h rather than mach/gpio.h ARM: gpio: pnx4008: convert drivers to use asm/gpio.h rather than mach/gpio.h ARM: gpio: ixp2000: convert drivers to use asm/gpio.h rather than mach/gpio.h ARM: gpio: tegra: convert drivers to use asm/gpio.h rather than mach/gpio.h ARM: gpio: pxa: convert drivers to use asm/gpio.h rather than mach/gpio.h ARM: enable ARM_PATCH_PHYS_VIRT by default ARM: gpio: consolidate trivial gpiolib implementations ARM: gpio: consolidate gpio_to_irq ARM: gpio: make trivial GPIOLIB implementation the default ARM: io: s3c2410: remove ioaddr() ARM: io: RiscPC: define io addresses relative to IO_BASE ARM: io: ecard: move ioaddr() inside __ecard_address ARM: io: ecard: remove ioaddr() from ecard.c ARM: io: RiscPC: make EASI_BASE a void iomem pointer ARM: io: RiscPC: eliminate private inb() et.al. definitions ARM: io: add a default IO_SPACE_LIMIT definition ARM: io: remove IO_SPACE_LIMIT from platforms with ISA/PCI and 64K window ARM: io: remove IO_SPACE_LIMIT from platforms without PCI/ISA ARM: io: remove IO_SPACE_LIMIT from SA11x0 Merge branch 'dma-size' of git://git.yxit.co.uk/linux into devel-stable Merge branch 'atag_offset' of git://git.linaro.org/people/nico/linux into devel-stable Merge branch 'zImage_DTB_append' of git://git.linaro.org/people/nico/linux into devel-stable Merge branch 'for-rmk' of git://linux-arm.org/linux-2.6-wd into devel-stable ARM: pm: force non-zero return value from __cpu_suspend when aborting ARM: pm: preallocate a page table for suspend/resume ARM: pm: only use preallocated page table during resume ARM: pm: no need to save/restore context ID register ARM: pm: get rid of cpu_resume_turn_mmu_on ARM: pm: convert some assembly to C ARM: pm: add L2 cache cleaning for suspend Merge branch 'kprobes-test' of git://git.yxit.co.uk/linux into devel-stable PM: add runtime PM support to core Primecell driver PM: add runtime PM support to MMCI Merge branch 'pm' into devel-stable Merge branch 'for_3_2/for-rmk/arm_cpu_pm' of git://gitorious.org/omap-sw-develoment/linux-omap-dev into devel-stable clk: provide prepare/unprepare functions clk: amba bus: convert to clk_prepare()/clk_unprepare() clk: amba-clcd: convert to clk_prepare()/clk_unprepare() clk: amba-pl010: convert to clk_prepare()/clk_unprepare() clk: amba-pl011: convert to clk_prepare()/clk_unprepare() clk: mmci: convert to clk_prepare()/clk_unprepare() clk: sa1111: convert to clk_prepare()/clk_unprepare() clk: timer-sp: convert to clk_prepare()/clk_unprepare() clk: spi-pl022: convert to clk_prepare()/clk_unprepare() ARM: platform fixups: remove mdesc argument to fixup function ARM: Add a few machine types to mach-types Merge branch 'mach_memory_h' of git://git.linaro.org/people/nico/linux into devel-stable ARM: smp: fix clipping of number of CPUs Merge branch 'ppi-irq-core-for-rmk' of git://github.com/mzyngier/arm-platforms into devel-stable Merge branches 'arnd-randcfg-fixes', 'debug', 'io' (early part), 'l2x0', 'p2v', 'pgt' (early part) and 'smp' into for-linus Merge branch 'misc' into for-linus ARM: PXA: fix lubbock PCMCIA driver build error ARM: PXA: eseries: fix eseries_register_clks section mismatch warning ARM: PXA: fix gpio-pxa.h build errors ARM: PXA: fix includes in pxa2xx_cm_x2xx PCMCIA driver Russell King - ARM Linux (1): dmaengine: amba-pl08x: make filter check that the channel is owned by pl08x Rusty Russell (2): lguest: Allow running under paravirt-enabled KVM. lguest: don't allow KVM-detection cpuid. Ryan Mallon (2): ASoC: max98088 codec: Catch driver bugs for eq channel name ASoC: max98095 codec: Catch driver bugs for biquad channel name Sachin Kamat (12): ARM: EXYNOS4: Add USB EHCI device to ORIGEN board ARM: EXYNOS4: Add FIMC device on ORIGEN board ARM: EXYNOS4: Add keypad support for ORIGEN ARM: EXYNOS4: Add HDMI support for ORIGEN ARM: EXYNOS4: Add HPD and PD support for HDMI on ORIGEN ARM: EXYNOS4: Enable MFC on Samsung SMDKV310 ARM: EXYNOS4: Add header file protection macros ARM: EXYNOS4: Add FIMC device on SMDKV310 board ARM: EXYNOS4: Enable regulator support for HDMI on ORIGEN ARM: EXYNOS4: Register power domains on ORIGEN ARM: EXYNOS4: Enable MFC on ORIGEN [media] MFC: Change MFC firmware binary name Sachin Prabhu (1): cifs: Display strictcache mount option in /proc/mounts Sage Weil (14): ceph: make readpages fully async ceph: rename rsize -> rasize ceph: implement (optional) max read size ceph: document ioctls libceph: create messenger with client libceph: always preallocate mon connection libceph: don't complain on msgpool alloc failures libceph: warn on msg allocation failures Revert "ceph: don't truncate dirty pages in invalidate work thread" libceph: force resend of osd requests if we skip an osdmap libceph: fix double-free of page vector vfs: add d_prune dentry operation ceph: clear parent D_COMPLETE flag when on dentry prune ceph: use new D_COMPLETE dentry flag Sahitya Tummala (5): mmc: msm_sdcc: Handle error cases in probe mmc: msm_sdcc: Enable SDC host->clk only after setting the rate. msm: mmc: Remove "pio_irq" resource mmc: msm_sdcc: Use MCI_INT_MASK0 for PIO interrupts mmc: msm_sdcc: Change initialization order of busclk_timer in probe Sakari Ailus (3): [media] v4l: Move event documentation from SUBSCRIBE_EVENT to DQEVENT [media] v4l: events: Define V4L2_EVENT_FRAME_SYNC [media] omap3isp: ccdc: Use generic frame sync event instead of private HS_VS event Sam Leffler (1): ath6kl: query device tree for firmware board-id Sam Ravnborg (2): memblock: add memblock_start_of_DRAM() memblock: add NO_BOOTMEM config symbol Sami Kerola (1): minix: describe usage of different magic numbers Samuel Gabrielsson (1): i7core_edac: Add scrubbing support Samuel Jero (4): dccp: send Confirm options only once dccp ccid-2: prevent cwnd > Sequence Window dccp ccid-2: increment cwnd correctly dccp ccid-2: check Ack Ratio when reducing cwnd Samuel Ortiz (4): NFC: Reserve tx head and tail room mfd: Remove IRQF_DISABLED flag from twl4030-irq leds: Finish mc13783 conversion to the mc13xxx API regulator: Finish mc13783 conversion to the mc13xxx API Sangbeom Kim (1): ASoC: SAMSUNG: Add Kconfig to support SMDK4212 Sangwook Lee (1): net:rfkill: add a gpio setup function into GPIO rfkill Sanjeev Premi (1): ARM: OMAP: Fix errors and warnings when building for one board Santosh Shilimkar (6): genirq: Add IRQCHIP_SKIP_SET_WAKE flag ARM: Enable CPU_PM notifiers on ARM machines. ARM: vfp: Fix the comment to make it consistent with the code. ARM: mm: Add strongly ordered descriptor support. OMAP4: Fix the emif and dmm virtual mapping mfd: Set twl6030 irq_wake infrastructure up Sarah Sharp (14): xhci: If no endpoints changed, don't issue BW command. xhci: Rename virt_dev->port to fake_port. xhci: Refactor endpoint limit checking. xhci: Store the "real" root port number. xhci: Store information about roothubs and TTs. xhci: Store endpoint bandwidth information. xhci: Track interval bandwidth tables per port/TT. xhci: Implement HS/FS/LS bandwidth checking. xhci: Add software BW checking quirk to Intel PPT xHCI xhci: Don't print short isoc packets. xhci: Fix mult base in endpoint bandwidth info. xhci: USB 3.0 BW checking. USB: When hot reset for USB3 fails, try warm reset. xHCI/USB: Make xHCI driver have a BOS descriptor. Sascha Hauer (29): Merge branch 'imx-cleanup' of git://git.pengutronix.de/git/ukl/linux-2.6 into imx-cleanup ARM i.MX: allow to compile together ARMv4 and ARMv5 based SoCs ARM i.MX: allow to compile together all i.MX5 based SoCs USB gadget i.MX1: remove dependency on ARCH_MXC USB host i.MX21: remove dependency on MACH_MX21 ARM i.MX5: update defconfig ARM i.MX defconfigs: use one defconfig for all ARMv4/v5 SoCs ARM i.MX audmux v2: remove unnecessary ifdefs ARM i.MX: remove ARCH_MX* macros from Makefile Merge branches 'cleanups/assorted', 'cleanups/shawn-cleanup-mxc-gpio', 'cleanups/troy-cleanup-iomux-v3' and 'cleanups/ukl-mx5-dynamically-allocate-devices' into imx-cleanups-for-arnd Merge branches 'features/assorted', 'features/imx-cpurev', 'features/imx-pata', 'features/multisoc' and 'features/mxs' into imx-features-for-arnd dmaengine i.MX SDMA: lock channel 0 dmaengine i.MX SDMA: set firmware scripts addresses to negative value initially dmaengine i.MX SDMA: use request_firmware_nowait Merge branches 'cleanups/assorted' and 'cleanups/mm-tzic' into imx-cleanup ARM i.MX avic: add handle_irq function ARM i.MX tzic: add handle_irq function ARM i.MX boards: use CONFIG_MULTI_IRQ_HANDLER ARM i.MX entry-macro.S: remove now unused code Merge branches 'features/assorted', 'features/imx-pata' and 'features/imx-multi-irq-v2' into imx-features Merge branches 'cleanups/mx3-mm-v2' and 'cleanups/mxs' into imx-cleanup Merge branch 'features/ahci' into for-arnd-features Merge branch 'features/denx-mx28' into for-arnd-features ARM: 7020/1: Check for multiple zreladdrs ARM: 7021/1: Check for multiple load addresses before building a uImage ARM: 7022/1: allow to detect conflicting zreladdrs Merge branches 'cleanups/mxs', 'cleanups/mx3-defconfig' and 'cleanups/includes' into imx-cleanups-for-arnd mmc: Kconfig: remove i.MX individual SoC dependency arm/imx: merge i.MX3 and i.MX6 Sasha Levin (9): KVM: MMIO: Lock coalesced device when checking for available entry KVM: x86: Raise the hard VCPU count limit KVM: Make coalesced mmio use a device per zone KVM: Intelligent device lookup on I/O bus KVM: nVMX: Document 'nested' parameter virtio-net: Verify page list size before fitting into skb virtio-console: Use virtio_config_val() for retrieving config virtio_config: Add virtio_config_val_len() virtio-net: Use virtio_config_val() for retrieving config Sathya Perla (20): be2net: cleanup and refactor stats code be2net: use stats-sync to read/write 64-bit stats be2net: remove wrong and unnecessary calls to netif_carrier_off() be2net: no need to query link status be2net: non-member vlan pkts not received in promiscous mode be2net: use RX_FILTER cmd to program multicast addresses be2net: add support for flashing Teranetics PHY firmware be2net: drop pkts that do not belong to the port be2net: fix cmd-rx-filter not notifying MCC be2net: Fix race in posting rx buffers. be2net: get rid of memory mapped pci-cfg space address be2net: fix erx->rx_drops_no_frags wrap around be2net: increase FW update completion timeout be2net: remove unused variable be2net: fix multicast filter programming be2net: Show newly flashed FW ver in ethtool be2net: add vlan/rx-mode/flow-control config to be_setup() be2net: refactor VF setup/teardown code into be_vf_setup/clear() be2net: don't create multiple TXQs in BE2 be2net: don't create multiple RX/TX rings in multi channel mode Saurav Kashyap (5): [SCSI] qla2xxx: Implemeted beacon on/off for ISP82XX. [SCSI] qla2xxx: Prevent CPU lockups when "ql2xdontresethba" module param is set. [SCSI] qla2xxx: check for marker IOCB during response queue processing. [SCSI] qla2xxx: Fix array out of bound warning. [SCSI] qla2xxx: During loopdown perform Diagnostic loopback. Scott Jiang (3): Blackfin: bf537-stamp: fix ad1836 name Blackfin: bf537-stamp: fix ad73311 codec config macro [media] vb2: add vb2_get_unmapped_area in vb2 core Scott Teel (2): [SCSI] hpsa: rename HPSA_MAX_SCSI_DEVS_PER_HBA [SCSI] hpsa: fix potential array overflow in hpsa_update_scsi_devices Scott Wood (1): powerpc/32: Pass device tree address as u64 to machine_init Sean Hefty (20): RDMA/core: Add XRC domain support RDMA/core: Add SRQ type field RDMA/core: Add XRC SRQ type RDMA/core: Add XRC QPs RDMA/verbs: Cleanup XRC TGT QPs when destroying XRCD RDMA/uverbs: Export XRC domains to user space RDMA/uverbs: Export XRC SRQs to user space RDMA/uverbs: Export XRC INI QPs to userspace RDMA/uverbs: Export XRC TGT QPs to user space IB/cm: Update protocol to support XRC IB/cm: Update XRC support based on XRC annex errata RDMA/cm: Define new RDMA port space specific to IB RDMA/ucm: Allow user to specify QP type when creating id RDMA/cma: Support XRC QPs IB/cm: Do not automatically disconnect XRC TGT QPs IB/mlx4: Add support for XRC domains IB/mlx4: Add support for XRC SRQs IB/mlx4: Add support for XRC QPs RDMA/core: Export ib_open_qp() to share XRC TGT QPs RDMA/uverbs: Export ib_open_qp() capability to user space Sean M. Collins (1): doc: raw1394: Trivial typo fix Sean Young (3): IHD: Support force feedback on MP-8866 HID: Add device IDs for more SJOY adapters watchdog: sc520_wdt: Remove unnecessary cast. Sebastian Andrzej Siewior (25): slab: use print_hex_dump slub: use print_hex_dump usb: ch9: add function defines from ch9, USB 3.0 spec drivers_base: platform: use always ->name for uevent USB: usbtest: use URB_ZERO_PACKET for BULK-OUT transfers usb: dwc3: gadget: fixing dequeue of TRBs usb: dwc3: gadget: reset resource index to zero usb: dwc3: gadget: use TRB type 6 for ISOC transfers usb: dwc3: gaget: clear DWC3_EP_WILL_SHUTDOWN bit usb: dwc3: debugfs: remove test mode interface usb: dwc3: core: move the core check before soft reset usb: dwc3: gadget: rework the dequeue on RESET & DISCONNECT usb: dwc3: gadget: replace mdelay with udelay in the busy loop usb: dwc3: gadget: do not map/unmap ZLP transfers usb/xhci: ignore xhci version while checking for the link quirk usb/xhci: group MSI interrupt registration into its own function usb/xhci: hide MSI code behind PCI bars usb/xhci: replace pci_*_consistent() with dma_*_coherent() usb/xhci: refactor xhci_pci_setup() usb/xhci: move xhci_gen_setup() away from -pci. usb/xhci: remove CONFIG_PCI in xhci.c's probe function Input: add a driver for TSC-40 serial touchscreen usb: dwc3: ep0: remove second giveback in error case usb: dwc3: ep0: fix debug output usb: dwc: remove "All rights reserved" statement. Sebastian Ott (5): [S390] topology: fix alloc_masks annotation [S390] cio: add message for timeouts on internal I/O [S390] ccwgroup: move attributes to attribute group [S390] ccwgroup: cleanup [S390] chsc_sch: add support for irq statistics Sebastian Rasmussen (1): mfd: db8500-prcmu reset code retrieval Sedat Dilek (1): i7core_edac: Fix compilation on 32 bits arch Senthil Balasubramanian (4): ath9k_hw: Add initvals and register definitions for AR946/8x chipsets. ath9k_hw: Split tx/rx gain table initval handling ath9k_hw: Add support for AR946/8x chipsets. ath9k_hw: move register definitions to header files Serge Hallyn (3): capabilities: initialize has_cap USB: pid_ns: ensure pid is not freed during kill_pid_info_as_uid user namespace: usb: make usb urbs user namespace aware (v2) Sergei Kolzun (2): HID: ACRUX - fix enabling force feedback support HID: ACRUX - handle gamepads with different report layout Sergei Shtylyov (7): ath9k: use pci_dev->subsystem_device drivers/block/cpqarray.c: use pci_dev->revision sata_mv: release clock on ata_host_activate() failure sata_mv: use {platform|pci}_get_drvdata() libata-eh: ata_eh_followup_srst_needed() does not need 'classes' parameter pata_at91: call clk_put() on ata_host_activate() failure pata_arasan_cf: remove bogus to_platform_device() calls Seth Forshee (8): usb_storage: Don't freeze in usb-stor-scan toshiba_acpi: Convert to use acpi_driver toshiba_acpi: Fix up return codes toshiba_acpi: Use handle for HCI calls toshiba_acpi: Support SPFC as an HCI method toshiba_acpi: Don't add devices for unsupported features toshiba_acpi: Initialize brightness in backlight device acer-wmi: Add wireless quirk for Lenovo 3000 N200 Seth Jennings (5): staging: zcache: fix possible sleep under lock staging: zcache: fix typos staging: zcache: fix crash on cpu remove staging: zcache: reduce tmem bucket lock contention staging: zcache: remove zcache_direct_reclaim_lock Seungwon Jeon (4): mmc: core: Add default timeout value for CMD6 mmc: core: Modify the timeout value for writing power class mmc: core: Add cache control for eMMC4.5 device mmc: core: Cleanup eMMC4.5 conditionals Shahar Levi (5): wl12xx: Add support to RX packets payload alignment mac80211: Update device channel in case of HW channel switch supported wl12xx: fix sdio_test module functionality wl12xx: Include OFDM rates in IBSS mode wl12xx: Add support for HW channel switch Shan Hai (1): locking, lib/atomic64: Annotate atomic64_lock::lock as raw Shaohua Li (5): slub: explicitly document position of inserting slab to partial list rcu: Avoid unnecessary self-wakeup of per-CPU kthreads ext4: add block plug for .writepages vmscan: add block plug for page reclaim vmscan: count pages into balanced for zone with good watermark Shaohui Xie (2): mtd: m25p80: add EON flash EN25Q32B into spi flash id table mtd: m25p80: don't probe device which has status of 'disabled' Shashidhar Hiremath (1): mmc: dw_mmc: Support SDIO interrupts for all slots Shaun Silk (1): USB: gadget: u_serial.c: fixed a brace coding style issue Shawn Guo (43): ASoC: sgtl5000: add device tree probe support net/smsc911x: add device tree probe support arm/mxc: do not use gpio_to_irq() for static initializers gpio/mxc: add .to_irq for gpio chip arm/mxc: use gpiolib helper for gpio_to_irq gpio/mxc: move irq_to_gpio() into gpio-mxc driver arm/mxc: move IMX_GPIO_NR into mach/hardware.h gpio/mxs: move irq_to_gpio() into gpio-mxs driver arm/mxs: move MXS_GPIO_NR into mach/mxs.h mtd: dataflash: add device tree probe support i2c-imx: remove init/exit hooks from platform data i2c-imx: add device tree probe support gpio/mxc: add chained_irq_enter/exit() to mx3_gpio_irq_handler() dt: add of_alias_scan and of_alias_get_id serial/imx: add of_alias_get_id() reference back net/fec: fec_reset_phy() does not need to always succeed net/fec: fix fec1 check in fec_enet_mii_init() net/fec: add imx6q enet support arm/imx: merge mm-imx35.c into mm-imx31.c arm/imx: rename mm-imx31.c to mm-imx3.c arm/imx: change mxc_init_l2x0() to an imx31/35 specific call arm/imx: remove cpu_is_xxx() from arch_idle() arm/imx: remove cpu_is_xxx() check from __imx_ioremap() ARM: 7100/1: smp_scu: remove __init annotation from scu_enable() ARM: 7123/1: smp: Add an IPI handler callable from C code ARM: 7124/1: smp: Add a localtimer handler callable from C code arm/imx: use Kconfig choice for low-level debug UART selection arm/imx: remove mx31_setup_weimcs() from mx31.h arm/imx: explicitly includes mach/hardware.h in mach-kzm_arm11_01.c arm/imx: remove mx27_setup_weimcs() from mx27.h arm/imx: explicitly includes mach/hardware.h in pm-imx27.c mmc: mxcmmc: explicitly includes mach/hardware.h arm/mx5: add device tree support for imx53 boards arm/mx5: add device tree support for imx51 babbage mmc: sdhci-esdhc-imx: add basic imx6q usdhc support arm/imx6q: add device tree source arm/imx6q: add core definitions and low-level debug uart arm/imx: add gic_handle_irq function arm/imx6q: add core drivers clock, gpc, mmdc and src arm/imx6q: add smp and cpu hotplug support arm/imx6q: add device tree machine support arm/imx6q: add suspend/resume support MAINTAINERS: add ARM/FREESCALE IMX6 entry Shengzhou Liu (1): powerpc/p3060qds: Add support for P3060QDS board Shi, Alex (1): nohz: Remove nohz_cpu_mask Shirish Pargaonkar (5): cifs: Add mount options for backup intent (try #6) cifs: clean up unused encryption code cifs: Add data structures and functions for uid/gid to SID mapping (try #4) cifs: Call id to SID mapping functions to change owner/group (try #4 repost) cifs: Assume passwords are encoded according to iocharset (try #2) Shubhrajyoti D (2): OMAP: SPI: Fix the trying to free nonexistent resource error OMAP4: I2C: Enable the wakeup in I2C_WE ShuoX Liu (1): PM / Suspend: Add statistics debugfs file for suspend to RAM Simon Farnsworth (1): [media] cx18: Fix videobuf capture Simon Glass (1): ARM: 7017/1: Use generic BUG() handler Simon Horman (12): sh: kexec: Register crashk_res mmc: tmio: Cache interrupt masks mmc: tmio: Provide separate interrupt handlers mmc: sdhi: Allow named IRQs to use specific handlers ARM: shmobile: ag5evm, ap4: Named SDHI IRQ sources sh: kexec: Add PHYSICAL_START ipvs: Add documentation for new sysctl entries ipvs: Remove unused parameter from ip_vs_confirm_conntrack() ipvs: Remove unused return value of protocol state transitions ipvs: Removed unused variables ipvs: secure_tcp does provide alternate state timeouts ipvs: Enhance grammar used to refer to Kconfig options Simon Wunderlich (3): batman-adv: update README (date & ap isolation sysfs file) batman-adv: remove references for global tt entries batman-adv: add sanity check when removing global tts Smelov Andrey (1): Platform: samsung_laptop: samsung backlight for R528/R728 Somnath Kotur (8): be2net: Storing the 'vid' got by the grp5 event instead of storing the vlan_tag be2net: Add 60 second delay to allow FAT dump completion on recovery from EEH be2net: Change the data type of the 'on die temperature' stat. be2net: Fixed Endianness issues in the response read log length field while retrieving FAT data be2net: Modified PCI MaxReadReq size to 4096 bytes be2net: Making die temperature ioctl call async be2net: Refactored be_cmds.c file. be2net: Changing MAC Address of a VF was broken. Sonic Zhang (6): serial:blackfin: Correct coding style in bfin serial driver. serial:blackfin: rename Blackfin serial driver to bfin_uart.c serial:bfin_uart: Put TX IRQ in individual platform resource. Blackfin: bf548-ezkit: update defconfig Blackfin: kgdb_test: rework code to avoid -O0 usage include/asm-generic/page.h: calculate virt_to_page and page_to_virt via predefined macro Sony Chacko (2): qlcnic: detect fan failure qlcnic: updated reset sequence Srinidhi KASAGAR (1): drivers/leds/leds-lp5521.c: check if reset is successful Srinivas Kandagatla (2): kbuild: Fix help text not displayed in choice option. stmmac: Stop advertising 1000Base capabilties for non GMII iface (V4). Sritej Velaga (7): qlcnic: Fix delay in reset path qlcnic: Move get template from probe to start fw qlcnic: Added debug info qlcnic: Add FLT entry for CO cards FW image region qlcnic: fix cdrp race condition qlcnic: skip IDC ack check in fw reset path. qlcnic: Updated License file Srivatsa S. Bhat (5): x86, microcode: Don't request microcode from userspace unnecessarily PM / Documentation: Update docs about suspend and CPU hotplug PM / Sleep: Fix race between CPU hotplug and freezer PM / Sleep: Remove unused symbol 'suspend_cpu_hotplug' PM / Sleep: Update freezer documentation Stanislav Kinsbursky (8): SUNRPC: introduce helpers for reference counted rpcbind clients SUNRPC: use rpcbind reference counting helpers SUNRPC: introduce svc helpers for prepairing rpcbind infrastructure SUNRPC: setup rpcbind clients if service requires it SUNRPC: cleanup service destruction NFSd: call svc rpcbind cleanup explicitly SUNRPC: remove rpcbind clients creation during service registering SUNRPC: remove rpcbind clients destruction on module cleanup Stanislaw Gruszka (5): ath9k: remove ->config_pci_powersave() redundant argument ath9k: merge common ->config_pci_powersave() checks ath9k: do btcoex ASPM disabling at initialization time cfg80211: document wiphy->registered iwlagn: fix priv->cfg->ht_params NULL pointer dereference Stefan Achatz (5): HID: roccat: Fixed false dpi reporting when using osd event HID: roccat: Pyra now reports external profile changes via roccat device HID: roccat: Kovaplus now reports external profile changes via roccat device HID: roccat: cleaned up code for Kone and fixed wrong initialization value HID: roccat: Kone now reports external profile changes via roccat device Stefan Assmann (1): rtlwifi: add module parameter to set global debug level Stefan Beller (1): platform: samsung_laptop: add dmi information for Samsung R700 laptops Stefan Berger (1): tpm: suppress durations sysfs output if not read Stefan Haberland (3): [S390] dasd: wait for terminated request [S390] dasd: re-initialize read_conf buffer for retries [S390] dasd: prevent path verification before resume Stefan Hajnoczi (2): KVM: Record instruction set in all vmexit tracepoints KVM: Use __print_symbolic() for vmexit tracepoints Stefan Nilsson XK (2): mmc: sdio: Workaround for dev with broken CMD53 mmc: core: Set correct bus mode before card init Stefan Richter (7): firewire: sbp2: remove obsolete reference counting firewire: sbp2: move some code to more sensible places firewire: sbp2: fold two functions into one ALSA: firewire-speakers: fix locking firewire: ohci: TSB41BA3D support tweaks firewire: ohci: optimize TSB41BA3D detection firewire: use clamp and min3 macros Stefan Roese (1): powerpc/44x: Add NOR flash device to Yosemite dts Stefano Babic (1): ARM: mxs: Add initial support for DENX MX28 Stefano Stabellini (4): xen: add an "highmem" parameter to alloc_xenballooned_pages xen: modify kernel mappings corresponding to granted pages xen: XEN_PVHVM depends on PCI xen: remove XEN_PLATFORM_PCI config option Steffen Klassert (21): xfrm: Simplify the replay check and advance functions ipv6: Remove superfluous NULL pointer check in ipv6_local_rxpmtu ipv6: Fix IPsec slowpath fragmentation problem xfrm6: Don't call icmpv6_send on local error crypto: Add a flag to identify crypto instances crypto: Export crypto_remove_spawns crypto: Export crypto_remove_final crypto: Add userspace configuration API crypto: Add a report function pointer to crypto_type crypto: Add userspace report for larval type algorithms crypto: Add userspace report for shash type algorithms crypto: Add userspace report for ahash type algorithms crypto: Add userspace report for blkcipher type algorithms crypto: Add userspace report for ablkcipher type algorithms crypto: Add userspace report for givcipher type algorithms crypto: Add userspace report for aead type algorithms crypto: Add userspace report for nivaead type algorithms crypto: Add userspace report for pcompress type algorithms crypto: Add userspace report for rng type algorithms crypto: Add userspace report for cipher type algorithms crypto: Add userspace report for compress type algorithms Steffen Maier (1): [SCSI] zfcp: non-experimental support for DIF/DIX Stephan Gatzka (3): firewire: ohci: Move code from the bus reset tasklet into a workqueue firewire: ohci: Add support for TSB41BA3D phy firewire: net: Use posted writes Stephan Lachowsky (1): [media] uvcvideo: Add a mapping for H.264 payloads Stephane Chatty (1): HID: hid-multitouch: add support for the IDEACOM 6650 chip Stephane Eranian (6): perf annotate: Make output more readable perf annotate: Add --symfs option perf stat: Add -o and --append options perf tools: Fix broken number of samples for perf report -n perf tools: Make perf.data more self-descriptive (v8) perf hists: Fix compilation when NO_NEWT_SUPPORT is set Stephen Boyd (4): ARM: 7012/1: Set proper TEXT_OFFSET for newer MSMs ARM: 7096/1: debug: Add UART1 config choices ARM: 7097/1: debug: Move DEBUG_ICEDCC into the DEBUG_LL choice ARM: 7006/1: Migrate to asm-generic wrapper support Stephen George (1): powerpc/85xx: Adding DCSR node to dtsi device trees Stephen Hemminger (2): rcu: convert uses of rcu_assign_pointer(x, NULL) to RCU_INIT_POINTER skge: handle irq better on single port card Stephen M. Cameron (4): [SCSI] hpsa: set max sectors instead of taking the default [SCSI] hpsa: remove unused busy_initializing and busy_scanning [SCSI] hpsa: fix flush cache transfer length [SCSI] hpsa: detect controller lockup Stephen Rothwell (19): x86, amd: Include elf.h explicitly, prepare the code for the module.h split sungem: sungem_phy.h moved usb: include module.h in the DesignWare USB3 DRD driver staging: rtl8192e: using vmalloc/vfree requires including vmalloc.h rtl8192e: update for ndo_set_multicast_list removal. encrypted-keys: IS_ERR need include/err.h x86, amd: Include linux/elf.h since we use stuff from asm/elf.h wireless/ath6kl: use of module_param requires the inclusion of moduleparam.h staging: iio: adc: add includes of module.h and stat.h staging: r8712u: include module.h where needed llist: Add back llist_add_batch() and llist_del_first() prototypes net: wireless: brcm80211: replace ndo_set_multicast_list with ndo_set_rx_mode net: wireless: brcm80210: include module.h mmc: using module_param requires the inclusion of moduleparam.h drivers/media: ir-raw.c needs kmod.h for request_module pinctrl: EXPORT_SYMBOL needs export.h net: fix typo in drivers/net/ethernet/xilinx/ll_temac_main.c device-mapper: dm-bufio.c needs to include module.h device-mapper: using EXPORT_SYBOL in dm-space-map-checker.c needs export.h Stephen Warren (27): ARM: Tegra: Harmony: Add USB device ARM: Tegra: Seaboard board updates for audio ARM: Tegra: Seaboard: Add USB devices ARM: Tegra: Force PORT_TEGRA as the UART type ASoC: soc-io: Fix CONFIG_REGMAP_I2C/SPI guards to support regmap modules ARM: 7052/1: gpio/tegra: Remove use of irq_to_gpio ARM: 7053/1: gpio/tegra: Implement gpio_chip.to_irq ARM: 7054/1: arm/tegra: Delete custom gpio_to_irq, and irq_to_gpio ARM: 7055/1: arm/tegra: mach/gpio.h: include linux/types.h to fix build arm/dt: Tegra: Add support-8bit to SDHCI nodes dt: add empty for_each_child_of_node, of_find_property ARM: 7094/1: arm/tegra: Move EN_VDD_1V05_GPIO to board-harmony.h ARM: 7101/1: arm/tegra: Replace with staging:iio:magnetometer:ak8975: Don't assume 0 is an invalid GPIO staging:iio:magnetometer:ak8975: Fix probe() error-handling arm/tegra: Prep boards for gpio/pinmux conversion to pdevs arm/dt: Tegra: Add pinmux node to tegra20.dtsi arm/tegra: Convert pinmux driver to a platform device gpio/tegra: Convert to a platform device arm/tegra: pinmux: ioremap registers arm/tegra: Harmony: Configure PMC for low-level interrupts pinctrl: get_group_pins() const fixes pinctrl: Remove unsafe __refdata pinctrl: Don't copy pin names when registering them pinctrl: Don't copy function name when requesting a pin mmc: sdhci-tegra: Add 8-bit support to device tree binding. dt: add empty of_machine_is_compatible Steve French (8): add new module parameter 'enable_oplocks' Typo in cifs readme in name of module parm directory [CIFS] Show nostrictsync and noperm mount options in /proc/mounts Merge branch 'cifs-3.2' of git://git.samba.org/jlayton/linux into temp-3.2-jeff [CIFS] Fixup trivial checkpatch warning Add definition for share encryption Fix build break when freezer not configured [CIFS] Update cifs version to 1.76 Steve Glendinning (2): Add support for SMSC UFX6000/7000 USB display adapters smscufx: reduce number of casts in ufx_raw_rect Steve Kerrison (1): [media] CXD2820R: Replace i2c message translation with repeater gate control Steve Wise (1): RDMA/cxgb4: Fail RDMA initialization for unsupported cards Steven Miao (1): Blackfin: SMP: fix scheduling deadlock Steven Rostedt (14): tracing: Clean up tb_fmt to not give faulty compile warning sched: Balance RT tasks when forked as well sched: Use pushable_tasks to determine next highest prio sched/cpupri: Remove the vec->lock sched/cpupri: Fix memory barriers for vec updates to always be in order tracing: Add preempt disable for filter self test tracing: Add a counter clock for those that do not trust clocks tracing: Fix preemptirqsoff tracer to not stop at preempt off tracing: Warn on output if the function tracer was found corrupted tracing: Do not allocate buffer for trace_marker tracing: Fix returning of duplicate data after EOF in trace_pipe_raw m32r: Allow use of atomic64 cgroup/kmemleak: Annotate alloc_page() for cgroup allocations memcg: Fix race condition in memcg_check_events() with this_cpu usage Steven Toth (29): [media] saa7164: Adding support for HVR2200 card id 0x8953 [media] cx23885: convert call clients into subdevices [media] cx23885: minor function renaming to ensure uniformity [media] cx23885: setup the dma mapping for raw audio support [media] cx23885: add two additional defines to simplify VBI register bitmap handling [media] cx23885: initial support for VBI with the cx23885 [media] cx23885: initialize VBI support in the core, add IRQ support, register vbi device [media] cx23885: minor printk cleanups and device registration [media] cx25840: enable raw cc processing only for the cx23885 hardware [media] cx23885: vbi line window adjustments [media] cx23885: add vbi buffer formatting, window changes and video core changes [media] cx23885: Ensure the VBI pixel format is established correctly [media] cx23885: ensure video is streaming before allowing vbi to stream [media] cx23885: remove channel dump diagnostics when a vbi buffer times out [media] cx23885: Ensure VBI buffers timeout quickly - bugfix for vbi hangs during streaming [media] cx23885: Name an internal i2c part and declare a bitfield by name [media] cx25840: Enable support for non-tuner LR1/LR2 audio inputs [media] cx23885: Allow the audio mux config to be specified on a per input basis [media] cx23885: Enable audio line in support from the back panel [media] cx25840: Ensure AUDIO6 and AUDIO7 trigger line-in baseband use [media] cx23885: Initial support for the MPX-885 mini-card [media] cx23885: fixes related to maximum number of inputs and range checking [media] cx23885: add generic functions for dealing with audio input selection [media] cx23885: hook the audio selection functions into the main driver [media] cx23885: v4l2 api compliance, set the audioset field correctly [media] cx23885: Removed a spurious function cx23885_set_scale() [media] cx23885: Avoid stopping the risc engine during buffer timeout [media] cx23885: Avoid incorrect error handling and reporting [media] cx23885: Stop the risc video fifo before reconfiguring it Steven Whitehouse (21): GFS2: Clean up dir hash table reading GFS2: Split data write & wait in fsync GFS2: Fix bug-trap in ail flush code GFS2: Make atime checks more efficient GFS2: Fix inode allocation error path GFS2: Fix bug trap and journaled data fsync GFS2: Use ->dirty_inode() GFS2: Clean up gfs2_create GFS2: Fix lseek after SEEK_DATA, SEEK_HOLE have been added GFS2: Make resource groups "append only" during life of fs GFS2: Cache the most recently used resource group in the inode GFS2: Remove obsolete assert GFS2: Call do_strip() directly from recursive_scan() GFS2: Use cached rgrp in gfs2_rlist_add() GFS2: Fix AIL flush issue during fsync GFS2: Correctly set goal block after allocation GFS2: Clean up ->page_mkwrite GFS2: Fix off-by-one in gfs2_blk2rgrpd GFS2: Misc fixes GFS2: Remove two unused variables GFS2: Move readahead of metadata during deallocation into its own function Stuart Hopkins (1): udlfb: Add module option to do without shadow framebuffer Subhash Jadavani (2): mmc: msm_sdcc: Handle dma resource not present case mmc: sd: Handle SD3.0 cards not supporting UHS-I bus speed mode Sucheta Chakraborty (3): qlcnic: add beacon test support. qlcnic: reset loopback mode if promiscous mode setting fails. qlcnic: fix beacon and LED test. Sukesh Srikakula (5): staging: brcm80211: power save issue fixed in brcmfmac driver staging: brcm80211: brcmfmac: Enabling FW roaming by default staging: brcm80211: brcmfmac: Connect request made robust staging: brcm80211: brcmfmac: Fixed issues with iscan staging: brcm80211: brcmfmac: Roamed channel info passed to cfg80211 Suresh Jayaraman (3): block: document blk-plug cifs: update README about the kernel module parameters cifs: warn about deprecation of /proc/fs/cifs/OplockEnabled interface Suresh Siddha (13): x86, x2apic: Enable the bios request for x2apic optout intr_remap: Call dmar_dev_scope_init() explicitly iommu: Move IOMMU specific code to intel-iommu.c iommu: No need to set dmar_disabled in check_zero_address() iommu: Cleanup ifdefs in detect_intel_iommu() x86, msi, intr-remap: Use the ioapic set affinity routine x86, ioapic: Define irq_remap_modify_chip_defaults() iommu: Rename the DMAR and INTR_REMAP config options x86, kdump, ioapic: Reset remote-IRR in clear_IO_APIC x86, ioapic: Restore the mask bit correctly in eoi_ioapic_irq() x86, ioapic: Consolidate the explicit EOI code sched: Use resched IPI to kick off the nohz idle balance sched: Request for idle balance during nohz idle load balance Susan Gao (1): ASoC: Fix a bug in WM8962 DSP_A and DSP_B settings Suzuki Poulose (1): powerpc/44x: Kexec support for PPC440X chipsets Sven Eckelmann (1): batman-adv: update internal version number Sven Neumann (2): cfg80211: hold reg_mutex when updating regulatory cfg80211: reorder code to obsolete forward declaration Swen Schillig (2): [SCSI] qdio: base support for hardware data router with zfcp [SCSI] zfcp: support for hardware data router Sylwester Nawrocki (40): [media] s5p-fimc: Add runtime PM support in the mem-to-mem driver [media] s5p-csis: Handle all available power supplies [media] s5p-csis: Rework the system suspend/resume helpers [media] s5p-fimc: Add media entity initialization [media] s5p-fimc: Remove registration of video nodes from probe() [media] s5p-fimc: Remove sclk_cam clock handling [media] s5p-fimc: Limit number of available inputs to one [media] s5p-fimc: Remove sensor management code from FIMC capture driver [media] s5p-fimc: Remove v4l2_device from video capture and m2m driver [media] s5p-fimc: Add the media device driver [media] s5p-fimc: Conversion to use struct v4l2_fh [media] s5p-fimc: Convert to the new control framework [media] s5p-fimc: Add media operations in the capture entity driver [media] s5p-fimc: Add PM helper function for streaming control [media] s5p-fimc: Correct color format enumeration [media] s5p-fimc: Convert to use media pipeline operations [media] s5p-fimc: Add subdev for the FIMC processing block [media] s5p-fimc: Add support for JPEG capture [media] s5p-fimc: Add v4l2_device notification support for single frame capture [media] s5p-fimc: Use consistent names for the buffer list functions [media] s5p-fimc: Add runtime PM support in the camera capture driver [media] s5p-fimc: Correct crop offset alignment on exynos4 [media] s5p-fimc: Remove single-planar capability flags [media] sr030pc30: Remove empty s_stream op [media] noon010pc30: Conversion to the media controller API [media] noon010pc30: Improve s_power operation handling [media] v4l: Move SR030PC30, NOON010PC30, M5MOLS drivers to the right location [media] noon010pc30: Remove g_chip_ident operation handler [media] v4l2: Add polarity flag definitions for the parallel bus FIELD signal [media] s5p-fimc: Convert to use generic media bus polarity flags [media] m5mols: Remove superfluous irq field from the platform data struct ARM: S5PV210: Add support for NOON010PC30 sensor on GONI board ARM: S5PV210: Add support for M-5MOLS image sensor on UNIVERSAL_C210 ARM: SAMSUNG: Move fimc plat. device from board files to plat-samsung ARM: EXYNOS4: Add support for M-5MOLS camera on Nuri board [media] staging: as102: Convert the comments to kernel-doc style [media] staging: as102: Unconditionally compile code dependent on DVB_CORE [media] staging: as102: Remove conditional compilation based on kernel version [media] v4l: Add AUTO option for the V4L2_CID_POWER_LINE_FREQUENCY control [media] v4l: Add v4l2 subdev driver for S5K6AAFX sensor Szymon Janc (3): Bluetooth: Mark not declared l2cap_core functions as static Bluetooth: rfcomm: Fix sleep in invalid context in rfcomm_security_cfm Bluetooth: Increase HCI reset timeout in hci_dev_do_close Søren Holm (1): serial: Support the EFR-register of XR1715x uarts. TARUISI Hiroaki (1): [SCSI] Fix out of spec CD-ROM problem with media change THOMSON, Adam (Adam) (1): mtd: nand_base: always initialise oob_poi before writing OOB data Takashi Iwai (90): ALSA: hda - Add basic tracepoints ALSA: hda - Add documentation for tracepoints ALSA: hda - Add tracepoint for unsolicited events Merge branch 'fix/hda' into topic/hda ALSA: hda - Add snd_hda_override_pin_caps() helper function ALSA: hda - Remove ALC262 HP and sony-assamd quirks ALSA: hda - Remove ALC260 HP model quirks ALSA: hda - Remove ALC268 Dell, Toshiba and Zapto model quirks ALSA: hda - Remove ALC680 model quirks ALSA: hda - Remove ALC861VD Lenovo, Dallas, HP and V1S model quirks ALSA: hdspm - Correct max buffer size limit ALSA: hdspm - Add missing KNOT flag for AES32 rate restriction ALSA: hdspm - Simplify with snd_pcm_hw_constraint_pow2() ALSA: hda - Remove dell, dell-zm1 and samsung-nc10 models for ALC272 Merge branch 'fix/hda' into topic/hda ALSA: hda - Remove acer, acer-aspire and acer-dmic models for ALC268 ALSA: hda - Remove ALC269 model=futjisu and Acer ALSA: hda - Replace ALC269 quanta and lifebook models with fixups ALSA: hda - Remove ALC268 model quirks ALSA: hda - Remove ALC861 uniwill-m31, toshiba, asus and asus-laptop models ALSA: hda - Get rid of left-over chunks by previous cleanups ALSA: hda - Remove ALC662 eeepc-p701 and ecs models Merge branch 'fix/misc' into topic/misc ALSA: usb-audio - Check the dB-range validity in the later read, too ALSA: hda - Support multiple speakers by Realtek auto-parser ALSA: hda - Allow different assoc numbers for multiple speakers ALSA: hda - Remove ALC662 model=levono-101e model quirk Merge branch 'fix/hda' into topic/hda ALSA: hda - Fix initialization of multi-speaker output paths for Realtek ALSA: hda - Rename to snd_hda_parse_pin_defcfg() ALSA: hda - Restore VREF50 setup for ALC861-VD dallas/hp models ALSA: hda - Remove all ALC861 and ALC861-VD quirks ALSA: hda - Add multi-headphone NIDs in multiout struct ALSA: hda - Support multiple headphones in Realtek auto-parser ALSA: hda - Rewrite ALC662 asus-mode* models with fixups ALSA: hda - Rewrite ALC269 laptop-amic,dmic,&co quirks with fixups ALSA: hda - Remove ALC662 ASUS M51VA, G71V, H13 and G50V model quirks Merge branch 'fix/hda' into topic/hda ALSA: hda - Rewrite Lenovo X200 quirk with pincfg-fix using auto-parser ALSA: hda - Fix Center/LFE mixer element creations for Realtek ALSA: hda - Prefer multi-io to speakers for realtek auto-parser ALSA: hda - Remove ALC662 ASUS eeepc-ep20 model quirk ALSA: hda - Remove the rest of ALC662 quirks Merge branch 'fix/misc' into topic/misc Merge branch 'fix/hda' into topic/hda Merge branch 'topic/asoc' into topic/remove-irqf_disable Merge branch 'fix/misc' into topic/misc ALSA: fm801 - Clean up redundant reference to snd_fm801_tea575x_gpios[] ALSA: aloop - Use vmalloc buffer Merge branch 'fix/hda' into topic/hda ALSA: hda - Avoid unnecessary verbs to clear PCM formats ALSA: hda:via - Skip creations of empty PCM streams ALSA: pcm - Export snd_pcm_lib_default_mmap() helper ALSA: hda - Add snoop option ALSA: hda - Allow patching with any vendor/subsystem ids ALSA: hda - Moved snd_print_pcm_rates() back into hda_proc.c ALSA: hda/realtek - Choose more cleverly the primary outputs Merge branch 'fix/hda' into topic/hda ALSA: hda - Distinguish each substream for better sticky assignment ALSA: usb-audio - Fix possible access over audio_feature_info[] array ALSA: hda/realtek - Check the error from alc_codec_rename() ALSA: hda/realtek - Use alc_codec_rename() ALSA: hda/realtek - Clean up codec renames ALSA: hda/realtek - Cache COEF 0 value ALSA: hda - Add position_fix quirk for Dell Inspiron 1010 Merge branch 'fix/hda' into topic/hda drm/i915/panel: Always record the backlight level again (but cleverly) ALSA: hda/realtek - Fix DAC assignments of multiple speakers x86: Fix S4 regression hp_accel: Add a new PNP id hp_accel: Add axis-mapping for HP ProBook / EliteBook ALSA: Update the sound git tree URL ALSA: hda - Fix surround/CLFE headphone and speaker pins order ALSA: hda - Fix pin-config for ASUS W90V Merge branch 'topic/misc' into for-linus Merge branch 'topic/remove-irqf_disable' into for-linus Merge branch 'topic/asoc' into for-linus ALSA: hda/realtek - Fix missing volume controls with ALC260 ALSA: hda - Keep EAPD turned on for old Conexant chips ALSA: hda - Fix ADC input-amp handling for Cx20549 codec Merge branch 'topic/hda' into for-linus ALSA: intel8x0 - Fix inclusion of kvm_para.h ALSA: hda - Check NO_PRESENCE pincfg default bit ALSA: hda/realtek - Don't create alt-stream for capture when unnecessary ALSA: hda - Remove unused variables ALSA: hda/realtek - Skip invalid digital out pins Merge branch 'fix/asoc' into for-linus ALSA: hda - Fix silent output regression with ALC861 ALSA: hda - Fix a regression for DMA-position check with CA0110 ALSA: hda - Revert the check of NO_PRESENCE pincfg default bit Takuya Yoshikawa (4): KVM: x86 emulator: Use ctxt->_eip directly in do_insn_fetch_byte() KVM: x86 emulator: Drop _size argument from insn_fetch() KVM: x86 emulator: Let compiler know insn_fetch() rarely fails KVM: x86 emulator: Make x86_decode_insn() return proper macros Tang Yuantian (1): powerpc/mm: Fix the call trace when resumed from hibernation Tanmay Upadhyay (2): USB: pxa168: Add onchip USB host controller support mmc: sdhci-pxa: Check pdata before using its members Tao Ma (13): ext4: Free resources in ext4_mb_init()'s error paths ext4: Free resources in some error path in ext4_fill_super ext4: fix the comment describing ext4_ext_search_right() ext4: remove the obsolete/broken EXT4_IOC_WAIT_FOR_READONLY ioctl ext4: use le32_to_cpu for ext4_extent_idx.ei_block in ext4_ext_search_left() ext3: Remove the obsolete broken EXT3_IOC32_WAIT_FOR_READONLY. ext4: avoid stamping on other memories in ext4_ext_insert_index() block: Remove the control of complete cpu from bio. block: warn if tag is greater than real_max_depth. ext4: don't check io->flag when setting EXT4_STATE_DIO_UNWRITTEN inode state ext4: Use correct locking for ext4_end_io_nolock() ext4: Create helper function for EXT4_IO_END_UNWRITTEN and i_aiodio_unwritten fs/buffer.c: add device information for error output in __find_get_block_slow() Tapani Utriainen (1): ARM: OMAP: irq: loop counter fix in omap_init_irq() Tarun Kanti DebBarma (8): ARM: OMAP2+: dmtimer: add device names to flck nodes ARM: OMAP1: dmtimer: conversion to platform devices ARM: OMAP2+: dmtimer: convert to platform devices ARM: OMAP: dmtimer: platform driver ARM: OMAP: dmtimer: switch-over to platform device driver ARM: OMAP: dmtimer: pm_runtime support ARM: OMAP: dmtimer: low-power mode support ARM: OMAP: dmtimer: add error handling to export APIs Tatyana Nikolova (1): RDMA/nes: Add support for MPAv2 Enhanced RDMA Negotiation Tejun Heo (19): video: don't use flush_scheduled_work() in fb_defio apm-emulation: use wait_event_freezable() instead of freezer_[do_not_]count() block: add GENHD_FL_NO_PART_SCAN libata: clear PIO pad area block: make gendisk hold a reference to its queue block: fix genhd refcounting in blkio_policy_parse_and_set() block: move blk_throtl prototypes to block/blk.h block: pass around REQ_* flags instead of broken down booleans during request alloc/free block: drop unnecessary blk_get/put_queue() in scsi_cmd_ioctl() and blk_get_tg() block: reorganize queue draining block: reorganize throtl_get_tg() and blk_throtl_bio() block: make get_request[_wait]() fail if queue is dead block: drop @tsk from attempt_plug_merge() and explain sync rules block: fix request_queue lifetime handling by making blk_queue_cleanup() properly shutdown block: make gendisk hold a reference to its queue [S390] fix _TIF_SINGLE_STEP definition ida: make ida_simple_get/put() IRQ safe block: don't call blk_drain_queue() if elevator is not up PM / Freezer: Revert 27920651fe "PM / Freezer: Make fake_signal_wake_up() wake TASK_KILLABLE tasks too" Teka (1): [media] Support for Terratec G1 Tero Kristo (1): omap: voltage: add a stub header file for external/regulator use Terry Lambert (1): HID: support primax keyboards violating USB HID spec Tetsuo Handa (17): TOMOYO: Fix incorrect enforce mode. TOMOYO: Add environment variable name restriction support. TOMOYO: Add socket operation restriction support. TOMOYO: Allow controlling generation of access granted logs for per an entry basis. TOMOYO: Allow domain transition without execve(). TOMOYO: Avoid race when retrying "file execute" permission check. TOMOYO: Bump version. TOMOYO: Allow specifying domain transition preference. TOMOYO: Fix make namespacecheck warnings. TOMOYO: Simplify garbage collector. TOMOYO: Remove tomoyo_policy_memory_lock spinlock. TOMOYO: Fix domain transition failure warning. TOMOYO: Remove redundant tasklist_lock. TOMOYO: Fix quota and garbage collector. TOMOYO: Fix unused kernel config option. TOMOYO: Fix incomplete read after seek. TOMOYO: Fix interactive judgment functionality. Thadeu Lima de Souza Cascardo (6): jsm: remove remaining flip buffer code jsm: remove buggy write queue jsm: print byte we are dequeing powerpc/eeh: Fix /proc/ppc64/eeh creation powerpc: Reserve iommu page 0 ehea: Change maintainer to me Theodore Ts'o (32): ext2,ext3,ext4: don't inherit APPEND_FL or IMMUTABLE_FL for new inodes ext4: fake direct I/O mode for data=journal ext4: call ext4_handle_dirty_metadata with correct inode in ext4_dx_add_entry ext4: improve handling of conflicting mount options jbd2: add debugging information to jbd2_journal_dirty_metadata() ext4: only call ext4_jbd2_file_inode when an inode has been extended ext4: add ext4-specific kludge to avoid an oops after the disk disappears ext4: read-only support for bigalloc file systems ext4: enforce bigalloc restrictions (e.g., no online resizing, etc.) ext4: convert instances of EXT4_BLOCKS_PER_GROUP to EXT4_CLUSTERS_PER_GROUP ext4: factor out block group accounting into functions ext4: split out ext4_free_blocks_after_init() ext4: bigalloc changes to block bitmap initialization functions ext4: convert block group-relative offsets to use clusters ext4: teach mballoc preallocation code about bigalloc clusters ext4: teach ext4_free_blocks() about bigalloc and clusters ext4: teach ext4_ext_map_blocks() about the bigalloc feature ext4: teach ext4_ext_truncate() about the bigalloc feature ext4: convert s_{dirty,free}blocks_counter to s_{dirty,free}clusters_counter ext4: convert the free_blocks field in s_flex_groups to be free_clusters ext4: teach ext4_statfs() to deal with clusters if bigalloc is enabled ext4: tune mballoc's default group prealloc size for bigalloc file systems ext4: enable mounting bigalloc as read/write ext4: Rename ext4_free_blks_{count,set}() to refer to clusters ext4: rename ext4_count_free_blocks() to ext4_count_free_clusters() ext4: rename ext4_free_blocks_after_init() to ext4_free_clusters_after_init() ext4: rename ext4_claim_free_blocks() to ext4_claim_free_clusters() ext4: rename ext4_has_free_blocks() to ext4_has_free_clusters() ext4: documentation: remove acl and user_xattr mount options fs: optimize out 16 bytes worth of padding in struct inode ext4: remove unnecessary call to waitqueue_active() ext4: optimize locking for end_io extent conversion Thierry Reding (18): [media] tuner/xc2028: Add I2C flush callback [media] tm6000: Miscellaneous cleanups [media] tm6000: Use correct input in radio mode [media] tm6000: Implement I2C flush callback [media] tm6000: Flesh out the IRQ callback [media] tm6000: Rename active interface register [media] tm6000: Disable video interface in radio mode [media] tm6000: Rework standard register tables [media] tm6000: Add locking for USB transfers [media] tm6000: Properly count device usage [media] tm6000: Initialize isochronous transfers only once [media] tm6000: Execute lightweight reset on close [media] tm6000: Do not use video buffers in radio mode [media] tm6000: Plug memory leak on PCM free [media] tm6000: Enable audio clock in radio mode [media] tm6000: Enable radio mode for Cinergy Hybrid XE [media] tm6000: Add fast USB access quirk [media] tm6000: Enable fast USB quirk on Cinergy Hybrid Thomas Abraham (7): serial: samsung: Add unified interrupt handler for s3c64xx and later SoC's ARM: SAMSUNG: Remove uart irq handling from plaform code ARM: SAMSUNG: remove sdhci default configuration setup platform helper gpio/samsung: Fix incorrect gpio pull up/down callback for EXYNOS4 mmc: sdhci-s3c: add default controller configuration i2c-s3c2410: Keep a copy of platform data and use it i2c-s3c2410: Add device tree support Thomas Gleinxer (1): ARM: 7133/1: SMP: fix per cpu timer setup before the cpu is marked online Thomas Gleixner (35): rtmutex: Cleanup the debug code x86: cache_info: Remove bogus free of amd_l3_cache data x86: cache_info: Kill the moronic shadow struct x86: cache_info: Kill the atomic allocation in amd_init_l3_cache() clocksource: Make watchdog reset lockless locking, kprobes: Annotate the hash locks and kretprobe.lock as raw locking, percpu_counter: Annotate ::lock as raw locking, sched, cgroups: Annotate release_list_lock as raw locking, lib/proportions: Annotate prop_local_percpu::lock as raw locking, tracing: Annotate tracing locks as raw locking, printk: Annotate logbuf_lock as raw locking, sched: Annotate thread_group_cputimer as raw locking, semaphores: Annotate inner lock as raw locking, rwsem: Annotate inner lock as raw locking, timer_stats: Annotate table_lock as raw locking, latencytop: Annotate latency_lock as raw locking, video: Annotate vga console lock as raw locking, oprofile: Annotate oprofilefs lock as raw locking, ACPI: Annotate c3_lock as raw locking, x86: mce: Annotate cmci_discover_lock as raw locking, powerpc: Annotate uic->lock as raw locking, ARM: Annotate low level hw locks as raw locking, x86, iommu: Annotate iommu->register_lock as raw locking, x86, iommu: Annotate irq_2_ir_lock as raw locking, x86, iommu: Annotate qi->q_lock as raw alarmtimers: Fix error handling watchdog: Drop FIFO policy in exit path sched: Fix idle_cpu() genirq: Fix fatfinered fixup really rtmutex: Add missing rcu_read_unlock() in debug_rt_mutex_print_deadlock() sched: Warn on rt throttling sched: Don't use tasklist_lock for debug prints net: Unlock sock before calling sk_free() Blackfin: H8606: fixup bogus ioresource init jdb/jbd2: factor out common functions from the jbd[2] header files Thomas Hellstrom (39): vmwgfx: Let SVGA_REG_NUM_DISPLAYS determine output connectivity vmwgfx: Fix potential execbuf deadlocks vmwgfx: Switch to VGA when we drop master and vmwgfx fbdev is not active vmwgfx: Restrict number of GMR pages to device limit vmwgfx: Update register definitions for HWV8 and print out new capabilities vmwgfx: Implement GMR2 vmwgfx: Remove the fifo debug ioctl vmwgfx: Remove the update layout IOCTL. vmwgfx: Remove the possibility to map the fifo from user-space vmwgfx: Add functionality to get 3D caps vmwgfx: Fix confusion caused by using "fence" in various places vmwgfx: Make vmw_wait_seqno a bit more readable vmwgfx: Implement fence objects vmwgfx: Bump major ttm: export ttm_bo_create vmwgfx: Break out execbuf command processing vmwgfx: Require HWV8 for 3d support vmwgfx: minor dmabuf utilities cleanup vmwgfx: Allow reference and unreference of NULL fence objects. vmwgfx: Fix up query processing vmwgfx: Optimize the command submission resource list vmwgfx: Make sure we always have a user-space handle to use for objects that are backing kms framebuffers. vmwgfx: Handle device surface memory limit vmwgfx: Bump driver minor to advertise support for new ioctls. vmwgfx: Minor cleanups vmwgfx: Implement memory accounting for resources vmwgfx: Break out and comment vmw_execbuf_copy_fence_user vmwgfx: Add fence events vmwgfx: Wrap drm_read and drm_poll vmwgfx: Take the driver out of staging ttm: Fix error-path using an uninitialized value drm: Introduce "Virtual" connectors and encoders vmwgfx: Use "Virtual" connectors and encoders rather than "LVDS". vmwgfx: Reinstate the update_layout ioctl vmwgfx: Screen object cleanups vmwgfx: Remove screen object active list vmwgfx: Make the preferred autofit mode have a 60Hz vrefresh vmwgfx: Infrastructure for explicit placement vmwgfx: Fix hw cursor position Thomas Jarosch (2): perf buildid: Fix possible unterminated readlink() result buffer tools, slub: Fix off-by-one buffer corruption after readlink() call Thomas Meyer (16): crypto: n2 - Fix a get/put_cpu() imbalance staging: brcm80211: use kzalloc() staging: brcm80211: use kstrdup() staging: rts_pstor: dont cast void* from kmalloc() staging: altera-stapl: dont cast void* from kmalloc() Staging: rts_pstor: dont cast void* from kmalloc() staging: ft1000: dont cast void* from kmalloc() staging: tidspbridge: dont cast void* from kmalloc() staging: rts_pstor: dont cast void* from kmalloc() staging/easycap: Use memdup_user staging: spectra: Use memdup_user ARM: davinci: edma: use kzalloc() [media] davinci vpbe: Use resource_size() xen/pciback: use resource_size() tty: Support compat_ioctl get/set termios_locked ACPI: use kstrdup() Thomas Pedersen (9): mac80211: fix mesh beacon format ieee80211: introduce Self Protected Action codes mac80211: update mesh peering frame codes mac80211: update mesh peering frame format ieee80211: add mesh action codes mac80211: update mesh path selection frame format mac80211: mesh gate fixes mac80211: check if mesh frame is in RMC after decrypt mac80211: notify peer when shutting down peer link Thomas Petazzoni (4): at91: ohci-at91: add vbus_pin_inverted platform attribute at91: at91-ohci: support overcurrent notification at91: at91-ohci: configure overcurrent pins as input GPIOs easycap: fix ntsc module parameter description Thomas Renninger (2): EDAC i7core: Use mce socketid for better compatibility ACPI: Export FADT pm_profile integer value to userspace Thomas Weber (4): OMAP: DSS2: Support for Innolux AT070TN83 OMAP: Devkit8000: Change lcd driver to AT070TN83 mfd: Fix twl4030 dependencies for audio codec ARM: OMAP: Devkit8000: Remove double omap_mux_init_gpio Tim Chen (1): Scm: Remove unnecessary pid & credential references in Unix socket's send and receive path Timo Kokkonen (1): [media] saa7134.h: Suppress compiler warnings when CONFIG_VIDEO_SAA7134_RC is not set Timur Tabi (37): drivers/video: use strings to specify the Freescale DIU monitor port ASoC: claim the IRQ when the fsl_ssi device is probed, not opened ASoC: fsl: fix build warning in fsl_dma tty/powerpc: introduce the ePAPR embedded hypervisor byte channel driver tty/powerpc: fix build break with ehv_bytechan.c on allyesconfig fbdev: fix indentation in modedb.c ASoC: improve asynchronous mode support in the fsl_ssi driver ASoC: support sample sizes properly in the WM8776 codec driver ASoC: support all possible sample rates in the WM8776 driver drivers/video: fsl-diu-fb: clean up whitespace and formatting drivers/video: fsl-diu-fb: clean up printk usage drivers/video: fsl-diu-fb: remove unused ioctls drivers/video: fsl-diu-fb: fix compilation warning drivers/video: fsl-diu-fb: improve device tree usage drivers/video: fsl-diu-fb: remove redundant default video mode drivers/video: fsl-diu-fb: improve local variable usage in some functions drivers/video: fsl-diu-fb: set the driver name to "fsl-diu-fb" drivers/video: fsl-diu-fb: fix potential memcpy buffer overflow bug drivers/video: fsl-diu-fb: fix memory leak on error drivers/video: fsl-diu-fb: use a normal for-loop to uninstall framebuffers drivers/video: fsl-diu-fb: the video buffer is not I/O memory drivers/video: fsl-diu-fb: remove unusued MEM_ALLOC_THRESHOLD powerpc/mpic: Add support for discontiguous cores powerpc/5200: enable audio in the defconfig drivers/tty: don't use the byte channel handle as a parameter in ehv_bytechan.c drivers/video: fsl-diu-fb: fix some ioctls drivers/video: fsl-diu-fb: move some definitions out of the header file drivers/video: fsl-diu-fb: remove broken screen blanking support drivers/video: fsl-diu-fb: add several new video modes drivers/video: fsl-diu-fb: use an enum for the AOI index drivers/video: fsl-diu-fb: remove unused panel operating mode support drivers/video: fsl-diu-fb: only DIU modes 0 and 1 are supported drivers/video: fsl-diu-fb: merge diu_hw into fsl_diu_data drivers/video: fsl-diu-fb: merge diu_pool into fsl_diu_data powerpc/fsl_msi: fix support for multiple MSI ranges powerpc/85xx: clean up FPGA device tree nodes for Freecsale QorIQ boards powerpc/fsl_msi: add support for "msi-address-64" property Tobias Klauser (5): usb: isp1362-hcd: Quieten printks staging: usbip: userspace: Check return value for mkdir() staging: usbip: Add header guards to stub.h and vhci.h mtd: plat-nand: Fixup kerneldoc for struct platform_nand_chip Input: gpio_keys - use of_property_read_u32() Todd Poynor (5): OMAP: VP: Explicitly mask VPVOLTAGE field OMAP: Improve register access in L3 Error handler. OMAP: Fix a BUG in l3 error handler. mfd: Fix twl6030 lockdep recursion warning on setting wake IRQs mfd: Disable twl6030 IRQ during suspend Tom Herbert (4): rps: Some minor cleanup in get_rps_cpus rps: Add flag to skb to indicate rxhash is based on L4 tuple rps: Infrastructure in __skb_get_rxhash for deep inspection rps: Inspect GRE encapsulated packets to get flow hash Tom Tucker (1): RDMA/cxgb4: Mark QP in error before disabling the queue in firmware Tomas Winkler (2): staging: mei: enable msi when supported staging/easycap: kill timeval members of easycap struct Tomasz Figa (4): ARM: S3C64XX: Use S3C64XX_SDMA_SEL register name instead of numeric address ARM: S3C64XX: Save/restore S3C64XX_SDMA_SEL on suspend/resume ARM: S3C64XX: Save/restore S3C64XX_MODEM_MIFPCON on suspend/resume ARM: S3C64XX: Add support for synchronous clock operation Tomasz Stanislawski (7): [media] media: v4l: remove single to multiplane conversion [media] s5p-tv: hdmi: use DVI mode [media] s5p-tv: fix mbus configuration ARM: SAMSUNG: add i2c hdmiphy controller definitions ARM: S5P: add support for tv device ARM: EXYNOS4: enable TV support on Universal_C210 board ARM: S5PV210: enable TV support on GONI board Tomi Valkeinen (65): fbdev: fix parsing of standard timings OMAP: DSS2: PicoDLP: fix error handling in power_on OMAP: DSS2: check for manager when enabling display Revert "HACK: OMAP: DSS2: clk hack for OMAP2/3" Revert "OMAP: DSS2: HDMI: fix hdmi clock name" OMAP: DSS2: remove unneeded fck enable/disables OMAP: DSS2: Change DSI device naming OMAP4: TWL: Add common omapdss supplies OMAP: DSS2: DSI: Improve dsi_mux_pads parameters OMAP: DSS2: Implement dsi_mux_pads for OMAP4 OMAP: OMAPFB: make omapfb start even when a display is missing a driver OMAP: DSS2: fix clock sources on error and uninit OMAP: DSS2: Handle manager change in apply OMAP: DSS2: Remove "EXPERIMENTAL" from Kconfig OMAP: DSS2: Remove support for non-DISPC overlays OMAP: DSS2: DISPC: use lookup tables for bit shifts OMAP: DSS2: Add overlay caps to DSS features OMAP: DSS2: Add GLOBAL_ALPHA & PRE_MULT_ALPHA to ovl caps OMAP: DSS2: string parsing cleanups OMAP: OMAPFB: string parsing cleanups OMAP: DSS2: DISPC: remove non-existing func prototypes OMAP: DSS2: DISPC: rename overlay related funcs OMAP: DSS2: DISPC: rename manager related funcs OMAP: DSS2: reorganize functions in dss.h OMAP: DSS2: DISPC: Fix minimum PCD value OMAP: DSS2: HDMI: use default dividers OMAP: DSS2: HDMI: change regn definition OMAP: DSS2: DSI: Add comment about regn OMAP: DSS2: DISPC: Add missing IRQ definitions OMAP: DSS2: add dss_get_hdmi_venc_clk_source() OMAP: DSS2: DISPC: improve dispc_mgr_enable_digit_out() OMAP: DSS2: HDMI: improve hdmi output enable OMAP: DSS2: add read_edid() to omap_dss_driver struct OMAP: DSS2: add detect() to omap_dss_driver struct OMAP: DSS2: HDMI: make set_timing saner OMAP: DSS2: HDMI: implement read_edid() OMAP: DSS2: HDMI: remove edid parsing OMAP: DSS2: HDMI: split hdmi_core_ddc_edid OMAP: DSS2: HDMI: clean up edid reading & fix checksum OMAP: DSS2: HDMI: remove error prints in check_timings OMAP: DSS2: HDMI: implement detect() OMAP: DSS2: add panel-dvi driver OMAP: use dvi panel driver instead of generic-dpi OMAP: stalker: Remove LCD device from board file OMAP: DSS2: panel-generic-dpi: remove "generic" panel OMAP: Add DDC i2c_bus_num to board files OMAPFB: find best mode from edid OMAPDSS: Taal: remove external backlight support OMAPFB: Remove unused lcd drivers OMAPDSS: Port 2430sdp display driver to DSS2 OMAPDSS: Port the H4 display driver to DSS2 OMAPDSS: Port the Apollon display driver to DSS2 OMAPDSS: Add N800 panel driver OMAPDSS: remove vaddr from overlay info OMAP: 4430SDP: Remove unneeded lcd config OMAP4: 4430SDP: Add panel support to board file OMAP4: 4430SDP: Add picodlp support to board file OMAP: RX51: Remove unused old omapfb stuff OMAP: omap3touchbook: Remove unused lcd stuff OMAP: 2420SDP: Port the display driver to new DSS2 OMAP: LDP: Port the display driver to new DSS2 OMAP: H4: Port the display driver to new DSS2 OMAP: Apollon: Port the display driver to new DSS2 OMAPDSS: picodlp: add missing #include ARM: OMAP: change get_context_loss_count ret value to int Tommaso Massimi (1): Platform: samsung_laptop: add support for X520 machines. Tomoya MORINAGA (22): pch_phub: Care FUNCSEL register in PM gpio-ml-ioh: Delete unnecessary code gpio-ml-ioh: Support interrupt function gpio-ml-ioh: Fix suspend/resume issue gpio-pch: Delete invalid "restore" code in suspend() gpio-pch: add spinlock in suspend/resume processing gpio-pch: support ML7223 IOH n-Bus gpio-pch: modify gpio_nums and mask gpio-pch: Save register value in suspend() gpio-pch: Support interrupt function pch_dma: Fix suspend issue pch_dma: Reduce wasting memory 8250_pci: Fix kernel panic when pch_uart is disabled gpio-pch: Use NUMA_NO_NODE not GFP_KERNEL gpio-ml-ioh: Use NUMA_NO_NODE not GFP_KERNEL i2c-eg20t: Fix bus-idle waiting issue i2c-eg20t: Modify returned value s32 to long i2c-eg20t: Fix 10bit access issue i2c-eg20t: Separate error processing i2c-eg20t: add stop sequence in case wait-event timeout occurs i2c-eg20t: Fix flag setting issue i2c-eg20t: Add initialize processing in case i2c-error occurs Tony Breeds (2): net: fix IBM EMAC driver after rename. powerpc/4xx/pci: Add __init annotations for *init_port_hw() functions. Tony Jago (1): [media] saa7164: Add support for another HVR2200 hardware revision Tony Lindgren (32): omap2+: Use Kconfig symbol in Makefile instead of obj-y ARM: OMAP: Move omap2_init_common_devices out of init_early ARM: OMAP: Introduce SoC specific early_init Merge branch 'omap_chip_remove_cleanup_3.2' of git://git.pwsan.com/linux-2.6 into cleanup Merge branch 'for_3.2/voltage-cleanup' of git://gitorious.org/khilman/linux-omap-pm into voltage ARM: OMAP: Add support for dmtimer v2 ip ARM: OMAP2+: Fix missing inline functions for Makefile cleanup ARM: OMAP: dmtimer: skip reserved timers Merge branch 'for_3.2/omap_device' of git://gitorious.org/khilman/linux-omap-pm into cleanup Merge branch 'for_3.2/pm-cleanup' of git://gitorious.org/khilman/linux-omap-pm into cleanup Merge branch 'for_3.2/voltage-cleanup' of git://gitorious.org/khilman/linux-omap-pm into voltage ARM: OMAP2+: Use SoC specifc map_io ARM: OMAP2+: Remove custom init_irq for remaining boards Merge branch 'for_3_2/omap_misc' of git://gitorious.org/omap-sw-develoment/linux-omap-dev into l3 Merge branches 'cleanup-part3', 'voltage', 'dmtimer' and 'l3' into dt-base Merge branch 'for_3.2/3_omap_devicetree' of git://gitorious.org/omap-pm/linux into dt ARM: OMAP1: Use generic map_io, init_early and init_irq ARM: OMAP: Avoid cpu_is_omapxxxx usage until map_io is done ARM: OMAP: Remove calls to SRAM allocations for framebuffer ARM: OMAP: Map SRAM later on with ioremap_exec() ARM: OMAP: Move set_globals initialization to happen in init_early ARM: OMAP: Warn if omap_ioremap is called before SoC detection ARM: 7129/1: Add __arm_ioremap_exec for mapping external memory as MT_MEMORY net: Add back alignment for size for __alloc_skb PM / OPP: Fix build when CONFIG_PM_OPP is not set Merge branch 'omap_clock_fixes_3.2' of git://git.pwsan.com/linux-2.6 into fixes Merge branch 'prcm_scm_misc_fixes_3.2' of git://git.pwsan.com/linux-2.6 into fixes Merge branch 'for_3.2/pm-cleanup-2' of git://github.com/khilman/linux-omap-pm into fixes ARM: OMAP1: Fix warnings about enabling 32 KiHz timer ARM: OMAP2: Fix H4 matrix keyboard warning ARM: OMAP: Fix export.h or module.h includes Merge branch 'fixes-modulesplit' into fixes Tony Luck (4): [IA64] sn2: add missing put_cpu() [IA64[ add CONFIG_NET_VENDOR_INTEL=y to default config files where needed MAINTAINERS: Update entry for IA64 [IA64] Wire up cross memory attach syscalls Toon Schoenmakers (2): staging: rtl8192u: Follow all suggestions from checkpatch on compress.c staging: vt6655: Fixed all the indents and other errors in IEEE11h.c Tore Anderson (1): ipv6: Send ICMPv6 RSes only when RAs are accepted Tormod Volden (1): drm/radeon: Print gart initialization details on all chipsets Toshiyuki Okajima (1): ext3: fix message in ext3_remount for rw-remount case Trond Myklebust (16): NFSD: Cleanup for nfsd4_path() NFSD: Remove the ex_pathname field from struct svc_export NFSD: Add a cache for fs_locations information Revert "NFS: Ensure that writeback_single_inode() calls write_inode() when syncing" SUNRPC: Fix rpc_sockaddr2uaddr SUNRPC: Remove unnecessary export of rpc_sockaddr2uaddr NFS: Use the inode->i_version to cache NFSv4 change attribute information NFS: Remove the unused "lookupfh()" version of nfs4_proc_lookup() NFSv4: Translate NFS4ERR_BADNAME into ENOENT when applied to a lookup NFS: Get rid of the unused nfs_read_data->flags field NFS: Get rid of the unused nfs_write_data->flags field NFS: Get rid of nfs_restart_rpc() NFS: Get rid of unnecessary calls to ClearPageError() in read code NFS: Don't rely on PageError in nfs_readpage_release_partial NFS: Get rid of the nfs_rdata_mempool Merge branch 'osd-devel' into nfs-for-next Troy Kisky (3): ARM: i.MX51: Remove _MX51_PAD_xxx references ARM: i.MX51: clean up iomux-mx51.h ARM: i.MX53: clean up iomux-mx53.h Tsutomu Itoh (1): Btrfs: fix return value of btrfs_get_acl() Tushar Behera (5): ARM: EXYNOS4: Fix sdhci card detection for ORIGEN ARM: EXYNOS4: Add support for secondary MMC port on ORIGEN ARM: EXYNOS4: Add machine support for 7" LCD on ORIGEN ARM: EXYNOS4: convert boot_params to atag_offset gpio/samsung: Move SoC specific codes within macro Tyler Hicks (1): MAINTAINERS: Update eCryptfs maintainer address Ujfalusi, Peter (1): ASoC: sdp4430: Fix string for FM input name Ulf Hansson (2): mmc: core: Fix hangs related to insert/remove of cards mmc: core: Prevent too long response times for suspend Ursula Braun (4): qeth: do not apply priority queuing to HiperSockets iucv: kernel option for z/VM IUCV and HiperSockets af_iucv: cleanup - use iucv_sk(sk) early af_iucv: add HiperSockets transport Uwe Bonnes (6): USB: ftdi_sio.c: Basic icount infrastructure for ftdi_sio USB: ftdi_sio.c: Fill the RX field of the ftdi async_icount structure USB: ftdi_sio.c:Fill TX field of the ftdi async_icount structure USB: ftdi_sio.c: Fill LSR fields of the ftdi async_icount structure USB: ftdi_sio.c:Fill MSR fields of the ftdi async_icount structure USB: ftdi_sio.c: Use ftdi async_icount structure for TIOCMIWAIT, as in other drivers Uwe Kleine-König (19): ARM: mx5: fix remaining inconsistent names for irqs ARM: mx5: remove unused #includes of devices.h ARM: mx5: dynamically allocate mxc-ehci devices ARM: mx5: dynamically allocate fsl-usb2-udc devices ARM: mx5: dynamically allocate high speed i2c (imx-i2c actually) ARM: imx/mx1ads: dynamically allocate physmap-flash device ARM: imx/armadillo5x0: dynamically allocate physmap-flash device ARM: mxc: drop now unused function mxc_register_device new helper to create platform devices with dma mask ARM: mxc: convert device creation to use platform_device_register_full locking, dma, ipu: Annotate bank_lock as raw mfd: Provide a generic version of mc13xxx adc_do_conversion input: Convert mc13783-ts to mc13xxx API ARM: imx: use mc13xxx constants instead of mc13783 hwmon: Convert mc13783-adc to mc13xxx API mfd: Remove mc13783 API functions and symbols mfd: Fix a sparse warning about mc13xxx_chipname not being declared ARM: imx/mx31moboard: use mc13xxx structs instead of removed mc13783 structs drivers/rtc/rtc-mc13xxx.c: move probe and remove callbacks to .init.text and .exit.text Vaibhav Nagarnaik (2): trace: Add a new readonly entry to report total buffer size trace: Add ring buffer stats to measure rate of events Vasanthakumar Thiagarajan (54): ath6kl: cleanup callbacks for different scatter gather method ath6kl: Move ath6kl_sdio_async_rw_scatter() down to other hif_ops functions ath6kl: Remove struct hif_scatter_req_priv ath6kl: Remove useless flags in hif_scatter_req ath6kl: Remove endpoint reference from hif_scatter_req ath6kl: Refactor refactor ath6kl_sdio_setup_scat_resource() ath6kl: Cleanup ath6kl_sdio_enable_scatter() ath6kl: Cleanup ath6kl_sdio_cleanup_scatter() ath6kl: Move down scatter enable and cleanup functions ath6kl: Merge scatter gather setup functions for two method ath6kl: Moe virt_scat from hif_dev_scat_sup_info to hif_scatter_req ath6kl: Refactor ath6kl_sdio_read_write_sync() ath6kl: Merge scatter rw request functions into one ath6kl: Remove ath6kldev_setup_msg_bndl() ath6kl: Minor cleanup in ath6kldev_submit_scat_req() ath6kl: Remove callback msg_pending() and used the function directly ath6kl: Move bundle size from ath6kl_device to htc_target ath6kl: Move block_sz and block_mask from ath6kl_device to htc_target ath6kl: Move scatter information from ath6kl_device to htc_target ath6kl: Bypass reading irq status based on chk_irq_status_cnt ath6kl: Move chk_irq_status_cnt from ath6kl_device to htc_target ath6kl: Remove unused struct ath6kl_async_reg_io_buffer ath6kl: Cleanup void *parent_dev in struct wmi ath6kl: Move scan table from wmi to ath6kl ath6kl: Cleanup parameters for wlan_refresh_inactive_nodes() ath6kl: Remove bssid from struct wmi ath6kl: Remove ath6kl_wmi_get_current_bssid() ath6kl: Cleanup parameters of wlan_node_table_init() ath6kl: Move initialization/deinitialization of scan_table to appropriate functions ath6kl: Pass only the needed scan_table to ath6kl_wmi_iterate_nodes() ath6kl: Remove ath6kl_wmi_iterate_nodes() ath6kl: Use ath6kl_cfg80211_scan_node() directly instead of function pointer ath6kl: Cleanup void * in ath6kl_cfg80211_scan_node() ath6kl: Release ar->lock right afer updating net_stats in ath6kl_rx() ath6kl: Minor cleanup in min_hdr_len computation ath6kl: Cleanup ath6kl_wmi_data_hdr_remove() ath6kl: Fix bug in computing AMSU subframe padding ath6kl: Fix buffer alignment for scatter-gather I/O ath6kl: Fix system freeze under heavy data load ath6kl: Remove unused meta_v2 from ath6kl_data_tx() ath6kl: Add wmi meta data information only it is available ath6kl: Avoid rolling back of entire scatter setup in case of failure ath6kl: Add initial debugfs changes ath6kl: Add debugfs entry to dump target stats ath6kl: Add debugfs file entry to dump credit distribution stats ath6kl: Add debugfs interface to dump diagnostic registers from firmware ath6kl: Fix endianness in requesting chip register read ath6kl: Make ath6kl_diag_write32() non-static ath6kl: Fix endianness in register write ath6kl: Add debugfs support to write a chip register ath6kl: Remove auth type fall back in auto authentication mode ath6kl: Set the sme_state to disconnected in disconnect() callback ath6kl: Fix disconnect event reporting ath6kl: Remove unnecessary retrieval of first list entry in ath6kl_htc_tx_setup_scat_list() Vasiliy Kulikov (2): mm: restrict access to slab files under procfs and sysfs proc: fix races against execve() of /proc/PID/fd** Vasily Averin (2): ipv4: NET_IPV4_ROUTE_GC_INTERVAL removal watchdog: move watchdog_*_all_cpus under CONFIG_SYSCTL Vasu Dev (9): ixgbe: disable LLI for FCoE [SCSI] libfc: cache align struct fc_fcp_pkt fields [SCSI] libfc: cache align struct fc_exch fields [SCSI] libfc: cache align fc_exch_pool [SCSI] fcoe: use real dev in case of HW vlan acceleration [SCSI] fcoe: setup default initial value for DDP threshold [SCSI] libfc: fix checking FC_TYPE_BLS [SCSI] libfc: avoid exchanges collision during lport reset [SCSI] libfc: improve flogi retries to avoid lport stuck Venkat Subbiah (1): watchdog: Octeon: Mark octeon_wdt interrupt as IRQF_NO_THREAD Venkatraman S (2): mmc: queue: declare mmc_alloc_sg as static mmc: fix integer assignments to pointer Vikas Chaudhary (13): [SCSI] qla4xxx: Added new "struct ipaddress_config" [SCSI] qla4xxx: added support to show multiple iface in sysfs [SCSI] qla4xxx: Add VLAN support [SCSI] qla4xxx: add bsg support [SCSI] scsi_transport_iscsi: Added support to update mtu [SCSI] qla4xxx: Added support to update mtu [SCSI] qla4xxx: Added vendor specific sysfs attributes [SCSI] scsi_transport_iscsi: Added support to update initiator iscsi port [SCSI] qla4xxx: added support to update initiator iscsi port [SCSI] scsi: Added support for adapter and firmware reset [SCSI] qla4xxx: Added support for adapter and firmware reset [SCSI] qla4xxx: Update license [SCSI] qla4xxx: Update driver version to 5.02.00-k8 Vincent Abel-Grimalt (1): Staging : winbond : fix coding style issue in phy_calibration.c Vincent Guittot (2): ARM: 7011/1: Add ARM cpu topology definition [CPUFREQ] ARM: ux500: send cpufreq notification for all cpus Vincent Palatin (1): usb-storage: fix realtek cr configuration Vinicius Costa Gomes (15): Bluetooth: Reset the security timer when a command is queued Bluetooth: Add a flag to indicate that SMP is going on Bluetooth: Use the same timeouts for both ACL and LE links Bluetooth: Add support for pairing via mgmt over LE Bluetooth: Add support for running SMP without a socket Bluetooth: Add link_type information to the mgmt Connected event Bluetooth: Move SMP fields to a separate structure Bluetooth: Move SMP crypto functions to a workqueue Bluetooth: Require authentication if MITM protection is requested Bluetooth: Use the MEDIUM security level for pairings Bluetooth: Fix sending wrong authentication requirements Bluetooth: Use the LTK after receiving a LE Security Request Revert "Bluetooth: Add support for communicating keys with userspace" Bluetooth: Fix not setting a pending security level Bluetooth: Remove support for other SMP keys than the LTK Vinod Koul (5): dmaengine: add helper function for slave_single dmaengine: remove struct scatterlist for header Merge branch 'next' into v3.1-rc4 Merge branch 'samsung_dma' into next dmaengine: mid_dma: mask_peripheral_interrupt only when dmac is idle Viresh Kumar (27): dmaengine/dmatest: Terminate transfers on all channels in case of error or exit ARM: asm/pl080.h: Protect against multiple inclusion of header file dmaengine/amba-pl08x: Resolve formatting issues dmaengine/amba-pl08x: Rearrange inclusion of header files in ascending order dmaengine/amba-pl08x: pass (*ptr) to sizeof() instead of (struct xyz) dmaengine/amba-pl08x: Complete doc comment for struct pl08x_txd dmaengine/amba-pl08x: Remove redundant comment and rewrite original dmaengine/amba-pl08x: Changing few prints to dev_dbg from dev_info dmaengine/amba-pl08x: support runtime PM dmaengine/amba-pl08x: Simplify pl08x_ensure_on() dmaengine/amba-pl08x: No need to check "ch->signal < 0" dmaengine/amba-pl08x: Schedule tasklet in case of error interrupt dmaengine/amba-pl08x: Get rid of pl08x_pre_boundary() dmaengine/amba-pl08x: max_bytes_per_lli is TRANSFER_SIZE * src_width (not MIN(width)) dmaengine/amba-pl08x: Add prep_single_byte_llis() routine dmaengine/amba-pl08x: Align lli_len to max(src.width, dst.width) dmaengine/amba-pl08x: Choose peripheral bus as master bus dmaengine/amba-pl08x: Pass flow controller information with slave channel data dmaengine/amba-pl08x: Call pl08x_free_txd() instead of calling kfree() directly dmaengine/amba-pl08x: Add support for sg len greater than one for slave transfers dmaengine/amba-pl08x: Check txd->llis_va before freeing dma_pool spi/spi-pl022: Resolve formatting issues spi/spi-pl022: Use GFP_ATOMIC for allocation from tasklet spi/spi-pl022: Don't allocate more sg than required. spi/spi-pl022: calculate_effective_freq() must set rate <= requested rate spi/spi-pl022: Call pl022_dma_remove(pl022) only if enable_dma is true mmc: sdhci-spear: Don't set power gpio to 1 on probe Virupax Sadashivpetimath (1): mfd: Add ab8500 interrupt disable hook Vitaliy Ivanov (3): treewide: typo 'interrrupt' word corrections. async: uninitialized warning corrections futex: uninitialized warning corrections Vivek Goyal (2): blk-throttle: Free up policy node associated with deleted rule blk-throttle: Take blkcg->lock while traversing blkcg->policy_list Vivek Natarajan (5): ath6kl: Add debugfs entry to modify roaming parameters. ath6kl: Process regulatory requests from firmware. cfg80211/nl80211: Indicate roaming feature capability to userspace. ath6kl: deinitialise wiphy on error ath6kl: Indicate the roaming capability of the firmware Vladimir Zapolskiy (6): ARM: EXYNOS4: use dma-pl330 device name for clock ARM: S5PC100: use dma-pl330 device name for clock ARM: S5PV210: use dma-pl330 device name for clock dm9000: define debug level as a module parameter connector: add comm change event report to proc connector staging: tidspbridge: MMU2 registers are limited to 32-bit data access WANG Cong (9): nbd: use task_pid_nr() to get current pid nbd: replace sysfs_create_file() with device_create_file() nbd: replace printk KERN_ERR with dev_err() nbd: lower the loglevel of an error message nbd: replace some printk with dev_warn() and dev_info() cris: fix a build error in drivers/tty/serial/crisv10.c cris: lower the printk level in cris serial driver MAINTAINERS: Update linux-pm list address sysctl: make CONFIG_SYSCTL_SYSCALL default to n Waldemar Rymarkiewicz (1): Bluetooth: Fix possible NULL pointer dereference Wang Shaoyan (2): viafb: fix pointer type missmatch viafb: replace strict_strtoul to kstrto* and check return value Wang Sheng-Hui (7): elevator: use ELV_NAME_MAX instead of magic number 16 for chosen_elevator trival: md_k.h should be md.h in the beginning comment of file md.h cleanup: vfs: small comment fix for block_invalidatepage lib/idr.c: fix comment for ida_get_new_above() virtio.h: correct comment for struct virtio_driver virtio: modify vring_init and vring_size to take account of the layout containing *_event_idx Documentation: drop as block elevator reference in switching-sched.txt Wang Xingchao (1): sched: Remove redundant test in check_preempt_tick() Wanlong Gao (7): USB: otg: remove unused function twl6030_set_phy_clk drivers:uio:change the goto label to consistent with others drivers:uio:fix section mismatch in uio_pdrv_genirq.c Input: ad714x-i2c - change placement of __init/__exit annotations mfd: Fix section mismatch warning in ab3550-core ipc/mqueue.c: fix wrong use of schedule_hrtimeout_range_clock() ksm: fix the comment of try_to_unmap_one() Wayne Boyer (2): [SCSI] ipr: Add support to flash FPGA and flash back DRAM images [SCSI] ipr: add definitions for additional adapter Weiping Pan (1): bonding:update speed/duplex for NETDEV_CHANGE Wey-Yi Guy (45): iwlagn: default smps mode for 1000 series device iwlagn: Remove ht40 support from 5.2GHz for _bgn devices iwlagn: change default sensitivity value for 5000 and 6000 series iwlagn: support v2 of enhanced sensitivity table iwlagn: Rename iwlcore prefix iwlagn: remove out-dated comments iwlagn: enable 11n aggregation without checking traffic load iwlagn: support small form factor SKU of 6205 iwlagn: more comments for bt channel inhibition iwlagn: add comments to module parameters iwlagn: adding special "D" SKU for 2000 series iwlagn: only perform necessary calibration at init time iwlagn: disply queue read/write pointer when stuck iwlagn: enable 11n support for "_d" sku iwlagn: remove lines from the wrong place iwlagn: New SKU for 6005 SFF iwlagn: merge eeprom access into single file iwlagn: add support for v2 of temperature offset calibration iwlagn: use iwl_eeprom_calib_hdr structure iwlagn: fix stack corruption for temperature offset v2 iwlagn: signedness bug MAINTAINERS: update iwlwifi iwlagn: add debugging to show probe related info in scan notification iwlagn: separate init calib and rt calib iwlagn: add cmd queue pointer info when timeout iwlagn: add REPLY_ECHO host command iwlagn: add WARN if tx cmd complete come back late iwlagn: add "echo" test when command queue stuck iwlagn: check rf kill in queue stuck iwlagn: add "echo test" command to debugfs iwlagn: remove un-necessary step iwlagn: set rts retry limit iwlagn: add "_d" sku to 6005 series of devices iwlagn: Add "_d" sku to 105 series of devices iwlagn: do nothing when disable agg in wrong state iwlagn: use low retry limit for WoWLAN iwlwifi: update comments on how to enable debug flag iwlagn: more info on warning for shutdown agg queue iwlagn: don't stop rts/cts until last aggregation queue close iwlagn: add debug for mac80211 callback iwlagn: rename all the mac80211 callback functions iwlagn: merge station management functions iwlagn: rename iwl-rx.c to iwl-agn-rx.c iwlwifi: allow pci_enable_msi fail iwlwifi: don't perform "echo test" when cmd queue stuck Will Deacon (29): ARM: PMU: move CPU PMU platform device handling and init into perf ARM: perf: use cpumask_t to record active IRQs ARM: perf: use u32 instead of unsigned long for PMNC register ARM: perf: use integers for ARMv7 event indices ARM: perf: index ARMv7 event counters starting from zero ARM: perf: index Xscale and ARMv6 event counters starting from zero ARM: perf: index PMU registers from zero ARM: perf: allow armpmu to implement mode exclusion ARM: perf: add mode exclusion for Cortex-A15 PMU ARM: hw_breakpoint: add initial Cortex-A15 (debug v7.1) support ARM: hw_breakpoint: reserve one breakpoint for watchpoint stepping ARM: hw_breakpoint: add support for multiple watchpoints ARM: hw_breakpoint: trap undef instruction exceptions in reset_ctrl_regs ARM: hw_breakpoint: reduce the number of WARN_ONCE invocations Merge branches 'hwbreak', 'perf/updates' and 'perf/system-pmus' into for-rmk ARM: 7127/1: hw_breakpoint: skip v7-specific reset on v6 cores ARM: 7060/1: smp: populate logical CPU mapping during boot ARM: 7061/1: gic: convert logical CPU numbers into physical numbers ARM: 7072/1: debug: use kconfig choice for selecting DEBUG_LL UART ARM: 7073/1: debug: augment DEBUG_LL Kconfig help to clarify behaviour ARM: 7116/1: debug: provide dummy default option for DEBUG_LL UART choice ARM: 7062/1: cache: detect PIPT I-cache using CTR ARM: exynos4: convert logical CPU numbers to physical numbers ARM: msm: convert logical CPU numbers to physical numbers ARM: shmobile: convert logical CPU numbers to physical numbers ARM: ux500: convert logical CPU numbers to physical numbers ARM: versatile: convert logical CPU numbers to physical numbers ARM: plat-samsung: use Kconfig choice for debug UART selection ARM: realview: use Kconfig choice for debug UART selection Will Drewry (1): init: add root=PARTUUID=UUID/PARTNROFF=%d support William Douglas (2): printk: fix bounds checking for log_prefix printk: remove bounds checking for log_prefix William Light (2): ALSA: snd-usb-caiaq: Fix NULL dereference in input.c ALSA: snd-usb-caiaq: Add support for Maschine Williams, Mitch A (2): igbvf: Update module identification strings igbvf: Bump version number Wim Van Sebroeck (1): watchdog: iTCO_wdt.c - problems with newer hardware due to SMI clearing Witold Szczeponik (1): PNPACPI: Simplify disabled resource registration Wolfgang Grandegger (1): can/sja1000: driver for PEAK PCAN PCI/PCIe cards Wolfram Sang (20): video: s3c2410: remove unused variable arm: mxs: mx28evk: add fixed regulators for audio arm: mach-mxs: add device for rtc arm: mach-mxs: add rtc to all boards staging/olpc_dcon: Remove obsolete cleanup for clientdata ASoC: imx-ssi: use dma_writecombine consistently ASoC: imx: use more robust checking of available streams gpio: move mpc8xxx/512x gpio driver to drivers/gpio powerpc: update 512x-defconfig [media] gspca - zc3xx: New webcam 03f0:1b07 HP Premium Starter Cam drivers: base: print rejected matches with DEBUG_DRIVER ASoC: tlv320aic32x4 fix initialization of micpga routing arm: mx3: update defconfig ASoC: Fix typo in Kconfig symbol for tlv320aic32x4 mtd: tests: don't use mtd0 as a default mtd: tests: annotate as DANGEROUS in Kconfig video/backlight: remove obsolete cleanup for clientdata drivers/leds/leds-lm3530.c: remove obsolete cleanup for clientdata Documentation: watchdog: add guide how to convert drivers to new framework watchdog: s3c2410: convert to use the watchdog framework Wolfram Stering (2): mtd: mxc_nand: preset_v1_v2: unlock all NAND flash blocks mx3fb: fix NULL pointer dereference in screen blanking. Wu Fengguang (17): drm: support routines for HDMI/DP ELD drm/i915: pass ELD to HDMI/DP audio driver writeback: account per-bdi accumulated dirtied pages writeback: dirty position control writeback: add bg_threshold parameter to __bdi_update_bandwidth() writeback: dirty rate control writeback: stabilize bdi->dirty_ratelimit writeback: per task dirty rate limit writeback: IO-less balance_dirty_pages() writeback: limit max dirty pause time writeback: control dirty pause time writeback: dirty position control - bdi reserve area writeback: per-bdi background threshold writeback: fix ppc compile warnings on do_div(long long, unsigned long) writeback: trace event bdi_dirty_ratelimit writeback: trace event balance_dirty_pages writeback: fix uninitialized task_ratelimit Xiangliang Yu (8): [SCSI] mvsas: fix expander link error [SCSI] mvsas: add support for 9480 device id [SCSI] mvsas: fixed some disk spin up issue [SCSI] mvsas: fixed wrong destination when hiting NAK for command frame [SCSI] mvsas: change SL mode0 register value [SCSI] mvsas: expander write performance enhancement [SCSI] mvsas: fixed SMP request watchdog timeout issue. [SCSI] mvsas: update driver version Xiao Guangrong (3): KVM: x86: fix broken read emulation spans a page boundary KVM: x86: abstract the operation for read/write emulation KVM: x86: cleanup the code of read/write emulation Xiao Jiang (2): net/fec: replace hardcoded irq num with macro net/fec: add poll controller function for fec nic Xin Xie (1): regulator: tps6586x: add SMx slew rate setting Xu lei (2): USB: Fix USB Kconfig dependency problem on 85xx/QoirQ platforms mmc: sdhci-of-esdhc: Access Freescale eSDHC registers as 32-bit Yan, Zheng (3): fib_rules: fix unresolved_rules counting btrfs: check file extent backref offset underflow ipv4: fix ipsec forward performance regression Yang Ruirui (1): [media] v4l2: uvcvideo use after free bug fix Yang, Wei Y (1): KVM: MMU: Fix SMEP failure during fetch Yaniv Rosner (6): bnx2x: Add new PHY BCM54616 bnx2x: Fix LED blink rate for 578xx bnx2x: Add link retry to 578xx-KR bnx2x: Fix RX/TX problem caused by the MAC layer bnx2x: Fix 54618se LED behavior bnx2x: Enable changing speed when port type is PORT_DA Yanmin Zhang (2): printk: add module parameter ignore_loglevel to control ignore_loglevel printk: add console_suspend module parameter Yauheni Kaliuta (1): usb: gadget: file_storage: fix race on unloading Yevgeny Petrilin (6): mlx4: Fix vlan table overflow mlx4_en: Controlling FCS header removal mlx4_en: Checksum counters per ring mlx4_en: Recording rx queue for gro packets mlx4_en: Adding rxhash support mlx4_en: Updating driver version Ying Xue (4): tipc: Add support for SO_SNDTIMEO socket option tipc: Simplify prohibition of listen and accept for connectionless sockets tipc: Remove callback field from subscription structure tipc: Remove unused link event tracking code Yinghai Lu (6): x86, ioapic: Pass struct irq_attr * to setup_ioapic_irq() x86, ioapic: Split up setup_ioapic_entry() x86, ioapic: Print out irte with right ioapic index x86, ioapic: Factor out print_IO_APIC() to only print one io apic x86, ioapic: Clean up ioapic/apic_id usage x86/irq: Standardize on CONFIG_SPARSE_IRQ=y Yogesh Ashok Powar (5): cfg80211/mac80211: move information element parsing logic to cfg80211 mwl8k: Set hardware flag IEEE80211_HW_AP_LINK_PS mwifiex: replace kmalloc & memcpy sequence with kmemdup mwifiex: add cfg80211 handlers add/del_virtual_intf mwifiex: fix smatch errors Yong Zhang (20): sched: Kill WAKEUP_PREEMPT sched/cpupri: Remove cpupri->pri_active Input: remove IRQF_DISABLED from drivers lib: atomic64: Change the type of local lock to raw_spinlock_t staging: irq: Remove IRQF_DISABLED USB: irq: Remove IRQF_DISABLED sound: irq: Remove IRQF_DISABLED TTY: irq: Remove IRQF_DISABLED video: irq: Remove IRQF_DISABLED IB/ehca: Remove IRQF_DISABLED, since it's a no-op ata: irq: Remove IRQF_DISABLED mfd: Remove IRQF_DISABLED spi: irq: Remove IRQF_DISABLED sony-laptop:irq: Remove IRQF_DISABLED hwmon: (exynos4_tmu) Remove IRQF_DISABLED Blackfin: irq: remove IRQF_DISABLED mmc: irq: Remove IRQF_DISABLED SH: irq: Remove IRQF_DISABLED i2c: irq: Remove IRQF_DISABLED watchdog: irq: Remove IRQF_DISABLED Yongqiang Yang (9): ext4: let ext4_page_mkwrite stop started handle in failure ext4: move variables to their scope ext4: clean up AGGRESSIVE_TEST code ext4: trace punch_hole correctly in ext4_ext_map_blocks ext4: move vars to local scope in ext4_discard_partial_page_buffers_no_lock() ext4: return ENOMEM if find_or_create_pages fails ext4: let ext4_discard_partial_buffers handle unaligned range correctly ext4: fix a syntax error in ext4_ext_insert_extent when debugging enabled ext4: let ext4_ext_rm_leaf work with EXT_DEBUG defined Yoshihiro Shimoda (10): net: sh_eth: use ioremap() sh: modify prototype in sh_eth.h net: sh_eth: move the asm/sh_eth.h to include/linux/ net: sh_eth: fix build failure usb: gadget: r8a66597-udc: change prototype of r8a66597_write_fifo usb: gadget: r8a66597-udc: add function for external controller usb: gadget: r8a66597-udc: use dev_*() instead of printk() usb: gadget: r8a66597-udc: add support for SUDMAC sh: add parameters for EHCI and RIIC in clock-sh7757.c sh: modify the asm/sh_eth.h to linux/sh_eth.h in some boards Yu Ke (1): xen/acpi: Domain0 acpi parser related platform hypercall Yu Tang (1): [media] media: vb2: fix userptr VMA release seq Zack Parsons (2): usb: misc: usbled: fixed coding style issues usb: misc: usblcd: fixed coding style issues Zhao Jin (1): x86, mm, trivial: Remove unnecessary get_order() in free_thread_info() Zheng Yan (1): ipv6: fix error propagation in ip6_ufo_append_data() Zhi Li (1): capabilities: do not grant full privs for setuid w/ file caps + no effective caps Zhiwu Song (1): ARM: CSR: add rtc i/o bridge interface for SiRFprimaII adam radford (11): [SCSI] megaraid_sas: Continue booting immediately if FW in FAULT at driver load time [SCSI] megaraid_sas: Increase default cmds per lun to 256 [SCSI] megaraid_sas: Fix mismatch in megasas_reset_fusion() mutex lock-unlock [SCSI] megaraid_sas: Remove some unnecessary code [SCSI] megaraid_sas: Clear state change interrupts [SCSI] megaraid_sas: Clear FUSION_IN_RESET before enabling interrupts [SCSI] megaraid_sas: Add support for MegaRAID 9360/9380 12GB/s controllers [SCSI] megaraid_sas: Add multiple MSI-X vector/multiple reply queue support [SCSI] megaraid_sas: Add driver workaround for PERC5/1068 kdump kernel panic [SCSI] megaraid_sas: Changelog and version update [SCSI] megaraid_sas: Fix instance access in megasas_reset_timer alex.bluesman.smirnov@gmail.com (1): 6LoWPAN: fix skb_copy call brenohl@br.ibm.com (1): ehea: Remove sleep at .ndo_get_stats chetan loke (3): af-packet: Added TPACKET_V3 headers. af-packet: TPACKET_V3 flexible buffer implementation. af_packet: Prefixed tpacket_v3 structs to avoid name space collision danborkmann@iogearbox.net (1): af_packet: remove unnecessary BUG_ON() in tpacket_destruct_skb david decotigny (3): forcedeth: fix race when unloading module forcedeth: remove unneeded stats updates forcedeth: fix a few sparse warnings (variable shadowing) edwin_rong (2): Staging: add driver for Realtek RTS5139 cardreader USB: Realtek cr: Fix driver freeze issue frank.blaschka@de.ibm.com (2): qdio: support asynchronous delivery of storage blocks qdio: support forced signal adapter indications françois romieu (10): via-velocity : update receive packets statistics. via-velocity : ethtool statistics support. via-velocity : cleanups. bnx2: don't request firmware when there's no userspace. atm/iphase : removal of PCI space dereferences. sc92031: use standard #defines from mii.h. rtl8150: removal of forward declarations. drivers/net/ethernet: remove unused #define. tehuti: shorten PCI device table. r8169: fix driver shutdown WoL regression. hank (1): time: Change jiffies_to_clock_t() argument type to unsigned long hayeswang (1): r8169: fix wrong eee setting for rlt8111evl holt@sgi.com (6): flexcan: Remove #include flexcan: Abstract off read/write for big/little endian. flexcan: Fix up fsl-flexcan device tree binding. flexcan: Add of_match to platform_device definition. flexcan: Prefer device tree clock frequency if available. flexcan: Add flexcan device support for p1010rdb. huajun li (1): net/flow: Fix potential memory leak istvan_v@mailbox.hu (1): [media] cx88: notch filter control fixes johnnyhsu@realtek.com (1): ASoC: Add driver for rt5631 kashyap.desai@lsi.com (6): [SCSI] mptfusion: Set max sector count module parameter [SCSI] mptfusion: Better handling of DEAD IOC PCI-E Link down error condition [SCSI] mptfusion: Avoid out of order Event processing due to cpu migration [SCSI] mptfusion: Bump version 3.4.20 [SCSI] mpt2sas: Added missing mpt2sas_base_detach call from scsih_remove context [SCSI] mptfusion: Fix for device offline while doing aggressive HBA reset kuninori.morimoto.gx@renesas.com (2): usb: add usb_endpoint_maxp() macro usb: renesas_usbhs: use usb_endpoint_maxp() nagalakshmi.nandigama@lsi.com (13): [SCSI] mpt2sas: Added NUNA IO support in driver which uses multi-reply queue support of the HBA [SCSI] mpt2sas: Bump driver version 09.100.00.01 [SCSI] mptfusion: Added check for SILI bit in READ_16 CDB for DATA UNDERRUN ERRATA [SCSI] mpt2sas: MPI next revision header update [SCSI] mpt2sas: New feature - Fast Load Support [SCSI] mpt2sas: Fix for system hang when discovery in progress [SCSI] mpt2sas: Fix failure message displayed during diag reset [SCSI] mpt2sas: Fix drives not getting properly deleted if sas cable is removed while host reset is active [SCSI] mpt2sas: Fix for dead lock occurring between host_lock and sas_device_lock [SCSI] mpt2sas: Fix for deadlock between hot plug worker threads and host reset context [SCSI] mpt2sas: Fix for issue Port Reset taking long time(around 5 mins) to complete while issued during creating a volume [SCSI] mpt2sas: Fix for Panic when inactive volume is tried deleting [SCSI] mpt2sas: Bump driver version to 10.100.00.00 rongqing.li@windriver.com (1): security: Fix a typo roy.qing.li@gmail.com (1): neigh: fix rcu splat in neigh_update() sifram.rajas@gmail.com (1): xhci: Redundant check in xhci_check_args for xhci->devs sjur.brandeland@stericsson.com (1): caif-hsi: HSI Fix uninitialized data in HSI header sricharan (3): OMAP: Fix indentation issues in l3 error handler. OMAP: Fix sparse warnings in l3 error handler. OMAP: Print Initiator name for l3 custom error. srimugunthan dhandapani (1): UBIFS: fix the dark space calculation srinidhi kasagar (1): ARM: mach-ux500: enable fix for ARM errata 754322 stephen hemminger (11): wan: make LAPB callbacks const pcnet32: constify function table bna: make function tables cont vxge: make function table const sky2: manage irq better on single port card bridge: fix ordering of NEWLINK and NEWNEIGH events bridge: allow updating existing fdb entries bridge: allow forwarding some link local frames bridge: fix hang on removal of bridge via netlink macvlan: receive multicast with local address sky2: fix regression on Yukon Optima susan gao (1): ASoC: Add 3D stereo support for wm8996 tvboxspy (5): [media] STV0288 frontend provide wider carrier search and DVB-S2 drop out. resend [media] [1/2,ver,1.89] DM04/QQBOX Interupt Urb and Timing changes [media] [2/2,ver,1.90] DM04/QQBOX Reduce USB buffer size [media] it913x: add remote control support [media] it913x-fe: correct tuner settings venu byravarasu (1): PM / Runtime: Fix runtime accounting calculation error wwang (1): staging:rts_pstor:Fix SDIO issue zero.lin (1): rt2x00: Add new chipset support Émeric Maschino (1): [IA64] agp/hp-agp: Allow binding user memory to the AGP GART Éric Piel (9): lis3lv02d: avoid divide by zero due to unchecked lis3: update maintainer information lis3: add support for HP EliteBook 2730p lis3: add support for HP EliteBook 8540w hp_accel: add HP ProBook 655x lis3: free regulators if probe() fails lis3: use consistent naming of variables lis3: change exported function to use passed parameter lis3: remove the references to the global variable in core driver ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From xfs-bounces@oss.sgi.com Tue Nov 8 17:22:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8NITJv162468 for ; Tue, 8 Nov 2011 17:18:29 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Subject: Your message to xfs awaits moderator approval From: xfs-bounces@oss.sgi.com To: xfs@oss.sgi.com Message-ID: Date: Tue, 08 Nov 2011 17:18:28 -0600 Precedence: bulk X-BeenThere: xfs@oss.sgi.com X-Mailman-Version: 2.1.11 List-Id: XFS Filesystem from SGI X-List-Administrivia: yes Sender: xfs-bounces@oss.sgi.com Errors-To: xfs-bounces@oss.sgi.com Your mail to 'xfs' with the subject [XFS updates] XFS development tree annotated tag, v3.2-rc1, created. v3.2-rc1 Is being held until the list moderator can review it for approval. The reason it is being held: Message body is too big: 665677 bytes with a limit of 500 KB Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://oss.sgi.com/mailman/confirm/xfs/058b1ba1d3c2ad6c9d9b3671aac10e5ca37d7319 From loforbes@alaska.edu Tue Nov 8 17:49:26 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_31 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA8NnQ9o164897 for ; Tue, 8 Nov 2011 17:49:26 -0600 X-ASG-Debug-ID: 1320796165-070e020a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-vx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6672E1CF5D3F for ; Tue, 8 Nov 2011 15:49:25 -0800 (PST) Received: from mail-vx0-f181.google.com (mail-vx0-f181.google.com [209.85.220.181]) by cuda.sgi.com with ESMTP id 5V0DNefyO1rnmkiH for ; Tue, 08 Nov 2011 15:49:25 -0800 (PST) Received: by vcbfk26 with SMTP id fk26so1167259vcb.26 for ; Tue, 08 Nov 2011 15:49:24 -0800 (PST) MIME-Version: 1.0 Received: by 10.52.16.83 with SMTP id e19mr16247087vdd.119.1320796164868; Tue, 08 Nov 2011 15:49:24 -0800 (PST) Received: by 10.52.90.19 with HTTP; Tue, 8 Nov 2011 15:49:24 -0800 (PST) In-Reply-To: <20111108225513.GO5534@dastard> References: <20111108225513.GO5534@dastard> Date: Tue, 8 Nov 2011 14:49:24 -0900 Message-ID: X-ASG-Orig-Subj: Re: quota mismatch for NFS mount of XFS filesystem Subject: Re: quota mismatch for NFS mount of XFS filesystem From: Liam Forbes To: Dave Chinner Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-vx0-f181.google.com[209.85.220.181] X-Barracuda-Start-Time: 1320796165 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1130 1.0000 -1.3153 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.32 X-Barracuda-Spam-Status: No, SCORE=-1.32 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79716 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 8, 2011 at 1:55 PM, Dave Chinner wrote: > > That looks like a 32bit variable overflow. In 512 byte blocks > (sectors), 2^32 sectors overflows at 2T. And 5.8T ~=3D 2T + 2T + 1.8T. > > This is most likely to be an NFS issue - I'm not familiar with the > Linux NFS quota protocol implementation, so I can't really say much > more than that. Additional ad hoc testing seems to bear this out. Thanks! I'll take the problem to Red Hat. --=20 Regards, -liam -There are uncountably more irrational fears than rational ones. -P. Dolan Liam Forbes=A0 =A0 =A0=A0 HPC Systems Analyst,=A0 =A0 =A0 HPC&S Group Leade= r,=A0 =A0 =A0 CISSP ARSC, U of AK, Fairbanks=A0=A0 lforbes@arsc.edu 907-450-8618 fax: 907-450-8= 605 From amit.sahrawat83@gmail.com Tue Nov 8 23:28:39 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,FREEMAIL_FROM, J_CHICKENPOX_22,J_CHICKENPOX_24,J_CHICKENPOX_43,J_CHICKENPOX_52, J_CHICKENPOX_56,J_CHICKENPOX_64,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA95ScuF193512 for ; Tue, 8 Nov 2011 23:28:38 -0600 X-ASG-Debug-ID: 1320816516-2bb300190000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5CE851CF75EE for ; Tue, 8 Nov 2011 21:28:36 -0800 (PST) Received: from mail-fx0-f53.google.com (mail-fx0-f53.google.com [209.85.161.53]) by cuda.sgi.com with ESMTP id esxvAYC5quj1XWZz for ; Tue, 08 Nov 2011 21:28:36 -0800 (PST) Received: by faan15 with SMTP id n15so1483157faa.26 for ; Tue, 08 Nov 2011 21:28:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=Z5fjDl2ppJGCf0xvoHdYNyboT2ZN1q7yCqm65g33cy0=; b=kJG2m2tAHLT0jxVFa30PfMS8mVRTOs2mdJEC42Xj8ltp1qGbUYmjXOGH7sTtJdJzS0 KJ6oiAkd/tApH4HQbui7V9wBFuifypy0Fhhv4/kv0Zg1RHDs4PETV2EQ2KNCRcGuMAQs kAO2F34GlVjThLFseYIRqn+a1NtmXgAvtOCrs= MIME-Version: 1.0 Received: by 10.152.109.48 with SMTP id hp16mr458904lab.38.1320816043126; Tue, 08 Nov 2011 21:20:43 -0800 (PST) Received: by 10.152.10.35 with HTTP; Tue, 8 Nov 2011 21:20:43 -0800 (PST) In-Reply-To: References: Date: Wed, 9 Nov 2011 10:50:43 +0530 Message-ID: X-ASG-Orig-Subj: Re: XFS realtime O_DIRECT failures Subject: Re: XFS realtime O_DIRECT failures From: Amit Sahrawat To: Alan Cook Cc: linux-xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-fx0-f53.google.com[209.85.161.53] X-Barracuda-Start-Time: 1320816517 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79732 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Alan, On Tue, Nov 8, 2011 at 11:07 PM, Alan Cook w= rote: > I am having issues using the O_DIRECT flags for writing to files that res= ide on > the realtime subvolume of an XFS file system. =A0I have found a failure c= ase for > xfstests test 090 as well as another case that I will describe below. > > For test 090, I have the following setup: > > mkfs.xfs -f -llogdev=3D/dev/ram1 -rrtdev=3D/dev/ram2 -bsize=3D4096 /dev/r= am0 > mount -t xfs -o attr2,rtdev=3D/dev/ram2,logdev=3D/dev/ram1 /dev/ram0 /mnt= /test > > mkfs.xfs -f -llogdev=3D/dev/ram4 -rrtdev=3D/dev/ram5 -bsize=3D4096 /dev/r= am3 > mount -t xfs -o attr2,rtdev=3D/dev/ram5,logdev=3D/dev/ram4 /dev/ram3 \ > =A0 =A0/mnt/test-scratch > > I have the following local.config in xfstests: > #!/bin/bash > export TEST_DEV=3D"/dev/ram0" > export TEST_MNT=3D"/mnt/test" > export TEST_DIR=3D"/mnt/test" > export TEST_LOGDEV=3D"/dev/ram1" > export TEST_RTDEV=3D"/dev/ram2" > export SCRATCH_DEV=3D"/dev/ram3" > export SCRATCH_MNT=3D"/mnt/test-scratch" > export SCRATCH_LOGDEV=3D"/dev/ram4" > export SCRATCH_RTDEV=3D"/dev/ram5" > export USE_EXTERNAL=3D"yes" > > All devices are ramdisks. > > I find with the above setup, when I run 'xfstests/check 090', the test wi= ll > block indefinitely on I/O for the first iteration of the test. =A0This te= st was > run using the latest code from the xfstests git repo and xfs git repo (ke= rnel > 3.1.0-rc9). > > For the other failure scenario, I have the following setup: > > mkfs.xfs -f -llogdev=3D/dev/ram1 -rrtdev=3D/dev/ram2 -bsize=3D4096 /dev/r= am0 > mount -t xfs -o attr2,rtdev=3D/dev/ram2,logdev=3D/dev/ram1 /dev/ram0 /mnt= /test > xfs_io -c 'chattr +t' /mnt/test > > I have setup all files under /mnt/test to be placed in the realtime porti= on > using the realtime inherit flag set through xfs_io. =A0If I do not use th= e flag > and instead create the file using xfs_io and 'pwrite', I still encounter = the > same issue O_DIRECT hang issue. > > Using a fairly simple C application (below), the call to write() will han= g the > system indefinitely on kernel 2.6.32, or cause the kernel to kill the pro= cess on > kernel 3.1.0-rc9 reporting a NULL pointer dereference (message below). = =A0I have > traced the issue back to the use of the O_DIRECT and O_TRUNC flags. =A0If= the file > to write to has been preallocated using xfs_io's 'pwrite' and 'truncate', > omitting the O_TRUNC flag will allow the test application to complete wit= hout > issue. =A0As I understand it, the realtime subvolume has no requirements = that all > files be preallocated. =A0Omitting the O_DIRECT flag will also allow the = test to > complete without issue, but with absolutely terrible I/O performance. > > Have I uncovered a legitimate or known bug or is there something wrong wi= th my > XFS setup? > > I can supply more information if needed. =A0Thanks for any help. > > ---- > > Kernel 3.1.0-rc9 reports a NULL pointer dereference: > > [ =A0657.406892] BUG: unable to handle kernel NULL pointer dereference at > 0000000000000090 > [ =A0657.406905] IP: [] _raw_spin_lock+0x9/0x20 > [ =A0657.406918] PGD 113f2e067 PUD 1144b3067 PMD 0 > [ =A0657.406926] Oops: 0002 [#1] SMP > [ =A0657.406932] CPU 0 > [ =A0657.406935] Modules linked in: xfs exportfs brd binfmt_misc snd_pcm_= oss ... > [ =A0657.407008] > [ =A0657.407012] Pid: 4573, comm: write-bench Not tainted 3.1.0-rc9-0.5-a= cook-xfs > #1 Gigabyte Technology Co., Ltd. X58A-UD3R/X58A-UD3R > [ =A0657.407020] RIP: 0010:[] =A0[] > _raw_spin_lock+0x9/0x20 > [ =A0657.407027] RSP: 0018:ffff880115d83478 =A0EFLAGS: 00010246 > [ =A0657.407031] RAX: 0000000000010000 RBX: 0000000000000000 RCX: 0000000= 000000003 > [ =A0657.407036] RDX: 0000000000000001 RSI: 000000004008aec1 RDI: 0000000= 000000090 > [ =A0657.407040] RBP: ffff880115d83478 R08: ffff880037407280 R09: 0000000= 000000000 > [ =A0657.407044] R10: 0000000000000001 R11: 0000000000000000 R12: 0080115= d82000000 > [ =A0657.407048] R13: 0000000000001000 R14: 0000000000000000 R15: 0000000= 000000000 > [ =A0657.407053] FS: =A000007f0a00ec3700(0000) GS:ffff88011fc00000(0000) > knlGS:0000000000000000 > [ =A0657.407058] CS: =A00010 DS: 0000 ES: 0000 CR0: 0000000080050033 > [ =A0657.407062] CR2: 0000000000000090 CR3: 000000010df5d000 CR4: 0000000= 0000006f0 > [ =A0657.407066] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000= 000000000 > [ =A0657.407071] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000= 000000400 > [ =A0657.407076] Process write-bench (pid: 4573, threadinfo ffff880115d82= 000, task > ffff880119720240) > [ =A0657.407080] Stack: > [ =A0657.407082] =A0ffff880115d834d8 ffffffffa03b9954 0000000000000001 00= 00000000000 > 090 > [ =A0657.407088] =A00002800900000000 ffff88003741a400 000000004008aec1 00= 00000000000 > 000 > [ =A0657.407094] =A00000000000000008 00004008aec10000 0000000000028009 ff= ff8801161d4 > c80 > [ =A0657.407101] Call Trace: > [ =A0657.407117] =A0[] _xfs_buf_find+0x64/0x1e0 [xfs] > [ =A0657.407129] =A0[] xfs_buf_get+0x30/0x160 [xfs] > [ =A0657.407140] =A0[] xfs_buf_read+0x16/0xa0 [xfs] > [ =A0657.407158] =A0[] xfs_trans_read_buf+0x1a0/0x2a0 [= xfs] > [ =A0657.407174] =A0[] xfs_rtbuf_get+0xcf/0xf0 [xfs] > [ =A0657.407180] =A0[] ? brd_make_request+0x54/0x4ac [b= rd] > [ =A0657.407196] =A0[] xfs_rtget_summary+0x7a/0x110 [xf= s] > [ =A0657.407203] =A0[] ? generic_make_request+0x2f0/0x3= b0 > [ =A0657.407220] =A0[] xfs_rtallocate_extent_size+0x82/= 0x2b0 [xfs] > [ =A0657.407235] =A0[] ? kmem_zone_alloc+0x77/0xe0 [xfs= ] > [ =A0657.407252] =A0[] xfs_rtallocate_extent+0x140/0x1a= 0 [xfs] > [ =A0657.407269] =A0[] ? xfs_trans_add_item+0x28/0x70 [= xfs] > [ =A0657.407286] =A0[] xfs_bmap_rtalloc+0x18d/0x300 [xf= s] > [ =A0657.407303] =A0[] ? xfs_bmap_search_multi_extents+= 0x6d/0x100 > [xfs] > [ =A0657.407320] =A0[] xfs_bmap_alloc+0x35/0x40 [xfs] > [ =A0657.407337] =A0[] xfs_bmapi_allocate+0xc9/0x2c0 [x= fs] > [ =A0657.407354] =A0[] xfs_bmapi_write+0x40c/0x6f0 [xfs= ] > [ =A0657.407368] =A0[] xfs_iomap_write_direct+0x20b/0x3= a0 [xfs] > [ =A0657.407379] =A0[] __xfs_get_blocks+0x2b5/0x370 [xf= s] > [ =A0657.407389] =A0[] xfs_get_blocks_direct+0xf/0x20 [= xfs] > [ =A0657.407396] =A0[] __blockdev_direct_IO+0x5ba/0xb90 > [ =A0657.407407] =A0[] xfs_vm_direct_IO+0x9f/0x120 [xfs= ] > [ =A0657.407418] =A0[] ? __xfs_get_blocks+0x370/0x370 [= xfs] > [ =A0657.407428] =A0[] ? xfs_finish_ioend_sync+0x30/0x3= 0 [xfs] > [ =A0657.407439] =A0[] generic_file_direct_write+0xb8/0= x190 > [ =A0657.407453] =A0[] xfs_file_dio_aio_write+0x190/0x2= 70 [xfs] > [ =A0657.407469] =A0[] xfs_file_aio_write+0x252/0x260 [= xfs] > [ =A0657.407478] =A0[] ? tty_wakeup+0x3a/0x80 > [ =A0657.407486] =A0[] do_sync_write+0xd1/0x120 > [ =A0657.407495] =A0[] ? security_file_permission+0x1d/= 0xa0 > [ =A0657.407502] =A0[] vfs_write+0xcb/0x180 > [ =A0657.407509] =A0[] sys_write+0x50/0x90 > [ =A0657.407517] =A0[] system_call_fastpath+0x16/0x1b > [ =A0657.407522] Code: 90 00 00 01 00 75 04 f0 0f b1 17 0f 94 c2 0f b6 c2= 85 c0 c9 > 0f 95 c0 0f b6 c0 c3 0f 1f 80 00 00 00 00 55 b8 00 00 01 00 48 89 e5 = 0f > [ =A0657.407566] RIP =A0[] _raw_spin_lock+0x9/0x20 > [ =A0657.407574] =A0RSP > [ =A0657.407578] CR2: 0000000000000090 > [ =A0657.407590] ---[ end trace e406d45b83e0d669 ]--- > > Simple C application for testing: > > #include > #include > #define __USE_GNU > #include > > int > main(int argc, char **argv) > { > =A0 =A0int fd =3D -1; > =A0 =A0unsigned char *buffer, *buffer_orig; > =A0 =A0unsigned long size =3D 32 * 1024 * 1024; /* 32 MiB */ > =A0 =A0 =A0 =A0unsigned long i =3D 0; > > =A0 =A0if(argc < 2) { > =A0 =A0 =A0 =A0printf("%s \n", argv[0]); > =A0 =A0 =A0 =A0return 1; > =A0 =A0} > > =A0 =A0buffer_orig =3D buffer =3D malloc(size + 4096); In my opinion, this is not the way to allocate memory and use for O_DIRECT approach. Instead you can make use of valloc() or posix_memalign()/memalign Or if you are still using malloc() - then you probably did the right thing by allocating for alignment like malloc(size + 4096); but, store this is permanent pointer and make use of aligned pointer : perm_pointer =3D malloc(size +4096); For aligning you need an expression like this: align_pointer =3D (perm_pointer + 4096) & ~(4095);// If you wish to align for 512, do it like (p+512) & ~(511); > =A0 =A0if(!buffer) { > =A0 =A0 =A0 =A0perror("malloc"); > =A0 =A0 =A0 =A0return 2; > =A0 =A0} > > =A0 =A0/* open file for direct write on realtime partition */ > =A0 =A0fd =3D open(argv[1], O_TRUNC | O_CREAT | O_DIRECT | O_WRONLY, 0666= ); > =A0 =A0if(fd >=3D 0) { > > =A0 =A0 =A0 =A0/* write hangs machine, or kill process depending on kerne= l version */ > =A0 =A0 =A0 =A0if(0 > write(fd, buffer, size)) { > =A0 =A0 =A0 =A0 =A0 =A0perror("write"); > =A0 =A0 =A0 =A0} > > =A0 =A0 =A0 =A0close(fd); > =A0 =A0} > > =A0 =A0free(buffer_orig); free(perm_pointer); // freeing the original pointer which has the size history for malloc. > > =A0 =A0return 0; > } > > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > Thanks & Regards, Amit Sahrawat From BATV+7f0b0eb966118e95cc06+2999+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 9 01:58:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_74, J_CHICKENPOX_84,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA97wpdo208880 for ; Wed, 9 Nov 2011 01:58:51 -0600 X-ASG-Debug-ID: 1320825529-280d00590000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E6F9A1CF7C94 for ; Tue, 8 Nov 2011 23:58:49 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id QHwgGkqgABubGyew for ; Tue, 08 Nov 2011 23:58:49 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RO33X-0006E2-83; Wed, 09 Nov 2011 07:58:47 +0000 Date: Wed, 9 Nov 2011 02:58:47 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Subject: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Message-ID: <20111109075847.GA20604@infradead.org> References: <20111108085614.478431403@bombadil.infradead.org> <20111108085846.291838677@bombadil.infradead.org> <20111108231118.GP5534@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111108231118.GP5534@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320825529 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79742 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 09, 2011 at 10:11:18AM +1100, Dave Chinner wrote: > On Tue, Nov 08, 2011 at 03:56:16AM -0500, Christoph Hellwig wrote: > > The new concurrency managed workqueues are cheap enough that we can create > > per-filesystem instead of global workqueues. This allows us to remove the > > trylock or defer scheme on the ilock, which has the potential of delaying > > size updates, and is not helpful once we start to log the inode size. > > So why does the per-mount workqueues allow removal of the trylock? > > IOWs, it might be worthwhile pointing to the commit (77d7a0c "xfs: > Non-blocking inode locking in IO completion") to indicate that the > functionality being removed was introduced to avoid IO completion > deadlocks between dependent filesystems (e.g. XFS on loop device on > XFS) and that moving to per-mount completion queues removes that > dependency.... Done: -- From: Christoph Hellwig Subject: xfs: use per-filesystem I/O completion workqueues commit 77d7a0c "xfs: Non-blocking inode locking in IO completion" introduced a trylocked and defer scheme in xfs_setfilesize to avoid deadlocks when on XFS filesystem is used ontop of another using the loop device, and we fsync in the loop filesystem. Now that we have the cheap enough concurrency managed workqueues, we can create per-filesystem instead of global workqueues and remove this scheme again, given that it has the potential of delaying size updates and is not helpful once we start to log the inode size. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_aops.c | 39 ++++++++++----------------------------- fs/xfs/xfs_aops.h | 2 -- fs/xfs/xfs_buf.c | 17 ----------------- fs/xfs/xfs_mount.h | 3 +++ fs/xfs/xfs_super.c | 43 ++++++++++++++++++++++++++++++++++++++++++- 5 files changed, 55 insertions(+), 49 deletions(-) Index: linux-2.6/fs/xfs/xfs_aops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-08 08:08:11.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-08 08:09:29.458887066 +0100 @@ -131,21 +131,15 @@ static inline bool xfs_ioend_is_append(s * will be the intended file size until i_size is updated. If this write does * not extend all the way to the valid file size then restrict this update to * the end of the write. - * - * This function does not block as blocking on the inode lock in IO completion - * can lead to IO completion order dependency deadlocks.. If it can't get the - * inode ilock it will return EAGAIN. Callers must handle this. */ -STATIC int +STATIC void xfs_setfilesize( - xfs_ioend_t *ioend) + struct xfs_ioend *ioend) { - xfs_inode_t *ip = XFS_I(ioend->io_inode); + struct xfs_inode *ip = XFS_I(ioend->io_inode); xfs_fsize_t isize; - if (!xfs_ilock_nowait(ip, XFS_ILOCK_EXCL)) - return EAGAIN; - + xfs_ilock(ip, XFS_ILOCK_EXCL); isize = xfs_ioend_new_eof(ioend); if (isize) { trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size); @@ -154,7 +148,6 @@ xfs_setfilesize( } xfs_iunlock(ip, XFS_ILOCK_EXCL); - return 0; } /* @@ -168,10 +161,12 @@ xfs_finish_ioend( struct xfs_ioend *ioend) { if (atomic_dec_and_test(&ioend->io_remaining)) { + struct xfs_mount *mp = XFS_I(ioend->io_inode)->i_mount; + if (ioend->io_type == IO_UNWRITTEN) - queue_work(xfsconvertd_workqueue, &ioend->io_work); + queue_work(mp->m_unwritten_workqueue, &ioend->io_work); else if (xfs_ioend_is_append(ioend)) - queue_work(xfsdatad_workqueue, &ioend->io_work); + queue_work(mp->m_data_workqueue, &ioend->io_work); else xfs_destroy_ioend(ioend); } @@ -212,23 +207,9 @@ xfs_end_io( * We might have to update the on-disk file size after extending * writes. */ - error = xfs_setfilesize(ioend); - ASSERT(!error || error == EAGAIN); - + xfs_setfilesize(ioend); done: - /* - * If we didn't complete processing of the ioend, requeue it to the - * tail of the workqueue for another attempt later. Otherwise destroy - * it. - */ - if (error == EAGAIN) { - atomic_inc(&ioend->io_remaining); - xfs_finish_ioend(ioend); - /* ensure we don't spin on blocked ioends */ - delay(1); - } else { - xfs_destroy_ioend(ioend); - } + xfs_destroy_ioend(ioend); } /* Index: linux-2.6/fs/xfs/xfs_aops.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_aops.h 2011-11-08 08:02:50.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_aops.h 2011-11-08 08:08:55.915886285 +0100 @@ -18,8 +18,6 @@ #ifndef __XFS_AOPS_H__ #define __XFS_AOPS_H__ -extern struct workqueue_struct *xfsdatad_workqueue; -extern struct workqueue_struct *xfsconvertd_workqueue; extern mempool_t *xfs_ioend_pool; /* Index: linux-2.6/fs/xfs/xfs_buf.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_buf.c 2011-11-08 08:02:50.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_buf.c 2011-11-08 08:08:55.919886682 +0100 @@ -45,8 +45,6 @@ static kmem_zone_t *xfs_buf_zone; STATIC int xfsbufd(void *); static struct workqueue_struct *xfslogd_workqueue; -struct workqueue_struct *xfsdatad_workqueue; -struct workqueue_struct *xfsconvertd_workqueue; #ifdef XFS_BUF_LOCK_TRACKING # define XB_SET_OWNER(bp) ((bp)->b_last_holder = current->pid) @@ -1797,21 +1795,8 @@ xfs_buf_init(void) if (!xfslogd_workqueue) goto out_free_buf_zone; - xfsdatad_workqueue = alloc_workqueue("xfsdatad", WQ_MEM_RECLAIM, 1); - if (!xfsdatad_workqueue) - goto out_destroy_xfslogd_workqueue; - - xfsconvertd_workqueue = alloc_workqueue("xfsconvertd", - WQ_MEM_RECLAIM, 1); - if (!xfsconvertd_workqueue) - goto out_destroy_xfsdatad_workqueue; - return 0; - out_destroy_xfsdatad_workqueue: - destroy_workqueue(xfsdatad_workqueue); - out_destroy_xfslogd_workqueue: - destroy_workqueue(xfslogd_workqueue); out_free_buf_zone: kmem_zone_destroy(xfs_buf_zone); out: @@ -1821,8 +1806,6 @@ xfs_buf_init(void) void xfs_buf_terminate(void) { - destroy_workqueue(xfsconvertd_workqueue); - destroy_workqueue(xfsdatad_workqueue); destroy_workqueue(xfslogd_workqueue); kmem_zone_destroy(xfs_buf_zone); } Index: linux-2.6/fs/xfs/xfs_super.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_super.c 2011-11-08 08:02:50.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_super.c 2011-11-08 08:08:55.927886477 +0100 @@ -769,6 +769,40 @@ xfs_setup_devices( return 0; } +STATIC int +xfs_init_mount_workqueues( + struct xfs_mount *mp) +{ +#define XFS_WQ_NAME_LEN 512 + char name[XFS_WQ_NAME_LEN]; + + snprintf(name, XFS_WQ_NAME_LEN, "xfs-data/%s", mp->m_fsname); + mp->m_data_workqueue = alloc_workqueue(name, WQ_MEM_RECLAIM, 1); + if (!mp->m_data_workqueue) + goto out; + + snprintf(name, XFS_WQ_NAME_LEN, "xfs-conv/%s", mp->m_fsname); + mp->m_unwritten_workqueue = alloc_workqueue(name, WQ_MEM_RECLAIM, 1); + if (!mp->m_unwritten_workqueue) + goto out_destroy_data_iodone_queue; + + return 0; + +out_destroy_data_iodone_queue: + destroy_workqueue(mp->m_data_workqueue); +out: + return -ENOMEM; +#undef XFS_WQ_NAME_LEN +} + +STATIC void +xfs_destroy_mount_workqueues( + struct xfs_mount *mp) +{ + destroy_workqueue(mp->m_data_workqueue); + destroy_workqueue(mp->m_unwritten_workqueue); +} + /* Catch misguided souls that try to use this interface on XFS */ STATIC struct inode * xfs_fs_alloc_inode( @@ -1020,6 +1054,7 @@ xfs_fs_put_super( xfs_unmountfs(mp); xfs_freesb(mp); xfs_icsb_destroy_counters(mp); + xfs_destroy_mount_workqueues(mp); xfs_close_devices(mp); xfs_free_fsname(mp); kfree(mp); @@ -1353,10 +1388,14 @@ xfs_fs_fill_super( if (error) goto out_free_fsname; - error = xfs_icsb_init_counters(mp); + error = xfs_init_mount_workqueues(mp); if (error) goto out_close_devices; + error = xfs_icsb_init_counters(mp); + if (error) + goto out_destroy_workqueues; + error = xfs_readsb(mp, flags); if (error) goto out_destroy_counters; @@ -1419,6 +1458,8 @@ xfs_fs_fill_super( xfs_freesb(mp); out_destroy_counters: xfs_icsb_destroy_counters(mp); +out_destroy_workqueues: + xfs_destroy_mount_workqueues(mp); out_close_devices: xfs_close_devices(mp); out_free_fsname: Index: linux-2.6/fs/xfs/xfs_mount.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_mount.h 2011-11-08 08:02:50.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_mount.h 2011-11-08 08:08:55.931904609 +0100 @@ -211,6 +211,9 @@ typedef struct xfs_mount { struct shrinker m_inode_shrink; /* inode reclaim shrinker */ int64_t m_low_space[XFS_LOWSP_MAX]; /* low free space thresholds */ + + struct workqueue_struct *m_data_workqueue; + struct workqueue_struct *m_unwritten_workqueue; } xfs_mount_t; /* From BATV+7f0b0eb966118e95cc06+2999+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 9 02:01:36 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA981Z2v209084 for ; Wed, 9 Nov 2011 02:01:36 -0600 X-ASG-Debug-ID: 1320825694-0342005c0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 12622103962C for ; Wed, 9 Nov 2011 00:01:34 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id uBkbErSHCTJSHQwB for ; Wed, 09 Nov 2011 00:01:34 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RO36D-00073v-MW; Wed, 09 Nov 2011 08:01:33 +0000 Date: Wed, 9 Nov 2011 03:01:33 -0500 From: Christoph Hellwig To: Alan Cook Cc: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS realtime O_DIRECT failures Subject: Re: XFS realtime O_DIRECT failures Message-ID: <20111109080133.GB20604@infradead.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320825695 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0025 1.0000 -2.0048 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.90 X-Barracuda-Spam-Status: No, SCORE=-1.90 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79741 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 08, 2011 at 05:37:55PM +0000, Alan Cook wrote: > Have I uncovered a legitimate or known bug or is there something wrong with my > XFS setup? It might sounda a bit harsh, but the problem is that use the realtime subvolume. It hasn't really been maintained or been part of the tested setup, and most distros in the know ship with it disabled. I went through and fixed it when we got bug reports once in a while, and I'm happy to look into your issues once I get a bit spare time, but in general use is highly discouraged. Is there any specific reason why you want to use the RT subvolume? From BATV+7f0b0eb966118e95cc06+2999+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 9 02:37:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA98bVQs212980 for ; Wed, 9 Nov 2011 02:37:32 -0600 X-ASG-Debug-ID: 1320827850-27fc00f30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7964B1CF85C9 for ; Wed, 9 Nov 2011 00:37:30 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id SoObHc10bxyvMf2O for ; Wed, 09 Nov 2011 00:37:30 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RO3ez-00062l-BW; Wed, 09 Nov 2011 08:37:29 +0000 Date: Wed, 9 Nov 2011 03:37:29 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Stefan Pfetzing X-ASG-Orig-Subj: [PATCH repair: do not walk the unlinked inode list Subject: [PATCH repair: do not walk the unlinked inode list Message-ID: <20111109083729.GA23169@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320827850 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79744 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Stefan Pfetzing reported a bug where xfs_repair got stuck eating 100% CPU in phase3. We track it down to a loop in the unlinked inode list, apparently caused by memory corruption on an iSCSI target. I looked into tracking if we already saw a given unlinked inode, but given that we keep walking even for inodes where we can't find an allocation btree record that seems infeasible. On the other hand these inodes had their final unlink and thus were dead even before the system went down. There really is no point in adding them to the uncertain list and looking for references to them later. So the simplest fix seems to be to simply remove the unlinked inode list walk and just clear it - when we rebuild the inode allocation btrees these will simply be marked free. Reported-by: Stefan Pfetzing Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/repair/phase3.c =================================================================== --- xfsprogs-dev.orig/repair/phase3.c 2011-11-09 08:59:35.313604606 +0100 +++ xfsprogs-dev/repair/phase3.c 2011-11-09 09:03:44.800605237 +0100 @@ -28,80 +28,15 @@ #include "progress.h" #include "prefetch.h" -/* - * walks an unlinked list, returns 1 on an error (bogus pointer) or - * I/O error - */ -int -walk_unlinked_list(xfs_mount_t *mp, xfs_agnumber_t agno, xfs_agino_t start_ino) -{ - xfs_buf_t *bp; - xfs_dinode_t *dip; - xfs_agino_t current_ino = start_ino; - xfs_agblock_t agbno; - int state; - - while (current_ino != NULLAGINO) { - if (verify_aginum(mp, agno, current_ino)) - return(1); - if ((bp = get_agino_buf(mp, agno, current_ino, &dip)) == NULL) - return(1); - /* - * if this looks like a decent inode, then continue - * following the unlinked pointers. If not, bail. - */ - if (verify_dinode(mp, dip, agno, current_ino) == 0) { - /* - * check if the unlinked list points to an unknown - * inode. if so, put it on the uncertain inode list - * and set block map appropriately. - */ - if (find_inode_rec(mp, agno, current_ino) == NULL) { - add_aginode_uncertain(agno, current_ino, 1); - agbno = XFS_AGINO_TO_AGBNO(mp, current_ino); - - pthread_mutex_lock(&ag_locks[agno]); - state = get_bmap(agno, agbno); - switch (state) { - case XR_E_BAD_STATE: - do_error(_( - "bad state in block map %d\n"), - state); - break; - default: - /* - * the block looks like inodes - * so be conservative and try - * to scavenge what's in there. - * if what's there is completely - * bogus, it'll show up later - * and the inode will be trashed - * anyway, hopefully without - * losing too much other data - */ - set_bmap(agno, agbno, XR_E_INO); - break; - } - pthread_mutex_unlock(&ag_locks[agno]); - } - current_ino = be32_to_cpu(dip->di_next_unlinked); - } else { - current_ino = NULLAGINO;; - } - libxfs_putbuf(bp); - } - - return(0); -} - -void -process_agi_unlinked(xfs_mount_t *mp, xfs_agnumber_t agno) +static void +process_agi_unlinked( + struct xfs_mount *mp, + xfs_agnumber_t agno) { - xfs_agnumber_t i; - xfs_buf_t *bp; - xfs_agi_t *agip; - int err = 0; - int agi_dirty = 0; + struct xfs_buf *bp; + struct xfs_agi *agip; + xfs_agnumber_t i; + int agi_dirty = 0; bp = libxfs_readbuf(mp->m_dev, XFS_AG_DADDR(mp, agno, XFS_AGI_DADDR(mp)), @@ -112,28 +47,16 @@ process_agi_unlinked(xfs_mount_t *mp, xf agip = XFS_BUF_TO_AGI(bp); - ASSERT(no_modify || be32_to_cpu(agip->agi_seqno) == agno); + ASSERT(be32_to_cpu(agip->agi_seqno) == agno); for (i = 0; i < XFS_AGI_UNLINKED_BUCKETS; i++) { - if (be32_to_cpu(agip->agi_unlinked[i]) != NULLAGINO) { - err += walk_unlinked_list(mp, agno, - be32_to_cpu(agip->agi_unlinked[i])); - /* - * clear the list - */ - if (!no_modify) { - agip->agi_unlinked[i] = cpu_to_be32(NULLAGINO); - agi_dirty = 1; - } + if (agip->agi_unlinked[i] != cpu_to_be32(NULLAGINO)) { + agip->agi_unlinked[i] = cpu_to_be32(NULLAGINO); + agi_dirty = 1; } } - if (err) - do_warn(_("error following ag %d unlinked list\n"), agno); - - ASSERT(agi_dirty == 0 || (agi_dirty && !no_modify)); - - if (agi_dirty && !no_modify) + if (agi_dirty) libxfs_writebuf(bp, 0); else libxfs_putbuf(bp); @@ -209,14 +132,14 @@ phase3(xfs_mount_t *mp) set_progress_msg(PROG_FMT_AGI_UNLINKED, (__uint64_t) glob_agcount); - /* - * first, let's look at the possibly bogus inodes - */ + /* first clear the agi unlinked AGI list */ + if (!no_modify) { + for (i = 0; i < mp->m_sb.sb_agcount; i++) + process_agi_unlinked(mp, i); + } + + /* now look at possibly bogus inodes */ for (i = 0; i < mp->m_sb.sb_agcount; i++) { - /* - * walk unlinked list to add more potential inodes to list - */ - process_agi_unlinked(mp, i); check_uncertain_aginodes(mp, i); PROG_RPT_INC(prog_rpt_done[i], 1); } From BATV+7f0b0eb966118e95cc06+2999+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 9 02:38:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA98cFNb213084 for ; Wed, 9 Nov 2011 02:38:16 -0600 X-ASG-Debug-ID: 1320827894-799603680000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1B3F810377EF for ; Wed, 9 Nov 2011 00:38:14 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Lk2kxJbtr8SdnF18 for ; Wed, 09 Nov 2011 00:38:14 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RO3ff-000632-Pw; Wed, 09 Nov 2011 08:38:11 +0000 Date: Wed, 9 Nov 2011 03:38:11 -0500 From: Christoph Hellwig To: WuBo Cc: linux-fsdevel@vger.kernel.org, Linux Btrfs , xfs@oss.sgi.com, Christoph Hellwig X-ASG-Orig-Subj: Re: [PATCH v2 0/3] xfstests: Add a group of reservation space test Subject: Re: [PATCH v2 0/3] xfstests: Add a group of reservation space test Message-ID: <20111109083811.GA23248@infradead.org> References: <4EB8A441.7090506@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4EB8A441.7090506@cn.fujitsu.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320827895 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79745 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 08, 2011 at 11:38:41AM +0800, WuBo wrote: > Changes v1->v2: > - Make test-set support generic > > This patch set add a group of reservation space test. Especailly for btrfs. > It includes three parts: copy workload, prealloc and write posix. > > For test 273, I hope it's usefull for Josef's reserve improve work. > For test 274 and 275, the current btrfs is not pass yet. > > Wu Bo (3): > xfstests 273: add a copy and reserve test > xfstests 274: add a prealloc and reserve test > xfstests 275: add a write and reserve test The patches look good to me. Unless someone else complains until tomorrow I'll put them in. From weeklycash@gmail.com Wed Nov 9 03:11:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.0 required=5.0 tests=BAYES_50,FREEMAIL_FROM, J_CHICKENPOX_61,J_CHICKENPOX_74,T_LOTS_OF_MONEY autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA99B3gt216132 for ; Wed, 9 Nov 2011 03:11:03 -0600 X-ASG-Debug-ID: 1320829860-280101560000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail14h.g14.rapidsite.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 3F5861CF8ABE for ; Wed, 9 Nov 2011 01:11:00 -0800 (PST) Received: from mail14h.g14.rapidsite.net (mail14h.g14.rapidsite.net [128.121.64.110]) by cuda.sgi.com with SMTP id 03W4Yq5U8VKuXREk for ; Wed, 09 Nov 2011 01:11:00 -0800 (PST) Received: from ca1-mx20.mlpsca01.us.mxservers.net (128.121.64.170) by mail14h.g14.rapidsite.net (RS ver 1.0.95vs) with SMTP id 0-0355859860 for ; Wed, 9 Nov 2011 04:11:00 -0500 (EST) Received: from unknown [128.121.143.54] (EHLO W3W14002.sanjose14-verio.com) by ca1-mx20.mlpsca01.us.mxservers.net (mxl_mta-3.1.0-05) with ESMTP id 4a34abe4.2456779680.217643.00-002.ca1-mx20.mlpsca01.us.mxservers.net (envelope-from ); Wed, 09 Nov 2011 04:11:00 -0500 (EST) Received: from w3w14002 ([127.0.0.1]) by W3W14002.sanjose14-verio.com with Microsoft SMTPSVC(6.0.3790.4675); Wed, 9 Nov 2011 01:10:59 -0800 thread-index: Acyev39HbkmpJ+M7QqK2yxA+RS0YWQ== Thread-Topic: Interesting Job Opportunity From: To: X-ASG-Orig-Subj: Interesting Job Opportunity Subject: Interesting Job Opportunity Date: Wed, 9 Nov 2011 01:10:59 -0800 Message-ID: MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit X-Mailer: Microsoft CDO for Windows 2000 Content-Class: urn:content-classes:message Importance: normal Priority: normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4862 X-OriginalArrivalTime: 09 Nov 2011 09:10:59.0839 (UTC) FILETIME=[7F49D8F0:01CC9EBF] X-Spam: [F=0.2000000000; S=0.200(2010122901); MH=0.500(2011110902)] X-MAIL-FROM: X-SOURCE-IP: [128.121.143.54] X-SF-Loop: 1 X-Barracuda-Connect: mail14h.g14.rapidsite.net[128.121.64.110] X-Barracuda-Start-Time: 1320829861 X-Barracuda-Bayes: INNOCENT GLOBAL 0.3802 1.0000 -0.0542 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.03 X-Barracuda-Spam-Status: No, SCORE=-0.03 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79746 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.00 NO_REAL_NAME From: does not include a real name 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Fast Cash No Monthly Waiting Click Bank Behind It.. Hello Friend, AUTO TRAFFIC Avalanche Makes Money Starting Today!!! Recession Victim Stumbles Across New Software & Exploits Hidden Glith In A*1.8 BILLION TRAFFIC BANK For *$219,249 A Month On Click Bank * Hurry: Get your Guaranteed $858 Commissions Direct Paypal!!! So remember, I'm taking all the risk out of this investment -if you're not 100% thrilled with Auto Traffic Avalanche, I'll personally see to it that your money is returned to you - all of it. What's more if you don't get any results with it, I'll also take $100 out of my own wallet and put it in your pocket. There really is nothing to lose here. Imagine waking up at 10 in the morning.. doing your short workout routine.. opening your computer..and finding out you made $100 up to $200 - while you were a sleep! It's Easy To Make Money Everyday Even If You're Starting From Scratch With Zero Knowledge, Experience Or Budget!I'll Show You Exactly How. We've Start putting New 22 Members in YOUR TEAM for the Nov- 03- 10 -/2011 weekly commission Report... and GROWING everyday earn by $100 up to $200 or more. IMPORTANT: Nov -10 /2011 is the Cut-Off day to lock in your position then faster you act the higher commission you will earn!!! Go Here To Secure not less than $858 commission Now and it still growing as many people joining under you. if you secure your position right away: The $858 commission will Arrive Through your Paypal or Credit Card on Nov-20/2011 next week.Hurry'this limited time, 3 remaining Positions are available Now. You will access your $858 money in any ATM when you join early... If The Link Is Error Copy And Paste Into Your Browser To See Commission... Earn After Click==>> http://worldurl.webs.com/autotrafficavalanche.html See Snapshoot is a New 22 Member's in a different Country"s Earn $858 After Signup!!! TYPE DATE & TIME --------- NEW MEMBERS ----------- COUNTRY'S P -- NOV.08 @ 2:38 AM-----James----- Jordan------- United States P -- NOV.08 @ 2:53 AM-----JOan------ Jackson ----- United Kingdom P -- NOV.08 @ 2:56 AM-----Mandene -- Jecob-------- Germany M -- NOV.08 @ 4:19 AM-----Cristy---- Nores-------- Hungary P -- NOV.07 @ 4:28 AM-----Carlo----- Wonder------- Italy M -- NOV.07 @ 6:01 AM-----lalaine--- Anderson----- Australia P -- NOV.07 @ 7:11 AM-----Rebecca--- Baker-------- Canada P -- NOV.07 @ 7:39 AM-----Jericho--- Morales------ Mexico P -- NOV.06 @ 9:42 AM-----Thomas---- Silva ------- California M -- NOV.06 @ 9:58 PM-----Grace----- Taylor------- Singapore P -- NOV.06 @ 10:21 PM-----Gina------ Henry-------- New Zealand P -- NOV.05 @ 11:24 PM-----Jenefer--- Lopez ------- United States M -- NOV.05 @ 11:33 PM-----Tracia---- Furlong------ Puerto Rico P -- NOV.05 @ 11:41 PM-----Jane------ Mckay-------- Russia P -- NOV.05 @ 9:42 AM-----Steve----- Scott ------- Netherlands M -- NOV.04 @ 9:58 PM-----Greg------ Stanley------ Denmark P -- NOV.04 @ 10:21 PM-----Jack------ Perkins------ Amsterdam P -- NOV.04 @ 11:24 PM-----Arlene---- Ross -------- United States M -- NOV.04 @ 11:33 PM-----Andy------ Hopekins----- New York P -- NOV.03 @ 11:41 PM-----Jhon------ Robinson----- United States M -- NOV.03 @ 2:34 AM --- Kevin----- Hunt -------- Sweden P -- NOV.03 @ 12:34 AM --- Delia----- Lane -------- United States Therefore, you have a GUARANTEED $858 CommissionS every week from now on!. Earn $39 Per Process!Each $39 x 22 = $858 Commission will be yours...! Be Sure to Copy the link below & Paste into your browser and press enter: To Secure your $858 commission! If The Link Is Error Copy And Paste Into Your Browser To See Commission... Earn After Click==>> http://worldurl.webs.com/autotrafficavalanche.html Just one simple payment of $39. and you could have earn $858 Commission,And you recieved on November 20-2011 Directly to Your Paypal or Credit Card. You must UPGRADE right away or before others do.... Caring for Your Success, Michelle Miller [JOB TITLE] Director of Assessment/Research [DESCRIPTION] Seeking K12 professional with strong management skills for growing company. The job details are at: http://www.pointandpost.com/r.asp?j=JOS000000112&d=www%2Ehorizonsi%2Enet If the above address is wrapping, you may need to cut and paste both lines into your browser. Also, you can reach the Home page at: www.horizonsi.net From s.burbidge@imperial.ac.uk Wed Nov 9 03:53:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA99r2Km220045 for ; Wed, 9 Nov 2011 03:53:03 -0600 X-ASG-Debug-ID: 1320832381-548e02820000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp2.cc.ic.ac.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E3615148BBAE for ; Wed, 9 Nov 2011 01:53:01 -0800 (PST) Received: from smtp2.cc.ic.ac.uk (smtp2.cc.ic.ac.uk [155.198.5.156]) by cuda.sgi.com with ESMTP id 8X3PoSVsf2pyGwSN for ; Wed, 09 Nov 2011 01:53:01 -0800 (PST) Received: from icexch-h2.ic.ac.uk ([2001:630:12:610:c06e:5d25:f2dc:fe8]) by smtp2.cc.ic.ac.uk with esmtp (Exim 4.72) (envelope-from ) id 1RO4q3-0002mB-Av; Wed, 09 Nov 2011 09:53:00 +0000 Received: from icexch-m1.ic.ac.uk ([fe80::617e:f8e5:8463:455]) by icexch-h2.ic.ac.uk ([fe80::c06e:5d25:f2dc:fe8%10]) with mapi id 14.01.0339.001; Wed, 9 Nov 2011 09:52:06 +0000 From: "Burbidge, Simon A" To: Dave Chinner , Liam Forbes CC: "xfs@oss.sgi.com" , "Burbidge, Simon A" X-ASG-Orig-Subj: RE: quota mismatch for NFS mount of XFS filesystem Subject: RE: quota mismatch for NFS mount of XFS filesystem Thread-Topic: quota mismatch for NFS mount of XFS filesystem Thread-Index: AQHMnkelpSuKraZqmEiTzOYNg53vg5WjlmOAgAC2HSk= Date: Wed, 9 Nov 2011 09:52:06 +0000 Message-ID: <271150ABBD47B14585A108DF56142AEE45295BBC@icexch-m1.ic.ac.uk> References: ,<20111108225513.GO5534@dastard> In-Reply-To: <20111108225513.GO5534@dastard> Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [129.31.243.63] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-IC-MsgID: 1RO4q3-0002mB-Av X-Barracuda-Connect: smtp2.cc.ic.ac.uk[155.198.5.156] X-Barracuda-Start-Time: 1320832381 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79749 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Liam, I believe we've encountered this exact same problem. There is a 32 bit size field in the protocol used by rpcquota . What you ar= e seeing is overflow of that field. I figure that this should be classed as a classic "not 64-bit ready" bug - = but the support people from the Linux distros seem to believe that it is working according to specification. I'm not even sure that NFS v4 addresses the issue! Best Regards Simon Burbidge Imperial College London ________________________________________ From: xfs-bounces@oss.sgi.com [xfs-bounces@oss.sgi.com] on behalf of Dave C= hinner [david@fromorbit.com] Sent: 08 November 2011 22:55 To: Liam Forbes Cc: xfs@oss.sgi.com Subject: Re: quota mismatch for NFS mount of XFS filesystem On Tue, Nov 08, 2011 at 09:31:05AM -0900, Liam Forbes wrote: > I searched the archives, but didn't find anything about incorrect > quota information for an NFS mounted XFS filesystem. I hope somebody > might have an idea. > > We have a RHEL 5.7 server mounting a 15T XFS filesystem and exporting > it to RHEL 5.6 and 5.7 clients. quota and xfs_quota on the server > show a user using ~5.8T, but quota on a client only shows ~1.8T. > > Server: > nfs2:~$ cat /etc/redhat-release > Red Hat Enterprise Linux Server release 5.7 (Tikanga) > nfs2:~$ uname -a > Linux nfs2 2.6.18-274.3.1.el5 #1 SMP Fri Aug 26 18:49:02 EDT 2011 x86_64 = x86_64 > nfs2:~$ rpm -qa | grep xfsprogs > xfsprogs-2.9.4-1.el5.centos > nfs2:~$ sudo quota -s -v -u krieger > Disk quotas for user krieger (uid 3105): > Filesystem blocks quota limit grace files quota limit = grace > /dev/mapper/primaryfs_vg-primaryfs > 5901G 0 0 310k 0 0 > nfs2:~$ sudo /usr/sbin/xfs_quota > xfs_quota> quota -u -h krieger > Disk quotas for User krieger (3105) > Filesystem Blocks Quota Limit Warn/Time Mounted on > /dev/primaryfs_vg/primaryfs > 5.8T 0 0 00 [------] /export/wrkdir20 > xfs_quota> quit > > Client: > pacman1:~$ cat /etc/redhat-release > Red Hat Enterprise Linux Server release 5.6 (Tikanga) > pacman1:~$ uname -a > Linux pacman1 2.6.18-238.19.1.563g0000.el5 #1 SMP Fri Jul 15 20:26:36 > EDT 2011 x86_64 x86_64 x86_64 GNU/Linux > pacman1:~$ sudo quota -s -v -u krieger > Disk quotas for user krieger (uid 3105): > Filesystem blocks quota limit grace files quota limit = grace > nfs2:/export/wrkdir20 > 1806G 0 0 310k 0 0 That looks like a 32bit variable overflow. In 512 byte blocks (sectors), 2^32 sectors overflows at 2T. And 5.8T ~=3D 2T + 2T + 1.8T. This is most likely to be an NFS issue - I'm not familiar with the Linux NFS quota protocol implementation, so I can't really say much more than that. Cheers, Dave. -- Dave Chinner david@fromorbit.com _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From acook@visionpointsystems.com Wed Nov 9 08:25:06 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA9EP5NM233113 for ; Wed, 9 Nov 2011 08:25:06 -0600 X-ASG-Debug-ID: 1320848703-369a003b0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from exprod7og123.obsmtp.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id A863E56AFDF for ; Wed, 9 Nov 2011 06:25:04 -0800 (PST) Received: from exprod7og123.obsmtp.com (exprod7og123.obsmtp.com [64.18.2.24]) by cuda.sgi.com with SMTP id Xoy0DfvnaTuGYdxr for ; Wed, 09 Nov 2011 06:25:04 -0800 (PST) Received: from mail-yw0-f43.google.com ([209.85.213.43]) (using TLSv1) by exprod7ob123.postini.com ([64.18.6.12]) with SMTP ID DSNKTrqNPx81kNQQJGzxFSfuZU4Ch9+x+99t@postini.com; Wed, 09 Nov 2011 06:25:04 PST Received: by ywp17 with SMTP id 17so2544142ywp.16 for ; Wed, 09 Nov 2011 06:25:03 -0800 (PST) MIME-Version: 1.0 Received: by 10.50.17.199 with SMTP id q7mr2939965igd.20.1320848703047; Wed, 09 Nov 2011 06:25:03 -0800 (PST) Received: by 10.50.237.5 with HTTP; Wed, 9 Nov 2011 06:25:02 -0800 (PST) In-Reply-To: <20111109080133.GB20604@infradead.org> References: <20111109080133.GB20604@infradead.org> Date: Wed, 9 Nov 2011 08:25:02 -0600 Message-ID: X-ASG-Orig-Subj: Re: XFS realtime O_DIRECT failures Subject: Re: XFS realtime O_DIRECT failures From: Alan Cook To: Christoph Hellwig Cc: linux-xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: exprod7og123.obsmtp.com[64.18.2.24] X-Barracuda-Start-Time: 1320848704 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0011 1.0000 -2.0139 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 9, 2011 at 2:01 AM, Christoph Hellwig wrote= : > It might sounda a bit harsh, but the problem is that use the realtime > subvolume. It hasn't really been maintained or been part of the tested > setup, and most distros in the know ship with it disabled. I went > through and fixed it when we got bug reports once in a while, and I'm > happy to look into your issues once I get a bit spare time, but in > general use is highly discouraged. Is there any specific reason why > you want to use the RT subvolume? I am streaming high-resolution images to be compressed through hardware and need to separate the data from the meta data for compression purposes.=A0 XFS gave that for free if I used a realtime subvolume. I originally started on kernel 2.6.27 (CentOS 5.5) which had no issues with the RT subvolume and direct writes.=A0 I was then moved to kernel 2.6.32 (SUSE 11) which does have the issue. I appreciate your willingness to help.=A0 Are there any alternatives or suggestions for splitting the data and meta data?=A0 Any direction you can give on where to start looking or what I could do to track down the exact cause of the bug? Thanks. From acook@visionpointsystems.com Wed Nov 9 08:28:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA9ESo9p233247 for ; Wed, 9 Nov 2011 08:28:50 -0600 X-ASG-Debug-ID: 1320848929-3697003f0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from exprod7og115.obsmtp.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 0FC5956B01E for ; Wed, 9 Nov 2011 06:28:49 -0800 (PST) Received: from exprod7og115.obsmtp.com (exprod7og115.obsmtp.com [64.18.2.217]) by cuda.sgi.com with SMTP id sBrBpBWm30PScthS for ; Wed, 09 Nov 2011 06:28:49 -0800 (PST) Received: from mail-yw0-f43.google.com ([209.85.213.43]) (using TLSv1) by exprod7ob115.postini.com ([64.18.6.12]) with SMTP ID DSNKTrqOIG0InVsHgif+576PRWyTaA82okoC@postini.com; Wed, 09 Nov 2011 06:28:49 PST Received: by mail-yw0-f43.google.com with SMTP id 17so2179930ywp.2 for ; Wed, 09 Nov 2011 06:28:48 -0800 (PST) MIME-Version: 1.0 Received: by 10.50.17.199 with SMTP id q7mr2969723igd.20.1320848928574; Wed, 09 Nov 2011 06:28:48 -0800 (PST) Received: by 10.50.237.5 with HTTP; Wed, 9 Nov 2011 06:28:48 -0800 (PST) In-Reply-To: References: Date: Wed, 9 Nov 2011 08:28:48 -0600 Message-ID: X-ASG-Orig-Subj: Re: XFS realtime O_DIRECT failures Subject: Re: XFS realtime O_DIRECT failures From: Alan Cook To: Amit Sahrawat Cc: linux-xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: exprod7og115.obsmtp.com[64.18.2.217] X-Barracuda-Start-Time: 1320848930 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4864 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 8, 2011 at 11:20 PM, Amit Sahrawat wrote: > In my opinion, this is not the way to allocate memory and use for > O_DIRECT approach. Instead you can make use of valloc() or > posix_memalign()/memalign > Or if you are still using malloc() - then you probably did the right > thing by allocating for alignment like malloc(size + 4096); > but, store this is permanent pointer and make use of aligned pointer : > perm_pointer = malloc(size +4096); > For aligning you need an expression like this: > align_pointer = (perm_pointer + 4096) & ~(4095);// If you wish to > align for 512, do it like (p+512) & ~(511); Thanks. I adjusted the test application, but still see the bug with RT subvolumes and direct writes. From aelder@oss.sgi.com Wed Nov 9 09:15:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA9FFhDM234965 for ; Wed, 9 Nov 2011 09:15:43 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id pA9FFhsQ234927; Wed, 9 Nov 2011 09:15:43 -0600 Date: Wed, 9 Nov 2011 09:15:43 -0600 Message-Id: <201111091515.pA9FFhsQ234927@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v3.2-rc1-3-g810627d X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 1ea6b8f48918282bdca0b32a34095504ee65bab5 X-Git-Newrev: 810627d9a6d0e8820c798001875bc4e1b7754ebf This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 810627d xfs: fix force shutdown handling in xfs_end_io 272e42b xfs: constify xfs_item_ops b52a360 xfs: Fix possible memory corruption in xfs_readlink from 1ea6b8f48918282bdca0b32a34095504ee65bab5 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 810627d9a6d0e8820c798001875bc4e1b7754ebf Author: Christoph Hellwig Date: Tue Nov 8 08:56:15 2011 +0000 xfs: fix force shutdown handling in xfs_end_io Ensure ioend->io_error gets propagated back to e.g. AIO completions. Signed-off-by: Christoph Hellwig Reviewed-by: Alex Elder commit 272e42b215c52d32e06bf035c1f6b70baa6716bd Author: Christoph Hellwig Date: Fri Oct 28 09:54:24 2011 +0000 xfs: constify xfs_item_ops The log item ops aren't nessecarily the biggest exploit vector, but marking them const is easy enough. Also remove the unused xfs_item_ops_t typedef while we're at it. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Reviewed-by: Alex Elder commit b52a360b2aa1c59ba9970fb0f52bbb093fcc7a24 Author: Carlos Maiolino Date: Mon Nov 7 16:10:24 2011 +0000 xfs: Fix possible memory corruption in xfs_readlink Fixes a possible memory corruption when the link is larger than MAXPATHLEN and XFS_DEBUG is not enabled. This also remove the S_ISLNK assert, since the inode mode is checked previously in xfs_readlink_by_handle() and via VFS. Updated to address concerns raised by Ben Hutchings about the loose attention paid to 32- vs 64-bit values, and the lack of handling a potentially negative pathlen value: - Changed type of "pathlen" to be xfs_fsize_t, to match that of ip->i_d.di_size - Added checking for a negative pathlen to the too-long pathlen test, and generalized the message that gets reported in that case to reflect the change As a result, if a negative pathlen were encountered, this function would return EFSCORRUPTED (and would fail an assertion for a debug build)--just as would a too-long pathlen. Signed-off-by: Alex Elder Signed-off-by: Carlos Maiolino Reviewed-by: Christoph Hellwig ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_aops.c | 2 +- fs/xfs/xfs_buf_item.c | 2 +- fs/xfs/xfs_dquot_item.c | 6 +++--- fs/xfs/xfs_extfree_item.c | 4 ++-- fs/xfs/xfs_inode_item.c | 2 +- fs/xfs/xfs_log.c | 2 +- fs/xfs/xfs_log.h | 2 +- fs/xfs/xfs_trans.h | 6 +++--- fs/xfs/xfs_vnodeops.c | 14 ++++++++++---- 9 files changed, 23 insertions(+), 17 deletions(-) hooks/post-receive -- XFS development tree From cmaiolino@hades.usersys.redhat.com Wed Nov 9 10:54:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA9GsCKA239055 for ; Wed, 9 Nov 2011 10:54:12 -0600 X-ASG-Debug-ID: 1320857650-346600920000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hades.usersys.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7E090230BAE for ; Wed, 9 Nov 2011 08:54:11 -0800 (PST) Received: from hades.usersys.redhat.com ([187.60.101.4]) by cuda.sgi.com with ESMTP id FnJvCiZDf46FJ1Zs for ; Wed, 09 Nov 2011 08:54:11 -0800 (PST) Received: by hades.usersys.redhat.com (Postfix, from userid 500) id A3DF6E0270; Wed, 9 Nov 2011 14:54:08 -0200 (BRST) From: Carlos Maiolino To: xfs@oss.sgi.com Cc: Carlos Maiolino X-ASG-Orig-Subj: [PATCH 2/2] xfs_repair: Properly set lost+found inode as used Subject: [PATCH 2/2] xfs_repair: Properly set lost+found inode as used Date: Wed, 9 Nov 2011 14:54:07 -0200 Message-Id: <1320857647-25511-3-git-send-email-cmaiolino@redhat.com> X-Mailer: git-send-email 1.7.6.4 In-Reply-To: <1320857647-25511-1-git-send-email-cmaiolino@redhat.com> References: <1320857647-25511-1-git-send-email-cmaiolino@redhat.com> X-Barracuda-Connect: UNKNOWN[187.60.101.4] X-Barracuda-Start-Time: 1320857651 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79778 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This patch makes mk_orphanage() to properly set the inode link count of the recently allocated inode in the AVL tree, avoiding the lost+found directory to be bypass the link count check in phase7 and possibly leaving lost+found directory with a wrong link count. Signed-off-by: Carlos Maiolino Reviewed-by: Christoph Hellwig Reviewed-by: Eric Sandeen --- repair/phase6.c | 18 +++++++++++++++++- 1 files changed, 17 insertions(+), 1 deletions(-) diff --git a/repair/phase6.c b/repair/phase6.c index adad61d..d38e44f 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -823,6 +823,8 @@ mk_orphanage(xfs_mount_t *mp) xfs_inode_t *ip; xfs_inode_t *pip; xfs_fsblock_t first; + ino_tree_node_t *irec; + int ino_offset = 0; int i; int committed; int error; @@ -875,6 +877,19 @@ mk_orphanage(xfs_mount_t *mp) ORPHANAGE, error); } ip->i_d.di_nlink++; /* account for . */ + ino = ip->i_ino; + + irec = find_inode_rec(mp, + XFS_INO_TO_AGNO(mp, ino), + XFS_INO_TO_AGINO(mp, ino)); + ino_offset = get_inode_offset(mp, ino, irec); + + /* + * Mark the inode allocated to lost+found as used in the AVL tree + * so it is not skipped in phase 7 + */ + set_inode_used(irec, ino_offset); + add_inode_ref(irec, ino_offset); /* * now that we know the transaction will stay around, @@ -902,6 +917,7 @@ mk_orphanage(xfs_mount_t *mp) XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)), 0); + libxfs_trans_log_inode(tp, pip, XFS_ILOG_CORE); libxfs_dir_init(tp, ip, pip); libxfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); @@ -912,9 +928,9 @@ mk_orphanage(xfs_mount_t *mp) ORPHANAGE, error); } - ino = ip->i_ino; libxfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES|XFS_TRANS_SYNC); + add_inode_reached(irec,ino_offset); return(ino); } -- 1.7.6.4 From cmaiolino@hades.usersys.redhat.com Wed Nov 9 10:54:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA9GsDl8239061 for ; Wed, 9 Nov 2011 10:54:13 -0600 X-ASG-Debug-ID: 1320857650-6aa3006c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hades.usersys.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5A30116D29B2 for ; Wed, 9 Nov 2011 08:54:11 -0800 (PST) Received: from hades.usersys.redhat.com ([187.60.101.4]) by cuda.sgi.com with ESMTP id w3hvpQzAIVRGc1ei for ; Wed, 09 Nov 2011 08:54:11 -0800 (PST) Received: by hades.usersys.redhat.com (Postfix, from userid 500) id 862B1E0210; Wed, 9 Nov 2011 14:54:08 -0200 (BRST) From: Carlos Maiolino To: xfs@oss.sgi.com Cc: Carlos Maiolino X-ASG-Orig-Subj: [PATCH 0/2] Set lost+found inode as used after its allocation Subject: [PATCH 0/2] Set lost+found inode as used after its allocation Date: Wed, 9 Nov 2011 14:54:05 -0200 Message-Id: <1320857647-25511-1-git-send-email-cmaiolino@redhat.com> X-Mailer: git-send-email 1.7.6.4 X-Barracuda-Connect: UNKNOWN[187.60.101.4] X-Barracuda-Start-Time: 1320857652 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0302 1.0000 -1.8252 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.23 X-Barracuda-Spam-Status: No, SCORE=-1.23 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79777 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This patch set ensure the inode allocated to the lost+found directory is set as used in AVL tree if it needs to be created (in case no lost+found directory is already created on the disk). Also, I added a new inline function to get AVL tree node offset which currently is being calculated whenever the offset is needed. From cmaiolino@hades.usersys.redhat.com Wed Nov 9 10:54:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA9GsCKm239057 for ; Wed, 9 Nov 2011 10:54:12 -0600 X-ASG-Debug-ID: 1320857650-465a00010000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hades.usersys.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DA70C1CF9C16 for ; Wed, 9 Nov 2011 08:54:11 -0800 (PST) Received: from hades.usersys.redhat.com ([187.60.101.4]) by cuda.sgi.com with ESMTP id 2Lnlz9gsDkI4YDaG for ; Wed, 09 Nov 2011 08:54:11 -0800 (PST) Received: by hades.usersys.redhat.com (Postfix, from userid 500) id 956E0E006C; Wed, 9 Nov 2011 14:54:08 -0200 (BRST) From: Carlos Maiolino To: xfs@oss.sgi.com Cc: Carlos Maiolino X-ASG-Orig-Subj: [PATCH 1/2] xfs_repair: Add inline function to get avl tree node Subject: [PATCH 1/2] xfs_repair: Add inline function to get avl tree node Date: Wed, 9 Nov 2011 14:54:06 -0200 Message-Id: <1320857647-25511-2-git-send-email-cmaiolino@redhat.com> X-Mailer: git-send-email 1.7.6.4 In-Reply-To: <1320857647-25511-1-git-send-email-cmaiolino@redhat.com> References: <1320857647-25511-1-git-send-email-cmaiolino@redhat.com> X-Barracuda-Connect: UNKNOWN[187.60.101.4] X-Barracuda-Start-Time: 1320857651 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79778 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Add get_inode_offset() inline function, which will return the offset of a specific node in the AVL tree avoiding the need to calculate the the offset each time it needs to be used. Signed-off-by: Carlos Maiolino Reviewed-by: Christoph Hellwig Reviewed-by: Eric Sandeen --- repair/incore.h | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/repair/incore.h b/repair/incore.h index ee0e86a..8e311c9 100644 --- a/repair/incore.h +++ b/repair/incore.h @@ -311,6 +311,12 @@ void get_inode_rec(struct xfs_mount *mp, xfs_agnumber_t agno, ino_tree_node_t *ino_rec); extern avltree_desc_t **inode_tree_ptrs; + +static inline int +get_inode_offset(struct xfs_mount *mp, xfs_ino_t ino, ino_tree_node_t *irec) +{ + return XFS_INO_TO_AGINO(mp, ino) - irec->ino_startnum; +} static inline ino_tree_node_t * findfirst_inode_rec(xfs_agnumber_t agno) { -- 1.7.6.4 From root@nfs10.americas.sgi.com Wed Nov 9 12:51:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA9IpTjK245695 for ; Wed, 9 Nov 2011 12:51:30 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 7F04416A33E; Wed, 9 Nov 2011 13:04:14 -0600 (CST) From: Ben Myers To: xfs@oss.sgi.com Cc: arenaud@sgi.com, bpm@sgi.com, aelder@sgi.com Subject: [PATCH] xfsprogs: add .ltdep to .gitignore Date: Wed, 9 Nov 2011 13:03:58 -0600 Message-Id: <1320865438-27014-1-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Make git ignore all .ltdep files which are created as part of the build process. ~/xfsprogs # find | grep ltdep ./libxcmd/.ltdep ./libxfs/.ltdep ./libhandle/.ltdep ./libdisk/.ltdep ./libxlog/.ltdep Signed-off-by: Ben Myers --- .gitignore | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/.gitignore b/.gitignore index aa6cd35..22b4f65 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # object files *.o .dep +.ltdep # build system .census -- 1.7.8.rc0.46.g5ae0f From arenaud@sgi.com Wed Nov 9 14:17:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA9KHj3j250819 for ; Wed, 9 Nov 2011 14:17:45 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id C926130404E for ; Wed, 9 Nov 2011 12:17:41 -0800 (PST) Received: from [134.15.95.101] (cf-vpn-hw-arenaud-4.corp.sgi.com [134.15.95.101]) by estes.americas.sgi.com (Postfix) with ESMTP id 9808470017D2 for ; Wed, 9 Nov 2011 14:17:41 -0600 (CST) Message-ID: <4EBADFE8.9000805@sgi.com> Date: Wed, 09 Nov 2011 15:17:44 -0500 From: Alain Renaud User-Agent: Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20110930 Thunderbird/7.0.1 MIME-Version: 1.0 To: xfs@oss.sgi.com Subject: Re: [PATCH] xfsprogs: add .ltdep to .gitignore References: <1320865438-27014-1-git-send-email-bpm@sgi.com> In-Reply-To: <1320865438-27014-1-git-send-email-bpm@sgi.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The change look good Reviewed-by: Alain Renaud On 11-11-09 02:03 PM, Ben Myers wrote: > Make git ignore all .ltdep files which are created as part of the build > process. > > ~/xfsprogs # find | grep ltdep > ./libxcmd/.ltdep > ./libxfs/.ltdep > ./libhandle/.ltdep > ./libdisk/.ltdep > ./libxlog/.ltdep > > Signed-off-by: Ben Myers > --- > .gitignore | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/.gitignore b/.gitignore > index aa6cd35..22b4f65 100644 > --- a/.gitignore > +++ b/.gitignore > @@ -1,6 +1,7 @@ > # object files > *.o > .dep > +.ltdep > > # build system > .census -- =============================================== Alain Renaud - Cluster File System Engineer arenaud@sgi.com - SGI =============================================== From wkendall@sgi.com Wed Nov 9 16:15:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA9MFsg0258926 for ; Wed, 9 Nov 2011 16:15:54 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6E8EC8F8073; Wed, 9 Nov 2011 14:15:51 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 60FC570017D3; Wed, 9 Nov 2011 16:15:51 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id 1FAC920E45BB; Wed, 9 Nov 2011 16:15:50 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH] xfsdump: handle Ctrl-D during prompts Date: Wed, 9 Nov 2011 16:15:46 -0600 Message-Id: <1320876946-27643-1-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfsdump does not currently handle Ctrl-D well during a dialog prompt. If some text is entered followed by Ctrl-D, an assert will trip because xfsdump expects a new-line character at the end of the user's input (or if asserts are disabled, the last character the user entered will be dropped). If Ctrl-D is entered without entering any response, some dialog callers (e.g., tree_subtree_inter()) will abort because they receive an unexpected response code. This patch changes xfsdump to treat Ctrl-D as if the user hit enter. User input (if any) will be passed back to the caller, and a new line will be echoed to the terminal. Signed-off-by: Bill Kendall --- common/dlog.c | 17 +++++++++-------- 1 files changed, 9 insertions(+), 8 deletions(-) diff --git a/common/dlog.c b/common/dlog.c index 51666cf..ddd5524 100644 --- a/common/dlog.c +++ b/common/dlog.c @@ -489,17 +489,18 @@ promptinput( char *buf, *exceptionixp = sigquitix; } return BOOL_FALSE; - } else if ( nread == 0 ) { - *exceptionixp = timeoutix; - if ( bufsz > 0 ) { - buf[ 0 ] = 0; - } - return BOOL_FALSE; } else { ASSERT( dlog_signo_received == -1 ); ASSERT( ( size_t )nread < bufsz ); - ASSERT( buf[ nread - 1 ] == '\n' ); - buf[ nread - 1 ] = 0; + /* Eat the newline if there is one. If there isn't one + * (e.g., Ctrl-D) echo one to keep the output readable. + */ + if ( !nread || buf[ nread - 1 ] != '\n' ) { + buf[ nread ] = 0; + mlog( MLOG_NORMAL | MLOG_NOLOCK | MLOG_BARE, "\n" ); + } else { + buf[ nread - 1 ] = 0; + } *exceptionixp = 0; return BOOL_TRUE; } -- 1.7.0.4 From david@fromorbit.com Wed Nov 9 16:33:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA9MXLC5260803 for ; Wed, 9 Nov 2011 16:33:21 -0600 X-ASG-Debug-ID: 1320877998-6c8703470000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0C3C61CFABE6 for ; Wed, 9 Nov 2011 14:33:18 -0800 (PST) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id j2h4qK3KfGm6bV8d for ; Wed, 09 Nov 2011 14:33:18 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av4EACb/uk55LIil/2dsb2JhbABEqiOBBoFyAQEEATIBIyMFCwgDDgouFCUDIRMbh2e4EhKJbQSdHIkP Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail06.adl6.internode.on.net with ESMTP; 10 Nov 2011 09:03:16 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1ROGhm-0000df-O6; Thu, 10 Nov 2011 09:33:14 +1100 Date: Thu, 10 Nov 2011 09:33:14 +1100 From: Dave Chinner To: Alan Cook Cc: Christoph Hellwig , linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS realtime O_DIRECT failures Subject: Re: XFS realtime O_DIRECT failures Message-ID: <20111109223314.GQ5534@dastard> References: <20111109080133.GB20604@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1320878000 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0567 1.0000 -1.6581 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.66 X-Barracuda-Spam-Status: No, SCORE=-1.66 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79799 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 09, 2011 at 08:25:02AM -0600, Alan Cook wrote: > On Wed, Nov 9, 2011 at 2:01 AM, Christoph Hellwig wrote: > > It might sounda a bit harsh, but the problem is that use the realtime > > subvolume. It hasn't really been maintained or been part of the tested > > setup, and most distros in the know ship with it disabled. I went > > through and fixed it when we got bug reports once in a while, and I'm > > happy to look into your issues once I get a bit spare time, but in > > general use is highly discouraged. Is there any specific reason why > > you want to use the RT subvolume? > > I am streaming high-resolution images to be compressed through > hardware and need to separate the data from the meta data for > compression purposes.  XFS gave that for free if I used a realtime > subvolume. I'm not sure from that description just why the realtime volume adds any benefit to your workflow. Separation of data and metadata is does not provide you with data compression, so you must be doing something different with the real time device to acheive compression. Any details on that aspect of your setup? I'm really only trying to understand why you need such a setup - it helps to understand the full use case you have before trying to determine if there is a better way of acheiving your end goal.... > I originally started on kernel 2.6.27 (CentOS 5.5) which had no issues > with the RT subvolume and direct writes.  I was then moved to kernel > 2.6.32 (SUSE 11) which does have the issue. > > I appreciate your willingness to help.  Are there any alternatives or > suggestions for splitting the data and meta data?  Any direction you > can give on where to start looking or what I could do to track down > the exact cause of the bug? I have long term plans for metadata/data separation involving a separate metadata device (i.e. so metadata space can be placed on different media, grown separately from data space, we don't give up any of the inherent parallelism in allocation like we do for the RT device, etc), but that's a long way off yet so not a solution to your problem. As to your current problem, it's got a NULL pointer dereference trying to lock the per-ag structure. That means the per-ag lookup failed, which implies that the RT freespace bitmap may be corrupt and it's tried to read a bitmap block that is apparently beyond the end of the filesystem. What does xfs_check/xfs_repair -n tell you about the filesystem state? Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Nov 9 16:37:39 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA9Mbdjn261316 for ; Wed, 9 Nov 2011 16:37:39 -0600 X-ASG-Debug-ID: 1320878257-789103650000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9E376232737 for ; Wed, 9 Nov 2011 14:37:37 -0800 (PST) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id Oih0DJtPdJU1zmDj for ; Wed, 09 Nov 2011 14:37:37 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EACb/uk55LIil/2dsb2JhbABEqiOBBoFyAQEFOhwjEAgDDgouFCUDIRPAFBKJbQSmKw Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail06.adl6.internode.on.net with ESMTP; 10 Nov 2011 09:07:36 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1ROGlz-0000eF-8d; Thu, 10 Nov 2011 09:37:35 +1100 Date: Thu, 10 Nov 2011 09:37:35 +1100 From: Dave Chinner To: Ben Myers Cc: xfs@oss.sgi.com, aelder@sgi.com, arenaud@sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: add .ltdep to .gitignore Subject: Re: [PATCH] xfsprogs: add .ltdep to .gitignore Message-ID: <20111109223735.GR5534@dastard> References: <1320865438-27014-1-git-send-email-bpm@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320865438-27014-1-git-send-email-bpm@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1320878258 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1917 1.0000 -0.8718 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.46 X-Barracuda-Spam-Status: No, SCORE=-0.46 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79799 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 09, 2011 at 01:03:58PM -0600, Ben Myers wrote: > Make git ignore all .ltdep files which are created as part of the build > process. > > ~/xfsprogs # find | grep ltdep > ./libxcmd/.ltdep > ./libxfs/.ltdep > ./libhandle/.ltdep > ./libdisk/.ltdep > ./libxlog/.ltdep > > Signed-off-by: Ben Myers The same changes are needed for the xfstests and xfsdump packages, right? Regardless, this change is good. Reviewed-by: Dave Chinner Cheers, Dave. -- Dave Chinner david@fromorbit.com From acook@visionpointsystems.com Wed Nov 9 16:53:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA9MrQTA001417 for ; Wed, 9 Nov 2011 16:53:27 -0600 X-ASG-Debug-ID: 1320879136-789203de0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from exprod7og108.obsmtp.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id ECF7E232C30 for ; Wed, 9 Nov 2011 14:52:16 -0800 (PST) Received: from exprod7og108.obsmtp.com (exprod7og108.obsmtp.com [64.18.2.169]) by cuda.sgi.com with SMTP id OkKCATQFgdvaZlOy for ; Wed, 09 Nov 2011 14:52:16 -0800 (PST) Received: from mail-yx0-f178.google.com ([209.85.213.178]) (using TLSv1) by exprod7ob108.postini.com ([64.18.6.12]) with SMTP ID DSNKTrsEH+gBfV+rQWMKLNoR7vyTA0Bjy7KC@postini.com; Wed, 09 Nov 2011 14:52:16 PST Received: by mail-yx0-f178.google.com with SMTP id q8so1647038yen.23 for ; Wed, 09 Nov 2011 14:52:15 -0800 (PST) MIME-Version: 1.0 Received: by 10.50.104.137 with SMTP id ge9mr5188345igb.38.1320879135775; Wed, 09 Nov 2011 14:52:15 -0800 (PST) Received: by 10.50.237.5 with HTTP; Wed, 9 Nov 2011 14:52:15 -0800 (PST) In-Reply-To: <20111109223314.GQ5534@dastard> References: <20111109080133.GB20604@infradead.org> <20111109223314.GQ5534@dastard> Date: Wed, 9 Nov 2011 17:52:15 -0500 Message-ID: X-ASG-Orig-Subj: Re: XFS realtime O_DIRECT failures Subject: Re: XFS realtime O_DIRECT failures From: Alan Cook To: Dave Chinner Cc: Christoph Hellwig , linux-xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: exprod7og108.obsmtp.com[64.18.2.169] X-Barracuda-Start-Time: 1320879136 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79801 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 9, 2011 at 5:33 PM, Dave Chinner wrote: > I'm not sure from that description just why the realtime volume adds > any benefit to your workflow. Separation of data and metadata is > does not provide you with data compression, so you must be doing > something different with the real time device to acheive > compression. Any details on that aspect of your setup? The compression is done via hardware that sits between the block layer and the actual storage device (in this case it is a solid state drive). Having both the data and meta data reside on the same device creates a problem, as the block layer has no idea whether it has data or meta data, and so will compress the meta data along with the regular data, which is very bad. Splitting the meta data to a separate device eliminated that problem. > I'm really only trying to understand why you need such a setup - it > helps to understand the full use case you have before trying to > determine if there is a better way of acheiving your end goal.... The use of a realtime volume is a means to an end, with the end being separated data and meta data. > As to your current problem, it's got a NULL pointer dereference > trying to lock the per-ag structure. That means the per-ag lookup > failed, which implies that the RT freespace bitmap may be corrupt > and it's tried to read a bitmap block that is apparently beyond the > end of the filesystem. What does xfs_check/xfs_repair -n tell you > about the filesystem state? Unfortunately they do not tell a lot. Running xfs_check/xfs_repair -n prior to running the test reports no errors. However, attempting to run it after the test fails results in an indefinite I/O block (state of D+ for the process). In fact, if I run the test utility twice, it results in a hung system. Some form of corruption makes sense, at least to me, given the different behavior between the first run and the second run. It gives me a place to start looking anyway. Thanks. From david@fromorbit.com Wed Nov 9 17:11:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pA9NBch4003539 for ; Wed, 9 Nov 2011 17:11:38 -0600 X-ASG-Debug-ID: 1320880295-527a00440000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4E13716D26CB for ; Wed, 9 Nov 2011 15:11:35 -0800 (PST) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id mR9aKF1EeI7izQCA for ; Wed, 09 Nov 2011 15:11:35 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EACQGu055LIil/2dsb2JhbABEqiOBBoFyAQEEAScTHCMFCwgDDgouFCUDIROIArgCEoltBKYr Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail06.adl6.internode.on.net with ESMTP; 10 Nov 2011 09:41:35 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1ROHIr-0000hn-BD; Thu, 10 Nov 2011 10:11:33 +1100 Date: Thu, 10 Nov 2011 10:11:33 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com, Stefan Pfetzing X-ASG-Orig-Subj: Re: [PATCH repair: do not walk the unlinked inode list Subject: Re: [PATCH repair: do not walk the unlinked inode list Message-ID: <20111109231133.GS5534@dastard> References: <20111109083729.GA23169@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111109083729.GA23169@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1320880297 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79802 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 09, 2011 at 03:37:29AM -0500, Christoph Hellwig wrote: > Stefan Pfetzing reported a bug where xfs_repair got stuck eating 100% CPU in > phase3. We track it down to a loop in the unlinked inode list, apparently > caused by memory corruption on an iSCSI target. > > I looked into tracking if we already saw a given unlinked inode, but given > that we keep walking even for inodes where we can't find an allocation btree > record that seems infeasible. On the other hand these inodes had their > final unlink and thus were dead even before the system went down. There > really is no point in adding them to the uncertain list and looking for > references to them later. You're making the assumption that log recovery has done the correct thing any only replayed entire unlink transactions and hence the filesystem is otherwise consistent (i.e that there are no other references). I think that's a bad assumption - there's no guarantee that the unlinked list only contains unreferenced inodes if there's been corruption and/or log replay was not able to be run. > So the simplest fix seems to be to simply remove the unlinked inode list > walk and just clear it - when we rebuild the inode allocation btrees these > will simply be marked free. I also think there's more to it than that. The walk of the inode list also marks all the blocks in the block map as containing inodes, and all the blocks still used by those inodes as data/bmap/attr types. This change removes that, so we're going to potentially lose that state if all the inodes in a block are on the unlinked list. Hence we'll end up with blocks containing inodes that are still marked as used in the AGINO btree, but are marked as free space in the block map. We'll also end up with data blocks that are otherwise still used as not being marked as used, and that is especially important for discovering multiply allocated blocks when a block has been freed (e.g. just before unlink) and then immediately reallocated and then the crash has left the state on disk inconsistent.... IOWs, it seems to me that simply removing the walk has more potential downsides in terms of error detection and tracking than it provides in benefits. I suspect that just capping the number of loops that can be executed is the simplest thing to do here. e.g. allow it to loop for as many times as there are inodes allocated in the AG or filesystem (e.g. agi->agi_count - agi->agi_free). Yes, it will still spin for some time on this sort of corruption, but it won't get stuck, and it won't add new holes into our block/inode usage tracking... The logical extension of this is that having a "unlinked inode count" in the AGI would be really useful here. I'll add it to the (growing) list of "things to add with CRC checking on-disk format modifications". Cheers, Dave. -- Dave Chinner david@fromorbit.com From dave@fromorbit.com Wed Nov 9 18:08:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAA08N4q008856 for ; Wed, 9 Nov 2011 18:08:23 -0600 X-ASG-Debug-ID: 1320883701-76b801150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4A25810416CD for ; Wed, 9 Nov 2011 16:08:21 -0800 (PST) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 1MMgrBPCfl1Yq7jY for ; Wed, 09 Nov 2011 16:08:21 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqYHADkUu055LIil/2dsb2JhbABEmmuPOIEGgXIBXDsYagM0n0egN4l/BKYr Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail06.adl6.internode.on.net with ESMTP; 10 Nov 2011 10:38:21 +1030 Received: from disappointment ([192.168.1.1]) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1ROIBn-0000mn-2V for xfs@oss.sgi.com; Thu, 10 Nov 2011 11:08:19 +1100 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1ROIBm-0000rO-Pt for xfs@oss.sgi.com; Thu, 10 Nov 2011 11:08:18 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfstests: fix logging on test 205 Subject: [PATCH] xfstests: fix logging on test 205 Date: Thu, 10 Nov 2011 11:08:18 +1100 Message-Id: <1320883698-3262-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.4 X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1320883702 X-Barracuda-Bayes: INNOCENT GLOBAL 0.3099 1.0000 -0.3065 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.31 X-Barracuda-Spam-Status: No, SCORE=-0.31 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79806 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner Make the logging of operations in test 205 to the 205.full file work correctly. This prevents the overwrite of mkfs status, and leaves the 205.full file around for later analysis even on successful test runs. Signed-off-by: Dave Chinner --- 205 | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/205 b/205 index 35d6992..bd916a1 100755 --- a/205 +++ b/205 @@ -40,12 +40,14 @@ _supported_os Linux _require_scratch -_scratch_mkfs_xfs -d size=16m -b size=512 >/dev/null +rm -f $seq.full + +_scratch_mkfs_xfs -d size=16m -b size=512 >> $seq.full 2>&1 _scratch_mount # fix the reserve block pool to a known size so that the enospc calculations # work out correctly. -_scratch_resvblks 1024 > $seq.full 2>&1 +_scratch_resvblks 1024 >> $seq.full 2>&1 # on a 16MB filesystem, there's 32768x512byte blocks. used is: # - 4944 in the log, @@ -79,5 +81,4 @@ dd if=/dev/zero of=$SCRATCH_MNT/fred bs=15 count=$[26745/15*512] 2>&1 | _filter_ # success, all done echo "*** done" -rm -f $seq.full status=0 -- 1.7.5.4 From mitsuo.hayasaka.hu@hitachi.com Wed Nov 9 19:30:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAA1Un9g015989 for ; Wed, 9 Nov 2011 19:30:49 -0600 X-ASG-Debug-ID: 1320888647-0af3005e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail7.hitachi.co.jp (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CE6D9233711; Wed, 9 Nov 2011 17:30:47 -0800 (PST) Received: from mail7.hitachi.co.jp (mail7.hitachi.co.jp [133.145.228.42]) by cuda.sgi.com with ESMTP id zehuoO9V0VHkOjwY; Wed, 09 Nov 2011 17:30:47 -0800 (PST) Received: from mlsv4.hitachi.co.jp (unknown [133.144.234.166]) by mail7.hitachi.co.jp (Postfix) with ESMTP id 26D9137AC8; Thu, 10 Nov 2011 10:30:46 +0900 (JST) Received: from mfilter04.hitachi.co.jp by mlsv4.hitachi.co.jp (8.13.1/8.13.1) id pAA1Ukhi020529; Thu, 10 Nov 2011 10:30:46 +0900 Received: from vshuts3.hitachi.co.jp (vshuts3.hitachi.co.jp [10.201.6.72]) by mfilter04.hitachi.co.jp (Switch-3.3.4/Switch-3.3.4) with ESMTP id pAA1Ujq2022413; Thu, 10 Nov 2011 10:30:45 +0900 X-AuditID: b753bd60-9fe84ba000000655-60-4ebb2944cdf6 Received: from hsdlmain.sdl.hitachi.co.jp (unknown [133.144.14.194]) by vshuts3.hitachi.co.jp (Symantec Mail Security) with ESMTP id EFBBB774262; Thu, 10 Nov 2011 10:30:44 +0900 (JST) Received: from hsdlvgate2.sdl.hitachi.co.jp by hsdlmain.sdl.hitachi.co.jp (8.13.1/3.7W11021512) id pAA1UiwM023303; Thu, 10 Nov 2011 10:30:44 +0900 X-AuditID: b753bd60-9fe84ba000000655-60-4ebb2944cdf6 Received: from sdl99w.sdl.hitachi.co.jp (sdl99w.sdl.hitachi.co.jp [133.144.14.250]) by hsdlvgate2.sdl.hitachi.co.jp (Symantec Mail Security) with ESMTP id EF0F728F09A; Thu, 10 Nov 2011 10:30:35 +0900 (JST) Received: from ltc219.sdl.hitachi.co.jp (cb10033149.sdl.hitachi.co.jp [10.232.10.18]) by sdl99w.sdl.hitachi.co.jp (Postfix) with ESMTP id B6E1C125486; Thu, 10 Nov 2011 10:28:01 +0900 (JST) From: Mitsuo Hayasaka X-ASG-Orig-Subj: [PATCH] [BUGFIX] xfs: use doalloc flag in xfs_qm_dqattach_one() Subject: [PATCH] [BUGFIX] xfs: use doalloc flag in xfs_qm_dqattach_one() To: Alex Elder , Christoph Hellwig Cc: xfs-masters@oss.sgi.com, xfs@oss.sgi.com, linux-kernel@vger.kernel.org, yrl.pp-manager.tt@hitachi.com, Mitsuo Hayasaka , Alex Elder , Christoph Hellwig Date: Thu, 10 Nov 2011 10:33:10 +0900 Message-ID: <20111110013310.3408.41745.stgit@ltc219.sdl.hitachi.co.jp> User-Agent: StGIT/0.14.3 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Brightmail-Tracker: AAAAAA== X-Barracuda-Connect: mail7.hitachi.co.jp[133.145.228.42] X-Barracuda-Start-Time: 1320888648 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79811 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The doalloc arg in xfs_qm_dqattach_one() is a flag that indicates whether a new area to handle quota information will be allocated if needed. Originally, it was passed to xfs_qm_dqget(), but has been removed by the following commit (probably by mistake): commit 8e9b6e7fa4544ea8a0e030c8987b918509c8ff47 Author: Christoph Hellwig Date: Sun Feb 8 21:51:42 2009 +0100 xfs: remove the unused XFS_QMOPT_DQLOCK flag As the result, xfs_qm_dqget() called from xfs_qm_dqattach_one() never allocates the new area even if it is needed. This patch gives the doalloc arg to xfs_qm_dqget() in xfs_qm_dqattach_one() to fix this problem. Signed-off-by: Mitsuo Hayasaka Cc: Alex Elder Cc: Christoph Hellwig --- fs/xfs/xfs_qm.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c index 9a0aa76..95ba6dc 100644 --- a/fs/xfs/xfs_qm.c +++ b/fs/xfs/xfs_qm.c @@ -674,7 +674,8 @@ xfs_qm_dqattach_one( * disk and we didn't ask it to allocate; * ESRCH if quotas got turned off suddenly. */ - error = xfs_qm_dqget(ip->i_mount, ip, id, type, XFS_QMOPT_DOWARN, &dqp); + error = xfs_qm_dqget(ip->i_mount, ip, id, type, + doalloc | XFS_QMOPT_DOWARN, &dqp); if (error) return error; From BATV+226cfcc83de5ad32bc2a+3000+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 10 01:37:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAA7bFYY053558 for ; Thu, 10 Nov 2011 01:37:16 -0600 X-ASG-Debug-ID: 1320910629-7e48032d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3A1351044E14; Wed, 9 Nov 2011 23:37:09 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id AtGGvE0T4GiVjHwe; Wed, 09 Nov 2011 23:37:09 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1ROPC7-0001R4-6c; Thu, 10 Nov 2011 07:37:07 +0000 Date: Thu, 10 Nov 2011 02:37:07 -0500 From: Christoph Hellwig To: Mitsuo Hayasaka Cc: Alex Elder , Christoph Hellwig , yrl.pp-manager.tt@hitachi.com, linux-kernel@vger.kernel.org, xfs@oss.sgi.com, xfs-masters@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] [BUGFIX] xfs: use doalloc flag in xfs_qm_dqattach_one() Subject: Re: [PATCH] [BUGFIX] xfs: use doalloc flag in xfs_qm_dqattach_one() Message-ID: <20111110073707.GA5500@infradead.org> References: <20111110013310.3408.41745.stgit@ltc219.sdl.hitachi.co.jp> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111110013310.3408.41745.stgit@ltc219.sdl.hitachi.co.jp> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320910631 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79836 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 10:33:10AM +0900, Mitsuo Hayasaka wrote: > The doalloc arg in xfs_qm_dqattach_one() is a flag that indicates > whether a new area to handle quota information will be allocated > if needed. Originally, it was passed to xfs_qm_dqget(), but has > been removed by the following commit (probably by mistake): > > commit 8e9b6e7fa4544ea8a0e030c8987b918509c8ff47 > Author: Christoph Hellwig > Date: Sun Feb 8 21:51:42 2009 +0100 > > xfs: remove the unused XFS_QMOPT_DQLOCK flag > > As the result, xfs_qm_dqget() called from xfs_qm_dqattach_one() > never allocates the new area even if it is needed. > > This patch gives the doalloc arg to xfs_qm_dqget() in > xfs_qm_dqattach_one() to fix this problem. Thanks a lot, this is a good fix. Do you have a good testcase showing the effect? Reviewed-by: Christoph Hellwig From BATV+226cfcc83de5ad32bc2a+3000+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 10 02:31:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAA8VGX2060461 for ; Thu, 10 Nov 2011 02:31:16 -0600 X-ASG-Debug-ID: 1320913874-7782012b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2981116D3AB1; Thu, 10 Nov 2011 00:31:14 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Jy9zt3lRdojgSVz5; Thu, 10 Nov 2011 00:31:14 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1ROQ2U-0003c7-2R; Thu, 10 Nov 2011 08:31:14 +0000 Date: Thu, 10 Nov 2011 03:31:14 -0500 From: Christoph Hellwig To: Bill Kendall Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsdump: handle Ctrl-D during prompts Subject: Re: [PATCH] xfsdump: handle Ctrl-D during prompts Message-ID: <20111110083113.GA10573@infradead.org> References: <1320876946-27643-1-git-send-email-wkendall@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320876946-27643-1-git-send-email-wkendall@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320913875 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79838 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 09, 2011 at 04:15:46PM -0600, Bill Kendall wrote: > xfsdump does not currently handle Ctrl-D well during a dialog > prompt. If some text is entered followed by Ctrl-D, an assert > will trip because xfsdump expects a new-line character at the > end of the user's input (or if asserts are disabled, the last > character the user entered will be dropped). > > If Ctrl-D is entered without entering any response, some dialog > callers (e.g., tree_subtree_inter()) will abort because they > receive an unexpected response code. > > This patch changes xfsdump to treat Ctrl-D as if the user hit > enter. User input (if any) will be passed back to the caller, > and a new line will be echoed to the terminal. Shouldn't Ctrl+D cause us to ignore the input that was added before? That's what I would expect from command line applications. From BATV+226cfcc83de5ad32bc2a+3000+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 10 05:00:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAB0KbD074665 for ; Thu, 10 Nov 2011 05:00:22 -0600 X-ASG-Debug-ID: 1320922817-5dfc009e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 70F171CFD54A; Thu, 10 Nov 2011 03:00:17 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Do9XkgQji7lpqdti; Thu, 10 Nov 2011 03:00:17 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1ROSMj-0007nV-3a; Thu, 10 Nov 2011 11:00:17 +0000 Date: Thu, 10 Nov 2011 06:00:17 -0500 From: Christoph Hellwig To: Bill Kendall Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH v2 0/8] xfsdump: enable support for multiple streams Subject: Re: [PATCH v2 0/8] xfsdump: enable support for multiple streams Message-ID: <20111110110017.GA26747@infradead.org> References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320699511-12281-1-git-send-email-wkendall@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320922818 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1300 1.0000 -1.2157 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.12 X-Barracuda-Spam-Status: No, SCORE=-1.12 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79849 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I've put these changes, and Mike's path.c fix in. It seems like the whole autoconf/aclocal foo needs to be regenerated to make the libpthread substitution to work. What is your schedule for turning on the tap ring buffer, and redoing the stream split scan? Should we wait for them or aim for a release with the current improvements relatively quickly? From BATV+226cfcc83de5ad32bc2a+3000+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 10 05:11:36 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAABBZgx075561 for ; Thu, 10 Nov 2011 05:11:36 -0600 X-ASG-Debug-ID: 1320923494-08b802b80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 35D0F126519F for ; Thu, 10 Nov 2011 03:11:34 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id ZL7KlHBt04PMOci4 for ; Thu, 10 Nov 2011 03:11:34 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1ROSXd-0001ha-Ef; Thu, 10 Nov 2011 11:11:33 +0000 Date: Thu, 10 Nov 2011 06:11:33 -0500 From: Christoph Hellwig To: Carlos Maiolino Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/2] Set lost+found inode as used after its allocation Subject: Re: [PATCH 0/2] Set lost+found inode as used after its allocation Message-ID: <20111110111133.GA6525@infradead.org> References: <1320857647-25511-1-git-send-email-cmaiolino@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320857647-25511-1-git-send-email-cmaiolino@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320923495 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0008 1.0000 -2.0155 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79850 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Thanks a lot, I've put the patches in. I'd love to see followups to use the the get_inode_offset helper more often, and to add a testcase for the bug if possible. From BATV+226cfcc83de5ad32bc2a+3000+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 10 05:11:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAABBmqv075619 for ; Thu, 10 Nov 2011 05:11:48 -0600 X-ASG-Debug-ID: 1320923506-23f403cf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 10433234549; Thu, 10 Nov 2011 03:11:46 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 1EqE1H7V6NkjJA34; Thu, 10 Nov 2011 03:11:46 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1ROSXq-0001hh-4a; Thu, 10 Nov 2011 11:11:46 +0000 Date: Thu, 10 Nov 2011 06:11:46 -0500 From: Christoph Hellwig To: Ben Myers Cc: xfs@oss.sgi.com, aelder@sgi.com, arenaud@sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: add .ltdep to .gitignore Subject: Re: [PATCH] xfsprogs: add .ltdep to .gitignore Message-ID: <20111110111146.GB6525@infradead.org> References: <1320865438-27014-1-git-send-email-bpm@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320865438-27014-1-git-send-email-bpm@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320923508 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.51 X-Barracuda-Spam-Status: No, SCORE=-1.51 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC, SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79849 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Thanks a lot, I've put it in. From BATV+226cfcc83de5ad32bc2a+3000+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 10 05:18:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAABIpBK076108 for ; Thu, 10 Nov 2011 05:18:52 -0600 X-ASG-Debug-ID: 1320923930-51dd02000000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E99A01F335CC for ; Thu, 10 Nov 2011 03:18:50 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id bA0yf9lswTF76bSd for ; Thu, 10 Nov 2011 03:18:50 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1ROSeg-0002e2-4k for xfs@oss.sgi.com; Thu, 10 Nov 2011 11:18:50 +0000 Date: Thu, 10 Nov 2011 06:18:50 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: fix attr2 vs large data fork assert Subject: Re: [PATCH] xfs: fix attr2 vs large data fork assert Message-ID: <20111110111850.GA10160@infradead.org> References: <20111104152506.GA7869@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111104152506.GA7869@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320923930 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79849 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean ping? This is a fairly nasty issue which should be fixed ASAP and go into -stable. On Fri, Nov 04, 2011 at 11:25:06AM -0400, Christoph Hellwig wrote: > With Dmitry fsstress updates I've seen very reproducible crashes in > xfs_attr_shortform_remove because xfs_attr_shortform_bytesfit claims that > the attributes would not fit inline into the inode after removing an > attribute. It turns out that we were operating on an inode with lots > of delalloc extents, and thus an if_bytes values for the data fork that > is larger than biggest possible on-disk storage for it which utterly > confuses the code near the end of xfs_attr_shortform_bytesfit. > > Fix this by always allowing the current attribute fork, like we already > do for the attr1 format, given that delalloc conversion will take care > for moving either the data or attribute area out of line if it doesn't > fit at that point - or making the point moot by merging extents at this > point. > > Also document the function better, and clean up some lose bits. > > Signed-off-by: Christoph Hellwig > > Index: linux-2.6/fs/xfs/xfs_attr_leaf.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_attr_leaf.c 2011-11-04 13:46:59.481655134 +0100 > +++ linux-2.6/fs/xfs/xfs_attr_leaf.c 2011-11-04 15:58:06.480155275 +0100 > @@ -110,6 +110,7 @@ xfs_attr_namesp_match(int arg_flags, int > /* > * Query whether the requested number of additional bytes of extended > * attribute space will be able to fit inline. > + * > * Returns zero if not, else the di_forkoff fork offset to be used in the > * literal area for attribute data once the new bytes have been added. > * > @@ -136,11 +137,26 @@ xfs_attr_shortform_bytesfit(xfs_inode_t > return (offset >= minforkoff) ? minforkoff : 0; > } > > - if (!(mp->m_flags & XFS_MOUNT_ATTR2)) { > - if (bytes <= XFS_IFORK_ASIZE(dp)) > - return dp->i_d.di_forkoff; > + /* > + * If the requested numbers of bytes is smaller or equal to the > + * current attribute fork size we can always proceed. > + * > + * Note that if_bytes in the data fork might actually be larger than > + * the current data fork size is due to delalloc extents. In that > + * case either the extent count will go down when they are converted > + * to ral extents, or the delalloc conversion will take care of the > + * literal area rebalancing. > + */ > + if (bytes <= XFS_IFORK_ASIZE(dp)) > + return dp->i_d.di_forkoff; > + > + /* > + * For attr2 we can try to move the forkoff if there is space in the > + * literal area, but for the old format we are done if there is no > + * space in the fixes attribute fork. > + */ > + if (!(mp->m_flags & XFS_MOUNT_ATTR2)) > return 0; > - } > > dsize = dp->i_df.if_bytes; > > @@ -157,10 +173,9 @@ xfs_attr_shortform_bytesfit(xfs_inode_t > xfs_default_attroffset(dp)) > dsize = XFS_BMDR_SPACE_CALC(MINDBTPTRS); > break; > - > case XFS_DINODE_FMT_BTREE: > /* > - * If have data btree then keep forkoff if we have one, > + * If have a data btree then keep forkoff if we have one, > * otherwise we are adding a new attr, so then we set > * minforkoff to where the btree root can finish so we have > * plenty of room for attrs > @@ -168,10 +183,9 @@ xfs_attr_shortform_bytesfit(xfs_inode_t > if (dp->i_d.di_forkoff) { > if (offset < dp->i_d.di_forkoff) > return 0; > - else > - return dp->i_d.di_forkoff; > - } else > - dsize = XFS_BMAP_BROOT_SPACE(dp->i_df.if_broot); > + return dp->i_d.di_forkoff; > + } > + dsize = XFS_BMAP_BROOT_SPACE(dp->i_df.if_broot); > break; > } > > @@ -186,10 +200,10 @@ xfs_attr_shortform_bytesfit(xfs_inode_t > maxforkoff = XFS_LITINO(mp) - XFS_BMDR_SPACE_CALC(MINABTPTRS); > maxforkoff = maxforkoff >> 3; /* rounded down */ > > - if (offset >= minforkoff && offset < maxforkoff) > - return offset; > if (offset >= maxforkoff) > return maxforkoff; > + if (offset >= minforkoff) > + return offset; > return 0; > } > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From cmaiolino@redhat.com Thu Nov 10 06:07:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAC75Z8080550 for ; Thu, 10 Nov 2011 06:07:05 -0600 X-ASG-Debug-ID: 1320926823-0322007d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CFA662338D1 for ; Thu, 10 Nov 2011 04:07:03 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id ArkwlZO6ZVvYcoWO for ; Thu, 10 Nov 2011 04:07:03 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pAAC6vhv031162 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 10 Nov 2011 07:06:57 -0500 Received: from andromeda.usersys.redhat.com (ovpn-113-26.phx2.redhat.com [10.3.113.26]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id pAAC6sSs004732 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Thu, 10 Nov 2011 07:06:56 -0500 Date: Thu, 10 Nov 2011 10:05:41 -0200 From: Carlos Maiolino To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/2] Set lost+found inode as used after its allocation Subject: Re: [PATCH 0/2] Set lost+found inode as used after its allocation Message-ID: <20111110120541.GC21214@andromeda.usersys.redhat.com> References: <1320857647-25511-1-git-send-email-cmaiolino@redhat.com> <20111110111133.GA6525@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111110111133.GA6525@infradead.org> User-Agent: Mutt/1.5.20 (2009-12-10) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1320926824 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > I'd love to see followups to use the the get_inode_offset helper more > often, and to add a testcase for the bug if possible. Hi Chris, I added the xfstests test case creation to my todo list, I should have this implemented soon. -- --Carlos From BATV+226cfcc83de5ad32bc2a+3000+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 10 07:52:10 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAADq9lZ090353 for ; Thu, 10 Nov 2011 07:52:10 -0600 X-ASG-Debug-ID: 1320933123-65fc02590000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1336E104866F for ; Thu, 10 Nov 2011 05:52:03 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id AqcYyXejnZkbp9iH for ; Thu, 10 Nov 2011 05:52:03 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1ROV2w-0007MS-Tl for xfs@oss.sgi.com; Thu, 10 Nov 2011 13:52:02 +0000 Date: Thu, 10 Nov 2011 08:52:02 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: userspace status Subject: userspace status Message-ID: <20111110135202.GA27838@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320933125 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0036 1.0000 -1.9976 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA606_DYN_OB, BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79860 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 2.00 BSF_SC0_SA606_DYN_OB Custom Outbreak Rule SA606_DYN_OB X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I think I have applied all pending reviewed userspace patches to the kernel.org repositories. If anything is missing please ping me. From wkendall@sgi.com Thu Nov 10 10:22:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAGMDA6104383 for ; Thu, 10 Nov 2011 10:22:13 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id D01E9304081; Thu, 10 Nov 2011 08:22:09 -0800 (PST) Received: from [134.15.68.220] (cf-vpn-sw-corp-68-220.corp.sgi.com [134.15.68.220]) by estes.americas.sgi.com (Postfix) with ESMTP id 914237000778; Thu, 10 Nov 2011 10:22:09 -0600 (CST) Message-ID: <4EBBFA31.5040408@sgi.com> Date: Thu, 10 Nov 2011 10:22:09 -0600 From: Bill Kendall User-Agent: Thunderbird 1.5.0.14ubu (X11/20080502) MIME-Version: 1.0 To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH v2 0/8] xfsdump: enable support for multiple streams References: <1320699511-12281-1-git-send-email-wkendall@sgi.com> <20111110110017.GA26747@infradead.org> In-Reply-To: <20111110110017.GA26747@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > I've put these changes, and Mike's path.c fix in. It seems like the > whole autoconf/aclocal foo needs to be regenerated to make the > libpthread substitution to work. > > What is your schedule for turning on the tap ring buffer, and redoing > the stream split scan? Should we wait for them or aim for a release > with the current improvements relatively quickly? I haven't started working on any of that yet, and will be side tracked with other work for a while. It's probably best not to hold a release for those changes. Bill From bpm@sgi.com Thu Nov 10 10:24:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAGOv1K104589 for ; Thu, 10 Nov 2011 10:24:57 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id 768608F804C; Thu, 10 Nov 2011 08:24:54 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 9816F431F74; Thu, 10 Nov 2011 10:25:11 -0600 (CST) Date: Thu, 10 Nov 2011 10:25:11 -0600 From: Ben Myers To: Dave Chinner Cc: aelder@sgi.com, arenaud@sgi.com, xfs@oss.sgi.com Subject: Re: [PATCH] xfsprogs: add .ltdep to .gitignore Message-ID: <20111110162511.GA29840@sgi.com> References: <1320865438-27014-1-git-send-email-bpm@sgi.com> <20111109223735.GR5534@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111109223735.GR5534@dastard> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Dave, On Thu, Nov 10, 2011 at 09:37:35AM +1100, Dave Chinner wrote: > On Wed, Nov 09, 2011 at 01:03:58PM -0600, Ben Myers wrote: > > Make git ignore all .ltdep files which are created as part of the build > > process. > > > > ~/xfsprogs # find | grep ltdep > > ./libxcmd/.ltdep > > ./libxfs/.ltdep > > ./libhandle/.ltdep > > ./libdisk/.ltdep > > ./libxlog/.ltdep > > > > Signed-off-by: Ben Myers > > The same changes are needed for the xfstests and xfsdump packages, > right? Regardless, this change is good. Yep, it looks like there are a few things we can add to .gitignore in xfstests. Bill Kendall may have already resolved them in xfsdump. I'll take a peek. THanks, Ben > Reviewed-by: Dave Chinner > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From wkendall@sgi.com Thu Nov 10 10:39:47 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAGdk7C105859 for ; Thu, 10 Nov 2011 10:39:47 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8A34FAC00C; Thu, 10 Nov 2011 08:39:43 -0800 (PST) Received: from [134.15.68.220] (cf-vpn-sw-corp-68-220.corp.sgi.com [134.15.68.220]) by estes.americas.sgi.com (Postfix) with ESMTP id 18AA67000778; Thu, 10 Nov 2011 10:39:43 -0600 (CST) Message-ID: <4EBBFE4E.6050900@sgi.com> Date: Thu, 10 Nov 2011 10:39:42 -0600 From: Bill Kendall User-Agent: Thunderbird 1.5.0.14ubu (X11/20080502) MIME-Version: 1.0 To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfsdump: handle Ctrl-D during prompts References: <1320876946-27643-1-git-send-email-wkendall@sgi.com> <20111110083113.GA10573@infradead.org> In-Reply-To: <20111110083113.GA10573@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Wed, Nov 09, 2011 at 04:15:46PM -0600, Bill Kendall wrote: >> xfsdump does not currently handle Ctrl-D well during a dialog >> prompt. If some text is entered followed by Ctrl-D, an assert >> will trip because xfsdump expects a new-line character at the >> end of the user's input (or if asserts are disabled, the last >> character the user entered will be dropped). >> >> If Ctrl-D is entered without entering any response, some dialog >> callers (e.g., tree_subtree_inter()) will abort because they >> receive an unexpected response code. >> >> This patch changes xfsdump to treat Ctrl-D as if the user hit >> enter. User input (if any) will be passed back to the caller, >> and a new line will be echoed to the terminal. > > Shouldn't Ctrl+D cause us to ignore the input that was added > before? That's what I would expect from command line applications. Ctrl-C will behave the way you describe. I tried a some interactive programs (parted, python, sftp, bash, xfs_db), and Ctrl-D seems to be ignored if there's already some input. I'll rework the patch to behave this way unless I hear back from you. Thanks, Bill From bpm@sgi.com Thu Nov 10 11:42:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_84 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAHgSJU111709 for ; Thu, 10 Nov 2011 11:42:28 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id 95C7030406B; Thu, 10 Nov 2011 09:42:25 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id B8DE5431F74; Thu, 10 Nov 2011 11:42:42 -0600 (CST) Date: Thu, 10 Nov 2011 11:42:42 -0600 From: Ben Myers To: Christoph Hellwig Cc: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Message-ID: <20111110174242.GZ20464@sgi.com> References: <20111108085614.478431403@bombadil.infradead.org> <20111108085846.291838677@bombadil.infradead.org> <20111108231118.GP5534@dastard> <20111109075847.GA20604@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111109075847.GA20604@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Christoph, On Wed, Nov 09, 2011 at 02:58:47AM -0500, Christoph Hellwig wrote: > +STATIC int > +xfs_init_mount_workqueues( > + struct xfs_mount *mp) > +{ > +#define XFS_WQ_NAME_LEN 512 > + char name[XFS_WQ_NAME_LEN]; > + > + snprintf(name, XFS_WQ_NAME_LEN, "xfs-data/%s", mp->m_fsname); > + mp->m_data_workqueue = alloc_workqueue(name, WQ_MEM_RECLAIM, 1); > + if (!mp->m_data_workqueue) > + goto out; Looks to me like alloc_workqueue holds on to that name pointer in wq->name... won't overwriting the name below be a problem? > + snprintf(name, XFS_WQ_NAME_LEN, "xfs-conv/%s", mp->m_fsname); > + mp->m_unwritten_workqueue = alloc_workqueue(name, WQ_MEM_RECLAIM, 1); > + if (!mp->m_unwritten_workqueue) > + goto out_destroy_data_iodone_queue; -Ben From wkendall@sgi.com Thu Nov 10 12:55:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAItmb5119173 for ; Thu, 10 Nov 2011 12:55:48 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id 759258F8089; Thu, 10 Nov 2011 10:55:45 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id 6AE6D70001D6; Thu, 10 Nov 2011 12:55:45 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id 3386220E45C7; Thu, 10 Nov 2011 12:55:45 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH v2] xfsdump: handle Ctrl-D during prompts Date: Thu, 10 Nov 2011 12:55:42 -0600 Message-Id: <1320951342-15477-1-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfsdump does not currently handle Ctrl-D well during a dialog prompt. If some text is entered followed by Ctrl-D, an assert will trip because xfsdump expects a new-line character at the end of the user's input (or if asserts are disabled, the last character the user entered will be dropped). If Ctrl-D is entered without entering any response, some dialog callers (e.g., tree_subtree_inter()) will abort because they receive an unexpected response code. This patch changes xfsdump to behave like other interactive commands (xfs_db, bash, parted, ...) with respect to Ctrl-D. If Ctrl-D precedes any input, an empty string is returned. If Ctrl-D follows some input, it is ignored and xfsdump will continue to wait for more input. Signed-off-by: Bill Kendall --- Changed in v2: - Handle Ctrl-D like other commands do, rather than treating it as if the user typed 'enter'. common/dlog.c | 33 ++++++++++++++++++++++----------- 1 files changed, 22 insertions(+), 11 deletions(-) diff --git a/common/dlog.c b/common/dlog.c index 51666cf..ac0cafc 100644 --- a/common/dlog.c +++ b/common/dlog.c @@ -382,6 +382,7 @@ promptinput( char *buf, time32_t now = time( NULL ); intgen_t nread = -1; sigset_t orig_set; + char *bufp = buf; /* display the pre-prompt */ @@ -447,8 +448,27 @@ promptinput( char *buf, rc = select( dlog_ttyfd + 1, &rfds, NULL, NULL, &tv ); if ( rc > 0 && FD_ISSET( dlog_ttyfd, &rfds ) ) { - nread = read( dlog_ttyfd, buf, bufsz - 1 ); - break; + nread = read( dlog_ttyfd, bufp, bufsz ); + if ( nread < 0 ) { + break; // error handled below + } else if ( nread == 0 && buf == bufp ) { + mlog( MLOG_NORMAL | MLOG_NOLOCK | MLOG_BARE, "\n" ); + *bufp = 0; + break; // no input, return an empty string + } else if ( nread > 0 && bufp[nread-1] == '\n' ) { + // received a full line, chomp the newline + bufp[nread-1] = 0; + break; + } else if ( nread == bufsz ) { + // no more room, truncate and return + bufp[nread-1] = 0; + break; + } + + // keep waiting for a full line of input + bufp += nread; + bufsz -= nread; + nread = -1; } now = time( NULL ); } @@ -489,17 +509,8 @@ promptinput( char *buf, *exceptionixp = sigquitix; } return BOOL_FALSE; - } else if ( nread == 0 ) { - *exceptionixp = timeoutix; - if ( bufsz > 0 ) { - buf[ 0 ] = 0; - } - return BOOL_FALSE; } else { ASSERT( dlog_signo_received == -1 ); - ASSERT( ( size_t )nread < bufsz ); - ASSERT( buf[ nread - 1 ] == '\n' ); - buf[ nread - 1 ] = 0; *exceptionixp = 0; return BOOL_TRUE; } -- 1.7.0.4 From robert6oconnor6@gmail.com Thu Nov 10 13:52:54 2011 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAJqrRo123754 for ; Thu, 10 Nov 2011 13:52:53 -0600 X-ASG-Debug-ID: 1320954767-701e01130000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from omp1023.access.mail.sp2.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 78D561CFF85A for ; Thu, 10 Nov 2011 11:52:47 -0800 (PST) Received: from omp1023.access.mail.sp2.yahoo.com (omp1023.access.mail.sp2.yahoo.com [98.139.44.86]) by cuda.sgi.com with SMTP id g4BCOOIYq0wdeFNj for ; Thu, 10 Nov 2011 11:52:47 -0800 (PST) Received: (qmail 18392 invoked by uid 1000); 10 Nov 2011 19:52:47 -0000 Received: (qmail 42676 invoked by uid 60001); 10 Nov 2011 19:52:44 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1320954764; bh=ODx+scwELQQOL5GeMdcWS1k/lW1hqSayfpvIT4AXyOA=; h=X-YMail-OSG:Received:X-RocketYMMF:X-Mailer:Message-ID:Date:From:Subject:To:MIME-Version:Content-Type; b=EbsZSXuyI9Bpa0MDTk2E9YAoObThFubittyfBZwfSJ7YysUBQwInlJDxHd+teuIaHOAxBGjkdIecQwswUq5wKTpNKCRS2THQtIjOWUpYLH36hqhUBxxINkDi9Aub/RuGZxVRynsyMszCzUJ/VFlv3Bs9yW6zkg+bmvtAyuZFxi8= X-YMail-OSG: YYm2fxcVM1locUcgSanGbjAGKKPmOk1J9HVUCgXXYwfj5bF NprRCkA.j_Mcs03_SZiTMA0gerMgAXtXA9mzE_cKC4Xqzg6XcGcbymcGNAkl GsnDahJH_z.ACQApcdDHiTfhuPsNGCVaIJrxyI4E6ci0NM2BUe_I_kXP6RxX XAiae9oiMsm0dd6XITvqCRdr0C.VQWjkq8NLD7KG5VZnieAr4XdkPxZTfSwq sQ9R18aiz7cJpy4zuroXcyYBTs25YAOX5qNt.i.IDmXqawSTMkSW1Z_J.5QY 2CCyAzcSG8I97XuWoH7vn6g5RdF6MJPK5MX41dK0eUFhjve16_eQXit4KLj0 TlkwS3ExaPbR8yZtcSEWEsVpscAj8CCDGxNDcCIXDXoOEIUo4gEY8gTnGkUZ EsYVcW4XyB7Ya72oxMMrgc6GS4Q-- Received: from [41.30.118.221] by web181512.mail.ne1.yahoo.com via HTTP; Thu, 10 Nov 2011 11:52:44 PST X-RocketYMMF: web.ffll@att.net X-Mailer: YahooMailRC/574 YahooMailWebService/0.8.115.325013 Message-ID: <1320954764.690.YahooMailRC@web181512.mail.ne1.yahoo.com> Date: Thu, 10 Nov 2011 11:52:44 -0800 (PST) From: Robert Oconnor X-ASG-Orig-Subj: Consider and get back to me please Subject: Consider and get back to me please To: undisclosed recipients: ; MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-556272579-1320954764=:690" X-Barracuda-Connect: omp1023.access.mail.sp2.yahoo.com[98.139.44.86] X-Barracuda-Start-Time: 1320954770 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --0-556272579-1320954764=:690 Content-Type: multipart/alternative; boundary="0-1593864543-1320954764=:690" --0-1593864543-1320954764=:690 Content-Type: text/plain; charset=us-ascii Please open the attachment for more details Regards, Robert --0-1593864543-1320954764=:690 Content-Type: text/html; charset=us-ascii
Please open the attachment for more details

Regards,
Robert

--0-1593864543-1320954764=:690-- --0-556272579-1320954764=:690 Content-Type: image/bmp; name="proposal.bmp" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="proposal.bmp" Qk02ohIAAAAAADYAAAAoAAAAgAIAAHwCAAABABgAAAAAAACiEgAAAAAAAAAA AAAAAAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////0NDQfHx8////////////////2dnZaGho//// ////////////////////0NDQfHx8////////////////2dnZaGho//////// ////////////////0NDQfHx8////////////////2dnZaGho//////////// ////////fHx8fHx8////////////AAAA6enpjIyMAAAAjIyM//////////// 4eHhTU1NAAAAp6en////mpqaAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAA AAAA////////0NDQAAAAfHx86enp////4eHhTU1NAAAAp6en////mpqaAAAA jIyMAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////////4eHhaGho AAAAaGho6enpTU1Np6en6enp////////4eHhfHx8AAAAmpqa6enp////AAAA AAAAAAAATU1N////////////////fHx8fHx8////////////////6enpfHx8 AAAAaGho0NDQ////////////////6enpmpqaAAAAAAAAp6en8PDw//////// AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////fHx8AAAA0NDQ////////////p6enAAAA2dnZ//////////////////// fHx8AAAA0NDQ////////////p6enAAAA2dnZ////////////////////fHx8 AAAA0NDQ////////////p6enAAAA2dnZ////////////////fHx8fHx8//// ////////AAAAfHx84eHh////4eHhjIyM////////aGhoAAAA0NDQ////x8fH AAAAAAAA6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////////TU1NAAAA 6enpjIyM////aGhoAAAA0NDQ////x8fHAAAAAAAA////mpqaAAAAAAAA8PDw ////8PDwAAAAAAAA6enp////////4eHhAAAATU1N4eHh////vb29AAAAAAAA aGho////6enpAAAAAAAAAAAAAAAAAAAA4eHh6enpAAAAAAAA//////////// ////////fHx8fHx8////////////6enpTU1NAAAAAAAAAAAAaGho6enp//// ////8PDwTU1NaGho8PDw////p6enaGho////////6enpAAAAAAAA8PDw//// 6enpAAAAAAAA6enp////6enpAAAAAAAA6enp//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////8PDwAAAAmpqajIyM//// ////////AAAATU1NjIyM////////////////8PDwAAAAmpqajIyM//////// ////AAAATU1NjIyM////////////////8PDwAAAAmpqajIyM//////////// AAAATU1NjIyM////////////////////////////////////AAAA8PDw//// ////x8fHAAAA////////AAAAAAAA////////////AAAAAAAA////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////////mpqaAAAAx8fH////////////AAAAAAAA////////mpqaAAAAfHx8 8PDw////6enpaGho////AAAAAAAA//////////////////////////////// ////////mpqaAAAAfHx8////////4eHhjIyM////////p6enAAAA0NDQ//// ////8PDwAAAAvb29////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////srKyAAAA0NDQ0NDQ0NDQ////x8fHAAAAx8fHfHx8 8PDw////////////srKyAAAA0NDQ0NDQ0NDQ////x8fHAAAAx8fHfHx88PDw ////////////srKyAAAA0NDQ0NDQ0NDQ////x8fHAAAAx8fHfHx88PDw//// ////////////////////////////////////x8fHaGhoAAAAjIyM//////// p6enAAAAx8fH////////AAAAAAAA////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////p6enAAAAx8fH////////AAAAAAAA ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA2dnZ//////////////////// AAAAAAAA////////////////////////////////////////TU1NAAAA6enp ////////////////////////TU1NAAAA8PDw////////////AAAAaGho//// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// TU1NAAAA////////jIyM////aGhoAAAA8PDw0NDQsrKy////////////TU1N AAAA////////jIyM////aGhoAAAA8PDw0NDQsrKy////////////TU1NAAAA ////////jIyM////aGhoAAAA8PDw0NDQsrKy//////////////////////// ////////2dnZTU1NAAAAAAAAjIyM////////////////srKyTU1Np6en6enp AAAAAAAA////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA ////////AAAAAAAA////////////////////////AAAAAAAA//////////// ////////////////////////////AAAAAAAA//////////////////////// ////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////2dnZAAAAp6en////////0NDQ mpqaAAAAjIyM////////aGho////////2dnZAAAAp6en////////0NDQmpqa AAAAjIyM////////aGho////////2dnZAAAAp6en////////0NDQmpqaAAAA jIyM////////aGho////////////////////////////////aGhoAAAAp6en 8PDw////////////////////////////x8fHfHx8AAAAAAAA////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA//////////////////// ////x8fHfHx8AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////////aGhoAAAA////////////////AAAAAAAA////////TU1NAAAAAAAA AAAAAAAAAAAAAAAA////AAAAAAAA//////////////////////////////// ////////TU1NAAAA////////////////////////////aGhoAAAA//////// ////8PDwAAAATU1N////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////mpqaAAAA2dnZ////////////TU1NAAAA0NDQ//////// p6en0NDQ////mpqaAAAA2dnZ////////////TU1NAAAA0NDQ////////p6en 0NDQ////mpqaAAAA2dnZ////////////TU1NAAAA0NDQ////////p6en0NDQ ////////////////////////////AAAA6enp////////6enpAAAA//////// fHx8aGho////////////AAAAAAAA////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////fHx8aGho////////////AAAAAAAA ////////AAAAAAAA////////////AAAAAAAA////////////vb29AAAA2dnZ ////////8PDwAAAAAAAA////////p6enAAAA////////////AAAAfHx8//// AAAAAAAA6enp////////////////////////////////////p6enAAAA6enp ////////x8fHTU1N////////vb29AAAA6enp////////x8fHAAAAp6en//// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////4eHhAAAA TU1N////////////////TU1NAAAA////////////4eHhaGho4eHhAAAATU1N ////////////////TU1NAAAA////////////4eHhaGho4eHhAAAATU1N//// ////////////TU1NAAAA////////////4eHhaGho8PDw//////////////// ////////jIyM4eHh////8PDwfHx8AAAA////////fHx8AAAA6enp////0NDQ AAAAaGhoTU1NAAAAAAAAx8fH////4eHhAAAAaGho////////////AAAAAAAA ////////////fHx8AAAA6enp////0NDQAAAAaGho////TU1NAAAAAAAAx8fH ////4eHhAAAAaGho////////////////fHx8aGho8PDw////p6enAAAAAAAA ////////6enpTU1Np6en////vb29AAAA0NDQTU1NAAAAAAAAx8fH8PDwmpqa fHx8////////////////////////////TU1NfHx8////////aGhofHx8//// ////////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1NAAAAAAAA0NDQ//// x8fHAAAAaGhox8fH////4eHhAAAAaGho//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAAAAAAjIyM////vb29AAAA AAAAAAAAp6en////////AAAAAAAAAAAAAAAAAAAAjIyM////vb29AAAAAAAA AAAAp6en////////AAAAAAAAAAAAAAAAAAAAjIyM////vb29AAAAAAAAAAAA p6en////////AAAAAAAAAAAA////////////////////////////jIyMAAAA mpqa6enpAAAA////////////p6enTU1NAAAAAAAAmpqa6enp6enpp6enTU1N ////srKyAAAATU1N4eHh////////AAAAAAAAAAAAAAAAAAAA////////p6en TU1NAAAAAAAAmpqa6enp////6enpp6enTU1N////srKyAAAATU1N4eHh//// ////////////////p6enAAAATU1N2dnZAAAAAAAA////////////6enpjIyM AAAATU1Nvb29////6enpsrKyTU1N////srKyAAAAmpqa//////////////// ////////////8PDwp6enAAAAAAAAmpqa////////////////8PDwp6enAAAA AAAAmpqa6enp////////6enpp6enTU1N////srKyAAAAaGho4eHh////p6en AAAAaGho4eHh//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////0NDQAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////x8fHAAAA //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////8PDwAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////aGhoAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////6enpp6enTU1N //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////vb292dnZ//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////vb292dnZ//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////x8fHx8fH//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////x8fHx8fH//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////TU1N//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////TU1N//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////6enp//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA ////////////////////////srKyAAAATU1Nvb29//////////////////// ////p6enAAAAAAAAmpqa8PDw////////////////////////////////AAAA ////2dnZmpqaAAAAAAAAfHx84eHh////////0NDQAAAAfHx86enp////AAAA AAAAAAAATU1N////////////4eHhTU1NAAAAp6en////mpqaAAAAjIyMAAAA AAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////////4eHhaGhoAAAAaGho 6enpTU1Np6en6enp////fHx8aGhoTU1N////////////////////////AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8PDw////////////6enpmpqa AAAAAAAAp6en8PDw////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA ////////////4eHhaGhoAAAAaGho6enpTU1Np6en6enp////6enpmpqaAAAA AAAAp6en8PDw////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA ////fHx8aGhoTU1N//////////////////////////////////////////// fHx80NDQ////////////////x8fHAAAA//////////////////////////// ////////////vb29aGhoAAAAAAAAfHx8vb29////////////////TU1NAAAA AAAAAAAAAAAAAAAAAAAA2dnZ////AAAAAAAAAAAAAAAAAAAAAAAA//////// ////vb29AAAAAAAAAAAAvb29////////srKyAAAATU1Nvb29//////////// AAAAAAAAAAAAAAAAAAAA////////////////////0NDQAAAA////////AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATU1N//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// srKyTU1N8PDw6enpTU1NsrKy////////////////fHx8TU1N6enp////mpqa TU1N////////////////////////////////AAAAAAAAjIyM6enp////8PDw jIyMAAAA2dnZ////TU1NAAAA6enpjIyM////6enpAAAAAAAA//////////// ////aGhoAAAA0NDQ////x8fHAAAAAAAA////mpqaAAAAAAAA8PDw////8PDw AAAAAAAA6enp////////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho//// jIyMAAAA0NDQ////////////////////////////6enpAAAAAAAA6enp//// ////////x8fHAAAA0NDQ////////8PDwTU1NaGho8PDw////p6enaGho//// ////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////////4eHhAAAATU1N 4eHh////vb29AAAAAAAAaGho8PDwTU1NaGho8PDw////p6enaGho//////// ////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////jIyMAAAA0NDQ//// ////////////////////////////////////8PDwAAAAmpqa//////////// ////mpqaAAAA0NDQ////////////////////////////6enpTU1NTU1N0NDQ ////////8PDwx8fHfHx8////////////6enpTU1NAAAAAAAAAAAAAAAAAAAA srKy////////6enpAAAAAAAA6enp////////////4eHhAAAATU1Nvb298PDw ////////srKyTU1N8PDw6enpTU1NsrKy////////////6enpAAAA6enp//// ////////////////6enpAAAAAAAA////////////8PDwAAAAAAAA//////// ////////////x8fHAAAA0NDQ//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA////////////////6enpAAAAvb29////////x8fH AAAA6enp////////x8fHAAAA0NDQ////////8PDwAAAAp6en//////////// ////////////////AAAAjIyM////////////////////AAAAaGho////AAAA AAAA////////////////AAAAAAAA////////////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////// mpqaAAAAx8fH////////////AAAAAAAA//////////////////////////// ////////////////////////AAAAAAAA////////////////////x8fHp6en ////////p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAAAAAA//// ////////AAAAAAAA////////////mpqaAAAAx8fH////////////AAAAAAAA ////p6enAAAA0NDQ////////8PDwAAAAvb29////////////AAAAAAAA//// ////////AAAAAAAA//////////////////////////////////////////// ////////////////x8fHAAAAAAAA////////////////AAAAAAAAmpqa//// ////////////////////////fHx8TU1N8PDw////////////////////0NDQ mpqa////////////2dnZ0NDQ////////////x8fHaGho////////////AAAA AAAA////////////////TU1NTU1N6enp////////////6enpAAAAvb29//// ////x8fHAAAA6enp////////////AAAA////////////////////////TU1N AAAAAAAA////////////////AAAAAAAA////////////////////////0NDQ fHx8//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA////////p6enAAAA4eHh////////4eHhAAAAp6en////////fHx8 AAAA8PDw////////////AAAATU1N////////////////////////////AAAA 2dnZ////////////////////AAAAAAAA////AAAAAAAA//////////////// AAAAAAAA////////////////p6enAAAAx8fH////////AAAAAAAA//////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// ////AAAAAAAA//////////////////////////////////////////////// ////AAAAAAAA////////////////////////aGho////////TU1NAAAA8PDw ////////////AAAAaGho////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////////AAAAAAAA////TU1NAAAA8PDw//// ////////AAAAaGho////////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////////////////////////////////fHx8 AAAAsrKy0NDQ////////4eHhAAAAfHx8AAAA//////////////////////// x8fHAAAAvb29//////////////////////////////////////////////// vb292dnZ////////////////////////////AAAAAAAA////////////jIyM AAAA0NDQ////////////////p6enAAAA4eHh////////4eHhAAAAp6en//// ////////AAAA////////////////////fHx8AAAAfHx8AAAA//////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////p6en6enp////////////AAAAAAAA////////////////fHx8 AAAA////////////////AAAAfHx8////////AAAAAAAA//////////////// AAAAAAAA////////////////////////////AAAA//////////////////// p6enAAAAjIyM////AAAAAAAA////////////////AAAAAAAA//////////// ////////srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA//////// ////////////////////////////////////////////AAAAAAAA//////// ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////AAAAAAAA////AAAAAAAA////////////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////////////////////////////////8PDwAAAAaGho////jIyM//////// srKyAAAA0NDQfHx80NDQ////////////////////jIyMAAAA6enp//////// ////////////////////////////////////////////mpqa6enp//////// ////////////////AAAAAAAA////////vb29AAAAp6en//////////////// ////fHx8AAAA////////////////AAAAfHx8////////////AAAA//////// ////////p6enAAAAaGho////AAAA////////////////AAAAAAAA//////// ////////AAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////jIyM ////////////AAAAAAAA////////////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA////////////0NDQAAAAaGho//////////// ////////////////////////////////4eHhaGhoAAAATU1N6enp////AAAA AAAA////////////////AAAAAAAA////////////////////////////x8fH fHx8AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////// aGhoAAAA////////////////AAAAAAAA//////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// ////////aGhoAAAA////////////8PDwAAAATU1N////////AAAAAAAA//// ////////AAAAAAAA////////////aGhoAAAA////////////////AAAAAAAA ////aGhoAAAA////////////8PDwAAAATU1N////////////AAAAAAAA//// ////////AAAAAAAA//////////////////////////////////////////// ////////////x8fHAAAAsrKy////p6en8PDw////fHx8AAAA8PDwx8fHp6en ////////////////////AAAAAAAA//////////////////////////////// ////////////////////////8PDwTU1N////////////////////////AAAA AAAA////4eHhAAAAfHx8////////////////////////AAAAAAAA//////// ////////AAAAAAAA////////////AAAA////////////x8fHAAAATU1N6enp ////AAAA////////////////AAAAAAAA////////////4eHhAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////0NDQvb29////////AAAAAAAA ////////////////AAAAAAAA////////////////AAAAAAAA////////aGho AAAA0NDQ////8PDwaGhoAAAAx8fH//////////////////////////////// ////4eHhjIyMAAAAAAAAp6en////////////AAAAAAAA//////////////// AAAAAAAA6enp////////////fHx8aGho////////////AAAAAAAA//////// AAAAAAAA////////////AAAAAAAA////////////vb29AAAA2dnZ//////// 8PDwAAAAAAAA//////////////////////////////////////////////// ////AAAAAAAA////////////////////////////////////vb29AAAA6enp ////////x8fHAAAAp6en////////AAAAAAAA////////////AAAAAAAA//// ////////vb29AAAA2dnZ////////8PDwAAAAAAAA////vb29AAAA6enp//// ////x8fHAAAAp6en////////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////////////////////////////jIyMAAAA 6enp////2dnZx8fH////AAAAaGho////6enpTU1N//////////////////// AAAAAAAA//////////////////////////////////////////////////// ////////p6enjIyM////////////////////AAAAAAAAAAAAAAAAAAAAmpqa 8PDw////////////////////AAAAAAAA////////////////AAAAAAAA//// ////////AAAA////////2dnZAAAAAAAA4eHh////////AAAA//////////// ////AAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////jIyM6enp////AAAAAAAA////////////////AAAA AAAA////////////////AAAAAAAA////////p6enAAAAvb29mpqaAAAATU1N vb29////////////////////////////////////srKyAAAAAAAAjIyM6enp ////////////////AAAAAAAA////////////TU1NAAAAAAAAx8fH8PDwmpqa fHx8fHx8AAAA6enp////0NDQAAAAaGho////TU1NAAAAAAAAx8fH////4eHh AAAAaGho////////////////fHx8aGho8PDw////p6enAAAAAAAA//////// ////////////////////////////////////////////AAAAAAAA//////// ////////////////////////////////TU1Nmpqa////6enpTU1NTU1N8PDw ////TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////////////fHx8aGho 8PDw////p6enAAAAAAAA////////TU1Nmpqa////6enpTU1NTU1N8PDw//// ////TU1NAAAAAAAAx8fH////4eHhAAAAaGho//////////////////////// ////////////////////////////////AAAAaGho////////////jIyM0NDQ AAAAsrKy////////aGho2dnZ////////////////TU1NAAAA//////////// ////////////////////////////////////////////////2dnZAAAA4eHh ////////////////AAAAAAAA////////6enpfHx8TU1N4eHh//////////// ////AAAAAAAA////////////////AAAAAAAA////////////AAAA////6enp TU1NAAAA0NDQ////////////AAAA////////////////AAAAAAAA//////// ////4eHhAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwjIyM////AAAAAAAA////////////////fHx8AAAA8PDw//////////// AAAAfHx8////////4eHhAAAAjIyM//////////////////////////////// ////////////////srKyAAAATU1N2dnZ////////////AAAA////AAAAAAAA AAAAAAAAAAAA////6enpsrKyTU1N////srKyAAAAmpqa////p6enTU1NAAAA AAAAmpqa6enp////6enpp6enTU1N////srKyAAAATU1N4eHh//////////// ////////p6enAAAATU1N2dnZAAAAAAAA//////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// ////////////8PDwp6enAAAAAAAAmpqa6enp////////6enpp6enTU1N//// srKyAAAATU1N4eHh////////////////////p6enAAAATU1N2dnZAAAAAAAA ////////8PDwp6enAAAAAAAAmpqa6enp////////////6enpp6enTU1N//// srKyAAAATU1N4eHh//////////////////////////////////////////// ////////0NDQAAAAsrKy////////////p6enjIyMAAAA2dnZ////////srKy p6en////////////////mpqaAAAA4eHh//////////////////////////// AAAA////////////////////////////AAAAmpqa////////////////AAAA AAAA////////////8PDwAAAAfHx8////////////////fHx8AAAA8PDw//// ////////AAAAfHx8////////////AAAA////fHx8AAAAsrKy//////////// ////AAAA////////////////AAAAAAAA////////////////AAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////vb29x8fHAAAAAAAA ////////////////srKyAAAA4eHh////////4eHhAAAAp6en//////////// srKyAAAA0NDQ////////////////////////////////////////////AAAA AAAA6enp////////////2dnZAAAA////0NDQAAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA//////////////////////////////////////////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////mpqaAAAA6enp ////////////2dnZAAAAAAAA////////////2dnZTU1N//////////////// 4eHhAAAAsrKy////////////////////////6enpAAAA////////x8fH//// ////////////AAAAAAAA////////////////AAAAAAAA//////////////// AAAAAAAA////////////////srKyAAAA4eHh////////4eHhAAAAp6en//// ////////AAAAjIyMAAAAp6en////////////////////AAAA//////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////fHx8AAAAAAAA////////////////8PDw AAAAsrKy////////x8fHAAAA4eHh////////////////fHx8AAAA0NDQ//// ////////////////////////////////////TU1NAAAA//////////////// mpqaAAAA////////x8fHAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////AAAAAAAA//////// ////////////////////////////////////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////AAAAfHx8////////////////2dnZAAAA p6en////////////////aGho2dnZ////////////////mpqaTU1N6enp//// ////////////////mpqaAAAA////////mpqax8fH////8PDwp6enAAAATU1N ////////////////AAAAAAAA////////////8PDwAAAAaGho//////////// ////8PDwAAAAsrKy////////x8fHAAAA4eHh////////////AAAAAAAAfHx8 ////////////////////////AAAA////////////////AAAAAAAA//////// ////////////////AAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////4eHhAAAAAAAA////////////////////srKyTU1N6enp8PDwaGho p6en////////////////////////p6enAAAAp6en4eHh//////////////// ////////////////x8fHAAAAp6en////////p6enAAAAAAAA////////8PDw AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// ////////////////////6enpAAAAAAAA8PDw//////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////p6enAAAAmpqa////////////8PDwaGhoAAAAvb29//////////////// mpqafHx8////////////////////jIyMTU1N0NDQ////////2dnZjIyMAAAA AAAA////////6enpAAAAAAAAAAAAAAAAAAAAvb29////////////6enpAAAA AAAA////////6enpfHx8AAAA0NDQ////////////////////srKyTU1N6enp 8PDwaGhop6en////////8PDwp6enAAAAaGho//////////////////////// 6enpAAAA6enp////////8PDwAAAAAAAA////////////////////vb29AAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////p6enAAAA ////////////////////////vb29TU1NTU1NsrKy//////////////////// ////////////4eHhmpqaTU1NAAAA//////////////////////////////// x8fHaGhoAAAAaGho0NDQ8PDwAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// aGhoAAAAAAAA////////////////////////////////////////////AAAA AAAAAAAAAAAAAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////aGhoAAAAAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAAAAAAAAAAAAAA ////vb29AAAAAAAAAAAAAAAAjIyM////////AAAAAAAAAAAAAAAA//////// ////////////0NDQjIyMAAAAAAAAfHx80NDQ6enpAAAA////////////2dnZ aGhoAAAAaGhovb29////////////AAAAAAAAAAAAAAAAAAAAAAAATU1NjIyM 2dnZ////////////////////////////vb29TU1NTU1NsrKy////////vb29 AAAAAAAATU1N6enp////////////////////AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////6enpp6enTU1N//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////6enpp6enTU1N//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAA////2dnZmpqaAAAAAAAAfHx84eHh//////////// 4eHhTU1NAAAAp6en////mpqaAAAAjIyMAAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////0NDQAAAAfHx86enp////////4eHhTU1NAAAAp6en////mpqa AAAAjIyMAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////4eHhaGho AAAAaGho6enpTU1Np6en6enp////////4eHhfHx8AAAAmpqa6enp//////// AAAAAAAAAAAATU1N////////////////////////////////AAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAaGhop6en6enp////////////4eHhTU1NAAAAp6en ////mpqaAAAAjIyMAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA////4eHhAAAAAAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAAjIyM6enp////8PDwjIyMAAAA2dnZ////////aGhoAAAA0NDQ////x8fH AAAAAAAA////mpqaAAAAAAAA8PDw////8PDwAAAAAAAA6enp////TU1NAAAA 6enpjIyM////////aGhoAAAA0NDQ////x8fHAAAAAAAA////mpqaAAAAAAAA 8PDw////8PDwAAAAAAAA6enp////4eHhAAAATU1N4eHh////vb29AAAAAAAA aGho////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAAAAAA//////// ////////////////////////////////6enpAAAAAAAA8PDw//////////// 0NDQTU1NAAAA4eHh////////aGhoAAAA0NDQ////x8fHAAAAAAAA////mpqa AAAAAAAA8PDw////8PDwAAAAAAAA6enp6enpAAAAAAAA8PDw////////fHx8 TU1N8PDw//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAjIyM//////////////// ////AAAAaGho////////AAAAAAAA////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////AAAAAAAA////////////////AAAA AAAA////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////mpqaAAAAx8fH////////////AAAAAAAA////////mpqaAAAAfHx8 8PDw////6enpaGho////////AAAAAAAA//////////////////////////// ////////////////AAAAAAAA////////////////////4eHhAAAAaGho//// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////AAAAAAAA////////fHx8TU1N6enp//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAA2dnZ////////////////////AAAAAAAA//////// p6enAAAAx8fH////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////AAAAAAAA////////////////p6enAAAAx8fH////////AAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA2dnZ//////////////////// ////AAAAAAAA////////////////////////////////////////////AAAA AAAA////////////////////////AAAAAAAA////////p6enAAAAx8fH//// ////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////AAAA AAAA////mpqaAAAA0NDQ//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA ////////////////////p6enAAAAjIyM////////////srKyTU1Np6en6enp AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA ////////////////////srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA////////////////AAAAAAAA ////////AAAAAAAA////////////////////////////AAAAAAAA//////// ////////////////////////////////////AAAAAAAA//////////////// ////x8fHAAAAjIyM////////////srKyTU1Np6en6enpAAAAAAAA//////// AAAAAAAA////////////AAAAAAAA////////AAAAAAAAp6enAAAAvb29//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////4eHhaGho AAAATU1N6enp////////////////////x8fHfHx8AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////AAAAAAAA//////////////////// ////////x8fHfHx8AAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////aGhoAAAA////////////////AAAAAAAA////////TU1NAAAAAAAA AAAAAAAAAAAAAAAA////////AAAAAAAA//////////////////////////// ////////////////AAAAAAAA////////////6enpp6enAAAAaGho6enp//// ////////////////x8fHfHx8AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////AAAAAAAA0NDQTU1N//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////4eHhjIyMAAAAAAAAp6en//////////////// fHx8aGho////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////AAAAAAAA////////////////fHx8aGho////////////AAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////vb29AAAA2dnZ ////////8PDwAAAAAAAA////////p6enAAAA////////////AAAAfHx8//// ////AAAAAAAA6enp////////////////////////////////////////AAAA AAAAAAAAAAAAAAAAAAAAAAAAp6en////////////////fHx8aGho//////// ////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////AAAA AAAA////4eHhjIyM6enp//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// srKyAAAAAAAAjIyM6enp////////////////////fHx8AAAA6enp////0NDQ AAAAaGho////TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////AAAAAAAA ////////////////fHx8AAAA6enp////0NDQAAAAaGho////TU1NAAAAAAAA x8fH////4eHhAAAAaGho////////////fHx8aGho8PDw////p6enAAAAAAAA ////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAAAAAAx8fH8PDw mpqafHx8////////////////////////////AAAAAAAA////////////8PDw p6enAAAA0NDQ////////////fHx8AAAA6enp////0NDQAAAAaGho////TU1N AAAAAAAAx8fH////4eHhAAAAaGho////////AAAAAAAA////////8PDwjIyM 0NDQ//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////srKyAAAATU1N2dnZ//////// ////AAAA////////////////p6enTU1NAAAAAAAAmpqa6enp////6enpp6en TU1N////srKyAAAATU1N4eHh////AAAAAAAAAAAAAAAAAAAA//////////// p6enTU1NAAAAAAAAmpqa6enp////6enpp6enTU1N////srKyAAAATU1N4eHh ////////////////p6enAAAATU1N2dnZAAAAAAAA////////////6enpjIyM AAAATU1Nvb29////////6enpsrKyTU1N////srKyAAAAmpqa//////////// ////////////////AAAAAAAA////////////////////AAAAaGho//////// ////////p6enTU1NAAAAAAAAmpqa6enp////6enpp6enTU1N////srKyAAAA TU1N4eHh////////AAAAAAAA////////srKyAAAAAAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA6enp////////////2dnZAAAA//////////// //////////////////////////////////////////////////////////// ////////0NDQAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////AAAAAAAA//////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////TU1N AAAA////////////////mpqaAAAA//////////////////////////////// ////////////////////////////////////////////////////x8fHAAAA //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// 4eHhAAAAfHx8//////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////x8fHAAAAp6en////////p6en AAAAAAAA//////////////////////////////////////////////////// ////////////////////////////////8PDwAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////6enpAAAAAAAA////////////0NDQTU1NAAAA4eHh//////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////x8fHaGhoAAAAaGho0NDQ8PDwAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////aGhoAAAAAAAA//////////////////////////////////////// ////////////////////////////////////////////////AAAAAAAAAAAA AAAAAAAAAAAAAAAAaGhop6en6enp//////////////////////////////// ////////////////////////////////////////////////////aGhoAAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////6enpp6enTU1N //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////6enpp6enTU1N//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAA//// ////////vb29AAAAAAAAAAAAvb29////6enpmpqaAAAAAAAAp6en8PDw//// ////////////vb29TU1NAAAAaGhop6en8PDw////////////////4eHhfHx8 AAAAmpqa6enp////////AAAAAAAAAAAATU1N////////////0NDQAAAAfHx8 6enp////////////////////////////////////////vb29fHx8AAAAAAAA fHx80NDQ//////////////////////////////////////////////////// ////////vb29aGhoAAAAAAAAfHx8vb29////////////////////6enpmpqa AAAAAAAAp6en8PDw////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////////6enpmpqaAAAA AAAAp6en8PDw////////AAAAAAAAAAAATU1N//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////6enpAAAAAAAA6enp////////////4eHhAAAATU1Nvb29 8PDw////8PDwTU1NaGho8PDw////p6enaGho////////////TU1NAAAAvb29 ////6enpTU1NTU1N////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//// 6enpAAAAAAAA////////////////TU1NAAAA6enpjIyM//////////////// ////////////////////fHx8aGho2dnZ////////2dnZaGhofHx8//////// ////////////////////////////////////////6enpTU1NTU1N0NDQ//// ////8PDwx8fHfHx8////////////8PDwTU1NaGho8PDw////p6enaGho//// ////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp6enpAAAAAAAA8PDw//// 8PDwAAAAAAAA6enp////////8PDwTU1NaGho8PDw////p6enaGho//////// 6enpAAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////TU1NTU1N6enp////////////p6enAAAA0NDQ ////////8PDwAAAAvb29////////AAAAAAAA////////////0NDQAAAAsrKy ////////mpqaAAAAfHx88PDw////6enpaGho////////AAAAAAAA//////// ////////AAAAAAAA////////////////////////////////////////fHx8 TU1N8PDw////////////////////TU1NjIyM//////////////////////// ////////////////////fHx8TU1N8PDw////////////////////0NDQmpqa ////////p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAAAAAA//// ////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// ////p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// jIyMAAAA0NDQ////////////////TU1NAAAA8PDw////////////AAAAaGho ////////AAAAAAAA////////////////AAAAaGho////////AAAAAAAA2dnZ ////////////////////////AAAAAAAA////////////////AAAAAAAA//// ////////////////////////////////0NDQAAAAsrKy//////////////// ////////x8fHAAAA0NDQ////////////////////////////////////x8fH AAAAvb29////////////////////////////////////////TU1NAAAA8PDw ////////////AAAAaGho////////AAAAAAAA////////////AAAAAAAA//// ////AAAAAAAA////////////AAAAAAAA////////////TU1NAAAA8PDw//// ////////AAAAaGho////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////vb29AAAAp6en//////////// ////////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA//////////////////////// ////AAAAAAAA////////////////AAAAAAAA//////////////////////// ////////////jIyMAAAA4eHh////////////////////////6enpAAAAmpqa ////////////////////////////////////jIyMAAAA6enp//////////// ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA//// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////4eHhAAAAfHx8////////////////////////aGhoAAAA//// ////////8PDwAAAATU1N////////AAAAAAAA////////////////AAAAAAAA ////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA//////// ////////AAAAAAAA////////////////////////////////////AAAAAAAA ////////////////////////////////AAAATU1N//////////////////// ////////////////AAAAAAAA//////////////////////////////////// ////////aGhoAAAA////////////8PDwAAAATU1N////////AAAAAAAA//// ////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// ////aGhoAAAA////////////8PDwAAAATU1N////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAAAAAAAAAAAAAA mpqa8PDw////////////////////vb29AAAA6enp////////x8fHAAAAp6en ////////AAAAAAAA////////////2dnZAAAAjIyM////////p6enAAAA//// ////////AAAAfHx8////////AAAAAAAA6enp////////////AAAAAAAA//// ////////////////////////////////AAAAAAAA//////////////////// ////////////AAAAAAAA////////////////////////////////////AAAA AAAA////////////////////////////////////////////vb29AAAA6enp ////////x8fHAAAAp6en////////AAAAAAAA////////////AAAAAAAA//// ////AAAAAAAA////////////AAAAAAAA////////////vb29AAAA6enp//// ////x8fHAAAAp6en////////AAAAAAAA6enp//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////6enpfHx8TU1N4eHh//////// ////////////TU1Nmpqa////6enpTU1NTU1N8PDw////////AAAAAAAAx8fH ////6enpTU1NAAAA2dnZ////////6enpTU1Np6en////vb29AAAA0NDQ//// TU1NAAAAAAAAx8fH8PDwmpqafHx8AAAAAAAA//////////////////////// ////////////AAAAAAAA////////////////////////////////AAAAAAAA ////////////////////////////////////TU1NAAAA//////////////// ////////////////////////////////TU1Nmpqa////6enpTU1NTU1N8PDw ////TU1NAAAAAAAAx8fH////4eHhAAAAaGho////TU1NAAAAAAAAx8fH//// 4eHhAAAAaGho////////////////TU1Nmpqa////6enpTU1NTU1N8PDw//// TU1NAAAAAAAAx8fH8PDwmpqafHx8//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////8PDwAAAAfHx8////////////////////8PDwp6en AAAAAAAAmpqa6enp////////////AAAAAAAA6enpjIyMAAAAaGho0NDQ//// ////////////6enpjIyMAAAATU1Nvb29////////6enpsrKyTU1N////srKy AAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////jIyMAAAA 6enp////////////////////////4eHhAAAAjIyM////////////4eHhvb29 ////////////////mpqaAAAA4eHh////////////////////////////AAAA ////////////8PDwp6enAAAAAAAAmpqa6enp////////6enpp6enTU1N//// srKyAAAATU1N4eHh////6enpp6enTU1N////srKyAAAATU1N4eHh//////// ////////8PDwp6enAAAAAAAAmpqa6enp////////6enpsrKyTU1N////srKy AAAAmpqa//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// ////AAAAAAAA//////////////////////////////////////////////// ////////AAAAAAAA//////////////////////////////////////////// ////////////////////////////////////////////0NDQAAAAAAAA//// ////////////////////////////////0NDQAAAAvb29//////////////// ////////vb29AAAA0NDQ////////////////0NDQvb29////////////4eHh AAAAsrKy////////////////////////6enpAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////8PDwAAAAaGho//////// ////////////////////////////////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// ////////////////////////////x8fHAAAA//////////////////////// ////////////////fHx8TU1N////////////////////////TU1NfHx8//// ////////////////////TU1N////////////////mpqaTU1N6enp//////// ////////////mpqaAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////6enp AAAAAAAA////////6enpfHx8AAAA0NDQ//////////////////////////// ////////////////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// ////////8PDwAAAA//////////////////////////////////////////// fHx8fHx82dnZ////////2dnZfHx8fHx8////////////////////fHx8TU1N TU1N////////////////////jIyMTU1N0NDQ////////2dnZjIyMAAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAATU1N jIyM2dnZ//////////////////////////////////////////////////// ////aGhoAAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////0NDQfHx8AAAAAAAA fHx8vb29////////////////////////jIyMAAAA0NDQ//////////////// ////////0NDQjIyMAAAAAAAAfHx80NDQ6enpAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////6enpp6enTU1N//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////mpqaAAAAmpqa//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////fHx8AAAA AAAAfHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////vb292dnZ//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////mpqavb29//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////x8fHx8fH //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////8PDwaGho//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////TU1N//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAA////2dnZmpqaAAAAAAAA fHx84eHh////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//// AAAAAAAAAAAAAAAA////////6enpfHx8AAAAaGho0NDQ//////////////// 4eHhfHx8AAAAmpqa6enp////////AAAAAAAAAAAATU1N//////////////// 4eHhfHx8AAAAmpqa6enp////////////AAAAAAAAAAAAAAAA//////////// ////////TU1N2dnZ//////////////////////////////////////////// ////AAAAAAAAAAAAAAAAAAAAAAAA////////////////////////6enpmpqa AAAAAAAAp6en8PDw////////////////4eHhTU1NAAAAsrKy////TU1Np6en 6enpAAAAAAAAAAAATU1N////////////////AAAA6enpjIyMAAAAjIyM//// ////////fHx8aGhoTU1N//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAAjIyM6enp////8PDwjIyMAAAA2dnZ//////// 6enpAAAAAAAA6enp////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp//// 6enpTU1NAAAAAAAAAAAAaGho6enp////////6enpAAAAAAAAAAAAAAAAAAAA 4eHh////6enpAAAAAAAA////////////////6enpAAAAAAAAAAAAAAAAAAAA 4eHh////////6enpAAAAAAAA6enp////////////////x8fHAAAAmpqa//// ////////////////////////////////////////////////6enpAAAAAAAA 6enp////////////////////////8PDwTU1NaGho8PDw////p6enaGho//// ////////////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho6enpAAAAAAAA//// ////////////////AAAAfHx84eHh////4eHhjIyM////////jIyMAAAA0NDQ //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA jIyM////////////////////AAAAaGho////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////mpqaAAAAfHx8//////// 4eHhjIyM////////mpqaAAAAfHx88PDw////6enpaGho////////AAAAAAAA ////////////////mpqaAAAAfHx88PDw////6enpaGho////////////AAAA AAAA////////////////////aGhoAAAATU1N//////////////////////// ////////////////////////////////AAAAAAAA//////////////////// ////////p6enAAAA0NDQ////////8PDwAAAAvb29////////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA////////////////////AAAA 8PDw////////x8fHAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAA2dnZ//////////////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////TU1NAAAA6enp////////////////////////AAAA AAAA2dnZ////////////////////////AAAAAAAA////////////////AAAA AAAA2dnZ////////////////////////////AAAAAAAA//////////////// 0NDQAAAAp6ensrKyx8fH//////////////////////////////////////// ////////////AAAAAAAA////////////////////////////TU1NAAAA8PDw ////////////AAAAaGho////////////AAAAAAAA////////////AAAAAAAA ////////AAAAAAAA////////////////////////////x8fHaGhoAAAAjIyM //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAA////////////////////p6enAAAAjIyM//////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA////////////////////////////AAAAAAAA//////////////// ////////////AAAAAAAA////////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////////////aGhoAAAA8PDw8PDwaGho ////////////////////////////////////////////////////AAAAAAAA ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//// ////////////////2dnZTU1NAAAAAAAAjIyM//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////4eHhaGhoAAAATU1N6enp////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////TU1NAAAA//////////// ////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA ////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAA AAAA////////////0NDQAAAAmpqa////////jIyM4eHh//////////////// ////////////////////////////////AAAAAAAA//////////////////// ////////aGhoAAAA////////////8PDwAAAATU1N////////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA////////////////////aGho AAAAp6en8PDw//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////4eHhjIyMAAAAAAAA p6en////////////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////p6enAAAA6enp////////x8fHTU1N////////p6en AAAA////////////AAAAfHx8////////AAAAAAAA6enp////////////p6en AAAA////////////AAAAfHx8////////////AAAAAAAA////////////jIyM AAAA4eHh////////0NDQp6en//////////////////////////////////// ////////mpqaAAAAjIyMsrKy////////////////////////vb29AAAA6enp ////////x8fHAAAAp6en////////////AAAAAAAA////////////AAAAAAAA ////////AAAAAAAA6enp////////////////AAAA6enp////////6enpAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////srKyAAAAAAAAjIyM6enp//////////////////// TU1NAAAAAAAA////////TU1NAAAAAAAAx8fH////4eHhAAAAaGho//////// ////TU1NfHx8////////aGhofHx8////////6enpTU1Np6en////vb29AAAA 0NDQ////TU1NAAAAAAAAx8fH8PDwmpqafHx86enpTU1Np6en////vb29AAAA 0NDQ////////////AAAAAAAA////////vb29AAAAaGho//////////////// TU1N6enp////////////////////////////////////2dnZAAAAjIyM//// jIyM4eHh////////////////////////TU1Nmpqa////6enpTU1NTU1N8PDw ////////6enpAAAAAAAA////////4eHhAAAAAAAA////TU1NAAAAAAAAx8fH 8PDwmpqafHx8////jIyM4eHh////8PDwfHx8AAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////srKy AAAATU1N2dnZ////////////AAAA////////////6enpp6enTU1N//////// 6enpp6enTU1N////srKyAAAATU1N4eHh////////////8PDwp6enAAAAAAAA mpqa////////////////6enpjIyMAAAATU1Nvb29////////6enpsrKyTU1N ////srKyAAAAmpqa////6enpjIyMAAAATU1Nvb29////////////////AAAA AAAA////vb29AAAAAAAAAAAAjIyM////////jIyMAAAAAAAA4eHh//////// ////////////////////////aGhoTU1N8PDw////8PDwfHx8//////////// ////////////8PDwp6enAAAAAAAAmpqa6enp////////////AAAAAAAAAAAA ////////AAAAAAAAAAAA////6enpsrKyTU1N////srKyAAAAmpqa//////// jIyMAAAAmpqa6enpAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA6enp//////////// 2dnZAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// srKyAAAAx8fH////////////vb29vb29//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////TU1NAAAA////////////////mpqaAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// ////////////////////////////////////4eHhAAAAjIyM//////////// ////////fHx86enp//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////x8fH AAAAp6en////////p6enAAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// ////////////0NDQTU1NAAAA2dnZ////////////////////vb29TU1N0NDQ //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////x8fHaGhoAAAAaGho0NDQ 8PDwAAAA////////////////fHx8fHx8//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////aGhoAAAAAAAA//////////////// ////////////////////////////////////////////////jIyMAAAAAAAA AAAAAAAAjIyM////////////jIyMAAAAAAAAAAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////fHx8fHx8//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////6enpp6enTU1N//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// mpqaAAAAmpqa//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////mpqaAAAAmpqa//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////mpqaAAAAmpqa//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////fHx8AAAAAAAAfHx8//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////fHx8AAAAAAAAfHx8//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////fHx8AAAAAAAAfHx8//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////mpqavb29//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////mpqavb29//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////mpqavb29//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////8PDwaGho//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////8PDwaGho//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////8PDwaGho//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAA////////////6enpmpqaAAAA AAAAp6en8PDw////AAAAAAAAAAAATU1N////////////////AAAAAAAAAAAA AAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////4eHhTU1NAAAA p6en////mpqaAAAAjIyM6enp0NDQAAAAfHx86enp////////AAAAAAAAAAAA AAAA////////6enpmpqaAAAAAAAAp6en8PDw////////AAAAAAAAAAAAAAAA ////AAAAAAAAAAAAAAAA////////////////////////////////////0NDQ fHx8////////////////2dnZaGho////////////////AAAAAAAAAAAAAAAA ////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////////// ////////////vb29TU1NAAAAaGhop6en8PDw////////////////4eHhfHx8 AAAAmpqa6enp////////////////////////////AAAAAAAAAAAATU1N//// ////////////4eHhfHx8AAAAmpqa6enp////////////////AAAAAAAAAAAA AAAA////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enp////////////TU1N 2dnZ////////////////////4eHhfHx8AAAAmpqa6enp//////////////// 4eHhaGhoAAAAaGho6enpTU1Np6en6enp////////////////////////0NDQ AAAAfHx86enp////////6enpmpqaAAAAAAAAp6en8PDw//////////////// ////////////////////////////////TU1N2dnZ//////////////////// 6enpmpqaAAAAAAAAp6en8PDw////////////4eHhTU1NAAAAsrKy////TU1N p6en6enp////////////////////////////////6enpmpqaAAAAAAAAp6en 8PDw////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////// ////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////////////////////TU1N2dnZ//////////////////////// ////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////// 4eHhfHx8AAAAmpqa6enp////////AAAAAAAAAAAA////////AAAAAAAAAAAA AAAA////0NDQAAAAfHx86enp////////////////////////AAAAAAAAAAAA AAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////4eHhTU1N AAAAp6en////mpqaAAAAjIyM6enpAAAAAAAAAAAAAAAA////AAAAAAAAAAAA AAAA////fHx8fHx8//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////6enp AAAAAAAA6enp6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////////0NDQ AAAAAAAA2dnZ////////////8PDwTU1NaGho8PDw////p6enaGho////6enp AAAAAAAA////////////////////6enpAAAAAAAA8PDw////6enpAAAAAAAA 6enp////6enpAAAAAAAA6enp////aGhoAAAA0NDQ////x8fHAAAAAAAA//// srKyTU1NAAAA6enpjIyM////////6enpAAAAAAAA6enp////8PDwTU1NaGho 8PDw////p6enaGho////////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp ////////////////////////////////////fHx8AAAA0NDQ//////////// p6enAAAA2dnZ////////////6enpAAAAAAAA6enp////////6enpAAAAAAAA 6enp////6enpAAAAAAAA6enp////////////////////////TU1NAAAAvb29 ////6enpTU1NTU1N////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//// ////////////////////6enpAAAAAAAA////////////////6enpAAAAAAAA AAAAAAAAAAAA4eHh////////////6enpAAAAAAAA6enp////aGhoAAAA0NDQ ////x8fHAAAAAAAA////srKy////////x8fHAAAAmpqa//////////////// 6enpAAAAAAAAAAAAAAAAAAAA4eHh////////4eHhAAAATU1N4eHh////vb29 AAAAAAAAaGho////////////////////////TU1NAAAA6enpjIyM////8PDw TU1NaGho8PDw////p6enaGho//////////////////////////////////// ////////x8fHAAAAmpqa////////////////8PDwTU1NaGho8PDw////p6en aGho////////////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho//////////// ////////////////8PDwTU1NaGho8PDw////p6enaGho////////6enpAAAA AAAA8PDw////8PDwAAAAAAAA6enp////////////////////////6enpAAAA AAAA8PDw////6enpAAAAAAAA6enp////6enpAAAAAAAA6enp//////////// ////x8fHAAAAmpqa////////////////////////////////////6enpAAAA AAAA8PDw////8PDwAAAAAAAA6enp////////6enpAAAAAAAAAAAAAAAAAAAA 4eHh////8PDwfHx88PDw////////8PDwAAAAfHx8////////TU1NAAAA6enp jIyM////////////////////////6enpAAAAAAAA8PDw////6enpAAAAAAAA 6enp////6enpAAAAAAAA6enp////////aGhoAAAA0NDQ////x8fHAAAAAAAA ////srKy6enpAAAAAAAA6enp////6enpAAAAAAAA6enp////fHx8fHx8//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////////AAAAAAAA//////////// ////p6enAAAA0NDQ////////8PDwAAAAvb29////AAAAAAAA//////////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////// ////////////AAAAAAAA////////p6enAAAA0NDQ////////8PDwAAAAvb29 ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////////////8PDwAAAAmpqajIyM////////////AAAATU1NjIyM//////// ////////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA ////////////////////////////AAAAAAAA////////////0NDQAAAAsrKy ////////mpqaAAAAfHx88PDw////6enpaGho//////////////////////// ////AAAAAAAA////////////////mpqaAAAAfHx88PDw////6enpaGho//// ////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////////////aGhoAAAATU1N////////////////mpqaAAAAfHx88PDw//// 6enpaGho////////mpqaAAAAx8fH////////////AAAAAAAA//////////// ////////////////AAAAAAAA////////////p6enAAAA0NDQ////////8PDw AAAAvb29////////////////////////////////////////aGhoAAAATU1N ////////////////p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAA AAAA////////////AAAAAAAA////////////////////////////////p6en AAAA0NDQ////////8PDwAAAAvb29////////AAAAAAAA////////////AAAA AAAA////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////////aGhoAAAATU1N//// ////////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////mpqaAAAAfHx88PDw////6enpaGho////////////jIyM 6enp////TU1NaGho////////////AAAAAAAA//////////////////////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////////////TU1NAAAA8PDw//// ////////AAAAaGho////AAAAAAAA////////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////p6enAAAAx8fH ////////AAAAAAAA////////AAAAAAAA////////////////////AAAAAAAA ////////TU1NAAAA8PDw////////////AAAAaGho////////AAAAAAAA//// ////////AAAAAAAA////////////////////////////////////srKyAAAA 0NDQ0NDQ0NDQ////x8fHAAAAx8fHfHx88PDw////////////AAAAAAAA//// ////////////AAAAAAAA////////////AAAAAAAA//////////////////// ////////AAAAAAAA////////////////AAAAaGho////////AAAAAAAA2dnZ ////////////////////////////////////////////AAAAAAAA//////// ////////AAAAAAAA2dnZ////////////////////////////////AAAAAAAA ////////p6enAAAAx8fH////////AAAAAAAA////////////0NDQAAAAp6en srKyx8fH////////////AAAAAAAA2dnZ////////////////////////AAAA AAAA////////////////AAAAAAAA////////////////////////////AAAA AAAA////////////TU1NAAAA8PDw////////////AAAAaGho//////////// ////////////////////////0NDQAAAAp6ensrKyx8fH////////////TU1N AAAA8PDw////////////AAAAaGho////////AAAAAAAA////////////AAAA AAAA////////////////////////////////TU1NAAAA8PDw//////////// AAAAaGho////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////0NDQAAAAp6ensrKyx8fH//////////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA2dnZ////////////////////////////4eHhTU1NsrKyAAAA4eHh//// ////////AAAAAAAA////////////////////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////p6enAAAA x8fH////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////////////AAAAAAAA////////////////AAAAAAAA//// AAAAAAAA////////////////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////srKyTU1Np6en6enpAAAAAAAA//// ////AAAAAAAA////////////////////AAAAAAAA////////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////////TU1NAAAA////////jIyM////aGho AAAA8PDw0NDQsrKy////////////AAAAAAAA////////////////AAAAAAAA ////////////AAAAAAAA////////////////////////////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA//////////////////////// ////////////////////////AAAAAAAA////////////////AAAAAAAA//// ////////////////////////////////AAAAAAAA////////////srKyTU1N p6en6enpAAAAAAAA////////////aGhoAAAA8PDw8PDwaGho//////////// AAAAAAAA////////////////////////////AAAAAAAA//////////////// AAAAAAAA////////////////////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA//////////////////////////////// ////aGhoAAAA8PDw8PDwaGho////////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// aGhoAAAA8PDw8PDwaGho////////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////////p6enAAAAsrKy////////////////AAAAAAAA//// ////////////////////////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////srKyTU1Np6en6enpAAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////////AAAAAAAA//////////// ////aGhoAAAA////////////8PDwAAAATU1N////AAAAAAAA//////////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////////x8fHfHx8AAAAAAAA////////AAAAAAAA//////// ////////////AAAAAAAA////////aGhoAAAA////////////8PDwAAAATU1N ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////////2dnZAAAAp6en////////0NDQmpqaAAAAjIyM////////aGho//// ////////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////// ////AAAAAAAA////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//// ////////////AAAAAAAA////////////////////x8fHfHx8AAAAAAAA//// ////0NDQAAAAmpqa////////jIyM4eHh////////TU1NAAAAAAAAAAAAAAAA AAAAAAAA////////aGhoAAAA////////////////AAAAAAAA//////////// ////////////////AAAAAAAA////////////aGhoAAAA////////////8PDw AAAATU1N////////////////////////////////0NDQAAAAmpqa//////// jIyM4eHh////////aGhoAAAA////////////8PDwAAAATU1N////////AAAA AAAA////////////AAAAAAAA////////////////////////////////aGho AAAA////////////8PDwAAAATU1N////////AAAAAAAA////////////AAAA AAAA////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////0NDQAAAAmpqa////////jIyM 4eHh////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////////6enp AAAAAAAA6enp////////////////AAAAAAAA//////////////////////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////////////x8fHfHx8AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////////////vb29AAAA6enp//// ////x8fHAAAAp6en////AAAAAAAA6enp////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////fHx8aGho//// ////////AAAAAAAA////////AAAAAAAA////////////////////AAAAAAAA ////////vb29AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA//// ////////AAAAAAAA////////////////////////////////mpqaAAAA2dnZ ////////////TU1NAAAA0NDQ////////p6en0NDQ////////AAAAAAAA//// ////////////AAAAAAAA////////////AAAAAAAA//////////////////// ////////AAAAAAAA////////////2dnZAAAAjIyM////////p6enAAAA//// ////////AAAAfHx8////////////////////////////AAAAAAAA6enp//// ////////p6enAAAA////////////AAAAfHx8////////////////AAAAAAAA ////////fHx8aGho////////////AAAAAAAA////////jIyMAAAA4eHh//// ////0NDQp6en////////p6enAAAA////////////AAAAfHx8////////vb29 AAAA2dnZ////////8PDwAAAAAAAA////////////////////////////AAAA AAAA////////////vb29AAAA6enp////////x8fHAAAAp6en//////////// ////////////////////jIyMAAAA4eHh////////0NDQp6en////////vb29 AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA////////////AAAA AAAA////////////////////////////////vb29AAAA6enp////////x8fH AAAAp6en////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////jIyMAAAA4eHh////////0NDQp6en//////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////p6en AAAA////////////AAAAfHx8////////////aGhoTU1N4eHhfHx8//////// ////////AAAAAAAA////////////////////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////fHx8aGho ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////TU1N AAAAAAAA////TU1NAAAAAAAAx8fH////4eHhAAAAaGho//////////////// AAAAAAAA////////////////////TU1Nmpqa////6enpTU1NTU1N8PDwTU1N AAAAAAAAx8fH8PDwmpqafHx8////TU1NAAAAAAAA0NDQ////x8fHAAAAaGho x8fH////4eHhAAAAaGho////////fHx8AAAA6enp////0NDQAAAAaGho//// ////AAAAAAAA////////////////TU1NAAAAAAAA////////////TU1Nmpqa ////6enpTU1NTU1N8PDw////TU1NAAAAAAAAx8fH////4eHhAAAAaGho//// ////////////////////////4eHhAAAATU1N////////////////TU1NAAAA ////////////4eHhaGho8PDwTU1NAAAAAAAA////////////////AAAAAAAA ////////////AAAAAAAA////////////////////////////AAAAAAAAx8fH ////6enpTU1NAAAA2dnZ////////6enpTU1Np6en////vb29AAAA0NDQ//// ////////////////////TU1NAAAAAAAAx8fH8PDwmpqafHx86enpTU1Np6en ////vb29AAAA0NDQ////////////////AAAAAAAA////////fHx8AAAA6enp ////0NDQAAAAaGho////vb29AAAAaGho////////////////TU1N6enp//// 6enpTU1Np6en////vb29AAAA0NDQ////////////fHx8aGho8PDw////p6en AAAAAAAA////////////////////////////AAAAAAAA//////////////// TU1Nmpqa////6enpTU1NTU1N8PDw////////////////////////////vb29 AAAAaGho////////////////TU1N6enp////////TU1Nmpqa////6enpTU1N TU1N8PDw////6enpAAAAAAAA////////4eHhAAAAAAAA//////////////// ////////////////////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1NAAAA AAAAx8fH////4eHhAAAAaGho////////////////////////////TU1NAAAA AAAA0NDQ////x8fHAAAAaGhox8fH////4eHhAAAAaGho////////vb29AAAA aGho////////////////TU1N6enp////////////////////////TU1NAAAA AAAAx8fH////4eHhAAAAaGho////////////6enpTU1Np6en////vb29AAAA 0NDQ////////mpqaAAAA2dnZ////0NDQfHx82dnZ////////AAAAAAAA//// ////////////////////////////TU1NAAAAAAAA0NDQ////x8fHAAAAaGho x8fH////4eHhAAAAaGho////////////fHx8AAAA6enp////0NDQAAAAaGho ////////TU1NAAAAAAAA////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////6enpp6enTU1N////6enpp6en TU1N////srKyAAAATU1N4eHh////////AAAAAAAAAAAAAAAAAAAAAAAA//// ////////8PDwp6enAAAAAAAAmpqa6enp////6enpsrKyTU1N////srKyAAAA mpqa////6enpp6enTU1N////srKyAAAAaGho4eHh////p6enAAAAaGho4eHh ////////////p6enTU1NAAAAAAAAmpqa6enp////AAAAAAAAAAAAAAAAAAAA ////////6enpp6enTU1N////////////8PDwp6enAAAAAAAAmpqa6enp//// ////6enpp6enTU1N////srKyAAAATU1N4eHh//////////////////////// vb29AAAAAAAAAAAAjIyM////vb29AAAAAAAAAAAAp6en////////AAAAAAAA AAAA6enpp6enTU1N////////////////AAAAAAAA////////////AAAAAAAA ////////////////////////////AAAAAAAA6enpjIyMAAAAaGho0NDQ//// ////////////6enpjIyMAAAATU1Nvb29//////////////////////////// 6enpsrKyTU1N////srKyAAAAmpqa////6enpjIyMAAAATU1Nvb29//////// ////////////AAAAAAAA////////////p6enTU1NAAAAAAAAmpqa6enpvb29 AAAAAAAAAAAAjIyM////////jIyMAAAAAAAA4eHh////6enpjIyMAAAATU1N vb29////////////////////p6enAAAATU1N2dnZAAAAAAAA//////////// ////////////AAAAAAAAAAAAAAAAAAAA////////8PDwp6enAAAAAAAAmpqa 6enp////////////////////////////vb29AAAAAAAAAAAAjIyM//////// jIyMAAAAAAAA4eHh////8PDwp6enAAAAAAAAmpqa6enp////////AAAAAAAA AAAA////////AAAAAAAAAAAA//////////////////////////////////// 8PDwp6enAAAAAAAAmpqa6enp////////6enpp6enTU1N////srKyAAAATU1N 4eHh////////////////////////////6enpp6enTU1N////srKyAAAAaGho 4eHh////p6enAAAAaGho4eHh////vb29AAAAAAAAAAAAjIyM////////jIyM AAAAAAAA4eHh////////////////////6enpp6enTU1N////srKyAAAATU1N 4eHh////////////////6enpjIyMAAAATU1Nvb29////////AAAAAAAAAAAA AAAA4eHhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////// ////////6enpp6enTU1N////srKyAAAAaGho4eHh////p6enAAAAaGho4eHh ////////////////p6enTU1NAAAAAAAAmpqa6enp////////6enpp6enTU1N ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////0NDQAAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA////////////AAAAAAAA//////////////////// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////////////////0NDQAAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////0NDQAAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// TU1NAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////x8fHAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA ////////////AAAAAAAA////////////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////////////////x8fHAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////x8fHAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////mpqaAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////8PDwAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA////////////AAAAAAAA ////////////////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// ////////////////8PDwAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////8PDwAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////fHx8fHx8//////////////////////////////// ////////////////////6enpTU1Nx8fH////4eHhaGhoaGho//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////fHx8fHx8 //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////fHx8fHx8//// ////////aGhoAAAAAAAA////////aGhoAAAAAAAA//////////////////// ////aGhoAAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////aGhoAAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////aGhoAAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////fHx8fHx8////////aGhoAAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// fHx8fHx8//////////////////////////////////////////////////// ////8PDwmpqaAAAAAAAAfHx82dnZ//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////fHx8fHx8//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////fHx8fHx8////////////6enpp6enTU1N ////////6enpp6enTU1N////////////////////////6enpp6enTU1N//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////6enpp6enTU1N//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////6enp p6enTU1N//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////fHx8fHx8////////6enpp6enTU1N//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////mpqaAAAAmpqa//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////8PDwp6enaGho AAAAAAAAfHx8vb29////////////////////////////////mpqaAAAAmpqa //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////AAAAAAAAAAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////8PDwp6en aGhoAAAAAAAAfHx8vb29//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////vb292dnZ//////////////// ////////////////////////////////////////////////////fHx8AAAA AAAAfHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////TU1Nmpqa4eHh////////////2dnZmpqa ////////////////////////////fHx8AAAAAAAAfHx8//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////vb292dnZ//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////6enpAAAAAAAA6enp//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////TU1Nmpqa4eHh////////////2dnZ mpqa//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////x8fHx8fH//////////////////////////////// ////////////////////////////////////////////mpqavb29//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////p6en////////////////////////8PDwp6en//////////////// ////////////////////mpqavb29//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////x8fHx8fH//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////p6en////////////////////////8PDwp6en//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////TU1N//////////////////////////////////////////////////// ////////////////////////8PDwaGho//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////2dnZ4eHh ////////////////2dnZAAAA//////////////////////////////////// 8PDwaGho//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////TU1N//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////2dnZ 4eHh////////////////2dnZAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////////4eHhTU1NAAAAsrKy////TU1Np6en6enp////AAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////// vb29TU1NAAAAaGhop6en8PDw////////////////4eHhfHx8AAAAmpqa6enp ////AAAAAAAAAAAATU1N////////////////fHx8aGhoTU1N//////////// ////////////////////vb29TU1NAAAAaGhop6en8PDw//////////////// ////////TU1N2dnZ////////////////////////////////////////AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////// 4eHhaGhoAAAAaGho6enpTU1Np6en6enp////AAAAAAAAAAAAAAAA//////// 6enpfHx8AAAAaGho0NDQ////////////4eHhTU1NAAAAp6en////mpqaAAAA jIyM6enp0NDQAAAAfHx86enp////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAA////AAAAAAAAAAAAAAAA////////0NDQTU1NAAAAAAAAAAAAAAAAAAAA aGho////////////////////////////////////////TU1N2dnZ//////// ////////////6enpmpqaAAAAAAAAp6en8PDw////////////4eHhTU1NAAAA srKy////TU1Np6en6enp////AAAAAAAAAAAATU1N//////////////////// ////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////////0NDQAAAAfHx86enp////////4eHhfHx8AAAAmpqa6enp ////////AAAAAAAAAAAATU1N////////////////4eHhfHx8AAAAmpqa6enp ////////////AAAA6enpjIyMAAAAjIyM////////////0NDQAAAAfHx86enp ////fHx8aGhoTU1N////////////////////////////////0NDQAAAAfHx8 6enpAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////////4eHhfHx8 AAAAmpqa6enp////////AAAAAAAAAAAATU1N////////////////4eHhfHx8 AAAAmpqa6enp////////////4eHhTU1NAAAAp6en////mpqaAAAAjIyMAAAA AAAAAAAAAAAAAAAAAAAA////0NDQAAAAfHx86enp////////////4eHhfHx8 AAAAmpqa6enp////////AAAAAAAAAAAATU1N//////////////////////// ////////AAAAAAAA0NDQTU1NAAAAmpqa8PDw////////////////4eHhfHx8 AAAAmpqa6enp////////AAAAAAAAAAAATU1N////////////////6enpfHx8 AAAAaGho0NDQ////////////////4eHhfHx8AAAAmpqa6enp////////AAAA AAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////0NDQAAAAfHx86enp//// 4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enp0NDQTU1NAAAAAAAAAAAAAAAA AAAAaGho////////////4eHhfHx8AAAAmpqa6enp////////AAAA6enpjIyM AAAAjIyM////////////////////////////////4eHhTU1NAAAAp6en//// mpqaAAAAjIyMAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////// 4eHhaGhoAAAAaGho6enpTU1Np6en6enp////////////////////AAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////// 6enpmpqaAAAAAAAAp6en8PDw////////AAAAAAAAAAAATU1N//////////// ////4eHhfHx8AAAAmpqa6enp//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////////aGho AAAA2dnZ////x8fHAAAAAAAAaGho////6enpAAAAAAAA8PDw////6enpAAAA AAAA6enp////6enpAAAAAAAA6enp////////TU1NAAAAvb29////6enpTU1N TU1N////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh6enpAAAAAAAA//// ////////////////jIyMAAAA0NDQ////////////////////////////TU1N AAAAvb29////6enpTU1NTU1N////////////////////x8fHAAAAmpqa//// ////////////////////////////////////6enpAAAAAAAA6enp6enpAAAA AAAA8PDw////8PDwAAAAAAAA6enp////////4eHhAAAATU1N4eHh////vb29 AAAAAAAAaGho////6enpAAAAAAAA6enp////6enpTU1NAAAAAAAAAAAAaGho 6enp////////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKyTU1NAAAA6enp jIyM////////6enpAAAAAAAA6enp6enpAAAAAAAA8PDw////8PDwAAAAAAAA 6enp////////AAAAAAAAAAAAAAAAAAAAAAAAaGho6enp//////////////// ////////////////////x8fHAAAAmpqa////////////////8PDwTU1NaGho 8PDw////p6enaGho////////////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho ////6enpAAAAAAAA////////////////////////////////////////6enp AAAAAAAA6enp6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////////TU1N AAAA6enpjIyM////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAAAAAA ////////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////////AAAAfHx8 4eHh////4eHhjIyM////////TU1NAAAA6enpjIyM////jIyMAAAA0NDQ//// ////////////////////////////TU1NAAAA6enpjIyM6enpAAAAAAAA6enp ////8PDwAAAAAAAA6enp////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//// 6enpAAAAAAAA////////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//// ////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKy0NDQAAAAAAAA2dnZ//// ////TU1NAAAA6enpjIyM////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//// 6enpAAAAAAAA////////////////////////////////////AAAAAAAAp6en ////8PDwfHx8TU1N////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//// 6enpAAAAAAAA////////////////6enpTU1NAAAAAAAAAAAAaGho6enp//// ////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAAAAAA8PDw////8PDw AAAAAAAA6enp////////TU1NAAAA6enpjIyM////aGhoAAAA0NDQ////x8fH AAAAAAAA////srKyAAAAAAAAAAAAAAAAAAAAAAAAaGho6enp////////6enp AAAAAAAAAAAAAAAAAAAA4eHh////AAAAfHx84eHh////4eHhjIyM//////// ////////////////////aGhoAAAA0NDQ////x8fHAAAAAAAA////mpqaAAAA AAAA8PDw////8PDwAAAAAAAA6enp////////4eHhAAAATU1N4eHh////vb29 AAAAAAAAaGho////////////////////6enpAAAAAAAA8PDw////6enpAAAA AAAA6enp////6enpAAAAAAAA6enp////////8PDwTU1NaGho8PDw////p6en aGho////////6enpAAAAAAAA////////////////6enpAAAAAAAAAAAAAAAA AAAA4eHh//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////0NDQAAAAsrKy////////mpqa AAAAfHx88PDw////6enpaGho////AAAAAAAA//////////////////////// ////////////////////////////////////AAAAAAAA////////////0NDQ AAAAsrKy////////////////aGhoAAAATU1N//////////////////////// ////////////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////mpqaAAAAx8fH////////////AAAAAAAA//////////// AAAAAAAA////////mpqaAAAAfHx8////////4eHhjIyM////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA////////////////////AAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////////srKy8PDw //////////////////////////////////////////////////////////// aGhoAAAATU1N////////////////p6enAAAA0NDQ////////8PDwAAAAvb29 ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////mpqa AAAAfHx88PDw////6enpaGho////////AAAAAAAA////////////////mpqa AAAAfHx88PDw////6enpaGho////////AAAA8PDw////////x8fHAAAA//// ////AAAAAAAA//////////////////////////////////////////////// ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////mpqaAAAAfHx88PDw////6enpaGho////////AAAAAAAA//////// ////////mpqaAAAAfHx88PDw////6enpaGho////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////////mpqaAAAAfHx88PDw////6enpaGho////////AAAAAAAA//////// ////////////////////////////AAAAAAAA////////////2dnZAAAAsrKy ////////mpqaAAAAfHx88PDw////6enpaGho////////AAAAAAAA//////// ////////mpqaAAAAfHx8////////4eHhjIyM////////mpqaAAAAfHx88PDw ////6enpaGho////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA////////srKy 8PDw////////////////////////////////mpqaAAAAfHx88PDw////6enp aGho////AAAA8PDw////////x8fHAAAA//////////////////////////// AAAAAAAA////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////mpqaAAAAx8fH////////////AAAAAAAA//////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAA AAAA////////////////mpqaAAAAfHx88PDw////6enpaGho//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAaGho////////AAAAAAAA2dnZ//////////// ////////AAAAAAAA//////////////////////////////////////////// ////////////////AAAAAAAA////////////////AAAAaGho//////////// 0NDQAAAAp6ensrKyx8fH//////////////////////////////////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////////AAAAAAAA////////TU1N AAAA6enp////////////////////////p6enAAAAx8fH////////AAAAAAAA ////////AAAAAAAA////////////////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////////////srKyjIyMAAAAaGho2dnZ//// ////////////////////////////////////0NDQAAAAp6ensrKyx8fH//// ////////TU1NAAAA8PDw////////////AAAAaGho////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////////////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA2dnZ//////////// ////////////AAAAAAAA////////////////AAAAAAAA2dnZ//////////// ////////////////////x8fHaGhoAAAAjIyM////////AAAAAAAA//////// ////////////////////////////////////////////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA2dnZ ////////////////////////AAAAAAAA////////////////AAAAAAAA2dnZ ////////////////////////p6enAAAAx8fH////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA2dnZ ////////////////////////AAAAAAAA//////////////////////////// ////////AAAAAAAA////////////////AAAAaGho////////AAAAAAAA2dnZ ////////////////////////AAAAAAAA////////////////TU1NAAAA6enp ////////////////////////AAAAAAAA2dnZ//////////////////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// p6enAAAAx8fH////////AAAAAAAA////////////srKyjIyMAAAAaGho2dnZ ////////////////AAAAAAAA2dnZ////////////////////////////x8fH aGhoAAAAjIyM////////////////////////////p6enAAAAx8fH//////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////TU1N AAAA8PDw////////////AAAAaGho////////AAAAAAAA//////////////// AAAAAAAA2dnZ//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA////////////////////////AAAAAAAA//// ////////////////////////////////////////////////////////AAAA AAAA////////////////AAAAAAAA////////////aGhoAAAA8PDw8PDwaGho ////////////////////////////////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////////// ////////////////srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA//// ////////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////////0NDQAAAAp6en////0NDQAAAA0NDQ//////////////////// ////////////////aGhoAAAA8PDw8PDwaGho////////////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA//////////////////////////////////////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////////////////////2dnZTU1N AAAAAAAAjIyM////////////AAAAAAAA//////////////////////////// ////////////////////////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////AAAAAAAA////////////////AAAAAAAA//////////////////////// ////////srKyTU1Np6en6enpAAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////////AAAAAAAA//////////////////////// ////AAAAAAAA////////////////////////////////////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA//////////////////////// ////AAAAAAAA////////////////AAAAAAAA//////////////////////// ////AAAAAAAA////////////////////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////////srKyTU1Np6en6enp AAAAAAAA////////0NDQAAAAp6en////0NDQAAAA0NDQ////////////AAAA AAAA////////////////////////2dnZTU1NAAAAAAAAjIyM//////////// ////////////////////////srKyTU1Np6en6enpAAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////////////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////AAAAAAAA////////TU1N AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAA//////////////////////// ////////////////////////////////////AAAAAAAA//////////////// AAAAAAAA////////0NDQAAAAmpqa////////jIyM4eHh//////////////// ////////////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////aGhoAAAA////////////////AAAAAAAA//////////// AAAAAAAA////////TU1NAAAA//////////////////////////////////// ////x8fHfHx8AAAAAAAA////////AAAAAAAA////////////////////AAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////////aGhoAAAA ////////////AAAATU1N////////////////////////////////0NDQAAAA mpqa////////jIyM4eHh////////aGhoAAAA////////////8PDwAAAATU1N ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////TU1N AAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA////////////////TU1N AAAAAAAAAAAAAAAAAAAAAAAA////////aGhoAAAAp6en8PDw//////////// ////AAAAAAAA//////////////////////////////////////////////// ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA//////// ////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////////////////x8fH fHx8AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA//////// ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA//////// ////////TU1NAAAA////////////////////////////TU1NAAAAAAAAAAAA AAAAAAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////////////////x8fHfHx8AAAAAAAA////////aGho AAAA////////////AAAATU1N////////////TU1NAAAAAAAAAAAAAAAAAAAA AAAA////aGhoAAAAp6en8PDw//////////////////////////////////// ////////////x8fHfHx8AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////aGhoAAAA////////////////AAAAAAAA//////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////aGhoAAAA////////////8PDwAAAATU1N////////AAAA AAAA////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////2dnZAAAAjIyM////////p6enAAAA////////////AAAA fHx8////AAAAAAAA6enp//////////////////////////////////////// ////////////////AAAAAAAA////////////2dnZAAAAjIyM////////jIyM AAAA4eHh////////0NDQp6en//////////////////////////////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////////vb29 AAAA2dnZ////////8PDwAAAAAAAA////////////AAAAAAAA////////p6en AAAA6enp////////x8fHTU1N////////fHx8aGho////////////AAAAAAAA ////////AAAAAAAA////////////////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////////TU1NAAAA////////////AAAAjIyM ////////////////////////////////jIyMAAAA4eHh////////0NDQp6en ////////vb29AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA6enp//////////////////// ////////////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////p6enAAAA////////////AAAA fHx8////////AAAAAAAA6enp////////////p6enAAAA////////////AAAA fHx8////////AAAA6enp////////6enpAAAA////////AAAAAAAA//////// ////////////////////////////////////////////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA////////////p6enAAAA//// ////////AAAAfHx8////////AAAAAAAA6enp////////////p6enAAAA//// ////////AAAAfHx8////////fHx8aGho////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////////p6enAAAA//// ////////AAAAfHx8////////AAAAAAAA6enp//////////////////////// ////////AAAAAAAA////////////0NDQAAAAjIyM////////p6enAAAA//// ////////AAAAfHx8////////AAAAAAAA6enp////////////p6enAAAA6enp ////////x8fHTU1N////////p6enAAAA////////////AAAAfHx8//////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// fHx8aGho////////////AAAAAAAA////////TU1NAAAA////////////AAAA jIyM////////////p6enAAAA////////////AAAAfHx8////AAAA6enp//// ////6enpAAAA////////////////////////////fHx8aGho//////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////////vb29 AAAA2dnZ////////8PDwAAAAAAAA////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////vb29 AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA6enp//////////// p6enAAAA////////////AAAAfHx8//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////6enpAAAA AAAA////////4eHhAAAAAAAA////////TU1NAAAAAAAA0NDQ////x8fHAAAA aGhox8fH////4eHhAAAAaGho////////////AAAAAAAAx8fH////6enpTU1N AAAA2dnZ////////6enpTU1Np6en////vb29AAAA0NDQTU1NAAAAAAAAx8fH 8PDwmpqafHx8////////////////////////////////////////////AAAA AAAAx8fH////6enpTU1NAAAA2dnZ////vb29AAAAaGho//////////////// TU1N6enp////////////////////////////TU1NAAAAAAAA////TU1NAAAA AAAAx8fH////4eHhAAAAaGho////////////////fHx8aGho8PDw////p6en AAAAAAAA////////TU1NAAAAAAAA////////////TU1NfHx8////////aGho fHx8////////fHx8AAAA6enp////0NDQAAAAaGho////////AAAAAAAA//// ////////////TU1NAAAAAAAA////TU1NAAAAAAAAx8fH////4eHhAAAAaGho ////////////vb29AAAAx8fH////p6enAAAAAAAAAAAA//////////////// ////////vb29AAAAaGho////////////////TU1N6enp////////TU1Nmpqa ////6enpTU1NTU1N8PDw////6enpAAAAAAAA////////4eHhAAAAAAAA//// ////TU1NAAAAAAAAx8fH8PDwmpqafHx8////////////////////////TU1N AAAAAAAA////TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////////AAAA AAAA////////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAAAAAA x8fH8PDwmpqafHx86enpTU1Np6en////vb29AAAA0NDQ////////jIyM4eHh ////8PDwfHx8AAAA////////AAAAAAAA//////////////////////////// ////////////////////////////AAAAAAAA////////////AAAAAAAAx8fH ////2dnZAAAAaGho////////////6enpTU1Np6en////vb29AAAA0NDQ//// TU1NAAAAAAAAx8fH8PDwmpqafHx86enpTU1Np6en////vb29AAAA0NDQ//// ////fHx8AAAA6enp////0NDQAAAAaGho////////////AAAAAAAA//////// ////AAAAAAAA////////////////6enpTU1Np6en////vb29AAAA0NDQ//// TU1NAAAAAAAAx8fH8PDwmpqafHx8////////////////AAAAAAAAAAAAx8fH ////8PDwaGhoAAAA2dnZ////////6enpTU1Np6en////vb29AAAA0NDQ//// TU1NAAAAAAAAx8fH8PDwmpqafHx8////TU1NfHx8////////aGhofHx8//// ////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAAAAAAx8fH////4eHh AAAAaGho////////////AAAAAAAA////////////fHx8AAAA6enp////0NDQ AAAAaGho////////vb29AAAAx8fH////p6enAAAAAAAAAAAA////////6enp TU1Np6en////vb29AAAA0NDQ////jIyM4eHh////8PDwfHx8AAAA//////// ////////////////////fHx8AAAA6enp////0NDQAAAAaGho////TU1NAAAA AAAAx8fH////4eHhAAAAaGho////////////////fHx8aGho8PDw////p6en AAAAAAAA////////////////////////TU1NAAAAAAAA0NDQ////x8fHAAAA aGhox8fH////4eHhAAAAaGho////////////////TU1Nmpqa////6enpTU1N TU1N8PDw////TU1NAAAAAAAAx8fH8PDwmpqafHx86enpTU1Np6en////vb29 AAAA0NDQ//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////6enpp6en TU1N////srKyAAAATU1N4eHh////////AAAAAAAAAAAA////////AAAAAAAA AAAA////////6enpp6enTU1N////srKyAAAAaGho4eHh////p6enAAAAaGho 4eHh////////////AAAAAAAA6enpjIyMAAAAaGho0NDQ//////////////// 6enpjIyMAAAATU1Nvb29////6enpsrKyTU1N////srKyAAAAmpqa//////// ////////////////////////////////////AAAAAAAA6enpjIyMAAAAaGho 0NDQ////vb29AAAAAAAAAAAAjIyM////////jIyMAAAAAAAA4eHh//////// ////////////////6enpp6enTU1N////6enpp6enTU1N////srKyAAAATU1N 4eHh////////////////////p6enAAAATU1N2dnZAAAAAAAA////////6enp p6enTU1N////////////8PDwp6enAAAAAAAAmpqa////////////////p6en TU1NAAAAAAAAmpqa6enp////AAAAAAAAAAAAAAAAAAAA////////6enpp6en TU1N////6enpp6enTU1N////srKyAAAATU1N4eHh////////////////x8fH aGhoAAAAjIyM6enp////////////////////////////vb29AAAAAAAAAAAA jIyM////////jIyMAAAAAAAA4eHh////8PDwp6enAAAAAAAAmpqa6enp//// ////AAAAAAAAAAAA////////AAAAAAAAAAAA////////6enpsrKyTU1N//// srKyAAAAmpqa////////////////////////6enpp6enTU1N////6enpp6en TU1N////srKyAAAATU1N4eHh////////AAAAAAAAAAAAAAAAAAAA//////// 6enpjIyMAAAATU1Nvb29////////6enpsrKyTU1N////srKyAAAAmpqa//// 6enpjIyMAAAATU1Nvb29////////////////jIyMAAAAmpqa6enpAAAA//// AAAAAAAAAAAAAAAAAAAA//////////////////////////////////////// ////AAAAAAAAAAAAAAAAAAAA////AAAAAAAA////srKyAAAAaGho6enp//// ////////////6enpjIyMAAAATU1Nvb29////////6enpsrKyTU1N////srKy AAAAmpqa////6enpjIyMAAAATU1Nvb29////////////////p6enTU1NAAAA AAAAmpqa6enp////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ////////////6enpjIyMAAAATU1Nvb29////////6enpsrKyTU1N////srKy AAAAmpqa////////////////6enpsrKyTU1N////mpqaAAAATU1N0NDQ//// ////////////6enpjIyMAAAATU1Nvb29////////6enpsrKyTU1N////srKy AAAAmpqa////8PDwp6enAAAAAAAAmpqa////////////////6enpjIyMAAAA TU1Nvb29////////6enpp6enTU1N////srKyAAAATU1N4eHh////////AAAA AAAAAAAAAAAAAAAA////////p6enTU1NAAAAAAAAmpqa6enp//////////// x8fHaGhoAAAAjIyM6enp////////////////////6enpjIyMAAAATU1Nvb29 ////////////jIyMAAAAmpqa6enpAAAA//////////////////////////// ////p6enTU1NAAAAAAAAmpqa6enp////6enpp6enTU1N////srKyAAAATU1N 4eHh////////////////////p6enAAAATU1N2dnZAAAAAAAA//////////// ////////////6enpp6enTU1N////srKyAAAAaGho4eHh////p6enAAAAaGho 4eHh////////////////8PDwp6enAAAAAAAAmpqa6enp////////6enpsrKy TU1N////srKyAAAAmpqa////6enpjIyMAAAATU1Nvb29//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// ////0NDQAAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////0NDQAAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////0NDQAAAAAAAA//////// ////////////////////////////////////////////0NDQAAAAAAAA//// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA////////0NDQAAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////0NDQAAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// ////////////////////////////////////////////////x8fHAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////x8fH AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////x8fHAAAA//////////////////////////// ////////////////////////////x8fHAAAA////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////TU1NAAAA//////// ////x8fHAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////x8fHAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// ////////////////////////////8PDwAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////8PDwAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////8PDwAAAA//////////////////////////////////////////////// ////////8PDwAAAA////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////mpqaAAAA////////////8PDwAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////aGhoAAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////aGhoAAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// fHx8fHx8//////////////////////////////////////////////////// ////////////////aGhoAAAAAAAA////////////fHx8fHx8//////////// //////////////////////////////////////////////////////////// ////////////////////////////////////fHx8fHx8//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////fHx8fHx8//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////aGhoAAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////6enpTU1Nx8fH////4eHhaGhoaGho//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////aGhoAAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////6enpp6enTU1N//////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////6enpp6en TU1N//////////////////////////////////////////////////////// ////////////////////////////////////////fHx8fHx8//////////// ////////////////////////////////////////////////////////6enp p6enTU1N////////////fHx8fHx8//////////////////////////////// //////////////////////////////////////////////////////////// ////////////////fHx8fHx8//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// fHx8fHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////6enpp6enTU1N//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////8PDwmpqaAAAA AAAAfHx82dnZ//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////6enp p6enTU1N//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAAAAAAAAAA//////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAAAAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////mpqaAAAAmpqa//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAAAAAAAAAA//////////////////////////////////////// ////////mpqaAAAAmpqa//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////mpqaAAAAmpqa//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////mpqaAAAAmpqa//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAAAAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////6enpAAAAAAAA6enp//////////////////////////////// ////////////////////////////////////////////////////////6enp AAAAAAAA6enp//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////fHx8AAAAAAAAfHx8 //////////////////////////////////////////////////////////// ////////////////////////////////////////////6enpAAAAAAAA6enp ////////////////////////////////////////////////fHx8AAAAAAAA fHx8//////////////////////////////////////////////////////// ////////////////////////////////////////////////fHx8AAAAAAAA fHx8//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////fHx8AAAAAAAAfHx8//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////vb29 2dnZ//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 6enpAAAAAAAA6enp//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////mpqavb29//////////////// //////////////////////////////////////////////////////////// ////////////////////////////AAAAAAAA//////////////////////// ////////////////////////////////////////mpqavb29//////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////mpqavb29//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// mpqavb29//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////x8fHx8fH//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////8PDwaGho//////////////////////////////////// //////////////////////////////////////////////////////////// ////////AAAAAAAA//////////////////////////////////////////// ////////////////////8PDwaGho//////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////8PDwaGho//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////8PDwaGho//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////TU1N//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA0NDQTU1NAAAAmpqa8PDw////////AAAAAAAA AAAATU1N////////////////6enpmpqaAAAAAAAAp6en8PDw//////////// AAAAAAAA0NDQTU1NAAAAmpqa8PDw////////////////6enpmpqaAAAAAAAA p6en8PDw////////////AAAA6enpjIyMAAAAjIyM////////4eHhTU1NAAAA p6en////mpqaAAAAjIyM6enp////AAAAAAAAAAAAAAAA//////////////// ////AAAAAAAAAAAAAAAA////4eHhAAAAAAAAAAAA////////AAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////////4eHhaGho AAAAaGho6enpTU1Np6en6enp////AAAAAAAAAAAAAAAA//////////////// TU1N2dnZ////////////////////////////////////AAAAAAAAAAAATU1N ////////////////////4eHhfHx8AAAAmpqa6enp////////AAAAAAAA0NDQ TU1NAAAAmpqa8PDw////////////////AAAAAAAAAAAAAAAA//////////// ////TU1N2dnZ////////////////////////////////////AAAAAAAAAAAA AAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////////// ////TU1N2dnZ////////////////////////////////////AAAAAAAAAAAA AAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////4eHhTU1N AAAAp6en////mpqaAAAAjIyM6enpAAAAAAAAAAAAAAAA////AAAAAAAAAAAA AAAA////////////////////////////////////0NDQfHx8//////////// ////2dnZaGho////////////////AAAAAAAAAAAAAAAA////0NDQAAAAfHx8 6enp////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////////// ////////////////////////TU1N2dnZ////////////////////6enpmpqa AAAAAAAAp6en8PDw////////////////4eHhTU1NAAAAsrKy////TU1Np6en 6enpAAAAAAAAAAAATU1N////////////////////////////////AAAAAAAA AAAAAAAAAAAAAAAA////////4eHhTU1NAAAAsrKy////TU1Np6en6enp//// AAAAAAAAAAAAAAAA////////AAAAAAAAAAAAAAAA//////////////////// AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////4eHhTU1NAAAAp6en ////mpqaAAAAjIyMAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAA AAAAAAAAAAAA////////////4eHhfHx8AAAAmpqa6enp////////////fHx8 aGhoTU1N////////////////////////////4eHhTU1NAAAAp6en////mpqa AAAAjIyM6enp////4eHhaGhoAAAAaGho6enpTU1Np6en6enp////4eHhaGho AAAAaGho6enpTU1Np6en6enpAAAAAAAAAAAATU1N//////////////////// 4eHhfHx8AAAAmpqa6enp////////AAAA6enpjIyMAAAAjIyM//////////// AAAA6enpjIyMAAAAjIyM////////////////////////////////4eHhTU1N AAAAp6en////mpqaAAAAjIyMAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA ////////4eHhaGhoAAAAaGho6enpTU1Np6en6enp//////////////////// ////AAAAAAAA0NDQTU1NAAAAmpqa8PDw////////AAAAAAAAAAAAAAAA//// AAAAAAAAAAAAAAAA////////////6enpmpqaAAAAAAAAp6en8PDw//////// AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////4eHhfHx8AAAAmpqa 6enp////////fHx86enp////////////////AAAAAAAAAAAAAAAAAAAAAAAA ////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enpAAAAAAAAAAAA//////// AAAAAAAAAAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAAp6en////8PDwfHx8TU1N////////6enpAAAAAAAA//////////////// 8PDwTU1NaGho8PDw////p6enaGho////////////AAAAAAAAp6en////8PDw fHx8TU1N////////////8PDwTU1NaGho8PDw////p6enaGho//////////// AAAAfHx84eHh////4eHhjIyM////aGhoAAAA0NDQ////x8fHAAAAAAAA//// srKy////6enpAAAAAAAA6enp////////////////////6enpAAAAAAAA8PDw ////////fHx8TU1N8PDw////////6enpAAAAAAAA6enp6enpAAAAAAAA8PDw ////8PDwAAAAAAAA6enp////////4eHhAAAATU1N4eHh////vb29AAAAAAAA aGho////6enpAAAAAAAA6enp////////////x8fHAAAAmpqa//////////// ////////////////////////6enpAAAAAAAA////////////////////6enp AAAAAAAAAAAAAAAAAAAA4eHh////AAAAAAAAp6en////8PDwfHx8TU1N//// ////////////6enpAAAAAAAA6enp////////////x8fHAAAAmpqa//////// ////////////////////////////6enpAAAAAAAA8PDw////6enpAAAAAAAA 6enp////6enpAAAAAAAA6enp////////////////x8fHAAAAmpqa//////// ////////////////////////////6enpAAAAAAAA8PDw////6enpAAAAAAAA 6enp////6enpAAAAAAAA6enp////////aGhoAAAA0NDQ////x8fHAAAAAAAA ////srKy6enpAAAAAAAA6enp////6enpAAAAAAAA6enp//////////////// ////////////////////fHx8AAAA0NDQ////////////p6enAAAA2dnZ//// ////////6enpAAAAAAAA6enp////TU1NAAAA6enpjIyM////6enpAAAAAAAA 6enp////8PDwAAAAAAAA6enp//////////////////////////////////// x8fHAAAAmpqa////////////////8PDwTU1NaGho8PDw////p6enaGho//// ////////////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho6enpAAAAAAAA//// ////////////////////////////////////0NDQAAAAAAAA2dnZ//////// ////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho////6enpAAAAAAAA6enp//// ////6enpAAAAAAAA6enp////////////////////6enpAAAAAAAA8PDw//// 8PDwAAAAAAAA6enp////////aGhoAAAA0NDQ////x8fHAAAAAAAA////mpqa AAAAAAAA8PDw////6enpAAAAAAAA6enp////6enpAAAAAAAA6enp//////// 6enpAAAAAAAAAAAAAAAAAAAA4eHh////////jIyMAAAA0NDQ//////////// ////////////////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKy4eHhAAAA TU1N4eHh////vb29AAAAAAAAaGho4eHhAAAATU1N4eHh////vb29AAAAAAAA aGho6enpAAAAAAAA////////////////////6enpAAAAAAAAAAAAAAAAAAAA 4eHh////AAAAfHx84eHh////4eHhjIyM////////AAAAfHx84eHh////4eHh jIyM////////////////////////////aGhoAAAA0NDQ////x8fHAAAAAAAA ////mpqaAAAAAAAA8PDw////8PDwAAAAAAAA6enp////4eHhAAAATU1N4eHh ////vb29AAAAAAAAaGho////////////////////////AAAAAAAAp6en//// 8PDwfHx8TU1N////////6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp//// ////8PDwTU1NaGho8PDw////p6enaGho////////6enpAAAAAAAA8PDw//// 8PDwAAAAAAAA6enp////6enpAAAAAAAAAAAAAAAAAAAA4eHh////x8fHsrKy ////////////////////0NDQAAAAAAAA2dnZ////////aGhoAAAA0NDQ//// x8fHAAAAAAAA////srKy8PDwfHx88PDw////////8PDwAAAAfHx8//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA////////////2dnZ AAAAsrKy////////AAAAAAAA////////////////p6enAAAA0NDQ//////// 8PDwAAAAvb29////////AAAAAAAA////////////2dnZAAAAsrKy//////// p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAA8PDw////////x8fH AAAA////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA ////////////////////////////AAAAAAAA////////fHx8TU1N6enp//// ////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////////mpqaAAAAx8fH////////////AAAAAAAA////////////AAAAAAAA ////////////////aGhoAAAATU1N//////////////////////////////// ////////AAAAAAAA////////////////////mpqaAAAAfHx88PDw////6enp aGho////AAAAAAAA////////////2dnZAAAAsrKy////////////////AAAA AAAA////////////////aGhoAAAATU1N//////////////////////////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////////aGhoAAAATU1N//////////////////////////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////////////////////////8PDw AAAAmpqajIyM////////////AAAATU1NjIyM////////////////AAAAAAAA ////////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA ////////////////////////////////////////aGhoAAAATU1N//////// ////////p6enAAAA0NDQ////////8PDwAAAAvb29////////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA//////////////////////// ////////////////////AAAAAAAA////////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA//// ////////////////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////mpqaAAAAfHx88PDw//// 6enpaGho////////////////////////////////////////////////AAAA AAAA////////////AAAAAAAA////////mpqaAAAAx8fH////////////AAAA AAAA////mpqaAAAAx8fH////////////AAAAAAAA////////AAAAAAAA//// ////////////////mpqaAAAAfHx88PDw////6enpaGho////AAAA8PDw//// ////x8fHAAAA////////AAAA8PDw////////x8fHAAAA//////////////// ////////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//// ////////AAAAAAAA////////mpqaAAAAx8fH////////////AAAAAAAA//// ////////////////////////AAAAAAAA////////////2dnZAAAAsrKy//// ////AAAAAAAA////////////AAAAAAAA////////////p6enAAAA0NDQ//// ////8PDwAAAAvb29////////AAAAAAAA////////////AAAAAAAA//////// mpqaAAAAfHx88PDw////6enpaGho////8PDwaGho//////////////////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////////jIyM6enp////TU1NaGho//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////////AAAAaGho////////AAAA AAAA////////////////TU1NAAAA8PDw////////////AAAAaGho//////// AAAAAAAA////////////////AAAAaGho////////TU1NAAAA8PDw//////// ////AAAAaGho////////////////x8fHaGhoAAAAjIyM////p6enAAAAx8fH ////////AAAAAAAA////////////////AAAAAAAA//////////////////// ////////AAAAAAAA////mpqaAAAA0NDQ////////////////////AAAAAAAA ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////AAAAAAAA////////////AAAAAAAA////////////0NDQAAAA p6ensrKyx8fH////////////////////////////////////AAAAAAAA//// ////////////////AAAAAAAA2dnZ////////////////////AAAAAAAA//// ////////////AAAAaGho////////////////AAAAAAAA////////////0NDQ AAAAp6ensrKyx8fH////////////////////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////////0NDQ AAAAp6ensrKyx8fH////////////////////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////p6enAAAA x8fH////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////////////////////////srKyAAAA0NDQ0NDQ0NDQ//// x8fHAAAAx8fHfHx88PDw////////////AAAAAAAA////////AAAAAAAA//// ////////////AAAAAAAA////////////AAAAAAAA//////////////////// ////////////////0NDQAAAAp6ensrKyx8fH////////////TU1NAAAA8PDw ////////////AAAAaGho////////////AAAAAAAA////////////AAAAAAAA ////////AAAAAAAA//////////////////////////////////////////// AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////////AAAAAAAA//////////////////////// ////AAAAAAAA////////////AAAAAAAA////////////p6enAAAAx8fH//// ////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA2dnZ//////////////////////////// ////////////////////////////////////p6enAAAAx8fH////////AAAA AAAA////////AAAAAAAA////////////////AAAAAAAA////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA////////////////////AAAA AAAA2dnZ////////////////////////////x8fHaGhoAAAAjIyM//////// ////////x8fHaGhoAAAAjIyM////////////////////////////p6enAAAA x8fH////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////AAAAAAAA////////////////AAAAAAAA//////////////////////// ////AAAAAAAA////////////////AAAAaGho////////AAAAAAAA//////// ////AAAAAAAA////////////TU1NAAAA8PDw////////////AAAAaGho//// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA2dnZ//////// ////////////////jIyM4eHh////////////////////AAAAAAAA//////// ////p6enAAAAx8fH////////AAAAAAAA////////////////4eHhTU1NsrKy AAAA4eHh//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////AAAAAAAA////////AAAAAAAA//////////////// AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////////// ////AAAAAAAA////////AAAAAAAA////////////////AAAAAAAA//////// 2dnZTU1NAAAAAAAAjIyM////////////srKyTU1Np6en6enpAAAAAAAA//// ////////////AAAAAAAA////////////////////////////AAAAAAAAp6en AAAAvb29////////////////////////AAAAAAAA////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA ////////////AAAAAAAA////////////aGhoAAAA8PDw8PDwaGho//////// ////////////////////////////AAAAAAAA////////////////////AAAA AAAA////////////////////////AAAAAAAA////////////////AAAAAAAA ////////////////AAAAAAAA////////////aGhoAAAA8PDw8PDwaGho//// ////////////////////////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////aGhoAAAA8PDw8PDwaGho//// ////////////////////////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////srKyTU1Np6en6enpAAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA//////////////////// ////////////////TU1NAAAA////////jIyM////aGhoAAAA8PDw0NDQsrKy ////////////AAAAAAAA////////AAAAAAAA////////////////AAAAAAAA ////////////AAAAAAAA////////////////////////////////////aGho AAAA8PDw8PDwaGho////////////AAAAAAAA////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//// ////////////////////////////////////////AAAAAAAA//////////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////////AAAAAAAA////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////////////srKyTU1Np6en6enpAAAAAAAA//////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA//////////////////////////////////////////////////// ////////////////////srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA ////////////////AAAAAAAA////AAAAAAAA////////////////AAAAAAAA ////////AAAAAAAA////////////////////AAAAAAAA//////////////// ////////2dnZTU1NAAAAAAAAjIyM////////////2dnZTU1NAAAAAAAAjIyM ////////////////////////////////////srKyTU1Np6en6enpAAAAAAAA ////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////// ////////AAAAAAAA////////////////////////////AAAAAAAA//////// ////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA////////////////////////////0NDQ p6en////////////////////AAAAAAAA////////////////srKyTU1Np6en 6enpAAAAAAAA////////////////////p6enAAAAsrKy//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA////////////////aGhoAAAA//////////// 8PDwAAAATU1N////////AAAAAAAA////////////////AAAAAAAA//////// aGhoAAAA////////////8PDwAAAATU1N////////aGhoAAAAp6en8PDw//// ////////////////////x8fHfHx8AAAAAAAA////////////////AAAAAAAA ////////////////////////////AAAAAAAA0NDQTU1N//////////////// ////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////////aGhoAAAA////////////////AAAAAAAA////////////AAAAAAAA ////////0NDQAAAAmpqa////////jIyM4eHh//////////////////////// ////////AAAAAAAA////////////////////TU1NAAAAAAAAAAAAAAAAAAAA AAAA////AAAAAAAA////////////////AAAAAAAA////////////////AAAA AAAA////////0NDQAAAAmpqa////////jIyM4eHh//////////////////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////0NDQAAAAmpqa////////jIyM4eHh//////////////////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////////////x8fHfHx8AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////////////////////2dnZAAAA p6en////////0NDQmpqaAAAAjIyM////////aGho////////////AAAAAAAA ////////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA ////////////////////////////////0NDQAAAAmpqa////////jIyM4eHh ////////aGhoAAAA////////////8PDwAAAATU1N////////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA//////////////////////// ////////////////////AAAAAAAA////////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA//// ////////////////////////AAAAAAAA////////////AAAAAAAA//////// ////////////////x8fHfHx8AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////TU1NAAAAAAAAAAAAAAAA AAAAAAAA//////////////////////////////////////////////////// ////////x8fHfHx8AAAAAAAA////////aGhoAAAA////////////////AAAA AAAA////aGhoAAAA////////////////AAAAAAAA////////AAAAAAAA//// ////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////aGhoAAAAp6en 8PDw////////////////aGhoAAAAp6en8PDw//////////////////////// ////////////////////////x8fHfHx8AAAAAAAA////////AAAAAAAA//// ////////AAAAAAAA////////aGhoAAAA////////////////AAAAAAAA//// ////////////////////////AAAAAAAA////////////////AAAAAAAA//// ////AAAAAAAA////////////AAAAAAAA////////////aGhoAAAA//////// ////8PDwAAAATU1N////////AAAAAAAA////////////AAAAAAAA//////// TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////////TU1N//////////////// ////AAAAAAAA////////////////////////x8fHfHx8AAAAAAAA//////// ////////6enpAAAAAAAA6enp//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////0NDQAAAAjIyM////////AAAA AAAA6enp////////////vb29AAAA6enp////////x8fHAAAAp6en//////// AAAAAAAA////////////0NDQAAAAjIyM////////vb29AAAA6enp//////// x8fHAAAAp6en////////AAAA6enp////////6enpAAAA////fHx8aGho//// ////////AAAAAAAA////////////////AAAAAAAA//////////////////// ////////AAAAAAAA////4eHhjIyM6enp////////////////////AAAAAAAA ////////AAAAAAAA////////////AAAAAAAA////////////vb29AAAA2dnZ ////////8PDwAAAAAAAA////////////AAAAAAAA////////jIyMAAAA4eHh ////////0NDQp6en////////////////////////////////AAAAAAAA6enp ////////////////p6enAAAA////////////AAAAfHx8////AAAAAAAA//// ////////0NDQAAAAjIyM////////////////AAAAAAAA////////jIyMAAAA 4eHh////////0NDQp6en////////////////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////jIyMAAAA 4eHh////////0NDQp6en////////////////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////fHx8aGho ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////////////////////mpqaAAAA2dnZ////////////TU1N AAAA0NDQ////////p6en0NDQ////////AAAAAAAA////////AAAAAAAA//// ////////////AAAAAAAA////////////AAAAAAAA//////////////////// ////////////jIyMAAAA4eHh////////0NDQp6en////////vb29AAAA6enp ////////x8fHAAAAp6en////////////AAAAAAAA////////////AAAAAAAA ////////AAAAAAAA6enp//////////////////////////////////////// AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////////AAAAAAAA//////////////////////// ////AAAAAAAA////////////AAAAAAAA////////////fHx8aGho//////// ////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////p6enAAAA////////////AAAAfHx8//////////// ////////////////////////////////////fHx8aGho////////////AAAA AAAA////////vb29AAAA2dnZ////////8PDwAAAAAAAA////vb29AAAA2dnZ ////////8PDwAAAAAAAA////////AAAAAAAA6enp////////////////p6en AAAA////////////AAAAfHx8////AAAA6enp////////6enpAAAA//////// AAAA6enp////////6enpAAAA////////////////////////////fHx8aGho ////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////vb29AAAA2dnZ////////8PDwAAAAAAAA//////////////////////// ////AAAAAAAA////////////0NDQAAAAjIyM////////AAAAAAAA//////// ////AAAAAAAA////////////vb29AAAA6enp////////x8fHAAAAp6en//// ////AAAAAAAA////////////AAAAAAAA////////p6enAAAA//////////// AAAAfHx8////////////mpqa2dnZ////////////////AAAAAAAA//////// ////fHx8aGho////////////AAAAAAAA////////////////aGhoTU1N4eHh fHx8//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA AAAAx8fH////8PDwaGhoAAAA2dnZ////TU1NAAAAAAAAx8fH8PDwmpqafHx8 ////TU1Nmpqa////6enpTU1NTU1N8PDw////AAAAAAAAAAAAx8fH////8PDw aGhoAAAA2dnZ////////////TU1Nmpqa////6enpTU1NTU1N8PDw//////// jIyM4eHh////8PDwfHx8AAAA////fHx8AAAA6enp////0NDQAAAAaGho//// ////////////AAAAAAAA////////////////////////////AAAAAAAA//// ////8PDwjIyM0NDQ////////////TU1NAAAAAAAA////TU1NAAAAAAAAx8fH ////4eHhAAAAaGho////////////////fHx8aGho8PDw////p6enAAAAAAAA ////////////AAAAAAAA////vb29AAAAaGho////////////////TU1N6enp ////////////////////////TU1NAAAAAAAAx8fH8PDwmpqafHx8////6enp TU1Np6en////vb29AAAA0NDQAAAAAAAAAAAAx8fH////8PDwaGhoAAAA2dnZ ////////////////AAAAAAAA////vb29AAAAaGho////////////////TU1N 6enp////////////////////////TU1NAAAAAAAA0NDQ////x8fHAAAAaGho x8fH////4eHhAAAAaGho////////vb29AAAAaGho////////////////TU1N 6enp////////////////////////TU1NAAAAAAAA0NDQ////x8fHAAAAaGho x8fH////4eHhAAAAaGho////////////fHx8AAAA6enp////0NDQAAAAaGho ////////TU1NAAAAAAAA////////////AAAAAAAA//////////////////// ////////4eHhAAAATU1N////////////////TU1NAAAA////////////4eHh aGho8PDwTU1NAAAAAAAA////////AAAAAAAA////////////////AAAAAAAA x8fH////2dnZAAAAaGho////////////////////////////vb29AAAAaGho ////////////////TU1N6enp////////TU1Nmpqa////6enpTU1NTU1N8PDw ////////6enpAAAAAAAA////////4eHhAAAAAAAA////TU1NAAAAAAAAx8fH 8PDwmpqafHx8////////////////////////////AAAAAAAA//////////// 6enpAAAAAAAA////////4eHhAAAAAAAA////////////AAAAAAAA//////// ////////AAAAAAAA////////////////////////TU1NAAAAAAAAx8fH//// 4eHhAAAAaGho////////////fHx8AAAA6enp////0NDQAAAAaGho////TU1N AAAAAAAA0NDQ////x8fHAAAAaGhox8fH////4eHhAAAAaGho//////////// 6enpTU1Np6en////vb29AAAA0NDQ//////////////////////////////// ////////////////fHx8AAAA6enp////0NDQAAAAaGho////////////fHx8 aGho8PDw////p6enAAAAAAAA////////fHx8aGho8PDw////p6enAAAAAAAA ////TU1NAAAAAAAAx8fH8PDwmpqafHx8////6enpTU1Np6en////vb29AAAA 0NDQ////jIyM4eHh////8PDwfHx8AAAA////////jIyM4eHh////8PDwfHx8 AAAA////////////////////////////fHx8AAAA6enp////0NDQAAAAaGho ////TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////////fHx8aGho8PDw ////p6enAAAAAAAA////////////////////////AAAAAAAAAAAAx8fH//// 8PDwaGhoAAAA2dnZ////////AAAAAAAAx8fH////2dnZAAAAaGho//////// ////////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1NAAAAAAAAx8fH//// 4eHhAAAAaGho////////6enpTU1Np6en////vb29AAAA0NDQ//////////// 2dnZmpqa////////////////AAAAAAAA////////////fHx8AAAA6enp//// 0NDQAAAAaGho////////////mpqaAAAA2dnZ////0NDQfHx82dnZ//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////6enpsrKyTU1N////mpqaAAAATU1N 0NDQ////////6enpsrKyTU1N////srKyAAAAmpqa////8PDwp6enAAAAAAAA mpqa6enp////////6enpsrKyTU1N////mpqaAAAATU1N0NDQ//////////// ////8PDwp6enAAAAAAAAmpqa6enp////////////////jIyMAAAAmpqa6enp AAAA////////p6enTU1NAAAAAAAAmpqa6enp////////////////AAAAAAAA ////////////////////////////AAAAAAAA////////srKyAAAAAAAAAAAA ////////6enpp6enTU1N////6enpp6enTU1N////srKyAAAATU1N4eHh//// ////////////////p6enAAAATU1N2dnZAAAAAAAA////////////AAAAAAAA vb29AAAAAAAAAAAAjIyM////////jIyMAAAAAAAA4eHh//////////////// ////6enpsrKyTU1N////srKyAAAAmpqa////////6enpjIyMAAAATU1Nvb29 ////6enpsrKyTU1N////mpqaAAAATU1N0NDQ////////////////////AAAA AAAAvb29AAAAAAAAAAAAjIyM////////jIyMAAAAAAAA4eHh//////////// ////////6enpp6enTU1N////srKyAAAAaGho4eHh////p6enAAAAaGho4eHh ////vb29AAAAAAAAAAAAjIyM////////jIyMAAAAAAAA4eHh//////////// ////////6enpp6enTU1N////srKyAAAAaGho4eHh////p6enAAAAaGho4eHh ////////////////p6enTU1NAAAAAAAAmpqa6enp////////6enpp6enTU1N ////////////AAAAAAAA////////////////////////vb29AAAAAAAAAAAA jIyM////vb29AAAAAAAAAAAAp6en////////AAAAAAAAAAAA6enpp6enTU1N ////AAAAAAAAAAAAAAAAAAAA////////AAAAAAAA////srKyAAAAaGho6enp ////////////////////////vb29AAAAAAAAAAAAjIyM////////jIyMAAAA AAAA4eHh////8PDwp6enAAAAAAAAmpqa6enp////////////AAAAAAAAAAAA ////////AAAAAAAAAAAA////6enpsrKyTU1N////srKyAAAAmpqa//////// ////////////AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAA//////// AAAAAAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA//// ////////////////////6enpp6enTU1N////srKyAAAATU1N4eHh//////// ////////p6enTU1NAAAAAAAAmpqa6enp////6enpp6enTU1N////srKyAAAA aGho4eHh////p6enAAAAaGho4eHh////////////////6enpjIyMAAAATU1N vb29//////////////////////////////////////////////////////// p6enTU1NAAAAAAAAmpqa6enp////////////////p6enAAAATU1N2dnZAAAA AAAA////////////p6enAAAATU1N2dnZAAAAAAAA////6enpsrKyTU1N//// srKyAAAAmpqa////////6enpjIyMAAAATU1Nvb29////////////jIyMAAAA mpqa6enpAAAA////////////jIyMAAAAmpqa6enpAAAA//////////////// ////////////////p6enTU1NAAAAAAAAmpqa6enp////6enpp6enTU1N//// srKyAAAATU1N4eHh////////////////p6enAAAATU1N2dnZAAAAAAAA//// ////////////////////6enpsrKyTU1N////mpqaAAAATU1N0NDQ//////// ////AAAAAAAA////srKyAAAAaGho6enp////////////////8PDwp6enAAAA AAAAmpqa6enp////////6enpp6enTU1N////srKyAAAATU1N4eHh//////// ////6enpjIyMAAAATU1Nvb29////////////////////TU1N////////AAAA AAAAAAAAAAAAAAAAAAAA////////p6enTU1NAAAAAAAAmpqa6enp//////// AAAAAAAAAAAAAAAA4eHhAAAAAAAAAAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// ////////////////////////////////////////////0NDQAAAAAAAA//// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// ////AAAAAAAA////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////AAAAAAAA//////////////////////// ////////////////////////////////////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////p6en0NDQ////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA////////////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////x8fHAAAA////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////TU1NAAAA//////////// ////////////////////////////////////////////AAAAAAAA//////// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////AAAAAAAA//////////////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////4eHhjIyM////////////TU1NAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA ////////////////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////8PDwAAAA////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////mpqaAAAA//////////////////////////////// ////////////////////////AAAAAAAA////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////aGho8PDw//// ////mpqaAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////aGhoAAAAAAAA//////////////////// ////aGhoAAAAAAAA////////////////////////////////////fHx8fHx8 //////////////////////////////////////////////////////////// ////////aGhoAAAAAAAA////////aGhoAAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////aGhoAAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////fHx8fHx8////////aGhoAAAAAAAA //////////////////////////////////////////////////////////// ////////////////////////////////fHx8fHx8//////////////////// ////////aGhoAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 6enpTU1Nx8fH////4eHhaGhoaGho//////////////////////////////// aGhoAAAAAAAA////////////aGhoAAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////aGhoAAAAAAAA//////////////// ////////aGhoAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////aGhoAAAAAAAA//////////////////////// ////////////////////////////////////////aGhoAAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////srKyx8fH////////6enpTU1Nx8fH//// 4eHhaGhoaGho//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////6enpp6enTU1N////////////////////////6enpp6enTU1N//// ////////////////////////////////fHx8fHx8//////////////////// ////////////////////////////////////////////////6enpp6enTU1N ////////6enpp6enTU1N//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////6enpp6enTU1N//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////fHx8fHx8////////6enpp6enTU1N//////////////////// //////////////////////////////////////////////////////////// ////////////fHx8fHx8////////////////////////////6enpp6enTU1N //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////8PDwmpqaAAAAAAAA fHx82dnZ////////////////////////////////6enpp6enTU1N//////// ////6enpp6enTU1N//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////6enpp6enTU1N////////////////////////6enpp6enTU1N //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////6enpp6enTU1N//////////////////////////////////////////// ////////////////////6enpp6enTU1N//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////6enpfHx8////////////8PDwmpqaAAAAAAAAfHx82dnZ//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////mpqaAAAAmpqa//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////mpqaAAAAmpqa//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////8PDwp6enaGho AAAAAAAAfHx8vb29//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////AAAAAAAAAAAAAAAA//////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////mpqaAAAA mpqa//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////fHx8AAAAAAAAfHx8//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////fHx8AAAAAAAAfHx8//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////TU1Nmpqa4eHh////////////2dnZmpqa //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////6enpAAAAAAAA6enp//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////fHx8AAAAAAAAfHx8//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////mpqavb29//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////mpqavb29//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////p6en////////////////////////8PDwp6en//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////mpqavb29//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////8PDwaGho //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////8PDwaGho//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////2dnZ4eHh ////////////////2dnZAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////8PDwaGho//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAA//// 4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enp////6enpfHx8AAAAaGho0NDQ ////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////AAAA AAAAAAAAAAAA////0NDQAAAAfHx86enp////////4eHhTU1NAAAAp6en//// mpqaAAAAjIyM6enp0NDQAAAAfHx86enp////////4eHhfHx8AAAAmpqa6enp ////////////////////////////////0NDQAAAAfHx86enp////AAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////////4eHhfHx8AAAAmpqa6enp//// ////////////////////////AAAAAAAAAAAATU1N////////////////4eHh fHx8AAAAmpqa6enp////////////AAAAAAAAAAAAAAAA////////////4eHh fHx8AAAAmpqa6enp////////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enp AAAA6enpjIyMAAAAjIyM////////////////4eHhfHx8AAAAmpqa6enp//// ////////////////////////////////6enpmpqaAAAAAAAAp6en8PDw//// ////AAAAAAAAAAAAAAAAAAAAAAAA////////////////////////0NDQAAAA fHx86enpAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////////4eHh fHx8AAAAmpqa6enp////////////////////////////AAAAAAAAAAAAAAAA AAAAAAAA////////4eHhTU1NAAAAsrKy////TU1Np6en6enpAAAAAAAAAAAA AAAA////AAAAAAAAAAAAAAAA////////////4eHhaGhoAAAAaGho6enpTU1N p6en6enp////AAAA6enpjIyMAAAAjIyM//////////////////////////// ////0NDQAAAAfHx86enp////////6enpmpqaAAAAAAAAp6en8PDw//////// ////////////////////////////////////TU1N2dnZ//////////////// ////////6enpmpqaAAAAAAAAp6en8PDw////////////4eHhTU1NAAAAsrKy ////TU1Np6en6enp////fHx8fHx8////////////////////////////AAAA AAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAA//////////// ////////////////////////////TU1N2dnZ////////////////////6enp mpqaAAAAAAAAp6en8PDw////////////4eHhTU1NAAAAsrKy////TU1Np6en 6enp////////////////////////////4eHhTU1NAAAAp6en////mpqaAAAA jIyMAAAAAAAAAAAATU1N////////////////4eHhfHx8AAAAmpqa6enp//// ////////////////////////////////////0NDQfHx8//////////////// 2dnZaGho////////////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAA AAAA////AAAAAAAAAAAAAAAA////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAA////AAAAAAAAAAAAAAAA////////0NDQTU1NAAAAAAAAAAAAAAAAAAAA aGho////////////////////////////0NDQAAAAfHx86enp////////6enp mpqaAAAAAAAAp6en8PDw////////////////////////////////4eHhTU1N AAAAp6en////mpqaAAAAjIyM6enp////6enpfHx8AAAAaGho0NDQ//////// ////////6enpfHx8AAAAaGho0NDQ////////////////4eHhfHx8AAAAmpqa 6enp////////AAAAAAAA0NDQTU1NAAAAmpqa8PDw////////////0NDQAAAA fHx86enp////////////////////////AAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////////////////////TU1N2dnZ//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////0NDQAAAAAAAA2dnZ////////aGhoAAAA0NDQ////x8fH AAAAAAAA////srKy6enpTU1NAAAAAAAAAAAAaGho6enp////////6enpAAAA AAAA6enp////6enpAAAAAAAA6enp////////6enpAAAAAAAA6enp////TU1N AAAA6enpjIyM////////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKyTU1N AAAA6enpjIyM////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////// ////////////TU1NAAAA6enpjIyM////6enpAAAAAAAA6enp////8PDwAAAA AAAA6enp////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////////// ////6enpAAAAAAAA////////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh ////////6enpAAAAAAAA6enp////////6enpAAAAAAAAAAAAAAAAAAAA4eHh ////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKyAAAAfHx84eHh////4eHh jIyM////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////////// ////////8PDwTU1NaGho8PDw////p6enaGho////////////0NDQAAAAAAAA 2dnZ////////////////////////////TU1NAAAA6enpjIyM6enpAAAAAAAA 6enp////8PDwAAAAAAAA6enp////////6enpAAAAAAAAAAAAAAAAAAAA4eHh ////////////////////////////0NDQAAAAAAAA2dnZ////////////aGho AAAA2dnZ////x8fHAAAAAAAAaGho6enpAAAAAAAA8PDw////8PDwAAAAAAAA 6enp////////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho////AAAAfHx8 4eHh////4eHhjIyM////////////////////////////TU1NAAAA6enpjIyM ////8PDwTU1NaGho8PDw////p6enaGho//////////////////////////// ////////////x8fHAAAAmpqa////////////////////8PDwTU1NaGho8PDw ////p6enaGho////////////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho//// fHx8fHx8////////////////////////////////8PDwAAAAAAAA8PDw//// ////////0NDQAAAAAAAA2dnZ//////////////////////////////////// ////x8fHAAAAmpqa////////////////8PDwTU1NaGho8PDw////p6enaGho ////////////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho//////////////// ////////////aGhoAAAA0NDQ////x8fHAAAAAAAA////mpqaAAAAAAAA//// ////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////////// ////////////////fHx8AAAA0NDQ////////////p6enAAAA2dnZ//////// ////////6enpAAAAAAAA6enp////6enpAAAAAAAA6enp////6enpAAAAAAAA 6enp////////6enpAAAAAAAA6enp6enpAAAAAAAA8PDw////8PDwAAAAAAAA 6enp////////AAAAAAAAAAAAAAAAAAAAAAAAaGho6enp//////////////// ////////////TU1NAAAA6enpjIyM////8PDwTU1NaGho8PDw////p6enaGho ////////////////////////////////aGhoAAAA0NDQ////x8fHAAAAAAAA ////srKy6enpTU1NAAAAAAAAAAAAaGho6enp////////6enpTU1NAAAAAAAA AAAAaGho6enp////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////AAAAAAAA p6en////8PDwfHx8TU1N////////////TU1NAAAA6enpjIyM//////////// ////////////6enpAAAAAAAA8PDw////6enpAAAAAAAA6enp////6enpAAAA AAAA6enp////////////////x8fHAAAAmpqa//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA////////mpqa AAAAfHx8////////4eHhjIyM////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////AAAAAAAA//////////////// AAAAAAAA////////////AAAAAAAA////////AAAAAAAA////////////mpqa AAAAfHx88PDw////6enpaGho////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////AAAAAAAA////////mpqaAAAA fHx88PDw////6enpaGho////////////////////////////AAAAAAAA//// ////////////mpqaAAAAfHx88PDw////6enpaGho////////////AAAAAAAA ////////////mpqaAAAAfHx88PDw////6enpaGho////AAAAAAAA//////// ////AAAAAAAA////////AAAA8PDw////////x8fHAAAA////////mpqaAAAA fHx88PDw////6enpaGho////////////////////////////p6enAAAA0NDQ ////////8PDwAAAAvb29////////////AAAAAAAA//////////////////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////mpqaAAAAfHx88PDw////6enpaGho//////////////////// ////////////AAAAAAAA////////////////AAAAAAAA////////////AAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////////mpqaAAAA x8fH////////////AAAAAAAA////////AAAA8PDw////////x8fHAAAA//// ////////////////////////AAAAAAAA////////////p6enAAAA0NDQ//// ////8PDwAAAAvb29////////////////////////////////////aGhoAAAA TU1N////////////////////p6enAAAA0NDQ////////8PDwAAAAvb29//// ////AAAAAAAA////////////AAAAAAAA//////////////////////////// ////////////////////////AAAAAAAA////////////////////AAAAAAAA ////////////////////////////////////////////aGhoAAAATU1N//// ////////////p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAAAAAA ////////////AAAAAAAA////////////////////////////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA////////////////mpqaAAAA fHx88PDw////6enpaGho////////////////////////////////8PDwAAAA mpqajIyM////////////AAAATU1NjIyM////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////////AAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////////srKy8PDw ////////////////////////////////////////////////////AAAAAAAA ////////////p6enAAAA0NDQ////////8PDwAAAAvb29//////////////// ////////////AAAAAAAA////////////AAAAAAAA////////mpqaAAAAfHx8 ////////4eHhjIyM////////mpqaAAAAfHx8////////4eHhjIyM//////// mpqaAAAAfHx88PDw////6enpaGho////AAAAAAAA////////////2dnZAAAA srKy////////AAAAAAAA////////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// ////aGhoAAAATU1N//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// p6enAAAAx8fH////////AAAAAAAA////////TU1NAAAA6enp//////////// ////////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA////////////////p6enAAAAx8fH//////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA2dnZ//////////// ////////////////////////////////AAAAAAAA////////////////AAAA AAAA////////////AAAAAAAA////////AAAAAAAA2dnZ//////////////// ////////////////////////////AAAAAAAA////////////////AAAAAAAA 2dnZ////////////////////////////AAAAAAAA////////////AAAAAAAA 2dnZ////////////////////p6enAAAAx8fH////////AAAAAAAA//////// ////////x8fHaGhoAAAAjIyM////////AAAAAAAA2dnZ//////////////// ////////////////////////////TU1NAAAA8PDw////////////AAAAaGho ////////////AAAAAAAA////////////////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA 2dnZ////////////////////////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////////AAAA AAAA////////////////x8fHaGhoAAAAjIyM//////////////////////// ////AAAAAAAA////////////TU1NAAAA8PDw////////////AAAAaGho//// ////////////////////////////0NDQAAAAp6ensrKyx8fH//////////// ////TU1NAAAA8PDw////////////AAAAaGho////////AAAAAAAA//////// ////AAAAAAAA//////////////////////////////////////////////// ////AAAAAAAA////////////////////AAAAAAAA//////////////////// ////////////////////0NDQAAAAp6ensrKyx8fH////////////TU1NAAAA 8PDw////////////AAAAaGho////////AAAAAAAA////////////AAAAAAAA ////////////////////////////////p6enAAAAx8fH////////AAAAAAAA ////////AAAAAAAA////////////////AAAAAAAA2dnZ//////////////// ////////////////////////////////srKyAAAA0NDQ0NDQ0NDQ////x8fH AAAAx8fHfHx88PDw////////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////////////srKyjIyMAAAAaGho2dnZ//// ////////////////////////////////AAAAAAAA////////////TU1NAAAA 8PDw////////////AAAAaGho////////////////////////////p6enAAAA x8fH////////AAAAAAAA////////TU1NAAAA6enp//////////////////// ////TU1NAAAA6enp////////////////////////AAAAAAAA2dnZ//////// ////////////AAAAAAAA////////////////AAAAaGho////////AAAAAAAA ////////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////0NDQAAAAp6ensrKyx8fH //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////////srKyTU1Np6en6enp AAAAAAAA////////AAAAAAAA////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////////AAAAAAAA////////AAAA AAAA////////////////////srKyTU1Np6en6enpAAAAAAAA////////AAAA AAAA////////////AAAAAAAA//////////////////////////////////// ////////////AAAAAAAA////////////////AAAAAAAA////////////AAAA AAAA////////AAAAAAAA//////////////////////////////////////// ////////AAAAAAAA////////////////AAAAAAAA//////////////////// ////////////AAAAAAAA////////////AAAAAAAA//////////////////// ////////srKyTU1Np6en6enpAAAAAAAA////////2dnZTU1NAAAAAAAAjIyM ////////////AAAAAAAA//////////////////////////////////////// ////////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA ////////////////////////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA//////////////////// ////////////////////////////////AAAAAAAA////////////////AAAA AAAA////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////AAAAAAAA////////2dnZTU1N AAAAAAAAjIyM////////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////////////AAAAAAAA//////////////////////// ////////aGhoAAAA8PDw8PDwaGho////////////////AAAAAAAA//////// ////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// ////////////////////////////////////////////AAAAAAAA//////// ////////////AAAAAAAA//////////////////////////////////////// aGhoAAAA8PDw8PDwaGho////////////AAAAAAAA////////////////AAAA AAAA////////AAAAAAAA////////////AAAAAAAA//////////////////// ////////////////srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA//// ////////////AAAAAAAA//////////////////////////////////////// ////////////TU1NAAAA////////jIyM////aGhoAAAA8PDw0NDQsrKy//// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////////0NDQAAAAp6en////0NDQAAAA0NDQ//////////////////// ////////////AAAAAAAA////////////AAAAAAAA////////////////AAAA AAAA////////////////////////////////srKyTU1Np6en6enpAAAAAAAA ////////AAAAAAAA////////////////////////////AAAAAAAA//////// ////////////////////AAAAAAAA////////////////////////AAAAAAAA ////////////////AAAAAAAA////////AAAAAAAA//////////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////aGhoAAAA8PDw8PDwaGho//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////////////x8fHfHx8AAAAAAAA////////TU1N AAAA////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////AAAAAAAA//////////////// ////////////x8fHfHx8AAAAAAAA////////AAAAAAAA////////////TU1N AAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////AAAAAAAA////////TU1NAAAA AAAAAAAAAAAAAAAAAAAA////////////////////////////AAAAAAAA//// ////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAAAAAA ////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////////////x8fH fHx8AAAAAAAA////////aGhoAAAAp6en8PDw////////////////TU1NAAAA AAAAAAAAAAAAAAAAAAAA////////////////////////////aGhoAAAA//// ////////8PDwAAAATU1N////////////AAAAAAAA//////////////////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////////////// ////////////AAAAAAAA////////////////AAAAAAAA////////////AAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////////aGhoAAAA ////////////////AAAAAAAA////////aGhoAAAAp6en8PDw//////////// ////////////////////////AAAAAAAA////////////aGhoAAAA//////// ////8PDwAAAATU1N////////////////////////////0NDQAAAAmpqa//// ////jIyM4eHh////////////aGhoAAAA////////////8PDwAAAATU1N//// ////AAAAAAAA////////////AAAAAAAA//////////////////////////// ////////////////////////AAAAAAAA////////////////////AAAAAAAA ////////////////////////////////////0NDQAAAAmpqa////////jIyM 4eHh////////aGhoAAAA////////////8PDwAAAATU1N////////AAAAAAAA ////////////AAAAAAAA//////////////////////////////////////// ////x8fHfHx8AAAAAAAA////////AAAAAAAA////////////////TU1NAAAA AAAAAAAAAAAAAAAAAAAA////////////////////////////2dnZAAAAp6en ////////0NDQmpqaAAAAjIyM////////aGho////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////////AAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////////aGhoAAAA ////////////AAAATU1N////////////////////////////////AAAAAAAA ////////////aGhoAAAA////////////8PDwAAAATU1N//////////////// ////////////////////////x8fHfHx8AAAAAAAA////////TU1NAAAA//// ////////////////////////TU1NAAAA//////////////////////////// TU1NAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAA////////////////AAAA AAAA////////AAAAAAAA////////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////0NDQ AAAAmpqa////////jIyM4eHh//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// fHx8aGho////////////AAAAAAAA////////p6enAAAA6enp////////x8fH TU1N////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA////////////////fHx8aGho//////////// AAAAAAAA////////AAAAAAAA////////////p6enAAAA////////////AAAA fHx8////////////////////////////AAAAAAAA////////////////AAAA AAAA////////////AAAAAAAA////////p6enAAAA////////////AAAAfHx8 ////////////////////////////AAAAAAAA6enp////////////p6enAAAA ////////////AAAAfHx8////////////AAAAAAAA////////////p6enAAAA ////////////AAAAfHx8////fHx8aGho////////////AAAAAAAA//////// AAAA6enp////////6enpAAAA////////p6enAAAA////////////AAAAfHx8 ////////////////////////////vb29AAAA6enp////////x8fHAAAAp6en ////////////AAAAAAAA////////////////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////p6enAAAA ////////////AAAAfHx8////////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////////vb29AAAA2dnZ////////8PDwAAAA AAAA////////AAAA6enp////////6enpAAAA//////////////////////// ////AAAAAAAA////////////vb29AAAA6enp////////x8fHAAAAp6en//// ////////////////////////jIyMAAAA4eHh////////0NDQp6en//////// ////vb29AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA//////// ////AAAAAAAA//////////////////////////////////////////////// ////AAAAAAAA////////////////////AAAAAAAA//////////////////// ////////////////jIyMAAAA4eHh////////0NDQp6en////////vb29AAAA 6enp////////x8fHAAAAp6en////////AAAAAAAA////////////AAAAAAAA ////////////////////////////////fHx8aGho////////////AAAAAAAA ////////AAAAAAAA6enp////////////p6enAAAA////////////AAAAfHx8 ////////////////////////////mpqaAAAA2dnZ////////////TU1NAAAA 0NDQ////////p6en0NDQ////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////////TU1NAAAA////////////AAAAjIyM ////////////////////////////////AAAAAAAA////////////vb29AAAA 6enp////////x8fHAAAAp6en////////////////////////////fHx8aGho ////////////AAAAAAAA////////p6enAAAA6enp////////x8fHTU1N//// ////p6enAAAA6enp////////x8fHTU1N////////p6enAAAA//////////// AAAAfHx8////AAAAAAAA////////////0NDQAAAAjIyM////////AAAAAAAA ////////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////jIyMAAAA4eHh////////0NDQ p6en//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////fHx8AAAA6enp////0NDQ AAAAaGho////////////TU1NfHx8////////aGhofHx8////////TU1NAAAA AAAA////////////AAAAAAAA////////////TU1NAAAAAAAA////////AAAA AAAA////////////////fHx8AAAA6enp////0NDQAAAAaGho////////AAAA AAAA////////////6enpTU1Np6en////vb29AAAA0NDQ//////////////// ////////////AAAAAAAA////////////////AAAAAAAAx8fH////2dnZAAAA aGho////////6enpTU1Np6en////vb29AAAA0NDQ//////////////////// ////TU1NAAAAAAAAx8fH8PDwmpqafHx86enpTU1Np6en////vb29AAAA0NDQ ////////////AAAAAAAA////////////6enpTU1Np6en////vb29AAAA0NDQ ////fHx8AAAA6enp////0NDQAAAAaGho////////jIyM4eHh////8PDwfHx8 AAAA////////6enpTU1Np6en////vb29AAAA0NDQ//////////////////// ////////////TU1Nmpqa////6enpTU1NTU1N8PDw////////////AAAAAAAA ////////////////////////////////AAAAAAAA////////////AAAAAAAA x8fH////2dnZAAAAaGho////////////6enpTU1Np6en////vb29AAAA0NDQ ////////////////////////////////AAAAAAAA////////////6enpAAAA AAAA////////4eHhAAAAAAAA////TU1NAAAAAAAAx8fH////4eHhAAAAaGho ////////////////fHx8aGho8PDw////p6enAAAAAAAA////////jIyM4eHh ////8PDwfHx8AAAA////////////////////////////AAAAAAAA//////// ////////TU1Nmpqa////6enpTU1NTU1N8PDw//////////////////////// vb29AAAAaGho////////////////TU1N6enp////////////TU1Nmpqa//// 6enpTU1NTU1N8PDw////6enpAAAAAAAA////////4eHhAAAAAAAA//////// ////////////////////////////////////////////AAAAAAAA//////// ////////////AAAAAAAA////////////////////////////////vb29AAAA aGho////////////////TU1N6enp////////TU1Nmpqa////6enpTU1NTU1N 8PDw////6enpAAAAAAAA////////4eHhAAAAAAAA//////////////////// ////////////fHx8AAAA6enp////0NDQAAAAaGho////TU1NAAAAAAAAx8fH 8PDwmpqafHx86enpTU1Np6en////vb29AAAA0NDQ//////////////////// ////4eHhAAAATU1N////////////////TU1NAAAA////////////4eHhaGho 8PDw////TU1NAAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////TU1NAAAAAAAA////TU1NAAAAAAAAx8fH////4eHhAAAAaGho ////////////vb29AAAAx8fH////p6enAAAAAAAAAAAA//////////////// ////////////AAAAAAAA////////////////TU1Nmpqa////6enpTU1NTU1N 8PDw////////////////////////////fHx8AAAA6enp////0NDQAAAAaGho ////////////TU1NfHx8////////aGhofHx8////////////TU1NfHx8//// ////aGhofHx8////////6enpTU1Np6en////vb29AAAA0NDQAAAAAAAAAAAA x8fH////8PDwaGhoAAAA2dnZ////////AAAAAAAA//////////////////// ////////////TU1NAAAAAAAA0NDQ////x8fHAAAAaGhox8fH////4eHhAAAA aGho////////vb29AAAAaGho////////////////TU1N6enp//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA AAAAAAAAAAAAAAAA////////p6enTU1NAAAAAAAAmpqa6enp//////////// 8PDwp6enAAAAAAAAmpqa////////////6enpp6enTU1N////////////AAAA AAAA////////////6enpp6enTU1N////AAAAAAAAAAAAAAAAAAAA//////// ////p6enTU1NAAAAAAAAmpqa6enp////AAAAAAAAAAAAAAAAAAAA//////// 6enpjIyMAAAATU1Nvb29////////////////////////////AAAAAAAAAAAA AAAAAAAA////////AAAAAAAA////srKyAAAAaGho6enp////////////6enp jIyMAAAATU1Nvb29////////////////////////////6enpsrKyTU1N//// srKyAAAAmpqa////6enpjIyMAAAATU1Nvb29////////////////AAAAAAAA ////////////////6enpjIyMAAAATU1Nvb29////////////p6enTU1NAAAA AAAAmpqa6enp////////////jIyMAAAAmpqa6enpAAAA////////////6enp jIyMAAAATU1Nvb29////////////////////////////////////8PDwp6en AAAAAAAAmpqa6enp////////AAAAAAAAAAAAAAAAAAAAAAAA//////////// ////////AAAAAAAAAAAAAAAAAAAA////AAAAAAAA////srKyAAAAaGho6enp ////////////////6enpjIyMAAAATU1Nvb29//////////////////////// ////AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAA////////AAAAAAAA AAAA////6enpp6enTU1N////srKyAAAATU1N4eHh//////////////////// p6enAAAATU1N2dnZAAAAAAAA////////////jIyMAAAAmpqa6enpAAAA//// ////////////////////AAAAAAAAAAAAAAAAAAAA////////8PDwp6enAAAA AAAAmpqa6enp////////////////////////vb29AAAAAAAAAAAAjIyM//// ////jIyMAAAAAAAA4eHh////////8PDwp6enAAAAAAAAmpqa6enp//////// AAAAAAAAAAAA////////AAAAAAAAAAAA//////////////////////////// ////////////////////////AAAAAAAA////////////AAAAAAAAAAAAAAAA AAAAAAAA////////////////////vb29AAAAAAAAAAAAjIyM////////jIyM AAAAAAAA4eHh////8PDwp6enAAAAAAAAmpqa6enp////////AAAAAAAAAAAA ////////AAAAAAAAAAAA////////////////////////////////////p6en TU1NAAAAAAAAmpqa6enp////6enpsrKyTU1N////srKyAAAAmpqa////6enp jIyMAAAATU1Nvb29////////////////////////vb29AAAAAAAAAAAAjIyM ////vb29AAAAAAAAAAAAp6en////////AAAAAAAAAAAA////6enpp6enTU1N ////////////AAAAAAAA////////////AAAAAAAA////////////6enpp6en TU1N////6enpp6enTU1N////srKyAAAATU1N4eHh////////////////x8fH aGhoAAAAjIyM6enp////////////////////////////////AAAAAAAAAAAA AAAAAAAA////////8PDwp6enAAAAAAAAmpqa6enp//////////////////// ////////////////p6enTU1NAAAAAAAAmpqa6enp////////////8PDwp6en AAAAAAAAmpqa////////////////8PDwp6enAAAAAAAAmpqa//////////// ////6enpjIyMAAAATU1Nvb29////6enpsrKyTU1N////mpqaAAAATU1N0NDQ ////////AAAAAAAAAAAAAAAAAAAA////////////////////////6enpp6en TU1N////srKyAAAAaGho4eHh////p6enAAAAaGho4eHh////vb29AAAAAAAA AAAAjIyM////////jIyMAAAAAAAA4eHh//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////////0NDQAAAAAAAA//////////////////////////////////// ////////////0NDQAAAAAAAA//////////////////////////////////// ////////////////////////////0NDQAAAAAAAA////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA////////////////////////////0NDQAAAAAAAA ////////////AAAAAAAA//////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// 0NDQAAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////0NDQAAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////0NDQAAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////TU1NAAAA//////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////////////////////////x8fH AAAA////////////////////////////////////////////////////x8fH AAAA//////////////////////////////////////////////////////// ////////////x8fHAAAA////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////TU1NAAAA ////////////////////////////////x8fHAAAA////////////AAAAAAAA //////////////////////////////////////////////////////////// ////////////////////////////////TU1NAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////////////////////////////////////////x8fHAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////AAAAAAAA//////// ////////////TU1NAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////x8fHAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////x8fHAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// mpqaAAAA//////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////////////////8PDwAAAA//////////////// ////////////////////////////////////8PDwAAAA//////////////// ////////////////////////////////////////////////////8PDwAAAA ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////mpqaAAAA//////////////////// ////////////8PDwAAAA////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////mpqaAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// ////////////////////////8PDwAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////8PDwAAAAAAAA8PDw////////////////mpqaAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////8PDwAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////8PDwAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////6enpTU1Nx8fH////4eHh aGhoaGho//////////////////////////////////////////////////// ////////////////fHx8fHx8////////aGhoAAAAAAAA//////////////// fHx8fHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////aGhoAAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////aGhoAAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////6enpTU1Nx8fH////4eHhaGhoaGho//////////////////// ////////aGhoAAAAAAAA//////////////////////////////////////// ////////////////////////////////////////////////////6enpTU1N x8fH////4eHhaGhoaGho//////////////////////////////////////// ////////////////////////////////////////////////////aGhoAAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAAAAAAAAAAAAAAAAAA////////////6enpTU1Nx8fH////4eHhaGhoaGho //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////fHx8fHx8////////aGhoAAAAAAAA ////////aGhoAAAAAAAA////////////////fHx8fHx8//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////8PDwmpqaAAAAAAAAfHx82dnZ//////////// ////////////////////////////////////////////////////////fHx8 fHx8////////6enpp6enTU1N////////////////fHx8fHx8//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////6enpp6enTU1N//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////6enpp6enTU1N//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////8PDw mpqaAAAAAAAAfHx82dnZ////////////////////////////6enpp6enTU1N //////////////////////////////////////////////////////////// ////////////////////////////////////8PDwmpqaAAAAAAAAfHx82dnZ //////////////////////////////////////////////////////////// ////////////////////////////////6enpp6enTU1N//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////8PDwmpqaAAAAAAAAfHx82dnZ//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////fHx8fHx8////////6enpp6enTU1N////////6enpp6enTU1N ////////////////fHx8fHx8//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////mpqa AAAAmpqa//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////AAAAAAAAAAAAAAAA //////////////////////////////////////////////////////////// ////////////////////////////////////////////////mpqaAAAAmpqa //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////fHx8AAAAAAAAfHx8//////// //////////////////////////////////////////////////////////// ////////////////////////////////////vb292dnZ//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////6enpAAAAAAAA6enp//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////fHx8AAAAAAAAfHx8//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////mpqavb29//////////////////////// //////////////////////////////////////////////////////////// ////////////////////x8fHx8fH//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////mpqavb29//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////8PDwaGho//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////TU1N//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwaGho//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAA AAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAA AAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////////4eHhfHx8AAAAmpqa 6enp////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////AAAA 6enpjIyMAAAAjIyM////////////4eHhfHx8AAAAmpqa6enp//////////// ////////////////////////vb29TU1NAAAAaGhop6en8PDw//////////// ////4eHhfHx8AAAAmpqa6enp////////AAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////////4eHhfHx8AAAAmpqa6enp////////AAAAAAAAAAAAAAAA AAAAAAAA////////AAAAAAAAAAAAAAAA////0NDQAAAAfHx86enp//////// ////////////////////0NDQAAAAfHx86enp////////6enpmpqaAAAAAAAA p6en8PDw////////////////////////////////////////////TU1N2dnZ ////////////////////////6enpmpqaAAAAAAAAp6en8PDw//////////// 4eHhTU1NAAAAsrKy////TU1Np6en6enp////fHx8aGhoTU1N//////////// ////////////////////4eHhTU1NAAAAp6en////mpqaAAAAjIyMAAAA6enp jIyMAAAAjIyM////////////////////////////AAAAAAAAAAAAAAAAAAAA AAAA////////////////////////////4eHhTU1NAAAAp6en////mpqaAAAA jIyMAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA ////////////////////////////AAAAAAAA0NDQTU1NAAAAmpqa8PDw//// AAAAAAAAAAAATU1N////////////////AAAAAAAAAAAAAAAA//////////// ////0NDQp6en////////////////////////////////TU1N2dnZ//////// ////////////////////////////////0NDQAAAAfHx86enp////////6enp mpqaAAAAAAAAp6en8PDw////////////////////////////////4eHhTU1N AAAAp6en////mpqaAAAAjIyM6enpAAAAAAAAAAAAAAAA////////AAAAAAAA AAAAAAAA////////////////////AAAAAAAAAAAAAAAAAAAAAAAA////AAAA AAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//// ////////6enpmpqaAAAAAAAAp6en8PDw////////AAAAAAAAAAAATU1N//// ////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAA AAAA////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enp0NDQAAAAfHx86enp ////////AAAAAAAAAAAAAAAA////////6enpmpqaAAAAAAAAp6en8PDw//// ////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////////////// ////////0NDQAAAAfHx86enp////AAAAAAAAAAAAAAAA////AAAAAAAAAAAA AAAA////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enp0NDQAAAAfHx86enp ////////////////////////////////0NDQfHx8////////////////2dnZ aGho////////////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA ////////AAAAAAAAAAAAAAAA////////////////////////////vb29TU1N AAAAaGhop6en8PDw////////////////4eHhfHx8AAAAmpqa6enp//////// ////////////////////////4eHhTU1NAAAAsrKy////TU1Np6en6enp//// ////AAAA6enpjIyMAAAAjIyM////////////4eHhfHx8AAAAmpqa6enp//// ////////////////////////////0NDQAAAAfHx86enp////////////6enp mpqaAAAAAAAAp6en8PDw//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////6enp AAAAAAAA6enp////6enpAAAAAAAA8PDw////6enpAAAAAAAA6enp////6enp AAAAAAAA6enp////6enpAAAAAAAA8PDw////6enpAAAAAAAA6enp////6enp AAAAAAAA6enp////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAA AAAA8PDw////8PDwAAAAAAAA6enp////////AAAAfHx84eHh////4eHhjIyM ////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////////////////// TU1NAAAAvb29////6enpTU1NTU1N////////////6enpAAAAAAAAAAAAAAAA AAAA4eHh////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////6enpAAAA AAAAAAAAAAAAAAAA4eHh////////0NDQAAAAAAAA2dnZ////////////6enp AAAAAAAA6enp////TU1NAAAA6enpjIyM//////////////////////////// TU1NAAAA6enpjIyM////8PDwTU1NaGho8PDw////p6enaGho//////////// ////////////////////////////x8fHAAAAmpqa//////////////////// 8PDwTU1NaGho8PDw////p6enaGho////////////aGhoAAAA2dnZ////x8fH AAAAAAAAaGho////jIyMAAAA0NDQ//////////////////////////////// aGhoAAAA0NDQ////x8fHAAAAAAAA////AAAAfHx84eHh////4eHhjIyM//// ////////////////////////8PDwAAAAAAAA8PDw//////////////////// ////////////aGhoAAAA0NDQ////x8fHAAAAAAAA////mpqaAAAAAAAA8PDw ////6enpAAAAAAAA6enp////6enpAAAAAAAA6enp//////////////////// ////////AAAAAAAAp6en////8PDwfHx8TU1N////6enpAAAAAAAA//////// ////////////6enpAAAAAAAA6enp////////////////aGhoaGho//////// ////////////////////x8fHAAAAmpqa//////////////////////////// ////////////TU1NAAAA6enpjIyM////8PDwTU1NaGho8PDw////p6enaGho ////////////////////////////////aGhoAAAA0NDQ////x8fHAAAAAAAA ////srKy6enpAAAAAAAA6enp////////6enpAAAAAAAA6enp//////////// ////////////8PDwAAAAAAAA8PDw////////6enpAAAAAAAA8PDw////8PDw AAAAAAAA6enp////0NDQAAAAAAAA2dnZ////////////8PDwTU1NaGho8PDw ////p6enaGho////////6enpAAAAAAAA////////////////6enpAAAAAAAA 8PDw////6enpAAAAAAAA6enp////6enpAAAAAAAA6enp////aGhoAAAA0NDQ ////x8fHAAAAAAAA////srKyTU1NAAAA6enpjIyM////////6enpAAAAAAAA 6enp////8PDwTU1NaGho8PDw////p6enaGho////////6enpAAAAAAAA8PDw ////8PDwAAAAAAAA6enp////////////////////////////TU1NAAAA6enp jIyM////6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp////aGhoAAAA0NDQ ////x8fHAAAAAAAA////srKyTU1NAAAA6enpjIyM//////////////////// ////////////fHx8AAAA0NDQ////////////p6enAAAA2dnZ//////////// ////6enpAAAAAAAA6enp////6enpAAAAAAAA6enp////////6enpAAAAAAAA 6enp////////////////////////TU1NAAAAvb29////6enpTU1NTU1N//// ////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////////////// ////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho////////AAAAfHx84eHh//// 4eHhjIyM////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////////// ////////TU1NAAAA6enpjIyM////////8PDwTU1NaGho8PDw////p6enaGho //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// mpqaAAAAfHx88PDw////6enpaGho////////AAAAAAAA////////////AAAA AAAA////////////AAAA8PDw////////x8fHAAAA////mpqaAAAAfHx88PDw ////6enpaGho////////////////////////////AAAAAAAA//////////// 0NDQAAAAsrKy////////mpqaAAAAfHx88PDw////6enpaGho////////AAAA AAAA////////////AAAAAAAA////////mpqaAAAAfHx88PDw////6enpaGho ////////////AAAAAAAA////////////////////AAAAAAAA////////AAAA AAAA////////////////////////////////////AAAAAAAA//////////// p6enAAAA0NDQ////////8PDwAAAAvb29//////////////////////////// ////////aGhoAAAATU1N////////////////////p6enAAAA0NDQ//////// 8PDwAAAAvb29////////AAAAAAAA////////////AAAAAAAA//////////// ////////////////////////////////////////AAAAAAAA//////////// AAAAAAAA////AAAA8PDw////////x8fHAAAA//////////////////////// ////////AAAAAAAA////////////////////////////////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////////////////////////AAAAAAAA//// ////////2dnZAAAAsrKy////AAAAAAAA////////////////////////AAAA AAAA////////////////4eHhTU1Nx8fHvb29//////////////////////// aGhoAAAATU1N////////////////////////////////////////AAAAAAAA ////////////p6enAAAA0NDQ////////8PDwAAAAvb29//////////////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////////p6enAAAA0NDQ////////8PDwAAAAvb29//// ////AAAAAAAA////////////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////AAAAAAAA////////////////////AAAAAAAA////////p6enAAAA0NDQ ////////8PDwAAAAvb29////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////AAAAAAAA////////////////////////////////////8PDwAAAAmpqa jIyM////////////AAAATU1NjIyM////////////////////AAAAAAAA//// ////////AAAAAAAA////////////////AAAAAAAA//////////////////// ////////AAAAAAAA////////////0NDQAAAAsrKy////////mpqaAAAAfHx8 8PDw////6enpaGho////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAA8PDw////////x8fHAAAA////mpqaAAAA fHx88PDw////6enpaGho////////////////////////////AAAAAAAA//// ////////////p6enAAAA0NDQ////////8PDwAAAAvb29//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA2dnZ//////// ////////////////AAAAAAAA////////////AAAAAAAA//////////////// ////x8fHaGhoAAAAjIyM////AAAAAAAA2dnZ//////////////////////// ////////////////////AAAAAAAA////////////////AAAAaGho//////// AAAAAAAA2dnZ////////////////////////AAAAAAAA////////////AAAA AAAA////////AAAAAAAA2dnZ////////////////////////////AAAAAAAA ////////////////////AAAAAAAA////////AAAAAAAA//////////////// ////////////////////AAAAAAAA////////////TU1NAAAA8PDw//////// ////AAAAaGho////////////////////////////////0NDQAAAAp6ensrKy x8fH////////////////TU1NAAAA8PDw////////////AAAAaGho//////// AAAAAAAA////////////AAAAAAAA//////////////////////////////// ////////////////////p6enAAAAx8fH////////AAAAAAAA//////////// x8fHaGhoAAAAjIyM////////////////////////////////AAAAAAAA//// ////////////////////////////////p6enAAAAx8fH////////AAAAAAAA ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////AAAAAAAA////////////////AAAAaGho ////AAAAAAAA////////////////////////AAAAAAAA//////////////// mpqajIyM////fHx8////////////////////0NDQAAAAp6ensrKyx8fH//// ////////////////////////////////AAAAAAAA////////////TU1NAAAA 8PDw////////////AAAAaGho////////////////////////////p6enAAAA x8fH////////AAAAAAAA////////////AAAAAAAA////////////////AAAA AAAA////////////////////////////////AAAAAAAA//////////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// ////TU1NAAAA8PDw////////////AAAAaGho////////AAAAAAAA//////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////p6enAAAAx8fH////////AAAAAAAA////////AAAAAAAA//////// ////////////AAAAAAAA////////TU1NAAAA8PDw////////////AAAAaGho ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA ////////p6enAAAAx8fH////////AAAAAAAA////////AAAAAAAA//////// ////////////////////////////srKyAAAA0NDQ0NDQ0NDQ////x8fHAAAA x8fHfHx88PDw////////////////AAAAAAAA////////////AAAAAAAA//// ////////////AAAAAAAA////////////////////////////AAAAAAAA//// ////////////AAAAaGho////////AAAAAAAA2dnZ//////////////////// ////////////////////////AAAAAAAA////////////AAAAAAAA//////// ////////////x8fHaGhoAAAAjIyM////AAAAAAAA2dnZ//////////////// ////////////////////////////AAAAAAAA////////////////TU1NAAAA 8PDw////////////AAAAaGho//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////////////////////AAAA AAAA////////////AAAAAAAA////////////2dnZTU1NAAAAAAAAjIyM//// ////AAAAAAAA//////////////////////////////////////////////// AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////////// ////////////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA ////////////////////////////////AAAAAAAA//////////////////// AAAAAAAA////////AAAAAAAA//////////////////////////////////// AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA//////// ////////////////////////aGhoAAAA8PDw8PDwaGho//////////////// AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA//////////////////////////////////////////////////// ////srKyTU1Np6en6enpAAAAAAAA////2dnZTU1NAAAAAAAAjIyM//////// ////////////////////////////AAAAAAAA//////////////////////// ////////////////srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////////AAAAAAAA////////////////AAAAAAAA////AAAAAAAA//////// ////////////////AAAAAAAA////////////8PDwAAAAvb29////vb290NDQ ////////////////aGhoAAAA8PDw8PDwaGho//////////////////////// ////////////AAAAAAAA////////////AAAAAAAA////////////////AAAA AAAA////////////////////////////////srKyTU1Np6en6enpAAAAAAAA ////////////AAAAAAAA////////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA//////// ////////AAAAAAAA////////AAAAAAAA////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////srKyTU1N p6en6enpAAAAAAAA////////AAAAAAAA////////////////////AAAAAAAA ////////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//// ////////AAAAAAAA////////////////////////////////AAAAAAAA//// ////////////AAAAAAAA////////////AAAAAAAA////////////srKyTU1N p6en6enpAAAAAAAA////////AAAAAAAA//////////////////////////// ////////TU1NAAAA////////jIyM////aGhoAAAA8PDw0NDQsrKy//////// ////////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////AAAAAAAA//////////////////////////////////////////// ////AAAAAAAA////////////AAAAAAAA////////////2dnZTU1NAAAAAAAA jIyM////////AAAAAAAA//////////////////////////////////////// ////////AAAAAAAA////////////////AAAAAAAA////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////aGhoAAAAp6en8PDw////////////TU1NAAAAAAAAAAAA AAAAAAAAAAAA////////////////////////////AAAAAAAA//////////// ////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA ////////////AAAAAAAA////////////////////AAAAAAAA////////AAAA AAAA////////////////////////////////////AAAAAAAA//////////// aGhoAAAA////////////8PDwAAAATU1N//////////////////////////// 0NDQAAAAmpqa////////jIyM4eHh////////////aGhoAAAA//////////// 8PDwAAAATU1N////////AAAAAAAA////////////AAAAAAAA//////////// ////////////////////////////////////////////////////x8fHfHx8 AAAAAAAA////aGhoAAAAp6en8PDw//////////////////////////////// ////////AAAAAAAA//////////////////////////////////////////// ////x8fHfHx8AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////////////////////////AAAAAAAA//// ////////////AAAAAAAA////AAAAAAAA////////////////////////AAAA AAAA////////////srKyAAAA2dnZ////////jIyM////////////0NDQAAAA mpqa////////jIyM4eHh////////////////////////////////AAAAAAAA ////////////aGhoAAAA////////////8PDwAAAATU1N//////////////// ////////////////////////x8fHfHx8AAAAAAAA////////////AAAAAAAA ////////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////////aGhoAAAA////////////8PDwAAAATU1N//// ////AAAAAAAA////////////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////////x8fHfHx8AAAAAAAA//// ////AAAAAAAA////////////////////AAAAAAAA////////aGhoAAAA//// ////////8PDwAAAATU1N////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////////AAAAAAAA////////////////////x8fHfHx8AAAAAAAA//// ////AAAAAAAA////////////////////////////////2dnZAAAAp6en//// ////0NDQmpqaAAAAjIyM////////aGho////////////////AAAAAAAA//// ////////AAAAAAAA////////////////AAAAAAAA//////////////////// ////////AAAAAAAA////////////////AAAAAAAA////////TU1NAAAAAAAA AAAAAAAAAAAAAAAA////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////////aGhoAAAAp6en8PDw////////////TU1NAAAA AAAAAAAAAAAAAAAAAAAA////////////////////////////AAAAAAAA//// ////////////aGhoAAAA////////////8PDwAAAATU1N//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////p6enAAAA//////////// AAAAfHx8////////AAAAAAAA////////////AAAAAAAA////////////AAAA 6enp////////6enpAAAA////p6enAAAA////////////AAAAfHx8//////// ////////////////////AAAAAAAA////////////2dnZAAAAjIyM//////// p6enAAAA////////////AAAAfHx8////////AAAAAAAA////////////AAAA AAAA////////p6enAAAA////////////AAAAfHx8////////////AAAAAAAA ////////////////////AAAAAAAA////////AAAAAAAA//////////////// ////////////////////AAAAAAAA////////////vb29AAAA6enp//////// x8fHAAAAp6en////////////////////////////jIyMAAAA4eHh//////// 0NDQp6en////////////vb29AAAA6enp////////x8fHAAAAp6en//////// AAAAAAAA////////////AAAAAAAA//////////////////////////////// ////////////////////fHx8aGho////////////AAAAAAAA////AAAA6enp ////////6enpAAAA////////////////////////////////AAAAAAAA//// ////////////////////////////////fHx8aGho////////////AAAAAAAA ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////AAAAAAAA////////////0NDQAAAAjIyM ////AAAAAAAA6enp////////////////////AAAAAAAA////////////TU1N fHx88PDw////////srKy8PDw////////jIyMAAAA4eHh////////0NDQp6en ////////////////////////////////AAAAAAAA////////////vb29AAAA 6enp////////x8fHAAAAp6en////////////////////////////fHx8aGho ////////////AAAAAAAA////////////AAAAAAAA////////////////AAAA AAAA////////////////////////////////AAAAAAAA//////////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// ////vb29AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA6enp//// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////fHx8aGho////////////AAAAAAAA////////AAAAAAAA//////// ////////////AAAAAAAA////////vb29AAAA6enp////////x8fHAAAAp6en ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA ////////fHx8aGho////////////AAAAAAAA////////AAAAAAAA//////// ////////////////////////mpqaAAAA2dnZ////////////TU1NAAAA0NDQ ////////p6en0NDQ////////////AAAAAAAA////////////AAAAAAAA//// ////////////AAAAAAAA////////////////////////////AAAAAAAA//// ////////2dnZAAAAjIyM////////p6enAAAA////////////AAAAfHx8//// ////////////////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAA6enp////////6enpAAAA////p6enAAAA////////////AAAAfHx8 ////////////////////////////AAAAAAAA////////////////vb29AAAA 6enp////////x8fHAAAAp6en//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////TU1N AAAAAAAA////////TU1NAAAAAAAA0NDQ////x8fHAAAAaGhox8fH////4eHh AAAAaGho////////TU1NAAAAAAAA0NDQ////x8fHAAAAaGhox8fH////4eHh AAAAaGho////////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAA AAAAx8fH////4eHhAAAAaGho////////////jIyM4eHh////8PDwfHx8AAAA ////6enpTU1Np6en////vb29AAAA0NDQ//////////////////////////// AAAAAAAAx8fH////6enpTU1NAAAA2dnZ////////6enpTU1Np6en////vb29 AAAA0NDQ////TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////6enpTU1N p6en////vb29AAAA0NDQ////////////AAAAAAAA////////////////TU1N AAAAAAAA////////AAAAAAAA//////////////////////////////////// AAAAAAAA////////////////TU1Nmpqa////6enpTU1NTU1N8PDw//////// ////////////////vb29AAAAaGho////////////////TU1N6enp//////// ////TU1Nmpqa////6enpTU1NTU1N8PDw////6enpAAAAAAAA////////4eHh AAAAAAAA//////////////////////////////////////////////////// fHx8AAAA6enp////0NDQAAAAaGho////jIyM4eHh////8PDwfHx8AAAA//// ////////////////////////////AAAAAAAA//////////////////////// ////////////fHx8AAAA6enp////0NDQAAAAaGho////TU1NAAAAAAAA0NDQ ////x8fHAAAAaGhox8fH////4eHhAAAAaGho//////////////////////// ////AAAAAAAAAAAAx8fH////8PDwaGhoAAAA2dnZTU1NAAAAAAAAx8fH8PDw mpqafHx8////TU1NAAAAAAAA////4eHhmpqaAAAA////////////////8PDw jIyM////vb29AAAAaGho////////////////TU1N6enp//////////////// ////////////AAAAAAAA////////////////TU1Nmpqa////6enpTU1NTU1N 8PDw////////////////////////////fHx8AAAA6enp////0NDQAAAAaGho ////////////AAAAAAAA////////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////////TU1NAAAAAAAAx8fH////4eHh AAAAaGho////////////AAAAAAAA////////////////////TU1Nmpqa//// 6enpTU1NTU1N8PDw////TU1NAAAAAAAAx8fH8PDwmpqafHx8TU1NAAAAAAAA 0NDQ////x8fHAAAAaGhox8fH////4eHhAAAAaGho////////fHx8AAAA6enp ////0NDQAAAAaGho////////AAAAAAAA////////////////TU1NAAAAAAAA ////////////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1NAAAAAAAAx8fH ////4eHhAAAAaGho////////////////////////////////AAAAAAAA//// ////////////AAAAAAAAx8fH////2dnZAAAAaGho////////fHx8AAAA6enp ////0NDQAAAAaGho////////AAAAAAAA//////////////////////////// 4eHhAAAATU1N////////////////TU1NAAAA////////////4eHhaGho8PDw ////TU1NAAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA ////////////////////////////AAAAAAAAx8fH////6enpTU1NAAAA2dnZ ////////6enpTU1Np6en////vb29AAAA0NDQ//////////////////////// 6enpAAAAAAAA////////4eHhAAAAAAAA////////////jIyM4eHh////8PDw fHx8AAAA////6enpTU1Np6en////vb29AAAA0NDQ//////////////////// ////////AAAAAAAA////////////////////TU1Nmpqa////6enpTU1NTU1N 8PDw//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////6enpp6enTU1N////////6enp p6enTU1N////srKyAAAAaGho4eHh////p6enAAAAaGho4eHh////////6enp p6enTU1N////srKyAAAAaGho4eHh////p6enAAAAaGho4eHh//////////// ////6enpjIyMAAAATU1Nvb29////////6enpp6enTU1N////srKyAAAATU1N 4eHh////////////////jIyMAAAAmpqa6enpAAAA////////6enpjIyMAAAA TU1Nvb29////////////////////////////////AAAAAAAA6enpjIyMAAAA aGho0NDQ////////////////6enpjIyMAAAATU1Nvb29////////6enpp6en TU1N////srKyAAAATU1N4eHh////////////6enpjIyMAAAATU1Nvb29//// ////AAAAAAAAAAAAAAAAAAAAAAAA////////6enpp6enTU1N////AAAAAAAA AAAAAAAAAAAA////////////////////////AAAAAAAAAAAAAAAAAAAA//// ////8PDwp6enAAAAAAAAmpqa6enp////////////////////////vb29AAAA AAAAAAAAjIyM////////jIyMAAAAAAAA4eHh////////8PDwp6enAAAAAAAA mpqa6enp////////AAAAAAAAAAAA////////AAAAAAAAAAAA//////////// ////////////////////////////////////////////p6enTU1NAAAAAAAA mpqa6enp////////jIyMAAAAmpqa6enpAAAA//////////////////////// ////////AAAAAAAA////////////////////////////////////////p6en TU1NAAAAAAAAmpqa6enp////6enpp6enTU1N////srKyAAAAaGho4eHh//// p6enAAAAaGho4eHh////////////////////////////6enpsrKyTU1N//// mpqaAAAATU1N0NDQ////6enpsrKyTU1N////srKyAAAAmpqa////6enpp6en TU1Nvb29AAAAAAAAAAAAAAAA4eHh////////AAAAAAAAAAAAAAAAAAAAAAAA jIyM////////jIyMAAAAAAAA4eHh////////////////////AAAAAAAAAAAA AAAAAAAA////////8PDwp6enAAAAAAAAmpqa6enp//////////////////// ////////////////p6enTU1NAAAAAAAAmpqa6enp////////////AAAAAAAA ////////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////6enpp6enTU1N////srKyAAAATU1N4eHh////AAAAAAAA AAAAAAAAAAAAAAAA////////////8PDwp6enAAAAAAAAmpqa6enp//////// 6enpsrKyTU1N////srKyAAAAmpqa6enpp6enTU1N////srKyAAAAaGho4eHh ////p6enAAAAaGho4eHh////////////p6enTU1NAAAAAAAAmpqa6enp//// AAAAAAAAAAAAAAAAAAAA////////6enpp6enTU1N////////////8PDwp6en AAAAAAAAmpqa6enp////////6enpp6enTU1N////srKyAAAATU1N4eHh//// ////////////////////////AAAAAAAAAAAAAAAAAAAA////////AAAAAAAA ////srKyAAAAaGho6enp////////////p6enTU1NAAAAAAAAmpqa6enp//// AAAAAAAAAAAAAAAAAAAA////////////////vb29AAAAAAAAAAAAjIyM//// vb29AAAAAAAAAAAAp6en////////AAAAAAAAAAAA////6enpp6enTU1N//// ////////AAAAAAAA////////////////AAAAAAAA//////////////////// ////////AAAAAAAA6enpjIyMAAAAaGho0NDQ////////////////6enpjIyM AAAATU1Nvb29////////////////////////////AAAAAAAAAAAA//////// AAAAAAAAAAAA////////////////jIyMAAAAmpqa6enpAAAA////////6enp jIyMAAAATU1Nvb29////////////////////////////AAAAAAAAAAAAAAAA AAAA////////////8PDwp6enAAAAAAAAmpqa6enp//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA ////////////////////////////////0NDQAAAAAAAA//////////////// ////////////////0NDQAAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////0NDQAAAAAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA////////////////AAAA AAAA////////////////////////////////AAAAAAAA//////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////0NDQAAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////0NDQAAAAAAAA////////////////AAAAAAAA//////////////////// ////////////////////////////////////////0NDQAAAAAAAA//////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////AAAAAAAA//// ////////////AAAAAAAA////////////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////0NDQAAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////TU1NAAAA//////////////////// ////////////////x8fHAAAA//////////////////////////////////// x8fHAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////x8fHAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA////////////////AAAAAAAA//////////////// ////////////////AAAAAAAA//////////////////////////////////// ////////////////////TU1NAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////x8fHAAAA//////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////x8fHAAAA//// ////////////AAAAAAAA//////////////////////////////////////// ////////////////////////x8fHAAAA//////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////////////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////x8fHAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////mpqaAAAA////////////////////////////////////8PDw AAAA////////////////////////////////////8PDwAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////8PDwAAAAAAAA8PDw//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////8PDwAAAA //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////////////////////8PDwAAAA AAAA8PDw//////////////////////////////////////////////////// mpqaAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////8PDwAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////8PDwAAAA////////////////AAAAAAAA //////////////////////////////////////////////////////////// ////8PDwAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////AAAAAAAA////////////////AAAAAAAA//////////////////// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////8PDwAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////fHx8fHx8//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////aGhoAAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////6enpTU1N x8fH////4eHhaGhoaGhofHx8fHx8//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAAAAAAAAAAAAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////fHx8fHx8//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////aGhoAAAAAAAA////////////aGhoAAAA AAAA////////////////////////AAAAAAAAAAAAAAAAAAAAAAAA//////// ////////////////////////////////////////6enpTU1Nx8fH////4eHh aGhoaGho//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////fHx8fHx8//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////aGhoAAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////fHx8fHx8////////aGhoAAAAAAAA//// ////////aGhoAAAAAAAA////////////////////////aGhoAAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// fHx8fHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////6enp p6enTU1N//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////8PDwmpqaAAAAAAAAfHx82dnZ fHx8fHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////fHx8fHx8//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////6enpp6enTU1N////////////6enpp6enTU1N//////////////// //////////////////////////////////////////////////////////// ////////////////////////8PDwmpqaAAAAAAAAfHx82dnZ//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////fHx8fHx8 //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////6enpp6enTU1N//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////fHx8fHx8////////6enpp6enTU1N////////////6enpp6enTU1N ////////////////////////6enpp6enTU1N//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////mpqaAAAAmpqa//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////mpqaAAAAmpqa //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////fHx8AAAA AAAAfHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////fHx8AAAAAAAAfHx8//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////mpqavb29//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////mpqavb29//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////8PDwaGho//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwaGho//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////0NDQfHx8//////// ////////2dnZaGho////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAA AAAA////////AAAAAAAAAAAAAAAA////////6enpfHx8AAAAaGho0NDQ//// ////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////////////// ////////AAAAAAAAAAAAAAAA////AAAA6enpjIyMAAAAjIyM//////////// ////////////////////////////0NDQfHx8////////////////2dnZaGho ////////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////// ////////TU1N2dnZ////////////////////////////////////AAAAAAAA AAAAAAAAAAAAAAAA////////////////////////AAAAAAAAAAAAAAAA//// AAAAAAAAAAAAAAAA////////4eHhfHx8AAAAmpqa6enp//////////////// 4eHhfHx8AAAAmpqa6enp////////////////4eHhaGhoAAAAaGho6enpTU1N p6en6enp////////////////////////////////////TU1N2dnZ//////// ////////////////6enpmpqaAAAAAAAAp6en8PDw////////////4eHhTU1N AAAAsrKy////TU1Np6en6enpAAAAAAAAAAAATU1N//////////////////// ////////////////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enpAAAA6enp jIyMAAAAjIyM////////AAAA6enpjIyMAAAAjIyM////////////AAAAAAAA AAAAAAAA////AAAA6enpjIyMAAAAjIyM////////////0NDQAAAAfHx86enp ////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enpAAAAAAAAAAAAAAAA//// AAAAAAAAAAAAAAAA////////6enpfHx8AAAAaGho0NDQ//////////////// 4eHhfHx8AAAAmpqa6enp////////////fHx8fHx8//////////////////// ////////AAAAAAAAAAAAAAAAAAAAAAAA////////////////////AAAAAAAA AAAAAAAA////4eHhAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////////////6enpmpqaAAAAAAAAp6en8PDw//////////////// ////0NDQfHx8////////////////2dnZaGho//////////////////////// ////////////0NDQAAAAfHx86enp////AAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////////AAAAAAAAAAAAAAAA////AAAA6enpjIyMAAAAjIyM//// ////////////////////////////vb29TU1NAAAAaGhop6en8PDw//////// ////////4eHhTU1NAAAAsrKy////TU1Np6en6enp////AAAA6enpjIyMAAAA jIyM////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAA AAAAAAAAAAAA////////4eHhfHx8AAAAmpqa6enp////////////AAAA6enp jIyMAAAAjIyM////////////AAAA6enpjIyMAAAAjIyM//////////////// ////////////////////////0NDQfHx8////////////////2dnZaGho//// ////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////AAAA AAAAAAAAAAAA////////////////////////////vb29TU1NAAAAaGhop6en 8PDw////////////////4eHhfHx8AAAAmpqa6enp//////////////////// ////////////6enpmpqaAAAAAAAAp6en8PDw////////////AAAAAAAAAAAA AAAAAAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////fHx8AAAA0NDQ////////////p6enAAAA2dnZ ////////6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp////////6enpAAAA AAAA6enp////6enpTU1NAAAAAAAAAAAAaGho6enp////6enpAAAAAAAA6enp ////8PDwAAAAAAAA6enp////////////////////////////6enpAAAAAAAA 6enp////AAAAfHx84eHh////4eHhjIyM//////////////////////////// ////////fHx8AAAA0NDQ////////////p6enAAAA2dnZ////////////6enp AAAAAAAA6enp////8PDwAAAAAAAA6enp////////////x8fHAAAAmpqa//// ////////////////////////////////////8PDwAAAAAAAA8PDw//////// ////////////////////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp//// 6enpAAAAAAAAAAAAAAAAAAAA4eHh////////6enpAAAAAAAAAAAAAAAAAAAA 4eHh////////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho//////////// ////////////////////x8fHAAAAmpqa////////////////////8PDwTU1N aGho8PDw////p6enaGho////////////aGhoAAAA2dnZ////x8fHAAAAAAAA aGho6enpAAAAAAAA////////////////////////////////////////aGho AAAA0NDQ////x8fHAAAAAAAA////srKyAAAAfHx84eHh////4eHhjIyM//// AAAAfHx84eHh////4eHhjIyM////////6enpAAAAAAAA6enp////AAAAfHx8 4eHh////4eHhjIyM////////TU1NAAAA6enpjIyM////aGhoAAAA0NDQ//// x8fHAAAAAAAA////srKy6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp//// 6enpTU1NAAAAAAAAAAAAaGho6enp////////6enpAAAAAAAAAAAAAAAAAAAA 4eHh////////fHx8fHx8////////////////////////////////8PDwAAAA AAAA8PDw////////////////////////6enpAAAAAAAA8PDw////////fHx8 TU1N8PDw////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////////8PDw TU1NaGho8PDw////p6enaGho////////////////////fHx8AAAA0NDQ//// ////////p6enAAAA2dnZ////////////////////////////////TU1NAAAA 6enpjIyM////6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp////////6enp AAAAAAAA6enp////AAAAfHx84eHh////4eHhjIyM//////////////////// ////TU1NAAAAvb29////6enpTU1NTU1N////////////////aGhoAAAA2dnZ ////x8fHAAAAAAAAaGho////AAAAfHx84eHh////4eHhjIyM////////6enp AAAAAAAA6enp////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////6enp AAAAAAAAAAAAAAAAAAAA4eHh////////AAAAfHx84eHh////4eHhjIyM//// ////AAAAfHx84eHh////4eHhjIyM//////////////////////////////// ////fHx8AAAA0NDQ////////////p6enAAAA2dnZ////////////6enpAAAA AAAA6enp////6enpAAAAAAAA6enp////////6enpAAAAAAAA6enp//////// ////////////////TU1NAAAAvb29////6enpTU1NTU1N////////////6enp AAAAAAAAAAAAAAAAAAAA4eHh////////////////////////8PDwTU1NaGho 8PDw////p6enaGho////////////////0NDQAAAAAAAA2dnZ//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwAAAAmpqajIyM////////////AAAATU1NjIyM////////////AAAAAAAA ////////////AAAAAAAA////////////////AAAAAAAA////////mpqaAAAA fHx8////////4eHhjIyM////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////////AAAAAAAA////////AAAA8PDw//// ////x8fHAAAA////////////////////////////////8PDwAAAAmpqajIyM ////////////AAAATU1NjIyM////////////////AAAAAAAA//////////// AAAAAAAA////////////////aGhoAAAATU1N//////////////////////// ////////////////////AAAAAAAA//////////////////////////////// ////AAAAAAAA////////////AAAAAAAA////////mpqaAAAAfHx88PDw//// 6enpaGho////////mpqaAAAAfHx88PDw////6enpaGho////////mpqaAAAA x8fH////////////AAAAAAAA//////////////////////////////////// aGhoAAAATU1N////////////////////p6enAAAA0NDQ////////8PDwAAAA vb29////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//// ////////////////////////////////////AAAAAAAA////////////AAAA AAAA////////AAAA8PDw////////x8fHAAAA////AAAA8PDw////////x8fH AAAA////////////AAAAAAAA////////AAAA8PDw////////x8fHAAAA//// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////mpqaAAAAfHx8//////// 4eHhjIyM////////mpqaAAAAfHx88PDw////6enpaGho//////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////fHx8TU1N6enp////////////AAAA AAAA////////////AAAAAAAA////////////p6enAAAA0NDQ////////8PDw AAAAvb29////////////8PDwAAAAmpqajIyM////////////AAAATU1NjIyM ////////////////////////////////AAAAAAAA////////////////AAAA AAAA////////////AAAAAAAA////////////////AAAAAAAA////////AAAA 8PDw////////x8fHAAAA////////////////////////AAAAAAAA//////// ////0NDQAAAAsrKy////////////AAAAAAAA////////////AAAAAAAA//// ////AAAA8PDw////////x8fHAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////mpqaAAAAfHx88PDw////6enp aGho////////AAAA8PDw////////x8fHAAAA////////AAAA8PDw//////// x8fHAAAA////////////////////////////////8PDwAAAAmpqajIyM//// ////////AAAATU1NjIyM////////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////////////////////////AAAA AAAA////////////0NDQAAAAsrKy////////mpqaAAAAfHx88PDw////6enp aGho////////////////////////p6enAAAA0NDQ////////8PDwAAAAvb29 ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////srKyAAAA0NDQ0NDQ0NDQ ////x8fHAAAAx8fHfHx88PDw////////AAAAAAAA////////////AAAAAAAA ////////////////AAAAAAAA////////TU1NAAAA6enp//////////////// ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////////////AAAAAAAA////////////////x8fHaGhoAAAAjIyM//////// ////////////////////////srKyAAAA0NDQ0NDQ0NDQ////x8fHAAAAx8fH fHx88PDw////////////AAAAAAAA////////////AAAAAAAA//////////// 0NDQAAAAp6ensrKyx8fH//////////////////////////////////////// AAAAAAAA////////////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA2dnZ////////////////////////AAAA AAAA2dnZ////////////////////////AAAAAAAA////////////////AAAA AAAA////////////////////////////////0NDQAAAAp6ensrKyx8fH//// ////////////TU1NAAAA8PDw////////////AAAAaGho////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA//////////////////////// ////////////////p6enAAAAx8fH////////AAAAAAAA//////////////// x8fHaGhoAAAAjIyM////////////x8fHaGhoAAAAjIyM////////////AAAA AAAA////////////////x8fHaGhoAAAAjIyM////////AAAAAAAA//////// ////p6enAAAAx8fH////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////TU1NAAAA6enp////////////////////////AAAA AAAA2dnZ//////////////////////////////////////////////////// ////////////////AAAAAAAA////////////////////////////////AAAA AAAA////mpqaAAAA0NDQ////////////////AAAAAAAA////////////AAAA AAAA////////////TU1NAAAA8PDw////////////AAAAaGho//////////// srKyAAAA0NDQ0NDQ0NDQ////x8fHAAAAx8fHfHx88PDw//////////////// ////////////AAAAAAAA////////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////////////x8fHaGhoAAAAjIyM ////////////////////////AAAAAAAA////////////////AAAAaGho//// ////////AAAAAAAA////////////AAAAAAAA////////////////x8fHaGho AAAAjIyM////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////AAAAAAAA2dnZ//////////////////////////////// x8fHaGhoAAAAjIyM////////////////x8fHaGhoAAAAjIyM//////////// ////////////////////srKyAAAA0NDQ0NDQ0NDQ////x8fHAAAAx8fHfHx8 8PDw////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////////////////////////AAAAAAAA//////////////// AAAAaGho////////AAAAAAAA2dnZ//////////////////////////////// ////////TU1NAAAA8PDw////////////AAAAaGho////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////TU1NAAAA////////jIyM////aGhoAAAA8PDw0NDQ srKy////////AAAAAAAA////////////AAAAAAAA////////////////AAAA AAAA////////AAAAAAAA////////////////////////////AAAAAAAA//// ////////AAAAAAAA////////////////////////////////////AAAAAAAA ////////2dnZTU1NAAAAAAAAjIyM//////////////////////////////// ////TU1NAAAA////////jIyM////aGhoAAAA8PDw0NDQsrKy//////////// AAAAAAAA////////////AAAAAAAA////////////aGhoAAAA8PDw8PDwaGho ////////////////////////////////////////AAAAAAAA//////////// ////////////////////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA////////////////////////////AAAAAAAA//////////////// ////////////AAAAAAAA////////////////AAAAAAAA//////////////// ////////////////aGhoAAAA8PDw8PDwaGho////////////////AAAAAAAA ////////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////AAAAAAAA//////////////////////////////////////////// srKyTU1Np6en6enpAAAAAAAA////////2dnZTU1NAAAAAAAAjIyM//////// 2dnZTU1NAAAAAAAAjIyM////////////////AAAAAAAA////////2dnZTU1N AAAAAAAAjIyM////////////AAAAAAAA////////////////srKyTU1Np6en 6enpAAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA////////////////////////////AAAAAAAA//////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////////////////AAAAAAAAp6enAAAAvb29//// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////////TU1NAAAA////////jIyM ////aGhoAAAA8PDw0NDQsrKy////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////2dnZTU1NAAAAAAAAjIyM//////////////////////// ////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////2dnZTU1NAAAAAAAAjIyM//////////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA////////AAAA AAAA////////////////////////////2dnZTU1NAAAAAAAAjIyM//////// ////2dnZTU1NAAAAAAAAjIyM//////////////////////////////////// TU1NAAAA////////jIyM////aGhoAAAA8PDw0NDQsrKy////////////AAAA AAAA////////////AAAAAAAA////////////////AAAAAAAA//////////// ////////////////AAAAAAAA////////////////AAAAAAAA////////AAAA AAAA////////////////////////////////////////////AAAAAAAA//// ////////////AAAAAAAA////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////2dnZ AAAAp6en////////0NDQmpqaAAAAjIyM////////aGho////////AAAAAAAA ////////////AAAAAAAA////////////////AAAAAAAA////////TU1NAAAA ////////////////////////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////////AAAAAAAA////////aGhoAAAAp6en 8PDw////////////////////////////////////2dnZAAAAp6en//////// 0NDQmpqaAAAAjIyM////////aGho////////////AAAAAAAA//////////// AAAAAAAA////////0NDQAAAAmpqa////////jIyM4eHh//////////////// ////////////////////AAAAAAAA//////////////////////////////// ////AAAAAAAA////////////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAA AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////aGhoAAAA ////////////////AAAAAAAA////////////////////////////0NDQAAAA mpqa////////jIyM4eHh////////////aGhoAAAA////////////8PDwAAAA TU1N////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//// ////////////////////////////////////////////////x8fHfHx8AAAA AAAA////////aGhoAAAAp6en8PDw////////////aGhoAAAAp6en8PDw//// ////////////////AAAAAAAA////////aGhoAAAAp6en8PDw//////////// ////AAAAAAAA////////////////////////x8fHfHx8AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////TU1NAAAA//////////// ////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////////////AAAAAAAA0NDQTU1N////////////////////////AAAA AAAA////////////AAAAAAAA////////////aGhoAAAA////////////8PDw AAAATU1N////////2dnZAAAAp6en////////0NDQmpqaAAAAjIyM//////// aGho////////////////////////////AAAAAAAA////////////////AAAA AAAA////////////AAAAAAAA////////////////AAAAAAAA////////aGho AAAAp6en8PDw////////////////////////////////AAAAAAAA//////// ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////aGhoAAAAp6en8PDw////////////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAA AAAA////////aGhoAAAAp6en8PDw////////////////aGhoAAAAp6en8PDw ////////////////////////////////////2dnZAAAAp6en////////0NDQ mpqaAAAAjIyM////////aGho////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////////////////////////AAAA AAAA////////////////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAA AAAA////////////////////////aGhoAAAA////////////8PDwAAAATU1N ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////mpqaAAAA2dnZ//////////// TU1NAAAA0NDQ////////p6en0NDQ////AAAAAAAA////////////AAAAAAAA ////////////////AAAAAAAA////////p6enAAAA6enp////////x8fHTU1N ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////////////AAAAAAAA////////AAAA6enp////////6enpAAAA//////// ////////////////////mpqaAAAA2dnZ////////////TU1NAAAA0NDQ//// ////p6en0NDQ////////AAAAAAAA////////////AAAAAAAA////////jIyM AAAA4eHh////////0NDQp6en//////////////////////////////////// AAAAAAAA////////////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////p6enAAAA////////////AAAAfHx8////////p6en AAAA////////////AAAAfHx8////////vb29AAAA2dnZ////////8PDwAAAA AAAA////////////////////////////jIyMAAAA4eHh////////0NDQp6en ////////////vb29AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA6enp//////////////////// ////////////////fHx8aGho////////////AAAAAAAA////////AAAA6enp ////////6enpAAAA////AAAA6enp////////6enpAAAA////////////AAAA AAAA////////AAAA6enp////////6enpAAAA////////AAAAAAAA//////// ////fHx8aGho////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////p6enAAAA6enp////////x8fHTU1N////////p6en AAAA////////////AAAAfHx8//////////////////////////////////// ////////////////AAAAAAAA////////////////////////////////AAAA AAAA////4eHhjIyM6enp////////////////AAAAAAAA////////////AAAA AAAA////////////vb29AAAA6enp////////x8fHAAAAp6en////////mpqa AAAA2dnZ////////////TU1NAAAA0NDQ////////p6en0NDQ//////////// ////////////AAAAAAAA////////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////AAAA6enp////////6enpAAAA ////////////////////////AAAAAAAA////////////2dnZAAAAjIyM//// ////////AAAAAAAA////////////AAAAAAAA////////AAAA6enp//////// 6enpAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////p6enAAAA////////////AAAAfHx8////////AAAA6enp ////////6enpAAAA////////AAAA6enp////////6enpAAAA//////////// ////////////////mpqaAAAA2dnZ////////////TU1NAAAA0NDQ//////// p6en0NDQ////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////////////////////////AAAAAAAA////////////2dnZ AAAAjIyM////////p6enAAAA////////////AAAAfHx8//////////////// ////////vb29AAAA6enp////////x8fHAAAAp6en////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////4eHhAAAATU1N////////////////TU1NAAAA//////////// 4eHhaGho8PDwAAAAAAAAx8fH////2dnZAAAAaGho////////////TU1NAAAA AAAA////////////TU1NfHx8////////aGhofHx8////////AAAAAAAAx8fH ////2dnZAAAAaGho////////////////////////////////TU1NAAAAAAAA ////////jIyM4eHh////8PDwfHx8AAAA////////////////////////4eHh AAAATU1N////////////////TU1NAAAA////////////4eHhaGho8PDw//// AAAAAAAAx8fH////2dnZAAAAaGho////vb29AAAAaGho//////////////// TU1N6enp////////////////////////////////AAAAAAAA//////////// ////////////////////TU1NAAAAAAAAx8fH////4eHhAAAAaGho//////// 6enpTU1Np6en////vb29AAAA0NDQ////////6enpTU1Np6en////vb29AAAA 0NDQ////////////fHx8aGho8PDw////p6enAAAAAAAA//////////////// ////////vb29AAAAaGho////////////////TU1N6enp////////////TU1N mpqa////6enpTU1NTU1N8PDw////6enpAAAAAAAA////////4eHhAAAAAAAA ////TU1NAAAAAAAAx8fH8PDwmpqafHx8////////////////////////fHx8 AAAA6enp////0NDQAAAAaGho////////jIyM4eHh////8PDwfHx8AAAA//// jIyM4eHh////8PDwfHx8AAAA////////TU1NAAAAAAAA////////jIyM4eHh ////8PDwfHx8AAAA////////AAAAAAAA////////////fHx8AAAA6enp//// 0NDQAAAAaGho////////TU1NAAAAAAAAx8fH////4eHhAAAAaGho//////// ////TU1NfHx8////////aGhofHx8////////6enpTU1Np6en////vb29AAAA 0NDQ////////////////////////////////////////////////////AAAA AAAA////////////////////////////////AAAAAAAA////////8PDwjIyM 0NDQ////////TU1NAAAAAAAAx8fH////4eHhAAAAaGho//////////////// TU1Nmpqa////6enpTU1NTU1N8PDw////4eHhAAAATU1N//////////////// TU1NAAAA////////////4eHhaGho8PDw////////////////////AAAAAAAA ////////////////AAAAAAAAx8fH////2dnZAAAAaGho////////////TU1N AAAAAAAA////////jIyM4eHh////8PDwfHx8AAAA//////////////////// ////AAAAAAAAx8fH////6enpTU1NAAAA2dnZ////////6enpAAAAAAAA//// ////4eHhAAAAAAAA////////jIyM4eHh////8PDwfHx8AAAA////////TU1N AAAAAAAA////////TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////6enp TU1Np6en////vb29AAAA0NDQ////////jIyM4eHh////8PDwfHx8AAAA//// ////jIyM4eHh////8PDwfHx8AAAA////////////////////////4eHhAAAA TU1N////////////////TU1NAAAA////////////4eHhaGho8PDwTU1NAAAA AAAA////////////AAAAAAAA////////////////AAAAAAAA//////////// ////////////////AAAAAAAAx8fH////6enpTU1NAAAA2dnZ////////6enp TU1Np6en////vb29AAAA0NDQ////////////////////////////TU1Nmpqa ////6enpTU1NTU1N8PDw////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA AAAAjIyM////vb29AAAAAAAAAAAAp6en////////AAAAAAAAAAAAAAAAAAAA ////srKyAAAAaGho6enp////////////6enpp6enTU1N////////////8PDw p6enAAAAAAAAmpqa////////////AAAAAAAA////srKyAAAAaGho6enp//// ////////////////////////////6enpp6enTU1N////////////jIyMAAAA mpqa6enpAAAA////////////////////vb29AAAAAAAAAAAAjIyM////vb29 AAAAAAAAAAAAp6en////////AAAAAAAAAAAA////AAAAAAAA////srKyAAAA aGho6enpvb29AAAAAAAAAAAAjIyM////////jIyMAAAAAAAA4eHh//////// ////////////////////AAAAAAAA//////////////////////////////// 6enpp6enTU1N////srKyAAAATU1N4eHh////////////6enpjIyMAAAATU1N vb29////////////////6enpjIyMAAAATU1Nvb29//////////////////// p6enAAAATU1N2dnZAAAAAAAA////////////////////vb29AAAAAAAAAAAA jIyM////////jIyMAAAAAAAA4eHh////////8PDwp6enAAAAAAAAmpqa6enp ////////AAAAAAAAAAAA////////AAAAAAAAAAAA////6enpsrKyTU1N//// srKyAAAAmpqa////////////////////////////p6enTU1NAAAAAAAAmpqa 6enp////////////jIyMAAAAmpqa6enpAAAA////////jIyMAAAAmpqa6enp AAAA////////6enpp6enTU1N////////////jIyMAAAAmpqa6enpAAAA//// AAAAAAAAAAAAAAAAAAAA////////p6enTU1NAAAAAAAAmpqa6enp//////// 6enpp6enTU1N////srKyAAAATU1N4eHh////////////8PDwp6enAAAAAAAA mpqa////////////////6enpjIyMAAAATU1Nvb29//////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////srKyAAAAAAAAAAAA////6enpp6en TU1N////srKyAAAATU1N4eHh////////////////8PDwp6enAAAAAAAAmpqa 6enp////vb29AAAAAAAAAAAAjIyM////vb29AAAAAAAAAAAAp6en//////// AAAAAAAAAAAA////////////////AAAAAAAAAAAAAAAAAAAA////////AAAA AAAA////srKyAAAAaGho6enp////////////6enpp6enTU1N//////////// jIyMAAAAmpqa6enpAAAA////////////////////////AAAAAAAA6enpjIyM AAAAaGho0NDQ////////////AAAAAAAAAAAA////////AAAAAAAAAAAA//// ////////jIyMAAAAmpqa6enpAAAA////////6enpp6enTU1N////////6enp p6enTU1N////srKyAAAATU1N4eHh////////////6enpjIyMAAAATU1Nvb29 ////////////////jIyMAAAAmpqa6enpAAAA////////////jIyMAAAAmpqa 6enpAAAA////////////////////vb29AAAAAAAAAAAAjIyM////vb29AAAA AAAAAAAAp6en////////AAAAAAAAAAAA6enpp6enTU1N////////////AAAA AAAA////////////////AAAAAAAA////////////////////////////AAAA AAAA6enpjIyMAAAAaGho0NDQ////////////////6enpjIyMAAAATU1Nvb29 ////////////////////////////////8PDwp6enAAAAAAAAmpqa6enp//// ////////AAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////0NDQAAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////0NDQAAAAAAAA////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// AAAAAAAA////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// ////////////////////////////////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////x8fHAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////x8fHAAAA ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////////AAAAAAAA//////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////TU1NAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// ////////////////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// ////////////////8PDwAAAAAAAA8PDw//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////8PDwAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////8PDwAAAAAAAA8PDw//////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////8PDwAAAA////////////////AAAA AAAA//////////////////////////////////////////////////////// ////////////////////////////////////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////AAAAAAAA////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////mpqaAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////aGhoAAAAAAAA//////////////////// ////////////////fHx8fHx8//////////////////////////////////// ////aGhoAAAAAAAA//////////////////////////////////////////// ////////////fHx8fHx8//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////aGhoAAAAAAAA//////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA AAAAAAAAAAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////aGhoAAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////fHx8 fHx8//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////AAAAAAAAAAAAAAAAAAAAAAAA////////////////////aGhoAAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////aGhoAAAAAAAA//////////////// ////////////////////fHx8fHx8//////////////////////////////// ////////////////////aGhoAAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// ////////////////////fHx8fHx8//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////fHx8fHx8////////aGhoAAAAAAAA////////////aGho AAAAAAAA////////////////////////aGhoAAAAAAAA//////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////6enp TU1Nx8fH////4eHhaGhoaGho//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////6enpp6enTU1N////////////////////////////////////fHx8 fHx8////////////////////////////////////////6enpp6enTU1N//// ////////////////////////////////////////////////////fHx8fHx8 //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////6enp p6enTU1N//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////6enpp6enTU1N//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////fHx8fHx8//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////6enpp6enTU1N//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////6enpp6enTU1N//////////////////////////////////// fHx8fHx8//////////////////////////////////////////////////// 6enpp6enTU1N//////////////////////////////////////////////// //////////////////////////////////////////////////////////// fHx8fHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////fHx8 fHx8////////6enpp6enTU1N////////////6enpp6enTU1N//////////// ////////////6enpp6enTU1N//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////8PDwmpqaAAAAAAAAfHx8 2dnZ//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////mpqaAAAAmpqa//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////8PDwp6enaGhoAAAAAAAAfHx8vb29//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAAAAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAAAAAAAAAA//////////// ////////////AAAAAAAAAAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////fHx8AAAAAAAAfHx8//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////TU1N mpqa4eHh////////////2dnZmpqa//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////6enpAAAA AAAA6enp//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////6enpAAAAAAAA6enp////////////////////////6enpAAAA AAAA6enp//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// mpqavb29//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////p6en//////////////////// ////8PDwp6en//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////8PDwaGho//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////2dnZ4eHh////////////////2dnZAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA AAAAAAAAAAAAAAAA////////////////////////AAAAAAAAAAAAAAAA//// ////4eHhfHx8AAAAmpqa6enp////////////4eHhTU1NAAAAp6en////mpqa AAAAjIyM6enpAAAA6enpjIyMAAAAjIyM////////////////4eHhfHx8AAAA mpqa6enp////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAA ////////////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//// ////4eHhfHx8AAAAmpqa6enp////////////////4eHhfHx8AAAAmpqa6enp ////////////////4eHhaGhoAAAAaGho6enpTU1Np6en6enp//////////// ////////////////////////TU1N2dnZ////////////////////////6enp mpqaAAAAAAAAp6en8PDw////////////4eHhTU1NAAAAsrKy////TU1Np6en 6enpAAAAAAAAAAAATU1N////////////////////////////////////4eHh TU1NAAAAsrKy////TU1Np6en6enp////AAAAAAAAAAAATU1N//////////// 0NDQTU1NAAAAAAAAAAAAAAAAAAAAaGho////////////4eHhfHx8AAAAmpqa 6enp////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////0NDQ AAAAfHx86enp////////////////////////////6enpfHx8AAAAaGho0NDQ ////////////////6enpmpqaAAAAAAAAp6en8PDw//////////////////// ////////////////////6enpmpqaAAAAAAAAp6en8PDw////////////AAAA AAAA0NDQTU1NAAAAmpqa8PDw////////////////4eHhfHx8AAAAmpqa6enp ////////AAAAAAAAAAAATU1N////////////4eHhTU1NAAAAp6en////mpqa AAAAjIyM6enp0NDQAAAAfHx86enp////////AAAAAAAAAAAAAAAA//////// 6enpmpqaAAAAAAAAp6en8PDw////////AAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////////////////////////////////vb29TU1NAAAAaGhop6en 8PDw////////////////4eHhfHx8AAAAmpqa6enp////////////////6enp fHx8AAAAaGho0NDQ////////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enp 4eHhTU1NAAAAsrKy////TU1Np6en6enp////////AAAA6enpjIyMAAAAjIyM ////////////4eHhfHx8AAAAmpqa6enp//////////////////////////// AAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////4eHh aGhoAAAAaGho6enpTU1Np6en6enp////////6enpmpqaAAAAAAAAp6en8PDw ////////////////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA ////////////6enpmpqaAAAAAAAAp6en8PDw////////////0NDQAAAAfHx8 6enp////////////////////////////////////0NDQfHx8//////////// ////2dnZaGho////////////////4eHhTU1NAAAAp6en////mpqaAAAAjIyM AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////0NDQAAAAfHx86enp//// ////////////////////////0NDQAAAAfHx86enp////AAAAAAAAAAAAAAAA ////AAAAAAAAAAAAAAAA////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enp 0NDQAAAAfHx86enp////////////////////////0NDQAAAAfHx86enp//// ////////6enpmpqaAAAAAAAAp6en8PDw//////////////////////////// AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////4eHhTU1NAAAAp6en//// mpqaAAAAjIyM6enpAAAAAAAA0NDQTU1NAAAAmpqa8PDw////////////AAAA AAAA0NDQTU1NAAAAmpqa8PDw////////////////4eHhfHx8AAAAmpqa6enp ////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////8PDwAAAAAAAA6enp//////// ////////////////////6enpAAAAAAAA6enp////6enpAAAAAAAAAAAAAAAA AAAA4eHh////////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKyAAAAfHx8 4eHh////4eHhjIyM////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////// ////////////////////8PDwAAAAAAAA8PDw//////////////////////// 6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////6enpAAAAAAAAAAAAAAAA AAAA4eHh////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////////4eHhAAAA TU1N4eHh////vb29AAAAAAAAaGho//////////////////////////////// x8fHAAAAmpqa////////////////////8PDwTU1NaGho8PDw////p6enaGho ////////////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho6enpAAAAAAAA//// ////////////////////////////////////aGhoAAAA2dnZ////x8fHAAAA AAAAaGho////6enpAAAAAAAA////////////////AAAAAAAAAAAAAAAAAAAA AAAAaGho6enp////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAA AAAA8PDw////8PDwAAAAAAAA6enp////////TU1NAAAA6enpjIyM//////// ////////////////6enpTU1NAAAAAAAAAAAAaGho6enp////////8PDwTU1N aGho8PDw////p6enaGho////////////////////////////////////8PDw TU1NaGho8PDw////p6enaGho////////////AAAAAAAAp6en////8PDwfHx8 TU1N////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAAAAAA ////////////////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKyTU1NAAAA 6enpjIyM////////6enpAAAAAAAA6enp////8PDwTU1NaGho8PDw////p6en aGho////////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp//////////// ////////////////TU1NAAAAvb29////6enpTU1NTU1N////////////6enp AAAAAAAAAAAAAAAAAAAA4eHh////////6enpTU1NAAAAAAAAAAAAaGho6enp ////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKyaGhoAAAA2dnZ////x8fH AAAAAAAAaGho////////AAAAfHx84eHh////4eHhjIyM////6enpAAAAAAAA AAAAAAAAAAAA4eHh////////////////////////////8PDwAAAAAAAA8PDw ////////////////////////////////4eHhAAAATU1N4eHh////vb29AAAA AAAAaGho////8PDwTU1NaGho8PDw////p6enaGho//////////////////// ////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////////8PDwTU1NaGho 8PDw////p6enaGho////////////TU1NAAAA6enpjIyM//////////////// ////////////////////fHx8AAAA0NDQ////////////p6enAAAA2dnZ//// ////////aGhoAAAA0NDQ////x8fHAAAAAAAA////mpqaAAAAAAAA8PDw//// 8PDwAAAAAAAA6enp////TU1NAAAA6enpjIyM//////////////////////// ////TU1NAAAA6enpjIyM////6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp ////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKyTU1NAAAA6enpjIyM//// ////////////////////TU1NAAAA6enpjIyM////////8PDwTU1NaGho8PDw ////p6enaGho////////////////////////////6enpAAAAAAAA6enp//// 8PDwAAAAAAAA6enp////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKyAAAA AAAAp6en////8PDwfHx8TU1N////////////AAAAAAAAp6en////8PDwfHx8 TU1N////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAAAAAA 8PDw////8PDwAAAAAAAA6enp//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// ////AAAAAAAA////////mpqaAAAAfHx88PDw////6enpaGho////////AAAA AAAA////////////AAAAAAAA////////AAAA8PDw////////x8fHAAAA//// ////mpqaAAAAfHx88PDw////6enpaGho//////////////////////////// ////AAAAAAAA////////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////mpqaAAAAfHx88PDw////6enpaGho////////mpqa AAAAfHx88PDw////6enpaGho////////mpqaAAAAx8fH////////////AAAA AAAA////////////////////////////////////aGhoAAAATU1N//////// ////////////p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA//////////////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////srKy8PDw//////////////////////////////// mpqaAAAAfHx88PDw////6enpaGho////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////////////////////mpqa AAAAfHx8////////4eHhjIyM////////p6enAAAA0NDQ////////8PDwAAAA vb29////////////////////////////////p6enAAAA0NDQ////////8PDw AAAAvb29////////AAAAAAAA////////////2dnZAAAAsrKy////////mpqa AAAAfHx88PDw////6enpaGho////////AAAAAAAA////////////////AAAA AAAA////////////AAAAAAAA////////AAAAAAAA//////////////////// AAAAAAAA////////p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAA AAAA////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////0NDQAAAAsrKy////////mpqaAAAAfHx88PDw////6enp aGho////////mpqaAAAAfHx8////////4eHhjIyM////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////// AAAA8PDw////////x8fHAAAA////mpqaAAAAfHx88PDw////6enpaGho//// ////////////////////////////AAAAAAAA//////////////////////// ////////////mpqaAAAAx8fH////////////AAAAAAAA////////p6enAAAA 0NDQ////////8PDwAAAAvb29////////////////////////AAAAAAAA//// ////////AAAAAAAA////////////p6enAAAA0NDQ////////8PDwAAAAvb29 ////////AAAAAAAA////////////////////////////////////////8PDw AAAAmpqajIyM////////////AAAATU1NjIyM////////////AAAAAAAA//// ////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA////////////////////////////////////AAAAAAAA//////// ////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA//////////////////////////////// AAAAAAAA////////////////p6enAAAA0NDQ////////8PDwAAAAvb29//// ////////////////////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA////////////AAAAAAAA////////AAAAAAAA////////////2dnZ AAAAsrKy////////AAAAAAAA////////////2dnZAAAAsrKy////////mpqa AAAAfHx88PDw////6enpaGho////////AAAAAAAA////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////////////////////////AAAAAAAA//////// AAAAAAAA2dnZ////////////////////////p6enAAAAx8fH////////AAAA AAAA////////////////x8fHaGhoAAAAjIyM////////AAAAAAAA2dnZ//// ////////////////////////////////////////////AAAAAAAA//////// ////////////////////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA2dnZ////////////////////////AAAAAAAA2dnZ//////////// ////////////AAAAAAAA////////////////AAAAAAAA//////////////// ////////////////0NDQAAAAp6ensrKyx8fH////////////////TU1NAAAA 8PDw////////////AAAAaGho////////AAAAAAAA////////////AAAAAAAA ////////AAAAAAAA////////////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// ////srKyjIyMAAAAaGho2dnZ////////////////AAAAAAAA2dnZ//////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////////////////////TU1NAAAA6enp//////////// ////////////TU1NAAAA8PDw////////////AAAAaGho//////////////// ////////////////TU1NAAAA8PDw////////////AAAAaGho////////AAAA AAAA////////////////AAAAaGho////////AAAAAAAA2dnZ//////////// ////////////AAAAAAAA////////////////p6enAAAAx8fH////////AAAA AAAA////////AAAAAAAA////////////////////AAAAAAAA////////TU1N AAAA8PDw////////////AAAAaGho////////AAAAAAAA////////////AAAA AAAA////////////////////////////////AAAAAAAA//////////////// AAAAaGho////////AAAAAAAA2dnZ////////////////////////TU1NAAAA 6enp////////////////////p6enAAAAx8fH////////AAAAAAAA//////// AAAAAAAA////////////AAAAAAAA////////////////////x8fHaGhoAAAA jIyM////AAAAAAAA2dnZ//////////////////////////////////////// ////////AAAAAAAA////////////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////TU1NAAAA8PDw////////////AAAA aGho////////////////////////AAAAAAAA////////////AAAAAAAA//// ////////TU1NAAAA8PDw////////////AAAAaGho////////AAAAAAAA//// ////////////////////////////////////srKyAAAA0NDQ0NDQ0NDQ//// x8fHAAAAx8fHfHx88PDw////////p6enAAAAx8fH////////AAAAAAAA//// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// ////////////////////////AAAAAAAA////////////////AAAAAAAA//// ////////AAAAAAAA////////p6enAAAAx8fH////////AAAAAAAA//////// AAAAAAAA////////////////////////////////AAAAAAAA//////////// ////TU1NAAAA8PDw////////////AAAAaGho//////////////////////// ////AAAAAAAA////////////AAAAAAAA////////p6enAAAAx8fH//////// AAAAAAAA////////AAAAAAAA////////////////AAAAaGho////////AAAA AAAA////////////////AAAAaGho////////AAAAAAAA2dnZ//////////// ////////////AAAAAAAA////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// ////////////////////////AAAAAAAA////////AAAAAAAA//////////// ////////////////////srKyTU1Np6en6enpAAAAAAAA////////2dnZTU1N AAAAAAAAjIyM////////////AAAAAAAA//////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// ////////////////AAAAAAAA////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////////////////////////aGho AAAA8PDw8PDwaGho////////////////AAAAAAAA////////////////AAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//// ////////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////0NDQAAAAp6en////0NDQ AAAA0NDQ////////////AAAAAAAA////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////AAAAAAAAAAAAAAAAAAAA////AAAA AAAA////////////////AAAAAAAA////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA////////////////////////////AAAAAAAA ////////////////////srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA ////////////////////AAAAAAAA////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////////////AAAAAAAA////////AAAA AAAA////////////////////////////AAAAAAAA//////////////////// ////////srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////////2dnZTU1NAAAAAAAAjIyM////////AAAAAAAA//// ////////////////////////////////////////////////AAAAAAAA//// ////////////////////////////////AAAAAAAA////////////////AAAA AAAA////////AAAAAAAA////////////////AAAAAAAA//////////////// ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA//////////////////////// ////////////////TU1NAAAA////////jIyM////aGhoAAAA8PDw0NDQsrKy ////////////srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA//////////////////////////////// ////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//// ////////srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA//////////// ////////////////////AAAAAAAA////////////////AAAAAAAA//////// ////////AAAAAAAA////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////////srKyTU1Np6en6enpAAAAAAAA////////AAAA AAAA////////////////AAAAAAAA////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA////////////////////////////AAAAAAAA ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAAAAAAAAAAAAAAfHx82dnZ//////////// ////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////// ////////x8fHfHx8AAAAAAAA////////aGhoAAAAp6en8PDw//////////// ////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////// ////AAAAAAAA////////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////TU1N AAAAAAAAAAAAAAAAAAAAAAAA////////aGhoAAAA////////////////AAAA AAAA////////////////////////////0NDQAAAAmpqa////////jIyM4eHh ////////////aGhoAAAA////////////8PDwAAAATU1N////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA//////////////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////aGhoAAAA////////////AAAATU1N//////////// TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////////////////////TU1N AAAA////////////////////////////aGhoAAAA////////////8PDwAAAA TU1N////////AAAAAAAAAAAAAAAAAAAA////aGhoAAAA////////////8PDw AAAATU1N////////AAAAAAAA////////////////AAAAAAAA////////TU1N AAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA//////////////////// ////////x8fHfHx8AAAAAAAA////////AAAAAAAA//////////////////// AAAAAAAA////////aGhoAAAA////////////8PDwAAAATU1N////////AAAA AAAA////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAA AAAA////////TU1NAAAA////////////////////////////////////x8fH fHx8AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////// aGhoAAAAp6en8PDw////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//// ////////////////////////////AAAAAAAA//////////////////////// ////////////aGhoAAAA////////////////AAAAAAAA////////aGhoAAAA ////////////8PDwAAAATU1N////////////////////////AAAAAAAA//// ////////AAAAAAAA////////////aGhoAAAA////////////8PDwAAAATU1N ////////AAAAAAAA////////////////////////////////////2dnZAAAA p6en////////0NDQmpqaAAAAjIyM////////aGho//////////////////// x8fHfHx8AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA////////////////////////////////////AAAAAAAA//////// ////////AAAAAAAA////////////AAAAAAAA////////////////////x8fH fHx8AAAAAAAA////////AAAAAAAA//////////////////////////////// AAAAAAAA////////////////aGhoAAAA////////////8PDwAAAATU1N//// ////////////////////////AAAAAAAA////////////AAAAAAAA//////// ////////////x8fHfHx8AAAAAAAA////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA////////////////AAAAAAAA////////TU1N AAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA0NDQ////8PDwfHx8AAAA2dnZ////////////AAAAAAAA//////// p6enAAAA////////////AAAAfHx8////////fHx8aGho////////////AAAA AAAA////////AAAA6enp////////6enpAAAA////////p6enAAAA//////// ////AAAAfHx8////////////////////////////////AAAAAAAA//////// ////////////////////////AAAAAAAA////////////AAAAAAAA//////// p6enAAAA////////////AAAAfHx8////////p6enAAAA////////////AAAA fHx8////////vb29AAAA2dnZ////////8PDwAAAAAAAA//////////////// ////////////jIyMAAAA4eHh////////0NDQp6en////////////vb29AAAA 6enp////////x8fHAAAAp6en////////AAAAAAAA////////////AAAAAAAA ////////AAAAAAAA6enp////////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA6enp//////////// TU1NAAAA////////////AAAAjIyM////////////p6enAAAA//////////// AAAAfHx8////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////////////////////p6enAAAA6enp////////x8fH TU1N////////vb29AAAA6enp////////x8fHAAAAp6en//////////////// ////////////////vb29AAAA6enp////////x8fHAAAAp6en////////AAAA AAAA////////////0NDQAAAAjIyM////////p6enAAAA////////////AAAA fHx8////////AAAAAAAA6enp////////////fHx8aGho////////////AAAA AAAA////////AAAAAAAA////////////////////AAAAAAAA////////vb29 AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA////////////AAAA AAAA////////////////////////////////AAAAAAAA////////////2dnZ AAAAjIyM////////p6enAAAA////////////AAAAfHx8////////p6enAAAA 6enp////////x8fHTU1N////fHx8aGho////////////AAAAAAAA//////// AAAAAAAA////////////AAAAAAAA////////////AAAA6enp////////6enp AAAA////p6enAAAA////////////AAAAfHx8//////////////////////// ////////AAAAAAAA////////////////////////////////////vb29AAAA 2dnZ////////8PDwAAAAAAAA////////vb29AAAA6enp////////x8fHAAAA p6en////////////////////////AAAAAAAA////////////AAAAAAAA//// ////////vb29AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA//// ////////////////////////////////mpqaAAAA2dnZ////////////TU1N AAAA0NDQ////////p6en0NDQ////fHx8aGho////////////AAAAAAAA//// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// ////////////////////////AAAAAAAA////////////////AAAAAAAA//// ////////AAAAAAAA////////fHx8aGho////////////AAAAAAAA//////// AAAAAAAA////////////////////////////////AAAAAAAA//////////// ////vb29AAAA6enp////////x8fHAAAAp6en//////////////////////// ////AAAAAAAA////////////AAAAAAAA////////fHx8aGho//////////// AAAAAAAA////////AAAAAAAA////////////0NDQAAAAjIyM////////AAAA AAAA////////////0NDQAAAAjIyM////////p6enAAAA////////////AAAA fHx8////////AAAAAAAA////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// 2dnZAAAAfHx8////////////AAAAAAAA////////6enpTU1Np6en////vb29 AAAA0NDQ////////fHx8AAAA6enp////0NDQAAAAaGho////////jIyM4eHh ////8PDwfHx8AAAA////////6enpTU1Np6en////vb29AAAA0NDQ//////// ////////////////////////AAAAAAAA//////////////////////////// TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////6enpTU1Np6en////vb29 AAAA0NDQ////////6enpTU1Np6en////vb29AAAA0NDQ////////////fHx8 aGho8PDw////p6enAAAAAAAA////////////////////////vb29AAAAaGho ////////////////TU1N6enp////////////TU1Nmpqa////6enpTU1NTU1N 8PDw////6enpAAAAAAAA////////4eHhAAAAAAAA////TU1NAAAAAAAAx8fH 8PDwmpqafHx8////////////////////6enpAAAAAAAA////////4eHhAAAA AAAA////////TU1NAAAAAAAAx8fH8PDwmpqafHx8vb29AAAAx8fH////p6en AAAAAAAAAAAA////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAA AAAAx8fH////4eHhAAAAaGho////////////AAAAAAAA//////////////// ////////////////////TU1NfHx8////////aGhofHx8////////////TU1N mpqa////6enpTU1NTU1N8PDw//////////////////////////////////// TU1Nmpqa////6enpTU1NTU1N8PDw////AAAAAAAAAAAAx8fH////8PDwaGho AAAA2dnZ////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAAAAAA x8fH8PDwmpqafHx8fHx8AAAA6enp////0NDQAAAAaGho////////AAAAAAAA ////////////////TU1NAAAAAAAA////////////TU1Nmpqa////6enpTU1N TU1N8PDw////TU1NAAAAAAAAx8fH////4eHhAAAAaGho//////////////// ////////////////AAAAAAAAx8fH////6enpTU1NAAAA2dnZ////////6enp TU1Np6en////vb29AAAA0NDQ////////////TU1NfHx8////////aGhofHx8 ////fHx8AAAA6enp////0NDQAAAAaGho////6enpAAAAAAAA////////4eHh AAAAAAAA////////////jIyM4eHh////8PDwfHx8AAAA////6enpTU1Np6en ////vb29AAAA0NDQ////////////////////////////////AAAAAAAA//// ////////////////////////////////////fHx8aGho8PDw////p6enAAAA AAAA////////////TU1Nmpqa////6enpTU1NTU1N8PDw//////////////// ////TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////////////TU1Nmpqa ////6enpTU1NTU1N8PDw////////AAAAAAAA//////////////////////// ////////4eHhAAAATU1N////////////////TU1NAAAA////////////4eHh aGho8PDwfHx8AAAA6enp////0NDQAAAAaGho////TU1NAAAAAAAAx8fH//// 4eHhAAAAaGho////////AAAAAAAA//////////////////////////////// ////AAAAAAAA////////////////AAAAAAAAx8fH////2dnZAAAAaGho//// ////fHx8AAAA6enp////0NDQAAAAaGho////////AAAAAAAA//////////// ////////////////////AAAAAAAA////////////////////TU1Nmpqa//// 6enpTU1NTU1N8PDw////////////////////////////AAAAAAAAx8fH//// 2dnZAAAAaGho////////fHx8AAAA6enp////0NDQAAAAaGho////AAAAAAAA AAAAx8fH////8PDwaGhoAAAA2dnZ////AAAAAAAAAAAAx8fH////8PDwaGho AAAA2dnZ////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAAAAAA x8fH////4eHhAAAAaGho//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////////AAAAAAAA//////// ////AAAAAAAA////////////6enpjIyMAAAATU1Nvb29//////////////// p6enTU1NAAAAAAAAmpqa6enp////////////jIyMAAAAmpqa6enpAAAA//// ////////6enpjIyMAAAATU1Nvb29//////////////////////////////// ////AAAAAAAA////////////////////////////6enpp6enTU1N////srKy AAAATU1N4eHh////////////6enpjIyMAAAATU1Nvb29//////////////// 6enpjIyMAAAATU1Nvb29////////////////////p6enAAAATU1N2dnZAAAA AAAA////////////////////vb29AAAAAAAAAAAAjIyM////////jIyMAAAA AAAA4eHh////////8PDwp6enAAAAAAAAmpqa6enp////////AAAAAAAAAAAA ////////AAAAAAAAAAAA////6enpsrKyTU1N////srKyAAAAmpqa//////// ////////////AAAAAAAAAAAA////////AAAAAAAAAAAA////////6enpsrKy TU1N////srKyAAAAmpqa////x8fHaGhoAAAAjIyM6enp//////////////// ////6enpjIyMAAAATU1Nvb29////////6enpp6enTU1N////srKyAAAATU1N 4eHh////////AAAAAAAAAAAAAAAAAAAA//////////////////////////// 8PDwp6enAAAAAAAAmpqa////////////////8PDwp6enAAAAAAAAmpqa6enp ////////////////////////////////////////8PDwp6enAAAAAAAAmpqa 6enp////////6enpsrKyTU1N////mpqaAAAATU1N0NDQ//////////////// 6enpjIyMAAAATU1Nvb29////////6enpsrKyTU1N////srKyAAAAmpqa//// p6enTU1NAAAAAAAAmpqa6enp////AAAAAAAAAAAAAAAAAAAA////////6enp p6enTU1N////////////8PDwp6enAAAAAAAAmpqa6enp////////6enpp6en TU1N////srKyAAAATU1N4eHh////////////////////////////////AAAA AAAA6enpjIyMAAAAaGho0NDQ////////////////6enpjIyMAAAATU1Nvb29 ////////////////8PDwp6enAAAAAAAAmpqa////////////p6enTU1NAAAA AAAAmpqa6enp////AAAAAAAAAAAA////////AAAAAAAAAAAA//////////// ////jIyMAAAAmpqa6enpAAAA////////6enpjIyMAAAATU1Nvb29//////// ////////////////////////////AAAAAAAA//////////////////////// ////////////////////p6enAAAATU1N2dnZAAAAAAAA////////////8PDw p6enAAAAAAAAmpqa6enp////////////////////////6enpp6enTU1N//// srKyAAAATU1N4eHh////////////////8PDwp6enAAAAAAAAmpqa6enp//// ////AAAAAAAAAAAAAAAAAAAA////////////////////vb29AAAAAAAAAAAA jIyM////vb29AAAAAAAAAAAAp6en////////AAAAAAAAAAAA////p6enTU1N AAAAAAAAmpqa6enp////6enpp6enTU1N////srKyAAAATU1N4eHh////AAAA AAAAAAAAAAAAAAAA////////////////////////AAAAAAAAAAAAAAAAAAAA ////////AAAAAAAA////srKyAAAAaGho6enp////////////p6enTU1NAAAA AAAAmpqa6enp////AAAAAAAAAAAAAAAAAAAA////////////////////AAAA AAAAAAAAAAAAAAAA////////////8PDwp6enAAAAAAAAmpqa6enp//////// ////////////////////////AAAAAAAA////srKyAAAAaGho6enp//////// ////p6enTU1NAAAAAAAAmpqa6enp////6enpsrKyTU1N////mpqaAAAATU1N 0NDQ////////6enpsrKyTU1N////mpqaAAAATU1N0NDQ//////////////// 6enpjIyMAAAATU1Nvb29////////6enpp6enTU1N////srKyAAAATU1N4eHh //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////0NDQAAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////0NDQAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////AAAAAAAA//////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////0NDQAAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////0NDQAAAAAAAA//////////// ////////////////////0NDQAAAAAAAA////////////////AAAAAAAA//// ////////////////////////////////////////////////////////0NDQ AAAAAAAA////////////////////////////0NDQAAAAAAAA//////////// //////////////////////////////////////////////////////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// 2dnZAAAAmpqa////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////x8fHAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////x8fHAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////AAAAAAAA//// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////x8fHAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////x8fHAAAA//////////////////////////////// ////x8fHAAAA////////////////AAAAAAAA//////////////////////// ////////////////////////////////////////x8fHAAAA//////////// ////////////////////x8fHAAAA//////////////////////////////// ////////////////////////////////////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////6enpAAAAAAAA////////8PDwfHx8TU1N6enp//////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwAAAAAAAA8PDw//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////8PDwAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////8PDwAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////8PDwAAAAAAAA8PDw//////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////8PDwAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwAAAA////////////////////////////////////8PDwAAAA//////// ////////AAAAAAAA//////////////////////////////////////////// ////////////////////8PDwAAAA//////////////////////////////// 8PDwAAAA//////////////////////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA AAAAAAAAAAAAAAAAaGhop6en8PDw////////////aGhoAAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////aGhoAAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////fHx8fHx8//////////// //////////////////////////////////////////////////////////// ////////////////////////////////aGhoAAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////// ////////////aGhoAAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////aGhoAAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// aGhoAAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////6enpp6enTU1N//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////6enpp6enTU1N//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////fHx8fHx8//////////////////////////////// //////////////////////////////////////////////////////////// ////////////6enpp6enTU1N//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////6enpp6en TU1N//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////6enpp6enTU1N//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////6enpp6enTU1N//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////mpqaAAAA mpqa//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////fHx8AAAAAAAAfHx8//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////mpqavb29//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////8PDwaGho//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA AAAAAAAAAAAAAAAA////4eHhTU1NAAAAsrKy////TU1Np6en6enp////AAAA AAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////////4eHhaGhoAAAAaGho 6enpTU1Np6en6enp////AAAA6enpjIyMAAAAjIyM//////////////////// ////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAA AAAA////////0NDQAAAAfHx86enp////////6enpmpqaAAAAAAAAp6en8PDw ////////////////////////////////////////////////TU1N2dnZ//// ////////////////6enpmpqaAAAAAAAAp6en8PDw////////////4eHhTU1N AAAAsrKy////TU1Np6en6enp////AAAAAAAAAAAATU1N//////////////// ////////////////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enp////6enp fHx8AAAAaGho0NDQ////////////////6enpfHx8AAAAaGho0NDQ//////// ////////6enpmpqaAAAAAAAAp6en8PDw////////////4eHhTU1NAAAAsrKy ////TU1Np6en6enp////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//// 0NDQAAAAfHx86enp////fHx8fHx8//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////0NDQAAAAAAAA2dnZ//////// aGhoAAAA2dnZ////x8fHAAAAAAAAaGho////6enpAAAAAAAA8PDw////8PDw AAAAAAAA6enp////////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho//// AAAAfHx84eHh////4eHhjIyM////////////////////////////6enpAAAA AAAA6enp6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////////TU1NAAAA 6enpjIyM////8PDwTU1NaGho8PDw////p6enaGho//////////////////// ////////////////////////x8fHAAAAmpqa////////////////8PDwTU1N aGho8PDw////p6enaGho////////////aGhoAAAA2dnZ////x8fHAAAAAAAA aGho////6enpAAAAAAAA////////////////////////////////////aGho AAAA0NDQ////x8fHAAAAAAAA////srKy6enpTU1NAAAAAAAAAAAAaGho6enp ////////6enpTU1NAAAAAAAAAAAAaGho6enp////////8PDwTU1NaGho8PDw ////p6enaGho////////////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho//// 6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////TU1NAAAA6enpjIyM//// fHx8fHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// mpqaAAAAx8fH////////////AAAAAAAA////////AAAA8PDw////////x8fH AAAA////////////////////////////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////p6enAAAA 0NDQ////////8PDwAAAAvb29//////////////////////////////////// ////aGhoAAAATU1N////////////////p6enAAAA0NDQ////////8PDwAAAA vb29////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////////////////////////AAAAAAAA////////////AAAA AAAA////////mpqaAAAAfHx8////////4eHhjIyM////////mpqaAAAAfHx8 ////////4eHhjIyM////////p6enAAAA0NDQ////////8PDwAAAAvb29//// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// ////AAAAAAAA////////////////x8fHaGhoAAAAjIyM//////////////// ////////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////TU1NAAAA8PDw////////////AAAA aGho////////////////////////////////////0NDQAAAAp6ensrKyx8fH ////////////TU1NAAAA8PDw////////////AAAAaGho////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA//////////////////// ////////////////p6enAAAAx8fH////////AAAAAAAA////////TU1NAAAA 6enp////////////////////////TU1NAAAA6enp//////////////////// ////TU1NAAAA8PDw////////////AAAAaGho////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA//////// 2dnZTU1NAAAAAAAAjIyM////////////////////////////////////AAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////AAAAAAAA//////////////// ////////////////////aGhoAAAA8PDw8PDwaGho////////////AAAAAAAA ////////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA//////////////////////////////////////// srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA//////////////////// ////////AAAAAAAA////////////////////////////AAAAAAAA//////// ////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// aGhoAAAA////////////////AAAAAAAA////////aGhoAAAAp6en8PDw//// ////////////////////////////////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////aGhoAAAA ////////////8PDwAAAATU1N////////////////////////////////0NDQ AAAAmpqa////////jIyM4eHh////////aGhoAAAA////////////8PDwAAAA TU1N////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////////////////////////////////////x8fHfHx8AAAA AAAA////////TU1NAAAA////////////////////////////TU1NAAAA//// ////////////////////////aGhoAAAA////////////8PDwAAAATU1N//// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////vb29AAAA2dnZ//////// 8PDwAAAAAAAA////////AAAA6enp////////6enpAAAA//////////////// ////////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////vb29AAAA6enp////////x8fHAAAA p6en////////////////////////////////jIyMAAAA4eHh////////0NDQ p6en////////vb29AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA6enp//////////////// ////////////////fHx8aGho////////////AAAAAAAA////////p6enAAAA 6enp////////x8fHTU1N////////p6enAAAA6enp////////x8fHTU1N//// ////vb29AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA////////6enp AAAAAAAA////////4eHhAAAAAAAA////////TU1NAAAAAAAAx8fH////4eHh AAAAaGho////////////////fHx8aGho8PDw////p6enAAAAAAAA//////// jIyM4eHh////8PDwfHx8AAAA////////////////////////////TU1NAAAA AAAA////TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////////AAAAAAAA ////////////////TU1Nmpqa////6enpTU1NTU1N8PDw//////////////// ////////////vb29AAAAaGho////////////////TU1N6enp////////TU1N mpqa////6enpTU1NTU1N8PDw////6enpAAAAAAAA////////4eHhAAAAAAAA ////////TU1NAAAAAAAAx8fH8PDwmpqafHx8////////////////////fHx8 AAAA6enp////0NDQAAAAaGho////////////TU1NfHx8////////aGhofHx8 ////////////TU1NfHx8////////aGhofHx8////////////TU1Nmpqa//// 6enpTU1NTU1N8PDw////6enpAAAAAAAA////////4eHhAAAAAAAA//////// TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAAA AAAAAAAA////////6enpp6enTU1N////srKyAAAATU1N4eHh//////////// ////////p6enAAAATU1N2dnZAAAAAAAA////////////jIyMAAAAmpqa6enp AAAA////////////////////////////6enpp6enTU1N////6enpp6enTU1N ////srKyAAAATU1N4eHh////////AAAAAAAAAAAAAAAAAAAA////////8PDw p6enAAAAAAAAmpqa6enp////////////////////////////vb29AAAAAAAA AAAAjIyM////////jIyMAAAAAAAA4eHh////8PDwp6enAAAAAAAAmpqa6enp ////////AAAAAAAAAAAA////////AAAAAAAAAAAA////////6enpsrKyTU1N ////srKyAAAAmpqa////////////////////////p6enTU1NAAAAAAAAmpqa 6enp////////////8PDwp6enAAAAAAAAmpqa////////////////8PDwp6en AAAAAAAAmpqa////////////////8PDwp6enAAAAAAAAmpqa6enp//////// AAAAAAAAAAAA////////AAAAAAAAAAAA////////6enpp6enTU1N////srKy AAAATU1N4eHh////AAAAAAAAAAAAAAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////0NDQAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////0NDQ AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////TU1NAAAA//////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////x8fHAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////x8fHAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////mpqaAAAA//////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////8PDwAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////8PDwAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 6enpTU1Nx8fH////4eHhaGhoaGho//////////////////////////////// //////////////////////////////////////////////////////////// aGhoAAAAAAAA//////////////////////////////////////////////// ////////////////fHx8fHx8//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////8PDwmpqaAAAAAAAA fHx82dnZ//////////////////////////////////////////////////// ////////////////////////////////////////6enpp6enTU1N//////// ////////////////////////////////////////////////////////fHx8 fHx8//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////mpqaAAAAmpqa//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////mpqaAAAA mpqa//////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// fHx8AAAAAAAAfHx8//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////fHx8AAAAAAAAfHx8//////////// //////////////////////////////////////////////////////////// ////////////////////////////////6enpAAAAAAAA6enp//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////mpqavb29 //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////mpqavb29//////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////8PDwaGho//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////8PDwaGho//////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////4eHh TU1NAAAAp6en////mpqaAAAAjIyM6enp////////////0NDQp6en//////// ////////////4eHhfHx8AAAAmpqa6enp//////////////////////////// ////////////////TU1N2dnZ////////////////////////6enpmpqaAAAA AAAAp6en8PDw////////////4eHhTU1NAAAAsrKy////TU1Np6en6enp//// ////////////////////AAAA6enpjIyMAAAAjIyM////////////0NDQAAAA fHx86enp////////4eHhTU1NAAAAp6en////mpqaAAAAjIyMAAAAAAAAAAAA AAAA////AAAAAAAAAAAAAAAA////////4eHhaGhoAAAAaGho6enpTU1Np6en 6enp////////////////////////4eHhTU1NAAAAp6en////mpqaAAAAjIyM 6enpAAAA6enpjIyMAAAAjIyM////////////////////////////////0NDQ AAAAfHx86enpAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////// 4eHhfHx8AAAAmpqa6enp////////////////////////////AAAAAAAAAAAA AAAAAAAAAAAA////4eHhTU1NAAAAp6en////mpqaAAAAjIyMAAAAAAAAAAAA AAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////AAAAAAAA AAAAAAAA////////AAAAAAAAAAAAAAAA////////////////TU1N2dnZ//// ////////////////////////////////AAAAAAAAAAAATU1N//////////// ////////4eHhfHx8AAAAmpqa6enp////////AAAAAAAA0NDQTU1NAAAAmpqa 8PDw////////AAAAAAAAAAAATU1N////////////////////4eHhfHx8AAAA mpqa6enp////////AAAA6enpjIyMAAAAjIyM////////////////4eHhfHx8 AAAAmpqa6enp////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//// ////0NDQAAAAfHx86enp////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enp 0NDQAAAAfHx86enp////////AAAAAAAAAAAAAAAA////////////////0NDQ p6en////////////////////////4eHhfHx8AAAAmpqa6enp//////////// ////////////////////////6enpmpqaAAAAAAAAp6en8PDw////////AAAA AAAAAAAAAAAAAAAAAAAA////////////////////////0NDQAAAAfHx86enp ////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////4eHhfHx8AAAA mpqa6enp////////////////////////////////////4eHhaGhoAAAAaGho 6enpTU1Np6en6enp////////4eHhfHx8AAAAmpqa6enp//////////////// 6enpfHx8AAAAaGho0NDQ////////////////4eHhfHx8AAAAmpqa6enp//// ////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enpAAAA6enpjIyMAAAAjIyM ////////////////4eHhfHx8AAAAmpqa6enp////////////////4eHhaGho AAAAaGho6enpTU1Np6en6enp////////////////////////0NDQAAAAfHx8 6enp////////6enpmpqaAAAAAAAAp6en8PDw//////////////////////// ////AAAAAAAAAAAATU1N////////////////4eHhfHx8AAAAmpqa6enp//// ////////0NDQAAAAfHx86enp////AAAAAAAAAAAATU1N////////////AAAA AAAAAAAAAAAA////////4eHhfHx8AAAAmpqa6enp//////////////////// ////0NDQp6en////////////////////////4eHhfHx8AAAAmpqa6enp//// ////////////////////////////0NDQAAAAfHx86enpAAAAAAAAAAAAAAAA ////AAAAAAAAAAAAAAAA////////////4eHhfHx8AAAAmpqa6enp//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////6enpAAAA AAAA6enp////8PDwAAAAAAAA6enp////////aGhoAAAA0NDQ////x8fHAAAA AAAA////srKy////////////aGhoaGho////////////////6enpAAAAAAAA AAAAAAAAAAAA4eHh////////////////////////////////////x8fHAAAA mpqa////////////////////8PDwTU1NaGho8PDw////p6enaGho//////// ////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho//////////////////////// AAAAfHx84eHh////4eHhjIyM////////TU1NAAAA6enpjIyM////////aGho AAAA0NDQ////x8fHAAAAAAAA////mpqaAAAAAAAA8PDw////8PDwAAAAAAAA 6enp////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho//////////////// ////////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKyAAAAfHx84eHh//// 4eHhjIyM////////////////////////////TU1NAAAA6enpjIyM6enpAAAA AAAA6enp////8PDwAAAAAAAA6enp////////6enpAAAAAAAAAAAAAAAAAAAA 4eHh////////////////////////////0NDQAAAAAAAA2dnZ////////aGho AAAA0NDQ////x8fHAAAAAAAA////mpqaAAAAAAAA8PDw////6enpAAAAAAAA 6enp////6enpAAAAAAAA6enp////////6enpAAAAAAAA6enp////////6enp AAAAAAAA6enp////////////x8fHAAAAmpqa//////////////////////// ////////////6enpAAAAAAAA////////////////////6enpAAAAAAAAAAAA AAAAAAAA4eHh////AAAAAAAAp6en////8PDwfHx8TU1N////////6enpAAAA AAAA////////////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////AAAA fHx84eHh////4eHhjIyM////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//// 6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////////TU1NAAAA6enpjIyM ////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKyTU1NAAAA6enpjIyM//// ////6enpAAAAAAAA6enp////////////////aGhoaGho//////////////// ////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////////////////// 8PDwTU1NaGho8PDw////p6enaGho////////////0NDQAAAAAAAA2dnZ//// ////////////////////////TU1NAAAA6enpjIyM////6enpAAAAAAAA6enp ////8PDwAAAAAAAA6enp////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////// ////////////////////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho//// 6enpAAAAAAAAAAAAAAAAAAAA4eHh////////6enpTU1NAAAAAAAAAAAAaGho 6enp////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////aGhoAAAA0NDQ//// x8fHAAAAAAAA////srKyAAAAfHx84eHh////4eHhjIyM////////6enpAAAA AAAAAAAAAAAAAAAA4eHh////////4eHhAAAATU1N4eHh////vb29AAAAAAAA aGho////////////////////////TU1NAAAA6enpjIyM////8PDwTU1NaGho 8PDw////p6enaGho////////////////////////////6enpAAAAAAAA//// ////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////////TU1NAAAA6enp jIyM////6enpAAAAAAAA////////////////6enpAAAAAAAA6enp////6enp AAAAAAAAAAAAAAAAAAAA4eHh////////////////////aGhoaGho//////// ////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////////// ////////TU1NAAAA6enpjIyM6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp ////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// 4eHhTU1Nx8fHvb29////////////mpqaAAAAfHx88PDw////6enpaGho//// ////////////////////////////////aGhoAAAATU1N//////////////// ////p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAAAAAA//////// ////AAAAAAAA////////////////////////////AAAA8PDw////////x8fH AAAA////////AAAAAAAA////////////////AAAAAAAA////////////AAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////mpqaAAAAx8fH ////////////AAAAAAAA////////////////////////////AAAAAAAA//// ////////AAAAAAAA////////AAAA8PDw////////x8fHAAAA//////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////mpqaAAAAfHx88PDw////6enpaGho//////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////AAAAAAAA////////////////AAAAAAAA//////////// ////aGhoAAAATU1N////////////////////////////////////////AAAA AAAA////////////////////mpqaAAAAfHx88PDw////6enpaGho////AAAA AAAA////////////2dnZAAAAsrKy////////AAAAAAAA//////////////// ////mpqaAAAAfHx88PDw////6enpaGho////AAAA8PDw////////x8fHAAAA ////////mpqaAAAAfHx88PDw////6enpaGho////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA////////////////////AAAAAAAA//// ////////////4eHhTU1Nx8fHvb29////////////////mpqaAAAAfHx88PDw ////6enpaGho////////////////////////////p6enAAAA0NDQ//////// 8PDwAAAAvb29////////////AAAAAAAA//////////////////////////// ////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//// ////mpqaAAAAfHx88PDw////6enpaGho//////////////////////////// mpqaAAAAx8fH////////////AAAAAAAA////////mpqaAAAAfHx88PDw//// 6enpaGho////////mpqaAAAAfHx8////////4eHhjIyM////////mpqaAAAA fHx88PDw////6enpaGho////AAAAAAAA////////////AAAAAAAA//////// AAAA8PDw////////x8fHAAAA////////mpqaAAAAfHx88PDw////6enpaGho ////////mpqaAAAAx8fH////////////AAAAAAAA//////////////////// ////////AAAAAAAA////////////p6enAAAA0NDQ////////8PDwAAAAvb29 ////////////////////////////AAAAAAAA////////////////mpqaAAAA fHx88PDw////6enpaGho////////AAAAAAAA////////////////AAAAAAAA ////////////////////AAAAAAAA////////mpqaAAAAfHx88PDw////6enp aGho////////////////4eHhTU1Nx8fHvb29////////////////mpqaAAAA fHx88PDw////6enpaGho////////////////////////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA////////////mpqaAAAAfHx8 8PDw////6enpaGho//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////p6en AAAAx8fH////////AAAAAAAA////////////////mpqajIyM////fHx8//// ////////AAAAAAAA2dnZ//////////////////////////////////////// ////////0NDQAAAAp6ensrKyx8fH////////////////TU1NAAAA8PDw//// ////////AAAAaGho////////AAAAAAAA////////////AAAAAAAA//////// ////////////////////////////x8fHaGhoAAAAjIyM////////AAAAAAAA ////////////////p6enAAAAx8fH////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA////////////////AAAAAAAA ////////////////////////////p6enAAAAx8fH////////AAAAAAAA//// ////////////x8fHaGhoAAAAjIyM////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA2dnZ////////////////////////////////////////////////AAAA AAAA////////////p6enAAAAx8fH////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////////AAAA AAAA////////////////AAAAAAAA////////////0NDQAAAAp6ensrKyx8fH ////////////////////////////////////AAAAAAAA//////////////// ////AAAAAAAA2dnZ////////////////////AAAAAAAA//////////////// AAAAaGho////////AAAAAAAA////////////////////AAAAAAAA2dnZ//// ////////////////////////x8fHaGhoAAAAjIyM////////AAAAAAAA2dnZ ////////////////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////p6enAAAAx8fH////////AAAAAAAA//////// AAAAAAAA////////////////////AAAAAAAA////////////////mpqajIyM ////fHx8////////////////AAAAAAAA2dnZ//////////////////////// ////////////////////TU1NAAAA8PDw////////////AAAAaGho//////// ////AAAAAAAA////////////////////////////////AAAAAAAA//////// ////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA2dnZ//// ////////////////////////////////////////AAAAAAAA//////////// ////AAAAAAAA////////AAAAAAAA2dnZ////////////////////////TU1N AAAA6enp////////////////////////AAAAAAAA2dnZ//////////////// ////p6enAAAAx8fH////////AAAAAAAA////////////////x8fHaGhoAAAA jIyM////////AAAAAAAA2dnZ////////////////////////AAAAAAAA//// ////////////AAAAAAAA////////////////////////////AAAAAAAA//// ////////TU1NAAAA8PDw////////////AAAAaGho//////////////////// ////////AAAAAAAA////////////////AAAAAAAA2dnZ//////////////// ////////AAAAAAAA////////////////AAAAAAAA//////////////////// AAAAAAAA////////AAAAAAAA2dnZ//////////////////////////////// mpqajIyM////fHx8////////////////AAAAAAAA2dnZ//////////////// ////////////////////////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA2dnZ//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////////srKyTU1Np6en6enpAAAA AAAA////////////8PDwAAAAvb29////vb290NDQ////////AAAAAAAA//// ////////////////////////////////////////////////aGhoAAAA8PDw 8PDwaGho////////////////AAAAAAAA////////////////AAAAAAAA//// ////AAAAAAAA////////////AAAAAAAA//////////////////////////// 2dnZTU1NAAAAAAAAjIyM////////////AAAAAAAA//////////////////// srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////AAAAAAAA////////////////AAAAAAAA//////////////////// ////////////srKyTU1Np6en6enpAAAAAAAA////////2dnZTU1NAAAAAAAA jIyM////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////////////////////////AAAAAAAA//////////////// srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////AAAAAAAA//////////////// AAAAAAAA////////////aGhoAAAA8PDw8PDwaGho//////////////////// ////////////////AAAAAAAA////////////////////AAAAAAAA//////// ////////////////AAAAAAAA////////////////AAAAAAAA////////AAAA AAAA////////////////////AAAAAAAA////////////////////////2dnZ TU1NAAAAAAAAjIyM////////////AAAAAAAA//////////////////////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////////srKyTU1Np6en6enpAAAAAAAA////////AAAAAAAA//////////// ////////AAAAAAAA////////////8PDwAAAAvb29////vb290NDQ//////// ////AAAAAAAA//////////////////////////////////////////////// AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//////// ////////////////////////AAAAAAAA////////////////AAAAAAAA//// ////////AAAAAAAA////////AAAAAAAA//////////////////////////// ////////////////////AAAAAAAA////////////////AAAAAAAA//////// AAAAAAAA////////////////////////////AAAAAAAA//////////////// ////////////AAAAAAAA////////////////////////////srKyTU1Np6en 6enpAAAAAAAA////////2dnZTU1NAAAAAAAAjIyM////////////AAAAAAAA ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////////////////////////AAAAAAAA////////////AAAAAAAA//// ////////////AAAAAAAA////////////////////////////AAAAAAAA//// ////////////AAAAAAAA////////////////////////////AAAAAAAA//// ////////////AAAAAAAA////////////////////AAAAAAAA////////AAAA AAAA////////////////////////////////8PDwAAAAvb29////vb290NDQ ////////////AAAAAAAA//////////////////////////////////////// ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////////////////x8fHfHx8AAAAAAAA////////////srKy AAAA2dnZ////////jIyM////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//// ////////////////////////0NDQAAAAmpqa////////jIyM4eHh//////// ////aGhoAAAA////////////8PDwAAAATU1N////////AAAAAAAA//////// ////AAAAAAAA////////////////////////////aGhoAAAAp6en8PDw//// ////////////AAAAAAAA////////////////////////////x8fHfHx8AAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////aGhoAAAA//// ////////////AAAAAAAA//////////////////////////////////////// x8fHfHx8AAAAAAAA////////aGhoAAAAp6en8PDw//////////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////////// ////////////////AAAAAAAA////////////////////////x8fHfHx8AAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////AAAAAAAA////////////////AAAAAAAA////////0NDQ AAAAmpqa////////jIyM4eHh////////////////////////////////AAAA AAAA////////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////AAAA AAAA////////////////AAAAAAAA////////AAAAAAAA//////////////// ////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////aGhoAAAAp6en8PDw//////// ////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////////////////x8fH fHx8AAAAAAAA////////AAAAAAAA////////////////////AAAAAAAA//// ////////srKyAAAA2dnZ////////jIyM////////////TU1NAAAAAAAAAAAA AAAAAAAAAAAA////////////////////////////aGhoAAAA//////////// 8PDwAAAATU1N////////////AAAAAAAA//////////////////////////// ////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//// ////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////// aGhoAAAA////////////////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAA AAAAAAAA////////TU1NAAAA////////////////////////////TU1NAAAA AAAAAAAAAAAAAAAAAAAA////////////////x8fHfHx8AAAAAAAA//////// aGhoAAAAp6en8PDw////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA ////////aGhoAAAA////////////////AAAAAAAA//////////////////// ////////AAAAAAAA////////////aGhoAAAA////////////8PDwAAAATU1N ////////////////////////////AAAAAAAA////////////////TU1NAAAA AAAAAAAAAAAAAAAAAAAA////////AAAAAAAA////////////////AAAAAAAA ////////////////////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAA AAAA////////////srKyAAAA2dnZ////////jIyM////////////TU1NAAAA AAAAAAAAAAAAAAAAAAAA////////////////////////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA////////////TU1NAAAAAAAA AAAAAAAAAAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////fHx8 aGho////////////AAAAAAAA////////////TU1NfHx88PDw////////srKy 8PDw////p6enAAAA////////////AAAAfHx8//////////////////////// ////jIyMAAAA4eHh////////0NDQp6en////////////vb29AAAA6enp//// ////x8fHAAAAp6en////////AAAAAAAA////////////AAAAAAAA//////// ////////////////////AAAA6enp////////6enpAAAA////////AAAAAAAA ////////////////fHx8aGho////////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////vb29AAAA2dnZ////////8PDwAAAAAAAA ////////////////////////////fHx8aGho////////////AAAAAAAA//// ////AAAA6enp////////6enpAAAA////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////p6en AAAA////////////AAAAfHx8////////////////////////////////AAAA AAAA////////////fHx8aGho////////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////////AAAA AAAA////////////////AAAAAAAA////////jIyMAAAA4eHh////////0NDQ p6en////////////////////////////////AAAAAAAA6enp//////////// ////p6enAAAA////////////AAAAfHx8////AAAAAAAA////////////0NDQ AAAAjIyM////////AAAAAAAA6enp////////////////p6enAAAA//////// ////AAAAfHx8////AAAA6enp////////6enpAAAA////////p6enAAAA//// ////////AAAAfHx8////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////fHx8aGho////////////AAAAAAAA//////// AAAAAAAA////////////////////AAAAAAAA////////////TU1NfHx88PDw ////////srKy8PDw////////p6enAAAA////////////AAAAfHx8//////// ////////////////////vb29AAAA6enp////////x8fHAAAAp6en//////// ////AAAAAAAA////////////////////////////////AAAAAAAA//////// ////////AAAAAAAA////////////AAAAAAAA////////p6enAAAA//////// ////AAAAfHx8////////////////////////////vb29AAAA2dnZ//////// 8PDwAAAAAAAA////////p6enAAAA////////////AAAAfHx8////////p6en AAAA6enp////////x8fHTU1N////////p6enAAAA////////////AAAAfHx8 ////fHx8aGho////////////AAAAAAAA////////AAAA6enp////////6enp AAAA////////p6enAAAA////////////AAAAfHx8////////vb29AAAA2dnZ ////////8PDwAAAAAAAA////////////////////////////AAAAAAAA//// ////////vb29AAAA6enp////////x8fHAAAAp6en//////////////////// ////////AAAAAAAA6enp////////////p6enAAAA////////////AAAAfHx8 ////////AAAAAAAA////////////////AAAAAAAA6enp//////////////// AAAAAAAA////////p6enAAAA////////////AAAAfHx8////////////TU1N fHx88PDw////////srKy8PDw////////p6enAAAA////////////AAAAfHx8 ////////////////////////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////p6enAAAA////////////AAAAfHx8//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAAx8fH////2dnZAAAAaGho////////////fHx8AAAA6enp////0NDQAAAA aGho////4eHhmpqaAAAA////////////////8PDwjIyM////6enpTU1Np6en ////vb29AAAA0NDQ////////////////////////vb29AAAAaGho//////// ////////TU1N6enp////////////TU1Nmpqa////6enpTU1NTU1N8PDw//// 6enpAAAAAAAA////////4eHhAAAAAAAA//////////////////////////// jIyM4eHh////8PDwfHx8AAAA////////AAAAAAAA////////////////fHx8 AAAA6enp////0NDQAAAAaGho////TU1NAAAAAAAAx8fH////4eHhAAAAaGho ////////////fHx8aGho8PDw////p6enAAAAAAAA//////////////////// ////////fHx8AAAA6enp////0NDQAAAAaGho////////jIyM4eHh////8PDw fHx8AAAA////////////////////////////AAAAAAAA////////////AAAA AAAAx8fH////2dnZAAAAaGho////////////6enpTU1Np6en////vb29AAAA 0NDQ////////////////////////////////AAAAAAAA////////////fHx8 AAAA6enp////0NDQAAAAaGho////TU1NAAAAAAAA0NDQ////x8fHAAAAaGho x8fH////4eHhAAAAaGho////////////TU1NAAAAAAAA//////////////// AAAAAAAA////vb29AAAAaGho////////////////TU1N6enp//////////// ////////////TU1NAAAAAAAAx8fH8PDwmpqafHx8////6enpTU1Np6en//// vb29AAAA0NDQAAAAAAAAAAAAx8fH////8PDwaGhoAAAA2dnZ////TU1NAAAA AAAAx8fH8PDwmpqafHx8////6enpTU1Np6en////vb29AAAA0NDQ////jIyM 4eHh////8PDwfHx8AAAA////////6enpTU1Np6en////vb29AAAA0NDQ//// TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////////AAAAAAAA//////// ////fHx8AAAA6enp////0NDQAAAAaGho////////AAAAAAAA//////////// ////TU1NAAAAAAAA////4eHhmpqaAAAA////////////////8PDwjIyM//// ////6enpTU1Np6en////vb29AAAA0NDQ//////////////////////////// ////TU1Nmpqa////6enpTU1NTU1N8PDw////////////AAAAAAAA//////// ////////////////////////AAAAAAAA////////////////AAAAAAAAx8fH ////2dnZAAAAaGho////////6enpTU1Np6en////vb29AAAA0NDQ//////// ////////////////////////fHx8aGho8PDw////p6enAAAAAAAA//////// 6enpTU1Np6en////vb29AAAA0NDQ////////////TU1NfHx8////////aGho fHx8////////6enpTU1Np6en////vb29AAAA0NDQ////fHx8AAAA6enp//// 0NDQAAAAaGho////////jIyM4eHh////8PDwfHx8AAAA////////6enpTU1N p6en////vb29AAAA0NDQ////////////fHx8aGho8PDw////p6enAAAAAAAA ////////////////////////////AAAAAAAA////////////////TU1Nmpqa ////6enpTU1NTU1N8PDw////////////////////////TU1NAAAAAAAAx8fH 8PDwmpqafHx86enpTU1Np6en////vb29AAAA0NDQ////////AAAAAAAA//// ////////TU1NAAAAAAAAx8fH8PDwmpqafHx8TU1NAAAAAAAA////////6enp TU1Np6en////vb29AAAA0NDQ////4eHhmpqaAAAA////////////////8PDw jIyM////////6enpTU1Np6en////vb29AAAA0NDQ//////////////////// ////////AAAAAAAA////////////AAAAAAAAx8fH////2dnZAAAAaGho//// ////////6enpTU1Np6en////vb29AAAA0NDQ//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA////srKyAAAAaGho 6enp////////////////p6enTU1NAAAAAAAAmpqa6enpvb29AAAAAAAAAAAA AAAA4eHh////////AAAAAAAAAAAA////6enpjIyMAAAATU1Nvb29//////// ////////////////vb29AAAAAAAAAAAAjIyM////////jIyMAAAAAAAA4eHh ////////8PDwp6enAAAAAAAAmpqa6enp////////AAAAAAAAAAAA//////// AAAAAAAAAAAA////////////////////////////////jIyMAAAAmpqa6enp AAAA////AAAAAAAAAAAAAAAAAAAA////////////p6enTU1NAAAAAAAAmpqa 6enp////6enpp6enTU1N////srKyAAAATU1N4eHh////////////////p6en AAAATU1N2dnZAAAAAAAA////////////////////////////////p6enTU1N AAAAAAAAmpqa6enp////////////jIyMAAAAmpqa6enpAAAA//////////// ////////////AAAAAAAAAAAAAAAAAAAA////AAAAAAAA////srKyAAAAaGho 6enp////////////////6enpjIyMAAAATU1Nvb29//////////////////// ////////AAAAAAAAAAAAAAAAAAAAAAAA////////p6enTU1NAAAAAAAAmpqa 6enp////6enpp6enTU1N////srKyAAAAaGho4eHh////p6enAAAAaGho4eHh ////////////6enpp6enTU1N////////////////AAAAAAAAvb29AAAAAAAA AAAAjIyM////////jIyMAAAAAAAA4eHh////////////////////6enpsrKy TU1N////srKyAAAAmpqa////////6enpjIyMAAAATU1Nvb29////6enpsrKy TU1N////mpqaAAAATU1N0NDQ////////6enpsrKyTU1N////srKyAAAAmpqa ////////6enpjIyMAAAATU1Nvb29////////////jIyMAAAAmpqa6enpAAAA ////////////6enpjIyMAAAATU1Nvb29////////6enpp6enTU1N////srKy AAAATU1N4eHh////////AAAAAAAAAAAAAAAAAAAA////////p6enTU1NAAAA AAAAmpqa6enp////AAAAAAAAAAAAAAAAAAAA////////6enpp6enTU1Nvb29 AAAAAAAAAAAAAAAA4eHh////////AAAAAAAAAAAA////////6enpjIyMAAAA TU1Nvb29////////////////////////////////////8PDwp6enAAAAAAAA mpqa6enp////////AAAAAAAAAAAAAAAAAAAAAAAA//////////////////// AAAAAAAAAAAAAAAAAAAA////////AAAAAAAA////srKyAAAAaGho6enp//// ////////6enpjIyMAAAATU1Nvb29//////////////////////////////// ////////p6enAAAATU1N2dnZAAAAAAAA////////////6enpjIyMAAAATU1N vb29////////////////8PDwp6enAAAAAAAAmpqa////////////////6enp jIyMAAAATU1Nvb29////////////p6enTU1NAAAAAAAAmpqa6enp//////// ////jIyMAAAAmpqa6enpAAAA////////////6enpjIyMAAAATU1Nvb29//// ////////////////p6enAAAATU1N2dnZAAAAAAAA//////////////////// ////AAAAAAAAAAAAAAAAAAAA////////8PDwp6enAAAAAAAAmpqa6enp//// ////////////////////////6enpsrKyTU1N////srKyAAAAmpqa////6enp jIyMAAAATU1Nvb29////////AAAAAAAAAAAAAAAAAAAA////6enpsrKyTU1N ////srKyAAAAmpqa6enpp6enTU1N////////////6enpjIyMAAAATU1Nvb29 ////vb29AAAAAAAAAAAAAAAA4eHh////////AAAAAAAAAAAA////////6enp jIyMAAAATU1Nvb29////////////////////////////AAAAAAAAAAAAAAAA AAAA////AAAAAAAA////srKyAAAAaGho6enp////////////////6enpjIyM AAAATU1Nvb29//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////0NDQAAAAAAAA //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////0NDQAAAA AAAA////////////AAAAAAAA//////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 0NDQAAAAAAAA////////////////////////////////////////////0NDQ AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA////////////////////////////0NDQAAAAAAAA//////// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA////////////////////////0NDQAAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////0NDQAAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////0NDQAAAAAAAA////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////x8fHAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////x8fHAAAA////////////AAAA AAAA//////////////////////////////////////////////////////// ////////////////////////////////////TU1NAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////x8fHAAAA//////// ////////////////////////////////////////x8fHAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////TU1NAAAA//////// ////////////////////////x8fHAAAA////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// ////////////////////////////////////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA ////////////////////////////x8fHAAAA//////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////x8fHAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////x8fHAAAA////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////8PDwAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////8PDwAAAA////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// ////////////////mpqaAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////8PDwAAAA//////////////////////////// ////////////////////8PDwAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////mpqaAAAA//////////////////////////// ////8PDwAAAA////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// ////////8PDwAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////8PDwAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////8PDwAAAA//// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////aGhoAAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////aGhoAAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////aGhoAAAAAAAA//////////////////////////////////// ////////////////////////////////////////////////////////6enp TU1Nx8fH////4eHhaGhoaGho//////////////////////////////////// ////////////////////////////////////////////////////////fHx8 fHx8////////////aGhoAAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////fHx8fHx8//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////6enpTU1Nx8fH////4eHhaGhoaGho//////////////////////////// ////aGhoAAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// aGhoAAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////aGhoAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// fHx8fHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////aGhoAAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////6enpp6en TU1N//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////6enpp6enTU1N//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////6enpp6en TU1N//////////////////////////////////////////////////////// ////////////////////////////////////////8PDwmpqaAAAAAAAAfHx8 2dnZ//////////////////////////////////////////////////////// ////////////////////////////////////fHx8fHx8////////////6enp p6enTU1N//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////fHx8fHx8//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////8PDwmpqaAAAA AAAAfHx82dnZ////////////////////////////////6enpp6enTU1N//// //////////////////////////////////////////////////////////// ////////////////////////////////////////6enpp6enTU1N//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////6enpp6enTU1N //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////fHx8fHx8//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////6enpp6enTU1N//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////mpqaAAAAmpqa//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////mpqaAAAAmpqa//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAAAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////fHx8AAAA AAAAfHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////vb292dnZ//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// fHx8AAAAAAAAfHx8//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////6enpAAAAAAAA6enp //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////mpqavb29//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////x8fHx8fH//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////mpqavb29 //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////8PDwaGho//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////TU1N//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////8PDwaGho//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 6enpfHx8AAAAaGho0NDQ////////////////6enpmpqaAAAAAAAAp6en8PDw ////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA////////AAAAAAAAAAAAAAAA////////4eHhaGhoAAAAaGho6enp TU1Np6en6enp////////4eHhfHx8AAAAmpqa6enp////////AAAAAAAAAAAA AAAA////AAAAAAAAAAAAAAAA////////0NDQAAAAfHx86enp////AAAAAAAA AAAAAAAA////////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enpAAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////////0NDQAAAAfHx86enp//////// ////////TU1N2dnZ////////////////////////////////////AAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////////////4eHhfHx8AAAAmpqa6enp ////AAAAAAAAAAAATU1N////////////////////4eHhfHx8AAAAmpqa6enp ////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAA AAAA////////fHx8fHx8////////////////////////////AAAAAAAAAAAA AAAAAAAAAAAA////////AAAAAAAAAAAAAAAAAAAAAAAA////////6enpmpqa AAAAAAAAp6en8PDw////////////////////0NDQfHx8//////////////// 2dnZaGho////////////////////4eHhfHx8AAAAmpqa6enp//////////// ////////////0NDQp6en////////////////////////4eHhfHx8AAAAmpqa 6enp////////AAAAAAAAAAAATU1N////////////fHx8aGhoTU1N//////// ////////////////AAAAAAAAAAAAAAAAAAAAAAAA//////////////////// ////////////////0NDQfHx8////////////////2dnZaGho//////////// ////////6enpmpqaAAAAAAAAp6en8PDw////////////4eHhTU1NAAAAsrKy ////TU1Np6en6enp////////AAAAAAAAAAAAAAAA////////4eHhaGhoAAAA aGho6enpTU1Np6en6enp////////////////////////AAAAAAAAAAAAAAAA ////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////4eHhAAAAAAAAAAAA ////////////4eHhfHx8AAAAmpqa6enp//////////////////////////// ////0NDQAAAAfHx86enp////////6enpmpqaAAAAAAAAp6en8PDw//////// ////////////////////////AAAA6enpjIyMAAAAjIyM//////////////// 4eHhfHx8AAAAmpqa6enp////////////////4eHhfHx8AAAAmpqa6enp//// AAAAAAAAAAAAAAAA////4eHhAAAAAAAAAAAA//////////////////////// ////////////////TU1N2dnZ////////////////////////6enpmpqaAAAA AAAAp6en8PDw////////////4eHhTU1NAAAAsrKy////TU1Np6en6enpAAAA AAAAAAAATU1N////////////////////////////////////AAAAAAAA0NDQ TU1NAAAAmpqa8PDw////////////////4eHhfHx8AAAAmpqa6enp////AAAA AAAAAAAATU1N////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA ////AAAAAAAAAAAAAAAA////////AAAAAAAAAAAAAAAA////////AAAA6enp jIyMAAAAjIyM////////AAAA6enpjIyMAAAAjIyM////////////AAAAAAAA AAAAAAAA////////////6enpmpqaAAAAAAAAp6en8PDw////////AAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////////////////////////0NDQAAAA fHx86enp////////////6enpmpqaAAAAAAAAp6en8PDw//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////6enpTU1NAAAAAAAAAAAAaGho 6enp////////8PDwTU1NaGho8PDw////p6enaGho////////6enpAAAAAAAA 8PDw////8PDwAAAAAAAA6enp////0NDQAAAAAAAA2dnZ////////////6enp AAAAAAAA6enp////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho////6enp AAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAAAAAA8PDw////8PDwAAAAAAAA 6enp////////TU1NAAAA6enpjIyM////6enpAAAAAAAA6enp////////aGho AAAA0NDQ////x8fHAAAAAAAA////srKy6enpAAAAAAAA6enp////6enpAAAA AAAA6enp////////TU1NAAAA6enpjIyM////////////x8fHAAAAmpqa//// ////////////////////////////////6enpAAAAAAAA6enp////8PDwAAAA AAAA6enp////////6enpAAAAAAAAAAAAAAAAAAAA4eHh6enpAAAAAAAA//// ////////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////////6enpAAAA AAAA6enp6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////////fHx8fHx8 ////////////////////////////////8PDwAAAAAAAA8PDw//////////// ////8PDwAAAAAAAA8PDw////////8PDwTU1NaGho8PDw////p6enaGho//// ////////////////fHx8AAAA0NDQ////////////p6enAAAA2dnZ//////// ////6enpAAAAAAAAAAAAAAAAAAAA4eHh////////////////////aGhoaGho ////////////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAA AAAA////////////////jIyMAAAA0NDQ//////////////////////////// 8PDwAAAAAAAA8PDw////////////////////////////////////////fHx8 AAAA0NDQ////////////p6enAAAA2dnZ////////////8PDwTU1NaGho8PDw ////p6enaGho////////////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho//// ////6enpAAAAAAAA6enp////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho ////////////////////////6enpAAAAAAAA6enp////////6enpAAAAAAAA 6enp6enpAAAAAAAA8PDw////////fHx8TU1N8PDw////////6enpAAAAAAAA AAAAAAAAAAAA4eHh////////////////////////////TU1NAAAA6enpjIyM ////8PDwTU1NaGho8PDw////p6enaGho//////////////////////////// ////AAAAfHx84eHh////4eHhjIyM////////6enpAAAAAAAAAAAAAAAAAAAA 4eHh////////6enpAAAAAAAAAAAAAAAAAAAA4eHh6enpAAAAAAAA8PDw//// ////fHx8TU1N8PDw////////////////////////////////////x8fHAAAA mpqa////////////////////8PDwTU1NaGho8PDw////p6enaGho//////// ////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho6enpAAAAAAAA//////////// ////////////////////////////AAAAAAAAp6en////8PDwfHx8TU1N//// ////////6enpAAAAAAAAAAAAAAAAAAAA4eHh6enpAAAAAAAA//////////// ////6enpAAAAAAAA8PDw////6enpAAAAAAAA6enp////6enpAAAAAAAA6enp ////////6enpAAAAAAAA6enp////////AAAAfHx84eHh////4eHhjIyM//// AAAAfHx84eHh////4eHhjIyM////////6enpAAAAAAAA6enp////////8PDw TU1NaGho8PDw////p6enaGho////////6enpAAAAAAAA8PDw////8PDwAAAA AAAA6enp////////////////////////TU1NAAAA6enpjIyM////////8PDw TU1NaGho8PDw////p6enaGho//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////mpqaAAAAfHx8////////4eHhjIyM////////p6enAAAA 0NDQ////////8PDwAAAAvb29////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////////AAAAAAAA////////mpqa AAAAx8fH////////////AAAAAAAA////////mpqaAAAAfHx88PDw////6enp aGho////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////////aGhoAAAATU1N//////////////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////mpqa AAAAfHx88PDw////6enpaGho////AAAAAAAA////////////////////mpqa AAAAfHx88PDw////6enpaGho////////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA//////////////////////////////////////// ////////////////AAAAAAAA////////////////////////AAAAAAAA//// ////////p6enAAAA0NDQ////////8PDwAAAAvb29////////////8PDwAAAA mpqajIyM////////////AAAATU1NjIyM////////////mpqaAAAAfHx88PDw ////6enpaGho////////////////4eHhTU1Nx8fHvb29//////////////// mpqaAAAAfHx88PDw////6enpaGho////////AAAAAAAA//////////////// ////////////////////////////////////////////AAAAAAAA//////// ////////////////////////////////8PDwAAAAmpqajIyM//////////// AAAATU1NjIyM////////////p6enAAAA0NDQ////////8PDwAAAAvb29//// ////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA//// ////mpqaAAAAx8fH////////////AAAAAAAA//////////////////////// ////////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//// ////fHx8TU1N6enp////////////mpqaAAAAfHx88PDw////6enpaGho//// ////////////////////////AAAAAAAA////////////p6enAAAA0NDQ//// ////8PDwAAAAvb29////////////////////////////AAAA8PDw//////// x8fHAAAA////////mpqaAAAAfHx88PDw////6enpaGho////////mpqaAAAA fHx88PDw////6enpaGho////AAAAAAAA////////fHx8TU1N6enp//////// ////////////////////////////////aGhoAAAATU1N//////////////// ////p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA//////////////////////////////// ////////AAAAAAAA////////////2dnZAAAAsrKy////////mpqaAAAAfHx8 8PDw////6enpaGho////AAAAAAAA////////////////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA ////////////AAAA8PDw////////x8fHAAAA////AAAA8PDw////////x8fH AAAA////////////AAAAAAAA////////////p6enAAAA0NDQ////////8PDw AAAAvb29////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////AAAAAAAA////////////////p6enAAAA0NDQ////////8PDw AAAAvb29//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////TU1N AAAA6enp////////////////////////TU1NAAAA8PDw////////////AAAA aGho////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////////AAAAAAAA////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA2dnZ////////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////////AAAA AAAA////////////p6enAAAAx8fH////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// 0NDQAAAAp6ensrKyx8fH////////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA2dnZ//////////// ////////AAAAAAAA////////////////////AAAAAAAA2dnZ//////////// ////////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////////////////////////////////////////////////////AAAA AAAA////////////////////////AAAAAAAA////////////TU1NAAAA8PDw ////////////AAAAaGho////////////srKyAAAA0NDQ0NDQ0NDQ////x8fH AAAAx8fHfHx88PDw////////AAAAAAAA2dnZ//////////////////////// ////////mpqajIyM////fHx8////////////////AAAAAAAA2dnZ//////// ////////////////AAAAAAAA//////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// ////////////srKyAAAA0NDQ0NDQ0NDQ////x8fHAAAAx8fHfHx88PDw//// ////TU1NAAAA8PDw////////////AAAAaGho////////AAAAAAAA//////// ////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////// ////////AAAAAAAA////////////////////////////////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA////mpqaAAAA0NDQ//////// ////////AAAAAAAA2dnZ//////////////////////////////////////// ////AAAAAAAA////////////TU1NAAAA8PDw////////////AAAAaGho//// ////////////////////////////////x8fHaGhoAAAAjIyM////////AAAA AAAA2dnZ////////////////////////AAAAAAAA2dnZ//////////////// ////AAAAAAAA////mpqaAAAA0NDQ//////////////////////////////// ////////0NDQAAAAp6ensrKyx8fH////////////////TU1NAAAA8PDw//// ////////AAAAaGho////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA////////////////////////////////////////AAAAAAAA//// ////////////AAAAaGho////////AAAAAAAA2dnZ//////////////////// AAAAAAAA////////////////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////////AAAAAAAA//////////////////// x8fHaGhoAAAAjIyM////////////x8fHaGhoAAAAjIyM////////////AAAA AAAA////////////TU1NAAAA8PDw////////////AAAAaGho////////AAAA AAAA////////////AAAAAAAA////////////////////////////AAAAAAAA ////////////////TU1NAAAA8PDw////////////AAAAaGho//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA//////////////////// AAAAAAAA////////AAAAAAAA////////////////AAAAAAAA////////AAAA AAAA////////////////////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////AAAAAAAA//////////////// srKyTU1Np6en6enpAAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////aGhoAAAA8PDw8PDwaGho ////////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////////////AAAAAAAA//// ////////////////AAAAAAAA////////////////////////////////AAAA AAAA////////AAAAAAAA////////////AAAAAAAA//////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA ////////////TU1NAAAA////////jIyM////aGhoAAAA8PDw0NDQsrKy//// ////AAAAAAAA////////////////////////////////8PDwAAAAvb29//// vb290NDQ////////////AAAAAAAA////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// ////AAAAAAAA////////////////////////////////////////TU1NAAAA ////////jIyM////aGhoAAAA8PDw0NDQsrKy////////AAAAAAAA//////// ////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// ////////AAAAAAAA////////AAAAAAAA////////////////AAAAAAAA//// ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////AAAAAAAAp6enAAAAvb29////////////////////AAAAAAAA//// ////////////////////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////////////AAAAAAAA//////////////////////// ////2dnZTU1NAAAAAAAAjIyM////////////AAAAAAAA//////////////// ////////////AAAAAAAA////////////////////////AAAAAAAAp6enAAAA vb29////////////////////////////////////////////aGhoAAAA8PDw 8PDwaGho////////////////AAAAAAAA////////////////AAAAAAAA//// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////AAAAAAAA////////////////////////AAAAAAAA//////////// ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////AAAAAAAA////////////2dnZTU1NAAAAAAAAjIyM//////// 2dnZTU1NAAAAAAAAjIyM////////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////////////////////AAAAAAAA////////////////AAAA AAAA////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////TU1NAAAA////////////////////////////aGhoAAAA ////////////8PDwAAAATU1N////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////////AAAAAAAA////////aGho AAAA////////////////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAA AAAA////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////AAAAAAAA////////////////////////x8fHfHx8AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////0NDQAAAAmpqa////////jIyM4eHh//////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////TU1N AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAA////////////////////TU1N AAAAAAAAAAAAAAAAAAAAAAAA////////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA//////////////////////////////////////// ////////////////AAAAAAAA////////////////////////AAAAAAAA//// ////////aGhoAAAA////////////8PDwAAAATU1N////////2dnZAAAAp6en ////////0NDQmpqaAAAAjIyM////////aGho////////TU1NAAAAAAAAAAAA AAAAAAAAAAAA////////////srKyAAAA2dnZ////////jIyM//////////// TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA//////////////// ////////////////////////////////////////////AAAAAAAA//////// ////////////////////////////2dnZAAAAp6en////////0NDQmpqaAAAA jIyM////////aGho////////aGhoAAAA////////////8PDwAAAATU1N//// ////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA//// ////aGhoAAAA////////////////AAAAAAAA//////////////////////// ////////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA0NDQ TU1N////////////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//// ////////////////////////AAAAAAAA////////////aGhoAAAA//////// ////8PDwAAAATU1N////////////////////////////aGhoAAAAp6en8PDw ////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////TU1NAAAA AAAAAAAAAAAAAAAAAAAA////AAAAAAAA0NDQTU1N//////////////////// ////////////////////////0NDQAAAAmpqa////////jIyM4eHh//////// ////aGhoAAAA////////////8PDwAAAATU1N////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA//////////////////////////////// ////////AAAAAAAA////////////////AAAAAAAA////////TU1NAAAAAAAA AAAAAAAAAAAAAAAA////AAAAAAAA////////////////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA ////////////aGhoAAAAp6en8PDw////////////aGhoAAAAp6en8PDw//// ////////////////AAAAAAAA////////////aGhoAAAA////////////8PDw AAAATU1N////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////AAAAAAAA////////////////aGhoAAAA////////////8PDw AAAATU1N//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////p6en AAAA6enp////////x8fHTU1N////////vb29AAAA6enp////////x8fHAAAA p6en////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////////AAAAAAAA////////vb29AAAA2dnZ////////8PDw AAAAAAAA////////p6enAAAA////////////AAAAfHx8////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////////AAAA AAAA////////////fHx8aGho////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////jIyM AAAA4eHh////////0NDQp6en////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////p6enAAAA////////////AAAA fHx8////AAAAAAAA6enp////////////////p6enAAAA////////////AAAA fHx8////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////////////////////////////////////////////////////AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////vb29AAAA6enp ////////x8fHAAAAp6en////////mpqaAAAA2dnZ////////////TU1NAAAA 0NDQ////////p6en0NDQ////p6enAAAA////////////AAAAfHx8//////// ////TU1NfHx88PDw////////srKy8PDw////////p6enAAAA//////////// AAAAfHx8////////AAAAAAAA6enp//////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// ////////mpqaAAAA2dnZ////////////TU1NAAAA0NDQ////////p6en0NDQ ////vb29AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA//////// ////AAAAAAAA////////////////AAAAAAAA////////vb29AAAA2dnZ//// ////8PDwAAAAAAAA////////////////////////////////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA////4eHhjIyM6enp//////// ////////p6enAAAA////////////AAAAfHx8//////////////////////// ////AAAAAAAA////////////vb29AAAA6enp////////x8fHAAAAp6en//// ////////////////////////AAAA6enp////////6enpAAAA////////p6en AAAA////////////AAAAfHx8////////p6enAAAA////////////AAAAfHx8 ////AAAAAAAA////4eHhjIyM6enp//////////////////////////////// ////jIyMAAAA4eHh////////0NDQp6en////////////vb29AAAA6enp//// ////x8fHAAAAp6en////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA6enp////////////////////////////////////AAAAAAAA//// ////////0NDQAAAAjIyM////////p6enAAAA////////////AAAAfHx8//// AAAAAAAA6enp////////////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////////AAAAAAAA////////////AAAA6enp ////////6enpAAAA////AAAA6enp////////6enpAAAA////////////AAAA AAAA////////////vb29AAAA6enp////////x8fHAAAAp6en////////AAAA AAAA////////////AAAAAAAA////////////////////////////AAAAAAAA ////////////////vb29AAAA6enp////////x8fHAAAAp6en//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////TU1NfHx8////////aGho fHx8////////////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1NAAAAAAAA x8fH////4eHhAAAAaGho////////////AAAAAAAA////////////////TU1N AAAAAAAA////////////fHx8aGho8PDw////p6enAAAAAAAA////////6enp TU1Np6en////vb29AAAA0NDQ////TU1NAAAAAAAAx8fH////4eHhAAAAaGho ////////////AAAAAAAA////////////TU1NAAAAAAAA////////////fHx8 AAAA6enp////0NDQAAAAaGho////////////AAAAAAAA////////TU1NAAAA AAAA////////////AAAAAAAA////////vb29AAAAaGho//////////////// TU1N6enp////////////////////////////AAAAAAAAx8fH////2dnZAAAA aGho////////////6enpTU1Np6en////vb29AAAA0NDQTU1NAAAAAAAAx8fH 8PDwmpqafHx8////6enpTU1Np6en////vb29AAAA0NDQ////////TU1NAAAA AAAA////TU1NAAAAAAAAx8fH////4eHhAAAAaGho//////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////AAAAAAAA////////////////TU1Nmpqa////6enpTU1NTU1N8PDw ////4eHhAAAATU1N////////////////TU1NAAAA////////////4eHhaGho 8PDw6enpTU1Np6en////vb29AAAA0NDQ////4eHhmpqaAAAA//////////// ////8PDwjIyM////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAA AAAAx8fH8PDwmpqafHx8//////////////////////////////////////// ////AAAAAAAA////////////////////////////////4eHhAAAATU1N//// ////////////TU1NAAAA////////////4eHhaGho8PDw////TU1Nmpqa//// 6enpTU1NTU1N8PDw////6enpAAAAAAAA////////4eHhAAAAAAAA//////// ////////AAAAAAAA////////////fHx8aGho8PDw////p6enAAAAAAAA//// ////////////////////////////AAAAAAAA////////////TU1NAAAAAAAA ////////AAAAAAAA////////8PDwjIyM0NDQ////////////6enpTU1Np6en ////vb29AAAA0NDQ////////////////////////////AAAAAAAA//////// ////////TU1Nmpqa////6enpTU1NTU1N8PDw//////////////////////// ////jIyM4eHh////8PDwfHx8AAAA////////6enpTU1Np6en////vb29AAAA 0NDQ////////6enpTU1Np6en////vb29AAAA0NDQ////AAAAAAAA//////// 8PDwjIyM0NDQ////////////////////////////vb29AAAAaGho//////// ////////TU1N6enp////////////TU1Nmpqa////6enpTU1NTU1N8PDw//// 6enpAAAAAAAA////////4eHhAAAAAAAA////TU1NAAAAAAAAx8fH8PDwmpqa fHx8////////////////////AAAAAAAAAAAAx8fH////8PDwaGhoAAAA2dnZ ////////6enpTU1Np6en////vb29AAAA0NDQTU1NAAAAAAAAx8fH8PDwmpqa fHx8TU1NAAAAAAAA0NDQ////x8fHAAAAaGhox8fH////4eHhAAAAaGho//// ////////TU1NAAAAAAAA////////////jIyM4eHh////8PDwfHx8AAAA//// jIyM4eHh////8PDwfHx8AAAA////////TU1NAAAAAAAA//////////////// TU1Nmpqa////6enpTU1NTU1N8PDw////TU1NAAAAAAAAx8fH////4eHhAAAA aGho////////////////////////////AAAAAAAA//////////////////// TU1Nmpqa////6enpTU1NTU1N8PDw//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////8PDwp6enAAAAAAAAmpqa////////////////8PDw p6enAAAAAAAAmpqa6enp////////6enpp6enTU1N////srKyAAAATU1N4eHh ////AAAAAAAAAAAAAAAAAAAAAAAA////////6enpp6enTU1N//////////// ////p6enAAAATU1N2dnZAAAAAAAA////////////6enpjIyMAAAATU1Nvb29 ////////6enpp6enTU1N////srKyAAAATU1N4eHh////////AAAAAAAAAAAA AAAAAAAA////6enpp6enTU1N////////////////p6enTU1NAAAAAAAAmpqa 6enp////////////AAAAAAAA////////6enpp6enTU1N////////AAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAjIyM////////jIyMAAAAAAAA4eHh//////// ////////////////AAAAAAAA////srKyAAAAaGho6enp//////////////// 6enpjIyMAAAATU1Nvb29////6enpsrKyTU1N////srKyAAAAmpqa//////// 6enpjIyMAAAATU1Nvb29////////////6enpp6enTU1N////6enpp6enTU1N ////srKyAAAATU1N4eHh//////////////////////////////////////// ////////////////AAAAAAAA////////////////////////AAAAAAAA//// ////////////8PDwp6enAAAAAAAAmpqa6enp////vb29AAAAAAAAAAAAjIyM ////vb29AAAAAAAAAAAAp6en////////AAAAAAAAAAAA////6enpjIyMAAAA TU1Nvb29////vb29AAAAAAAAAAAAAAAA4eHh////////AAAAAAAAAAAA//// ////6enpjIyMAAAATU1Nvb29////////6enpsrKyTU1N////srKyAAAAmpqa ////////////////////////////////////////////AAAAAAAA//////// ////////////////////vb29AAAAAAAAAAAAjIyM////vb29AAAAAAAAAAAA p6en////////AAAAAAAAAAAA////8PDwp6enAAAAAAAAmpqa6enp//////// AAAAAAAAAAAA////////AAAAAAAAAAAA////////////////AAAAAAAA//// ////////////p6enAAAATU1N2dnZAAAAAAAA//////////////////////// ////////AAAAAAAA////////////6enpp6enTU1N////////AAAAAAAA//// ////srKyAAAAAAAAAAAA////////////6enpjIyMAAAATU1Nvb29//////// ////////////////////AAAAAAAAAAAAAAAAAAAA////////8PDwp6enAAAA AAAAmpqa6enp////////////////////////////////////jIyMAAAAmpqa 6enpAAAA////////////6enpjIyMAAAATU1Nvb29////////////////6enp jIyMAAAATU1Nvb29////////AAAAAAAA////////srKyAAAAAAAAAAAA//// ////////////////vb29AAAAAAAAAAAAjIyM////////jIyMAAAAAAAA4eHh ////////8PDwp6enAAAAAAAAmpqa6enp////////AAAAAAAAAAAA//////// AAAAAAAAAAAA////6enpsrKyTU1N////srKyAAAAmpqa//////////////// ////6enpsrKyTU1N////mpqaAAAATU1N0NDQ////////////////6enpjIyM AAAATU1Nvb29////6enpsrKyTU1N////srKyAAAAmpqa6enpp6enTU1N//// srKyAAAAaGho4eHh////p6enAAAAaGho4eHh////////////6enpp6enTU1N ////////////////jIyMAAAAmpqa6enpAAAA////////jIyMAAAAmpqa6enp AAAA////////6enpp6enTU1N////////////////8PDwp6enAAAAAAAAmpqa 6enp////////6enpp6enTU1N////srKyAAAATU1N4eHh//////////////// ////////AAAAAAAAAAAAAAAAAAAA////////////8PDwp6enAAAAAAAAmpqa 6enp//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// ////////////////////////////0NDQAAAAAAAA//////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////////////0NDQAAAAAAAA//////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////AAAAAAAA//////////////////////// ////////AAAAAAAA////////////////////////////////AAAAAAAA//// ////////////////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// 0NDQAAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////0NDQAAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////TU1NAAAA//////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// ////////////x8fHAAAA//////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////////////x8fHAAAA//////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////AAAAAAAA////////////////////////////////AAAAAAAA//// ////////////////////////////AAAAAAAA//////////////////////// ////////AAAAAAAA//////////////////////////////////////////// ////////////////////////////////////////////x8fHAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////x8fHAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////mpqaAAAA//////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// ////////////////////////////////////////////////////8PDwAAAA //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////////////////////////8PDw AAAA//////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////8PDwAAAAAAAA8PDw////////////////8PDwAAAAAAAA8PDw //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////8PDwAAAAAAAA8PDw//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////AAAAAAAA//// ////////////////////////////AAAAAAAA//////////////////////// ////////AAAAAAAA////////////////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// ////////////////////////8PDwAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////8PDwAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////6enpTU1N x8fH////4eHhaGhoaGhofHx8fHx8////////////////////////////aGho AAAAAAAA//////////////////////////////////////////////////// ////////////////////////////////////////////////////////fHx8 fHx8////////////////////////////////////////////////aGhoAAAA AAAA////////////fHx8fHx8//////////////////////////////////// ////////////////////////////////////////////////////aGhoAAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////fHx8fHx8//////////////////////////////////// ////////////////////////////////////////////////AAAAAAAAAAAA AAAAAAAAAAAA////////AAAAAAAAAAAAAAAAAAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAAAAAAAAAAAAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////aGhoAAAAAAAA//////////////////////// ////aGhoAAAAAAAA////////////////////////////aGhoAAAAAAAA//// ////////////fHx8fHx8////aGhoAAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// aGhoAAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////fHx8fHx8//////////////////// ////////////////////////////////////////////////////////fHx8 fHx8//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////8PDwmpqaAAAAAAAAfHx82dnZ fHx8fHx8////////////////////////////6enpp6enTU1N//////////// //////////////////////////////////////////////////////////// ////////////////////////////////////fHx8fHx8//////////////// ////////////////////////////////6enpp6enTU1N////////////fHx8 fHx8//////////////////////////////////////////////////////// ////////////////////////////////6enpp6enTU1N//////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////fHx8 fHx8//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////6enpp6enTU1N////////////////////////////6enpp6enTU1N//// ////////////////////////6enpp6enTU1N////////////////fHx8fHx8 ////6enpp6enTU1N//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////6enpp6enTU1N//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////fHx8fHx8//////////////////////////////////////// ////////////////////////////////////fHx8fHx8//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////mpqaAAAAmpqa//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////AAAAAAAAAAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////mpqaAAAA mpqa//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////mpqaAAAAmpqa//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////fHx8AAAAAAAAfHx8//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////vb292dnZ//////////////////// ////////6enpAAAAAAAA6enp//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////fHx8AAAAAAAAfHx8//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////fHx8AAAAAAAA fHx8//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////mpqavb29//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////x8fHx8fH////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////mpqavb29//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////mpqavb29//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////8PDwaGho//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// TU1N////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////8PDwaGho//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////8PDwaGho//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////TU1N2dnZ//////////////////////// 6enpmpqaAAAAAAAAp6en8PDw////////////4eHhTU1NAAAAsrKy////TU1N p6en6enp////////////////////////////AAAAAAAAAAAAAAAA////AAAA AAAAAAAAAAAA////////////////0NDQp6en//////////////////////// 4eHhfHx8AAAAmpqa6enp////////////fHx8aGhoTU1N//////////////// ////////////AAAAAAAA0NDQTU1NAAAAmpqa8PDw////////////4eHhTU1N AAAAp6en////mpqaAAAAjIyMAAAAAAAAAAAATU1N////////////0NDQAAAA fHx86enp////////AAAAAAAAAAAAAAAA////////6enpfHx8AAAAaGho0NDQ ////////////4eHhTU1NAAAAsrKy////TU1Np6en6enp////////AAAAAAAA AAAAAAAA////4eHhTU1NAAAAp6en////mpqaAAAAjIyMAAAAAAAAAAAATU1N ////////////////AAAAAAAAAAAAAAAA////////////////TU1N2dnZ//// ////////////////////////////////////////4eHhaGhoAAAAaGho6enp TU1Np6en6enp////4eHhTU1NAAAAsrKy////TU1Np6en6enp////////4eHh fHx8AAAAmpqa6enp////////////////////////////////0NDQAAAAfHx8 6enp////////6enpmpqaAAAAAAAAp6en8PDw//////////////////////// ////////0NDQAAAAfHx86enp////AAAAAAAAAAAAAAAA////AAAAAAAAAAAA AAAA////////////4eHhfHx8AAAAmpqa6enp//////////////////////// ////AAAA6enpjIyMAAAAjIyM////////////////4eHhfHx8AAAAmpqa6enp ////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAA6enpjIyM AAAAjIyM////////////////AAAAAAAAAAAAAAAA////0NDQAAAAfHx86enp ////////AAAAAAAAAAAAAAAA////////////////0NDQp6en//////////// ////////AAAAAAAAAAAAAAAA////0NDQAAAAfHx86enp//////////////// ////TU1N2dnZ////////////////////////////////////////////6enp mpqaAAAAAAAAp6en8PDw////////AAAAAAAAAAAAAAAAAAAAAAAA//////// ////////////////0NDQAAAAfHx86enp////AAAAAAAAAAAAAAAA////AAAA AAAAAAAAAAAA////////4eHhfHx8AAAAmpqa6enp//////////////////// ////////////0NDQAAAAfHx86enp////AAAAAAAAAAAATU1N//////////// 4eHhTU1NAAAAp6en////mpqaAAAAjIyMAAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////////AAAA6enpjIyMAAAAjIyM////////4eHhTU1NAAAAp6en ////mpqaAAAAjIyM6enp////6enpfHx8AAAAaGho0NDQ////////////0NDQ AAAAfHx86enp////////AAAAAAAAAAAAAAAA////////6enpmpqaAAAAAAAA p6en8PDw////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////// ////////////////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enpAAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////////4eHhaGhoAAAAaGho6enpTU1N p6en6enp////////////////////////0NDQAAAAfHx86enp////AAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////////4eHhfHx8AAAAmpqa6enp//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////x8fHAAAAmpqa////////////////////8PDwTU1NaGho8PDw////p6en aGho////////////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho//////////// ////////////////6enpAAAAAAAA6enp////6enpAAAAAAAA6enp//////// ////////aGhoaGho////////////////////6enpAAAAAAAAAAAAAAAAAAAA 4eHh////////jIyMAAAA0NDQ////////////////////////////AAAAAAAA p6en////8PDwfHx8TU1N////////////aGhoAAAA0NDQ////x8fHAAAAAAAA ////mpqaAAAAAAAA////////////////TU1NAAAA6enpjIyM////////6enp AAAAAAAA6enp////6enpTU1NAAAAAAAAAAAAaGho6enp////////aGhoAAAA 2dnZ////x8fHAAAAAAAAaGho////////6enpAAAAAAAA6enp////aGhoAAAA 0NDQ////x8fHAAAAAAAA////mpqaAAAAAAAA////////////////////6enp AAAAAAAA6enp////////////x8fHAAAAmpqa//////////////////////// ////////////////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho////aGho AAAA2dnZ////x8fHAAAAAAAAaGho////6enpAAAAAAAAAAAAAAAAAAAA4eHh ////////////////////////////TU1NAAAA6enpjIyM////8PDwTU1NaGho 8PDw////p6enaGho////////////////////////////////TU1NAAAA6enp jIyM////6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp////////6enpAAAA AAAAAAAAAAAAAAAA4eHh////////////////////////AAAAfHx84eHh//// 4eHhjIyM////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAAAAAA 8PDw////8PDwAAAAAAAA6enp////AAAAfHx84eHh////4eHhjIyM//////// ////6enpAAAAAAAA6enp////TU1NAAAA6enpjIyM////////6enpAAAAAAAA 6enp////////////////aGhoaGho////////////////////6enpAAAAAAAA 6enp////TU1NAAAA6enpjIyM////////////////x8fHAAAAmpqa//////// ////////////////////////////////8PDwTU1NaGho8PDw////p6enaGho ////////////0NDQAAAAAAAA2dnZ////////////////////////////TU1N AAAA6enpjIyM////6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp////6enp AAAAAAAAAAAAAAAAAAAA4eHh////////////////////////////TU1NAAAA 6enpjIyM////6enpAAAAAAAA////////////////aGhoAAAA0NDQ////x8fH AAAAAAAA////mpqaAAAAAAAA8PDw////8PDwAAAAAAAA6enp////////AAAA fHx84eHh////4eHhjIyM////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKy 6enpTU1NAAAAAAAAAAAAaGho6enp////////TU1NAAAA6enpjIyM//////// 6enpAAAAAAAA6enp////8PDwTU1NaGho8PDw////p6enaGho////////6enp AAAAAAAA8PDw////8PDwAAAAAAAA6enp////////////////////////aGho AAAA0NDQ////x8fHAAAAAAAA////srKy6enpAAAAAAAA8PDw////8PDwAAAA AAAA6enp////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho//////////// ////////////TU1NAAAA6enpjIyM////6enpAAAAAAAA6enp////8PDwAAAA AAAA6enp////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////aGhoAAAATU1N//// ////////////////p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAA AAAA////////////AAAAAAAA//////////////////////////////////// AAAAAAAA////////////AAAAAAAA////////////////4eHhTU1Nx8fHvb29 ////////////////mpqaAAAAfHx88PDw////6enpaGho//////////////// ////////////////////////////////AAAAAAAA////////////2dnZAAAA srKy////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//// ////////////AAAAAAAA////////////////////AAAAAAAA////////mpqa AAAAfHx8////////4eHhjIyM////////AAAAAAAA////////////AAAAAAAA ////////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////AAAAAAAA////////////////////////AAAAAAAA//////////// ////aGhoAAAATU1N////////////////////////////////////////mpqa AAAAx8fH////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////mpqaAAAAfHx88PDw////6enpaGho//////////////////// ////////AAAAAAAA////////////p6enAAAA0NDQ////////8PDwAAAAvb29 ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////////AAAAAAAA////////////mpqaAAAAfHx88PDw////6enpaGho ////////////////////////AAAA8PDw////////x8fHAAAA////////mpqa AAAAfHx88PDw////6enpaGho////////AAAAAAAA////////////AAAAAAAA ////////AAAA8PDw////////x8fHAAAA////////////////AAAAAAAA//// ////AAAAAAAA////////////////////AAAAAAAA////////////////4eHh TU1Nx8fHvb29////////////////////AAAAAAAA////////AAAAAAAA//// ////////////////////aGhoAAAATU1N//////////////////////////// ////////////p6enAAAA0NDQ////////8PDwAAAAvb29////////////AAAA AAAA////////////////////////////////AAAAAAAA//////////////// AAAAAAAA////////////AAAAAAAA////////mpqaAAAAfHx88PDw////6enp aGho////////////////////////////AAAAAAAA////////////////AAAA AAAA////////////////AAAAAAAA////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////AAAA8PDw////////x8fHAAAA ////AAAAAAAA////////////AAAAAAAA////////mpqaAAAAfHx8//////// 4eHhjIyM////////AAAAAAAA////////////////////AAAAAAAA//////// p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAAAAAA//////////// AAAAAAAA////////////////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////mpqaAAAA x8fH////////////AAAAAAAA////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////AAAAAAAA////////mpqaAAAA fHx88PDw////6enpaGho//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////0NDQAAAAp6ensrKyx8fH////////////////TU1N AAAA8PDw////////////AAAAaGho////////AAAAAAAA////////////AAAA AAAA////////////////////////////////////AAAAAAAA//////////// AAAAAAAA////////////////mpqajIyM////fHx8////////////////AAAA AAAA2dnZ//////////////////////////////////////////////////// ////////////AAAAAAAA////////////////AAAAaGho////////p6enAAAA x8fH////////AAAAAAAA////////AAAAAAAA////////////////AAAAAAAA ////////////////////AAAAAAAA////////TU1NAAAA6enp//////////// ////////////AAAAAAAA////////////AAAAAAAA////////////////AAAA AAAA////////p6enAAAAx8fH////////AAAAAAAA////////AAAAAAAA//// ////////////////////AAAAAAAA////////////0NDQAAAAp6ensrKyx8fH ////////////////////////////////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA 2dnZ////////////////////////////////////////////AAAAAAAA//// ////////TU1NAAAA8PDw////////////AAAAaGho//////////////////// ////////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA2dnZ//////////////////////////////////// ////////////x8fHaGhoAAAAjIyM////////AAAAAAAA2dnZ//////////// ////////////AAAAAAAA////////////AAAAAAAA////////////////x8fH aGhoAAAAjIyM////////////////AAAAAAAA////////AAAAAAAA//////// ////////////AAAAAAAA////////////////mpqajIyM////fHx8//////// ////////////AAAAAAAA////////AAAAAAAA////////////////////0NDQ AAAAp6ensrKyx8fH////////////////////////////////////TU1NAAAA 8PDw////////////AAAAaGho////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////////////AAAAAAAA//////////// AAAAAAAA////////AAAAAAAA2dnZ//////////////////////////////// ////////////AAAAAAAA////////////////AAAAAAAA//////////////// p6enAAAAx8fH////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////////////x8fHaGhoAAAAjIyM////p6enAAAAx8fH//// ////AAAAAAAA////////TU1NAAAA6enp////////////////////////AAAA AAAA////////////////////AAAAAAAA////////TU1NAAAA8PDw//////// ////AAAAaGho////////AAAAAAAA////////////AAAAAAAA//////////// ////////////////p6enAAAAx8fH////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////AAAAAAAA////////////////AAAA AAAA////////////////////////////AAAAAAAA////////////////AAAA AAAA////////////AAAAAAAA////////AAAAAAAA2dnZ//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// aGhoAAAA8PDw8PDwaGho////////////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////////AAAAAAAA////////////AAAAAAAA//////////// 8PDwAAAAvb29////vb290NDQ////////////AAAAAAAA//////////////// ////////////////////////////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////srKyTU1Np6en6enpAAAAAAAA ////////AAAAAAAA////////////////AAAAAAAA//////////////////// AAAAAAAA////////AAAAAAAA////////////////////////////AAAAAAAA ////////////AAAAAAAA////////////////AAAAAAAA////////////srKy TU1Np6en6enpAAAAAAAA////////AAAAAAAA//////////////////////// AAAAAAAA////////////aGhoAAAA8PDw8PDwaGho//////////////////// ////////////////AAAAAAAA////////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////AAAAAAAA//////////////////// ////////////////////////////AAAAAAAA////////////AAAAAAAA//// ////////////AAAAAAAA////////////////////////////AAAAAAAA//// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////////////////////////////////2dnZTU1NAAAAAAAA jIyM////////////AAAAAAAA////////////////////////////AAAAAAAA ////////////AAAAAAAA////////2dnZTU1NAAAAAAAAjIyM//////////// ////////AAAAAAAA////////AAAAAAAA////////////////////AAAAAAAA ////////////8PDwAAAAvb29////vb290NDQ////////////////AAAAAAAA ////////AAAAAAAA////////////////////aGhoAAAA8PDw8PDwaGho//// ////////////////////////////////AAAAAAAA////////////////AAAA AAAA////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////////AAAAAAAA////////////AAAAAAAA////////AAAA AAAA////////////////////////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////////////srKyTU1Np6en6enp AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////////2dnZ TU1NAAAAAAAAjIyM////////////srKyTU1Np6en6enpAAAAAAAA//////// AAAAAAAA////////////////////////////AAAAAAAA//////////////// ////AAAAAAAA////////AAAAAAAA////////////////AAAAAAAA//////// AAAAAAAA////////////AAAAAAAA//////////////////////////////// srKyTU1Np6en6enpAAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////AAAAAAAA////////////////AAAAAAAA//////////////// ////////////AAAAAAAA////////////////AAAAAAAA////////////AAAA AAAA////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////0NDQAAAAmpqa////////jIyM 4eHh////////////aGhoAAAA////////////8PDwAAAATU1N////////AAAA AAAA////////////AAAAAAAA//////////////////////////////////// AAAAAAAA////////////AAAAAAAA////////////srKyAAAA2dnZ//////// jIyM////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////////// ////////////////////////////////AAAAAAAA////////////////AAAA AAAA////////////////////x8fHfHx8AAAAAAAA////////AAAAAAAA//// ////////////AAAAAAAA////////////////////AAAAAAAA////////TU1N AAAA////////////////////////////AAAAAAAA////////////AAAAAAAA ////////////////AAAAAAAA////////////////////x8fHfHx8AAAAAAAA ////////AAAAAAAA////////////////////////AAAAAAAA////////0NDQ AAAAmpqa////////jIyM4eHh////////////////////////////////aGho AAAA////////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////////////// ////////AAAAAAAA////////////aGhoAAAA////////////8PDwAAAATU1N ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////////AAAAAAAA////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA ////////////////////////aGhoAAAAp6en8PDw////////////////TU1N AAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA////////////AAAAAAAA ////////aGhoAAAAp6en8PDw////////////////////////AAAAAAAA//// ////AAAAAAAA////////////////////AAAAAAAA////////////srKyAAAA 2dnZ////////jIyM////////////////AAAAAAAA////////AAAAAAAA//// ////////////0NDQAAAAmpqa////////jIyM4eHh//////////////////// ////////////aGhoAAAA////////////8PDwAAAATU1N////////////AAAA AAAA////////////////////////////////AAAAAAAA//////////////// AAAAAAAA////////////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAA AAAA////////////////////////////AAAAAAAA////////////////AAAA AAAA////////////////////////////x8fHfHx8AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////aGhoAAAAp6en8PDw//////// ////////////////x8fHfHx8AAAAAAAA////////TU1NAAAA//////////// ////////////////AAAAAAAA////////////////////AAAAAAAA//////// aGhoAAAA////////////8PDwAAAATU1N////////AAAAAAAA//////////// AAAAAAAA////////////////////////////////////////x8fHfHx8AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////aGhoAAAA ////////////////AAAAAAAA////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////AAAAAAAA////////TU1NAAAA AAAAAAAAAAAAAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////jIyMAAAA4eHh////////0NDQp6en////////////vb29 AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA////////////AAAA AAAA////////////////////////////////////AAAAAAAA//////////// AAAAAAAA////////////TU1NfHx88PDw////////srKy8PDw////////p6en AAAA////////////AAAAfHx8//////////////////////////////////// ////////////AAAAAAAA////////////0NDQAAAAjIyM////////fHx8aGho ////////////AAAAAAAA////////AAAAAAAA6enp////////////AAAAAAAA ////////////////////AAAAAAAA////////p6enAAAA6enp////////x8fH TU1N////////AAAAAAAA////////////AAAAAAAA////////////////AAAA AAAA////////fHx8aGho////////////AAAAAAAA////////AAAAAAAA6enp ////////////////////AAAAAAAA////////jIyMAAAA4eHh////////0NDQ p6en////////////////////////////////vb29AAAA2dnZ////////8PDw AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////p6enAAAA ////////////AAAAfHx8////////////////////////////AAAAAAAA//// ////////vb29AAAA6enp////////x8fHAAAAp6en//////////////////// ////////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA ////////////p6enAAAA////////////AAAAfHx8//////////////////// ////AAAA6enp////////6enpAAAA////////p6enAAAA////////////AAAA fHx8////////AAAAAAAA////////////AAAAAAAA////////AAAA6enp//// ////6enpAAAA////////////////AAAAAAAA////////AAAAAAAA//////// ////////////AAAAAAAA////////////TU1NfHx88PDw////////srKy8PDw ////////////AAAAAAAA////////AAAAAAAA////////////////jIyMAAAA 4eHh////////0NDQp6en////////////////////////////////vb29AAAA 6enp////////x8fHAAAAp6en////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////////////AAAAAAAA//////////// AAAAAAAA////////p6enAAAA////////////AAAAfHx8//////////////// ////////////AAAAAAAA////////////////AAAAAAAA6enp//////////// fHx8aGho////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////AAAA6enp////////6enpAAAA////fHx8aGho//////// ////AAAAAAAA////////p6enAAAA6enp////////x8fHTU1N////////AAAA AAAA////////////////////AAAAAAAA////////vb29AAAA6enp//////// x8fHAAAAp6en////////AAAAAAAA////////////AAAAAAAA//////////// ////////////////fHx8aGho////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////vb29AAAA2dnZ////////8PDwAAAA AAAA////////////////////////////AAAAAAAA////////////////AAAA AAAA////////////AAAAAAAA////////p6enAAAA////////////AAAAfHx8 //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////vb29AAAA aGho////////////////TU1N6enp////////////TU1Nmpqa////6enpTU1N TU1N8PDw////6enpAAAAAAAA////////4eHhAAAAAAAA//////////////// ////////////////////AAAAAAAA////////TU1NAAAAAAAA////4eHhmpqa AAAA////////////////8PDwjIyM////////6enpTU1Np6en////vb29AAAA 0NDQ////////////////////////////////////////////AAAAAAAAAAAA x8fH////8PDwaGhoAAAA2dnZ////////fHx8AAAA6enp////0NDQAAAAaGho ////TU1NAAAAAAAAx8fH8PDwmpqafHx8AAAAAAAA////////////////TU1N AAAAAAAA////////////TU1NfHx8////////aGhofHx8////6enpAAAAAAAA ////////4eHhAAAAAAAA////////////////AAAAAAAA////////fHx8AAAA 6enp////0NDQAAAAaGho////TU1NAAAAAAAAx8fH8PDwmpqafHx8//////// AAAAAAAA////vb29AAAAaGho////////////////TU1N6enp//////////// ////////////////////fHx8aGho8PDw////p6enAAAAAAAA////6enpAAAA AAAA////////4eHhAAAAAAAA////////6enpTU1Np6en////vb29AAAA0NDQ ////////////////////////////AAAAAAAA////////////////TU1Nmpqa ////6enpTU1NTU1N8PDw////////////////////////////AAAAAAAA//// ////////////AAAAAAAAx8fH////2dnZAAAAaGho////////////6enpTU1N p6en////vb29AAAA0NDQ////////////////////////jIyM4eHh////8PDw fHx8AAAA////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAAAAAA x8fH////4eHhAAAAaGho////////jIyM4eHh////8PDwfHx8AAAA//////// ////TU1NAAAAAAAA////////AAAAAAAA////////////////TU1NAAAAAAAA ////4eHhmpqaAAAA////////////////8PDwjIyM////////TU1NAAAAAAAA ////////AAAAAAAA////////////vb29AAAAaGho////////////////TU1N 6enp////////////////////////////////TU1Nmpqa////6enpTU1NTU1N 8PDw////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////////AAAAAAAAx8fH////2dnZAAAAaGho////////6enp TU1Np6en////vb29AAAA0NDQ////////////////////////////AAAAAAAA ////////////TU1NAAAAAAAAx8fH8PDwmpqafHx8fHx8AAAA6enp////0NDQ AAAAaGho////TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////////jIyM 4eHh////8PDwfHx8AAAA////fHx8AAAA6enp////0NDQAAAAaGho//////// ////TU1NfHx8////////aGhofHx8////////AAAAAAAA//////////////// TU1NAAAAAAAA////////////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1N AAAAAAAAx8fH////4eHhAAAAaGho////////////////////////////fHx8 AAAA6enp////0NDQAAAAaGho////////TU1NAAAAAAAAx8fH////4eHhAAAA aGho////////////fHx8aGho8PDw////p6enAAAAAAAA//////////////// ////////////AAAAAAAA////////////////AAAAAAAAx8fH////2dnZAAAA aGho////////6enpTU1Np6en////vb29AAAA0NDQ//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAAAAAAjIyM////////jIyM AAAAAAAA4eHh////////8PDwp6enAAAAAAAAmpqa6enp////////AAAAAAAA AAAA////////AAAAAAAAAAAA//////////////////////////////////// AAAAAAAA////////6enpp6enTU1Nvb29AAAAAAAAAAAAAAAA4eHh//////// AAAAAAAAAAAA////////6enpjIyMAAAATU1Nvb29//////////////////// ////////////////////////////6enpsrKyTU1N////mpqaAAAATU1N0NDQ ////////////////p6enTU1NAAAAAAAAmpqa6enp////6enpsrKyTU1N//// srKyAAAAAAAAAAAAAAAAAAAAAAAA////////6enpp6enTU1N//////////// 8PDwp6enAAAAAAAAmpqa////////AAAAAAAAAAAA////////AAAAAAAAAAAA ////////////////AAAAAAAA////////////p6enTU1NAAAAAAAAmpqa6enp ////6enpsrKyTU1N////srKyAAAAmpqa////////AAAAAAAAvb29AAAAAAAA AAAAjIyM////////jIyMAAAAAAAA4eHh//////////////////////////// ////p6enAAAATU1N2dnZAAAAAAAA////AAAAAAAAAAAA////////AAAAAAAA AAAA////////////6enpjIyMAAAATU1Nvb29//////////////////////// ////AAAAAAAAAAAAAAAAAAAA////////8PDwp6enAAAAAAAAmpqa6enp//// ////////////////////////AAAAAAAAAAAAAAAAAAAA////////AAAAAAAA ////srKyAAAAaGho6enp////////////////6enpjIyMAAAATU1Nvb29//// ////////////////////////////jIyMAAAAmpqa6enpAAAA//////////// 6enpjIyMAAAATU1Nvb29////////6enpp6enTU1N////srKyAAAATU1N4eHh ////////////jIyMAAAAmpqa6enpAAAA////////////6enpp6enTU1N//// AAAAAAAAAAAAAAAAAAAA////////6enpp6enTU1Nvb29AAAAAAAAAAAAAAAA 4eHh////////AAAAAAAAAAAA////6enpp6enTU1N////AAAAAAAAAAAAAAAA AAAAvb29AAAAAAAAAAAAjIyM////////jIyMAAAAAAAA4eHh//////////// ////////////////8PDwp6enAAAAAAAAmpqa6enp////////AAAAAAAAAAAA AAAAAAAAAAAA////////////////////AAAAAAAAAAAAAAAAAAAA//////// AAAAAAAA////srKyAAAAaGho6enp////////////6enpjIyMAAAATU1Nvb29 ////////////////////////////AAAAAAAAAAAAAAAAAAAA////6enpsrKy TU1N////srKyAAAAmpqa////p6enTU1NAAAAAAAAmpqa6enp////6enpp6en TU1N////srKyAAAATU1N4eHh////////////////jIyMAAAAmpqa6enpAAAA ////////p6enTU1NAAAAAAAAmpqa6enp////////////8PDwp6enAAAAAAAA mpqa////////AAAAAAAAAAAAAAAAAAAA////////6enpp6enTU1N//////// ////8PDwp6enAAAAAAAAmpqa6enp////////6enpp6enTU1N////srKyAAAA TU1N4eHh////////////////////////////////p6enTU1NAAAAAAAAmpqa 6enp////////6enpp6enTU1N////srKyAAAATU1N4eHh//////////////// p6enAAAATU1N2dnZAAAAAAAA////////////////////////AAAAAAAAAAAA AAAAAAAA////////AAAAAAAA////srKyAAAAaGho6enp////////////6enp jIyMAAAATU1Nvb29//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////0NDQAAAAAAAA //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// ////////////////////////////////////////////0NDQAAAAAAAA//// //////////////////////////////////////////////////////////// ////0NDQAAAAAAAA////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////0NDQAAAAAAAA//////// //////////////////////////////////////////////////////////// ////////////////////////0NDQAAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////////0NDQAAAAAAAA////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// ////////0NDQAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////0NDQAAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////////0NDQAAAAAAAA////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////x8fHAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// ////////////////////////////x8fHAAAA//////////////////////// ////////////////////////////////////////////////x8fHAAAA//// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////x8fHAAAA//////////////////////////// //////////////////////////////////////////////////////////// ////////x8fHAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////TU1NAAAA////////////////////////////////x8fH AAAA////////////////AAAAAAAA//////////////////////////////// ////////////////////////////////////////////////////x8fHAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////x8fHAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////////x8fHAAAA////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////8PDwAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// ////////8PDwAAAA//////////////////////////////////////////// ////////////////////////////8PDwAAAA////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////8PDwAAAA//////////////////////////////////////////////// ////////////////////////////////////////////////8PDwAAAA//// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////mpqa AAAA////////////////////////////////8PDwAAAA//////////////// AAAAAAAA//////////////////////////////////////////////////// ////////////////////////////////8PDwAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////8PDwAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////////////////////8PDwAAAA ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////aGhoAAAAAAAA//////////// fHx8fHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////fHx8fHx8//////////////////////////////// ////////////////////////////////////////////////////aGhoAAAA AAAA//////////////////////////////////////////////////////// ////////////////aGhoAAAAAAAA//////////////////////////////// ////////////////////////////////////////////////////////aGho AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////aGhoAAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////fHx8fHx8//////////////////////// ////////////fHx8fHx8//////////////////////////////////////// ////////////fHx8fHx8//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////6enpTU1Nx8fH////4eHhaGho aGho////////////////////////////////aGhoAAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////fHx8fHx8//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////aGhoAAAA AAAA////////////////////////////////////////////////aGhoAAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////6enpp6enTU1N////////////fHx8fHx8//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// fHx8fHx8//////////////////////////////////////////////////// ////////////////////////////////6enpp6enTU1N//////////////// ////////////////////////////////////////////////////////6enp p6enTU1N//////////////////////////////////////////////////// ////////////////////////////////////6enpp6enTU1N//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////6enpp6enTU1N//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////fHx8fHx8////////////////////////////////////fHx8fHx8 ////////////////////////////////////////////////////fHx8fHx8 //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////8PDwmpqaAAAAAAAAfHx82dnZ//////////////// ////////////////6enpp6enTU1N//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////fHx8fHx8//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////6enpp6enTU1N//////////////// ////////////////////////////////6enpp6enTU1N//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////8PDwp6en aGhoAAAAAAAAfHx8vb29////////////////////////////////mpqaAAAA mpqa//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////8PDwp6enaGhoAAAAAAAAfHx8 vb29//////////////////////////////////////////////////////// ////////////////////////////////8PDwp6enaGhoAAAAAAAAfHx8vb29 //////////////////////////////////////////////////////////// ////////AAAAAAAAAAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////TU1Nmpqa4eHh////////////2dnZ mpqa////////////////////////////fHx8AAAAAAAAfHx8//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////TU1Nmpqa4eHh////////////2dnZmpqa//////////// //////////////////////////////////////////////////////////// ////////////TU1Nmpqa4eHh////////////2dnZmpqa//////////////// ////////////////////////////////////////////////6enpAAAAAAAA 6enp//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////p6en////////////////////////8PDwp6en//////////// ////////////////////////mpqavb29//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////p6en ////////////////////////8PDwp6en//////////////////////////// ////////////////////////////////////////////////////p6en//// ////////////////////8PDwp6en//////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////2dnZ 4eHh////////////////2dnZAAAA//////////////////////////////// ////8PDwaGho//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////2dnZ4eHh//////////// ////2dnZAAAA//////////////////////////////////////////////// ////////////////////////////////////2dnZ4eHh//////////////// 2dnZAAAA//////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////6enpfHx8AAAAaGho0NDQ ////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////6enpmpqa AAAAAAAAp6en8PDw////////////AAAAAAAAAAAAAAAA////////////6enp fHx8AAAAaGho0NDQ////////////4eHhfHx8AAAAmpqa6enp//////////// ////////////////////////6enpmpqaAAAAAAAAp6en8PDw////////AAAA AAAAAAAAAAAAAAAAAAAA////////////////////////////////6enpfHx8 AAAAaGho0NDQ////////////6enpmpqaAAAAAAAAp6en8PDw////////AAAA AAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////0NDQAAAAfHx86enp//// 4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enp////6enpfHx8AAAAaGho0NDQ ////////////0NDQAAAAfHx86enp////////AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////////0NDQTU1NAAAAAAAAAAAAAAAA AAAAaGho////////////////////////////////////////TU1N2dnZ//// ////////////////////6enpmpqaAAAAAAAAp6en8PDw////////////4eHh TU1NAAAAsrKy////TU1Np6en6enp////////////////////////////AAAA AAAAAAAAAAAA////AAAA6enpjIyMAAAAjIyM//////////////////////// ////////4eHhTU1NAAAAp6en////mpqaAAAAAAAAAAAAAAAATU1N//////// ////////////6enpmpqaAAAAAAAAp6en8PDw////////////4eHhTU1NAAAA srKy////TU1Np6en6enp////AAAA6enpjIyMAAAAjIyM//////////////// 4eHhfHx8AAAAmpqa6enp////////////////4eHhaGhoAAAAaGho6enpTU1N p6en6enp////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAATU1N////////////////////6enpmpqaAAAAAAAAp6en8PDw//////// AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//// ////////////////////////0NDQAAAAfHx86enp////AAAAAAAAAAAAAAAA ////AAAAAAAAAAAAAAAA////////4eHhfHx8AAAAmpqa6enp//////////// ////////////////////0NDQTU1NAAAAAAAAAAAAAAAAAAAAaGho//////// ////4eHhfHx8AAAAmpqa6enp////////////////6enpmpqaAAAAAAAAp6en 8PDw////////////0NDQTU1NAAAAAAAAAAAAAAAAAAAAaGhoAAAAAAAAAAAA TU1N////////////////4eHhTU1NAAAAp6en////mpqaAAAAjIyMAAAAAAAA 0NDQTU1NAAAAmpqa8PDw////////////AAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////////////6enpfHx8AAAAaGho0NDQ ////////////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enpAAAAAAAAAAAA AAAA////////////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA ////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enp0NDQAAAAfHx86enp//// ////4eHhTU1NAAAAsrKy////TU1Np6en6enp////AAAAAAAAAAAATU1N//// ////////////4eHhfHx8AAAAmpqa6enp//////////////////////////// ////////6enpmpqaAAAAAAAAp6en8PDw////////AAAAAAAAAAAAAAAAAAAA AAAA////////////////////////////////0NDQfHx8//////////////// 2dnZaGho////////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA ////////4eHhfHx8AAAAmpqa6enp////////AAAAAAAAAAAATU1N//////// ////////////4eHhfHx8AAAAmpqa6enp//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////6enpTU1NAAAAAAAAAAAAaGho6enp////6enpAAAAAAAA 6enp////8PDwAAAAAAAA6enp////8PDwTU1NaGho8PDw////p6enaGho//// ////////6enpAAAAAAAA6enp////////6enpTU1NAAAAAAAAAAAAaGho6enp ////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////////////////// 8PDwTU1NaGho8PDw////p6enaGho////////////0NDQAAAAAAAA2dnZ//// ////////////////////////////6enpTU1NAAAAAAAAAAAAaGho6enp//// 8PDwTU1NaGho8PDw////p6enaGho////////6enpAAAAAAAA8PDw////8PDw AAAAAAAA6enp////////TU1NAAAA6enpjIyM////aGhoAAAA0NDQ////x8fH AAAAAAAA////srKy6enpTU1NAAAAAAAAAAAAaGho6enp////////TU1NAAAA 6enpjIyM////////6enpAAAAAAAA6enp6enpAAAAAAAA8PDw////8PDwAAAA AAAA6enp////////AAAAAAAAAAAAAAAAAAAAAAAAaGho6enp//////////// ////////////////////////x8fHAAAAmpqa////////////////////8PDw TU1NaGho8PDw////p6enaGho////////////aGhoAAAA2dnZ////x8fHAAAA AAAAaGho////////////////////////////6enpAAAAAAAA6enp////AAAA fHx84eHh////4eHhjIyM////////////////////////////aGhoAAAA0NDQ ////x8fHAAAAAAAA6enpAAAAAAAA////////////////////8PDwTU1NaGho 8PDw////p6enaGho////////////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho ////AAAAfHx84eHh////4eHhjIyM////////6enpAAAAAAAAAAAAAAAAAAAA 4eHh////////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho//////////// ////////////0NDQAAAAAAAA2dnZ////6enpAAAAAAAA//////////////// ////8PDwTU1NaGho8PDw////p6enaGho////////6enpAAAAAAAA8PDw//// 6enpAAAAAAAA6enp////6enpAAAAAAAA6enp//////////////////////// ////TU1NAAAA6enpjIyM////6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp ////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////////////////// AAAAAAAAAAAAAAAAAAAAAAAAaGho6enp////////6enpAAAAAAAAAAAAAAAA AAAA4eHh////////8PDwTU1NaGho8PDw////p6enaGho////////////AAAA AAAAAAAAAAAAAAAAAAAAaGho6enp6enpAAAAAAAA//////////////////// aGhoAAAA0NDQ////x8fHAAAAAAAA////AAAAAAAAp6en////8PDwfHx8TU1N ////////////6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp////6enpAAAA AAAA6enp////////6enpTU1NAAAAAAAAAAAAaGho6enp////////aGhoAAAA 0NDQ////x8fHAAAAAAAA////srKy6enpAAAAAAAA6enp//////////////// ////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////aGhoAAAA0NDQ//// x8fHAAAAAAAA////srKyTU1NAAAA6enpjIyM////////aGhoAAAA2dnZ//// x8fHAAAAAAAAaGho////6enpAAAAAAAA////////////////6enpAAAAAAAA AAAAAAAAAAAA4eHh////////////////////////////8PDwTU1NaGho8PDw ////p6enaGho////////////0NDQAAAAAAAA2dnZ//////////////////// ////////////////fHx8AAAA0NDQ////////////p6enAAAA2dnZ//////// ////6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp////6enpAAAAAAAAAAAA AAAAAAAA4eHh////6enpAAAAAAAA////////////////////6enpAAAAAAAA AAAAAAAAAAAA4eHh//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////mpqa AAAAfHx8////////4eHhjIyM////////AAAAAAAA////////////AAAAAAAA ////////p6enAAAA0NDQ////////8PDwAAAAvb29////////////AAAAAAAA ////////////mpqaAAAAfHx8////////4eHhjIyM////mpqaAAAAfHx88PDw ////6enpaGho////////////////////////////p6enAAAA0NDQ//////// 8PDwAAAAvb29////////////AAAAAAAA//////////////////////////// ////////mpqaAAAAfHx8////////4eHhjIyM////p6enAAAA0NDQ//////// 8PDwAAAAvb29////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA////////mpqa AAAAfHx8////////4eHhjIyM////////AAAAAAAA//////////////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////////srKy 8PDw//////////////////////////////////////////////////////// ////aGhoAAAATU1N////////////////////p6enAAAA0NDQ////////8PDw AAAAvb29////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////////AAAAAAAA////////AAAA8PDw////////x8fHAAAA ////////////////////////////AAAAAAAA////////////AAAAAAAA//// AAAAAAAA////////////////////p6enAAAA0NDQ////////8PDwAAAAvb29 ////////AAAAAAAA////////////AAAAAAAA////////AAAA8PDw//////// x8fHAAAA////////mpqaAAAAfHx88PDw////6enpaGho////////mpqaAAAA x8fH////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////////////p6enAAAA0NDQ//// ////8PDwAAAAvb29////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////////////////////////AAAAAAAA//////// ////////AAAAAAAA////////////AAAAAAAA////////mpqaAAAAfHx88PDw ////6enpaGho////////////////////////////srKy8PDw//////////// ////////////////////mpqaAAAAfHx88PDw////6enpaGho////////p6en AAAA0NDQ////////8PDwAAAAvb29////////srKy8PDw//////////////// ////////////AAAAAAAA////////////////////AAAAAAAA//////////// AAAAAAAA////AAAAAAAA////////////2dnZAAAAsrKy////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////mpqa AAAAfHx8////////4eHhjIyM////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////////////////AAAAAAAA//// ////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////////mpqaAAAAfHx88PDw////6enpaGho//// ////////////////////////p6enAAAA0NDQ////////8PDwAAAAvb29//// ////////AAAAAAAA////////////////////////////////////8PDwAAAA mpqajIyM////////////AAAATU1NjIyM////////////////AAAAAAAA//// ////////AAAAAAAA////////mpqaAAAAfHx88PDw////6enpaGho//////// AAAAAAAA////////////////////mpqaAAAAfHx88PDw////6enpaGho//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////TU1NAAAA6enp//////////// ////////////AAAAAAAA////////////AAAAAAAA////////TU1NAAAA8PDw ////////////AAAAaGho////////////AAAAAAAA////////////TU1NAAAA 6enp////////////////////AAAAAAAA2dnZ//////////////////////// ////////////////////TU1NAAAA8PDw////////////AAAAaGho//////// ////AAAAAAAA////////////////////////////////////TU1NAAAA6enp ////////////////////TU1NAAAA8PDw////////////AAAAaGho//////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// p6enAAAAx8fH////////AAAAAAAA////////TU1NAAAA6enp//////////// ////////////AAAAAAAA////////////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////////srKyjIyMAAAAaGho2dnZ ////////////////////////////////////////0NDQAAAAp6ensrKyx8fH ////////////////TU1NAAAA8PDw////////////AAAAaGho////////AAAA AAAA////////////AAAAAAAA//////////////////////////////////// AAAAAAAA////////////////x8fHaGhoAAAAjIyM//////////////////// ////////p6enAAAAx8fH////////AAAAAAAA////AAAAAAAA//////////// ////////TU1NAAAA8PDw////////////AAAAaGho////////AAAAAAAA//// ////////AAAAAAAA////////////////x8fHaGhoAAAAjIyM////////AAAA AAAA2dnZ////////////////////////AAAAAAAA////////////////AAAA AAAA////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////////////TU1NAAAA8PDw////////////AAAAaGho//// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////////////////////////AAAAAAAA////////////////AAAAAAAA//// ////////AAAAAAAA////////AAAAAAAA2dnZ//////////////////////// ////////////////////////srKyjIyMAAAAaGho2dnZ//////////////// AAAAAAAA2dnZ////////////////////////TU1NAAAA8PDw//////////// AAAAaGho////////////srKyjIyMAAAAaGho2dnZ////////////AAAAAAAA ////////////////////p6enAAAAx8fH////////AAAAAAAA////AAAAAAAA ////////////////AAAAaGho////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////TU1NAAAA6enp//////////// ////////////p6enAAAAx8fH////////AAAAAAAA////////////AAAAAAAA ////////////////////////////AAAAAAAA////////////AAAAAAAA//// ////p6enAAAAx8fH////////AAAAAAAA////////AAAAAAAA//////////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////////AAAAAAAA2dnZ//////////////////////////////////////// ////TU1NAAAA8PDw////////////AAAAaGho////////////AAAAAAAA//// ////////////////////////////////srKyAAAA0NDQ0NDQ0NDQ////x8fH AAAAx8fHfHx88PDw////////////AAAAAAAA////////////AAAAAAAA//// ////AAAAAAAA2dnZ////////////////////////AAAAAAAA//////////// ////////AAAAAAAA2dnZ//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////////////////////AAAAAAAA ////////////AAAAAAAA////////AAAAAAAA////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA//////////////////// ////AAAAAAAA//////////////////////////////////////////////// AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//////// ////////////////////////////AAAAAAAA//////////////////////// AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////////srKyTU1Np6en6enp AAAAAAAA////////AAAAAAAA////////////////////////////AAAAAAAA ////////////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////0NDQAAAAp6en////0NDQAAAA0NDQ//////////////// ////////////////////aGhoAAAA8PDw8PDwaGho////////////////AAAA AAAA////////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////////////////////////////AAAAAAAA////////2dnZ TU1NAAAAAAAAjIyM////////////////////////////////////srKyTU1N p6en6enpAAAAAAAA////AAAAAAAA////////////////////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////2dnZTU1NAAAAAAAAjIyM////////////AAAAAAAA//////////////// ////////////AAAAAAAA////////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////////AAAAAAAA//////////////// ////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA//////////////////////////// ////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//// ////AAAAAAAA//////////////////////////////////////////////// 0NDQAAAAp6en////0NDQAAAA0NDQ////////////AAAAAAAA//////////// ////////////////AAAAAAAA////////////////AAAAAAAA////////0NDQ AAAAp6en////0NDQAAAA0NDQ////////AAAAAAAA//////////////////// ////srKyTU1Np6en6enpAAAAAAAA////AAAAAAAA////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////////////////////srKy TU1Np6en6enpAAAAAAAA////////////AAAAAAAA//////////////////// ////////AAAAAAAA////////////AAAAAAAA////////////srKyTU1Np6en 6enpAAAAAAAA////////AAAAAAAA////////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA//// ////////////////////////////////////////////AAAAAAAA//////// ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////////////TU1NAAAA////////jIyM////aGhoAAAA8PDw0NDQsrKy//// ////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////// ////////////////////AAAAAAAA////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////TU1N AAAA////////////////////////////AAAAAAAA////////////AAAAAAAA ////////aGhoAAAA////////////8PDwAAAATU1N////////////AAAAAAAA ////////////TU1NAAAA////////////////////////TU1NAAAAAAAAAAAA AAAAAAAAAAAA////////////////////////////aGhoAAAA//////////// 8PDwAAAATU1N////////////AAAAAAAA//////////////////////////// ////////TU1NAAAA////////////////////////aGhoAAAA//////////// 8PDwAAAATU1N////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////////////////x8fHfHx8AAAAAAAA////////TU1N AAAA////////////////////////////AAAAAAAA//////////////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////////aGho AAAA////////////AAAATU1N////////////////////////////////0NDQ AAAAmpqa////////jIyM4eHh////////////aGhoAAAA////////////8PDw AAAATU1N////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////////AAAAAAAA////////aGhoAAAAp6en8PDw//////// ////////////////////////////////////////x8fHfHx8AAAAAAAA//// AAAAAAAA////////////////////aGhoAAAA////////////8PDwAAAATU1N ////////AAAAAAAA////////////AAAAAAAA////////aGhoAAAAp6en8PDw ////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////aGhoAAAA ////////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////////////aGhoAAAA//////// ////8PDwAAAATU1N////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////////////////////////AAAAAAAA//////// ////////AAAAAAAA////////////AAAAAAAA////////TU1NAAAAAAAAAAAA AAAAAAAAAAAA////////////////////////////aGhoAAAA//////////// AAAATU1N////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////aGho AAAA////////////8PDwAAAATU1N////////aGhoAAAA////////////AAAA TU1N////////AAAAAAAA////////////////////////////////x8fHfHx8 AAAAAAAA////AAAAAAAA////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////TU1N AAAA////////////////////////////////////////x8fHfHx8AAAAAAAA ////////////AAAAAAAA////////////////////////////AAAAAAAA//// ////////AAAAAAAA////////////////////x8fHfHx8AAAAAAAA//////// AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//// ////////////////////////aGhoAAAA////////////8PDwAAAATU1N//// ////////AAAAAAAA////////////////////////////////2dnZAAAAp6en ////////0NDQmpqaAAAAjIyM////////aGho////////////AAAAAAAA//// ////////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////// AAAAAAAA////////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////p6enAAAA6enp////////x8fH TU1N////////AAAAAAAA////////////AAAAAAAA////////vb29AAAA6enp ////////x8fHAAAAp6en////////////AAAAAAAA////////////p6enAAAA 6enp////////x8fHTU1N////p6enAAAA////////////AAAAfHx8//////// ////////////////////vb29AAAA6enp////////x8fHAAAAp6en//////// ////AAAAAAAA////////////////////////////////////p6enAAAA6enp ////////x8fHTU1N////vb29AAAA6enp////////x8fHAAAAp6en//////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// fHx8aGho////////////AAAAAAAA////////p6enAAAA6enp////////x8fH TU1N////////AAAAAAAA////////////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////TU1NAAAA////////////AAAA jIyM////////////////////////////////jIyMAAAA4eHh////////0NDQ p6en////////////vb29AAAA6enp////////x8fHAAAAp6en////////AAAA AAAA////////////AAAAAAAA//////////////////////////////////// AAAAAAAA////////AAAA6enp////////6enpAAAA//////////////////// ////////fHx8aGho////////////AAAAAAAA////AAAAAAAA6enp//////// ////////vb29AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA//// ////////AAAAAAAA////////AAAA6enp////////6enpAAAA////////p6en AAAA////////////AAAAfHx8////////vb29AAAA2dnZ////////8PDwAAAA AAAA////////////////////////////////AAAAAAAA////////////AAAA AAAA6enp////////////////vb29AAAA6enp////////x8fHAAAAp6en//// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////////////////////////AAAAAAAA////////////////AAAAAAAA//// ////////AAAAAAAA////////p6enAAAA////////////AAAAfHx8//////// ////////////////////TU1NAAAA////////////AAAAjIyM//////////// p6enAAAA////////////AAAAfHx8////////vb29AAAA6enp////////x8fH AAAAp6en////////TU1NAAAA////////////AAAAjIyM////////AAAAAAAA 6enp////////////////fHx8aGho////////////AAAAAAAA////AAAAAAAA ////////////0NDQAAAAjIyM////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////p6enAAAA6enp////////x8fH TU1N////////fHx8aGho////////////AAAAAAAA////////////AAAAAAAA ////////////////////////////AAAAAAAA////////////AAAAAAAA//// ////fHx8aGho////////////AAAAAAAA////////AAAAAAAA//////////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA6enp//// ////////p6enAAAA////////////AAAAfHx8//////////////////////// ////vb29AAAA6enp////////x8fHAAAAp6en////////////AAAAAAAA//// ////////////////////////////mpqaAAAA2dnZ////////////TU1NAAAA 0NDQ////////p6en0NDQ////////AAAAAAAA////////////AAAAAAAA//// ////p6enAAAA////////////AAAAfHx8////////AAAAAAAA6enp//////// ////////p6enAAAA////////////AAAAfHx8//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////TU1NfHx8////////aGhofHx8////////AAAAAAAA x8fH////2dnZAAAAaGho////////////TU1Nmpqa////6enpTU1NTU1N8PDw ////////TU1NAAAAAAAA////////////////TU1NfHx8////////aGhofHx8 ////6enpTU1Np6en////vb29AAAA0NDQ//////////////////////////// ////TU1Nmpqa////6enpTU1NTU1N8PDw////////////AAAAAAAA//////// ////////////////////////////////TU1NfHx8////////aGhofHx8//// ////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1NAAAAAAAAx8fH////4eHh AAAAaGho////////////AAAAAAAA////////////fHx8AAAA6enp////0NDQ AAAAaGho////////////TU1NfHx8////////aGhofHx8////////AAAAAAAA ////////////////TU1NAAAAAAAA////TU1NAAAAAAAAx8fH////4eHhAAAA aGho////////////vb29AAAAx8fH////p6enAAAAAAAAAAAA//////////// ////////////vb29AAAAaGho////////////////TU1N6enp//////////// TU1Nmpqa////6enpTU1NTU1N8PDw////6enpAAAAAAAA////////4eHhAAAA AAAA////////////////////////////////TU1NAAAAAAAA////////jIyM 4eHh////8PDwfHx8AAAA////////////////////////////fHx8AAAA6enp ////0NDQAAAAaGhoTU1NAAAAAAAAx8fH8PDwmpqafHx8////////TU1Nmpqa ////6enpTU1NTU1N8PDw////6enpAAAAAAAA////////4eHhAAAAAAAA//// ////jIyM4eHh////8PDwfHx8AAAA////////6enpTU1Np6en////vb29AAAA 0NDQ////////////fHx8aGho8PDw////p6enAAAAAAAA//////////////// ////////////////AAAAAAAA////////TU1NAAAAAAAAx8fH8PDwmpqafHx8 ////////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1NAAAAAAAA0NDQ//// x8fHAAAAaGhox8fH////4eHhAAAAaGho//////////////////////////// ////AAAAAAAA////////////////AAAAAAAAx8fH////2dnZAAAAaGho//// ////6enpTU1Np6en////vb29AAAA0NDQ//////////////////////////// vb29AAAAx8fH////p6enAAAAAAAAAAAA////////6enpTU1Np6en////vb29 AAAA0NDQ////////////TU1Nmpqa////6enpTU1NTU1N8PDw////////vb29 AAAAx8fH////p6enAAAAAAAAAAAATU1NAAAAAAAAx8fH8PDwmpqafHx8//// fHx8AAAA6enp////0NDQAAAAaGhoAAAAAAAAAAAAx8fH////8PDwaGhoAAAA 2dnZ////////////AAAAAAAAx8fH////2dnZAAAAaGho////////TU1NAAAA AAAA////////////////TU1NfHx8////////aGhofHx8////////fHx8AAAA 6enp////0NDQAAAAaGho////////////AAAAAAAA//////////////////// ////TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////fHx8AAAA6enp//// 0NDQAAAAaGho////////AAAAAAAA////////////6enpAAAAAAAA//////// 4eHhAAAAAAAA////////TU1NAAAAAAAAx8fH8PDwmpqafHx86enpTU1Np6en ////vb29AAAA0NDQ////////////////////////////////TU1Nmpqa//// 6enpTU1NTU1N8PDw////////////AAAAAAAA//////////////////////// ////4eHhAAAATU1N////////////////TU1NAAAA////////////4eHhaGho 8PDw////AAAAAAAAx8fH////2dnZAAAAaGho////////6enpTU1Np6en//// vb29AAAA0NDQ////TU1NAAAAAAAAx8fH8PDwmpqafHx8////6enpTU1Np6en ////vb29AAAA0NDQ//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwp6enAAAAAAAAmpqa////////////AAAAAAAA////srKyAAAAaGho6enp ////////////8PDwp6enAAAAAAAAmpqa6enp////////////6enpp6enTU1N ////////////////8PDwp6enAAAAAAAAmpqa////////////6enpjIyMAAAA TU1Nvb29////////////////////////////////////8PDwp6enAAAAAAAA mpqa6enp////////AAAAAAAAAAAAAAAAAAAAAAAA//////////////////// ////////////8PDwp6enAAAAAAAAmpqa////////////8PDwp6enAAAAAAAA mpqa6enp////////6enpp6enTU1N////srKyAAAATU1N4eHh////////AAAA AAAAAAAAAAAAAAAA////////p6enTU1NAAAAAAAAmpqa6enp//////////// 8PDwp6enAAAAAAAAmpqa////////AAAAAAAAAAAAAAAAAAAA////////6enp p6enTU1N////6enpp6enTU1N////srKyAAAATU1N4eHh//////////////// x8fHaGhoAAAAjIyM6enp////////////////////////////vb29AAAAAAAA AAAAjIyM////////jIyMAAAAAAAA4eHh////////8PDwp6enAAAAAAAAmpqa 6enp////////AAAAAAAAAAAA////////AAAAAAAAAAAA//////////////// ////////////////6enpp6enTU1N////////////jIyMAAAAmpqa6enpAAAA ////////////////////////////////p6enTU1NAAAAAAAAmpqa6enp6enp srKyTU1N////srKyAAAAmpqa////////8PDwp6enAAAAAAAAmpqa6enp//// ////AAAAAAAAAAAA////////AAAAAAAAAAAA////////////jIyMAAAAmpqa 6enpAAAA////////////6enpjIyMAAAATU1Nvb29//////////////////// p6enAAAATU1N2dnZAAAAAAAA////////////////////////AAAAAAAAAAAA AAAAAAAAAAAA6enpsrKyTU1N////srKyAAAAmpqa////////8PDwp6enAAAA AAAAmpqa6enp////////6enpp6enTU1N////srKyAAAAaGho4eHh////p6en AAAAaGho4eHh////////////////////////////AAAAAAAAAAAAAAAAAAAA ////////AAAAAAAA////srKyAAAAaGho6enp////////////6enpjIyMAAAA TU1Nvb29////////////////////////////////////x8fHaGhoAAAAjIyM 6enp////////////////////6enpjIyMAAAATU1Nvb29//////////////// 8PDwp6enAAAAAAAAmpqa6enp////////////////x8fHaGhoAAAAjIyM6enp ////////6enpsrKyTU1N////srKyAAAAmpqa////////p6enTU1NAAAAAAAA mpqa6enp6enpsrKyTU1N////mpqaAAAATU1N0NDQ////////////////AAAA AAAA////srKyAAAAaGho6enp////////6enpp6enTU1N//////////////// 8PDwp6enAAAAAAAAmpqa////////////////p6enTU1NAAAAAAAAmpqa6enp ////////////AAAAAAAA////////////////////////6enpp6enTU1N//// srKyAAAATU1N4eHh////////////p6enTU1NAAAAAAAAmpqa6enp////AAAA AAAAAAAAAAAAAAAA////AAAAAAAAAAAA////////AAAAAAAAAAAA//////// 6enpsrKyTU1N////srKyAAAAmpqa////6enpjIyMAAAATU1Nvb29//////// ////////////////////////////8PDwp6enAAAAAAAAmpqa6enp//////// AAAAAAAAAAAAAAAAAAAAAAAA////////////////vb29AAAAAAAAAAAAjIyM ////vb29AAAAAAAAAAAAp6en////////AAAAAAAAAAAA////AAAAAAAA//// srKyAAAAaGho6enp////////////6enpjIyMAAAATU1Nvb29////////6enp srKyTU1N////srKyAAAAmpqa////////6enpjIyMAAAATU1Nvb29//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////0NDQAAAAAAAA//////////// //////////////////////////////////////////////////////////// ////////0NDQAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////0NDQAAAAAAAA////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// ////////////////////////////////////0NDQAAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// ////////////////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////TU1NAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////x8fHAAAA//////////////////////////////// ////////////////////////////////////////////////////x8fHAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////////////TU1NAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////x8fHAAAA////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////////////x8fHAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////TU1NAAAA//////////////////////// //////////////////////////////////////////////////////////// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////mpqaAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwAAAA//////////////////////////////////////////////////// ////////////////////////////////8PDwAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////////////////////////mpqa AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////8PDwAAAA//////// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////mpqaAAAA//////////////////////////////////////////// ////////////////////////////////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////aGhoAAAAAAAA//////////////////////////////////////// ////////////////////////////////fHx8fHx8//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////6enpTU1Nx8fH////4eHhaGhoaGho//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////fHx8fHx8//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// fHx8fHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////aGhoAAAA AAAA////////////////////////////////6enpTU1Nx8fH////4eHhaGho aGho//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////aGhoAAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////aGhoAAAAAAAA//////////////// ////////////////fHx8fHx8//////////////////////////////////// ////////////////////////////////////////////////aGhoAAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////6enpTU1Nx8fH ////4eHhaGhoaGho//////////////////////////////////////////// ////////////////////////aGhoAAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////6enpp6enTU1N //////////////////////////////////////////////////////////// ////////////fHx8fHx8//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////8PDwmpqaAAAA AAAAfHx82dnZ//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////fHx8fHx8//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////fHx8fHx8//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////6enpp6enTU1N//////////////// ////////////////////8PDwmpqaAAAAAAAAfHx82dnZ//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////6enpp6enTU1N//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////6enpp6enTU1N////////////////////////////////fHx8 fHx8//////////////////////////////////////////////////////// ////////////////////////////6enpp6enTU1N//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////8PDwmpqaAAAAAAAAfHx82dnZ//// //////////////////////////////////////////////////////////// ////6enpp6enTU1N//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwp6enaGhoAAAAAAAAfHx8vb29//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////AAAAAAAAAAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////TU1Nmpqa4eHh//////// ////2dnZmpqa//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////6enpAAAAAAAA 6enp//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////p6en////////////////////////8PDwp6en//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////2dnZ4eHh////////////////2dnZAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAAAAAAAAAAAAAAAAAA////////6enpmpqaAAAAAAAA p6en8PDw////////AAAAAAAAAAAATU1N////////////////////4eHhfHx8 AAAAmpqa6enp////////////AAAAAAAAAAAAAAAA////0NDQTU1NAAAAAAAA AAAAAAAAAAAAaGho////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//// ////////////////////////////4eHhaGhoAAAAaGho6enpTU1Np6en6enp ////4eHhfHx8AAAAmpqa6enp////////////////6enpfHx8AAAAaGho0NDQ ////////////////4eHhfHx8AAAAmpqa6enp////////////4eHhTU1NAAAA p6en////mpqaAAAAjIyM6enpAAAA6enpjIyMAAAAjIyM////////////4eHh fHx8AAAAmpqa6enp////////////////4eHhaGhoAAAAaGho6enpTU1Np6en 6enp////////////////////////////6enpfHx8AAAAaGho0NDQ//////// ////4eHhTU1NAAAAsrKy////TU1Np6en6enp////AAAA6enpjIyMAAAAjIyM ////////////0NDQAAAAfHx86enp////////////6enpmpqaAAAAAAAAp6en 8PDw////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////////////4eHhfHx8AAAAmpqa6enp////////AAAAAAAAAAAA TU1N////////////////////////////////////4eHhaGhoAAAAaGho6enp TU1Np6en6enp////////4eHhfHx8AAAAmpqa6enp////////////AAAAAAAA 0NDQTU1NAAAAmpqa8PDw////////////////6enpmpqaAAAAAAAAp6en8PDw ////////AAAA6enpjIyMAAAAjIyM////////////////AAAAAAAAAAAAAAAA ////0NDQAAAAfHx86enp////////4eHhfHx8AAAAmpqa6enp//////////// ////4eHhaGhoAAAAaGho6enpTU1Np6en6enp////////////////////AAAA AAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////////4eHhfHx8AAAAmpqa 6enp////AAAAAAAAAAAATU1N////////////////////4eHhfHx8AAAAmpqa 6enp////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////////////////////////////0NDQ AAAAfHx86enp////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////// 4eHhfHx8AAAAmpqa6enp////////////////////////////AAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAaGhop6en6enp////////////4eHhTU1NAAAAp6en ////mpqaAAAAjIyMAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAA AAAAAAAAAAAA////4eHhAAAAAAAAAAAA//////////////////////////// ////////0NDQfHx8////////////////2dnZaGho////////////AAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////////////4eHhfHx8AAAAmpqa6enp ////////AAAAAAAAAAAATU1N////////////////4eHhfHx8AAAAmpqa6enp ////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAA//////// ////////////////////////0NDQfHx8////////////////2dnZaGho//// ////////////////////6enpmpqaAAAAAAAAp6en8PDw////AAAAAAAAAAAA TU1N////////////AAAAAAAAAAAAAAAA////4eHhAAAAAAAAAAAA//////// fHx8fHx8////////////////////////////////////////AAAAAAAAAAAA AAAAAAAAAAAA////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA ////////4eHhfHx8AAAAmpqa6enp//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////0NDQ AAAAAAAA2dnZ////////8PDwTU1NaGho8PDw////p6enaGho////////6enp AAAAAAAA////////////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//// ////6enpAAAAAAAA6enp////AAAAAAAAAAAAAAAAAAAAAAAAaGho6enp//// 6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp//////////////////////// ////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho6enpAAAAAAAAAAAAAAAA AAAA4eHh////////6enpTU1NAAAAAAAAAAAAaGho6enp////////6enpAAAA AAAAAAAAAAAAAAAA4eHh////////aGhoAAAA0NDQ////x8fHAAAAAAAA//// srKyAAAAfHx84eHh////4eHhjIyM////6enpAAAAAAAAAAAAAAAAAAAA4eHh ////////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho//////////////// ////////6enpTU1NAAAAAAAAAAAAaGho6enp////////aGhoAAAA2dnZ//// x8fHAAAAAAAAaGho////AAAAfHx84eHh////4eHhjIyM////////TU1NAAAA 6enpjIyM////////8PDwTU1NaGho8PDw////p6enaGho////////6enpAAAA AAAA8PDw////6enpAAAAAAAA6enp////6enpAAAAAAAA6enp////////6enp AAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAAAAAA//////////////////// ////////////////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho////6enp AAAAAAAAAAAAAAAAAAAA4eHh////////AAAAAAAAp6en////8PDwfHx8TU1N ////////////8PDwTU1NaGho8PDw////p6enaGho////////AAAAfHx84eHh ////4eHhjIyM////////////6enpAAAAAAAA6enp////TU1NAAAA6enpjIyM ////6enpAAAAAAAAAAAAAAAAAAAA4eHh////////4eHhAAAATU1N4eHh//// vb29AAAAAAAAaGho////////////////////6enpAAAAAAAA6enp////8PDw AAAAAAAA6enp////////6enpAAAAAAAAAAAAAAAAAAAA4eHh6enpAAAAAAAA ////////////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////// ////////////////6enpAAAAAAAA6enp6enpAAAAAAAA8PDw////8PDwAAAA AAAA6enp////////////////////////////TU1NAAAA6enpjIyM////6enp AAAAAAAA6enp////8PDwAAAAAAAA6enp////6enpAAAAAAAAAAAAAAAAAAAA 4eHh////////////////////////////6enpAAAAAAAA8PDw//////////// 0NDQTU1NAAAA4eHh////////aGhoAAAA0NDQ////x8fHAAAAAAAA////mpqa AAAAAAAA8PDw////8PDwAAAAAAAA6enp////6enpAAAAAAAA8PDw//////// fHx8TU1N8PDw////////////////////////////////////fHx8AAAA0NDQ ////////////p6enAAAA2dnZ////////6enpAAAAAAAA6enp////8PDwAAAA AAAA6enp////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAAAAAA ////////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////// ////////////8PDwAAAAAAAA8PDw//////////////////////////////// ////fHx8AAAA0NDQ////////////p6enAAAA2dnZ////////////////8PDw TU1NaGho8PDw////p6enaGho////6enpAAAAAAAA////////////////6enp AAAAAAAA8PDw////////fHx8TU1N8PDw////////fHx8fHx8//////////// ////////////////////////////////6enpAAAAAAAA6enp//////////// ////6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp////6enpAAAAAAAAAAAA AAAAAAAA4eHh//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAAAAAA//////////// ////////mpqaAAAAfHx88PDw////6enpaGho////////////AAAAAAAA//// ////srKy8PDw////////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////////////////////////////mpqaAAAAx8fH//// ////////AAAAAAAA////mpqaAAAAfHx88PDw////6enpaGho////////mpqa AAAAfHx8////////4eHhjIyM////////mpqaAAAAfHx88PDw////6enpaGho ////////AAAAAAAA////////////AAAAAAAA////////AAAA8PDw//////// x8fHAAAA////mpqaAAAAfHx88PDw////6enpaGho////////mpqaAAAAx8fH ////////////AAAAAAAA////////////////////////////mpqaAAAAfHx8 ////////4eHhjIyM////////AAAAAAAA////////////AAAAAAAA//////// AAAA8PDw////////x8fHAAAA////////AAAAAAAA////////////////p6en AAAA0NDQ////////8PDwAAAAvb29////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////mpqaAAAAfHx88PDw////6enp aGho////////AAAAAAAA////////////////////////////////////mpqa AAAAx8fH////////////AAAAAAAA////////mpqaAAAAfHx88PDw////6enp aGho////////AAAAAAAA////////////2dnZAAAAsrKy////////p6enAAAA 0NDQ////////8PDwAAAAvb29////AAAA8PDw////////x8fHAAAA//////// ////////AAAAAAAA////////AAAAAAAA////////////mpqaAAAAfHx88PDw ////6enpaGho////////mpqaAAAAx8fH////////////AAAAAAAA//////// ////////////////////AAAAAAAA////////////AAAAAAAA//////////// mpqaAAAAfHx88PDw////6enpaGho////AAAAAAAA//////////////////// mpqaAAAAfHx88PDw////6enpaGho//////////////////////////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////////////AAAAAAAA//////////// AAAAAAAA////////mpqaAAAAfHx88PDw////6enpaGho//////////////// ////////////////AAAAAAAA////////////////////4eHhAAAAaGho//// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////fHx8TU1N6enp//////////// ////////////////////////8PDwAAAAmpqajIyM////////////AAAATU1N jIyM////////////AAAAAAAA////////////AAAAAAAA////////////mpqa AAAAfHx88PDw////6enpaGho////////AAAAAAAA////////////////mpqa AAAAfHx88PDw////6enpaGho////////////////////////////////AAAA AAAA////////////////////////////////////8PDwAAAAmpqajIyM//// ////////AAAATU1NjIyM////////////////p6enAAAA0NDQ////////8PDw AAAAvb29////AAAAAAAA////////////////////AAAAAAAA////////fHx8 TU1N6enp//////////////////////////////////////////////////// ////////////////AAAAAAAA////////////////////////AAAAAAAA//// ////////AAAAAAAA////////mpqaAAAAfHx88PDw////6enpaGho//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////TU1NAAAA8PDw//////// ////AAAAaGho////////AAAAAAAA////////////////////AAAAAAAA2dnZ ////////////////////////////AAAAAAAA////////////srKyjIyMAAAA aGho2dnZ////////////////AAAAAAAA////////////AAAAAAAA//////// ////////////////////////AAAAAAAA////////////////AAAAAAAA//// AAAAAAAA2dnZ////////////////////////TU1NAAAA6enp//////////// ////////////AAAAAAAA2dnZ////////////////////////p6enAAAAx8fH ////////AAAAAAAA////////////////x8fHaGhoAAAAjIyM////AAAAAAAA 2dnZ////////////////////////AAAAAAAA////////////////AAAAAAAA ////////////////////////////TU1NAAAA6enp//////////////////// ////AAAAAAAA////////////AAAAAAAA////////////////x8fHaGhoAAAA jIyM////////AAAAAAAA////////////////TU1NAAAA8PDw//////////// AAAAaGho////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA2dnZ////////////////////////AAAAAAAA ////////////////////////////////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA2dnZ////////////////////////AAAAAAAA ////////////////AAAAaGho////////TU1NAAAA8PDw////////////AAAA aGho////////////x8fHaGhoAAAAjIyM////////////////AAAAAAAA//// ////AAAAAAAA////////////AAAAAAAA2dnZ//////////////////////// AAAAAAAA////////////////AAAAAAAA//////////////////////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA2dnZ//////// ////////////AAAAAAAA////////////////////AAAAAAAA2dnZ//////// ////////////////////////////////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////////AAAAAAAA////////////AAAAAAAA////////AAAA AAAA2dnZ////////////////////////////////////////////////AAAA AAAA////////////////////////AAAAAAAA////////p6enAAAAx8fH//// ////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////mpqaAAAA0NDQ//////////////////////////////////// ////srKyAAAA0NDQ0NDQ0NDQ////x8fHAAAAx8fHfHx88PDw////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA2dnZ//////////// ////////////AAAAAAAA////////////////AAAAAAAA2dnZ//////////// ////////////////////////////////////AAAAAAAA//////////////// ////////////////////srKyAAAA0NDQ0NDQ0NDQ////x8fHAAAAx8fHfHx8 8PDw////////////TU1NAAAA8PDw////////////AAAAaGho////AAAAAAAA ////////////////////AAAAAAAA////mpqaAAAA0NDQ//////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////////AAAAAAAA////////////AAAAAAAA//// ////AAAAAAAA2dnZ//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA//////// AAAAAAAA////////////////////AAAAAAAA//////////////////////// ////////AAAAAAAA////////0NDQAAAAp6en////0NDQAAAA0NDQ//////// ////AAAAAAAA////////////AAAAAAAA//////////////////////////// ////AAAAAAAA////////////////AAAAAAAA////AAAAAAAA//////////// ////////////////AAAAAAAA////////////////////////////AAAAAAAA ////////////////////////////////srKyTU1Np6en6enpAAAAAAAA//// ////2dnZTU1NAAAAAAAAjIyM////////AAAAAAAA//////////////////// ////////AAAAAAAA////////////////AAAAAAAA//////////////////// ////////AAAAAAAA////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////2dnZTU1NAAAAAAAAjIyM////////////AAAAAAAA ////////////////AAAAAAAA////////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////////////////AAAAAAAA//////////////////// ////////////////AAAAAAAA////////////////AAAAAAAA////////AAAA AAAA////////////////////////////AAAAAAAA////////////////AAAA AAAA////////AAAAAAAA////////////////AAAAAAAA////2dnZTU1NAAAA AAAAjIyM////////////////////AAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA////////////////////////////AAAAAAAA//////////// ////AAAAAAAA////////////////////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////////////////AAAAAAAA ////////////////////AAAAAAAA//////////////////////////////// ////////////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////////////////////////AAAAAAAA//////////////// AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////////// ////////////////////////////////////AAAAAAAA//////////////// ////x8fHAAAAjIyM////////////srKyTU1Np6en6enpAAAAAAAA//////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAAp6enAAAAvb29 ////////////////////////////////////////////TU1NAAAA//////// jIyM////aGhoAAAA8PDw0NDQsrKy////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////////////////AAAAAAAA ////////////////AAAAAAAA//////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// TU1NAAAA////////jIyM////aGhoAAAA8PDw0NDQsrKy////////////AAAA AAAA////////////////AAAAAAAA////AAAAAAAA//////////////////// AAAAAAAAp6enAAAAvb29//////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// aGhoAAAA////////////8PDwAAAATU1N////////AAAAAAAA//////////// ////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAAAAAA//// ////aGhoAAAA////////////AAAATU1N////////////AAAAAAAA//////// ////AAAAAAAA////////////////////////////////aGhoAAAA//////// ////////AAAAAAAA////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////TU1N AAAA////////////////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA ////////////////////x8fHfHx8AAAAAAAA////////aGhoAAAAp6en8PDw ////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////aGhoAAAA//// ////////////AAAAAAAA////////////////////////////TU1NAAAA//// ////////////////////////AAAAAAAA////////////AAAAAAAA//////// aGhoAAAAp6en8PDw////////////////AAAAAAAA////////////////aGho AAAA////////////8PDwAAAATU1N////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////TU1NAAAAAAAAAAAAAAAAAAAA AAAA////////AAAAAAAA////////////////////////////////////aGho AAAA////////////////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAA AAAA////////AAAAAAAA////////////////AAAAAAAA////////aGhoAAAA ////////////8PDwAAAATU1N////aGhoAAAAp6en8PDw//////////////// ////////AAAAAAAA////////AAAAAAAA////////////TU1NAAAAAAAAAAAA AAAAAAAAAAAA////////aGhoAAAA////////////////AAAAAAAA//////// ////////////////////AAAAAAAA////////////AAAAAAAA//////////// TU1NAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAA//////////////////// TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////////////AAAAAAAA//////////// AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////////// ////////////////AAAAAAAA////////////6enpp6enAAAAaGho6enp//// ////////////////x8fHfHx8AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA0NDQTU1N//////////////////////// ////////////////////2dnZAAAAp6en////////0NDQmpqaAAAAjIyM//// ////aGho////////AAAAAAAA////////////AAAAAAAA////////////TU1N AAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA////////////////TU1N AAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////AAAA AAAA////////////////////////////////2dnZAAAAp6en////////0NDQ mpqaAAAAjIyM////////aGho////////////aGhoAAAA////////////8PDw AAAATU1N////AAAAAAAA////////////////////AAAAAAAA0NDQTU1N//// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////////////////AAAAAAAA//// ////////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////vb29AAAA6enp//////// x8fHAAAAp6en////////AAAAAAAA6enp////////////////p6enAAAA//// ////////AAAAfHx8////////////AAAAAAAA////////TU1NAAAA//////// ////AAAAjIyM////////////AAAAAAAA////////////AAAAAAAA//////// ////////////////////////vb29AAAA2dnZ////////8PDwAAAAAAAA//// p6enAAAA////////////AAAAfHx8////////p6enAAAA6enp////////x8fH TU1N////////p6enAAAA////////////AAAAfHx8////////fHx8aGho//// ////////AAAAAAAA////////AAAA6enp////////6enpAAAA////p6enAAAA ////////////AAAAfHx8////////vb29AAAA2dnZ////////8PDwAAAAAAAA ////////////////////////////p6enAAAA6enp////////x8fHTU1N//// ////AAAAAAAA////////////AAAAAAAA////////AAAA6enp////////6enp AAAA////////AAAAAAAA////////////////vb29AAAA6enp////////x8fH AAAAp6en////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////p6enAAAA////////////AAAAfHx8////////AAAAAAAA 6enp////////////////////////////////vb29AAAA2dnZ////////8PDw AAAAAAAA////////p6enAAAA////////////AAAAfHx8////////AAAAAAAA ////////////0NDQAAAAjIyM////////vb29AAAA6enp////////x8fHAAAA p6en////AAAA6enp////////6enpAAAA////////////////AAAAAAAA//// ////AAAAAAAA////////////p6enAAAA////////////AAAAfHx8//////// vb29AAAA2dnZ////////8PDwAAAAAAAA//////////////////////////// AAAAAAAA////////////AAAAAAAA////////////p6enAAAA//////////// AAAAfHx8////AAAAAAAA6enp////////////////p6enAAAA//////////// AAAAfHx8////////////////////////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////////AAAAAAAA////////////AAAAAAAA////////p6en AAAA////////////AAAAfHx8////////////////////////////////AAAA AAAAAAAAAAAAAAAAAAAAAAAAp6en////////////////fHx8aGho//////// ////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////4eHhjIyM6enp//////////////////////////////////// mpqaAAAA2dnZ////////////TU1NAAAA0NDQ////////p6en0NDQ////AAAA AAAA////////////AAAAAAAA////////////p6enAAAA////////////AAAA fHx8////////AAAAAAAA6enp////////////p6enAAAA////////////AAAA fHx8////////////////////////////////AAAAAAAA//////////////// ////////////////mpqaAAAA2dnZ////////////TU1NAAAA0NDQ//////// p6en0NDQ////////vb29AAAA6enp////////x8fHAAAAp6en////AAAAAAAA 6enp////////////////AAAAAAAA////4eHhjIyM6enp//////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////////AAAAAAAA////////////AAAAAAAA//// ////p6enAAAA////////////AAAAfHx8//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1N AAAAAAAAx8fH8PDwmpqafHx8////6enpTU1Np6en////vb29AAAA0NDQ//// ////TU1NAAAAAAAA////////vb29AAAAx8fH////p6enAAAAAAAAAAAA//// TU1NAAAAAAAAx8fH////4eHhAAAAaGho//////////////////////////// ////////fHx8aGho8PDw////p6enAAAAAAAA////6enpTU1Np6en////vb29 AAAA0NDQ////////////TU1NfHx8////////aGhofHx8////////6enpTU1N p6en////vb29AAAA0NDQ////////fHx8AAAA6enp////0NDQAAAAaGho//// ////jIyM4eHh////8PDwfHx8AAAA////6enpTU1Np6en////vb29AAAA0NDQ ////////////fHx8aGho8PDw////p6enAAAAAAAA//////////////////// ////////////TU1NfHx8////////aGhofHx8////6enpAAAAAAAA//////// 4eHhAAAAAAAA////////jIyM4eHh////8PDwfHx8AAAA////////AAAAAAAA ////////////////////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1NAAAA AAAA0NDQ////x8fHAAAAaGhox8fH////4eHhAAAAaGho////////////6enp TU1Np6en////vb29AAAA0NDQ////TU1NAAAAAAAAx8fH8PDwmpqafHx8//// ////////////////////fHx8aGho8PDw////p6enAAAAAAAA////////6enp TU1Np6en////vb29AAAA0NDQ////AAAAAAAAAAAAx8fH////8PDwaGhoAAAA 2dnZ////////////TU1Nmpqa////6enpTU1NTU1N8PDw////jIyM4eHh//// 8PDwfHx8AAAA////////////TU1NAAAAAAAA////////AAAAAAAA//////// ////6enpTU1Np6en////vb29AAAA0NDQ////////////fHx8aGho8PDw//// p6enAAAAAAAA////////////////////////////AAAAAAAAx8fH////2dnZ AAAAaGho////////////6enpTU1Np6en////vb29AAAA0NDQTU1NAAAAAAAA x8fH8PDwmpqafHx8////6enpTU1Np6en////vb29AAAA0NDQ//////////// ////////////////TU1NAAAAAAAA////TU1NAAAAAAAAx8fH////4eHhAAAA aGho////////////////////////////////AAAAAAAA//////////////// AAAAAAAAx8fH////2dnZAAAAaGho////////6enpTU1Np6en////vb29AAAA 0NDQ////////////////////////////////AAAAAAAA////////////8PDw p6enAAAA0NDQ////////////fHx8AAAA6enp////0NDQAAAAaGho////TU1N AAAAAAAAx8fH////4eHhAAAAaGho////////////AAAAAAAA////////8PDw jIyM0NDQ////////////////////////////4eHhAAAATU1N//////////// ////TU1NAAAA////////////4eHhaGho8PDwAAAAAAAAx8fH////2dnZAAAA aGho////////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAAAAAA x8fH8PDwmpqafHx86enpTU1Np6en////vb29AAAA0NDQ//////////////// ////////////////AAAAAAAA////////////////////////////4eHhAAAA TU1N////////////////TU1NAAAA////////////4eHhaGho8PDw//////// TU1Nmpqa////6enpTU1NTU1N8PDwTU1NAAAAAAAAx8fH8PDwmpqafHx8//// AAAAAAAA////////8PDwjIyM0NDQ//////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////AAAAAAAAx8fH////2dnZAAAAaGho////////6enpTU1Np6en//// vb29AAAA0NDQ//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAA//// ////8PDwp6enAAAAAAAAmpqa6enp////////6enpsrKyTU1N////srKyAAAA mpqa////////6enpjIyMAAAATU1Nvb29////////////6enpp6enTU1N//// ////////x8fHaGhoAAAAjIyM6enp////////////6enpp6enTU1N////srKy AAAATU1N4eHh////////////////////////////////////////p6enAAAA TU1N2dnZAAAAAAAA////////6enpjIyMAAAATU1Nvb29//////////////// 8PDwp6enAAAAAAAAmpqa////////////////6enpjIyMAAAATU1Nvb29//// ////////////p6enTU1NAAAAAAAAmpqa6enp////////////jIyMAAAAmpqa 6enpAAAA////////6enpjIyMAAAATU1Nvb29////////////////////p6en AAAATU1N2dnZAAAAAAAA////////////////////////////////8PDwp6en AAAAAAAAmpqa////////AAAAAAAAAAAA////////AAAAAAAAAAAA//////// ////jIyMAAAAmpqa6enpAAAA////AAAAAAAAAAAAAAAAAAAA//////////// 8PDwp6enAAAAAAAAmpqa6enp////////6enpp6enTU1N////srKyAAAAaGho 4eHh////p6enAAAAaGho4eHh////////////////6enpjIyMAAAATU1Nvb29 ////////6enpsrKyTU1N////srKyAAAAmpqa//////////////////////// ////p6enAAAATU1N2dnZAAAAAAAA////////////6enpjIyMAAAATU1Nvb29 ////////6enpsrKyTU1N////mpqaAAAATU1N0NDQ////////////////8PDw p6enAAAAAAAAmpqa6enp////////////jIyMAAAAmpqa6enpAAAA//////// ////6enpp6enTU1N////AAAAAAAAAAAAAAAAAAAA////////6enpjIyMAAAA TU1Nvb29////////////////////p6enAAAATU1N2dnZAAAAAAAA//////// ////////////////////AAAAAAAA////srKyAAAAaGho6enp//////////// ////6enpjIyMAAAATU1Nvb29////6enpsrKyTU1N////srKyAAAAmpqa//// ////6enpjIyMAAAATU1Nvb29////////////////////////////////6enp p6enTU1N////6enpp6enTU1N////srKyAAAATU1N4eHh//////////////// ////////////AAAAAAAAAAAAAAAAAAAA////////AAAAAAAA////srKyAAAA aGho6enp////////////6enpjIyMAAAATU1Nvb29//////////////////// ////////////////AAAAAAAA////////////////////AAAAaGho//////// ////////p6enTU1NAAAAAAAAmpqa6enp////6enpp6enTU1N////srKyAAAA TU1N4eHh////////////AAAAAAAA////////srKyAAAAAAAAAAAA//////// ////////////vb29AAAAAAAAAAAAjIyM////vb29AAAAAAAAAAAAp6en//// ////AAAAAAAAAAAAAAAAAAAA////srKyAAAAaGho6enp//////////////// 6enpjIyMAAAATU1Nvb29////////6enpsrKyTU1N////srKyAAAAmpqa//// 6enpjIyMAAAATU1Nvb29////////////////////////////////////AAAA AAAA////////////////////////vb29AAAAAAAAAAAAjIyM////vb29AAAA AAAAAAAAp6en////////AAAAAAAAAAAA////////8PDwp6enAAAAAAAAmpqa 6enp////6enpsrKyTU1N////srKyAAAAmpqa////AAAAAAAA////////srKy AAAAAAAAAAAA//////////////////////////////////////////////// ////////////////AAAAAAAA////////////////////////AAAAAAAA//// srKyAAAAaGho6enp////////////6enpjIyMAAAATU1Nvb29//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////0NDQAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 0NDQAAAAAAAA//////////////////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////0NDQAAAA AAAA////////////////AAAAAAAA//////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// ////////////////////////////////////4eHh////////////////AAAA AAAA////////////////4eHh////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// TU1NAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////x8fHAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////x8fHAAAA//////// //////////////////////////////////////////////////////////// ////AAAAAAAA////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////x8fHAAAA//////////////// AAAAAAAA//////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// 4eHhAAAAfHx8//////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// ////////////////AAAA8PDw////////////AAAAAAAA////////////8PDw AAAA////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////mpqaAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////8PDwAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////8PDwAAAA//////////////////////////// ////////////////////////////////////////////AAAAAAAA//////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////8PDwAAAA////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// ////////////6enpAAAAAAAA////////////0NDQTU1NAAAA4eHh//////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////8PDwAAAA AAAA8PDw//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// ////////////////////////////////////////////////////////AAAA mpqa////////////AAAAAAAA////////////mpqaAAAA////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////6enpTU1Nx8fH////4eHhaGhoaGho//////////// //////////////////////////////////////////////////////////// ////////////////////////////fHx8fHx8//////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////aGhoAAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////aGhoAAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////aGho AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////fHx8fHx8//// //////////////////////////////////////////////////////////// ////////////////////aGhoAAAAAAAA////////////////////////aGho AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////fHx8fHx8//////////// //////////////////////////////////////////////////////////// ////////////////aGhoAAAAAAAA//////////////////////////////// ////////////////////////////////////////////////AAAAAAAAAAAA AAAAAAAAAAAAAAAAaGhop6en6enp//////////////////////////////// ////////////////////////////////////////////////////////aGho AAAAAAAA//////////////////////////////////////////////////// ////////////////////////////////////////////////////aGhoAAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////aGhoAAAAAAAA//////////////////////////////// ////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAaGhoAAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////8PDwmpqaAAAAAAAAfHx82dnZ//////////////////////////////// //////////////////////////////////////////////////////////// ////////fHx8fHx8//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////6enpp6enTU1N//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////6enpp6enTU1N//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////6enpp6enTU1N//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////fHx8fHx8//////////////////////// //////////////////////////////////////////////////////////// 6enpp6enTU1N////////////////////////6enpp6enTU1N//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////fHx8fHx8//////////////////////////////// ////////////////////////////////////////////////////////6enp p6enTU1N//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////6enpp6enTU1N//////////// //////////////////////////////////////////////////////////// ////////////////////////////////6enpp6enTU1N//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////6enp p6enTU1N//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////6enpp6enTU1N//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////8PDwp6enaGhoAAAAAAAAfHx8vb29//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////mpqaAAAAmpqa//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////TU1Nmpqa4eHh//// ////////2dnZmpqa//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////fHx8AAAAAAAAfHx8//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////p6en////////////////////////8PDwp6en //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////mpqavb29//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////2dnZ4eHh////////////////2dnZAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////8PDwaGho//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////6enpfHx8AAAAaGho0NDQ ////////////AAAAAAAAAAAAAAAA////4eHhTU1NAAAAp6en////mpqaAAAA jIyM6enpAAAA6enpjIyMAAAAjIyM////////AAAA6enpjIyMAAAAjIyM//// ////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAA AAAAAAAAAAAA////////////4eHhfHx8AAAAmpqa6enp////////////4eHh aGhoAAAAaGho6enpTU1Np6en6enp////////////////////////4eHhTU1N AAAAp6en////mpqaAAAAjIyMAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA ////////////4eHhaGhoAAAAaGho6enpTU1Np6en6enp//////////////// ////////////6enpfHx8AAAAaGho0NDQ////////////6enpmpqaAAAAAAAA p6en8PDw////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAA////////AAAAAAAAAAAAAAAA////////4eHhaGho AAAAaGho6enpTU1Np6en6enp////////4eHhfHx8AAAAmpqa6enp//////// AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////0NDQAAAAfHx86enp ////AAAAAAAAAAAAAAAA////////4eHhTU1NAAAAp6en////mpqaAAAAjIyM 6enpAAAAAAAAAAAAAAAA////////////////////////////vb29TU1NAAAA aGhop6en8PDw////////////4eHhTU1NAAAAsrKy////TU1Np6en6enp//// 0NDQAAAAfHx86enp////////////////////////////AAAAAAAAAAAAAAAA ////0NDQAAAAfHx86enp////////////////////////////AAAAAAAAAAAA AAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////////// 0NDQp6en////////////////////////6enpmpqaAAAAAAAAp6en8PDw//// ////////AAAAAAAAAAAAAAAA////////////////////0NDQp6en//////// ////////////4eHhfHx8AAAAmpqa6enp////////////AAAA6enpjIyMAAAA jIyM////////////////////////////////4eHhTU1NAAAAp6en////mpqa AAAAjIyM6enp////////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAA AAAA////////4eHhTU1NAAAAsrKy////TU1Np6en6enp////0NDQTU1NAAAA AAAAAAAAAAAAAAAAaGho////////////4eHhfHx8AAAAmpqa6enp//////// ////////////////////////AAAA6enpjIyMAAAAjIyM////////////4eHh TU1NAAAAsrKy////TU1Np6en6enp////AAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA//////////////////////////////// 6enpmpqaAAAAAAAAp6en8PDw////////AAAAAAAAAAAAAAAAAAAAAAAA//// ////////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAA AAAAAAAAAAAA////////////6enpmpqaAAAAAAAAp6en8PDw////////AAAA AAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////////4eHhfHx8AAAAmpqa 6enp////////////////////////TU1N2dnZ//////////////////////// ////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATU1N//////// ////////////6enpmpqaAAAAAAAAp6en8PDw////////AAAAAAAAAAAAAAAA ////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////////////// ////////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enp//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////6enpTU1NAAAAAAAAAAAAaGho6enp////////6enpAAAA AAAA6enp////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKyAAAAfHx84eHh ////4eHhjIyM////AAAAfHx84eHh////4eHhjIyM////////////6enpAAAA AAAA6enp////0NDQAAAAAAAA2dnZ////////6enpAAAAAAAA6enp//////// 6enpAAAAAAAAAAAAAAAAAAAA4eHh////4eHhAAAATU1N4eHh////vb29AAAA AAAAaGho////////////////////////aGhoAAAA0NDQ////x8fHAAAAAAAA ////mpqaAAAAAAAA8PDw////8PDwAAAAAAAA6enp////////4eHhAAAATU1N 4eHh////vb29AAAAAAAAaGho////////////////////////6enpTU1NAAAA AAAAAAAAaGho6enp////8PDwTU1NaGho8PDw////p6enaGho//////////// 6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////0NDQAAAAAAAA2dnZ//// ////////6enpAAAAAAAA6enp////4eHhAAAATU1N4eHh////vb29AAAAAAAA aGho////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAAAAAA8PDw//// 8PDwAAAAAAAA6enp////////TU1NAAAA6enpjIyM////6enpAAAAAAAA6enp ////////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKy6enpAAAAAAAA6enp ////////////////////////TU1NAAAAvb29////6enpTU1NTU1N//////// ////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho////TU1NAAAA6enpjIyM//// ////////////////////////6enpAAAAAAAA6enp////TU1NAAAA6enpjIyM ////////////////////////////6enpAAAAAAAA6enp////6enpAAAAAAAA 8PDw////8PDwAAAAAAAA6enp////////////////aGhoaGho//////////// ////////8PDwTU1NaGho8PDw////p6enaGho////////////6enpAAAAAAAA 6enp////////////////////aGhoaGho////////////////6enpAAAAAAAA AAAAAAAAAAAA4eHh////////AAAAfHx84eHh////4eHhjIyM//////////// ////////////////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKy//////// ////////6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp////////aGhoAAAA 2dnZ////x8fHAAAAAAAAaGho////AAAAAAAAAAAAAAAAAAAAAAAAaGho6enp ////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////////////////// ////AAAAfHx84eHh////4eHhjIyM////////aGhoAAAA2dnZ////x8fHAAAA AAAAaGho////6enpAAAAAAAA8PDw////6enpAAAAAAAA6enp////6enpAAAA AAAA6enp////////////////////////////8PDwTU1NaGho8PDw////p6en aGho////////////0NDQAAAAAAAA2dnZ////////////////////////6enp AAAAAAAA8PDw////6enpAAAAAAAA6enp////6enpAAAAAAAA6enp//////// 8PDwTU1NaGho8PDw////p6enaGho////////6enpAAAAAAAA8PDw////8PDw AAAAAAAA6enp////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////////// ////x8fHAAAAmpqa////////////////////////////////////////0NDQ AAAAAAAA2dnZ////6enpAAAAAAAA////////////////////8PDwTU1NaGho 8PDw////p6enaGho////////6enpAAAAAAAA8PDw////6enpAAAAAAAA6enp ////6enpAAAAAAAA6enp////////////////////////////aGhoAAAA0NDQ ////x8fHAAAAAAAA////srKy//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////mpqa AAAAfHx8////////4eHhjIyM////////////AAAAAAAA////////AAAAAAAA ////////////AAAAAAAA////////AAAA8PDw////////x8fHAAAA////AAAA 8PDw////////x8fHAAAA////////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////////mpqaAAAAfHx88PDw//// 6enpaGho////mpqaAAAAx8fH////////////AAAAAAAA//////////////// ////////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//// ////////AAAAAAAA////////////mpqaAAAAx8fH////////////AAAAAAAA ////////////////////////////mpqaAAAAfHx8////////4eHhjIyM//// p6enAAAA0NDQ////////8PDwAAAAvb29////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////////////AAAAAAAA ////////mpqaAAAAx8fH////////////AAAAAAAA////////mpqaAAAAfHx8 8PDw////6enpaGho////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////AAAAAAAA////////////0NDQAAAAsrKy////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA//////////////////////////////// ////////AAAAAAAA////////AAAAAAAA//////////////////////////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////4eHhTU1Nx8fHvb29////////////////p6enAAAA0NDQ ////////8PDwAAAAvb29////////////AAAAAAAA//////////////////// 4eHhTU1Nx8fHvb29////////////mpqaAAAAfHx88PDw////6enpaGho//// ////AAAA8PDw////////x8fHAAAA////////////////////////////AAAA AAAA////////////AAAAAAAA////////////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////srKy8PDw////////////////////////////////mpqaAAAAfHx8 8PDw////6enpaGho////////////////////////////AAAA8PDw//////// x8fHAAAA////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////p6enAAAA0NDQ////////8PDwAAAAvb29//////////// AAAAAAAA////////////////////////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////p6enAAAA0NDQ//////// 8PDwAAAAvb29////////AAAAAAAA////////////AAAAAAAA//////////// mpqaAAAAfHx88PDw////6enpaGho////////////////aGhoAAAATU1N//// ////////////////////////////////////////AAAAAAAA//////////// AAAAAAAA////////////////////p6enAAAA0NDQ////////8PDwAAAAvb29 ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////AAAAAAAA////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////TU1NAAAA6enp//////////// ////////////////AAAAAAAA////////p6enAAAAx8fH////////AAAAAAAA ////////////////x8fHaGhoAAAAjIyM////////////x8fHaGhoAAAAjIyM ////////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////////AAAAAAAA2dnZ////////////////////AAAAAAAA ////////////////AAAAAAAA////////////////////////////p6enAAAA x8fH////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////////AAAAAAAA//////////////////// ////////TU1NAAAA6enp////////////////////TU1NAAAA8PDw//////// ////AAAAaGho////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////////////AAAAAAAA////////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA2dnZ//////////////////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////////AAAAAAAA////////////p6enAAAAx8fH////////AAAAAAAA//// ////////AAAAAAAA////////////////////////////AAAAAAAA//////// ////////AAAAaGho////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA////////////////////////////////////////AAAAAAAA//// ////AAAAAAAA////////////////////////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////////mpqa jIyM////fHx8////////////////TU1NAAAA8PDw////////////AAAAaGho ////////////AAAAAAAA////////////////////mpqajIyM////fHx8//// ////////AAAAAAAA2dnZ////////////////////////////////x8fHaGho AAAAjIyM////////////////////////////p6enAAAAx8fH////////AAAA AAAA////////////////////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////srKyjIyM AAAAaGho2dnZ////////////////AAAAAAAA2dnZ//////////////////// ////////////////////////////////x8fHaGhoAAAAjIyM////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////////////////////TU1N AAAA8PDw////////////AAAAaGho////////////AAAAAAAA//////////// ////////////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////TU1NAAAA8PDw////////////AAAAaGho//////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA2dnZ//////// ////////////////////0NDQAAAAp6ensrKyx8fH//////////////////// ////////////////////AAAAAAAA////////////AAAAAAAA//////////// ////////TU1NAAAA8PDw////////////AAAAaGho////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////////p6enAAAAx8fH////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////srKyTU1Np6en6enpAAAAAAAA////////2dnZTU1NAAAA AAAAjIyM////////2dnZTU1NAAAAAAAAjIyM////////////////////AAAA AAAA////////////AAAAAAAA////////////////AAAAAAAA//////////// AAAAAAAA////////////////////////AAAAAAAA////////////////AAAA AAAA////////////////////////////////srKyTU1Np6en6enpAAAAAAAA ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////AAAAAAAA////////////////////////////AAAAAAAA//// ////////////////////AAAAAAAA////////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////////////AAAAAAAA////////AAAAAAAA////////////////AAAAAAAA ////////AAAAAAAA////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA//// ////////////srKyTU1Np6en6enpAAAAAAAA////////////AAAAAAAA//// ////////////////////////AAAAAAAA////////////////AAAAAAAA//// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// ////////////////////////////AAAAAAAA////////AAAAAAAA//////// ////////////////////////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////8PDwAAAAvb29////vb290NDQ//// ////////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA ////////////////8PDwAAAAvb29////vb290NDQ////////AAAAAAAA//// ////////////////////////2dnZTU1NAAAAAAAAjIyM//////////////// ////////////////////srKyTU1Np6en6enpAAAAAAAA//////////////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////0NDQAAAAp6en////0NDQAAAA0NDQ//// ////////AAAAAAAA//////////////////////////////////////////// ////2dnZTU1NAAAAAAAAjIyM////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////////////////////AAAAAAAA//////////////// AAAAAAAA////////////AAAAAAAA//////////////////////////////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA//////////////////////////////// aGhoAAAA8PDw8PDwaGho//////////////////////////////////////// AAAAAAAA////////////AAAAAAAA////////////////////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////////////////////////////srKyTU1N p6en6enpAAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////TU1N AAAA////////////////////////////////AAAAAAAA//////////////// ////x8fHfHx8AAAAAAAA////////aGhoAAAAp6en8PDw////////////aGho AAAAp6en8PDw////////////////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////////TU1NAAAAAAAAAAAAAAAA AAAAAAAA////aGhoAAAA////////////////AAAAAAAA//////////////// ////////////////////////x8fHfHx8AAAAAAAA////////AAAAAAAA//// ////////AAAAAAAA////////////aGhoAAAA////////////////AAAAAAAA ////////////////////////////TU1NAAAA//////////////////////// aGhoAAAA////////////8PDwAAAATU1N////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////////////AAAAAAAA ////////aGhoAAAA////////////////AAAAAAAA////////TU1NAAAAAAAA AAAAAAAAAAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////////AAAAAAAA//////////////////////// x8fHfHx8AAAAAAAA////////////AAAAAAAA//////////////////////// ////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA//////////////////////////////// ////////AAAAAAAA////////AAAAAAAA//////////////////////////// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////srKyAAAA2dnZ////////jIyM////////////aGhoAAAA//// ////////8PDwAAAATU1N////////////AAAAAAAA////////////////srKy AAAA2dnZ////////jIyM////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//// ////aGhoAAAAp6en8PDw//////////////////////////////////////// ////////x8fHfHx8AAAAAAAA////////////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////aGhoAAAA////////////AAAATU1N////////////TU1NAAAAAAAA AAAAAAAAAAAAAAAA////////////////////////////aGhoAAAAp6en8PDw ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////aGhoAAAA////////////8PDwAAAATU1N//////////// AAAAAAAA////////////////////////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////aGhoAAAA//////////// 8PDwAAAATU1N////////AAAAAAAA////////////AAAAAAAA//////////// TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////0NDQAAAAmpqa////////jIyM 4eHh////////////////////////////////////AAAAAAAA//////////// AAAAAAAA////////////////////aGhoAAAA////////////8PDwAAAATU1N ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////////////////x8fHfHx8AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////p6enAAAA6enp////////x8fH TU1N////////////AAAAAAAA////////fHx8aGho////////////AAAAAAAA ////////AAAA6enp////////6enpAAAA////AAAA6enp////////6enpAAAA ////////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////////p6enAAAA////////////AAAAfHx8////vb29AAAA 2dnZ////////8PDwAAAAAAAA////////////////////////////fHx8aGho ////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////////vb29AAAA2dnZ////////8PDwAAAAAAAA//////////////////// ////////p6enAAAA6enp////////x8fHTU1N////vb29AAAA6enp//////// x8fHAAAAp6en////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////////////AAAAAAAA////////vb29AAAA2dnZ ////////8PDwAAAAAAAA////////p6enAAAA////////////AAAAfHx8//// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////////AAAAAAAA////////////fHx8aGho////////////AAAAAAAA//// ////////AAAAAAAA////////////////////////////AAAAAAAA//////// ////2dnZAAAAjIyM////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA////////////////////////////////////////AAAAAAAA//// ////AAAAAAAA////////////////////////////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////TU1NfHx8 8PDw////////srKy8PDw////////vb29AAAA6enp////////x8fHAAAAp6en ////////////AAAAAAAA////////////////TU1NfHx88PDw////////srKy 8PDw////p6enAAAA////////////AAAAfHx8////////AAAA6enp//////// 6enpAAAA////////////////////////////fHx8aGho////////////AAAA AAAA////////////////////////////AAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////TU1NAAAA//// ////////AAAAjIyM////////////p6enAAAA////////////AAAAfHx8//// ////////////////////////AAAA6enp////////6enpAAAA////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////////////////////vb29 AAAA6enp////////x8fHAAAAp6en////////////AAAAAAAA//////////// ////////////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////vb29AAAA6enp////////x8fHAAAAp6en//////// AAAAAAAA////////////AAAAAAAA////////////p6enAAAA//////////// AAAAfHx8////////jIyMAAAA4eHh////////0NDQp6en//////////////// ////////////////////AAAAAAAA////////////AAAAAAAA6enp//////// ////////vb29AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////////fHx8aGho////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////TU1NfHx8////////aGhofHx8////////////AAAA AAAA////////fHx8AAAA6enp////0NDQAAAAaGho////////jIyM4eHh//// 8PDwfHx8AAAA////jIyM4eHh////8PDwfHx8AAAA////////////TU1NAAAA AAAA////////////AAAAAAAA////////////TU1NAAAAAAAA//////////// 6enpTU1Np6en////vb29AAAA0NDQ////////fHx8aGho8PDw////p6enAAAA AAAA////////////////////////////fHx8AAAA6enp////0NDQAAAAaGho ////TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////////////fHx8aGho 8PDw////p6enAAAAAAAA////////////////////////////////TU1NfHx8 ////////aGhofHx8////////TU1Nmpqa////6enpTU1NTU1N8PDw//////// TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////////AAAAAAAA//////// ////////TU1NAAAAAAAA////////////fHx8aGho8PDw////p6enAAAAAAAA ////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAAAAAAx8fH//// 4eHhAAAAaGho////////////AAAAAAAA////////////TU1NAAAAAAAA//// ////////fHx8AAAA6enp////0NDQAAAAaGho////////////AAAAAAAA//// ////////////////////////AAAAAAAAx8fH////6enpTU1NAAAA2dnZ//// 6enpAAAAAAAA////////4eHhAAAAAAAA////////AAAAAAAA//////////// ////////////////////////TU1NAAAAAAAA////////AAAAAAAA//////// ////////////////////////////TU1NAAAAAAAA////////TU1NAAAAAAAA x8fH////4eHhAAAAaGho////4eHhmpqaAAAA////////////////8PDwjIyM ////////////TU1Nmpqa////6enpTU1NTU1N8PDw////////////AAAAAAAA ////////4eHhmpqaAAAA////////////////8PDwjIyM////6enpTU1Np6en ////vb29AAAA0NDQ////////jIyM4eHh////8PDwfHx8AAAA//////////// ////////////////fHx8AAAA6enp////0NDQAAAAaGho//////////////// ////////////AAAAAAAAx8fH////2dnZAAAAaGho////////6enpAAAAAAAA ////////4eHhAAAAAAAA////////vb29AAAAx8fH////p6enAAAAAAAAAAAA ////////6enpTU1Np6en////vb29AAAA0NDQ//////////////////////// ////jIyM4eHh////8PDwfHx8AAAA////6enpAAAAAAAA////////4eHhAAAA AAAA////////TU1NAAAAAAAA0NDQ////x8fHAAAAaGhox8fH////4eHhAAAA aGho////////////////////////////////////TU1Nmpqa////6enpTU1N TU1N8PDw////////////AAAAAAAA////////////////////////////TU1N AAAAAAAA0NDQ////x8fHAAAAaGhox8fH////4eHhAAAAaGho//////////// ////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1NAAAAAAAAx8fH////4eHh AAAAaGho////////////6enpTU1Np6en////vb29AAAA0NDQ////vb29AAAA aGho////////////////TU1N6enp//////////////////////////////// AAAAAAAA////////TU1NAAAAAAAAx8fH8PDwmpqafHx8////////TU1Nmpqa ////6enpTU1NTU1N8PDw////TU1NAAAAAAAA0NDQ////x8fHAAAAaGhox8fH ////4eHhAAAAaGho////////////////////////////////fHx8AAAA6enp ////0NDQAAAAaGho//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwp6enAAAAAAAAmpqa////////////////AAAAAAAA////////////p6en TU1NAAAAAAAAmpqa6enp////////////jIyMAAAAmpqa6enpAAAA//////// jIyMAAAAmpqa6enpAAAA////////////6enpp6enTU1N////AAAAAAAAAAAA AAAAAAAAAAAA////6enpp6enTU1N////////////////6enpjIyMAAAATU1N vb29////////////////p6enAAAATU1N2dnZAAAAAAAA//////////////// ////////////////p6enTU1NAAAAAAAAmpqa6enp////6enpp6enTU1N//// srKyAAAATU1N4eHh////////////////////p6enAAAATU1N2dnZAAAAAAAA ////////////////////////////////8PDwp6enAAAAAAAAmpqa//////// ////8PDwp6enAAAAAAAAmpqa6enp////////////6enpp6enTU1N////srKy AAAATU1N4eHh////AAAAAAAAAAAAAAAAAAAAAAAA////////6enpp6enTU1N ////////////////p6enAAAATU1N2dnZAAAAAAAA////////////6enpjIyM AAAATU1Nvb29////////6enpp6enTU1N////srKyAAAATU1N4eHh//////// AAAAAAAAAAAAAAAAAAAA////6enpp6enTU1N////////////////p6enTU1N AAAAAAAAmpqa6enp////////////AAAAAAAA//////////////////////// ////AAAAAAAA6enpjIyMAAAAaGho0NDQ////////AAAAAAAAAAAA//////// AAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAA//////////////////////// ////6enpp6enTU1N////AAAAAAAAAAAAAAAAAAAA//////////////////// ////////6enpp6enTU1N////////6enpp6enTU1N////srKyAAAATU1N4eHh vb29AAAAAAAAAAAAAAAA4eHh////////AAAAAAAAAAAA////////8PDwp6en AAAAAAAAmpqa6enp////////////////AAAAAAAA////vb29AAAAAAAAAAAA AAAA4eHh////////AAAAAAAAAAAA////6enpjIyMAAAATU1Nvb29//////// ////////jIyMAAAAmpqa6enpAAAA//////////////////////////////// p6enTU1NAAAAAAAAmpqa6enp////////////////////////////AAAAAAAA ////srKyAAAAaGho6enp////////AAAAAAAAAAAA////////AAAAAAAAAAAA ////////////x8fHaGhoAAAAjIyM6enp////////////////////6enpjIyM AAAATU1Nvb29////////////////////////////////////jIyMAAAAmpqa 6enpAAAA////AAAAAAAAAAAA////////AAAAAAAAAAAA////////6enpp6en TU1N////srKyAAAAaGho4eHh////p6enAAAAaGho4eHh//////////////// ////////////////////8PDwp6enAAAAAAAAmpqa6enp////////AAAAAAAA AAAAAAAAAAAAAAAA////////////////////6enpp6enTU1N////srKyAAAA aGho4eHh////p6enAAAAaGho4eHh////////////////8PDwp6enAAAAAAAA mpqa6enp////////6enpp6enTU1N////srKyAAAATU1N4eHh//////////// ////6enpjIyMAAAATU1Nvb29////vb29AAAAAAAAAAAAjIyM////////jIyM AAAAAAAA4eHh////////////////////AAAAAAAAAAAAAAAAAAAAAAAA6enp srKyTU1N////srKyAAAAmpqa////////8PDwp6enAAAAAAAAmpqa6enp//// ////6enpp6enTU1N////srKyAAAAaGho4eHh////p6enAAAAaGho4eHh//// ////////////////////////////////p6enTU1NAAAAAAAAmpqa6enp//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA//////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// ////////////////////////////////////////0NDQAAAAAAAA//////// //////////////////////////////////////////////////////////// ////////AAAAAAAA////////////////////////////AAAAAAAA//////// ////////////////////////////////////////////////////////0NDQ AAAAAAAA//////////////////////////////////////////////////// 0NDQAAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////TU1NAAAA//////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////TU1NAAAA//////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// ////////////////////////x8fHAAAA//////////////////////////// ////////////////////////////////////////////////AAAAAAAA//// ////////////////////////AAAAAAAA//////////////////////////// ////////////////////////////////////////x8fHAAAA//////////// ////////////////////////////////////////////x8fHAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////TU1NAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// TU1NAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////mpqa AAAA//////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////mpqaAAAA//////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// ////8PDwAAAA//////////////////////////////////////////////// ////////////////////////////AAAAAAAA//////////////////////// ////AAAAAAAA//////////////////////////////////////////////// ////////////////////8PDwAAAA//////////////////////////////// ////////////////////////8PDwAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// mpqaAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////mpqaAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////aGhoAAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////fHx8fHx8////////////6enpTU1Nx8fH////4eHhaGho aGhofHx8//////////////////////////////////////////////////// ////////////aGhoAAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////aGhoAAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////6enpTU1Nx8fH////4eHhaGhoaGhofHx8fHx8//////////////////// ////////aGhoAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////fHx8fHx8//////////////////////////////////////////// ////aGhoAAAAAAAA////////////////////////aGhoAAAAAAAA//////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////fHx8fHx8//// ////////////////////////////////////////////////////fHx8fHx8 //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////aGhoAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////aGhoAAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////6enpTU1Nx8fH////4eHh aGhoaGho//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////6enpTU1Nx8fH////4eHhaGhoaGho//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////6enpp6en TU1N//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////fHx8 fHx8////////////////8PDwmpqaAAAAAAAAfHx8fHx8fHx8//////////// ////////////////////////////////////////////////////6enpp6en TU1N//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////6enpp6enTU1N//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////8PDwmpqaAAAA AAAAfHx82dnZfHx8fHx8////////////////////////////6enpp6enTU1N //////////////////////////////////////////////////////////// ////////////////////////////////////////////////fHx8fHx8//// ////////////////////////////////////////////6enpp6enTU1N//// ////////////////////6enpp6enTU1N//////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////fHx8fHx8//////////////////////// ////////////////////////////////fHx8fHx8//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////6enpp6enTU1N //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////6enpp6enTU1N//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////8PDwmpqaAAAAAAAAfHx82dnZ//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////8PDwmpqaAAAAAAAAfHx82dnZ//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////mpqaAAAAmpqa//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////mpqaAAAAmpqa//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////mpqaAAAAmpqa //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////fHx8AAAAAAAA fHx8//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////fHx8AAAAAAAAfHx8//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////fHx8AAAAAAAAfHx8//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////mpqavb29//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////mpqavb29//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////mpqavb29//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////8PDwaGho//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////8PDwaGho//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwaGho//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////0NDQfHx8////////////////2dnZaGho////////////////AAAAAAAA AAAAAAAA////////0NDQAAAAfHx86enpAAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////////////////////////AAAAAAAAAAAATU1N//////////// ////4eHhfHx8AAAAmpqa6enp////////////AAAA6enpjIyMAAAAjIyM//// ////////////4eHhfHx8AAAAmpqa6enp////////AAAAAAAAAAAATU1N//// ////////////////////////0NDQp6en////////////////4eHhTU1NAAAA p6en////mpqaAAAAjIyM6enp0NDQAAAAfHx86enp////////AAAAAAAAAAAA AAAA////////6enpmpqaAAAAAAAAp6en8PDw////////AAAAAAAAAAAAAAAA ////AAAAAAAAAAAAAAAA////AAAA6enpjIyMAAAAjIyM////////////fHx8 fHx8////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAaGhop6en6enp////////////4eHhTU1NAAAAp6en////mpqaAAAAjIyM 6enpAAAA6enpjIyMAAAAjIyM////////////AAAAAAAAAAAAAAAA//////// 6enpfHx8AAAAaGho0NDQ////////////4eHhTU1NAAAAp6en////mpqaAAAA jIyM6enpAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////////// ////TU1N2dnZ////////////////////////////////////0NDQAAAAfHx8 6enp////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////////4eHh fHx8AAAAmpqa6enp////////////////////////////////AAAAAAAAAAAA AAAA////AAAA6enpjIyMAAAAjIyM////////////AAAA6enpjIyMAAAAjIyM ////////4eHhTU1NAAAAsrKy////TU1Np6en6enp////////////4eHhfHx8 AAAAmpqa6enp////////////////////////////AAAAAAAAAAAAAAAAAAAA AAAA////////////////////////////////0NDQfHx8//////////////// 2dnZaGho////////////////4eHhTU1NAAAAp6en////mpqaAAAAjIyM6enp AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////0NDQAAAAfHx86enp//// ////////////////////////0NDQAAAAfHx86enp////////6enpmpqaAAAA AAAAp6en8PDw////////////////////////////////4eHhTU1NAAAAsrKy ////TU1Np6en6enp////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAA AAAAAAAATU1N////////////////4eHhTU1NAAAAp6en////mpqaAAAAjIyM 6enp////////////0NDQp6en////////////////////////4eHhfHx8AAAA mpqa6enp////////////AAAAAAAAAAAAAAAA//////////////////////// 0NDQAAAAfHx86enp////////////6enpmpqaAAAAAAAAp6en8PDw//////// ////////////////////////////////TU1N2dnZ//////////////////// ////6enpmpqaAAAAAAAAp6en8PDw////////////4eHhTU1NAAAAsrKy//// TU1Np6en6enp////////////////////////////AAAAAAAAAAAAAAAA//// AAAA6enpjIyMAAAAjIyM//////////////////////////////////////// ////0NDQp6en////////////////////////4eHhfHx8AAAAmpqa6enp//// AAAAAAAAAAAATU1N////////////////////////////TU1N2dnZ//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////fHx8AAAA0NDQ//// ////////p6enAAAA2dnZ////////////6enpAAAAAAAA6enp////////TU1N AAAA6enpjIyM6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp//////////// ////////////6enpAAAAAAAA////////////////6enpAAAAAAAAAAAAAAAA AAAA4eHh////////AAAAfHx84eHh////4eHhjIyM////////6enpAAAAAAAA AAAAAAAAAAAA4eHh////6enpAAAAAAAA//////////////////////////// ////aGhoaGho////////////////aGhoAAAA0NDQ////x8fHAAAAAAAA//// srKyTU1NAAAA6enpjIyM////////6enpAAAAAAAA6enp////8PDwTU1NaGho 8PDw////p6enaGho////////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp ////AAAAfHx84eHh////4eHhjIyM////////fHx8fHx8//////////////// ////////////////6enpAAAAAAAA8PDw////////////0NDQTU1NAAAA4eHh ////////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKyAAAAfHx84eHh//// 4eHhjIyM////////6enpAAAAAAAA6enp////6enpTU1NAAAAAAAAAAAAaGho 6enp////////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKy6enpAAAAAAAA 6enp////6enpAAAAAAAA6enp////////////////x8fHAAAAmpqa//////// ////////////////////////////TU1NAAAA6enpjIyM////6enpAAAAAAAA 6enp////8PDwAAAAAAAA6enp////////6enpAAAAAAAAAAAAAAAAAAAA4eHh ////////////////////////////6enpAAAAAAAA6enp////AAAAfHx84eHh ////4eHhjIyM////////AAAAfHx84eHh////4eHhjIyM////aGhoAAAA2dnZ ////x8fHAAAAAAAAaGho////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//// ////////////////////////8PDwAAAAAAAA8PDw//////////////////// ////////////////fHx8AAAA0NDQ////////////p6enAAAA2dnZ//////// ////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKy6enpAAAAAAAA8PDw//// 8PDwAAAAAAAA6enp////TU1NAAAA6enpjIyM//////////////////////// ////TU1NAAAA6enpjIyM////8PDwTU1NaGho8PDw////p6enaGho//////// ////////////////////////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho//// 6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp6enpAAAAAAAA//////////// ////////aGhoAAAA0NDQ////x8fHAAAAAAAA////srKy////////////aGho aGho////////////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh//////// 6enpAAAAAAAA6enp////////////////////////TU1NAAAA6enpjIyM//// ////8PDwTU1NaGho8PDw////p6enaGho//////////////////////////// ////////x8fHAAAAmpqa////////////////////8PDwTU1NaGho8PDw//// p6enaGho////////////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho//////// ////////////////////6enpAAAAAAAA6enp////AAAAfHx84eHh////4eHh jIyM////////////////////////////////////////aGhoaGho//////// ////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh6enpAAAAAAAA//////// ////////////////////x8fHAAAAmpqa//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////8PDwAAAAmpqajIyM////////////AAAATU1NjIyM ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////////mpqaAAAAfHx88PDw////6enpaGho////////AAAA 8PDw////////x8fHAAAA////////mpqaAAAAfHx88PDw////6enpaGho//// ////AAAAAAAA////////////////////////////4eHhTU1Nx8fHvb29//// ////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////// ////////////AAAAAAAA////////p6enAAAA0NDQ////////8PDwAAAAvb29 ////////AAAAAAAA////////////AAAAAAAA////////AAAA8PDw//////// x8fHAAAA//////////////////////////////////////////////////// AAAAAAAA////////////////////4eHhAAAAaGho////////AAAAAAAA//// ////////AAAAAAAA////////AAAA8PDw////////x8fHAAAA//////////// AAAAAAAA////////mpqaAAAAfHx8////////4eHhjIyM////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////////////aGhoAAAATU1N//////////////////////////// ////////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA ////////////mpqaAAAAfHx88PDw////6enpaGho//////////////////// ////////////AAAAAAAA////////AAAA8PDw////////x8fHAAAA//////// AAAA8PDw////////x8fHAAAA////AAAAAAAA////////////AAAAAAAA//// ////////mpqaAAAAfHx88PDw////6enpaGho//////////////////////// ////////AAAAAAAA////////////////////////////////////8PDwAAAA mpqajIyM////////////AAAATU1NjIyM////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA////////////////////////////////////AAAAAAAA//////// ////p6enAAAA0NDQ////////8PDwAAAAvb29//////////////////////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA////////////////////AAAAAAAA//// ////////AAAAAAAA////////////////4eHhTU1Nx8fHvb29//////////// ////mpqaAAAAfHx88PDw////6enpaGho////////////AAAAAAAA//////// ////////////////////AAAAAAAA////////////////p6enAAAA0NDQ//// ////8PDwAAAAvb29////////////////////////////////aGhoAAAATU1N ////////////////////p6enAAAA0NDQ////////8PDwAAAAvb29//////// AAAAAAAA////////////AAAAAAAA//////////////////////////////// ////AAAAAAAA////////AAAA8PDw////////x8fHAAAA//////////////// ////////////////////4eHhTU1Nx8fHvb29////////////////mpqaAAAA fHx88PDw////6enpaGho////AAAAAAAA//////////////////////////// aGhoAAAATU1N//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// srKyAAAA0NDQ0NDQ0NDQ////x8fHAAAAx8fHfHx88PDw////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////////////////////AAAAAAAA//////////////// AAAAAAAA2dnZ////////////////////////////////x8fHaGhoAAAAjIyM ////////AAAAAAAA2dnZ////////////////////////AAAAAAAA//////// ////////////////////mpqajIyM////fHx8////////////p6enAAAAx8fH ////////AAAAAAAA////////AAAAAAAA////////////////////AAAAAAAA ////////TU1NAAAA8PDw////////////AAAAaGho////////AAAAAAAA//// ////////AAAAAAAA////////////////x8fHaGhoAAAAjIyM//////////// ////////////////////////////////////////AAAAAAAA//////////// ////////////AAAAAAAA////////p6enAAAAx8fH////////AAAAAAAA//// ////////////x8fHaGhoAAAAjIyM////////////AAAAAAAA////////TU1N AAAA6enp////////////////////////p6enAAAAx8fH////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////////0NDQ AAAAp6ensrKyx8fH////////////////////////////////AAAAAAAA//// ////////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA 2dnZ////////////////////////////////////////////////AAAAAAAA ////////////////x8fHaGhoAAAAjIyM////////////////x8fHaGhoAAAA jIyM////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA2dnZ ////////////////////////////////////////////////AAAAAAAA//// ////////////////////////////////srKyAAAA0NDQ0NDQ0NDQ////x8fH AAAAx8fHfHx88PDw////////p6enAAAAx8fH////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// ////////////////////////AAAAAAAA////////////TU1NAAAA8PDw//// ////////AAAAaGho////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA////////////////////p6enAAAAx8fH////////AAAAAAAA//// ////////////mpqajIyM////fHx8////////////////AAAAAAAA2dnZ//// ////////////////////////AAAAAAAA//////////////////////////// AAAAAAAA////////////////TU1NAAAA8PDw////////////AAAAaGho//// ////////////////////////0NDQAAAAp6ensrKyx8fH//////////////// TU1NAAAA8PDw////////////AAAAaGho////////AAAAAAAA//////////// AAAAAAAA////////////////////////////////////AAAAAAAA//////// ////////x8fHaGhoAAAAjIyM//////////////////////////////////// mpqajIyM////fHx8////////////////AAAAAAAA2dnZ//////////////// ////AAAAAAAA////////////////////////0NDQAAAAp6ensrKyx8fH//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////TU1NAAAA////////jIyM ////aGhoAAAA8PDw0NDQsrKy////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////AAAAAAAA////////////////AAAAAAAA//////////// ////////////////2dnZTU1NAAAAAAAAjIyM////////////AAAAAAAA//// ////////////////////////AAAAAAAA////////////////////////8PDw AAAAvb29////vb290NDQ////////////srKyTU1Np6en6enpAAAAAAAA//// ////AAAAAAAA////////////////////AAAAAAAA////////AAAAAAAA//// ////////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//// ////2dnZTU1NAAAAAAAAjIyM//////////////////////////////////// ////////////////////AAAAAAAA////////////////////x8fHAAAAjIyM ////////////srKyTU1Np6en6enpAAAAAAAA////////2dnZTU1NAAAAAAAA jIyM////////////////AAAAAAAA////////AAAAAAAA//////////////// ////////////////srKyTU1Np6en6enpAAAAAAAA////////////AAAAAAAA ////////////AAAAAAAA////////////////aGhoAAAA8PDw8PDwaGho//// ////////////////////////////AAAAAAAA////////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA//////////////////// ////////////////////////////////AAAAAAAA////////2dnZTU1NAAAA AAAAjIyM////////////2dnZTU1NAAAAAAAAjIyM////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////////////////////////////AAAAAAAA//////////////////////// ////////////TU1NAAAA////////jIyM////aGhoAAAA8PDw0NDQsrKy//// ////////srKyTU1Np6en6enpAAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA//////////////////////////////// ////AAAAAAAA////////////AAAAAAAA////////////////AAAAAAAA//// ////////////////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// ////////////srKyTU1Np6en6enpAAAAAAAA////////////8PDwAAAAvb29 ////vb290NDQ////////////AAAAAAAA//////////////////////////// ////AAAAAAAA////////////////////////////AAAAAAAA//////////// ////AAAAAAAA////////////////AAAAAAAA//////////////////////// ////aGhoAAAA8PDw8PDwaGho////////////////AAAAAAAA//////////// ////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////// ////////////////////////AAAAAAAA////////2dnZTU1NAAAAAAAAjIyM ////////////////////////////////////8PDwAAAAvb29////vb290NDQ ////////////AAAAAAAA////////////////////////AAAAAAAA//////// ////////////////aGhoAAAA8PDw8PDwaGho//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////2dnZAAAAp6en////////0NDQmpqaAAAAjIyM//////// aGho////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////////////////////AAAA AAAA////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////aGho AAAAp6en8PDw////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//// ////AAAAAAAA////////////////////////srKyAAAA2dnZ////////jIyM ////////////////////x8fHfHx8AAAAAAAA////////AAAAAAAA//////// ////////////AAAAAAAA////////aGhoAAAA////////////8PDwAAAATU1N ////////AAAAAAAA////////////AAAAAAAA////////aGhoAAAAp6en8PDw //////////////////////////////////////////////////////////// AAAAAAAA////////////6enpp6enAAAAaGho6enp//////////////////// x8fHfHx8AAAAAAAA////////aGhoAAAAp6en8PDw//////////////////// AAAAAAAA////////TU1NAAAA//////////////////////////////////// ////x8fHfHx8AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA ////////////0NDQAAAAmpqa////////jIyM4eHh//////////////////// ////////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA ////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////////////// ////////////AAAAAAAA////////aGhoAAAAp6en8PDw//////////////// aGhoAAAAp6en8PDw////////////AAAAAAAA////////////AAAAAAAA//// ////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////// ////////AAAAAAAA////////////////////////////////2dnZAAAAp6en ////////0NDQmpqaAAAAjIyM////////aGho////////////////////x8fH fHx8AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA////////////////////////////////////AAAAAAAA//////// ////aGhoAAAA////////////8PDwAAAATU1N//////////////////////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA//////////////////////////////// x8fHfHx8AAAAAAAA////////////srKyAAAA2dnZ////////jIyM//////// ////TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAAAAAA//////// ////////////////////AAAAAAAA////////////////aGhoAAAA//////// ////8PDwAAAATU1N////////////////////////0NDQAAAAmpqa//////// jIyM4eHh////////////aGhoAAAA////////////8PDwAAAATU1N//////// AAAAAAAA////////////AAAAAAAA//////////////////////////////// ////AAAAAAAA////////aGhoAAAAp6en8PDw//////////////////////// ////////////////srKyAAAA2dnZ////////jIyM////////////TU1NAAAA AAAAAAAAAAAAAAAAAAAA////AAAAAAAA////////////////////0NDQAAAA mpqa////////jIyM4eHh//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////mpqa AAAA2dnZ////////////TU1NAAAA0NDQ////////p6en0NDQ////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////////////////////AAAAAAAA6enp//////////// p6enAAAA////////////AAAAfHx8////////AAAA6enp////////6enpAAAA ////////p6enAAAA////////////AAAAfHx8////////AAAAAAAA6enp//// ////////////////TU1NfHx88PDw////////srKy8PDw////fHx8aGho//// ////////AAAAAAAA////////AAAAAAAA////////////////////AAAAAAAA ////////vb29AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA//// ////////AAAAAAAA////////AAAA6enp////////6enpAAAA//////////// ////////////////////////////////////////AAAAAAAAAAAAAAAAAAAA AAAAAAAAp6en////////////////fHx8aGho////////////AAAAAAAA//// ////AAAA6enp////////6enpAAAA////////////AAAAAAAA////////p6en AAAA6enp////////x8fHTU1N////////fHx8aGho////////////AAAAAAAA ////////////AAAAAAAA////////////AAAAAAAA////////////jIyMAAAA 4eHh////////0NDQp6en////////////////////////////AAAAAAAA//// ////////////AAAAAAAA////////////AAAAAAAA////////////p6enAAAA ////////////AAAAfHx8////////////////////////////////AAAAAAAA ////////AAAA6enp////////6enpAAAA////////AAAA6enp////////6enp AAAA////AAAAAAAA////////////AAAAAAAA////////////p6enAAAA//// ////////AAAAfHx8////////////////////////////////AAAAAAAA//// ////////////////////////////mpqaAAAA2dnZ////////////TU1NAAAA 0NDQ////////p6en0NDQ////fHx8aGho////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// ////////////////////////AAAAAAAA////////////vb29AAAA6enp//// ////x8fHAAAAp6en////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA6enp////////////////fHx8aGho////////////AAAAAAAA//// ////////TU1NfHx88PDw////////srKy8PDw////////p6enAAAA//////// ////AAAAfHx8////////////AAAAAAAA//////////////////////////// AAAAAAAA////////////////vb29AAAA6enp////////x8fHAAAAp6en//// ////////////////////jIyMAAAA4eHh////////0NDQp6en//////////// vb29AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA//////////// AAAAAAAA////////////////////////////////////AAAAAAAA//////// AAAA6enp////////6enpAAAA////////////////////////////////TU1N fHx88PDw////////srKy8PDw////////p6enAAAA////////////AAAAfHx8 ////AAAAAAAA6enp////////////////jIyMAAAA4eHh////////0NDQp6en //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////4eHhAAAATU1N//////////////// TU1NAAAA////////////4eHhaGho8PDwTU1NAAAAAAAA////////////AAAA AAAA////////////AAAAAAAAx8fH////2dnZAAAAaGho//////////////// ////////////TU1NAAAAAAAAx8fH8PDwmpqafHx86enpTU1Np6en////vb29 AAAA0NDQ////////jIyM4eHh////8PDwfHx8AAAA////////6enpTU1Np6en ////vb29AAAA0NDQ////TU1NAAAAAAAAx8fH8PDwmpqafHx84eHhmpqaAAAA ////////////////8PDwjIyM////fHx8AAAA6enp////0NDQAAAAaGho//// ////AAAAAAAA////////////////TU1NAAAAAAAA////////////TU1Nmpqa ////6enpTU1NTU1N8PDw////TU1NAAAAAAAAx8fH////4eHhAAAAaGho//// ////jIyM4eHh////8PDwfHx8AAAA//////////////////////////////// ////////////////////AAAAAAAA////////////8PDwp6enAAAA0NDQ//// ////////fHx8AAAA6enp////0NDQAAAAaGho////////jIyM4eHh////8PDw fHx8AAAA////////TU1NAAAAAAAA////////////TU1NfHx8////////aGho fHx8////////fHx8AAAA6enp////0NDQAAAAaGho////////////AAAAAAAA ////////////AAAAAAAA////////vb29AAAAaGho////////////////TU1N 6enp////////////////////////AAAAAAAA////////////////AAAAAAAA x8fH////2dnZAAAAaGho////////////6enpTU1Np6en////vb29AAAA0NDQ ////////////////////////////TU1NAAAAAAAA////////jIyM4eHh//// 8PDwfHx8AAAA////////jIyM4eHh////8PDwfHx8AAAA6enpAAAAAAAA//// ////4eHhAAAAAAAA////////////6enpTU1Np6en////vb29AAAA0NDQ//// ////////////////////////////AAAAAAAA//////////////////////// ////4eHhAAAATU1N////////////////TU1NAAAA////////////4eHhaGho 8PDwfHx8AAAA6enp////0NDQAAAAaGho////////TU1NAAAAAAAAx8fH//// 4eHhAAAAaGho////////AAAAAAAA//////////////////////////////// ////AAAAAAAA////////////////TU1Nmpqa////6enpTU1NTU1N8PDw//// ////////////////////6enpAAAAAAAA////////4eHhAAAAAAAA//////// TU1NAAAAAAAAx8fH////4eHhAAAAaGho////TU1NAAAAAAAAx8fH8PDwmpqa fHx8////fHx8AAAA6enp////0NDQAAAAaGho////4eHhmpqaAAAA//////// ////////8PDwjIyM////////6enpTU1Np6en////vb29AAAA0NDQ//////// ////AAAAAAAA////////////////////////////AAAAAAAA//////////// ////////TU1Nmpqa////6enpTU1NTU1N8PDw////////////////////vb29 AAAAaGho////////////////TU1N6enp////////////TU1Nmpqa////6enp TU1NTU1N8PDw////6enpAAAAAAAA////////4eHhAAAAAAAA//////////// ////////////////////TU1NAAAAAAAA////////jIyM4eHh////8PDwfHx8 AAAA////////////////////////4eHhmpqaAAAA////////////////8PDw jIyM////////6enpTU1Np6en////vb29AAAA0NDQTU1NAAAAAAAAx8fH8PDw mpqafHx8vb29AAAAaGho////////////////TU1N6enp//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAAAAAAjIyM////vb29AAAAAAAAAAAAp6en//////// AAAAAAAAAAAA6enpp6enTU1N////////AAAAAAAAAAAAAAAAAAAA////AAAA AAAA////srKyAAAAaGho6enp////////////////////////////6enpsrKy TU1N////srKyAAAAmpqa////6enpjIyMAAAATU1Nvb29//////////////// jIyMAAAAmpqa6enpAAAA////////////6enpjIyMAAAATU1Nvb29//////// 6enpsrKyTU1N////srKyAAAAAAAAAAAAAAAAAAAAAAAA4eHh////////AAAA AAAAAAAA////p6enTU1NAAAAAAAAmpqa6enp////AAAAAAAAAAAAAAAAAAAA ////////6enpp6enTU1N////////////8PDwp6enAAAAAAAAmpqa6enp//// ////6enpp6enTU1N////srKyAAAATU1N4eHh////////////jIyMAAAAmpqa 6enpAAAA//////////////////////////////////////////////////// AAAAAAAA////////////////////AAAAaGho////////////////p6enTU1N AAAAAAAAmpqa6enp////////////jIyMAAAAmpqa6enpAAAA////////6enp p6enTU1N////////////8PDwp6enAAAAAAAAmpqa////////////////p6en TU1NAAAAAAAAmpqa6enp////////////AAAAAAAA////////////AAAAAAAA ////vb29AAAAAAAAAAAAjIyM////////jIyMAAAAAAAA4eHh//////////// ////AAAAAAAAAAAAAAAAAAAA////////AAAAAAAA////srKyAAAAaGho6enp ////////////////6enpjIyMAAAATU1Nvb29//////////////////////// ////////6enpp6enTU1N////////////jIyMAAAAmpqa6enpAAAA//////// ////jIyMAAAAmpqa6enpAAAAAAAAAAAAAAAA////////AAAAAAAAAAAA//// ////////////6enpjIyMAAAATU1Nvb29//////////////////////////// ////////AAAAAAAA////////////////////////vb29AAAAAAAAAAAAjIyM ////vb29AAAAAAAAAAAAp6en////////AAAAAAAAAAAA////p6enTU1NAAAA AAAAmpqa6enp////////6enpp6enTU1N////srKyAAAATU1N4eHh////AAAA AAAAAAAAAAAAAAAA////////////////////////AAAAAAAAAAAAAAAAAAAA ////////8PDwp6enAAAAAAAAmpqa6enp//////////////////////////// AAAAAAAAAAAA////////AAAAAAAAAAAA////////6enpp6enTU1N////srKy AAAATU1N4eHh////6enpsrKyTU1N////srKyAAAAmpqa////////p6enTU1N AAAAAAAAmpqa6enpvb29AAAAAAAAAAAAAAAA4eHh////////AAAAAAAAAAAA ////////6enpjIyMAAAATU1Nvb29////////////////AAAAAAAA//////// ////////////////AAAAAAAAAAAAAAAAAAAA////////////8PDwp6enAAAA AAAAmpqa6enp////////////////////vb29AAAAAAAAAAAAjIyM//////// jIyMAAAAAAAA4eHh////////8PDwp6enAAAAAAAAmpqa6enp////////AAAA AAAAAAAA////////AAAAAAAAAAAA//////////////////////////////// 6enpp6enTU1N////////////jIyMAAAAmpqa6enpAAAA//////////////// ////vb29AAAAAAAAAAAAAAAA4eHh////////AAAAAAAAAAAA////////6enp jIyMAAAATU1Nvb29////6enpsrKyTU1N////srKyAAAAAAAAAAAAAAAAAAAA jIyM////////jIyMAAAAAAAA4eHh//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////0NDQAAAAAAAA////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////0NDQAAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// ////////AAAAAAAA//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA////////////AAAAAAAA//////////////////// ////////////////////////////////////////////0NDQAAAAAAAA//// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////AAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////0NDQAAAAAAAA//////////// ////////////////////0NDQAAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////AAAAAAAA////////////////////////0NDQ AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////x8fH AAAA////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////x8fHAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////////4eHhAAAAfHx8//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA ////////////AAAAAAAA//////////////////////////////////////// ////////////////////////////x8fHAAAA////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////x8fHAAAA//////////////////////////////// ////x8fHAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA////////////////////////////x8fHAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////8PDwAAAA////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////8PDwAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////6enp AAAAAAAA////////////0NDQTU1NAAAA4eHh//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA////////////AAAAAAAA //////////////////////////////////////////////////////////// ////////8PDwAAAA////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////8PDwAAAAAAAA8PDw//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwAAAA////////////////////////////////////8PDwAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////AAAAAAAA//////// ////////////////////8PDwAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////fHx8 fHx8////////////////////////////aGhoAAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////fHx8fHx8 //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA aGhop6en6enp//////////////////////////////////////////////// ////////////////////////////////////////fHx8fHx8//////////// //////////////////////////////////////////////////////////// ////////aGhoAAAAAAAA////////aGhoAAAAAAAA//////////////////// //////////////////////////////////////////////////////////// ////////aGhoAAAAAAAA//////////////////////////////////////// ////////////////////////////////////////////////////fHx8fHx8 //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAAAAAAAAAAAAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////aGhoAAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////fHx8fHx8//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////fHx8fHx8//////////////// ////////////6enpp6enTU1N//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////fHx8fHx8//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////fHx8fHx8//////////////////////////////// ////////////////////////////////////////////////6enpp6enTU1N ////////6enpp6enTU1N//////////////////////////////////////// ////////////////////////////////////////////////6enpp6enTU1N //////////////////////////////////////////////////////////// ////////////////////////////////fHx8fHx8//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 6enpp6enTU1N//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////fHx8fHx8//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////8PDwp6enaGhoAAAAAAAA fHx8vb29////////////////////////////////mpqaAAAAmpqa//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////mpqaAAAAmpqa//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////8PDw p6enaGhoAAAAAAAAfHx8vb29//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////TU1Nmpqa4eHh////////////2dnZmpqa//////// ////////////////////fHx8AAAAAAAAfHx8//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////fHx8AAAAAAAAfHx8//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////TU1Nmpqa4eHh//////////// 2dnZmpqa//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// p6en////////////////////////8PDwp6en//////////////////////// ////////////mpqavb29//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////mpqavb29//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////p6en////////////////////////8PDwp6en//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////2dnZ4eHh//////// ////////2dnZAAAA////////////////////////////////////8PDwaGho //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////8PDw aGho//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 2dnZ4eHh////////////////2dnZAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA8PDw////////////6enpmpqaAAAAAAAAp6en8PDw//////// AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////4eHhaGhoAAAAaGho 6enpTU1Np6en6enp////////6enpmpqaAAAAAAAAp6en8PDw////////AAAA AAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////////////////////// 4eHhTU1NAAAAp6en////mpqaAAAAjIyMAAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////////////4eHhaGhoAAAAaGho6enpTU1Np6en6enp//////// ////////////AAAAAAAAAAAAAAAAAAAAAAAA//////////////////////// 4eHhTU1NAAAAp6en////mpqaAAAAjIyMAAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////////////////////////////AAAA 6enpjIyMAAAAjIyM////////////////4eHhfHx8AAAAmpqa6enp//////// AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////4eHhaGhoAAAAaGho 6enpTU1Np6en6enp////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//// AAAAAAAAAAAAAAAA////////0NDQTU1NAAAAAAAAAAAAAAAAAAAAaGho//// ////////////////////////////////////TU1N2dnZ//////////////// ////6enpmpqaAAAAAAAAp6en8PDw////////////4eHhTU1NAAAAsrKy//// TU1Np6en6enp////////////////////////////0NDQAAAAfHx86enp//// AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//// ////AAAA6enpjIyMAAAAjIyM////////////////////////////AAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////4eHh TU1NAAAAp6en////mpqaAAAAjIyM6enpAAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAATU1N////////////////////6enpmpqaAAAAAAAAp6en8PDw//// ////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA ////////////////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA ////AAAAAAAAAAAAAAAA////////////////////TU1N2dnZ//////////// ////////////////////////////////6enpmpqaAAAAAAAAp6en8PDw//// ////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////// AAAAAAAAAAAAAAAA////////6enpfHx8AAAAaGho0NDQ//////////////// 4eHhfHx8AAAAmpqa6enp////////////////////////////////0NDQAAAA fHx86enp////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAA TU1N////////////////////6enpmpqaAAAAAAAAp6en8PDw//////////// 4eHhTU1NAAAAsrKy////TU1Np6en6enp////////0NDQTU1NAAAAAAAAAAAA AAAAAAAAaGho////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////// ////////////////0NDQAAAAfHx86enp////AAAAAAAAAAAAAAAA////AAAA AAAAAAAAAAAA////////4eHhfHx8AAAAmpqa6enp//////////////////// ////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////0NDQAAAAfHx86enp////////////4eHhfHx8AAAAmpqa6enp ////////AAAAAAAAAAAATU1N////////AAAAAAAAAAAAAAAA////AAAAAAAA AAAAAAAA////////////4eHhfHx8AAAAmpqa6enp////////////0NDQAAAA fHx86enp//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////6enpAAAAAAAA6enp////////////x8fHAAAA0NDQ//// ////8PDwTU1NaGho8PDw////p6enaGho////////6enpAAAAAAAA8PDw//// 8PDwAAAAAAAA6enp////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho//// 8PDwTU1NaGho8PDw////p6enaGho////////6enpAAAAAAAA8PDw////8PDw AAAAAAAA6enp////////////////////////////aGhoAAAA0NDQ////x8fH AAAAAAAA////mpqaAAAAAAAA8PDw////8PDwAAAAAAAA6enp////////4eHh AAAATU1N4eHh////vb29AAAAAAAAaGho////////////////////////8PDw AAAAAAAA8PDw////////////////////////////aGhoAAAA0NDQ////x8fH AAAAAAAA////mpqaAAAAAAAA8PDw////6enpAAAAAAAA6enp////6enpAAAA AAAA6enp////////////////////////////AAAAfHx84eHh////4eHhjIyM ////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAAAAAA8PDw//// 8PDwAAAAAAAA6enp////4eHhAAAATU1N4eHh////vb29AAAAAAAAaGho//// ////6enpAAAAAAAA6enp6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp//// ////AAAAAAAAAAAAAAAAAAAAAAAAaGho6enp//////////////////////// ////////////x8fHAAAAmpqa////////////////8PDwTU1NaGho8PDw//// p6enaGho////////////aGhoAAAA2dnZ////x8fHAAAAAAAAaGho//////// ////////////////////TU1NAAAA6enpjIyM////6enpAAAAAAAA6enp//// 8PDwAAAAAAAA6enp////6enpAAAAAAAA6enp////////AAAAfHx84eHh//// 4eHhjIyM////////////////////////6enpAAAAAAAA8PDw////6enpAAAA AAAA6enp////6enpAAAAAAAA6enp////////aGhoAAAA0NDQ////x8fHAAAA AAAA////srKy6enpAAAAAAAA6enp////6enpAAAAAAAA6enp//////////// ////////////////0NDQAAAAAAAA2dnZ////6enpAAAAAAAA//////////// ////////8PDwTU1NaGho8PDw////p6enaGho////////6enpAAAAAAAA8PDw ////6enpAAAAAAAA6enp////6enpAAAAAAAA6enp//////////////////// ////6enpAAAAAAAA8PDw////6enpAAAAAAAA6enp////6enpAAAAAAAA6enp ////////////////x8fHAAAAmpqa//////////////////////////////// ////////8PDwTU1NaGho8PDw////p6enaGho////////////0NDQAAAAAAAA 2dnZ////////0NDQAAAAAAAA2dnZ////////////6enpAAAAAAAA6enp//// 6enpTU1NAAAAAAAAAAAAaGho6enp////////6enpAAAAAAAAAAAAAAAAAAAA 4eHh////////////////////////////TU1NAAAA6enpjIyM////6enpAAAA AAAA6enp////8PDwAAAAAAAA6enp6enpAAAAAAAA//////////////////// 8PDwTU1NaGho8PDw////p6enaGho////////////aGhoAAAA2dnZ////x8fH AAAAAAAAaGho////////AAAAAAAAAAAAAAAAAAAAAAAAaGho6enp////6enp AAAAAAAA6enp////8PDwAAAAAAAA6enp////////////////////////TU1N AAAA6enpjIyM////6enpAAAAAAAA6enp////8PDwAAAAAAAA6enp////6enp AAAAAAAAAAAAAAAAAAAA4eHh////////////////////////////////6enp AAAAAAAA6enp6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////TU1NAAAA 6enpjIyM////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAAAAAA ////////////6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp////////6enp AAAAAAAAAAAAAAAAAAAA4eHh////////TU1NAAAA6enpjIyM//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////////x8fHp6en////////p6enAAAA0NDQ//// ////8PDwAAAAvb29////////AAAAAAAA////////////AAAAAAAA//////// mpqaAAAAx8fH////////////AAAAAAAA////////p6enAAAA0NDQ//////// 8PDwAAAAvb29////////AAAAAAAA////////////AAAAAAAA//////////// ////////////////////AAAAAAAA////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////mpqaAAAAx8fH//////////// AAAAAAAA////////////////////////////////AAAAAAAA//////////// ////////////////////AAAAAAAA////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////AAAA8PDw////////x8fHAAAA////////mpqaAAAAfHx8 8PDw////6enpaGho////////AAAAAAAA////////////AAAAAAAA//////// mpqaAAAAx8fH////////////AAAAAAAA////////////////AAAAAAAA//// ////AAAAAAAA////////////AAAAAAAA////////////srKy8PDw//////// ////////////////////////////////////////////////////aGhoAAAA TU1N////////////////p6enAAAA0NDQ////////8PDwAAAAvb29//////// AAAAAAAA////////////AAAAAAAA//////////////////////////////// AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAA8PDw////////x8fHAAAA//////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA//////////////////////////////////// AAAAAAAA////////////AAAAAAAA////////////////////p6enAAAA0NDQ ////////8PDwAAAAvb29////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////////////////////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA////////////////////aGho AAAATU1N////////////////////////////////////////p6enAAAA0NDQ ////////8PDwAAAAvb29////////////AAAAAAAA////////////////AAAA AAAA////////////////////AAAAAAAA////////mpqaAAAAfHx8//////// 4eHhjIyM////////mpqaAAAAfHx88PDw////6enpaGho//////////////// ////////////AAAAAAAA////////////////AAAAAAAA////////////AAAA AAAA////////AAAAAAAA////////////////////p6enAAAA0NDQ//////// 8PDwAAAAvb29////////AAAAAAAA////////////AAAAAAAA//////////// srKy8PDw////////////////////////////////AAAAAAAA//////////// AAAAAAAA////////////////////////////AAAAAAAA//////////////// AAAAAAAA////////////AAAAAAAA////////mpqaAAAAfHx88PDw////6enp aGho////////////////////////////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////AAAAAAAA////////////////mpqa AAAAfHx88PDw////6enpaGho////////AAAAAAAA////////////////AAAA AAAA////////////AAAAAAAA////////////mpqaAAAAfHx88PDw////6enp aGho////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// ////////////aGho////////TU1NAAAA8PDw////////////AAAAaGho//// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// ////AAAAAAAA////////TU1NAAAA8PDw////////////AAAAaGho//////// AAAAAAAA////////////AAAAAAAA//////////////////////////////// p6enAAAAx8fH////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////AAAAAAAA//////////// ////////////////////AAAAAAAA//////////////////////////////// p6enAAAAx8fH////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA//////////////////////////////////// ////x8fHaGhoAAAAjIyM////////AAAAAAAA2dnZ//////////////////// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// ////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA////////////////srKyjIyMAAAAaGho2dnZ//////////// ////////////////////////////0NDQAAAAp6ensrKyx8fH//////////// TU1NAAAA8PDw////////////AAAAaGho////////AAAAAAAA//////////// AAAAAAAA////////////////////////////////AAAAAAAA//////////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////////////x8fHaGhoAAAAjIyM////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////p6en AAAAx8fH////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////////////////////////AAAAAAAA//////////// AAAAAAAA////////////////////TU1NAAAA8PDw////////////AAAAaGho ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////////0NDQAAAAp6ensrKyx8fH//////// ////////////////////////////TU1NAAAA8PDw////////////AAAAaGho ////////////AAAAAAAA////////////////AAAAAAAA//////////////// ////AAAAAAAA////////TU1NAAAA6enp////////////////////////AAAA AAAA2dnZ////////////////////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA ////////////////////TU1NAAAA8PDw////////////AAAAaGho//////// AAAAAAAA////////////AAAAAAAA////////////////srKyjIyMAAAAaGho 2dnZ////////////////AAAAAAAA////////////AAAAAAAA//////////// ////////////////AAAAAAAA////////////////AAAAAAAA//////////// AAAAAAAA////////AAAAAAAA2dnZ//////////////////////////////// ////////////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////AAAAAAAA////////////////AAAAAAAA2dnZ//////////// ////////////AAAAAAAA////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA2dnZ////////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// ////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA////////////////AAAAAAAA//////// AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////////////////////////////////srKyTU1Np6en6enp AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA//////////////////////////////// AAAAAAAA////////////////////////////////////srKyTU1Np6en6enp AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////////////////////2dnZTU1NAAAAAAAAjIyM//// ////////AAAAAAAA////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////AAAAAAAA////////////////AAAAAAAA//////// ////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// ////0NDQAAAAp6en////0NDQAAAA0NDQ//////////////////////////// ////////aGhoAAAA8PDw8PDwaGho////////////AAAAAAAA//////////// ////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////// ////////////////////AAAAAAAA////////////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////////2dnZTU1NAAAAAAAA jIyM////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////srKyTU1Np6en6enpAAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////////AAAAAAAA////////////AAAAAAAA//////////// ////////AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA//////////////////////// ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////aGhoAAAA8PDw8PDwaGho//////////////////////////// ////////AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA ////////////////AAAAAAAA////////////////////AAAAAAAA//////// AAAAAAAA////////////////////////////AAAAAAAA//////////////// ////////////////////////////////AAAAAAAA////////////////AAAA AAAA////////////AAAAAAAA////////AAAAAAAA//////////////////// AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////////0NDQAAAAp6en////0NDQAAAA0NDQ//////////// AAAAAAAA////////////AAAAAAAA////////////////////////////AAAA AAAA////////////////AAAAAAAA////////////AAAAAAAA////////AAAA AAAA//////////////////////////////////////////////////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA ////////////////AAAAAAAA////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////////////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////////////////////////aGhoAAAA//////// ////8PDwAAAATU1N////////AAAAAAAA////////////AAAAAAAA//////// aGhoAAAA////////////////AAAAAAAA////////aGhoAAAA//////////// 8PDwAAAATU1N////////AAAAAAAA////////////AAAAAAAA//////////// ////////////////////////////////x8fHfHx8AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////aGhoAAAA//////////////// AAAAAAAA////////////////////////////////AAAAAAAA//////////// ////////////////////////////////x8fHfHx8AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// ////////////////aGhoAAAAp6en8PDw////////////////TU1NAAAAAAAA AAAAAAAAAAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// aGhoAAAA////////////////AAAAAAAA////////////////AAAAAAAA//// ////AAAAAAAA////////////AAAAAAAA////////////aGhoAAAA//////// ////AAAATU1N////////////////////////////////0NDQAAAAmpqa//// ////jIyM4eHh////////aGhoAAAA////////////8PDwAAAATU1N//////// AAAAAAAA////////////AAAAAAAA//////////////////////////////// AAAAAAAA////////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////////////aGhoAAAAp6en8PDw//////////////////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////////////x8fHfHx8AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA//////////////////////////////////// AAAAAAAA////////////AAAAAAAA////////////////////aGhoAAAA//// ////////8PDwAAAATU1N////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////////////////////////AAAAAAAA//// ////////AAAAAAAA////////////AAAAAAAA////////////0NDQAAAAmpqa ////////jIyM4eHh////////////////////////////////aGhoAAAA//// ////////8PDwAAAATU1N////////////AAAAAAAA////////////////AAAA AAAA////////////////////AAAAAAAA////////TU1NAAAA//////////// ////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//////////////// ////////////AAAAAAAA////////////////AAAAAAAA////////////AAAA AAAA////////AAAAAAAA////////////////////aGhoAAAA//////////// 8PDwAAAATU1N////////AAAAAAAA////////////AAAAAAAA//////////// aGhoAAAA////////////AAAATU1N////////////AAAAAAAA//////////// AAAAAAAA////////////////////////////AAAAAAAA//////////////// AAAAAAAA////////////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAA AAAA////////////////////////////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////AAAAAAAA////////////////TU1N AAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA////////////////AAAA AAAA////////////AAAAAAAA////////////TU1NAAAAAAAAAAAAAAAAAAAA AAAA////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// ////////////////////////vb29AAAA6enp////////x8fHAAAAp6en//// ////AAAAAAAA////////////AAAAAAAA////////vb29AAAA2dnZ//////// 8PDwAAAAAAAA////////vb29AAAA6enp////////x8fHAAAAp6en//////// AAAAAAAA////////////AAAAAAAA//////////////////////////////// fHx8aGho////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////vb29AAAA2dnZ////////8PDwAAAAAAAA//////////// ////////////////////AAAAAAAA//////////////////////////////// fHx8aGho////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////////////////////AAAA 6enp////////6enpAAAA////////p6enAAAA////////////AAAAfHx8//// ////AAAAAAAA////////////AAAAAAAA////////vb29AAAA2dnZ//////// 8PDwAAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA////////////TU1NAAAA////////////AAAAjIyM//////// ////////////////////////jIyMAAAA4eHh////////0NDQp6en//////// vb29AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA//////////// AAAAAAAA////////////////////////////////AAAAAAAA//////////// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////// ////AAAA6enp////////6enpAAAA////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA////////////fHx8 aGho////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////////////////////////AAAAAAAA//////////// AAAAAAAA6enp////////////////vb29AAAA6enp////////x8fHAAAAp6en ////////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//// ////////////////////////////AAAAAAAA////////////AAAAAAAA//// ////////AAAAAAAA////////////jIyMAAAA4eHh////////0NDQp6en//// ////////////////////////////vb29AAAA6enp////////x8fHAAAAp6en ////////////AAAAAAAA////////////////AAAAAAAA//////////////// ////AAAAAAAA////////p6enAAAA6enp////////x8fHTU1N////////p6en AAAA////////////AAAAfHx8////////////////////////////AAAAAAAA ////////////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA 6enp////////////////vb29AAAA6enp////////x8fHAAAAp6en//////// AAAAAAAA////////////AAAAAAAA////////////TU1NAAAA//////////// AAAAjIyM////////////AAAAAAAA////////////AAAAAAAA//////////// ////////////////AAAAAAAA////////////////AAAAAAAA//////////// AAAAAAAA////////p6enAAAA////////////AAAAfHx8//////////////// ////////////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////AAAAAAAA////////////////p6enAAAA////////////AAAA fHx8////////AAAAAAAA6enp////////////AAAAAAAA////////////AAAA AAAA////////////p6enAAAA////////////AAAAfHx8////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// ////////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1NAAAAAAAAx8fH//// 4eHhAAAAaGho////////////fHx8aGho8PDw////p6enAAAAAAAA//////// ////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1NAAAAAAAAx8fH////4eHh AAAAaGho////////////////////////////////fHx8AAAA6enp////0NDQ AAAAaGho////TU1NAAAAAAAAx8fH////4eHhAAAAaGho//////////////// fHx8aGho8PDw////p6enAAAAAAAA//////////////////////////////// AAAAAAAA////////////////////////////////fHx8AAAA6enp////0NDQ AAAAaGho////TU1NAAAAAAAA0NDQ////x8fHAAAAaGhox8fH////4eHhAAAA aGho////////////////////////////////jIyM4eHh////8PDwfHx8AAAA ////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAAAAAAx8fH//// 4eHhAAAAaGho////////////fHx8aGho8PDw////p6enAAAAAAAA//////// ////TU1NAAAAAAAA////TU1NAAAAAAAAx8fH////4eHhAAAAaGho//////// ////vb29AAAAx8fH////p6enAAAAAAAAAAAA//////////////////////// vb29AAAAaGho////////////////TU1N6enp////////TU1Nmpqa////6enp TU1NTU1N8PDw////6enpAAAAAAAA////////4eHhAAAAAAAA//////////// ////////////////////AAAAAAAA////////////////AAAAAAAAx8fH//// 2dnZAAAAaGho////////TU1NAAAAAAAA////////////jIyM4eHh////8PDw fHx8AAAA////////////////////////TU1NAAAAAAAA0NDQ////x8fHAAAA aGhox8fH////4eHhAAAAaGho////////////fHx8AAAA6enp////0NDQAAAA aGho////////TU1NAAAAAAAA////////////AAAAAAAA//////////////// ////////////////////AAAAAAAA////////TU1NAAAAAAAAx8fH8PDwmpqa fHx8////////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1NAAAAAAAA0NDQ ////x8fHAAAAaGhox8fH////4eHhAAAAaGho//////////////////////// ////TU1NAAAAAAAA0NDQ////x8fHAAAAaGhox8fH////4eHhAAAAaGho//// ////vb29AAAAaGho////////////////TU1N6enp//////////////////// ////////////TU1Nmpqa////6enpTU1NTU1N8PDw////////////AAAAAAAA ////////////////AAAAAAAA////////////////TU1NAAAAAAAA//////// ////TU1NfHx8////////aGhofHx8////////6enpTU1Np6en////vb29AAAA 0NDQ////////////////////////////AAAAAAAA////////////////AAAA AAAAx8fH////2dnZAAAAaGho////TU1NAAAAAAAAx8fH8PDwmpqafHx8//// ////TU1Nmpqa////6enpTU1NTU1N8PDw////6enpAAAAAAAA////////4eHh AAAAAAAA////////////vb29AAAAx8fH////p6enAAAAAAAAAAAA//////// AAAAAAAAx8fH////2dnZAAAAaGho////////////////////////////AAAA AAAA////////////////AAAAAAAAx8fH////2dnZAAAAaGho////////6enp TU1Np6en////vb29AAAA0NDQ////////////////////////////////TU1N AAAAAAAA////TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////AAAAAAAA ////////////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAAAAAA x8fH8PDwmpqaTU1NAAAAAAAAx8fH////4eHhAAAAaGho////////////6enp TU1Np6en////vb29AAAA0NDQ////////AAAAAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////////////////////////////8PDwp6enAAAA AAAAmpqa6enp////////6enpp6enTU1N////srKyAAAATU1N4eHh//////// ////////p6enAAAATU1N2dnZAAAAAAAA////////////8PDwp6enAAAAAAAA mpqa6enp////////6enpp6enTU1N////srKyAAAATU1N4eHh//////////// ////////////////////////p6enTU1NAAAAAAAAmpqa6enp////6enpp6en TU1N////srKyAAAATU1N4eHh////////////////////p6enAAAATU1N2dnZ AAAAAAAA////////////////////////////////AAAAAAAA//////////// ////////////////////////p6enTU1NAAAAAAAAmpqa6enp////6enpp6en TU1N////srKyAAAAaGho4eHh////p6enAAAAaGho4eHh//////////////// ////////////////////jIyMAAAAmpqa6enpAAAA////////////6enpjIyM AAAATU1Nvb29////////6enpp6enTU1N////srKyAAAATU1N4eHh//////// ////////p6enAAAATU1N2dnZAAAAAAAA////////////6enpp6enTU1N//// 6enpp6enTU1N////srKyAAAATU1N4eHh////////////////x8fHaGhoAAAA jIyM6enp////////////////////////////vb29AAAAAAAAAAAAjIyM//// ////jIyMAAAAAAAA4eHh////8PDwp6enAAAAAAAAmpqa6enp////////AAAA AAAAAAAA////////AAAAAAAAAAAA////////////////////////////AAAA AAAAAAAAAAAAAAAA////////AAAAAAAA////srKyAAAAaGho6enp//////// 6enpp6enTU1N////////////////jIyMAAAAmpqa6enpAAAA//////////// ////////////6enpp6enTU1N////srKyAAAAaGho4eHh////p6enAAAAaGho 4eHh////////////////p6enTU1NAAAAAAAAmpqa6enp////////6enpp6en TU1N////////////AAAAAAAA////////////////////////////AAAAAAAA AAAAAAAAAAAAAAAA6enpsrKyTU1N////srKyAAAAmpqa////////8PDwp6en AAAAAAAAmpqa6enp////////6enpp6enTU1N////srKyAAAAaGho4eHh//// p6enAAAAaGho4eHh////////////////////////////6enpp6enTU1N//// srKyAAAAaGho4eHh////p6enAAAAaGho4eHh////vb29AAAAAAAAAAAAjIyM ////////jIyMAAAAAAAA4eHh////////////////////////////8PDwp6en AAAAAAAAmpqa6enp////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA////////6enpp6enTU1N////////////8PDwp6enAAAAAAAA mpqa////////////////6enpjIyMAAAATU1Nvb29//////////////////// ////////AAAAAAAAAAAAAAAAAAAA////////AAAAAAAA////srKyAAAAaGho 6enp////6enpsrKyTU1N////srKyAAAAmpqa////////8PDwp6enAAAAAAAA mpqa6enp////////AAAAAAAAAAAA////////AAAAAAAAAAAA//////////// ////x8fHaGhoAAAAjIyM6enp////////////////AAAAAAAA////srKyAAAA aGho6enp////////////////////////AAAAAAAAAAAAAAAAAAAA//////// AAAAAAAA////srKyAAAAaGho6enp////////////6enpjIyMAAAATU1Nvb29 ////////////////////////////////////6enpp6enTU1N////6enpp6en TU1N////srKyAAAATU1N4eHh////AAAAAAAAAAAAAAAAAAAA//////////// 6enpjIyMAAAATU1Nvb29////////6enpsrKyTU1N////srKyAAAAmpqap6en TU1N////srKyAAAATU1N4eHh////////////////6enpjIyMAAAATU1Nvb29 ////////AAAAAAAAAAAAAAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////0NDQAAAAAAAA//////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////0NDQAAAAAAAA ////////////////AAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// ////////////0NDQAAAAAAAA////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////0NDQAAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////0NDQAAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////x8fHAAAA////////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// ////////////////////TU1NAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////TU1NAAAA ////////////////TU1NAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////x8fHAAAA////////////////AAAA AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////////////////////////////////////x8fH AAAA////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////x8fHAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////x8fHAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////6enp AAAAAAAA8PDw//////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////////////////8PDwAAAAAAAA8PDw//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// 8PDwAAAA////////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////AAAAAAAA//////////////////////////////////// mpqaAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////mpqaAAAA////////////////mpqa AAAA//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////8PDwAAAA////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// ////////////////////////////////////8PDwAAAA//////////////// AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////8PDwAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////8PDwAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// aGhoAAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////aGhoAAAAAAAA//////////// ////////////AAAAAAAAAAAAAAAAAAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// aGhoAAAAAAAA////////////////fHx8fHx8//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// aGhoAAAAAAAA////////////////////////////////fHx8fHx8//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////fHx8fHx8////////aGhoAAAA AAAA////////////////////////////////////6enpTU1Nx8fH////4eHh aGhoaGho//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////6enpTU1Nx8fH////4eHhaGhoAAAATU1Nx8fH////4eHhaGho aGhofHx8fHx8//////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////aGhoAAAAAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////aGhoAAAAAAAA//////////////////////////////// ////////////////////////////////////aGhoAAAAAAAA//////////// //////////////////////////////////////////////////////////// ////////////////////fHx8fHx8//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////6enpp6enTU1N//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////6enpp6enTU1N//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////6enpp6enTU1N//////// ////////fHx8fHx8//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////6enpp6enTU1N//////// ////////////////////////fHx8fHx8//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////fHx8fHx8////////6enpp6enTU1N//////////////// ////////////////////////8PDwmpqaAAAAAAAAfHx82dnZ//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////8PDw mpqaAAAAAAAAfHx82dnZ8PDwmpqaAAAAAAAAfHx82dnZfHx8fHx8//////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////6enpp6en TU1N//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////6enp p6enTU1N//////////////////////////////////////////////////// ////////////////6enpp6enTU1N//////////////////////////////// //////////////////////////////////////////////////////////// fHx8fHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////mpqaAAAAmpqa//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////fHx8AAAAAAAAfHx8//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////vb292dnZ//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////mpqa vb29//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////x8fHx8fH//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////8PDwaGho//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////TU1N//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA AAAAAAAAAAAA////////4eHhAAAA6enp////AAAAAAAAAAAAAAAAAAAAAAAA ////////////////////TU1N2dnZ//////////////////////////////// ////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////4eHhTU1NAAAAp6en ////mpqaAAAAjIyMAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////AAAA AAAAAAAAAAAA////////////4eHhfHx8AAAAmpqa6enp//////////////// ////////////////AAAAAAAAAAAAAAAA////AAAA6enpjIyMAAAAjIyM//// ////////////////////////AAAAAAAAAAAAAAAAAAAAAAAA//////////// vb29AAAAAAAAAAAAvb29////6enpmpqaAAAAAAAAp6en8PDw//////////// ////vb29TU1NAAAAaGhop6en8PDw////////////////4eHhfHx8AAAAmpqa 6enp////////AAAAAAAAAAAATU1N////////////0NDQAAAAfHx86enp//// ////////////////////////////////////vb29fHx8AAAAAAAAfHx80NDQ //////////////////////////////////////////////////////////// vb29aGhoAAAAAAAAfHx8vb29////////////////////6enpmpqaAAAAAAAA p6en8PDw////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////////////6enpmpqaAAAAAAAAp6en 8PDw////////AAAAAAAAAAAATU1N////////////////fHx8aGhoTU1N//// ////////////////////////////////////vb29aGhoAAAAAAAAfHx8vb29 ////////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA////////AAAA AAAAAAAAAAAA////////4eHhfHx8AAAAmpqa6enp////////AAAAAAAAAAAA AAAAAAAAAAAA////////////////////AAAAAAAAAAAAAAAAAAAAAAAA//// ////////vb29AAAAAAAAAAAAvb29////AAAAAAAAAAAAAAAA////AAAA6enp jIyMAAAAjIyM////AAAAAAAAAAAAAAAA////4eHhAAAAAAAAAAAA//////// ////////////////////////////////////vb29fHx8AAAAAAAAfHx80NDQ ////////////////AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA AAAAAAAA////AAAAAAAAAAAAAAAA////////6enpfHx8AAAAaGho0NDQ//// ////////////4eHhfHx8AAAAmpqa6enp////////AAAAAAAAAAAATU1N//// ////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAA//////// 6enpmpqaAAAAAAAAp6en8PDw////////AAAAAAAAAAAATU1N//////////// ////////////////////AAAA////2dnZmpqaAAAAAAAAfHx84eHh//////// ////4eHhTU1NAAAAp6en////mpqaAAAAjIyMAAAAAAAAAAAAAAAA////AAAA AAAAAAAAAAAA////////0NDQAAAAfHx86enp////4eHhTU1NAAAAp6en//// mpqaAAAAjIyMAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////// 4eHhaGhoAAAAaGho6enpTU1Np6en6enp////////4eHhfHx8AAAAmpqa6enp ////////AAAAAAAAAAAATU1N////////////////////////////AAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAaGhop6en6enp////////////4eHhTU1NAAAA p6en////mpqaAAAAjIyMAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//// AAAAAAAAAAAAAAAA////4eHhAAAAAAAAAAAA//////////////////////// ////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////6enpAAAA6enp//////////// mpqaAAAAsrKy////////6enpAAAAAAAA6enp////////////////////x8fH AAAAmpqa////////////////////////////////////6enpAAAAAAAA8PDw ////8PDwAAAAAAAA6enp////aGhoAAAA0NDQ////x8fHAAAAAAAA////mpqa AAAAAAAA8PDw////6enpAAAAAAAA6enp////6enpAAAAAAAA6enp//////// 6enpAAAAAAAAAAAAAAAAAAAA4eHh////////////////////////////6enp AAAAAAAA6enp////AAAAfHx84eHh////4eHhjIyM//////////////////// ////////6enpAAAAAAAA6enp////////////4eHhAAAATU1Nvb298PDw//// 8PDwTU1NaGho8PDw////p6enaGho////////////TU1NAAAAvb29////6enp TU1NTU1N////////////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAA AAAA////////////////TU1NAAAA6enpjIyM//////////////////////// ////////////fHx8aGho2dnZ////////2dnZaGhofHx8//////////////// ////////////////////////////////6enpTU1NTU1N0NDQ////////8PDw x8fHfHx8////////////8PDwTU1NaGho8PDw////p6enaGho////////6enp AAAAAAAA8PDw////8PDwAAAAAAAA6enp6enpAAAAAAAA8PDw////8PDwAAAA AAAA6enp////////8PDwTU1NaGho8PDw////p6enaGho////////6enpAAAA AAAA////////////////////jIyMAAAA0NDQ//////////////////////// ////////6enpTU1NTU1N0NDQ////////8PDwx8fHfHx8////////6enpAAAA AAAA6enp////8PDwAAAAAAAA6enp////////6enpAAAAAAAA6enp////6enp AAAAAAAAAAAAAAAAAAAA4eHh////////0NDQAAAAAAAA2dnZ//////////// ////////////////6enpAAAAAAAA6enp////////////4eHhAAAATU1Nvb29 8PDw////////6enpAAAAAAAA6enp////AAAAfHx84eHh////4eHhjIyM6enp AAAAAAAA8PDw////////fHx8TU1N8PDw//////////////////////////// ////////////fHx8aGho2dnZ////////2dnZaGhofHx8//////////////// 0NDQAAAAAAAA2dnZ////////////0NDQAAAAAAAA2dnZ////////6enpAAAA AAAA6enp////6enpTU1NAAAAAAAAAAAAaGho6enp////////6enpAAAAAAAA AAAAAAAAAAAA4eHh////6enpAAAAAAAA//////////////////////////// ////////////0NDQAAAAAAAA2dnZ////////8PDwTU1NaGho8PDw////p6en aGho////////6enpAAAAAAAA//////////////////////////////////// AAAAAAAAjIyM6enp////8PDwjIyMAAAA2dnZ////////aGhoAAAA0NDQ//// x8fHAAAAAAAA////mpqaAAAAAAAA8PDw////8PDwAAAAAAAA6enp//////// TU1NAAAA6enpjIyM////aGhoAAAA0NDQ////x8fHAAAAAAAA////mpqaAAAA AAAA8PDw////8PDwAAAAAAAA6enp////////4eHhAAAATU1N4eHh////vb29 AAAAAAAAaGho////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAAAAAA ////////////////////////////////////6enpAAAAAAAA8PDw//////// ////0NDQTU1NAAAA4eHh////////aGhoAAAA0NDQ////x8fHAAAAAAAA//// mpqaAAAAAAAA8PDw////8PDwAAAAAAAA6enp////6enpAAAAAAAA8PDw//// ////fHx8TU1N8PDw////////////////////////////6enpAAAAAAAA6enp 6enpAAAAAAAA8PDw////8PDwAAAAAAAA6enp//////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAA////////////8PDwAAAAaGhoaGho//////// ////AAAAAAAA////////////////////////aGhoAAAATU1N//////////// ////////////////////////////AAAAAAAA////////////AAAAAAAA//// ////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////mpqaAAAAfHx88PDw//// 6enpaGho////////////////////////////////AAAAAAAA////////AAAA 8PDw////////x8fHAAAA////////////////////////////////AAAAAAAA ////////////////TU1NTU1N6enp////////////p6enAAAA0NDQ//////// 8PDwAAAAvb29////////AAAAAAAA////////////0NDQAAAAsrKy//////// mpqaAAAAfHx88PDw////6enpaGho////////AAAAAAAA//////////////// AAAAAAAA////////////////////////////////////////fHx8TU1N8PDw ////////////////////TU1NjIyM//////////////////////////////// ////////////fHx8TU1N8PDw////////////////////0NDQmpqa//////// p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAAAAAA//////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////////p6en AAAA0NDQ////////8PDwAAAAvb29////////AAAAAAAA//////////////// ////////////////////////////////////////////////fHx8TU1N8PDw ////////////////////0NDQmpqa////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////mpqaAAAAfHx88PDw////6enp aGho////////////AAAAAAAA//////////////////////////////////// AAAAAAAA////////////////TU1NTU1N6enp////////////////////AAAA AAAA////////AAAA8PDw////////x8fHAAAA////AAAAAAAA////////fHx8 TU1N6enp////////////////////////////////////////fHx8TU1N8PDw ////////////////////TU1NjIyM////////////////AAAAAAAA//////// ////////////AAAAAAAA////////////////AAAAAAAA////////mpqaAAAA fHx8////////4eHhjIyM////////mpqaAAAAfHx88PDw////6enpaGho//// ////AAAAAAAA////////////////////////////////////////////AAAA AAAA////////////p6enAAAA0NDQ////////8PDwAAAAvb29////////AAAA AAAA////////////////////////////////////AAAAjIyM//////////// ////////AAAAaGho////////AAAAAAAA////////////AAAAAAAA//////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////mpqaAAAAx8fH////////////AAAAAAAA////////mpqa AAAAfHx88PDw////6enpaGho////////AAAAAAAA//////////////////// ////////////////////AAAAAAAA////////////////////4eHhAAAAaGho ////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA////////fHx8TU1N6enp//////// ////////////////////////////AAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAA////////////p6enAAAAx8fHmpqa2dnZ////////AAAAAAAA//////// ////////////0NDQAAAAp6ensrKyx8fH//////////////////////////// ////////AAAAAAAA////////////AAAAAAAA////////p6enAAAAx8fH//// ////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA2dnZ//////////////////////////// ////////////////////AAAAAAAA////////////////x8fHaGhoAAAAjIyM ////////////////////////////////AAAAAAAA////////////jIyMAAAA 0NDQ////////////////TU1NAAAA8PDw////////////AAAAaGho//////// AAAAAAAA////////////////AAAAaGho////////AAAAAAAA2dnZ//////// ////////////////AAAAAAAA////////////////AAAAAAAA//////////// ////////////////////////0NDQAAAAsrKy//////////////////////// x8fHAAAA0NDQ////////////////////////////////////x8fHAAAAvb29 ////////////////////////////////////////TU1NAAAA8PDw//////// ////AAAAaGho////////AAAAAAAA////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////TU1NAAAA8PDw//////////// AAAAaGho////////AAAAAAAA//////////////////////////////////// ////////////////////////x8fHAAAAvb29//////////////////////// ////////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA2dnZ////////////////////////////AAAA AAAA////////////////////////////////////AAAAAAAA//////////// jIyMAAAA0NDQ////////////////////////AAAAAAAA//////////////// x8fHaGhoAAAAjIyM////AAAAAAAA////mpqaAAAA0NDQ//////////////// ////////////////////////0NDQAAAAsrKy//////////////////////// x8fHAAAA0NDQ////////////AAAAAAAA////////////////////AAAAAAAA ////////////////AAAAAAAA////////TU1NAAAA6enp//////////////// ////////AAAAAAAA2dnZ////////////////////////AAAAAAAA//////// ////////////////////////////////////AAAAAAAA////////////TU1N AAAA8PDw////////////AAAAaGho////////AAAAAAAA//////////////// ////////////////////AAAA2dnZ////////////////////AAAAAAAA//// ////p6enAAAAx8fH////////AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////p6enAAAAx8fH//////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////AAAAAAAA2dnZ//////////// ////////////AAAAAAAA//////////////////////////////////////// AAAAAAAA////////////////////////AAAAAAAA////////p6enAAAAx8fH ////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////mpqaAAAA0NDQ//////////////////////////////// ////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAA////////////AAAA TU1N////0NDQp6en////////AAAAAAAA////////////////////aGhoAAAA 8PDw8PDwaGho////////////////////////////////////AAAAAAAA//// ////////AAAAAAAA////////////srKyTU1Np6en6enpAAAAAAAA//////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA//////////////////////////////////////////////////// AAAAAAAA////////2dnZTU1NAAAAAAAAjIyM//////////////////////// ////////////AAAAAAAA////////vb29AAAAp6en//////////////////// AAAAAAAA////////////////AAAAAAAA////////AAAAAAAA//////////// ////AAAAAAAA////////AAAAAAAA////////////////////////////AAAA AAAA////////////////AAAAAAAA//////////////////////////////// ////jIyMAAAA4eHh////////////////////////6enpAAAAmpqa//////// ////////////////////////////jIyMAAAA6enp//////////////////// ////////////////////AAAAAAAA////////////////AAAAAAAA//////// AAAAAAAA////////////AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////AAAAAAAA////////////////AAAAAAAA////////AAAA AAAA//////////////////////////////////////////////////////// ////jIyMAAAA6enp////////////////////////////////////////AAAA AAAA////////////AAAAAAAA////////////////AAAAAAAA////////AAAA AAAA////////////////////////////////AAAAAAAA//////////////// ////////////////////AAAAAAAA////////vb29AAAAp6en//////////// ////////////////AAAAAAAA////////2dnZTU1NAAAAAAAAjIyM//////// AAAAAAAAp6enAAAAvb29//////////////////////////////////////// ////jIyMAAAA4eHh////////////////////////6enpAAAAmpqa//////// ////AAAAAAAA////////////////////AAAAAAAA////////////////AAAA AAAA////////AAAAAAAA////////////////////////////AAAAAAAA//// ////////////////////////AAAAAAAA//////////////////////////// ////////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA//////////////////////////////////// AAAA////////////////////p6enAAAAjIyM////////////srKyTU1Np6en 6enpAAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////////srKyTU1Np6en6enpAAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////AAAAAAAA////////////////////////////AAAAAAAA ////////////////////////////////////////AAAAAAAA//////////// ////////x8fHAAAAjIyM////////////srKyTU1Np6en6enpAAAAAAAA//// ////AAAAAAAA////////////AAAAAAAA////////////AAAAAAAAp6enAAAA vb29////////////////////////////////////////////AAAAAAAA//// ////AAAAAAAA////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAA////////vb29AAAAvb29////////aGho//// ////AAAAAAAA////////////////0NDQAAAAmpqa////////jIyM4eHh//// ////////////////////////////AAAAAAAA////////////AAAAAAAA//// ////////////////x8fHfHx8AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////TU1NAAAAAAAAAAAAAAAA AAAAAAAA////////////////////////////////AAAAAAAA////////aGho AAAAp6en8PDw////////////////////////////////////////AAAAAAAA ////4eHhAAAAfHx8////////////////////////aGhoAAAA//////////// 8PDwAAAATU1N////////AAAAAAAA////////////////AAAAAAAA//////// TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA//////////////// AAAAAAAA////////////////////////////////////AAAAAAAA//////// ////////////////////////AAAATU1N//////////////////////////// ////////AAAAAAAA//////////////////////////////////////////// aGhoAAAA////////////8PDwAAAATU1N////////AAAAAAAA//////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////////aGho AAAA////////////8PDwAAAATU1N////////AAAAAAAA//////////////// ////////////////////////////////////////////AAAAAAAA//////// ////////////////////////////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA////////TU1NAAAAAAAAAAAAAAAAAAAA AAAA////////////AAAAAAAA//////////////////////////////////// AAAAAAAA////4eHhAAAAfHx8////////////////////////////////AAAA AAAA////////aGhoAAAAp6en8PDw////////////AAAAAAAA0NDQTU1N//// ////////////////////////////////////////////AAAAAAAA//////// ////////////////////////AAAATU1N////////////AAAAAAAA//////// ////////////AAAAAAAA////////////////AAAAAAAA////////TU1NAAAA ////////////////////////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA//// ////AAAAAAAA////////////////////////////////////////////AAAA AAAA////////////aGhoAAAA////////////8PDwAAAATU1N////////AAAA AAAA////////////////////////////////////////////////////4eHh aGhoAAAATU1N6enp////////////////////x8fHfHx8AAAAAAAA//////// AAAAAAAA////////////AAAAAAAA////////////AAAAAAAA//////////// ////////////x8fHfHx8AAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////aGhoAAAA////////////////AAAAAAAA////////TU1N AAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA//////////////////// ////////////////////AAAAAAAA////////////6enpp6enAAAAaGho6enp ////////////////////x8fHfHx8AAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA////////////AAAAAAAA0NDQTU1N//////////////////// ////////////////////////////AAAAAAAA////////AAAAAAAA//////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAA////////TU1NAAAA8PDw////////p6en0NDQ////AAAAAAAA//////// ////////jIyMAAAA4eHh////////0NDQp6en//////////////////////// ////////AAAAAAAA////////////AAAAAAAA////////fHx8aGho//////// ////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////////// AAAAAAAA////////////p6enAAAA////////////AAAAfHx8//////////// ////////////////////AAAAAAAA////////AAAA6enp////////6enpAAAA ////////////////////////////////AAAAAAAAAAAAAAAAAAAAmpqa8PDw ////////////////////vb29AAAA6enp////////x8fHAAAAp6en//////// AAAAAAAA////////////2dnZAAAAjIyM////////p6enAAAA//////////// AAAAfHx8////////AAAAAAAA6enp////////////AAAAAAAA//////////// ////////////////////////AAAAAAAA//////////////////////////// ////AAAAAAAA////////////////////////////////////AAAAAAAA//// ////////////////////////////////////////vb29AAAA6enp//////// x8fHAAAAp6en////////AAAAAAAA////////////AAAAAAAA////////AAAA AAAA////////////AAAAAAAA////////////vb29AAAA6enp////////x8fH AAAAp6en////////AAAAAAAA6enp//////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// ////////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA////////p6enAAAA////////////AAAAfHx8////////////AAAA AAAA////////////////////////////////////AAAAAAAAAAAAAAAAAAAA mpqa8PDw////////////////////////////AAAAAAAA////////AAAA6enp ////////6enpAAAA////AAAAAAAA////4eHhjIyM6enp//////////////// ////////////////////////AAAAAAAA//////////////////////////// ////AAAAAAAA////////////AAAAAAAA////////////////////AAAAAAAA ////////////////AAAAAAAA////////p6enAAAA6enp////////x8fHTU1N ////////p6enAAAA////////////AAAAfHx8////////AAAAAAAA6enp//// ////////////////////////////////////AAAAAAAA////////////vb29 AAAA6enp////////x8fHAAAAp6en////////AAAAAAAA6enp//////////// ////////////////////////////4eHhjIyMAAAAAAAAp6en//////////// ////fHx8aGho////////////AAAAAAAA////////AAAAAAAA//////////// AAAAAAAA////////////AAAAAAAA////////////fHx8aGho//////////// AAAAAAAA////////AAAAAAAA////////////AAAAAAAA////////////vb29 AAAA2dnZ////////8PDwAAAAAAAA////////p6enAAAA////////////AAAA fHx8////////AAAAAAAA6enp//////////////////////////////////// AAAAAAAAAAAAAAAAAAAAAAAAAAAAp6en////////////////fHx8aGho//// ////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// ////AAAAAAAA////4eHhjIyM6enp//////////////////////////////// ////////AAAAAAAA////////AAAAAAAA////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAA////0NDQAAAAp6en ////////////4eHhjIyM////AAAAAAAA////////////vb29AAAAaGho//// ////////////TU1N6enp////////////////////////TU1NAAAAAAAAx8fH ////4eHhAAAAaGho////////fHx8AAAA6enp////0NDQAAAAaGho////TU1N AAAAAAAA0NDQ////x8fHAAAAaGhox8fH////4eHhAAAAaGho//////////// 6enpTU1Np6en////vb29AAAA0NDQ////////////////////////////TU1N AAAAAAAA////////jIyM4eHh////8PDwfHx8AAAA//////////////////// ////////////AAAAAAAA////////6enpfHx8TU1N4eHh//////////////// ////TU1Nmpqa////6enpTU1NTU1N8PDw////////AAAAAAAAx8fH////6enp TU1NAAAA2dnZ////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAA AAAAx8fH8PDwmpqafHx8AAAAAAAA//////////////////////////////// ////AAAAAAAA////////////////////////////////AAAAAAAA//////// ////////////////////////////TU1NAAAA//////////////////////// ////////////////////////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1N AAAAAAAAx8fH////4eHhAAAAaGho////TU1NAAAAAAAAx8fH////4eHhAAAA aGho////////////////TU1Nmpqa////6enpTU1NTU1N8PDw////TU1NAAAA AAAAx8fH8PDwmpqafHx8//////////////////////////////////////// ////TU1NAAAA////////////////////////////////////////////AAAA AAAAx8fH////2dnZAAAAaGho////////////TU1NAAAAAAAA////////6enp TU1Np6en////vb29AAAA0NDQ////////////AAAAAAAA//////////////// ////////////////////AAAAAAAA////////6enpfHx8TU1N4eHh//////// ////////////TU1NAAAAAAAA////////jIyM4eHh////8PDwfHx8AAAA//// AAAAAAAA////////8PDwjIyM0NDQ//////////////////////////////// ////AAAAAAAA////////////////////////////////AAAAAAAA//////// ////AAAAAAAA////////////////////AAAAAAAA////////////TU1NAAAA AAAA////////////TU1NfHx8////////aGhofHx8////////6enpTU1Np6en ////vb29AAAA0NDQ////TU1NAAAAAAAAx8fH8PDwmpqafHx8//////////// ////////////////AAAAAAAA////////////////TU1Nmpqa////6enpTU1N TU1N8PDw////TU1NAAAAAAAAx8fH8PDwmpqafHx8//////////////////// ////srKyAAAAAAAAjIyM6enp////////////////////fHx8AAAA6enp//// 0NDQAAAAaGho////TU1NAAAAAAAAx8fH////4eHhAAAAaGho//////////// AAAAAAAA////////////fHx8AAAA6enp////0NDQAAAAaGho////TU1NAAAA AAAAx8fH////4eHhAAAAaGho////////////////fHx8aGho8PDw////p6en AAAAAAAA////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAAAAAA x8fH8PDwmpqafHx8////////////////////////AAAAAAAA//////////// 8PDwp6enAAAA0NDQ////////////fHx8AAAA6enp////0NDQAAAAaGho//// TU1NAAAAAAAAx8fH////4eHhAAAAaGho////////////AAAAAAAA//////// 8PDwjIyM0NDQ////////////////////////////////TU1NAAAAAAAA//// TU1NAAAAAAAAx8fH////4eHhAAAAaGho//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAA////aGhoAAAA8PDw////////////////aGho 8PDwAAAAAAAA////////vb29AAAAAAAAAAAAjIyM////////jIyMAAAAAAAA 4eHh////////////////////6enpp6enTU1N////srKyAAAATU1N4eHh//// ////////p6enTU1NAAAAAAAAmpqa6enp////6enpp6enTU1N////srKyAAAA aGho4eHh////p6enAAAAaGho4eHh////////////////6enpjIyMAAAATU1N vb29////////////////////////////////6enpp6enTU1N//////////// jIyMAAAAmpqa6enpAAAA////////////////////////////////AAAAAAAA ////////////8PDwAAAAfHx8////////////////////8PDwp6enAAAAAAAA mpqa6enp////////////AAAAAAAA6enpjIyMAAAAaGho0NDQ//////////// ////6enpjIyMAAAATU1Nvb29////////6enpsrKyTU1N////srKyAAAAAAAA AAAAAAAAAAAAAAAA////////////////////////////jIyMAAAA6enp//// ////////////////////4eHhAAAAjIyM////////////4eHhvb29//////// ////////mpqaAAAA4eHh////////////////////////////AAAA//////// ////8PDwp6enAAAAAAAAmpqa6enp////////6enpp6enTU1N////srKyAAAA TU1N4eHh////6enpp6enTU1N////srKyAAAATU1N4eHh//////////////// 8PDwp6enAAAAAAAAmpqa6enp////////6enpsrKyTU1N////srKyAAAAmpqa ////////////////////////////////////////////mpqaAAAA4eHh//// ////////////////////////AAAA////////AAAAAAAA////srKyAAAAaGho 6enp////////////6enpp6enTU1N////////////6enpjIyMAAAATU1Nvb29 ////////AAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////// AAAAAAAA////////////8PDwAAAAfHx8////////////////////6enpp6en TU1N////////////jIyMAAAAmpqa6enpAAAA////AAAAAAAA////////srKy AAAAAAAAAAAA////////////////////////////////jIyMAAAA6enp//// ////////////////////4eHhAAAAjIyM////AAAAAAAAAAAAAAAAAAAAAAAA ////AAAAAAAAAAAAAAAAAAAAAAAA////6enpp6enTU1N////////////8PDw p6enAAAAAAAAmpqa////////////////6enpjIyMAAAATU1Nvb29//////// 6enpsrKyTU1N////srKyAAAAmpqa////////////////////AAAAAAAAAAAA AAAAAAAAAAAA////////8PDwp6enAAAAAAAAmpqa6enp////////6enpsrKy TU1N////srKyAAAAmpqa////////////////////srKyAAAATU1N2dnZ//// ////////AAAA////////////////p6enTU1NAAAAAAAAmpqa6enp////6enp p6enTU1N////srKyAAAATU1N4eHh////////AAAAAAAAAAAAAAAAAAAA//// ////p6enTU1NAAAAAAAAmpqa6enp////6enpp6enTU1N////srKyAAAATU1N 4eHh////////////////////p6enAAAATU1N2dnZAAAAAAAA//////////// 6enpjIyMAAAATU1Nvb29////////6enpsrKyTU1N////srKyAAAAmpqa//// ////////////////////AAAAAAAA////////////////////AAAAaGho//// ////////////p6enTU1NAAAAAAAAmpqa6enp////6enpp6enTU1N////srKy AAAATU1N4eHh////////////AAAAAAAA////////srKyAAAAAAAAAAAA//// ////////////////////////6enpp6enTU1N////6enpp6enTU1N////srKy AAAATU1N4eHh//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAA0NDQAAAAmpqa////////////////////srKyx8fHAAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////AAAAAAAA////////////////AAAA AAAA//////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// ////////////////////////////////////0NDQAAAAAAAA//////////// ////////////////////////0NDQAAAAvb29//////////////////////// vb29AAAA0NDQ////////////////0NDQvb29////////////4eHhAAAAsrKy ////////////////////////6enpAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////4eHhAAAAsrKy//////////////////////// 6enpAAAA////////AAAAAAAA//////////////////////////////////// ////////////////////////////////////////////////////////AAAA AAAA////////////////////////////////////AAAAAAAA//////////// ////AAAAAAAA//////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// ////////////////////////0NDQAAAAvb29//////////////////////// vb29AAAA0NDQ////////////AAAAAAAA////////////////////AAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA6enp////////////2dnZAAAA//////// //////////////////////////////////////////////////////////// ////////////////0NDQAAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////////AAAAAAAA//////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAfHx8AAAA4eHh//// ////////////////8PDwaGhoAAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA////////////8PDwAAAAaGho//////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// ////////////////////x8fHAAAA//////////////////////////////// ////////fHx8TU1N////////////////////////TU1NfHx8//////////// ////////////TU1N////////////////mpqaTU1N6enp//////////////// ////mpqaAAAA//////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////mpqaTU1N6enp////////////////////mpqaAAAA////////AAAA AAAA//////////////////////////////////////////////////////// ////////////////////////////////////TU1NAAAA//////////////// ////////////////////AAAAAAAA////////////8PDwAAAAaGho//////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// ////////fHx8TU1N////////////////////////TU1NfHx8//////////// ////TU1NAAAA////////////////////TU1NAAAA//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////TU1NAAAA//////////////////////////////////// //////////////////////////////////////////////////////////// TU1NAAAA////////////////mpqaAAAA//////////////////////////// //////////////////////////////////////////////////////////// x8fHAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// ////4eHhAAAAfHx8//////////////////////////////////////////// ////////////////////////////////////////////AAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////4eHhAAAAAAAAjIyM//////////////////////////// fHx8AAAAAAAA6enp//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////6enpAAAAAAAA ////////6enpfHx8AAAA0NDQ//////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// 8PDwAAAA////////////////////////////////////////////fHx8fHx8 2dnZ////////2dnZfHx8fHx8////////////////////fHx8TU1NTU1N//// ////////////////jIyMTU1N0NDQ////////2dnZjIyMAAAAAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////jIyMTU1N 0NDQ////////2dnZjIyMAAAAAAAA////////AAAAAAAA//////////////// //////////////////////////////////////////////////////////// ////////////////mpqaAAAA////////////////////////////////6enp AAAAAAAA////////6enpfHx8AAAA0NDQ//////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// ////////////////////////////////////////////////////fHx8fHx8 2dnZ////////2dnZfHx8fHx8////////////////////mpqaAAAA//////// ////////////mpqaAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////mpqa AAAA//////////////////////////////////////////////////////// ////////////////////////////////////////x8fHAAAAp6en//////// p6enAAAAAAAA//////////////////////////////////////////////// ////////////////////////////////////////8PDwAAAA//////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// ////////////////6enpAAAAAAAA////////////0NDQTU1NAAAA4eHh//// //////////////////////////////////////////////////////////// ////////////////////////AAAAAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA AAAAAAAA0NDQ////////////////////////////x8fHAAAAAAAAAAAAAAAA //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////fHx8fHx8//////////////////////////////// ////////////////////////AAAAAAAAAAAAAAAAAAAAAAAATU1NjIyM2dnZ ////////////////////////////////////////////////////////aGho AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////0NDQfHx8AAAAAAAAfHx8vb29 ////////////////////////jIyMAAAA0NDQ//////////////////////// 0NDQjIyMAAAAAAAAfHx80NDQ6enpAAAA//////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////0NDQjIyMAAAAAAAAfHx80NDQ 6enpAAAA////aGhoAAAAAAAA//////////////////////////////////// fHx8fHx8////////////////////////////////////////////////6enp TU1Nx8fH////4eHhaGhoaGho////////AAAAAAAAAAAAAAAAAAAAAAAATU1N jIyM2dnZ////////////////////////////fHx8fHx8//////////////// ////////////////aGhoAAAAAAAA//////////////////////////////// ////////////////////////////////////0NDQfHx8AAAAAAAAfHx8vb29 ////////////////////////6enpTU1Nx8fH////4eHhaGhoaGho6enpTU1N x8fH////4eHhaGhoaGhofHx8//////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////6enpTU1Nx8fH////4eHhaGho aGho//////////////////////////////////////////////////////// ////////////////////////x8fHaGhoAAAAaGho0NDQ8PDwAAAA//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////aGhoAAAAAAAA//////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA AAAAAAAAAAAAAAAAAAAAaGhop6en6enp//////////////////////////// //////////////////////////////////////////////////////////// aGhoAAAAAAAA//////////////////////////////////////////////// ////////fHx8fHx8//////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// fHx8fHx8//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////6enpp6enTU1N//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////6enpp6en TU1N////////////////////////////////////fHx8fHx8//////////// ////////////////////////////////////////8PDwmpqaAAAAAAAAfHx8 2dnZ//////////////////////////////////////////////////////// ////////////////fHx8fHx8////////////////////////////////6enp p6enTU1N//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////8PDwmpqaAAAAAAAAfHx82dnZ////8PDwmpqaAAAAAAAAfHx8fHx8 fHx8//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////8PDwmpqaAAAAAAAAfHx82dnZ//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////6enp p6enTU1N//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////6enpp6enTU1N//////// ////////////////////////////////////////////////fHx8fHx8//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////vb292dnZ//////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////x8fHx8fH//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// TU1N//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAaGhompqa4eHh//////// ////////////////4eHhfHx8AAAAmpqa6enp////////////4eHhTU1NAAAA p6en////mpqaAAAAjIyMAAAAAAAAAAAATU1N//////////////////////// ////AAAAAAAAAAAAAAAAAAAAAAAA////////////////////AAAAAAAAAAAA TU1N////////////////AAAAAAAAAAAAAAAA////////4eHhfHx8AAAAmpqa 6enp////////AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAA//////////// 4eHhaGhoAAAAaGho6enpTU1Np6en6enpfHx8aGhoTU1N//////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////8PDw AAAAAAAA6enp////////6enpmpqaAAAAjIyM////////////////6enpAAAA AAAAAAAAAAAAAAAA4eHh////////aGhoAAAA0NDQ////x8fHAAAAAAAA//// mpqaAAAAAAAA////////////////////////////////////8PDwAAAAAAAA 8PDw////////////////////////6enpAAAAAAAA//////////////////// 6enpAAAAAAAA6enp////6enpAAAAAAAAAAAAAAAAAAAA4eHh////6enpAAAA AAAA8PDw////8PDwAAAAAAAA6enp////////4eHhAAAATU1N4eHh////vb29 AAAAAAAAaGhojIyMAAAA0NDQ//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// ////////0NDQAAAAjIyM////////////mpqaAAAAfHx88PDw////6enpaGho ////////AAAAAAAA////////////AAAAAAAA////////AAAAAAAA//////// ////////////////////////////////AAAAAAAA//////////////////// ////////////AAAAAAAA////////////////////////AAAAAAAA//////// mpqaAAAAfHx88PDw////6enpaGho////////AAAAAAAA////////////AAAA AAAA////////////mpqaAAAAx8fH////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////////////////mpqaAAAA 0NDQ////////AAAAAAAA2dnZ////////////////////////p6enAAAAx8fH ////////AAAAAAAA////////AAAAAAAA//////////////////////////// ////////////AAAAAAAA////////////////////////////////AAAAAAAA ////////////////////////AAAAAAAA////////AAAAAAAA2dnZ//////// ////////////////AAAAAAAA////////////AAAAAAAA////////////AAAA AAAA////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////////////2dnZAAAAmpqa////////AAAAAAAA ////////////////////////////////srKyTU1Np6en6enpAAAAAAAA//// ////AAAAAAAA////////////////////////////////////////AAAAAAAA ////////////////AAAA////////////AAAAAAAA//////////////////// ////AAAAAAAA////////AAAAAAAA////////////////////////////AAAA AAAA////////////AAAAAAAA////////////AAAAAAAA//////////////// AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// ////////////////AAAATU1N////////TU1NAAAAAAAAAAAAAAAAAAAAAAAA ////////////////////x8fHfHx8AAAAAAAA////////AAAAAAAA//////// ////////////////////////////////AAAAAAAA////////////4eHhAAAA ////////////AAAAAAAA////////////////////////AAAAAAAA//////// TU1NAAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAA////////////AAAA AAAA////////////aGhoAAAA////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////////////////////AAAA AAAA////////p6enAAAA////////////AAAAfHx8////////fHx8aGho//// ////////AAAAAAAA////////AAAAAAAA6enp//////////////////////// ////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAAAAAA 6enp////////////////////AAAAAAAA////////p6enAAAA//////////// AAAAfHx8////////AAAAAAAA////////////AAAAAAAA////////////vb29 AAAA2dnZ////////8PDwAAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////////////////AAAAAAAA////////6enpTU1N p6en////vb29AAAA0NDQ////////fHx8AAAA6enp////0NDQAAAAaGho//// TU1NAAAAAAAAx8fH8PDwmpqafHx8////////////////////////AAAAAAAA ////////////2dnZAAAA////////TU1NAAAAAAAAx8fH8PDwmpqafHx8//// TU1NAAAAAAAA////////6enpTU1Np6en////vb29AAAA0NDQ////TU1NAAAA AAAAx8fH////4eHhAAAAaGho////////////////fHx8aGho8PDw////p6en AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// ////////////2dnZAAAAjIyM////////////6enpjIyMAAAATU1Nvb29//// ////////////p6enTU1NAAAAAAAAmpqa6enp////6enpsrKyTU1N////srKy AAAAmpqa////////////////////////AAAAAAAA////////////////AAAA ////////6enpsrKyTU1N////srKyAAAAmpqa////6enpp6enTU1N//////// ////6enpjIyMAAAATU1Nvb29////////6enpp6enTU1N////srKyAAAATU1N 4eHh////////////////////p6enAAAATU1N2dnZAAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA////////////////////////mpqaAAAA 0NDQ//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////AAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA////////////////////0NDQAAAAfHx8//////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////////////////AAAAAAAA ////////////////////////AAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// AAAAAAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////6enpAAAAAAAA6enp//////// 6enpmpqaAAAAfHx8//////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////8PDwAAAAAAAA//////////////////// vb29AAAA//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////////////////////////////////AAAAAAAA//////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAaGhompqa0NDQ//////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////// ////////////////////////fHx8fHx8//////////////////////////// //////////////////////////////////////////////////////////// ////////////////aGhoAAAAAAAA//////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////fHx8fHx8//////////////////////////////////////////////// ////////////////////////////////////////////////////////6enp p6enTU1N//////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////// --0-556272579-1320954764=:690-- From aelder@sgi.com Thu Nov 10 14:35:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,J_CHICKENPOX_36, J_CHICKENPOX_62,J_CHICKENPOX_63 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAKZeuO126978 for ; Thu, 10 Nov 2011 14:35:40 -0600 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay1.corp.sgi.com (Postfix) with ESMTP id D7C5E8F809C; Thu, 10 Nov 2011 12:35:39 -0800 (PST) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.5/8.14.2) with ESMTP id pAAKZdf9017052; Thu, 10 Nov 2011 14:35:39 -0600 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.5/8.14.5/Submit) id pAAKZdmJ017051; Thu, 10 Nov 2011 14:35:39 -0600 From: Alex Elder To: xfs@oss.sgi.com Cc: Kevan Rehm , Alex Elder Subject: [PATCH 1/8] xfsprogs: Fix setbitval() bug when nbits is byte-aligned Date: Thu, 10 Nov 2011 14:35:11 -0600 Message-Id: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> X-Mailer: git-send-email 1.7.6.4 In-Reply-To: <1320957318-16269-1-git-send-email-aelder@sgi.com> References: <1320957318-16269-1-git-send-email-aelder@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Kevan Rehm If a field whose size is not an even multiple of 8 bits happens to be aligned on a byte boundary and the machine is little-endian, routine setbitval() would do a byte copy of zero bytes, effectively doing nothing. Catch this case, and arrange for doing the bit setting "the hard way" (i.e., without using memcpy()) to avoid this problem. Signed-off-by: Alex Elder --- db/bit.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/db/bit.c b/db/bit.c index ca57d31..36de0a1 100644 --- a/db/bit.c +++ b/db/bit.c @@ -153,7 +153,7 @@ setbitval( */ /* byte aligned ? */ - if (bitoff%NBBY) { + if (bitoff % NBBY || nbits % NBBY) { /* no - bit copy */ for (bit=0; bit; Thu, 10 Nov 2011 14:35:37 -0600 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3770D8F8074; Thu, 10 Nov 2011 12:35:34 -0800 (PST) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.5/8.14.2) with ESMTP id pAAKZY6F017048; Thu, 10 Nov 2011 14:35:34 -0600 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.5/8.14.5/Submit) id pAAKZY6w017047; Thu, 10 Nov 2011 14:35:34 -0600 From: Alex Elder To: xfs@oss.sgi.com Subject: [PATCH 0/8] xfsprogs: new resvsp db command, plus some fixes Date: Thu, 10 Nov 2011 14:35:10 -0600 Message-Id: <1320957318-16269-1-git-send-email-aelder@sgi.com> X-Mailer: git-send-email 1.7.6.4 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The original purpose for this series was to add a new "resvsp" command to xfs_db, to provide access to the xfsctl(3) XFS_IOC_RESVSP64 operation. Kevan Rehm did this work, and along the way he found and fixed a few cases where things weren't getting flushed to disk properly. I also looked things over and came up with a few other small fixes. I'm submitting the resulting series on Kevan's behalf. I think we'll want to follow this up with at least one test in the xfstests suite to exercise this new command. -Alex From aelder@sgi.com Thu Nov 10 14:35:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAKZeIg126986 for ; Thu, 10 Nov 2011 14:35:40 -0600 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay1.corp.sgi.com (Postfix) with ESMTP id 267FC8F809B; Thu, 10 Nov 2011 12:35:40 -0800 (PST) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.5/8.14.2) with ESMTP id pAAKZdSQ017056; Thu, 10 Nov 2011 14:35:39 -0600 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.5/8.14.5/Submit) id pAAKZdA5017055; Thu, 10 Nov 2011 14:35:39 -0600 From: Alex Elder To: xfs@oss.sgi.com Cc: Alex Elder Subject: [PATCH 2/8] xfsprogs: unconditionally drop used buffer reference Date: Thu, 10 Nov 2011 14:35:12 -0600 Message-Id: X-Mailer: git-send-email 1.7.6.4 In-Reply-To: <1320957318-16269-1-git-send-email-aelder@sgi.com> References: <1320957318-16269-1-git-send-email-aelder@sgi.com> In-Reply-To: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> References: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean In libxfs_mount(), after reading the last block in the log device, the buffer is released by a call to libxfs_putbuf(). But it's done only if bp is non-null. It always will be non-null at this point, so just make the call unconditionally. Also touch up a misleading indent. Signed-off-by: Alex Elder --- libxfs/init.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/libxfs/init.c b/libxfs/init.c index 08fc584..ba44c9b 100644 --- a/libxfs/init.c +++ b/libxfs/init.c @@ -743,15 +743,14 @@ libxfs_mount( if (!(flags & LIBXFS_MOUNT_DEBUGGER)) return NULL; } - if (bp) - libxfs_putbuf(bp); + libxfs_putbuf(bp); } /* Initialize realtime fields in the mount structure */ if (rtmount_init(mp, flags)) { fprintf(stderr, _("%s: realtime device init failed\n"), progname); - return NULL; + return NULL; } error = libxfs_initialize_perag(mp, sbp->sb_agcount, &mp->m_maxagi); -- 1.7.6.4 From aelder@sgi.com Thu Nov 10 14:35:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAKZi8i127029 for ; Thu, 10 Nov 2011 14:35:44 -0600 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay3.corp.sgi.com (Postfix) with ESMTP id 93E35AC003; Thu, 10 Nov 2011 12:35:40 -0800 (PST) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.5/8.14.2) with ESMTP id pAAKZeEM017060; Thu, 10 Nov 2011 14:35:40 -0600 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.5/8.14.5/Submit) id pAAKZexO017059; Thu, 10 Nov 2011 14:35:40 -0600 From: Alex Elder To: xfs@oss.sgi.com Cc: Kevan Rehm , Alex Elder Subject: [PATCH 3/8] xfsprogs: xfs_repair: don't set the root inode pointer Date: Thu, 10 Nov 2011 14:35:13 -0600 Message-Id: <6833e89ecf7daa3ba69676fb98a4538ee6c3a1b5.1320955675.git.aelder@sgi.com> X-Mailer: git-send-email 1.7.6.4 In-Reply-To: <1320957318-16269-1-git-send-email-aelder@sgi.com> References: <1320957318-16269-1-git-send-email-aelder@sgi.com> In-Reply-To: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> References: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Kevan Rehm In phase 6, in mk_root_dir(), xfs_repair initializes the mount point's m_rootip pointer without accounting for that reference. This field never really used or needed in repair otherwise, and the assigned pointer doesn't really represent a real reference to an inode that needs to be cached. So just kill off this assignment. Signed-off-by: Alex Elder --- repair/phase6.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) diff --git a/repair/phase6.c b/repair/phase6.c index 1c82cb1..81d7fe6 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -797,8 +797,6 @@ mk_root_dir(xfs_mount_t *mp) ip->i_df.if_bytes = ip->i_df.if_real_bytes = 0; ip->i_df.if_u1.if_extents = NULL; - mp->m_rootip = ip; - /* * initialize the directory */ -- 1.7.6.4 From aelder@sgi.com Thu Nov 10 14:35:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAKZidc127037 for ; Thu, 10 Nov 2011 14:35:44 -0600 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay3.corp.sgi.com (Postfix) with ESMTP id D2CF8AC00A; Thu, 10 Nov 2011 12:35:40 -0800 (PST) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.5/8.14.2) with ESMTP id pAAKZeZb017064; Thu, 10 Nov 2011 14:35:40 -0600 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.5/8.14.5/Submit) id pAAKZeuV017063; Thu, 10 Nov 2011 14:35:40 -0600 From: Alex Elder To: xfs@oss.sgi.com Cc: Kevan Rehm , Alex Elder Subject: [PATCH 4/8] xfsprogs: mkfs.xfs: let libxfs_umount() do its thing Date: Thu, 10 Nov 2011 14:35:14 -0600 Message-Id: <9f5a2c84d462158505a0a4fce6c9417315ab59ee.1320955676.git.aelder@sgi.com> X-Mailer: git-send-email 1.7.6.4 In-Reply-To: <1320957318-16269-1-git-send-email-aelder@sgi.com> References: <1320957318-16269-1-git-send-email-aelder@sgi.com> In-Reply-To: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> References: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Kevan Rehm In the mkfs.xfs main() routine (which is gargantuan, by the way), there are a few function calls intended to do some clean up before unmounting the filesystem. The first function drops references that will be dropped again in the unmnount call. The others assume all references will go away as a result of the purge, but the filesystem's root inode reference will remain. Let the unmount function take care of destroying the real-time structures. And instead of purging the inode and block caches, just flush them (at least the block cache) and let the unmount code take care of the final purge. Signed-off-by: Alex Elder --- mkfs/xfs_mkfs.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index f527f3d..213cc74 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -2674,9 +2674,7 @@ an AG size that is one stripe unit smaller, for example %llu.\n"), * Dump all inodes and buffers before marking us all done. * Need to drop references to inodes we still hold, first. */ - libxfs_rtmount_destroy(mp); - libxfs_icache_purge(); - libxfs_bcache_purge(); + libxfs_bcache_flush(); /* * Mark the filesystem ok. -- 1.7.6.4 From aelder@sgi.com Thu Nov 10 14:35:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_71 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAKZiud127039 for ; Thu, 10 Nov 2011 14:35:44 -0600 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay2.corp.sgi.com (Postfix) with ESMTP id 356F1304093; Thu, 10 Nov 2011 12:35:40 -0800 (PST) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.5/8.14.2) with ESMTP id pAAKZe3j017072; Thu, 10 Nov 2011 14:35:40 -0600 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.5/8.14.5/Submit) id pAAKZe9l017071; Thu, 10 Nov 2011 14:35:40 -0600 From: Alex Elder To: xfs@oss.sgi.com Cc: Kevan Rehm , Alex Elder Subject: [PATCH 6/8] xfsprogs: xfs_db: unmount fs before exiting Date: Thu, 10 Nov 2011 14:35:16 -0600 Message-Id: X-Mailer: git-send-email 1.7.6.4 In-Reply-To: <1320957318-16269-1-git-send-email-aelder@sgi.com> References: <1320957318-16269-1-git-send-email-aelder@sgi.com> In-Reply-To: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> References: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Kevan Rehm The main routine calls libxfs_mount() via init(), but never calls libxfs_umount() at the end of the program so there could be filesystem changes queued which never get flushed to disk. This adds the missing libxfs_umount() call. Signed-off-by: Alex Elder --- db/init.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/db/init.c b/db/init.c index 2a5ef2b..5effaf9 100644 --- a/db/init.c +++ b/db/init.c @@ -170,7 +170,7 @@ main( } if (cmdline) { xfree(cmdline); - return exitcode; + goto end; } while (!done) { @@ -181,5 +181,9 @@ main( done = command(c, v); doneline(input, v); } + +end: + libxfs_umount(mp); + return exitcode; } -- 1.7.6.4 From aelder@sgi.com Thu Nov 10 14:35:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAKZfCI127002 for ; Thu, 10 Nov 2011 14:35:41 -0600 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay1.corp.sgi.com (Postfix) with ESMTP id 243D78F80A1; Thu, 10 Nov 2011 12:35:41 -0800 (PST) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.5/8.14.2) with ESMTP id pAAKZfsG017080; Thu, 10 Nov 2011 14:35:41 -0600 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.5/8.14.5/Submit) id pAAKZehh017079; Thu, 10 Nov 2011 14:35:40 -0600 From: Alex Elder To: xfs@oss.sgi.com Cc: Kevan Rehm , Alex Elder Subject: [PATCH 8/8] xfsprogs: xfs_db: add new "resvsp" command Date: Thu, 10 Nov 2011 14:35:18 -0600 Message-Id: <122161c271ee994b758daafe4e0756cae784950b.1320955676.git.aelder@sgi.com> X-Mailer: git-send-email 1.7.6.4 In-Reply-To: <1320957318-16269-1-git-send-email-aelder@sgi.com> References: <1320957318-16269-1-git-send-email-aelder@sgi.com> In-Reply-To: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> References: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Kevan Rehm This patch adds a new "resvsp" command to xfs_db. The command provides access to the xfsctl(3) XFS_IOC_RESVSP64 operation, which allocates space in an ordinary file. Blocks are allocated but not zeroed, and the file size does not change. Signed-off-by: Alex Elder --- db/Makefile | 2 +- db/command.c | 2 + db/resvsp.c | 184 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ db/resvsp.h | 19 ++++++ 4 files changed, 206 insertions(+), 1 deletions(-) create mode 100644 db/resvsp.c create mode 100644 db/resvsp.h diff --git a/db/Makefile b/db/Makefile index 5c7d054..797ff52 100644 --- a/db/Makefile +++ b/db/Makefile @@ -12,7 +12,7 @@ HFILES = addr.h agf.h agfl.h agi.h attr.h attrshort.h bit.h block.h bmap.h \ dir.h dir2.h dir2sf.h dirshort.h dquot.h echo.h faddr.h field.h \ flist.h fprint.h frag.h freesp.h hash.h help.h init.h inode.h input.h \ io.h malloc.h metadump.h output.h print.h quit.h sb.h sig.h strvec.h \ - text.h type.h write.h attrset.h + text.h type.h write.h attrset.h resvsp.h CFILES = $(HFILES:.h=.c) LSRCFILES = xfs_admin.sh xfs_check.sh xfs_ncheck.sh xfs_metadump.sh diff --git a/db/command.c b/db/command.c index b7e3165..b70e1ef 100644 --- a/db/command.c +++ b/db/command.c @@ -43,6 +43,7 @@ #include "metadump.h" #include "output.h" #include "print.h" +#include "resvsp.h" #include "quit.h" #include "sb.h" #include "write.h" @@ -121,6 +122,7 @@ init_commands(void) attrset_init(); block_init(); bmap_init(); + resvsp_init(); check_init(); convert_init(); debug_init(); diff --git a/db/resvsp.c b/db/resvsp.c new file mode 100644 index 0000000..c7206e2 --- /dev/null +++ b/db/resvsp.c @@ -0,0 +1,184 @@ + +/* + * Copyright (c) 2011 SGI + * All Rights Reserved. + * + * 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. + * + * This program is distributed in the hope that it would be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include "command.h" +#include "type.h" +#include "fprint.h" +#include "faddr.h" +#include "field.h" +#include "bmap.h" +#include "io.h" +#include "inode.h" +#include "output.h" +#include "init.h" +#include "resvsp.h" + +static int resvsp_f(int argc, char **argv); +static void resvsp_help(void); + +static const cmdinfo_t resvsp_cmd = + { "resvsp", NULL, resvsp_f, 0, -1, 0, + N_("[-w] [-o offset] [-l length] [inode#]"), + N_("allocate space in a file"), resvsp_help }; + +static void +resvsp_help(void) +{ + dbprintf(_( +"\n" +"The resvsp function is essentially an implementation of the xfsctl(3)\n" +"file operation XFS_IOC_RESVSP64 which allocates space in an ordinary\n" +"file. Blocks are allocated but not zeroed, and the file size does not\n" +"change. The -o option is the starting offset for the allocation (default 0)\n" +"and the -l option gives the length of the allocation in bytes (default to\n" +"end of file). Both offset and length values will be rounded to a filesystem\n" +"block boundary. 'inode#' is the inode number of the file in which to\n" +"perform the allocation. If none is specified, the current inode is used.\n" +"If the -w option is specified, the allocated extents will not be flagged as\n" +"unwritten. Use this option with care, as someone with read permission\n" +"to the file can then read whatever is written in those blocks.\n" +"\n" +" Example:\n" +"\n" +" 'resvsp' - allocate blocks in the current inode's entire byte range\n" +" 'resvsp 76' - allocate blocks in the entire byte range of inode 76\n" +" 'resvsp -o 8192 -l 4096' - allocate 4096 bytes at offset 8192 in the current inode\n" +"\n" +)); +} + +static int +resvsp_f( + int argc, + char **argv) +{ + xfs_inode_t *ip; + int error; + int c; + char *p; + xfs_ino_t ino; + xfs_off_t offset = 0; /* allocate from start of file */ + xfs_off_t len = 0; /* allocate to EOF */ + int alloc_type = 1; /* flag extents as unwritten */ + + if (x.isreadonly & LIBXFS_ISREADONLY) { + dbprintf(_("%s started in read only mode, resvsp disabled\n"), + progname); + return 0; + } + + optind = 0; + while ((c = getopt(argc, argv, "l:o:w")) != EOF) { + switch (c) { + case 'l': + len = strtoull(optarg, &p, 0); + if (*p != '\0') { + dbprintf(_("bad length %s specified for " + "-l option\n"), optarg); + return 0; + } + break; + + case 'o': + offset = strtoull(optarg, &p, 0); + if (*p != '\0') { + dbprintf(_("bad offset %s specified for " + "-o option\n"), optarg); + return 0; + } + break; + + case 'w': + alloc_type = 0; /* do not flag extents as unwritten */ + break; + + default: + /* getopt() provides the error message */ + return 0; + } + } + if (optind < argc) { + ino = strtoull(argv[optind], &p, 0); + if (*p != '\0') { + dbprintf(_("bad value %s specified for inode number\n"), + argv[optind]); + return 0; + } + optind++; + } else if (iocur_top->ino != NULLFSINO) { + ino = iocur_top->ino; + } else { + dbprintf(_("no current inode, and no inode number provided\n")); + return 0; + } + if (optind < argc) { + dbprintf(_("only one inode number allowed\n")); + return 0; + } + + if (libxfs_iget(mp, NULL, ino, 0, &ip, 0)) { + dbprintf(_("failed to iget inode %llu\n"), ino); + return 0; + } + + if ((ip->i_d.di_mode & S_IFMT) != S_IFREG) { + dbprintf(_("inode %llu is not an ordinary file\n"), ino); + goto fail; + } + + if (offset >= ip->i_size) { + dbprintf(_("offset %llu must be <= file length %llu\n"), + offset, ip->i_size); + goto fail; + } + if (offset + len > ip->i_size) { + len = ip->i_size - offset; + dbprintf(_("length trimmed to %llu bytes\n"), len); + } + if (len == 0) { + len = ip->i_size - offset; + } + + error = libxfs_alloc_file_space(ip, offset, len, alloc_type, 0); + + if (error) { + dbprintf(_("error reserving space for a file, %d\n"), error); + return 0; + } + + /* refresh with updated inode contents */ + if (iocur_top->ino == ino) { + set_cur_inode(iocur_top->ino); + } + +fail: + libxfs_iput(ip, 0); + + return 0; +} + +void +resvsp_init(void) +{ + if (!expert_mode) + return; + + add_command(&resvsp_cmd); +} diff --git a/db/resvsp.h b/db/resvsp.h new file mode 100644 index 0000000..b98da8b --- /dev/null +++ b/db/resvsp.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2011 SGI + * All Rights Reserved. + * + * 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. + * + * This program is distributed in the hope that it would be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +extern void resvsp_init(void); -- 1.7.6.4 From aelder@sgi.com Thu Nov 10 14:35:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_102 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAKZe2I126994 for ; Thu, 10 Nov 2011 14:35:40 -0600 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9AF598F8092; Thu, 10 Nov 2011 12:35:40 -0800 (PST) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.5/8.14.2) with ESMTP id pAAKZeSD017068; Thu, 10 Nov 2011 14:35:40 -0600 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.5/8.14.5/Submit) id pAAKZehA017067; Thu, 10 Nov 2011 14:35:40 -0600 From: Alex Elder To: xfs@oss.sgi.com Cc: Kevan Rehm , Alex Elder Subject: [PATCH 5/8] xfsprogs: Drop root inode refrerence in libxfs_umount() Date: Thu, 10 Nov 2011 14:35:15 -0600 Message-Id: <8634b2514c7642f4cbcfdaf3b6852e129417c372.1320955676.git.aelder@sgi.com> X-Mailer: git-send-email 1.7.6.4 In-Reply-To: <1320957318-16269-1-git-send-email-aelder@sgi.com> References: <1320957318-16269-1-git-send-email-aelder@sgi.com> In-Reply-To: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> References: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Kevan Rehm Routine libxfs_umount() did not call libxfs_iput for the m_rootip inode, so updates made to that inode could be lost. This adds the missing call, and re-initializes the m_rootip pointer to be null. Since the root inode reference is now dropped by libxfs_umount(), it should *not* be dropped in mkfs parseproto(). Signed-off-by: Alex Elder --- libxfs/init.c | 4 ++++ mkfs/proto.c | 3 ++- 2 files changed, 6 insertions(+), 1 deletions(-) diff --git a/libxfs/init.c b/libxfs/init.c index ba44c9b..d34fd8c 100644 --- a/libxfs/init.c +++ b/libxfs/init.c @@ -816,6 +816,10 @@ libxfs_umount(xfs_mount_t *mp) int agno; libxfs_rtmount_destroy(mp); + if (mp->m_rootip) { + libxfs_iput(mp->m_rootip, 0); + mp->m_rootip = NULL; + } libxfs_icache_purge(); libxfs_bcache_purge(); diff --git a/mkfs/proto.c b/mkfs/proto.c index 3021028..3f76862 100644 --- a/mkfs/proto.c +++ b/mkfs/proto.c @@ -571,7 +571,8 @@ parseproto( break; parseproto(mp, ip, fsxp, pp, name); } - libxfs_iput(ip, 0); + if (!isroot) + libxfs_iput(ip, 0); return; } libxfs_trans_log_inode(tp, ip, flags); -- 1.7.6.4 From aelder@sgi.com Thu Nov 10 14:35:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAKZiFT127031 for ; Thu, 10 Nov 2011 14:35:44 -0600 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay2.corp.sgi.com (Postfix) with ESMTP id EEFE430408D; Thu, 10 Nov 2011 12:35:40 -0800 (PST) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.5/8.14.2) with ESMTP id pAAKZeqo017076; Thu, 10 Nov 2011 14:35:40 -0600 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.5/8.14.5/Submit) id pAAKZexp017075; Thu, 10 Nov 2011 14:35:40 -0600 From: Alex Elder To: xfs@oss.sgi.com Cc: Alex Elder Subject: [PATCH 7/8] xfsprogs: clean up errors in libxfs_mount() consistently Date: Thu, 10 Nov 2011 14:35:17 -0600 Message-Id: X-Mailer: git-send-email 1.7.6.4 In-Reply-To: <1320957318-16269-1-git-send-email-aelder@sgi.com> References: <1320957318-16269-1-git-send-email-aelder@sgi.com> In-Reply-To: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> References: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Until the perag structures for the filesystem have been set up, initialization of the mount point only assigns computed values and has no other side-effects (such as allocating additional structures). So up to that point, returning a null pointer to signal an error is adequate. Once the perag initialization is done there needs to be some teardown in case of an error. Here the handling of errors is inconsistent. If early perag initialization fails, the code currently just exits. Then, if getting a reference to the root inode results in an error, a null pointer is returned but without first cleaning up the perag structures. Next, if rtmount_inodes() returns an error, the reference to the root inode (if any) is released, but again the perag structures are not cleaned up. Finally, when the perag data is read in, if an error occurs, a null pointer is returned but the root inode pointer reference is not released and the perag structures are not cleaned up. Remedy all of that by having each of these error cases jump to error handling code at the end of the function. That code needs to release the reference to the root inode and release all of the perag structures. This (plus a few other things that will be no-ops at this point in the mount process) is exactly what libxfs_umount(), so just use that function to implement this cleanup activity. Signed-off-by: Alex Elder --- libxfs/init.c | 18 ++++++++++-------- 1 files changed, 10 insertions(+), 8 deletions(-) diff --git a/libxfs/init.c b/libxfs/init.c index d34fd8c..9dad5b7 100644 --- a/libxfs/init.c +++ b/libxfs/init.c @@ -757,7 +757,7 @@ libxfs_mount( if (error) { fprintf(stderr, _("%s: perag init failed\n"), progname); - exit(1); + goto out_err; } /* @@ -770,15 +770,12 @@ libxfs_mount( fprintf(stderr, _("%s: cannot read root inode (%d)\n"), progname, error); if (!(flags & LIBXFS_MOUNT_DEBUGGER)) - return NULL; + goto out_err; } ASSERT(mp->m_rootip != NULL); } - if ((flags & LIBXFS_MOUNT_ROOTINOS) && rtmount_inodes(mp)) { - if (mp->m_rootip) - libxfs_iput(mp->m_rootip, 0); - return NULL; - } + if ((flags & LIBXFS_MOUNT_ROOTINOS) && rtmount_inodes(mp)) + goto out_err; /* * mkfs calls mount before the AGF/AGI structures are written. @@ -789,11 +786,16 @@ libxfs_mount( if (error) { fprintf(stderr, _("%s: cannot init perag data (%d)\n"), progname, error); - return NULL; + goto out_err; } } return mp; + +out_err: + libxfs_umount(mp); /* clean up first */ + + return NULL; } void -- 1.7.6.4 From sekharan@us.ibm.com Thu Nov 10 15:16:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAALGu84131122 for ; Thu, 10 Nov 2011 15:16:56 -0600 X-ASG-Debug-ID: 1320959815-723701680000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e32.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CD115236E36 for ; Thu, 10 Nov 2011 13:16:55 -0800 (PST) Received: from e32.co.us.ibm.com (e32.co.us.ibm.com [32.97.110.150]) by cuda.sgi.com with ESMTP id n1QBNZbqgBawpHLC for ; Thu, 10 Nov 2011 13:16:55 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from /spool/local by e32.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 10 Nov 2011 14:16:54 -0700 Received: from d03relay01.boulder.ibm.com ([9.17.195.226]) by e32.co.us.ibm.com ([192.168.1.132]) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 10 Nov 2011 14:16:53 -0700 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d03relay01.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id pAALGfDQ135014 for ; Thu, 10 Nov 2011 14:16:42 -0700 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id pAALGaHF001929 for ; Thu, 10 Nov 2011 14:16:38 -0700 Received: from [9.53.40.164] (chandra-lucid.austin.ibm.com [9.53.40.164]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id pAALGY3t001875; Thu, 10 Nov 2011 14:16:34 -0700 X-ASG-Orig-Subj: Debug of xfstest 234 hang Subject: Debug of xfstest 234 hang From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Dave Chinner , Alex Elder Cc: XFS Mailing List Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Thu, 10 Nov 2011 15:16:33 -0600 Message-ID: <1320959794.2201.15.camel@chandra-lucid.austin.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit x-cbid: 11111021-3270-0000-0000-000001A94DF7 X-Barracuda-Connect: e32.co.us.ibm.com[32.97.110.150] X-Barracuda-Start-Time: 1320959815 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Dave, Alex, Debugging using trace, crash and systemtap, I found that the hang happens when xfs_sync_worker() (thru kworker) gets stuck in xlog_wait() while reserving a transaction log buffer for the dummy log. I also found that even though xfsaild_push() keeps getting invoked, it doesn't do anything to push the log to the disk, since the ailp->xa_target has not been changed since it has been called from the process stack a while back. So, I thought, resetting the target to the max value would help nudge the flow of ail to the disk. So, I added the following code. ------------------ diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c index ed9252b..f59fd9f 100644 --- a/fs/xfs/xfs_trans_ail.c +++ b/fs/xfs/xfs_trans_ail.c @@ -534,6 +534,10 @@ out_done: ailp->xa_last_pushed_lsn = 0; } + lsn = xfs_ail_max_lsn(ailp); + smp_wmb(); + xfs_trans_ail_copy_lsn(ailp, &ailp->xa_target, &lsn); + smp_wmb(); return tout; } -------------------- and it seem to do the magic. With this change, test 234 runs fine. Is this a good fix, bad fix, overkill... ? Please let me know. regards chandra From sekharan@us.ibm.com Thu Nov 10 15:36:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAALaxdG132749 for ; Thu, 10 Nov 2011 15:36:59 -0600 X-ASG-Debug-ID: 1320961018-723701d80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e6.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 244F7236AD1 for ; Thu, 10 Nov 2011 13:36:58 -0800 (PST) Received: from e6.ny.us.ibm.com (e6.ny.us.ibm.com [32.97.182.146]) by cuda.sgi.com with ESMTP id bu8EAqiuf3rRb4cP for ; Thu, 10 Nov 2011 13:36:58 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from /spool/local by e6.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 10 Nov 2011 16:36:55 -0500 Received: from d01relay04.pok.ibm.com ([9.56.227.236]) by e6.ny.us.ibm.com ([192.168.1.106]) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 10 Nov 2011 16:36:46 -0500 Received: from d03av03.boulder.ibm.com (d03av03.boulder.ibm.com [9.17.195.169]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id pAALaidE292302 for ; Thu, 10 Nov 2011 16:36:45 -0500 Received: from d03av03.boulder.ibm.com (loopback [127.0.0.1]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id pAALaiL9032480 for ; Thu, 10 Nov 2011 14:36:44 -0700 Received: from [9.53.40.164] (chandra-lucid.austin.ibm.com [9.53.40.164]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id pAALahjx032432 for ; Thu, 10 Nov 2011 14:36:44 -0700 X-ASG-Orig-Subj: Occasional memory fault in inode_has_perm() while running xfstest 234 Subject: Occasional memory fault in inode_has_perm() while running xfstest 234 From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Mailing List Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Thu, 10 Nov 2011 15:36:43 -0600 Message-ID: <1320961003.2201.27.camel@chandra-lucid.austin.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit x-cbid: 11111021-1976-0000-0000-0000025404DD X-Barracuda-Connect: e6.ny.us.ibm.com[32.97.182.146] X-Barracuda-Start-Time: 1320961019 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi All, While debugging the xfstest case 234, I was occasionally hitting the following memory fault. Has anybody seen it ? ----------------- IP: [] inode_has_perm+0x1f/0x40 PGD 0 Oops: 0000 [#1] SMP CPU 0 Modules linked in: xfs exportfs ebtable_nat ebtables ipt_MASQUERADE iptable_nat nf_nat iptable_mangle bridge stp llc autofs4 sunrpc cpufreq_ondemand acpi_cpufreq freq_table mperf ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 ext3 jbd dm_mirror dm_region_hash dm_log dm_mod vhost_net macvtap macvlan tun kvm_intel kvm cdc_ether usbnet mii microcode serio_raw i2c_i801 i2c_core iTCO_wdt iTCO_vendor_support shpchp ioatdma i7core_edac edac_core ses enclosure sg igb dca ext4 mbcache jbd2 sd_mod crc_t10dif ahci libahci megaraid_sas [last unloaded: scsi_wait_scan] Pid: 32611, comm: setquota Not tainted 3.1.0-rc9.virgin+ #6 IBM System x3630 M3 -[7377AC1]-/69Y1101 RIP: 0010:[] [] inode_has_perm+0x1f/0x40 RSP: 0018:ffff880642bcdb78 EFLAGS: 00010246 RAX: 0000000000800002 RBX: ffff88064f2205f8 RCX: 0000000000800000 RDX: 0000000000800000 RSI: 0000000000000000 RDI: ffff880649e58480 RBP: ffff880642bcdb78 R08: ffff880642bcdb88 R09: 0000000000000080 R10: ffff880658ffff00 R11: ffff880642bcdb88 R12: 0000000000000081 R13: ffff88064f2205f8 R14: ffff8806592b8100 R15: 0000000000000000 FS: 00007f56dfa3a700(0000) GS:ffff88067f200000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b CR2: 0000000000000020 CR3: 0000000642b30000 CR4: 00000000000006f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Process setquota (pid: 32611, threadinfo ffff880642bcc000, task ffff8806592b8100) Stack: ffff880642bcdc18 ffffffff811e5d79 0000000000000009 0000000000000000 ffff88064f2205f8 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 Call Trace: [] selinux_inode_permission+0xa9/0x100 [] security_inode_permission+0x1c/0x30 [] inode_permission+0x49/0x100 [] link_path_walk+0x87/0x810 [] ? unlock_page+0x2a/0x40 [] path_lookupat+0x55/0x690 [] ? handle_pte_fault+0xf7/0xb50 [] do_path_lookup+0x31/0xc0 [] ? getname_flags+0x1f8/0x280 [] user_path_at+0x59/0xa0 [] ? handle_mm_fault+0x15b/0x270 [] ? do_page_fault+0x1e0/0x460 [] ? kmem_cache_alloc+0x152/0x190 [] vfs_fstatat+0x47/0x80 [] ? do_sigaction+0x91/0x1d0 [] vfs_stat+0x1b/0x20 [] sys_newstat+0x24/0x50 [] ? audit_syscall_entry+0x1bf/0x1f0 [] system_call_fastpath+0x16/0x1b Code: 66 66 66 2e 0f 1f 84 00 00 00 00 00 55 48 89 e5 66 66 66 66 90 f6 46 0d 02 75 23 48 8b 76 38 48 8b 7f 68 45 89 c1 49 89 c8 89 d1 <0f> b7 46 20 8b 7f 04 8b 76 1c 89 c2 e8 a0 f9 ff ff c9 c3 31 c0 RIP [] inode_has_perm+0x1f/0x40 RSP CR2: 0000000000000020 ---[ end trace 5d054c892d311b3f ]--- ---------------------------- I made some code changes and found that inode->i_security is the data structure that is NULL. I added the following code ------------------ diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 266a229..43870ec 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -1466,6 +1466,7 @@ static int task_has_system(struct task_struct *tsk, SECCLASS_SYSTEM, perms, NULL); } +u64 isec_yes; /* Check whether a task has a particular permission to an inode. The 'adp' parameter is optional and allows other audit data to be passed (e.g. the dentry). */ @@ -1486,6 +1487,13 @@ static int inode_has_perm(const struct cred *cred, sid = cred_sid(cred); isec = inode->i_security; + if (isec) + isec_yes++; + else { + printk("isec NULL; isec_yes %llu\n", isec_yes); + return -EACCES; + } + return avc_has_perm_flags(sid, isec->sid, isec->sclass, perms, adp, flags); } -------------------------------- and this is what I see in /var/log/messages ----------------------------- isec NULL; isec_yes 14345860 isec NULL; isec_yes 102846678 isec NULL; isec_yes 107203361 isec NULL; isec_yes 136859591 isec NULL; isec_yes 140941549 isec NULL; isec_yes 168163633 isec NULL; isec_yes 222030886 isec NULL; isec_yes 238835570 isec NULL; isec_yes 263587444 isec NULL; isec_yes 280912141 ------------------------------ Can somebody throw some light on it ? I am using xfs.sgi.com with commit 9e4c109ac822395e0aae650e4e3c9e4903f6602f at the top. Regards, Chandra From aelder@oss.sgi.com Thu Nov 10 15:59:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=ALL_TRUSTED,BAYES_00, J_CHICKENPOX_21 autolearn=no version=3.4.0-r929098 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAALxSnA134825 for ; Thu, 10 Nov 2011 15:59:28 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id pAALxO3c134728; Thu, 10 Nov 2011 15:59:24 -0600 Date: Thu, 10 Nov 2011 15:59:24 -0600 Message-Id: <201111102159.pAALxO3c134728@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v3.2-rc1-3-g810627d X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: 9e4c109ac822395e0aae650e4e3c9e4903f6602f X-Git-Newrev: 810627d9a6d0e8820c798001875bc4e1b7754ebf This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated 810627d xfs: fix force shutdown handling in xfs_end_io 272e42b xfs: constify xfs_item_ops b52a360 xfs: Fix possible memory corruption in xfs_readlink bfe8684 filesystems: add set_nlink() b9075fa treewide: use __printf not __attribute__((format(printf,...))) 94054fa xfs: warn if direct reclaim tries to writeback pages 5619a69 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 59e5253 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 36b8d18 Merge branch 'next' of git://selinuxproject.org/~jmorris/linux-security e060c38 Merge branch 'master' into for-next 558feb0 fs: Convert vmalloc/memset to vzalloc 5a2f3a0 Merge branch 'next-evm' of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/ima-2.6 into next 9d8f13b security: new security_inode_init_security API adds function callback from 9e4c109ac822395e0aae650e4e3c9e4903f6602f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 810627d9a6d0e8820c798001875bc4e1b7754ebf Author: Christoph Hellwig Date: Tue Nov 8 08:56:15 2011 +0000 xfs: fix force shutdown handling in xfs_end_io Ensure ioend->io_error gets propagated back to e.g. AIO completions. Signed-off-by: Christoph Hellwig Reviewed-by: Alex Elder commit 272e42b215c52d32e06bf035c1f6b70baa6716bd Author: Christoph Hellwig Date: Fri Oct 28 09:54:24 2011 +0000 xfs: constify xfs_item_ops The log item ops aren't nessecarily the biggest exploit vector, but marking them const is easy enough. Also remove the unused xfs_item_ops_t typedef while we're at it. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Reviewed-by: Alex Elder commit b52a360b2aa1c59ba9970fb0f52bbb093fcc7a24 Author: Carlos Maiolino Date: Mon Nov 7 16:10:24 2011 +0000 xfs: Fix possible memory corruption in xfs_readlink Fixes a possible memory corruption when the link is larger than MAXPATHLEN and XFS_DEBUG is not enabled. This also remove the S_ISLNK assert, since the inode mode is checked previously in xfs_readlink_by_handle() and via VFS. Updated to address concerns raised by Ben Hutchings about the loose attention paid to 32- vs 64-bit values, and the lack of handling a potentially negative pathlen value: - Changed type of "pathlen" to be xfs_fsize_t, to match that of ip->i_d.di_size - Added checking for a negative pathlen to the too-long pathlen test, and generalized the message that gets reported in that case to reflect the change As a result, if a negative pathlen were encountered, this function would return EFSCORRUPTED (and would fail an assertion for a debug build)--just as would a too-long pathlen. Signed-off-by: Alex Elder Signed-off-by: Carlos Maiolino Reviewed-by: Christoph Hellwig commit bfe8684869601dacfcb2cd69ef8cfd9045f62170 Author: Miklos Szeredi Date: Fri Oct 28 14:13:29 2011 +0200 filesystems: add set_nlink() Replace remaining direct i_nlink updates with a new set_nlink() updater function. Signed-off-by: Miklos Szeredi Tested-by: Toshiyuki Okajima Signed-off-by: Christoph Hellwig commit b9075fa968a0a4347aef35e235e2995c0e57dddd Author: Joe Perches Date: Mon Oct 31 17:11:33 2011 -0700 treewide: use __printf not __attribute__((format(printf,...))) Standardize the style for compiler based printf format verification. Standardized the location of __printf too. Done via script and a little typing. $ grep -rPl --include=*.[ch] -w "__attribute__" * | \ grep -vP "^(tools|scripts|include/linux/compiler-gcc.h)" | \ xargs perl -n -i -e 'local $/; while (<>) { s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*printf\s*,\s*(.+)\s*,\s*(.+)\s*\)\s*\)\s*\)/__printf($1, $2)/g ; print; }' [akpm@linux-foundation.org: revert arch bits] Signed-off-by: Joe Perches Cc: "Kirill A. Shutemov" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 94054fa3fca1fd78db02cb3d68d5627120f0a1d4 Author: Mel Gorman Date: Mon Oct 31 17:07:45 2011 -0700 xfs: warn if direct reclaim tries to writeback pages Direct reclaim should never writeback pages. For now, handle the situation and warn about it. Ultimately, this will be a BUG_ON. Signed-off-by: Mel Gorman Cc: Dave Chinner Cc: Christoph Hellwig Cc: Johannes Weiner Cc: Wu Fengguang Cc: Jan Kara Cc: Minchan Kim Cc: Rik van Riel Cc: Mel Gorman Cc: Alex Elder Cc: Theodore Ts'o Cc: Chris Mason Cc: Dave Hansen Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 5619a693965b291315685bdfe01a0246ebd7e41e Merge: 37be944a0270402f9cda291a930b0286f6dc92f5 9e4c109ac822395e0aae650e4e3c9e4903f6602f Author: Linus Torvalds Date: Fri Oct 28 10:31:42 2011 -0700 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs * 'for-linus' of git://oss.sgi.com/xfs/xfs: (69 commits) xfs: add AIL pushing tracepoints xfs: put in missed fix for merge problem xfs: do not flush data workqueues in xfs_flush_buftarg xfs: remove XFS_bflush xfs: remove xfs_buf_target_name xfs: use xfs_ioerror_alert in xfs_buf_iodone_callbacks xfs: clean up xfs_ioerror_alert xfs: clean up buffer allocation xfs: remove buffers from the delwri list in xfs_buf_stale xfs: remove XFS_BUF_STALE and XFS_BUF_SUPER_STALE xfs: remove XFS_BUF_SET_VTYPE and XFS_BUF_SET_VTYPE_REF xfs: remove XFS_BUF_FINISH_IOWAIT xfs: remove xfs_get_buftarg_list xfs: fix buffer flushing during unmount xfs: optimize fsync on directories xfs: reduce the number of log forces from tail pushing xfs: Don't allocate new buffers on every call to _xfs_buf_find xfs: simplify xfs_trans_ijoin* again xfs: unlock the inode before log force in xfs_change_file_space xfs: unlock the inode before log force in xfs_fs_nfs_commit_metadata ... commit 59e52534172d845ebffb0d7e85fc56fb7b857051 Merge: 73692d9bb58ecc2fa73f4b2bfcf6eadaa6d49a26 0d89e54c8249645404283436d952afc261a04e1e Author: Linus Torvalds Date: Tue Oct 25 12:11:02 2011 +0200 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (59 commits) MAINTAINERS: linux-m32r is moderated for non-subscribers linux@lists.openrisc.net is moderated for non-subscribers Drop default from "DM365 codec select" choice parisc: Kconfig: cleanup Kernel page size default Kconfig: remove redundant CONFIG_ prefix on two symbols cris: remove arch/cris/arch-v32/lib/nand_init.S microblaze: add missing CONFIG_ prefixes h8300: drop puzzling Kconfig dependencies MAINTAINERS: microblaze-uclinux@itee.uq.edu.au is moderated for non-subscribers tty: drop superfluous dependency in Kconfig ARM: mxc: fix Kconfig typo 'i.MX51' Fix file references in Kconfig files aic7xxx: fix Kconfig references to READMEs Fix file references in drivers/ide/ thinkpad_acpi: Fix printk typo 'bluestooth' bcmring: drop commented out line in Kconfig btmrvl_sdio: fix typo 'btmrvl_sdio_sd6888' doc: raw1394: Trivial typo fix CIFS: Don't free volume_info->UNC until we are entirely done with it. treewide: Correct spelling of successfully in comments ... commit 36b8d186e6cc8e32cb5227f5645a58e1bc0af190 Merge: cd85b557414fe4cd44ea6608825e96612a5fe2b2 c45ed235abf1b0b6666417e3c394f18717976acd Author: Linus Torvalds Date: Tue Oct 25 09:45:31 2011 +0200 Merge branch 'next' of git://selinuxproject.org/~jmorris/linux-security * 'next' of git://selinuxproject.org/~jmorris/linux-security: (95 commits) TOMOYO: Fix incomplete read after seek. Smack: allow to access /smack/access as normal user TOMOYO: Fix unused kernel config option. Smack: fix: invalid length set for the result of /smack/access Smack: compilation fix Smack: fix for /smack/access output, use string instead of byte Smack: domain transition protections (v3) Smack: Provide information for UDS getsockopt(SO_PEERCRED) Smack: Clean up comments Smack: Repair processing of fcntl Smack: Rule list lookup performance Smack: check permissions from user space (v2) TOMOYO: Fix quota and garbage collector. TOMOYO: Remove redundant tasklist_lock. TOMOYO: Fix domain transition failure warning. TOMOYO: Remove tomoyo_policy_memory_lock spinlock. TOMOYO: Simplify garbage collector. TOMOYO: Fix make namespacecheck warnings. target: check hex2bin result encrypted-keys: check hex2bin result ... commit e060c38434b2caa78efe7cedaff4191040b65a15 Merge: 10e4ac572eeffe5317019bd7330b6058a400dfc2 cc39c6a9bbdebfcf1a7dee64d83bf302bc38d941 Author: Jiri Kosina Date: Thu Sep 15 15:08:05 2011 +0200 Merge branch 'master' into for-next Fast-forward merge with Linus to be able to merge patches based on more recent version of the tree. commit 558feb0818374d657fbc1ea03776ee20f204b3a6 Author: Joe Perches Date: Sat May 28 10:36:33 2011 -0700 fs: Convert vmalloc/memset to vzalloc Signed-off-by: Joe Perches Acked-by: Alex Elder Signed-off-by: Jiri Kosina commit 5a2f3a02aea164f4f59c0c3497772090a411b462 Merge: 1d568ab068c021672d6cd7f50f92a3695a921ffb 817b54aa45db03437c6d09a7693fc6926eb8e822 Author: James Morris Date: Tue Aug 9 10:31:03 2011 +1000 Merge branch 'next-evm' of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/ima-2.6 into next Conflicts: fs/attr.c Resolve conflict manually. Signed-off-by: James Morris commit 9d8f13ba3f4833219e50767b022b82cd0da930eb Author: Mimi Zohar Date: Mon Jun 6 15:29:25 2011 -0400 security: new security_inode_init_security API adds function callback This patch changes the security_inode_init_security API by adding a filesystem specific callback to write security extended attributes. This change is in preparation for supporting the initialization of multiple LSM xattrs and the EVM xattr. Initially the callback function walks an array of xattrs, writing each xattr separately, but could be optimized to write multiple xattrs at once. For existing security_inode_init_security() calls, which have not yet been converted to use the new callback function, such as those in reiserfs and ocfs2, this patch defines security_old_inode_init_security(). Signed-off-by: Mimi Zohar ----------------------------------------------------------------------- Summary of changes: fs/xfs/kmem.h | 7 +------ fs/xfs/xfs_aops.c | 10 +++++----- fs/xfs/xfs_buf_item.c | 2 +- fs/xfs/xfs_dquot_item.c | 6 +++--- fs/xfs/xfs_extfree_item.c | 4 ++-- fs/xfs/xfs_inode_item.c | 2 +- fs/xfs/xfs_iops.c | 41 +++++++++++++++++++++-------------------- fs/xfs/xfs_log.c | 2 +- fs/xfs/xfs_log.h | 2 +- fs/xfs/xfs_message.h | 42 ++++++++++++++++++++---------------------- fs/xfs/xfs_trans.h | 6 +++--- fs/xfs/xfs_vnodeops.c | 14 ++++++++++---- 12 files changed, 69 insertions(+), 69 deletions(-) hooks/post-receive -- XFS development tree From aelder@sgi.com Thu Nov 10 16:05:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAM5kPH135415 for ; Thu, 10 Nov 2011 16:05:46 -0600 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay2.corp.sgi.com (Postfix) with ESMTP id D878D30404E; Thu, 10 Nov 2011 14:05:42 -0800 (PST) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.5/8.14.2) with ESMTP id pAAM5gdm019588; Thu, 10 Nov 2011 16:05:42 -0600 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.5/8.14.5/Submit) id pAAM5e4f019587; Thu, 10 Nov 2011 16:05:40 -0600 From: Alex Elder Message-Id: <201111102205.pAAM5e4f019587@stout.americas.sgi.com> Date: Thu, 10 Nov 2011 16:05:40 -0600 To: torvalds@linux-foundation.org Subject: [GIT PULL] XFS update for 3.2-rc2 Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org User-Agent: Heirloom mailx 12.5 7/5/10 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Linus, please pull the following changes for XFS for 3.2-rc2. The first two address some security concerns, the last one is a bug fix. Thanks. -Alex The following changes since commit 5e442a493fc59fa536c76db1fff5b49ca36a88c5: Revert "proc: fix races against execve() of /proc/PID/fd**" (2011-11-09 18:16:00 -0500) are available in the git repository at: git://oss.sgi.com/xfs/xfs for-linus Carlos Maiolino (1): xfs: Fix possible memory corruption in xfs_readlink Christoph Hellwig (2): xfs: constify xfs_item_ops xfs: fix force shutdown handling in xfs_end_io fs/xfs/xfs_aops.c | 2 +- fs/xfs/xfs_buf_item.c | 2 +- fs/xfs/xfs_dquot_item.c | 6 +++--- fs/xfs/xfs_extfree_item.c | 4 ++-- fs/xfs/xfs_inode_item.c | 2 +- fs/xfs/xfs_log.c | 2 +- fs/xfs/xfs_log.h | 2 +- fs/xfs/xfs_trans.h | 6 +++--- fs/xfs/xfs_vnodeops.c | 14 ++++++++++---- 9 files changed, 23 insertions(+), 17 deletions(-) From david@fromorbit.com Thu Nov 10 16:19:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAMJiIh136573 for ; Thu, 10 Nov 2011 16:19:44 -0600 X-ASG-Debug-ID: 1320963581-783402c90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0AB99104FE31 for ; Thu, 10 Nov 2011 14:19:41 -0800 (PST) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 9BolbT6sdQjqCUzx for ; Thu, 10 Nov 2011 14:19:41 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EACRNvE55LIil/2dsb2JhbABEqiuBBoFyAQEEAScTHCMFCwgDDgouFCUDIROIArhKEokJYwSmMQ Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail06.adl6.internode.on.net with ESMTP; 11 Nov 2011 08:49:39 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1ROcy9-0003di-Dj; Fri, 11 Nov 2011 09:19:37 +1100 Date: Fri, 11 Nov 2011 09:19:37 +1100 From: Dave Chinner To: Chandra Seetharaman Cc: Alex Elder , XFS Mailing List X-ASG-Orig-Subj: Re: Debug of xfstest 234 hang Subject: Re: Debug of xfstest 234 hang Message-ID: <20111110221937.GA2386@dastard> References: <1320959794.2201.15.camel@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320959794.2201.15.camel@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1320963583 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0203 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79894 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 03:16:33PM -0600, Chandra Seetharaman wrote: > Hi Dave, Alex, > > Debugging using trace, crash and systemtap, I found that the hang > happens when xfs_sync_worker() (thru kworker) gets stuck in xlog_wait() > while reserving a transaction log buffer for the dummy log. Yes, that much I already knew from stack traces posted. > I also found that even though xfsaild_push() keeps getting invoked, it > doesn't do anything to push the log to the disk, since the > ailp->xa_target has not been changed since it has been called from the > process stack a while back. Which is normal behaviour - if the log head/tail have't moved, then the calculated push target (25 % of log space free) will not change during the transaction reservation. > So, I thought, resetting the target to the max value would help nudge > the flow of ail to the disk. So, I added the following code. > ------------------ > diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c > index ed9252b..f59fd9f 100644 > --- a/fs/xfs/xfs_trans_ail.c > +++ b/fs/xfs/xfs_trans_ail.c > @@ -534,6 +534,10 @@ out_done: > ailp->xa_last_pushed_lsn = 0; > } > > + lsn = xfs_ail_max_lsn(ailp); > + smp_wmb(); > + xfs_trans_ail_copy_lsn(ailp, &ailp->xa_target, &lsn); > + smp_wmb(); > return tout; > } > -------------------- > > and it seem to do the magic. which means anyone who pushes on the AIL *always empties it*. That's extremely bad from a performance persepctive because it means we no longer have any concept of delaying metadata writeback until it is really necessary. Basically all this does is prevent the log space usage from hanging around the threshold point that causes the hang. i.e. instead of keeping the log roughly 25% free, this change means we get to 75% full then try to empty it completely. The hang is occurring due to some as yet unknown flaw in the threshold logic, so all your change does is make it harder to hit because the filesysetm spends less time at the threshold. A better way to acheive this woulxp dbe to push the AIL in xfs_sync_worker() before trying to cover the log. i.e. change the code to do this: if (!(mp->m_flags & XFS_MOUNT_RDONLY)) { + /* start pushing all the metadata that is currently dirty */ + xfs_ail_push_all(mp->m_ail); + /* dgc: errors ignored here */ if (mp->m_super->s_frozen == SB_UNFROZEN && xfs_log_need_covered(mp)) error = xfs_fs_log_dummy(mp); else xfs_log_force(mp, 0); error = xfs_qm_sync(mp, SYNC_TRYLOCK); - - /* start pushing all the metadata that is currently dirty */ - xfs_ail_push_all(mp->m_ail); } /* queue us up again */ This will guarantee the push target is moved before the sync worker tries to do a transaction reservation and potentially hangs waiting for space. However, this is still just a workaround for whatever threshold value problem we have that is the root cause of the problem. Hence what I'd really like to know is where the grant head/log tail values are at this point when the hang occurs (the log event tracing has all the necessary values) so we can get an idea of the condition that we are stuck in. Being able to view the progression of log reservations and releases leading up to the hang (once again from the event trace) might point out exactly what condition we are getting stuck in, and that's what we nee dto understand first before trying to fix the problem. The log reserve tracepoints give output like this: <...>-8903 [002] 241733.544531: xfs_log_reserve: dev 253:16 type QM_SETQLIM t_ocnt 1 t_cnt 1 t_curr_res 2332 t_unit_res 2332 t_flags XLOG_TIC_INITED reserveq empty writeq empty grant_reserve_cycle 1 grant_reserve_bytes 105116 grant_write_cycle 1 grant_write_bytes 105116 curr_cycle 1 curr_block 23 tail_cycle 1 tail_block 2 <...>-8903 [002] 241733.544531: xfs_log_grant_enter: dev 253:16 type QM_SETQLIM t_ocnt 1 t_cnt 1 t_curr_res 2332 t_unit_res 2332 t_flags XLOG_TIC_INITED reserveq empty writeq empty grant_reserve_cycle 1 grant_reserve_bytes 105116 grant_write_cycle 1 grant_write_bytes 105116 curr_cycle 1 curr_block 23 tail_cycle 1 tail_block 2 <...>-8903 [002] 241733.544531: xfs_log_grant_exit: dev 253:16 type QM_SETQLIM t_ocnt 1 t_cnt 1 t_curr_res 2332 t_unit_res 2332 t_flags XLOG_TIC_INITED reserveq empty writeq empty grant_reserve_cycle 1 grant_reserve_bytes 107448 grant_write_cycle 1 grant_write_bytes 107448 curr_cycle 1 curr_block 23 tail_cycle 1 tail_block 2 which show all the information about the grant/write head locations, the current tail location, the transaction type and reservation, etc. When the transaction is committed we then see: <...>-8894 [002] 241733.544536: xfs_log_done_nonperm: dev 253:16 type QM_SETQLIM t_ocnt 1 t_cnt 1 t_curr_res 2180 t_unit_res 2332 t_flags XLOG_TIC_INITED reserveq empty writeq empty grant_reserve_cycle 1 grant_reserve_bytes 107448 grant_write_cycle 1 grant_write_bytes 107448 curr_cycle 1 curr_block 23 tail_cycle 1 tail_block 2 <...>-8894 [002] 241733.544536: xfs_log_ungrant_enter: dev 253:16 type QM_SETQLIM t_ocnt 1 t_cnt 0 t_curr_res 2180 t_unit_res 2332 t_flags XLOG_TIC_INITED reserveq empty writeq empty grant_reserve_cycle 1 grant_reserve_bytes 107448 grant_write_cycle 1 grant_write_bytes 107448 curr_cycle 1 curr_block 23 tail_cycle 1 tail_block 2 <...>-8894 [002] 241733.544536: xfs_log_ungrant_sub: dev 253:16 type QM_SETQLIM t_ocnt 1 t_cnt 0 t_curr_res 2180 t_unit_res 2332 t_flags XLOG_TIC_INITED reserveq empty writeq empty grant_reserve_cycle 1 grant_reserve_bytes 107448 grant_write_cycle 1 grant_write_bytes 107448 curr_cycle 1 curr_block 23 tail_cycle 1 tail_block 2 <...>-8894 [002] 241733.544537: xfs_log_ungrant_exit: dev 253:16 type QM_SETQLIM t_ocnt 1 t_cnt 0 t_curr_res 2180 t_unit_res 2332 t_flags XLOG_TIC_INITED reserveq empty writeq empty grant_reserve_cycle 1 grant_reserve_bytes 105268 grant_write_cycle 1 grant_write_bytes 105268 curr_cycle 1 curr_block 23 tail_cycle 1 tail_block 2 Where the remaining reservation is returned to the log. >From these traces, we can see how much space is being used by each transaction (t_unit_res - t_curr_res), whether the grant head/write head change apprpropriately, whether there are queued waiters, where the tail is, where the last iclog was written to, etc. By looking at the various values, the threshold problem might become obvious. I tend to write quick throw-away awk scripts to extract the necessary fields into a plottable formats and run those through something like gnuplot or kst to see if there is any visible artifacts that might be the cause of the problem... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Nov 10 16:24:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAMOTTn137063 for ; Thu, 10 Nov 2011 16:24:29 -0600 X-ASG-Debug-ID: 1320963866-723c033d0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 22975236EA5 for ; Thu, 10 Nov 2011 14:24:27 -0800 (PST) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id PinO4PWpZqFNcGfH for ; Thu, 10 Nov 2011 14:24:27 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EACRNvE55LIil/2dsb2JhbABEqiuBBoFyAQEEATocIxAIAw4KLhQlAyETiAK4ShKJCWMEnSKJDw Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail06.adl6.internode.on.net with ESMTP; 11 Nov 2011 08:54:25 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1ROd2m-0003e7-Fz; Fri, 11 Nov 2011 09:24:24 +1100 Date: Fri, 11 Nov 2011 09:24:24 +1100 From: Dave Chinner To: Alan Cook Cc: Christoph Hellwig , linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS realtime O_DIRECT failures Subject: Re: XFS realtime O_DIRECT failures Message-ID: <20111110222424.GB2386@dastard> References: <20111109080133.GB20604@infradead.org> <20111109223314.GQ5534@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1320963868 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79895 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 09, 2011 at 05:52:15PM -0500, Alan Cook wrote: > On Wed, Nov 9, 2011 at 5:33 PM, Dave Chinner wrote: > > I'm not sure from that description just why the realtime volume adds > > any benefit to your workflow. Separation of data and metadata is > > does not provide you with data compression, so you must be doing > > something different with the real time device to acheive > > compression. Any details on that aspect of your setup? > > The compression is done via hardware that sits between the block layer > and the actual storage device (in this case it is a solid state > drive). Having both the data and meta data reside on the same device > creates a problem, as the block layer has no idea whether it has data > or meta data, and so will compress the meta data along with the > regular data, which is very bad. Splitting the meta data to a > separate device eliminated that problem. XFS metadata IO is tagged with REQ_META, so the block layer can easily distinguish it from data IO. Even if the version if XFS you are using is not doing this, it's rather simple to add it to _xfs_buf_ioapply(). With that, your problem at the block layer goes away, and hence the need to separate data from metadata at the filesystem layer goes away, too. > > As to your current problem, it's got a NULL pointer dereference > > trying to lock the per-ag structure. That means the per-ag lookup > > failed, which implies that the RT freespace bitmap may be corrupt > > and it's tried to read a bitmap block that is apparently beyond the > > end of the filesystem. What does xfs_check/xfs_repair -n tell you > > about the filesystem state? > > Unfortunately they do not tell a lot. Running xfs_check/xfs_repair -n > prior to running the test reports no errors. However, attempting to > run it after the test fails results in an indefinite I/O block (state > of D+ for the process). In fact, if I run the test utility twice, it > results in a hung system. That sounds like you have a problem with your block device or underlying storage, not a filesystem problem.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From acook@visionpointsystems.com Thu Nov 10 16:39:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAMd0k3138561 for ; Thu, 10 Nov 2011 16:39:00 -0600 X-ASG-Debug-ID: 1320964738-103502d10000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from exprod7og114.obsmtp.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 84B32236F41 for ; Thu, 10 Nov 2011 14:38:58 -0800 (PST) Received: from exprod7og114.obsmtp.com (exprod7og114.obsmtp.com [64.18.2.215]) by cuda.sgi.com with SMTP id kqcqjt9ZUgVJyYy3 for ; Thu, 10 Nov 2011 14:38:58 -0800 (PST) Received: from mail-iy0-f169.google.com ([209.85.210.169]) (using TLSv1) by exprod7ob114.postini.com ([64.18.6.12]) with SMTP ID DSNKTrxSgj01NT3UWobmQrP5+E9Ki4hhht0I@postini.com; Thu, 10 Nov 2011 14:38:59 PST Received: by iaek3 with SMTP id k3so926452iae.28 for ; Thu, 10 Nov 2011 14:38:57 -0800 (PST) MIME-Version: 1.0 Received: by 10.50.158.227 with SMTP id wx3mr9982382igb.52.1320964737449; Thu, 10 Nov 2011 14:38:57 -0800 (PST) Received: by 10.50.237.5 with HTTP; Thu, 10 Nov 2011 14:38:57 -0800 (PST) In-Reply-To: <20111110222424.GB2386@dastard> References: <20111109080133.GB20604@infradead.org> <20111109223314.GQ5534@dastard> <20111110222424.GB2386@dastard> Date: Thu, 10 Nov 2011 17:38:57 -0500 Message-ID: X-ASG-Orig-Subj: Re: XFS realtime O_DIRECT failures Subject: Re: XFS realtime O_DIRECT failures From: Alan Cook To: Dave Chinner Cc: Christoph Hellwig , linux-xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: exprod7og114.obsmtp.com[64.18.2.215] X-Barracuda-Start-Time: 1320964739 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0007 1.0000 -2.0166 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79895 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 5:24 PM, Dave Chinner wrote: > XFS metadata IO is tagged with REQ_META, so the block layer can > easily distinguish it from data IO. =A0Even if the version if XFS you > are using is not doing this, it's rather simple to add it to > _xfs_buf_ioapply(). > > With that, your problem at the block layer goes away, and hence the > need to separate data from metadata at the filesystem layer goes > away, too. Thanks. I'll take a look into my particular version of XFS. That tag may well solve my problems. > > Unfortunately they do not tell a lot. =A0Running xfs_check/xfs_repair -= n > > prior to running the test reports no errors. =A0However, attempting to > > run it after the test fails results in an indefinite I/O block (state > > of D+ for the process). =A0In fact, if I run the test utility twice, it > > results in a hung system. > > That sounds like you have a problem with your block device or > underlying storage, not a filesystem problem.... I had the same thought at first, but I get the same behavior using only ramdisks. This issue only occurs when using RT subvolumes. Using XFS without separating the data and meta data (e.g. all on one device) has no issues. From bpm@sgi.com Thu Nov 10 16:42:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAMgjRe138847 for ; Thu, 10 Nov 2011 16:42:45 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5A786304070; Thu, 10 Nov 2011 14:42:45 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id DEC4F431F74; Thu, 10 Nov 2011 16:43:02 -0600 (CST) Date: Thu, 10 Nov 2011 16:43:02 -0600 From: Ben Myers To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 4/5] xfs: log file size updates as part of unwritten extent conversion Message-ID: <20111110224302.GB29840@sgi.com> References: <20111108085614.478431403@bombadil.infradead.org> <20111108085846.654476311@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111108085846.654476311@bombadil.infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Christoph, On Tue, Nov 08, 2011 at 03:56:18AM -0500, Christoph Hellwig wrote: > If we convert and unwritten extent past the current i_size log the size update > as part of the extent manipulation transactions instead of doing an unlogged > metadata update later. > > Signed-off-by: Christoph Hellwig > > --- > fs/xfs/xfs_aops.c | 11 ++++++----- > fs/xfs/xfs_iomap.c | 19 ++++++++++++++++++- > 2 files changed, 24 insertions(+), 6 deletions(-) > > Index: linux-2.6/fs/xfs/xfs_iomap.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_iomap.c 2011-11-08 08:02:50.234386118 +0100 > +++ linux-2.6/fs/xfs/xfs_iomap.c 2011-11-08 08:14:04.319888994 +0100 > @@ -31,6 +31,7 @@ > #include "xfs_ialloc_btree.h" > #include "xfs_dinode.h" > #include "xfs_inode.h" > +#include "xfs_inode_item.h" > #include "xfs_btree.h" > #include "xfs_bmap.h" > #include "xfs_rtalloc.h" > @@ -645,6 +646,7 @@ xfs_iomap_write_unwritten( > xfs_trans_t *tp; > xfs_bmbt_irec_t imap; > xfs_bmap_free_t free_list; > + xfs_fsize_t i_size; > uint resblks; > int committed; > int error; > @@ -705,7 +707,22 @@ xfs_iomap_write_unwritten( > if (error) > goto error_on_bmapi_transaction; > > - error = xfs_bmap_finish(&(tp), &(free_list), &committed); > + /* > + * Log the updated inode size as we go. We have to be careful > + * to only log it up to the actual write offset if it is > + * halfway into a block. > + */ > + i_size = XFS_FSB_TO_B(mp, offset_fsb + count_fsb); > + if (i_size > offset + count) > + i_size = offset + count; > + I'm missing something here. Why wouldn't you just i_size = xfs_new_eof(ip, offset + count); It's not clear to me why offset_fsb and count_fsb should be involved in this calculation. Can you enlighten me? Thanks, Ben > + i_size = xfs_new_eof(ip, i_size); > + if (i_size) { > + ip->i_d.di_size = i_size; > + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); > + } > + > + error = xfs_bmap_finish(&tp, &free_list, &committed); > if (error) > goto error_on_bmapi_transaction; > > Index: linux-2.6/fs/xfs/xfs_aops.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-08 08:12:31.586400976 +0100 > +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-08 08:14:04.319888994 +0100 > @@ -183,13 +183,14 @@ xfs_end_io( > ioend->io_error = -error; > goto done; > } > + } else { > + /* > + * We might have to update the on-disk file size after > + * extending writes. > + */ > + xfs_setfilesize(ioend); > } > > - /* > - * We might have to update the on-disk file size after extending > - * writes. > - */ > - xfs_setfilesize(ioend); > done: > xfs_destroy_ioend(ioend); > } > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From BATV+226cfcc83de5ad32bc2a+3000+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 10 16:49:39 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAAMncvw139421 for ; Thu, 10 Nov 2011 16:49:39 -0600 X-ASG-Debug-ID: 1320965377-3d0801bb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CB13123728F; Thu, 10 Nov 2011 14:49:37 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 6tFQBDNF5SjjRtof; Thu, 10 Nov 2011 14:49:37 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1ROdRA-00027m-Tz; Thu, 10 Nov 2011 22:49:36 +0000 Date: Thu, 10 Nov 2011 17:49:36 -0500 From: Christoph Hellwig To: Ben Myers Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/5] xfs: log file size updates as part of unwritten extent conversion Subject: Re: [PATCH 4/5] xfs: log file size updates as part of unwritten extent conversion Message-ID: <20111110224936.GA8136@infradead.org> References: <20111108085614.478431403@bombadil.infradead.org> <20111108085846.654476311@bombadil.infradead.org> <20111110224302.GB29840@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111110224302.GB29840@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1320965377 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79895 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 04:43:02PM -0600, Ben Myers wrote: > > + /* > > + * Log the updated inode size as we go. We have to be careful > > + * to only log it up to the actual write offset if it is > > + * halfway into a block. > > + */ > > + i_size = XFS_FSB_TO_B(mp, offset_fsb + count_fsb); > > + if (i_size > offset + count) > > + i_size = offset + count; > > + > > I'm missing something here. Why wouldn't you just > > i_size = xfs_new_eof(ip, offset + count); > > It's not clear to me why offset_fsb and count_fsb should be involved in > this calculation. Can you enlighten me? Because at this point we don't have the full length allocated yet. Every loop iteration has it's own transaction, and we might as well crash before the final one. The alternatively would be to only log a file size update during the final loop iteration, but this variant seems a tad cleaner. From david@fromorbit.com Thu Nov 10 19:29:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAB1Tunx152706 for ; Thu, 10 Nov 2011 19:29:56 -0600 X-ASG-Debug-ID: 1320974993-1c0401800000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E25BC1D01CEC for ; Thu, 10 Nov 2011 17:29:54 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id CCDxPjQIkWMGrUu6 for ; Thu, 10 Nov 2011 17:29:54 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EADJ6vE55LIil/2dsb2JhbABEqi2BBoFyAQEEATocIwULCAMOBwMuFCUDIROIArkMEokJYwSdIokP Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail06.adl2.internode.on.net with ESMTP; 11 Nov 2011 11:59:52 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1ROfwE-0003ug-FX; Fri, 11 Nov 2011 12:29:50 +1100 Date: Fri, 11 Nov 2011 12:29:50 +1100 From: Dave Chinner To: Alex Elder Cc: xfs@oss.sgi.com, Kevan Rehm X-ASG-Orig-Subj: Re: [PATCH 8/8] xfsprogs: xfs_db: add new "resvsp" command Subject: Re: [PATCH 8/8] xfsprogs: xfs_db: add new "resvsp" command Message-ID: <20111111012950.GC2386@dastard> References: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> <122161c271ee994b758daafe4e0756cae784950b.1320955676.git.aelder@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <122161c271ee994b758daafe4e0756cae784950b.1320955676.git.aelder@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1320974994 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79907 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 02:35:18PM -0600, Alex Elder wrote: > From: Kevan Rehm > > This patch adds a new "resvsp" command to xfs_db. The command > provides access to the xfsctl(3) XFS_IOC_RESVSP64 operation, which > allocates space in an ordinary file. Blocks are allocated but not > zeroed, and the file size does not change. The commit message fails to answer the most important question of all: what is the use case that requires adding offline preallocation of extents to arbitrary inodes? Conceptually, I don't think high level functionality like extent allocation belongs in xfs_db: - extent allocation is effectively an open-ended, multi-step modification that can touch large amounts of metadata across all AGs in the filesystem, - userspace extent allocation code is rarely used and as such nowhere near as well tested as the kernel code. - userspace extent allocation does not support real time device allocation at all: #define xfs_bmap_rtalloc(a) (ENOSYS) - modifications made by xfs_db are not transactional and therefore not recoverable if the system dies during such an operation. Such a failure means you have to run a xfs_reapir pass on your filesystem to clean up the mess that was left behind.... - we already have tools to do space reservation online (i.e. xfs_io -c "resvsp off len" testfile) in a safe manner that also supports realtime device allocation. Why duplicate this functionality in a different tool? ..... > +static void > +resvsp_help(void) > +{ > + dbprintf(_( > +"\n" > +"The resvsp function is essentially an implementation of the xfsctl(3)\n" > +"file operation XFS_IOC_RESVSP64 which allocates space in an ordinary\n" > +"file. Probably no need to mention the ioctl here - preallocation is a well enough known function now that simply calling it "an extent preallocation operation" is sufficient to explain what it is for. > Blocks are allocated but not zeroed, and the file size does not\n" > +"change. The -o option is the starting offset for the allocation (default 0)\n" > +"and the -l option gives the length of the allocation in bytes (default to\n" > +"end of file). Both offset and length values will be rounded to a filesystem\n" > +"block boundary. 'inode#' is the inode number of the file in which to\n" > +"perform the allocation. If none is specified, the current inode is used.\n" > +"If the -w option is specified, the allocated extents will not be flagged as\n" > +"unwritten. Use this option with care, as someone with read permission\n" > +"to the file can then read whatever is written in those blocks.\n" I'm on record as being totally against making it easy for -anyone- to preallocate _written_ extents via -any method- because it's just a whopping great big security hole. "Use care" is not a good enough protection against the potential of exposing large amount of stale data to any user that can read the file, even though only root can do that preallocation. Cheers, Dave. -- Dave Chinner david@fromorbit.com From dak@franck.debian.org Thu Nov 10 23:45:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAB5j12B173665 for ; Thu, 10 Nov 2011 23:45:01 -0600 X-ASG-Debug-ID: 1320990299-69d102200000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from franck.debian.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C128F1CFECAF for ; Thu, 10 Nov 2011 21:44:59 -0800 (PST) Received: from franck.debian.org (franck.debian.org [128.148.34.3]) by cuda.sgi.com with ESMTP id IFIahWhkLi3M9zkT for ; Thu, 10 Nov 2011 21:44:59 -0800 (PST) Received: from dak by franck.debian.org with local (Exim 4.72) (envelope-from ) id 1ROjv8-000783-FG for xfs@oss.sgi.com; Fri, 11 Nov 2011 05:44:58 +0000 Message-Id: To: xfs@oss.sgi.com From: Debian FTP Masters X-ASG-Orig-Subj: Processing of xfsprogs_3.1.6_i386.changes Subject: Processing of xfsprogs_3.1.6_i386.changes Date: Fri, 11 Nov 2011 05:44:58 +0000 X-Debian: DAK X-DAK: DAK X-Debian-Package: xfsprogs Sender: Archive Administrator X-Barracuda-Connect: franck.debian.org[128.148.34.3] X-Barracuda-Start-Time: 1320990299 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0419 1.0000 -1.7508 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.75 X-Barracuda-Spam-Status: No, SCORE=-1.75 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79923 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfsprogs_3.1.6_i386.changes uploaded successfully to localhost along with the files: xfsprogs_3.1.6.dsc xfsprogs_3.1.6.tar.gz xfsprogs_3.1.6_i386.deb xfslibs-dev_3.1.6_i386.deb xfsprogs-udeb_3.1.6_i386.udeb Greetings, Your Debian queue daemon (running on host franck.debian.org) From envelope@ftp-master.debian.org Thu Nov 10 23:47:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAB5lN2h173814 for ; Thu, 10 Nov 2011 23:47:23 -0600 X-ASG-Debug-ID: 1320990442-16b800a20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from franck.debian.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2AB4D2368B7 for ; Thu, 10 Nov 2011 21:47:22 -0800 (PST) Received: from franck.debian.org (franck.debian.org [128.148.34.3]) by cuda.sgi.com with ESMTP id h1XYLbX5TTlR0dtD for ; Thu, 10 Nov 2011 21:47:22 -0800 (PST) Received: from dak by franck.debian.org with local (Exim 4.72) (envelope-from ) id 1ROjxR-0007TT-Uo; Fri, 11 Nov 2011 05:47:21 +0000 Date: Fri, 11 Nov 2011 05:47:21 +0000 Message-Id: From: Debian FTP Masters To: Nathan Scott , XFS Development Team X-DAK: dak process-upload X-Debian: DAK X-Debian-Package: xfsprogs Precedence: bulk MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-ASG-Orig-Subj: xfsprogs_3.1.6_i386.changes ACCEPTED into unstable Subject: xfsprogs_3.1.6_i386.changes ACCEPTED into unstable Sender: Archive Administrator X-Barracuda-Connect: franck.debian.org[128.148.34.3] X-Barracuda-Start-Time: 1320990443 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0007 1.0000 -2.0167 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79923 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Accepted: xfslibs-dev_3.1.6_i386.deb to main/x/xfsprogs/xfslibs-dev_3.1.6_i386.deb xfsprogs-udeb_3.1.6_i386.udeb to main/x/xfsprogs/xfsprogs-udeb_3.1.6_i386.udeb xfsprogs_3.1.6.dsc to main/x/xfsprogs/xfsprogs_3.1.6.dsc xfsprogs_3.1.6.tar.gz to main/x/xfsprogs/xfsprogs_3.1.6.tar.gz xfsprogs_3.1.6_i386.deb to main/x/xfsprogs/xfsprogs_3.1.6_i386.deb Override entries for your package: xfslibs-dev_3.1.6_i386.deb - extra libdevel xfsprogs-udeb_3.1.6_i386.udeb - optional debian-installer xfsprogs_3.1.6.dsc - source admin xfsprogs_3.1.6_i386.deb - optional admin Announcing to debian-devel-changes@lists.debian.org Closing bugs: 553875 Thank you for your contribution to Debian. From debbugs@busoni.debian.org Thu Nov 10 23:51:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_73 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAB5pIZi174093 for ; Thu, 10 Nov 2011 23:51:19 -0600 X-ASG-Debug-ID: 1320990676-6c4603240000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from busoni.debian.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 219FA10507E0 for ; Thu, 10 Nov 2011 21:51:16 -0800 (PST) Received: from busoni.debian.org (busoni.debian.org [140.211.15.34]) by cuda.sgi.com with ESMTP id zkgAlt23iQErg971 for ; Thu, 10 Nov 2011 21:51:16 -0800 (PST) Received: from debbugs by busoni.debian.org with local (Exim 4.72) (envelope-from ) id 1ROk1A-0003BU-5X; Fri, 11 Nov 2011 05:51:12 +0000 MIME-Version: 1.0 X-Mailer: MIME-tools 5.428 (Entity 5.428) X-Loop: owner@bugs.debian.org From: owner@bugs.debian.org (Debian Bug Tracking System) To: Nathan Scott X-ASG-Orig-Subj: Bug#553875: marked as done (replacing libreadline5-dev build dependency with libreadline-dev) Subject: Bug#553875: marked as done (replacing libreadline5-dev build dependency with libreadline-dev) Message-ID: References: <200911020111.nA21BMV5011421@bolero.cs.tu-berlin.de> X-Debian-PR-Message: closed 553875 X-Debian-PR-Package: xfsprogs X-Debian-PR-Keywords: sid wheezy X-Debian-PR-Source: xfsprogs Date: Fri, 11 Nov 2011 05:51:12 +0000 Content-Type: multipart/mixed; boundary="----------=_1320990672-12238-0" Sender: Debian BTS X-Barracuda-Connect: busoni.debian.org[140.211.15.34] X-Barracuda-Start-Time: 1320990677 X-Barracuda-Bayes: INNOCENT GLOBAL 0.3152 1.0000 -0.2851 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.09 X-Barracuda-Spam-Status: No, SCORE=-0.09 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA590 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79924 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 BSF_SC0_SA590 Custom Rule SA590 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format... ------------=_1320990672-12238-0 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Your message dated Fri, 11 Nov 2011 05:47:22 +0000 with message-id and subject line Bug#553875: fixed in xfsprogs 3.1.6 has caused the Debian Bug report #553875, regarding replacing libreadline5-dev build dependency with libreadline-dev to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org immediately.) --=20 553875: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D553875 Debian Bug Tracking System Contact owner@bugs.debian.org with problems ------------=_1320990672-12238-0 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at maintonly) by bugs.debian.org; 2 Nov 2009 01:19:24 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.3-bugs.debian.org_2005_01_02 (2007-08-08) on rietz.debian.org X-Spam-Level: X-Spam-Bayes: score:0.0000 Tokens: new, 10; hammy, 94; neutral, 43; spammy, 0. spammytokens: hammytokens:0.000-+--Usertags, 0.000-+--Severity, 0.000-+--usertags, 0.000-+--sk:lists.d, 0.000-+--severity X-Spam-Status: No, score=-9.3 required=4.0 tests=AWL,BAYES_00,HAS_PACKAGE, RCVD_IN_DNSWL_MED autolearn=ham version=3.2.3-bugs.debian.org_2005_01_02 Return-path: Received: from mail.cs.tu-berlin.de ([130.149.17.13]) by rietz.debian.org with esmtp (Exim 4.63) (envelope-from ) id 1N4lZs-00065m-Ks for maintonly@bugs.debian.org; Mon, 02 Nov 2009 01:19:24 +0000 Received: from localhost (localhost [127.0.0.1]) by localhost-12225.cs.tu-berlin.de (Postfix) with ESMTP id 66CE62A5A4 for ; Mon, 2 Nov 2009 02:11:32 +0100 (MET) X-Virus-Scanned: amavisd-new at cs.tu-berlin.de (including SpamAssassin) Received: from mailhost.cs.tu-berlin.de ([127.0.0.1]) by localhost (mail.cs.tu-berlin.de [127.0.0.1]) (amavisd-new, port 12224) with ESMTP id b+HXJT2HkfTf 06852-17 for ; Mon, 2 Nov 2009 02:11:23 +0100 (MET) 16504 Received: from bolero.cs.tu-berlin.de (bolero.cs.tu-berlin.de [130.149.19.1]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mailhost.cs.tu-berlin.de (Postfix) with ESMTPS for ; Mon, 2 Nov 2009 02:11:23 +0100 (MET) Received: (from doko@localhost) by bolero.cs.tu-berlin.de (8.13.8+Sun/8.13.3/Submit) id nA21BMV5011421 for maintonly@bugs.debian.org; Mon, 2 Nov 2009 02:11:22 +0100 (MET) Date: Mon, 2 Nov 2009 02:11:22 +0100 (MET) From: Matthias Klose Message-Id: <200911020111.nA21BMV5011421@bolero.cs.tu-berlin.de> To: maintonly@bugs.debian.org Subject: replacing libreadline5-dev build dependency with libreadline-dev Delivered-To: maintonly@bugs.debian.org Package: xfsprogs Version: 3.0.4 Severity: important User: doko@debian.org Usertags: readline6 Sent to http://lists.debian.org/debian-devel/2009/09/msg00549.html As a package maintainer you got this email directly as well. Both libreadline-dev (>= 6.0) and libreadline6-dev are now available in unstable and testing. If possible, please replace the libreadline5-dev build dependency with libreadline-dev, so that in future changes of the libreadline soname binNMU's can be used for this kind of update. ------------=_1320990672-12238-0 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 553875-close) by bugs.debian.org; 11 Nov 2011 05:47:23 +0000 X-Spam-Checker-Version: SpamAssassin 3.3.1-bugs.debian.org_2005_01_02 (2010-03-16) on busoni.debian.org X-Spam-Level: X-Spam-Status: No, score=-12.7 required=4.0 tests=BAYES_00,FROMDEVELOPER, FVGT_m_MULTI_ODD,HAS_BUG_NUMBER,IMPRONONCABLE_2,MURPHY_WRONG_WORD1, MURPHY_WRONG_WORD2,PGPSIGNATURE autolearn=ham version=3.3.1-bugs.debian.org_2005_01_02 X-Spam-Bayes: score:0.0000 Tokens: new, 33; hammy, 151; neutral, 127; spammy, 0. spammytokens: hammytokens:0.000-+--HX-Debian:DAK, 0.000-+--H*rp:D*ftp-master.debian.org, 0.000-+--HX-DAK:process-upload, 0.000-+--H*RU:128.148.34.3, 0.000-+--HX-Spam-Relays-External:128.148.34.3 Return-path: Received: from franck.debian.org ([128.148.34.3]) from C=NA,ST=NA,L=Ankh Morpork,O=Debian SMTP,OU=Debian SMTP CA,CN=franck.debian.org,EMAIL=hostmaster@franck.debian.org (verified) by busoni.debian.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.72) (envelope-from ) id 1ROjxT-0002sT-Ee for 553875-close@bugs.debian.org; Fri, 11 Nov 2011 05:47:23 +0000 Received: from dak by franck.debian.org with local (Exim 4.72) (envelope-from ) id 1ROjxS-0007Tc-0c; Fri, 11 Nov 2011 05:47:22 +0000 Date: Fri, 11 Nov 2011 05:47:22 +0000 Message-Id: From: Nathan Scott To: 553875-close@bugs.debian.org X-DAK: dak process-upload X-Debian: DAK X-Debian-Package: xfsprogs MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Subject: Bug#553875: fixed in xfsprogs 3.1.6 Sender: Archive Administrator Source: xfsprogs Source-Version: 3.1.6 We believe that the bug you reported is fixed in the latest version of xfsprogs, which is due to be installed in the Debian FTP archive: xfslibs-dev_3.1.6_i386.deb to main/x/xfsprogs/xfslibs-dev_3.1.6_i386.deb xfsprogs-udeb_3.1.6_i386.udeb to main/x/xfsprogs/xfsprogs-udeb_3.1.6_i386.udeb xfsprogs_3.1.6.dsc to main/x/xfsprogs/xfsprogs_3.1.6.dsc xfsprogs_3.1.6.tar.gz to main/x/xfsprogs/xfsprogs_3.1.6.tar.gz xfsprogs_3.1.6_i386.deb to main/x/xfsprogs/xfsprogs_3.1.6_i386.deb A summary of the changes between this version and the previous one is attached. Thank you for reporting the bug, which will now be closed. If you have further comments please address them to 553875@bugs.debian.org, and the maintainer will reopen the bug report if appropriate. Debian distribution maintenance software pp. Nathan Scott (supplier of updated xfsprogs package) (This message was generated automatically at their request; if you believe that there is a problem with it please contact the archive administrators by mailing ftpmaster@debian.org) -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Format: 1.8 Date: Wed, 11 Oct 2011 16:47:10 +1100 Source: xfsprogs Binary: xfsprogs xfslibs-dev xfsprogs-udeb Architecture: source i386 Version: 3.1.6 Distribution: unstable Urgency: low Maintainer: XFS Development Team Changed-By: Nathan Scott Description: xfslibs-dev - XFS filesystem-specific static libraries and headers xfsprogs - Utilities for managing the XFS filesystem xfsprogs-udeb - A stripped-down version of xfsprogs, for debian-installer (udeb) Closes: 553875 Changes: xfsprogs (3.1.6) unstable; urgency=low . * New upstream release * Handle upcoming libreadline5-dev removal (closes: #553875) Checksums-Sha1: e1070da20fbf627efca4046f0a82c497387c487e 1096 xfsprogs_3.1.6.dsc 8f4c7382f831ec7e859891637b80e0aea712f38f 1396825 xfsprogs_3.1.6.tar.gz 775e379f700c0a948a2207ad164d887763d2ed56 1540184 xfsprogs_3.1.6_i386.deb cefbdc132ccb48a2b2fde783c55fdb713a0363bf 32116 xfslibs-dev_3.1.6_i386.deb 33012c0d6e8a9a7258cb626b1dc20cc996e6aadf 138900 xfsprogs-udeb_3.1.6_i386.udeb Checksums-Sha256: 78ed9662b8a20614bd3b5852560fd0a0ad2fa855b6c20688d9fe47dd19123e17 1096 xfsprogs_3.1.6.dsc 23cd7fc21c7b060e049c060d233260a1e3d47c5f1b2611b56210207b011d148e 1396825 xfsprogs_3.1.6.tar.gz 768c4a7dfa63271071bd949b361c558821ac13bdbeeee96ad0cb82ac5d698fd7 1540184 xfsprogs_3.1.6_i386.deb 18a40d519d85c0ee9577ed690926c20cf4146eec5e0f458c6188e50ed0d40c59 32116 xfslibs-dev_3.1.6_i386.deb 948c8c0b8ef364975d955773f99b4a0e3458fb691f0b097030943333c29ac7b2 138900 xfsprogs-udeb_3.1.6_i386.udeb Files: f20785000c4ed79e504d4cbefeda4101 1096 admin optional xfsprogs_3.1.6.dsc f8b42126ebb35dcd832d1d51931e4aef 1396825 admin optional xfsprogs_3.1.6.tar.gz 4a7464d5f08bca49d2454b14bcaf4db1 1540184 admin optional xfsprogs_3.1.6_i386.deb c51bcfb8378e8d071c419444cf98ff12 32116 libdevel extra xfslibs-dev_3.1.6_i386.deb a1ab7c3b5000f5ed29e59d8d2d939a03 138900 debian-installer optional xfsprogs-udeb_3.1.6_i386.udeb Package-Type: udeb -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iEYEARECAAYFAk68s6gACgkQm8fl3HSIa2P8AACeMwht68MBbiXrf2oAaVlBTaAw EXYAnAqYaH2qWOwy5Mfh5WWJ5gFGhRWJ =3oaG -----END PGP SIGNATURE----- ------------=_1320990672-12238-0-- From gaowanlong@cn.fujitsu.com Fri Nov 11 00:31:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAB6VsNt179958 for ; Fri, 11 Nov 2011 00:31:54 -0600 X-ASG-Debug-ID: 1320993111-7cbf000c0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 251A91050B47 for ; Thu, 10 Nov 2011 22:31:51 -0800 (PST) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id 8vZW5YNYZ2T3zqvH for ; Thu, 10 Nov 2011 22:31:51 -0800 (PST) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id 818C71700BD for ; Fri, 11 Nov 2011 14:31:48 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pAB6VkC6011455 for ; Fri, 11 Nov 2011 14:31:47 +0800 Received: from [10.167.225.68] ([10.167.225.68]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011111114314206-67811 ; Fri, 11 Nov 2011 14:31:42 +0800 Message-ID: <4EBCC112.3020108@cn.fujitsu.com> Date: Fri, 11 Nov 2011 14:30:42 +0800 From: Wanlong Gao Reply-To: gaowanlong@cn.fujitsu.com Organization: FNST User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.15) Gecko/20110322 Red Hat/3.1.9-3.el6_0 Thunderbird/3.1.9 MIME-Version: 1.0 To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: xfstests/071 FAIL with XFS Assertion Subject: xfstests/071 FAIL with XFS Assertion X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-11 14:31:42, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-11 14:31:46, Serialize complete at 2011-11-11 14:31:46 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1320993113 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.79926 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean v3.1.0-10325-g3155521 [ 39.315513] XFS: Assertion failed: XFS_FORCED_SHUTDOWN(ip->i_mount) || ip->i_delayed_blks == 0, file: fs/xfs/xfs_super.c, line: 799 [ 39.316613] ------------[ cut here ]------------ [ 39.317099] kernel BUG at fs/xfs/xfs_message.c:101! [ 39.317554] invalid opcode: 0000 [#1] SMP [ 39.317554] CPU 1 [ 39.317554] Modules linked in: xfs exportfs deflate zlib_deflate ctr camellia cast5 rmd160 crypto_null ccm serpent blowfish_generic blowfish_common twofish_x86_64 twofish_common ecb xcbc cbc sha256_generic sha512_generic des_generic cryptd aes_x86_64 aes_generic ah6 ah4 esp6 esp4 xfrm4_mode_beet xfrm4_tunnel tunnel4 xfrm4_mode_tunnel xfrm4_mode_transport xfrm6_mode_transport xfrm6_mode_ro xfrm6_mode_beet xfrm6_mode_tunnel ipcomp ipcomp6 xfrm_ipcomp xfrm6_tunnel tunnel6 af_key sunrpc ipv6 snd_hda_intel snd_hda_codec snd_hwdep snd_seq snd_seq_device snd_pcm snd_timer snd soundcore microcode i2c_piix4 snd_page_alloc virtio_net virtio_balloon i2c_core pcspkr joydev virtio_blk floppy virtio_pci virtio_ring virtio [last unloaded: speedstep_lib] [ 39.317554] [ 39.317554] Pid: 2572, comm: umount Not tainted 3.1.0-10325-g3155521 #1 Red Hat KVM [ 39.317554] RIP: 0010:[] [] assfail+0x22/0x24 [xfs] [ 39.317554] RSP: 0018:ffff88001d369d48 EFLAGS: 00010296 [ 39.317554] RAX: 000000000000008d RBX: ffff88001d658d90 RCX: 000000000000aaf7 [ 39.317554] RDX: 0000000000000000 RSI: 0000000000000092 RDI: 0000000000000246 [ 39.317554] RBP: ffff88001d369d48 R08: 0000000000000000 R09: ffff88001f00c000 [ 39.317554] R10: ffff88009d369be7 R11: 0000000000000000 R12: ffff88001d658c00 [ 39.317554] R13: ffffffffa0358c70 R14: ffff88001bc5d7c8 R15: 0000000000000000 [ 39.317554] FS: 00007f2c4f785760(0000) GS:ffff88001f680000(0000) knlGS:0000000000000000 [ 39.317554] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 39.317554] CR2: 00000037e48d7250 CR3: 000000001c0a1000 CR4: 00000000000006e0 [ 39.317554] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 39.317554] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 39.317554] Process umount (pid: 2572, threadinfo ffff88001d368000, task ffff88001bf89720) [ 39.317554] Stack: [ 39.317554] ffff88001d369d78 ffffffffa02f5f59 ffff88001d369d78 ffff88001d658d90 [ 39.317554] ffff88001d658e88 ffffffffa0358c70 ffff88001d369d98 ffffffff81137d46 [ 39.317554] ffff88001d658d90 ffff88001d658d90 ffff88001d369dc8 ffffffff81138230 [ 39.317554] Call Trace: [ 39.317554] [] xfs_fs_destroy_inode+0xa6/0x122 [xfs] [ 39.317554] [] destroy_inode+0x3e/0x58 [ 39.317554] [] evict+0x144/0x14c [ 39.317554] [] dispose_list+0x3e/0x4f [ 39.317554] [] evict_inodes+0xdb/0xe8 [ 39.317554] [] generic_shutdown_super+0x4c/0xbb [ 39.317554] [] kill_block_super+0x27/0x6a [ 39.317554] [] deactivate_locked_super+0x26/0x57 [ 39.317554] [] deactivate_super+0x3a/0x3f [ 39.317554] [] mntput_no_expire+0xd0/0xd5 [ 39.317554] [] sys_umount+0x2dc/0x30a [ 39.317554] [] ? path_put+0x22/0x26 [ 39.317554] [] system_call_fastpath+0x16/0x1b [ 39.317554] Code: c4 68 5b 41 5c 41 5d c9 c3 55 48 89 e5 66 66 66 66 90 31 c0 48 89 f1 41 89 d0 48 c7 c6 9c e2 35 a0 48 89 fa 31 ff e8 a8 fc ff ff <0f> 0b 55 48 89 e5 48 83 ec 10 66 66 66 66 90 41 b8 01 00 00 00 [ 39.317554] RIP [] assfail+0x22/0x24 [xfs] [ 39.317554] RSP [ 39.388697] ---[ end trace a372bd1f2ffe0ef4 ]--- Thanks -Wanlong Gao From aelder@sgi.com Fri Nov 11 14:29:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pABKTdIu222027 for ; Fri, 11 Nov 2011 14:29:40 -0600 Received: from xmail.sgi.com (pv-excas3-dc21-nlb.corp.sgi.com [137.38.102.207]) by relay2.corp.sgi.com (Postfix) with ESMTP id 76F28304070; Fri, 11 Nov 2011 12:29:36 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Fri, 11 Nov 2011 14:29:36 -0600 Message-ID: <1321043375.8773.50.camel@doink> Subject: Re: [RFC PATCH 1/4] Define a new function xfs_this_quota_on() From: Alex Elder Reply-To: To: Chandra Seetharaman CC: Date: Fri, 11 Nov 2011 14:29:35 -0600 In-Reply-To: <20111027220529.2638.41757.sendpatchset@chandra-lucid.austin.ibm.com> References: <20111027220523.2638.12351.sendpatchset@chandra-lucid.austin.ibm.com> <20111027220529.2638.41757.sendpatchset@chandra-lucid.austin.ibm.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, 2011-10-27 at 17:05 -0500, Chandra Seetharaman wrote: > Create a new function xfs_this_quota_on() that takes a xfs_mount > data srtucture and a disk quota type and returns true if the specified > type of quota is ON in the xfs_mount data structure. > > Signed-off-by: Chandra Seetharaman Looks good. Reviewed-by: Alex Elder From aelder@sgi.com Fri Nov 11 14:29:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pABKTkjr222050 for ; Fri, 11 Nov 2011 14:29:46 -0600 Received: from xmail.sgi.com (pv-excas3-dc21.corp.sgi.com [137.38.102.206]) by relay3.corp.sgi.com (Postfix) with ESMTP id AA32AAC011; Fri, 11 Nov 2011 12:29:42 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Fri, 11 Nov 2011 14:29:42 -0600 Message-ID: <1321043381.8773.51.camel@doink> Subject: Re: [RFC PATCH 2/4] Define a new function xfs_inode_dquot() From: Alex Elder Reply-To: To: Chandra Seetharaman CC: Date: Fri, 11 Nov 2011 14:29:41 -0600 In-Reply-To: <20111027220534.2638.54570.sendpatchset@chandra-lucid.austin.ibm.com> References: <20111027220523.2638.12351.sendpatchset@chandra-lucid.austin.ibm.com> <20111027220534.2638.54570.sendpatchset@chandra-lucid.austin.ibm.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, 2011-10-27 at 17:05 -0500, Chandra Seetharaman wrote: > Define a new function xfs_inode_dquot() that takes a inode pointer > and a disk quota type and returns the quota pointer for the specified > quota type. > > This simplifies the xfs_qm_dqget() error path significantly. > > Signed-off-by: Chandra Seetharaman Looks good. Reviewed-by: Alex Elder From aelder@sgi.com Fri Nov 11 14:29:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pABKTpii222068 for ; Fri, 11 Nov 2011 14:29:51 -0600 Received: from xmail.sgi.com (pv-excas3-dc21-nlb.corp.sgi.com [137.38.102.207]) by relay1.corp.sgi.com (Postfix) with ESMTP id EEFAC8F8089; Fri, 11 Nov 2011 12:29:47 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Fri, 11 Nov 2011 14:29:47 -0600 Message-ID: <1321043387.8773.52.camel@doink> Subject: Re: [RFC PATCH 3/4] Change xfs_sb_from_disk() interface to take a mount pointer From: Alex Elder Reply-To: To: Chandra Seetharaman CC: Date: Fri, 11 Nov 2011 14:29:47 -0600 In-Reply-To: <20111027220541.2638.8279.sendpatchset@chandra-lucid.austin.ibm.com> References: <20111027220523.2638.12351.sendpatchset@chandra-lucid.austin.ibm.com> <20111027220541.2638.8279.sendpatchset@chandra-lucid.austin.ibm.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.0- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, 2011-10-27 at 17:05 -0500, Chandra Seetharaman wrote: > Change xfs_sb_from_disk() interface to take a mount pointer > instead of a superblock pointer. > > This is to print mount point specific error messages in future > fixes. > > Signed-off-by: Chandra Seetharaman Looks good. Reviewed-by: Alex Elder From BATV+fd2fd21c38c5e5c3d048+3003+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 13 05:52:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pADBqUlU109876 for ; Sun, 13 Nov 2011 05:52:31 -0600 X-ASG-Debug-ID: 1321185145-64cd02880000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 160481E99B09 for ; Sun, 13 Nov 2011 03:52:26 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id slNPL2unBpS575Bb for ; Sun, 13 Nov 2011 03:52:26 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPYbn-00053o-SL; Sun, 13 Nov 2011 11:52:23 +0000 Date: Sun, 13 Nov 2011 06:52:23 -0500 From: Christoph Hellwig To: Wanlong Gao Cc: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfstests/071 FAIL with XFS Assertion Subject: Re: xfstests/071 FAIL with XFS Assertion Message-ID: <20111113115223.GA19435@infradead.org> References: <4EBCC112.3020108@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4EBCC112.3020108@cn.fujitsu.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321185147 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0006 1.0000 -2.0169 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80135 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Nov 11, 2011 at 02:30:42PM +0800, Wanlong Gao wrote: > v3.1.0-10325-g3155521 Hmm, this a is a test not run in the auto group. Do you have tested it on older kernels where it works, aka do you know if this is a regresion? From BATV+fd2fd21c38c5e5c3d048+3003+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 13 05:59:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pADBxh63110004 for ; Sun, 13 Nov 2011 05:59:43 -0600 X-ASG-Debug-ID: 1321185581-2c2400ca0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3864D1E99B1B; Sun, 13 Nov 2011 03:59:41 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id p76sHAeCaNOrk9BK; Sun, 13 Nov 2011 03:59:41 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPYiq-0005w6-Qb; Sun, 13 Nov 2011 11:59:40 +0000 Date: Sun, 13 Nov 2011 06:59:40 -0500 From: Christoph Hellwig To: Alex Elder Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/8] xfsprogs: unconditionally drop used buffer reference Subject: Re: [PATCH 2/8] xfsprogs: unconditionally drop used buffer reference Message-ID: <20111113115940.GB19435@infradead.org> References: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321185582 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0010 1.0000 -2.0144 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.91 X-Barracuda-Spam-Status: No, SCORE=-1.91 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80135 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 02:35:12PM -0600, Alex Elder wrote: > In libxfs_mount(), after reading the last block in the log device, > the buffer is released by a call to libxfs_putbuf(). But it's done > only if bp is non-null. It always will be non-null at this point, > so just make the call unconditionally. > > Also touch up a misleading indent. > > Signed-off-by: Alex Elder > --- > libxfs/init.c | 5 ++--- > 1 files changed, 2 insertions(+), 3 deletions(-) > > diff --git a/libxfs/init.c b/libxfs/init.c > index 08fc584..ba44c9b 100644 > --- a/libxfs/init.c > +++ b/libxfs/init.c > @@ -743,15 +743,14 @@ libxfs_mount( > if (!(flags & LIBXFS_MOUNT_DEBUGGER)) > return NULL; > } > - if (bp) > - libxfs_putbuf(bp); > + libxfs_putbuf(bp); > } This one isn't correct. If LIBXFS_MOUNT_DEBUGGER is set we still get through to here. From BATV+fd2fd21c38c5e5c3d048+3003+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 13 06:01:36 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pADC1Zn0110073 for ; Sun, 13 Nov 2011 06:01:36 -0600 X-ASG-Debug-ID: 1321185694-4fb1002a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3E3AE8B3969; Sun, 13 Nov 2011 04:01:34 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id tlZUpPh8lnh9snsb; Sun, 13 Nov 2011 04:01:34 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPYkf-0006mJ-U5; Sun, 13 Nov 2011 12:01:33 +0000 Date: Sun, 13 Nov 2011 07:01:33 -0500 From: Christoph Hellwig To: Alex Elder Cc: xfs@oss.sgi.com, Kevan Rehm X-ASG-Orig-Subj: Re: [PATCH 3/8] xfsprogs: xfs_repair: don't set the root inode pointer Subject: Re: [PATCH 3/8] xfsprogs: xfs_repair: don't set the root inode pointer Message-ID: <20111113120133.GC19435@infradead.org> References: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> <6833e89ecf7daa3ba69676fb98a4538ee6c3a1b5.1320955675.git.aelder@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <6833e89ecf7daa3ba69676fb98a4538ee6c3a1b5.1320955675.git.aelder@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321185695 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80134 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 02:35:13PM -0600, Alex Elder wrote: > From: Kevan Rehm > > In phase 6, in mk_root_dir(), xfs_repair initializes the mount > point's m_rootip pointer without accounting for that reference. > This field never really used or needed in repair otherwise, and the > assigned pointer doesn't really represent a real reference to an > inode that needs to be cached. So just kill off this assignment. > > Signed-off-by: Alex Elder Shouldn't this also have Kevan's signoff? > --- > repair/phase6.c | 2 -- > 1 files changed, 0 insertions(+), 2 deletions(-) > > diff --git a/repair/phase6.c b/repair/phase6.c > index 1c82cb1..81d7fe6 100644 > --- a/repair/phase6.c > +++ b/repair/phase6.c > @@ -797,8 +797,6 @@ mk_root_dir(xfs_mount_t *mp) > ip->i_df.if_bytes = ip->i_df.if_real_bytes = 0; > ip->i_df.if_u1.if_extents = NULL; > > - mp->m_rootip = ip; > - Looks good, but can we extent this a bit? The only reference to mp->m_rootip in the userspace code is in libxfs_mount. By making it a local variable there we can kill the field entirely. From BATV+fd2fd21c38c5e5c3d048+3003+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 13 06:04:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pADC4N6e110100 for ; Sun, 13 Nov 2011 06:04:24 -0600 X-ASG-Debug-ID: 1321185862-4faa002f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1B8118B3E42; Sun, 13 Nov 2011 04:04:22 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id cr0CzalkrNGcZOaI; Sun, 13 Nov 2011 04:04:22 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPYnO-0006nU-1m; Sun, 13 Nov 2011 12:04:22 +0000 Date: Sun, 13 Nov 2011 07:04:22 -0500 From: Christoph Hellwig To: Alex Elder Cc: xfs@oss.sgi.com, Kevan Rehm X-ASG-Orig-Subj: Re: [PATCH 4/8] xfsprogs: mkfs.xfs: let libxfs_umount() do its thing Subject: Re: [PATCH 4/8] xfsprogs: mkfs.xfs: let libxfs_umount() do its thing Message-ID: <20111113120421.GD19435@infradead.org> References: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> <9f5a2c84d462158505a0a4fce6c9417315ab59ee.1320955676.git.aelder@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <9f5a2c84d462158505a0a4fce6c9417315ab59ee.1320955676.git.aelder@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321185863 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80134 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 02:35:14PM -0600, Alex Elder wrote: > From: Kevan Rehm > > In the mkfs.xfs main() routine (which is gargantuan, by the way), > there are a few function calls intended to do some clean up before > unmounting the filesystem. > > The first function drops references that will be dropped again in > the unmnount call. The others assume all references will go away as > a result of the purge, but the filesystem's root inode reference > will remain. > > Let the unmount function take care of destroying the real-time > structures. And instead of purging the inode and block caches, just > flush them (at least the block cache) and let the unmount code take > care of the final purge. > > Signed-off-by: Alex Elder > --- > mkfs/xfs_mkfs.c | 4 +--- > 1 files changed, 1 insertions(+), 3 deletions(-) > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index f527f3d..213cc74 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -2674,9 +2674,7 @@ an AG size that is one stripe unit smaller, for example %llu.\n"), > * Dump all inodes and buffers before marking us all done. > * Need to drop references to inodes we still hold, first. > */ > - libxfs_rtmount_destroy(mp); After his libxfs_rtmount_destroy should be marked static. > - libxfs_icache_purge(); > - libxfs_bcache_purge(); > + libxfs_bcache_flush(); Why don't we need a flush for the inode cache here? From BATV+fd2fd21c38c5e5c3d048+3003+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 13 06:07:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pADC76xA110135 for ; Sun, 13 Nov 2011 06:07:06 -0600 X-ASG-Debug-ID: 1321186025-7fb501ca0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0AADF1E991FF; Sun, 13 Nov 2011 04:07:05 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id T4J7WWhOLm1tLA3V; Sun, 13 Nov 2011 04:07:05 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPYq0-0007e2-VH; Sun, 13 Nov 2011 12:07:05 +0000 Date: Sun, 13 Nov 2011 07:07:04 -0500 From: Christoph Hellwig To: Alex Elder Cc: xfs@oss.sgi.com, Kevan Rehm X-ASG-Orig-Subj: Re: [PATCH 5/8] xfsprogs: Drop root inode refrerence in libxfs_umount() Subject: Re: [PATCH 5/8] xfsprogs: Drop root inode refrerence in libxfs_umount() Message-ID: <20111113120704.GE19435@infradead.org> References: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> <8634b2514c7642f4cbcfdaf3b6852e129417c372.1320955676.git.aelder@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8634b2514c7642f4cbcfdaf3b6852e129417c372.1320955676.git.aelder@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321186026 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0196 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80135 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 02:35:15PM -0600, Alex Elder wrote: > From: Kevan Rehm > > Routine libxfs_umount() did not call libxfs_iput for the m_rootip > inode, so updates made to that inode could be lost. This adds the > missing call, and re-initializes the m_rootip pointer to be null. > > Since the root inode reference is now dropped by libxfs_umount(), it > should *not* be dropped in mkfs parseproto(). Looks fine in general, but as mentioned before live would be a lot easier if we simply made the root inode a local variable in libxfs_mount. In fact I wonder if we even want to do that, there seems very little reason to even do the root inode iget there - the only caller requesting it will fall back if it fails. From BATV+fd2fd21c38c5e5c3d048+3003+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 13 06:09:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pADC9KUr110249 for ; Sun, 13 Nov 2011 06:09:20 -0600 X-ASG-Debug-ID: 1321186158-7fbf01d50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3E7721E99805; Sun, 13 Nov 2011 04:09:18 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id J2ZEQ6t7WBXqcYpR; Sun, 13 Nov 2011 04:09:18 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPYsA-0007gO-HC; Sun, 13 Nov 2011 12:09:18 +0000 Date: Sun, 13 Nov 2011 07:09:18 -0500 From: Christoph Hellwig To: Alex Elder Cc: xfs@oss.sgi.com, Kevan Rehm X-ASG-Orig-Subj: Re: [PATCH 6/8] xfsprogs: xfs_db: unmount fs before exiting Subject: Re: [PATCH 6/8] xfsprogs: xfs_db: unmount fs before exiting Message-ID: <20111113120918.GF19435@infradead.org> References: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321186159 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0042 1.0000 -1.9936 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.89 X-Barracuda-Spam-Status: No, SCORE=-1.89 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80135 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 02:35:16PM -0600, Alex Elder wrote: > From: Kevan Rehm > > The main routine calls libxfs_mount() via init(), but never calls > libxfs_umount() at the end of the program so there could be > filesystem changes queued which never get flushed to disk. This > adds the missing libxfs_umount() call. > > Signed-off-by: Alex Elder Looks good, Reviewed-by: Christoph Hellwig From gaowanlong@cn.fujitsu.com Sun Nov 13 18:25:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAE0PBxR169256 for ; Sun, 13 Nov 2011 18:25:11 -0600 X-ASG-Debug-ID: 1321230307-41f4000d0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4595F24979E for ; Sun, 13 Nov 2011 16:25:08 -0800 (PST) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id R9BDCkxyjpdlKCAv for ; Sun, 13 Nov 2011 16:25:08 -0800 (PST) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id 6F409170080; Mon, 14 Nov 2011 08:25:01 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pAE0P12F015338; Mon, 14 Nov 2011 08:25:01 +0800 Received: from [10.167.225.68] ([10.167.225.68]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011111408245636-80145 ; Mon, 14 Nov 2011 08:24:56 +0800 Message-ID: <4EC05F9C.7030106@cn.fujitsu.com> Date: Mon, 14 Nov 2011 08:23:56 +0800 From: Wanlong Gao Reply-To: gaowanlong@cn.fujitsu.com Organization: FNST User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.15) Gecko/20110322 Red Hat/3.1.9-3.el6_0 Thunderbird/3.1.9 MIME-Version: 1.0 To: Christoph Hellwig CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfstests/071 FAIL with XFS Assertion Subject: Re: xfstests/071 FAIL with XFS Assertion References: <4EBCC112.3020108@cn.fujitsu.com> <20111113115223.GA19435@infradead.org> In-Reply-To: <20111113115223.GA19435@infradead.org> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-14 08:24:56, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-14 08:24:56, Serialize complete at 2011-11-14 08:24:56 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1321230310 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0203 1.0000 -1.8889 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.89 X-Barracuda-Spam-Status: No, SCORE=-1.89 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80184 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/13/2011 07:52 PM, Christoph Hellwig wrote: > On Fri, Nov 11, 2011 at 02:30:42PM +0800, Wanlong Gao wrote: >> v3.1.0-10325-g3155521 > > Hmm, this a is a test not run in the auto group. Do you have tested > it on older kernels where it works, aka do you know if this is a > regresion? > No, have not. I'll do it later. Thanks From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 04:24:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEAOkQe204744 for ; Mon, 14 Nov 2011 04:24:46 -0600 X-ASG-Debug-ID: 1321266285-494d03a30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9AF9F24A633 for ; Mon, 14 Nov 2011 02:24:45 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id McgqmlWmo9qmsg1z for ; Mon, 14 Nov 2011 02:24:45 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPtiW-0007EW-J2; Mon, 14 Nov 2011 10:24:44 +0000 Date: Mon, 14 Nov 2011 05:24:44 -0500 From: Christoph Hellwig To: Jeff Liu Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: SEEK_DATA/SEEK_HOLE support Subject: Re: SEEK_DATA/SEEK_HOLE support Message-ID: <20111114102444.GA27791@infradead.org> References: <4E887D7F.2010306@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E887D7F.2010306@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321266285 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80222 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Just curious: did you start looking into implementing SEEK_DATA/SEEK_HOLE support? From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 04:27:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEARwgg204871 for ; Mon, 14 Nov 2011 04:27:58 -0600 X-ASG-Debug-ID: 1321266477-743e00730000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AB06B1D07809 for ; Mon, 14 Nov 2011 02:27:57 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id NyRQbm0i6MAkdCQK for ; Mon, 14 Nov 2011 02:27:57 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPtlb-00085Q-Px; Mon, 14 Nov 2011 10:27:55 +0000 Date: Mon, 14 Nov 2011 05:27:55 -0500 From: Christoph Hellwig To: Chandra Seetharaman Cc: XFS Mailing List , linux-security-module@vger.kernel.org X-ASG-Orig-Subj: Re: Occasional memory fault in inode_has_perm() while running xfstest 234 Subject: Re: Occasional memory fault in inode_has_perm() while running xfstest 234 Message-ID: <20111114102755.GA31043@infradead.org> References: <1320961003.2201.27.camel@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320961003.2201.27.camel@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321266477 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80222 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This looks like a selinux issues. Ccing the LSM list. On Thu, Nov 10, 2011 at 03:36:43PM -0600, Chandra Seetharaman wrote: > Hi All, > > While debugging the xfstest case 234, I was occasionally hitting the > following memory fault. Has anybody seen it ? > > ----------------- > IP: [] inode_has_perm+0x1f/0x40 > PGD 0 > Oops: 0000 [#1] SMP > CPU 0 > Modules linked in: xfs exportfs ebtable_nat ebtables ipt_MASQUERADE iptable_nat nf_nat iptable_mangle bridge stp llc autofs4 sunrpc cpufreq_ondemand acpi_cpufreq freq_table mperf ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 ext3 jbd dm_mirror dm_region_hash dm_log dm_mod vhost_net macvtap macvlan tun kvm_intel kvm cdc_ether usbnet mii microcode serio_raw i2c_i801 i2c_core iTCO_wdt iTCO_vendor_support shpchp ioatdma i7core_edac edac_core ses enclosure sg igb dca ext4 mbcache jbd2 sd_mod crc_t10dif ahci libahci megaraid_sas [last unloaded: scsi_wait_scan] > > Pid: 32611, comm: setquota Not tainted 3.1.0-rc9.virgin+ #6 IBM System x3630 M3 -[7377AC1]-/69Y1101 > RIP: 0010:[] [] inode_has_perm+0x1f/0x40 > RSP: 0018:ffff880642bcdb78 EFLAGS: 00010246 > RAX: 0000000000800002 RBX: ffff88064f2205f8 RCX: 0000000000800000 > RDX: 0000000000800000 RSI: 0000000000000000 RDI: ffff880649e58480 > RBP: ffff880642bcdb78 R08: ffff880642bcdb88 R09: 0000000000000080 > R10: ffff880658ffff00 R11: ffff880642bcdb88 R12: 0000000000000081 > R13: ffff88064f2205f8 R14: ffff8806592b8100 R15: 0000000000000000 > FS: 00007f56dfa3a700(0000) GS:ffff88067f200000(0000) knlGS:0000000000000000 > CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b > CR2: 0000000000000020 CR3: 0000000642b30000 CR4: 00000000000006f0 > DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 > DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 > Process setquota (pid: 32611, threadinfo ffff880642bcc000, task ffff8806592b8100) > Stack: > ffff880642bcdc18 ffffffff811e5d79 0000000000000009 0000000000000000 > ffff88064f2205f8 0000000000000000 0000000000000000 0000000000000000 > 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > Call Trace: > [] selinux_inode_permission+0xa9/0x100 > [] security_inode_permission+0x1c/0x30 > [] inode_permission+0x49/0x100 > [] link_path_walk+0x87/0x810 > [] ? unlock_page+0x2a/0x40 > [] path_lookupat+0x55/0x690 > [] ? handle_pte_fault+0xf7/0xb50 > [] do_path_lookup+0x31/0xc0 > [] ? getname_flags+0x1f8/0x280 > [] user_path_at+0x59/0xa0 > [] ? handle_mm_fault+0x15b/0x270 > [] ? do_page_fault+0x1e0/0x460 > [] ? kmem_cache_alloc+0x152/0x190 > [] vfs_fstatat+0x47/0x80 > [] ? do_sigaction+0x91/0x1d0 > [] vfs_stat+0x1b/0x20 > [] sys_newstat+0x24/0x50 > [] ? audit_syscall_entry+0x1bf/0x1f0 > [] system_call_fastpath+0x16/0x1b > Code: 66 66 66 2e 0f 1f 84 00 00 00 00 00 55 48 89 e5 66 66 66 66 90 f6 46 0d 02 75 23 48 8b 76 38 48 8b 7f 68 45 89 c1 49 89 c8 89 d1 <0f> b7 46 20 8b 7f 04 8b 76 1c 89 c2 e8 a0 f9 ff ff c9 c3 31 c0 > RIP [] inode_has_perm+0x1f/0x40 > RSP > CR2: 0000000000000020 > ---[ end trace 5d054c892d311b3f ]--- > ---------------------------- > > I made some code changes and found that inode->i_security is the data > structure that is NULL. > > I added the following code > ------------------ > diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c > index 266a229..43870ec 100644 > --- a/security/selinux/hooks.c > +++ b/security/selinux/hooks.c > @@ -1466,6 +1466,7 @@ static int task_has_system(struct task_struct *tsk, > SECCLASS_SYSTEM, perms, NULL); > } > > +u64 isec_yes; > /* Check whether a task has a particular permission to an inode. > The 'adp' parameter is optional and allows other audit > data to be passed (e.g. the dentry). */ > @@ -1486,6 +1487,13 @@ static int inode_has_perm(const struct cred *cred, > sid = cred_sid(cred); > isec = inode->i_security; > > + if (isec) > + isec_yes++; > + else { > + printk("isec NULL; isec_yes %llu\n", isec_yes); > + return -EACCES; > + } > + > return avc_has_perm_flags(sid, isec->sid, isec->sclass, perms, adp, flags); > } > > -------------------------------- > > and this is what I see in /var/log/messages > ----------------------------- > isec NULL; isec_yes 14345860 > isec NULL; isec_yes 102846678 > isec NULL; isec_yes 107203361 > isec NULL; isec_yes 136859591 > isec NULL; isec_yes 140941549 > isec NULL; isec_yes 168163633 > isec NULL; isec_yes 222030886 > isec NULL; isec_yes 238835570 > isec NULL; isec_yes 263587444 > isec NULL; isec_yes 280912141 > ------------------------------ > > Can somebody throw some light on it ? > > I am using xfs.sgi.com with commit 9e4c109ac822395e0aae650e4e3c9e4903f6602f > at the top. > > Regards, > > Chandra > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 04:28:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEASlV0204929 for ; Mon, 14 Nov 2011 04:28:47 -0600 X-ASG-Debug-ID: 1321266526-744000730000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BE98A1D07834; Mon, 14 Nov 2011 02:28:46 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id uPuK9DtnKOC1mXUv; Mon, 14 Nov 2011 02:28:46 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPtmP-00086R-Ny; Mon, 14 Nov 2011 10:28:45 +0000 Date: Mon, 14 Nov 2011 05:28:45 -0500 From: Christoph Hellwig To: Alex Elder Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/8] xfsprogs: clean up errors in libxfs_mount() consistently Subject: Re: [PATCH 7/8] xfsprogs: clean up errors in libxfs_mount() consistently Message-ID: <20111114102845.GB31043@infradead.org> References: <3ed89446f6dc1231ec1de712f242522052952b7e.1320955675.git.aelder@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321266526 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80222 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 02:35:17PM -0600, Alex Elder wrote: > Until the perag structures for the filesystem have been set up, > initialization of the mount point only assigns computed values and > has no other side-effects (such as allocating additional > structures). So up to that point, returning a null pointer to > signal an error is adequate. Once the perag initialization is done > there needs to be some teardown in case of an error. > > Here the handling of errors is inconsistent. If early perag > initialization fails, the code currently just exits. Then, if > getting a reference to the root inode results in an error, a null > pointer is returned but without first cleaning up the perag > structures. Next, if rtmount_inodes() returns an error, the > reference to the root inode (if any) is released, but again the > perag structures are not cleaned up. Finally, when the perag data > is read in, if an error occurs, a null pointer is returned but the > root inode pointer reference is not released and the perag > structures are not cleaned up. > > Remedy all of that by having each of these error cases jump to error > handling code at the end of the function. That code needs to > release the reference to the root inode and release all of the perag > structures. This (plus a few other things that will be no-ops at > this point in the mount process) is exactly what libxfs_umount(), so > just use that function to implement this cleanup activity. > > Signed-off-by: Alex Elder Did you make sure libxfs_umount doesn't do too much work? I'm usually more of a fan of uninding each operation individually. From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 04:30:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEAU0SL204971 for ; Mon, 14 Nov 2011 04:30:00 -0600 X-ASG-Debug-ID: 1321266598-5599001e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BA2EB1058A2F; Mon, 14 Nov 2011 02:29:59 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id kqBBPW7rZJq56bRM; Mon, 14 Nov 2011 02:29:59 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPtna-00087M-Fo; Mon, 14 Nov 2011 10:29:58 +0000 Date: Mon, 14 Nov 2011 05:29:58 -0500 From: Christoph Hellwig To: Bill Kendall Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH v2] xfsdump: handle Ctrl-D during prompts Subject: Re: [PATCH v2] xfsdump: handle Ctrl-D during prompts Message-ID: <20111114102958.GC31043@infradead.org> References: <1320951342-15477-1-git-send-email-wkendall@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320951342-15477-1-git-send-email-wkendall@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321266599 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80222 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 12:55:42PM -0600, Bill Kendall wrote: > xfsdump does not currently handle Ctrl-D well during a dialog > prompt. If some text is entered followed by Ctrl-D, an assert > will trip because xfsdump expects a new-line character at the > end of the user's input (or if asserts are disabled, the last > character the user entered will be dropped). > > If Ctrl-D is entered without entering any response, some dialog > callers (e.g., tree_subtree_inter()) will abort because they > receive an unexpected response code. > > This patch changes xfsdump to behave like other interactive > commands (xfs_db, bash, parted, ...) with respect to Ctrl-D. > If Ctrl-D precedes any input, an empty string is returned. > If Ctrl-D follows some input, it is ignored and xfsdump will > continue to wait for more input. > > Signed-off-by: Bill Kendall Looks good, I'll put this in during the next round of userspace updates. From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 04:34:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_84 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEAYFwj205112 for ; Mon, 14 Nov 2011 04:34:16 -0600 X-ASG-Debug-ID: 1321266851-55a500390000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7AC60105858D; Mon, 14 Nov 2011 02:34:11 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id hFBCRrjS3vFffKec; Mon, 14 Nov 2011 02:34:11 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPtre-0000bF-Mr; Mon, 14 Nov 2011 10:34:10 +0000 Date: Mon, 14 Nov 2011 05:34:10 -0500 From: Christoph Hellwig To: Ben Myers , Tejun Heo Cc: xfs@oss.sgi.com, linux-kernel@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Subject: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Message-ID: <20111114103410.GD31043@infradead.org> References: <20111108085614.478431403@bombadil.infradead.org> <20111108085846.291838677@bombadil.infradead.org> <20111108231118.GP5534@dastard> <20111109075847.GA20604@infradead.org> <20111110174242.GZ20464@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111110174242.GZ20464@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321266852 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0206 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80222 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 11:42:42AM -0600, Ben Myers wrote: > > +STATIC int > > +xfs_init_mount_workqueues( > > + struct xfs_mount *mp) > > +{ > > +#define XFS_WQ_NAME_LEN 512 > > + char name[XFS_WQ_NAME_LEN]; > > + > > + snprintf(name, XFS_WQ_NAME_LEN, "xfs-data/%s", mp->m_fsname); > > + mp->m_data_workqueue = alloc_workqueue(name, WQ_MEM_RECLAIM, 1); > > + if (!mp->m_data_workqueue) > > + goto out; > > Looks to me like alloc_workqueue holds on to that name pointer in > wq->name... won't overwriting the name below be a problem? It applies deep magic to make sure a pattern like mine is fine for the lockdep lock name, but just uses it directly for the workqueue name. Oddly enough the names seem to display correctly on my test systems anyway. Tejun, any chance to change alloc_workqueue to use the string pasting trick also for the normal workqueue name, or even better add a varargs version of alloc_workqueue? From jeff.liu@oracle.com Mon Nov 14 06:48:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAECm2MR210183 for ; Mon, 14 Nov 2011 06:48:02 -0600 X-ASG-Debug-ID: 1321274881-3fe5011a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from acsinet15.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1D1E71E9B532 for ; Mon, 14 Nov 2011 04:48:01 -0800 (PST) Received: from acsinet15.oracle.com (acsinet15.oracle.com [141.146.126.227]) by cuda.sgi.com with ESMTP id yHh9LJ8616Tm3gn4 for ; Mon, 14 Nov 2011 04:48:01 -0800 (PST) Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by acsinet15.oracle.com (Switch-3.4.4/Switch-3.4.4) with ESMTP id pAECltFC015553 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 14 Nov 2011 12:47:56 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id pAECls0w005793 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 14 Nov 2011 12:47:55 GMT Received: from abhmt119.oracle.com (abhmt119.oracle.com [141.146.116.71]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id pAEClm03001812; Mon, 14 Nov 2011 06:47:48 -0600 Received: from [10.191.0.214] (/10.191.0.214) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 14 Nov 2011 04:47:48 -0800 Message-ID: <4EC10DE8.6030607@oracle.com> Date: Mon, 14 Nov 2011 20:47:36 +0800 From: Jeff Liu Reply-To: jeff.liu@oracle.com Organization: Oracle User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Thunderbird/3.1.11 MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: SEEK_DATA/SEEK_HOLE support Subject: Re: SEEK_DATA/SEEK_HOLE support References: <4E887D7F.2010306@oracle.com> <20111114102444.GA27791@infradead.org> In-Reply-To: <20111114102444.GA27791@infradead.org> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-CT-RefId: str=0001.0A020208.4EC10DFC.011F,ss=1,re=0.000,fgs=0 X-Barracuda-Connect: acsinet15.oracle.com[141.146.126.227] X-Barracuda-Start-Time: 1321274882 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0039 1.0000 -1.9957 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80231 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Christoph, On 11/14/2011 06:24 PM, Christoph Hellwig wrote: > Just curious: did you start looking into implementing > SEEK_DATA/SEEK_HOLE support? I have misunderstood your previous response: "Dave mentioned he had a basic implementation, he might have some code that you can improve on.” So I am still waiting that now. But actually I have already wrote a patch at that time, I'll run a few tests and send it out for your guys review soon. Thanks, -Jeff > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 06:50:47 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAECokK1210278 for ; Mon, 14 Nov 2011 06:50:47 -0600 X-ASG-Debug-ID: 1321275045-660500020000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D8FB924ADE6 for ; Mon, 14 Nov 2011 04:50:45 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id NBnpNqNFbYzMBQLT for ; Mon, 14 Nov 2011 04:50:45 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPvzo-0002YE-JY; Mon, 14 Nov 2011 12:50:44 +0000 Date: Mon, 14 Nov 2011 07:50:44 -0500 From: Christoph Hellwig To: Jeff Liu Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: SEEK_DATA/SEEK_HOLE support Subject: Re: SEEK_DATA/SEEK_HOLE support Message-ID: <20111114125044.GA9802@infradead.org> References: <4E887D7F.2010306@oracle.com> <20111114102444.GA27791@infradead.org> <4EC10DE8.6030607@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4EC10DE8.6030607@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321275045 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80233 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 14, 2011 at 08:47:36PM +0800, Jeff Liu wrote: > Hi Christoph, > > On 11/14/2011 06:24 PM, Christoph Hellwig wrote: > > > Just curious: did you start looking into implementing > > SEEK_DATA/SEEK_HOLE support? > > I have misunderstood your previous response: > > "Dave mentioned he had a basic implementation, he might have some code > that you can improve on.? > > So I am still waiting that now. He mentioned that, but given that there was no folloup with code I wouldn't expect it to appear anymore. > But actually I have already wrote a patch at that time, I'll run a few > tests and send it out for your guys review soon. Thanks a lot! From mvergouwe85@gmail.com Mon Nov 14 08:36:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_00,HTML_MESSAGE, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEEasuT213873 for ; Mon, 14 Nov 2011 08:36:54 -0600 X-ASG-Debug-ID: 1321281412-3fe402f60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-gy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EFEAC1E9BA8B for ; Mon, 14 Nov 2011 06:36:52 -0800 (PST) Received: from mail-gy0-f181.google.com (mail-gy0-f181.google.com [209.85.160.181]) by cuda.sgi.com with ESMTP id 4EqpYZtHgzmTDULM for ; Mon, 14 Nov 2011 06:36:52 -0800 (PST) Received: by gyd10 with SMTP id 10so6669169gyd.26 for ; Mon, 14 Nov 2011 06:36:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; bh=ZutEQf0up1hP5HXGja9eeCluEHTtFq3g+Pjvk3MXcq0=; b=lhXJof3OSszWV700xLnz9nREm3itlFGF5igzWrnJFHkdkM9Ct+2pO7+OB1L9V7rmQX Yp/NVwsV0NJp89AU87Q51MbfMsV8WDxkoGb1KaotAAdqwl039x3NgzWXPUeyiynuvRU3 yigj0gZ6OCASZjIwtEGHx/X9CqZE8xFphl7kI= MIME-Version: 1.0 Received: by 10.68.73.71 with SMTP id j7mr36247342pbv.116.1321281411941; Mon, 14 Nov 2011 06:36:51 -0800 (PST) Sender: mvergouwe85@gmail.com Received: by 10.142.255.12 with HTTP; Mon, 14 Nov 2011 06:36:51 -0800 (PST) Date: Mon, 14 Nov 2011 15:36:51 +0100 X-Google-Sender-Auth: 849D4ZkhseQvS6Fd6yjtF3C8EB0 Message-ID: X-ASG-Orig-Subj: XFS with project quota support in Kernel 2.6.28(.9) Subject: XFS with project quota support in Kernel 2.6.28(.9) From: Maarten Vergouwe To: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=f46d04190c6c35061d04b1b2cd6f X-Barracuda-Connect: mail-gy0-f181.google.com[209.85.160.181] X-Barracuda-Start-Time: 1321281412 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80238 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --f46d04190c6c35061d04b1b2cd6f Content-Type: text/plain; charset=ISO-8859-1 Hi I have problems in writes that hang for more than 7 seconds because of the the kthreadd daemon keeping a mutex locked for too long. Is there someone who might be able to help me with that? I saw that a lot of changes were done on the XFS quota support in later kernels, but the patch list is too long between my kernel and the changed quota system. process 411 ([khubd], kthreadd) pid = 411, tgid = 411, parent = 2, real parent = 2 baduaddr = 0x00000000, badvaddr = 0x00000000, state = 2, flags = 0x80208040 policy = 0, prio = 115, static prio = 115, normal prio = 115, rt prio = 0 pc = vmlinux_flash.elf/context_switch+0x3ac (kernel/sched.c:2668) schedule (kernel/sched.c:4496) kernel stack vmlinux_flash.elf/schedule_timeout+0x24 (kernel/timer.c:1264) vmlinux_flash.elf/do_wait_for_common+0xd8 (kernel/sched.c:4715) wait_for_common (kernel/sched.c:4732) vmlinux_flash.elf/xfs_qm_sync+0x110 (fs/xfs/quota/xfs_qm.c:1076) vmlinux_flash.elf/xfs_sync+0x1c (fs/xfs/xfs_vfsops.c:255) vmlinux_flash.elf/xfs_fs_sync_super+0x3c (fs/xfs/linux-2.6/xfs_super.c:1202) vmlinux_flash.elf/fsync_super+0xc (fs/super.c:270) process 1082 *(this one takes too long and my watchdog doesn't like that)* pid = 1082, tgid = 230, parent = 228, real parent = 228 baduaddr = 0x00000000, badvaddr = 0x00000000, state = 2, flags = 0x00422140 policy = 0, prio = 120, static prio = 120, normal prio = 120, rt prio = 0 pc = vmlinux_flash.elf/context_switch+0x3ac (kernel/sched.c:2668) schedule (kernel/sched.c:4496) kernel stack vmlinux_flash.elf/__mutex_lock_common+0x108 (kernel/mutex.c:182) __mutex_lock_slowpath (kernel/mutex.c:321) vmlinux_flash.elf/xfs_trans_dqresv+0x50 (fs/xfs/quota/xfs_trans_dquot.c:628) vmlinux_flash.elf/xfs_trans_reserve_quota_bydquots+0xc0 (fs/xfs/quota/xfs_trans_dquot.c:792) vmlinux_flash.elf/xfs_trans_reserve_quota_nblks+0x40 (fs/xfs/quota/xfs_trans_dquot.c:847) vmlinux_flash.elf/xfs_iomap_write_direct+0x36c (fs/xfs/xfs_iomap.c:486) vmlinux_flash.elf/xfs_iomap+0x250 (fs/xfs/xfs_iomap.c:247) vmlinux_flash.elf/__xfs_get_blocks+0xb8 (fs/xfs/linux-2.6/xfs_aops.c:1345) vmlinux_flash.elf/xfs_get_blocks_direct+0x14 (fs/xfs/linux-2.6/xfs_aops.c:1426) vmlinux_flash.elf/get_more_blocks+0x54c (fs/direct-io.c:535) do_direct_IO (fs/direct-io.c:816) direct_io_worker (fs/direct-io.c:998) __blockdev_direct_IO (fs/direct-io.c:1209) vmlinux_flash.elf/blockdev_direct_IO_no_locking+0xf0 (include/linux/fs.h:2010) xfs_vm_direct_IO (fs/xfs/linux-2.6/xfs_aops.c:1506) vmlinux_flash.elf/generic_file_direct_write+0x148 (mm/filemap.c:2102) vmlinux_flash.elf/xfs_write+0x460 (fs/xfs/linux-2.6/xfs_lrw.c:745) vmlinux_flash.elf/do_sync_write+0xc8 (fs/read_write.c:305) vmlinux_flash.elf/sys_write+0x50 (fs/read_write.c:386) vmlinux_flash.elf/stack_done+0xdc (arch/mips/kernel/scall32-o32.S:59) Best regards Maarten Vergouwe TASS Belgium --f46d04190c6c35061d04b1b2cd6f Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Hi

I have problems in writes that hang for mo= re than 7 seconds because of the the kthreadd daemon keeping a mutex locked= for too long.
Is there someone who might be able to help me with= that?
I saw that a lot of changes were done on the XFS quota support in late= r kernels, but the patch list is too long between my kernel and the changed= quota system.

process 411 ([khubd], kthreadd)
=A0 pid =3D 411, tgid =3D 411, parent =3D 2, real parent =3D 2
=A0 baduaddr =3D 0x00000000, badvaddr =3D 0x00000000, state =3D 2, flags= =3D 0x80208040
=A0 policy =3D 0, prio =3D 115, static prio =3D 1= 15, normal prio =3D 115, rt prio =3D 0
=A0 pc =3D vmlinux_flash.elf/context_switch+0x3ac (kernel/sched.c:2668= )
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 schedule (kernel/sched.c:4496)<= /div>
=A0 kernel stack
=A0 =A0 vmlinux_flash.elf/schedule_tim= eout+0x24 (kernel/timer.c:1264)
=A0 =A0 vmlinux_flash.elf/do_wait_for_common+0xd8 (kernel/sched.c:4715= )
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 wait_for_common (kernel/sched.c= :4732)
=A0 =A0 vmlinux_flash.elf/xfs_qm_sync+0x110 (fs/xfs/quota/= xfs_qm.c:1076)
=A0 =A0 vmlinux_flash.elf/xfs_sync+0x1c (fs/xfs/xfs_vfsops.c:255)
=A0 =A0 vmlinux_flash.elf/xfs_fs_sync_super+0x3c (fs/xfs/linux-2.6/xf= s_super.c:1202)
=A0 =A0 vmlinux_flash.elf/fsync_super+0xc (fs/sup= er.c:270)


process 1082 (this one takes too= long and my watchdog doesn't like that)
=A0 pid =3D 1082= , tgid =3D 230, parent =3D 228, real parent =3D 228
=A0 baduaddr = =3D 0x00000000, badvaddr =3D 0x00000000, state =3D 2, flags =3D 0x00422140<= /div>
=A0 policy =3D 0, prio =3D 120, static prio =3D 120, normal prio =3D 1= 20, rt prio =3D 0
=A0 pc =3D vmlinux_flash.elf/context_switch+0x3= ac (kernel/sched.c:2668)
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 schedule= (kernel/sched.c:4496)
=A0 kernel stack
=A0 =A0 vmlinux_flash.elf/__mutex_lock_comm= on+0x108 (kernel/mutex.c:182)
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 __m= utex_lock_slowpath (kernel/mutex.c:321)
=A0 =A0 vmlinux_flash.elf= /xfs_trans_dqresv+0x50 (fs/xfs/quota/xfs_trans_dquot.c:628)
=A0 =A0 vmlinux_flash.elf/xfs_trans_reserve_quota_bydquots+0xc0 (fs/xf= s/quota/xfs_trans_dquot.c:792)
=A0 =A0 vmlinux_flash.elf/xfs_tran= s_reserve_quota_nblks+0x40 (fs/xfs/quota/xfs_trans_dquot.c:847)
= =A0 =A0 vmlinux_flash.elf/xfs_iomap_write_direct+0x36c (fs/xfs/xfs_iomap.c:= 486)
=A0 =A0 vmlinux_flash.elf/xfs_iomap+0x250 (fs/xfs/xfs_iomap.c:247)
=A0 =A0 vmlinux_flash.elf/__xfs_get_blocks+0xb8 (fs/xfs/linux-2.6/xf= s_aops.c:1345)
=A0 =A0 vmlinux_flash.elf/xfs_get_blocks_direct+0x= 14 (fs/xfs/linux-2.6/xfs_aops.c:1426)
=A0 =A0 vmlinux_flash.elf/get_more_blocks+0x54c (fs/direct-io.c:535)
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 do_direct_IO (fs/direct-io.c:816)<= /div>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 direct_io_worker (fs/direct-io.c:= 998)
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 __blockdev_direct_IO (fs/dir= ect-io.c:1209)
=A0 =A0 vmlinux_flash.elf/blockdev_direct_IO_no_locking+0xf0 (include/= linux/fs.h:2010)
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 xfs_vm_direct_IO= (fs/xfs/linux-2.6/xfs_aops.c:1506)
=A0 =A0 vmlinux_flash.elf/gen= eric_file_direct_write+0x148 (mm/filemap.c:2102)
=A0 =A0 vmlinux_flash.elf/xfs_write+0x460 (fs/xfs/linux-2.6/xfs_lrw.c:= 745)
=A0 =A0 vmlinux_flash.elf/do_sync_write+0xc8 (fs/read_write.= c:305)
=A0 =A0 vmlinux_flash.elf/sys_write+0x50 (fs/read_write.c:= 386)
=A0 =A0 vmlinux_flash.elf/stack_done+0xdc (arch/mips/kernel/scall32-o3= 2.S:59)


Best regards

Maarten Vergouwe
TASS Belgium
--f46d04190c6c35061d04b1b2cd6f-- From eparis@parisplace.org Mon Nov 14 09:13:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEFDD6C215326 for ; Mon, 14 Nov 2011 09:13:13 -0600 X-ASG-Debug-ID: 1321283591-3c2000820000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-vx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D19151D08535 for ; Mon, 14 Nov 2011 07:13:11 -0800 (PST) Received: from mail-vx0-f181.google.com (mail-vx0-f181.google.com [209.85.220.181]) by cuda.sgi.com with ESMTP id M0CfydVlGEjx7E6Y for ; Mon, 14 Nov 2011 07:13:11 -0800 (PST) Received: by vcbfk26 with SMTP id fk26so6588465vcb.26 for ; Mon, 14 Nov 2011 07:13:11 -0800 (PST) MIME-Version: 1.0 Received: by 10.220.8.195 with SMTP id i3mr2435071vci.209.1321283591114; Mon, 14 Nov 2011 07:13:11 -0800 (PST) Received: by 10.220.183.65 with HTTP; Mon, 14 Nov 2011 07:13:11 -0800 (PST) In-Reply-To: <20111114102755.GA31043@infradead.org> References: <1320961003.2201.27.camel@chandra-lucid.austin.ibm.com> <20111114102755.GA31043@infradead.org> Date: Mon, 14 Nov 2011 10:13:11 -0500 Message-ID: X-ASG-Orig-Subj: Re: Occasional memory fault in inode_has_perm() while running xfstest 234 Subject: Re: Occasional memory fault in inode_has_perm() while running xfstest 234 From: Eric Paris To: Christoph Hellwig Cc: Chandra Seetharaman , XFS Mailing List , linux-security-module@vger.kernel.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-vx0-f181.google.com[209.85.220.181] X-Barracuda-Start-Time: 1321283591 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80240 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The only way this can happen is if the filesystem is creating inodes and not calling security_inode_alloc() (which should be done in inode_init_always) I can only guess (and believe me it is a complete wild guess after looking at grep for 5 seconds) it has something to do with the XFS __releases() function which does some weirdness in the case of a failed call to inode_init_always(). The only other option is an FS somehow still uses an inode after __destroy_inode(), but I'd assume that would land you in other troubles. In either case, I'm hard pressed to blame SELinux/LSM, since the VFS does appear to be hooked in the right places (inode_init_alwasys and __destroy_inode) to set and unset inode->i_security.... -Eric On Mon, Nov 14, 2011 at 5:27 AM, Christoph Hellwig wrot= e: > This looks like a selinux issues. =A0Ccing the LSM list. > > On Thu, Nov 10, 2011 at 03:36:43PM -0600, Chandra Seetharaman wrote: >> Hi All, >> >> While debugging the xfstest case 234, I was occasionally hitting the >> following memory fault. Has anybody seen it ? >> >> ----------------- >> IP: [] inode_has_perm+0x1f/0x40 >> PGD 0 >> Oops: 0000 [#1] SMP >> CPU 0 >> Modules linked in: xfs exportfs ebtable_nat ebtables ipt_MASQUERADE ipta= ble_nat nf_nat iptable_mangle bridge stp llc autofs4 sunrpc cpufreq_ondeman= d acpi_cpufreq freq_table mperf ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4= iptable_filter ip_tables ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_s= tate nf_conntrack ip6table_filter ip6_tables ipv6 ext3 jbd dm_mirror dm_reg= ion_hash dm_log dm_mod vhost_net macvtap macvlan tun kvm_intel kvm cdc_ethe= r usbnet mii microcode serio_raw i2c_i801 i2c_core iTCO_wdt iTCO_vendor_sup= port shpchp ioatdma i7core_edac edac_core ses enclosure sg igb dca ext4 mbc= ache jbd2 sd_mod crc_t10dif ahci libahci megaraid_sas [last unloaded: scsi_= wait_scan] >> >> Pid: 32611, comm: setquota Not tainted 3.1.0-rc9.virgin+ #6 IBM =A0Syste= m x3630 M3 -[7377AC1]-/69Y1101 >> RIP: 0010:[] =A0[] inode_has_perm+0x= 1f/0x40 >> RSP: 0018:ffff880642bcdb78 =A0EFLAGS: 00010246 >> RAX: 0000000000800002 RBX: ffff88064f2205f8 RCX: 0000000000800000 >> RDX: 0000000000800000 RSI: 0000000000000000 RDI: ffff880649e58480 >> RBP: ffff880642bcdb78 R08: ffff880642bcdb88 R09: 0000000000000080 >> R10: ffff880658ffff00 R11: ffff880642bcdb88 R12: 0000000000000081 >> R13: ffff88064f2205f8 R14: ffff8806592b8100 R15: 0000000000000000 >> FS: =A000007f56dfa3a700(0000) GS:ffff88067f200000(0000) knlGS:0000000000= 000000 >> CS: =A00010 DS: 0000 ES: 0000 CR0: 000000008005003b >> CR2: 0000000000000020 CR3: 0000000642b30000 CR4: 00000000000006f0 >> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 >> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 >> Process setquota (pid: 32611, threadinfo ffff880642bcc000, task ffff8806= 592b8100) >> Stack: >> ffff880642bcdc18 ffffffff811e5d79 0000000000000009 0000000000000000 >> ffff88064f2205f8 0000000000000000 0000000000000000 0000000000000000 >> 0000000000000000 0000000000000000 0000000000000000 0000000000000000 >> Call Trace: >> [] selinux_inode_permission+0xa9/0x100 >> [] security_inode_permission+0x1c/0x30 >> [] inode_permission+0x49/0x100 >> [] link_path_walk+0x87/0x810 >> [] ? unlock_page+0x2a/0x40 >> [] path_lookupat+0x55/0x690 >> [] ? handle_pte_fault+0xf7/0xb50 >> [] do_path_lookup+0x31/0xc0 >> [] ? getname_flags+0x1f8/0x280 >> [] user_path_at+0x59/0xa0 >> [] ? handle_mm_fault+0x15b/0x270 >> [] ? do_page_fault+0x1e0/0x460 >> [] ? kmem_cache_alloc+0x152/0x190 >> [] vfs_fstatat+0x47/0x80 >> [] ? do_sigaction+0x91/0x1d0 >> [] vfs_stat+0x1b/0x20 >> [] sys_newstat+0x24/0x50 >> [] ? audit_syscall_entry+0x1bf/0x1f0 >> [] system_call_fastpath+0x16/0x1b >> Code: 66 66 66 2e 0f 1f 84 00 00 00 00 00 55 48 89 e5 66 66 66 66 90 f6 = 46 0d 02 75 23 48 8b 76 38 48 8b 7f 68 45 89 c1 49 89 c8 89 d1 <0f> b7 46 2= 0 8b 7f 04 8b 76 1c 89 c2 e8 a0 f9 ff ff c9 c3 31 c0 >> RIP =A0[] inode_has_perm+0x1f/0x40 >> RSP >> CR2: 0000000000000020 >> ---[ end trace 5d054c892d311b3f ]--- >> ---------------------------- >> >> I made some code changes and found that inode->i_security is the data >> structure that is NULL. >> >> I added the following code >> ------------------ >> diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c >> index 266a229..43870ec 100644 >> --- a/security/selinux/hooks.c >> +++ b/security/selinux/hooks.c >> @@ -1466,6 +1466,7 @@ static int task_has_system(struct task_struct *tsk= , >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 SECCLASS_SYSTEM, per= ms, NULL); >> =A0} >> >> +u64 isec_yes; >> =A0/* Check whether a task has a particular permission to an inode. >> =A0 =A0 The 'adp' parameter is optional and allows other audit >> =A0 =A0 data to be passed (e.g. the dentry). */ >> @@ -1486,6 +1487,13 @@ static int inode_has_perm(const struct cred *cred= , >> =A0 =A0 =A0 sid =3D cred_sid(cred); >> =A0 =A0 =A0 isec =3D inode->i_security; >> >> + =A0 =A0 if (isec) >> + =A0 =A0 =A0 =A0 =A0 =A0 isec_yes++; >> + =A0 =A0 else { >> + =A0 =A0 =A0 =A0 =A0 =A0 printk("isec NULL; isec_yes %llu\n", isec_yes)= ; >> + =A0 =A0 =A0 =A0 =A0 =A0 return -EACCES; >> + =A0 =A0 } >> + >> =A0 =A0 =A0 return avc_has_perm_flags(sid, isec->sid, isec->sclass, perm= s, adp, flags); >> =A0} >> >> -------------------------------- >> >> and this is what I see in /var/log/messages >> ----------------------------- >> isec NULL; isec_yes 14345860 >> isec NULL; isec_yes 102846678 >> isec NULL; isec_yes 107203361 >> isec NULL; isec_yes 136859591 >> isec NULL; isec_yes 140941549 >> isec NULL; isec_yes 168163633 >> isec NULL; isec_yes 222030886 >> isec NULL; isec_yes 238835570 >> isec NULL; isec_yes 263587444 >> isec NULL; isec_yes 280912141 >> ------------------------------ >> >> Can somebody throw some light on it ? >> >> I am using xfs.sgi.com with commit 9e4c109ac822395e0aae650e4e3c9e4903f66= 02f >> at the top. >> >> Regards, >> >> Chandra >> >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs > ---end quoted text--- > -- > To unsubscribe from this list: send the line "unsubscribe linux-security-= module" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at =A0http://vger.kernel.org/majordomo-info.html > From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 09:21:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_45, J_CHICKENPOX_61,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEFLEdv215802 for ; Mon, 14 Nov 2011 09:21:14 -0600 X-ASG-Debug-ID: 1321284073-3c1e00bb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 539511E9BBDD for ; Mon, 14 Nov 2011 07:21:13 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id QnD4QZsI5h838Zf9 for ; Mon, 14 Nov 2011 07:21:13 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPyLQ-0007kT-ET; Mon, 14 Nov 2011 15:21:12 +0000 Date: Mon, 14 Nov 2011 10:21:12 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: arekm@maven.pl X-ASG-Orig-Subj: [PATCH] repair: update extent count after zapping duplicate blocks Subject: [PATCH] repair: update extent count after zapping duplicate blocks Message-ID: <20111114152112.GA26535@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321284073 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80242 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When we find a duplicate extent in an extern format inode we do not zap the whole inode, but just truncate it to the point where the duplicate extent was found. But the current code only updates di_nblocks for the new size, but no di_nextents/di_anextents. In most cases this isn't noticed, but when moving such an inode to the lost+found directoy the consistency check in xfs_iformat trips over it. Fix this by updating the on-disk extent count as part of the inode repair. Note that we zap btree format inodes with duplicate block completely at this point, so this fix doesn't apply to them. Reported-by: Arkadiusz =?utf-8?q?Mi=C5=9Bkiewicz?= Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/repair/dinode.c =================================================================== --- xfsprogs-dev.orig/repair/dinode.c 2011-11-08 12:15:40.000000000 +0000 +++ xfsprogs-dev/repair/dinode.c 2011-11-14 12:09:54.000000000 +0000 @@ -606,7 +606,7 @@ int process_bmbt_reclist_int( xfs_mount_t *mp, xfs_bmbt_rec_t *rp, - int numrecs, + int *numrecs, int type, xfs_ino_t ino, xfs_drfsbno_t *tot, @@ -642,7 +642,7 @@ process_bmbt_reclist_int( else ftype = _("regular"); - for (i = 0; i < numrecs; i++) { + for (i = 0; i < *numrecs; i++) { libxfs_bmbt_disk_get_all(rp + i, &irec); if (i == 0) *last_key = *first_key = irec.br_startoff; @@ -831,6 +831,13 @@ _("illegal state %d in block map %" PRIu done: if (locked_agno != -1) pthread_mutex_unlock(&ag_locks[locked_agno]); + + if (i != *numrecs) { + ASSERT(i < *numrecs); + do_warn(_("correcting nextents for inode %" PRIu64 "\n"), ino); + *numrecs = i; + } + return error; } @@ -842,7 +849,7 @@ int process_bmbt_reclist( xfs_mount_t *mp, xfs_bmbt_rec_t *rp, - int numrecs, + int *numrecs, int type, xfs_ino_t ino, xfs_drfsbno_t *tot, @@ -863,7 +870,7 @@ int scan_bmbt_reclist( xfs_mount_t *mp, xfs_bmbt_rec_t *rp, - int numrecs, + int *numrecs, int type, xfs_ino_t ino, xfs_drfsbno_t *tot, @@ -1356,23 +1363,29 @@ process_exinode( xfs_bmbt_rec_t *rp; xfs_dfiloff_t first_key; xfs_dfiloff_t last_key; + int numrecs; + int ret; lino = XFS_AGINO_TO_INO(mp, agno, ino); rp = (xfs_bmbt_rec_t *)XFS_DFORK_PTR(dip, whichfork); *tot = 0; - *nex = XFS_DFORK_NEXTENTS(dip, whichfork); + numrecs = XFS_DFORK_NEXTENTS(dip, whichfork); + /* * XXX - if we were going to fix up the btree record, * we'd do it right here. For now, if there's a problem, * we'll bail out and presumably clear the inode. */ if (check_dups == 0) - return(process_bmbt_reclist(mp, rp, *nex, type, lino, + ret = process_bmbt_reclist(mp, rp, &numrecs, type, lino, tot, blkmapp, &first_key, &last_key, - whichfork)); + whichfork); else - return(scan_bmbt_reclist(mp, rp, *nex, type, lino, tot, - whichfork)); + ret = scan_bmbt_reclist(mp, rp, &numrecs, type, lino, tot, + whichfork); + + *nex = numrecs; + return ret; } /* @@ -2003,6 +2016,12 @@ process_inode_blocks_and_extents( xfs_ino_t lino, int *dirty) { + if (nblocks < nextents + anextents) { + do_warn( +_("nblocks (%" PRIu64 ") smaller than nextents for inode %" PRIu64 "\n"), nblocks, lino); + return 1; + } + if (nblocks != be64_to_cpu(dino->di_nblocks)) { if (!no_modify) { do_warn( @@ -2063,6 +2082,7 @@ _("bad anextents %d for inode %" PRIu64 lino, anextents); } } + return 0; } Index: xfsprogs-dev/repair/dinode.h =================================================================== --- xfsprogs-dev.orig/repair/dinode.h 2010-05-10 18:16:35.000000000 +0000 +++ xfsprogs-dev/repair/dinode.h 2011-11-14 12:09:54.000000000 +0000 @@ -42,7 +42,7 @@ convert_extent( int process_bmbt_reclist(xfs_mount_t *mp, xfs_bmbt_rec_t *rp, - int numrecs, + int *numrecs, int type, xfs_ino_t ino, xfs_drfsbno_t *tot, @@ -55,7 +55,7 @@ int scan_bmbt_reclist( xfs_mount_t *mp, xfs_bmbt_rec_t *rp, - int numrecs, + int *numrecs, int type, xfs_ino_t ino, xfs_drfsbno_t *tot, Index: xfsprogs-dev/repair/scan.c =================================================================== --- xfsprogs-dev.orig/repair/scan.c 2011-11-10 11:23:47.000000000 +0000 +++ xfsprogs-dev/repair/scan.c 2011-11-14 12:09:54.000000000 +0000 @@ -351,12 +351,12 @@ _("inode %" PRIu64 " bad # of bmap recor * we'll bail out and presumably clear the inode. */ if (check_dups == 0) { - err = process_bmbt_reclist(mp, rp, numrecs, - type, ino, tot, blkmapp, - &first_key, &last_key, - whichfork); + err = process_bmbt_reclist(mp, rp, &numrecs, type, ino, + tot, blkmapp, &first_key, + &last_key, whichfork); if (err) - return(1); + return 1; + /* * check that key ordering is monotonically increasing. * if the last_key value in the cursor is set to @@ -380,10 +380,11 @@ _("out-of-order bmap key (file offset) i bm_cursor->level[level].first_key = first_key; bm_cursor->level[level].last_key = last_key; - return(0); - } else - return(scan_bmbt_reclist(mp, rp, numrecs, - type, ino, tot, whichfork)); + return 0; + } else { + return scan_bmbt_reclist(mp, rp, &numrecs, type, ino, + tot, whichfork); + } } if (numrecs > mp->m_bmap_dmxr[1] || (isroot == 0 && numrecs < mp->m_bmap_dmnr[1])) { From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 10:02:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEG2ISd217512 for ; Mon, 14 Nov 2011 10:02:18 -0600 X-ASG-Debug-ID: 1321286537-069f00040000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D19061D08061 for ; Mon, 14 Nov 2011 08:02:17 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 3KnbKGsoDFTTxnCm for ; Mon, 14 Nov 2011 08:02:17 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPyzB-00077X-19; Mon, 14 Nov 2011 16:02:17 +0000 Message-Id: <20111114155742.285135418@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 14 Nov 2011 10:57:42 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: arekm@maven.pl X-ASG-Orig-Subj: [PATCH 0/3] xfs_repair malloc optimizations Subject: [PATCH 0/3] xfs_repair malloc optimizations X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321286537 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80244 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This series reduces memory usage for repairing a 97 million inode filesystem for ~7.3 GB to ~5.3 (that is the resident set, virtual memory requirements are about 300MB higher for both). The main change is linking against the tcmalloc library from the Google perftools, with uses more efficient data structures, and is able to garbage collect freed memory from the per-thread queues. At least for xfs_repair it doesn't scale noticably better than ptmalloc, as the final runtime is only minimally faster, and probably not significant. Given that xfs_repair generally is I/O bound that is to be expected, though. I'd love to build with tcmalloc by default instead of requiring the ./configure opt-in, but I'm missing the autoconf-foo to not break the build in case it isn't present. The same applies to using the libtcmalloc_minimal variant that doesn't include some of the debugging infrastructure - if anyone has the autoconf foo to use it alternatively it would be great to also offer it. The two preceding patches just remove some useless internal freelist and make sure we actuall return memory to the system pool. From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 10:02:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEG2J1N217516 for ; Mon, 14 Nov 2011 10:02:19 -0600 X-ASG-Debug-ID: 1321286537-434a01c10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2A88D1D082A2 for ; Mon, 14 Nov 2011 08:02:17 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 1FFHAeASN8nIF8VZ for ; Mon, 14 Nov 2011 08:02:17 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPyzB-00079E-KT; Mon, 14 Nov 2011 16:02:17 +0000 Message-Id: <20111114160217.591812422@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 14 Nov 2011 10:57:45 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: arekm@maven.pl X-ASG-Orig-Subj: [PATCH 3/3] xfsprogs: allow linking against libtcmalloc Subject: [PATCH 3/3] xfsprogs: allow linking against libtcmalloc References: <20111114155742.285135418@bombadil.infradead.org> Content-Disposition: inline; filename=xfsprogs-use-tcmalloc X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321286538 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80244 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Allow linking against the libtcmalloc library from Google's performance tools, which at least for repair reduces the memory usage dramatically. Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/configure.in =================================================================== --- xfsprogs-dev.orig/configure.in 2011-08-14 17:00:02.000000000 +0000 +++ xfsprogs-dev/configure.in 2011-11-14 12:47:05.000000000 +0000 @@ -31,6 +31,21 @@ AC_ARG_ENABLE(editline, AC_SUBST(libeditline) AC_SUBST(enable_editline) +AC_ARG_ENABLE(tcmalloc, +[ --enable-tcmalloc=[yes/no] Enable tcmalloc [default=no]],, + enable_tcmalloc=no) +AC_SUBST(enable_tcmalloc) + +if test "$enable_tcmalloc" = "yes"; then + AC_CHECK_LIB(tcmalloc, malloc,, [ + echo 'FATAL ERROR: could not find a valid tcmalloc library.' + echo 'Install libtcmalloc or configure with --enable-tcmalloc=no.' + exit 1]) + + libtcmalloc="-ltcmalloc" + AC_SUBST(libtcmalloc) +fi + AC_ARG_ENABLE(termcap, [ --enable-termcap=[yes/no] Enable terminal capabilities library [default=no]], test $enable_termcap = yes && libtermcap="-ltermcap",) Index: xfsprogs-dev/include/builddefs.in =================================================================== --- xfsprogs-dev.orig/include/builddefs.in 2011-08-14 17:00:02.000000000 +0000 +++ xfsprogs-dev/include/builddefs.in 2011-11-14 12:09:52.000000000 +0000 @@ -22,7 +22,7 @@ _BUILDDEFS_INCLUDED_ = 1 DEBUG = @debug_build@ OPTIMIZER = @opt_build@ -MALLOCLIB = @malloc_lib@ +MALLOCLIB = @malloc_lib@ @libtcmalloc@ LOADERFLAGS = @LDFLAGS@ LTLDFLAGS = @LDFLAGS@ CFLAGS = @CFLAGS@ From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 10:02:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEG2J74217525 for ; Mon, 14 Nov 2011 10:02:19 -0600 X-ASG-Debug-ID: 1321286537-3dbf01ff0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E41D41D082A1 for ; Mon, 14 Nov 2011 08:02:17 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id VZhV7qmeF4uwpkpF for ; Mon, 14 Nov 2011 08:02:17 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPyzB-000789-8s; Mon, 14 Nov 2011 16:02:17 +0000 Message-Id: <20111114160217.214716535@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 14 Nov 2011 10:57:43 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: arekm@maven.pl X-ASG-Orig-Subj: [PATCH 1/3] repair: allocate and free inode records individually Subject: [PATCH 1/3] repair: allocate and free inode records individually References: <20111114155742.285135418@bombadil.infradead.org> Content-Disposition: inline; filename=repair-free-inode-chunk-node X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321286537 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.82 X-Barracuda-Spam-Status: No, SCORE=-0.82 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, MARKETING_SUBJECT, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80244 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Instead of allocating inode records in chunks and keeping a freelist of them which never gets released to the system memory allocator use plain malloc and free for them. The freelist just means adding a global lock instead of relying on malloc and free which could be implemented lockless, and the freelist is almost completely worthless as we are done allocating new inode records once we start freeing them in major quantities. Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/repair/incore_ino.c =================================================================== --- xfsprogs-dev.orig/repair/incore_ino.c 2011-11-09 18:52:15.041861085 +0000 +++ xfsprogs-dev/repair/incore_ino.c 2011-11-09 19:36:39.389806408 +0000 @@ -25,7 +25,6 @@ #include "threads.h" #include "err_protos.h" -static pthread_mutex_t ino_flist_lock; extern avlnode_t *avl_firstino(avlnode_t *root); /* @@ -38,18 +37,6 @@ */ static avltree_desc_t **inode_uncertain_tree_ptrs; -#define ALLOC_NUM_INOS 100 - -/* free lists -- inode nodes and extent nodes */ - -typedef struct ino_flist_s { - ino_tree_node_t *list; - ino_tree_node_t *last; - long long cnt; -} ino_flist_t; - -static ino_flist_t ino_flist; /* free list must be initialized before use */ - /* memory optimised nlink counting for all inodes */ static void nlink_grow_8_to_16(ino_tree_node_t *irec); @@ -238,102 +225,63 @@ } /* - * next is the uncertain inode list -- a sorted (in ascending order) + * Next is the uncertain inode list -- a sorted (in ascending order) * list of inode records sorted on the starting inode number. There * is one list per ag. */ /* - * common code for creating inode records for use by trees and lists. + * Common code for creating inode records for use by trees and lists. * called only from add_inodes and add_inodes_uncertain * * IMPORTANT: all inodes (inode records) start off as free and * unconfirmed. */ -/* ARGSUSED */ -static ino_tree_node_t * -mk_ino_tree_nodes( +static struct ino_tree_node * +alloc_ino_node( xfs_agino_t starting_ino) { - int i; - ino_tree_node_t *ino_rec; - avlnode_t *node; - - pthread_mutex_lock(&ino_flist_lock); - if (ino_flist.cnt == 0) { - ASSERT(ino_flist.list == NULL); - - if ((ino_rec = malloc(sizeof(ino_tree_node_t[ALLOC_NUM_INOS]))) - == NULL) - do_error(_("inode map malloc failed\n")); - - for (i = 0; i < ALLOC_NUM_INOS; i++) { - ino_rec->avl_node.avl_nextino = - (avlnode_t *) ino_flist.list; - ino_flist.list = ino_rec; - ino_flist.cnt++; - ino_rec++; - } - } + struct ino_tree_node *irec; - ASSERT(ino_flist.list != NULL); - - ino_rec = ino_flist.list; - ino_flist.list = (ino_tree_node_t *) ino_rec->avl_node.avl_nextino; - ino_flist.cnt--; - node = &ino_rec->avl_node; - node->avl_nextino = node->avl_forw = node->avl_back = NULL; - pthread_mutex_unlock(&ino_flist_lock); - - /* initialize node */ - - ino_rec->ino_startnum = 0; - ino_rec->ino_confirmed = 0; - ino_rec->ino_isa_dir = 0; - ino_rec->ir_free = (xfs_inofree_t) - 1; - ino_rec->ino_un.ex_data = NULL; - ino_rec->nlinkops = &nlinkops[0]; - ino_rec->disk_nlinks = calloc(1, nlinkops[0].nlink_size); - if (ino_rec->disk_nlinks == NULL) + irec = malloc(sizeof(*irec)); + if (!irec) + do_error(_("inode map malloc failed\n")); + + irec->avl_node.avl_nextino = NULL; + irec->avl_node.avl_forw = NULL; + irec->avl_node.avl_back = NULL; + + irec->ino_startnum = starting_ino; + irec->ino_confirmed = 0; + irec->ino_isa_dir = 0; + irec->ir_free = (xfs_inofree_t) - 1; + irec->ino_un.ex_data = NULL; + irec->nlinkops = &nlinkops[0]; + irec->disk_nlinks = calloc(1, nlinkops[0].nlink_size); + if (!irec->disk_nlinks) do_error(_("could not allocate nlink array\n")); - - return(ino_rec); + return irec; } -/* - * return inode record to free list, will be initialized when - * it gets pulled off list - */ static void -free_ino_tree_node(ino_tree_node_t *ino_rec) +free_ino_tree_node( + struct ino_tree_node *irec) { - ino_rec->avl_node.avl_nextino = NULL; - ino_rec->avl_node.avl_forw = NULL; - ino_rec->avl_node.avl_back = NULL; - - pthread_mutex_lock(&ino_flist_lock); - if (ino_flist.list != NULL) { - ASSERT(ino_flist.cnt > 0); - ino_rec->avl_node.avl_nextino = (avlnode_t *) ino_flist.list; - } else { - ASSERT(ino_flist.cnt == 0); - ino_rec->avl_node.avl_nextino = NULL; - } + irec->avl_node.avl_nextino = NULL; + irec->avl_node.avl_forw = NULL; + irec->avl_node.avl_back = NULL; - ino_flist.list = ino_rec; - ino_flist.cnt++; - - free(ino_rec->disk_nlinks); - - if (ino_rec->ino_un.ex_data != NULL) { + free(irec->disk_nlinks); + if (irec->ino_un.ex_data != NULL) { if (full_ino_ex_data) { - free(ino_rec->ino_un.ex_data->parents); - free(ino_rec->ino_un.ex_data->counted_nlinks); + free(irec->ino_un.ex_data->parents); + free(irec->ino_un.ex_data->counted_nlinks); } - free(ino_rec->ino_un.ex_data); + free(irec->ino_un.ex_data); } - pthread_mutex_unlock(&ino_flist_lock); + + free(irec); } /* @@ -379,17 +327,15 @@ * check to see if record containing inode is already in the tree. * if not, add it */ - if ((ino_rec = (ino_tree_node_t *) - avl_findrange(inode_uncertain_tree_ptrs[agno], - s_ino)) == NULL) { - ino_rec = mk_ino_tree_nodes(s_ino); - ino_rec->ino_startnum = s_ino; - - if (avl_insert(inode_uncertain_tree_ptrs[agno], - (avlnode_t *) ino_rec) == NULL) { - do_error(_("add_aginode_uncertain - " - "duplicate inode range\n")); - } + ino_rec = (ino_tree_node_t *) + avl_findrange(inode_uncertain_tree_ptrs[agno], s_ino); + if (!ino_rec) { + ino_rec = alloc_ino_node(s_ino); + + if (!avl_insert(inode_uncertain_tree_ptrs[agno], + &ino_rec->avl_node)) + do_error( + _("add_aginode_uncertain - duplicate inode range\n")); } if (free) @@ -454,43 +400,38 @@ /* - * next comes the inode trees. One per ag. AVL trees - * of inode records, each inode record tracking 64 inodes + * Next comes the inode trees. One per AG, AVL trees of inode records, each + * inode record tracking 64 inodes */ + /* - * set up an inode tree record for a group of inodes that will - * include the requested inode. - * - * does NOT error-check for duplicate records. Caller is - * responsible for checking that. + * Set up an inode tree record for a group of inodes that will include the + * requested inode. * - * ino must be the start of an XFS_INODES_PER_CHUNK (64) inode chunk + * This does NOT do error-check for duplicate records. The caller is + * responsible for checking that. Ino must be the start of an + * XFS_INODES_PER_CHUNK (64) inode chunk * - * Each inode resides in a 64-inode chunk which can be part - * one or more chunks (MAX(64, inodes-per-block). The fs allocates - * in chunks (as opposed to 1 chunk) when a block can hold more than - * one chunk (inodes per block > 64). Allocating in one chunk pieces - * causes us problems when it takes more than one fs block to contain - * an inode chunk because the chunks can start on *any* block boundary. - * So we assume that the caller has a clue because at this level, we - * don't. - */ -static ino_tree_node_t * -add_inode(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t ino) + * Each inode resides in a 64-inode chunk which can be part one or more chunks + * (MAX(64, inodes-per-block). The fs allocates in chunks (as opposed to 1 + * chunk) when a block can hold more than one chunk (inodes per block > 64). + * Allocating in one chunk pieces causes us problems when it takes more than + * one fs block to contain an inode chunk because the chunks can start on + * *any* block boundary. So we assume that the caller has a clue because at + * this level, we don't. + */ +static struct ino_tree_node * +add_inode( + struct xfs_mount *mp, + xfs_agnumber_t agno, + xfs_agino_t agino) { - ino_tree_node_t *ino_rec; - - /* no record exists, make some and put them into the tree */ - - ino_rec = mk_ino_tree_nodes(ino); - ino_rec->ino_startnum = ino; + struct ino_tree_node *irec; - if (avl_insert(inode_tree_ptrs[agno], - (avlnode_t *) ino_rec) == NULL) { + irec = alloc_ino_node(agino); + if (!avl_insert(inode_tree_ptrs[agno], &irec->avl_node)) do_warn(_("add_inode - duplicate inode range\n")); - } - - return(ino_rec); + return irec; } /* @@ -816,7 +757,6 @@ int i; int agcount = mp->m_sb.sb_agcount; - pthread_mutex_init(&ino_flist_lock, NULL); if ((inode_tree_ptrs = malloc(agcount * sizeof(avltree_desc_t *))) == NULL) do_error(_("couldn't malloc inode tree descriptor table\n")); @@ -839,9 +779,6 @@ avl_init_tree(inode_uncertain_tree_ptrs[i], &avl_ino_tree_ops); } - ino_flist.cnt = 0; - ino_flist.list = NULL; - if ((last_rec = malloc(sizeof(ino_tree_node_t *) * agcount)) == NULL) do_error(_("couldn't malloc uncertain inode cache area\n")); From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 10:02:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_66 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEG2JXL217531 for ; Mon, 14 Nov 2011 10:02:19 -0600 X-ASG-Debug-ID: 1321286537-324c01f20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6281D16D615B for ; Mon, 14 Nov 2011 08:02:18 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id OuGZAjjO47A5rHj9 for ; Mon, 14 Nov 2011 08:02:18 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RPyzB-00078h-F4; Mon, 14 Nov 2011 16:02:17 +0000 Message-Id: <20111114160217.417065646@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 14 Nov 2011 10:57:44 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: arekm@maven.pl X-ASG-Orig-Subj: [PATCH 2/3] repair: allocate and free extent records individually Subject: [PATCH 2/3] repair: allocate and free extent records individually References: <20111114155742.285135418@bombadil.infradead.org> Content-Disposition: inline; filename=repair-free-extent-chunk-node X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321286538 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.82 X-Barracuda-Spam-Status: No, SCORE=-0.82 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, MARKETING_SUBJECT, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80243 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Instead of allocating inode records in chunks and keeping a freelist of them which gets released to the system memory allocator in one go use plain malloc and free for them. The freelist just means adding a global lock instead of relying on malloc and free which could be implemented lockless. In addition smart allocators like tcmalloc have far less overhead than our chunk and linked list. Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/repair/incore_ext.c =================================================================== --- xfsprogs-dev.orig/repair/incore_ext.c 2011-11-10 14:01:04.905470023 +0000 +++ xfsprogs-dev/repair/incore_ext.c 2011-11-14 10:14:57.696692843 +0000 @@ -26,20 +26,6 @@ #include "err_protos.h" #include "avl64.h" #include "threads.h" -#define ALLOC_NUM_EXTS 100 - -/* - * paranoia -- account for any weird padding, 64/32-bit alignment, etc. - */ -typedef struct extent_alloc_rec { - struct list_head list; - extent_tree_node_t extents[ALLOC_NUM_EXTS]; -} extent_alloc_rec_t; - -typedef struct rt_extent_alloc_rec { - struct list_head list; - rt_extent_tree_node_t extents[ALLOC_NUM_EXTS]; -} rt_extent_alloc_rec_t; /* * note: there are 4 sets of incore things handled here: @@ -57,21 +43,9 @@ * phase 5. The uncertain inode list goes away at the end of * phase 3. The inode tree and bno/bnct trees go away after phase 5. */ -typedef struct ext_flist_s { - extent_tree_node_t *list; - int cnt; -} ext_flist_t; - -static ext_flist_t ext_flist; - -typedef struct rt_ext_flist_s { - rt_extent_tree_node_t *list; - int cnt; -} rt_ext_flist_t; - -static rt_ext_flist_t rt_ext_flist; static avl64tree_desc_t *rt_ext_tree_ptr; /* dup extent tree for rt */ +static pthread_mutex_t rt_ext_tree_lock; static struct btree_root **dup_extent_trees; /* per ag dup extent trees */ static pthread_mutex_t *dup_extent_tree_locks; @@ -89,19 +63,6 @@ */ /* - * list of allocated "blocks" for easy freeing later - */ -static struct list_head ba_list; -static struct list_head rt_ba_list; - -/* - * locks. - */ -static pthread_mutex_t ext_flist_lock; -static pthread_mutex_t rt_ext_tree_lock; -static pthread_mutex_t rt_ext_flist_lock; - -/* * duplicate extent tree functions */ @@ -167,60 +128,26 @@ mk_extent_tree_nodes(xfs_agblock_t new_startblock, xfs_extlen_t new_blockcount, extent_state_t new_state) { - int i; extent_tree_node_t *new; - extent_alloc_rec_t *rec; - - pthread_mutex_lock(&ext_flist_lock); - if (ext_flist.cnt == 0) { - ASSERT(ext_flist.list == NULL); - - if ((rec = malloc(sizeof(extent_alloc_rec_t))) == NULL) - do_error( - _("couldn't allocate new extent descriptors.\n")); - - list_add(&rec->list, &ba_list); - - new = &rec->extents[0]; - for (i = 0; i < ALLOC_NUM_EXTS; i++) { - new->avl_node.avl_nextino = (avlnode_t *) - ext_flist.list; - ext_flist.list = new; - ext_flist.cnt++; - new++; - } - } - - ASSERT(ext_flist.list != NULL); + new = malloc(sizeof(*new)); + if (!new) + do_error(_("couldn't allocate new extent descriptor.\n")); - new = ext_flist.list; - ext_flist.list = (extent_tree_node_t *) new->avl_node.avl_nextino; - ext_flist.cnt--; new->avl_node.avl_nextino = NULL; - pthread_mutex_unlock(&ext_flist_lock); - - /* initialize node */ - new->ex_startblock = new_startblock; new->ex_blockcount = new_blockcount; new->ex_state = new_state; new->next = NULL; new->last = NULL; - return(new); + return new; } void release_extent_tree_node(extent_tree_node_t *node) { - pthread_mutex_lock(&ext_flist_lock); - node->avl_node.avl_nextino = (avlnode_t *) ext_flist.list; - ext_flist.list = node; - ext_flist.cnt++; - pthread_mutex_unlock(&ext_flist_lock); - - return; + free(node); } /* @@ -630,57 +557,24 @@ mk_rt_extent_tree_nodes(xfs_drtbno_t new_startblock, xfs_extlen_t new_blockcount, extent_state_t new_state) { - int i; rt_extent_tree_node_t *new; - rt_extent_alloc_rec_t *rec; - pthread_mutex_lock(&rt_ext_flist_lock); - if (rt_ext_flist.cnt == 0) { - ASSERT(rt_ext_flist.list == NULL); - - if ((rec = malloc(sizeof(rt_extent_alloc_rec_t))) == NULL) - do_error( - _("couldn't allocate new extent descriptors.\n")); + new = malloc(sizeof(*new)); + if (!new) + do_error(_("couldn't allocate new extent descriptor.\n")); - list_add(&rec->list, &rt_ba_list); - - new = &rec->extents[0]; - - for (i = 0; i < ALLOC_NUM_EXTS; i++) { - new->avl_node.avl_nextino = (avlnode_t *) - rt_ext_flist.list; - rt_ext_flist.list = new; - rt_ext_flist.cnt++; - new++; - } - } - - ASSERT(rt_ext_flist.list != NULL); - - new = rt_ext_flist.list; - rt_ext_flist.list = (rt_extent_tree_node_t *) new->avl_node.avl_nextino; - rt_ext_flist.cnt--; new->avl_node.avl_nextino = NULL; - pthread_mutex_unlock(&rt_ext_flist_lock); - - /* initialize node */ - new->rt_startblock = new_startblock; new->rt_blockcount = new_blockcount; new->rt_state = new_state; - - return(new); + return new; } #if 0 void release_rt_extent_tree_node(rt_extent_tree_node_t *node) { - node->avl_node.avl_nextino = (avlnode_t *) rt_ext_flist.list; - rt_ext_flist.list = node; - rt_ext_flist.cnt++; - - return; + free(node); } void @@ -719,18 +613,9 @@ void free_rt_dup_extent_tree(xfs_mount_t *mp) { - rt_extent_alloc_rec_t *cur, *tmp; - ASSERT(mp->m_sb.sb_rblocks != 0); - - list_for_each_entry_safe(cur, tmp, &rt_ba_list, list) - free(cur); - free(rt_ext_tree_ptr); - rt_ext_tree_ptr = NULL; - - return; } /* @@ -862,11 +747,7 @@ int i; xfs_agnumber_t agcount = mp->m_sb.sb_agcount; - list_head_init(&ba_list); - list_head_init(&rt_ba_list); - pthread_mutex_init(&ext_flist_lock, NULL); pthread_mutex_init(&rt_ext_tree_lock, NULL); - pthread_mutex_init(&rt_ext_flist_lock, NULL); dup_extent_trees = calloc(agcount, sizeof(struct btree_root *)); if (!dup_extent_trees) @@ -908,11 +789,6 @@ do_error(_("couldn't malloc dup rt extent tree descriptor\n")); avl64_init_tree(rt_ext_tree_ptr, &avl64_extent_tree_ops); - - ext_flist.cnt = 0; - ext_flist.list = NULL; - - return; } /* @@ -921,12 +797,8 @@ void incore_ext_teardown(xfs_mount_t *mp) { - extent_alloc_rec_t *cur, *tmp; xfs_agnumber_t i; - list_for_each_entry_safe(cur, tmp, &ba_list, list) - free(cur); - for (i = 0; i < mp->m_sb.sb_agcount; i++) { btree_destroy(dup_extent_trees[i]); free(extent_bno_ptrs[i]); From root@nfs10.americas.sgi.com Mon Nov 14 10:42:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEGgwNZ219365 for ; Mon, 14 Nov 2011 10:42:58 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id BA96816A338; Mon, 14 Nov 2011 10:55:34 -0600 (CST) From: Ben Myers To: xfs@oss.sgi.com Cc: Ben Myers Subject: [PATCH] xfsdump: add .ltdep to .gitignore Date: Mon, 14 Nov 2011 10:55:30 -0600 Message-Id: <1321289730-12687-1-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Make git ignore all .ltdep files. They are created as part of the build process: inventory/.ltdep librmt/.ltdep Signed-off-by: Ben Myers --- .gitignore | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/.gitignore b/.gitignore index f721c3f..77e3848 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ ltmain.sh *.lo *.la .libs +.ltdep # gettext po/xfsdump.pot -- 1.7.8.rc0.46.g5ae0f From bpm@sgi.com Mon Nov 14 12:09:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEI93gL224314 for ; Mon, 14 Nov 2011 12:09:03 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id C45C330411C; Mon, 14 Nov 2011 10:08:59 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 856F4431F74; Mon, 14 Nov 2011 12:09:18 -0600 (CST) Date: Mon, 14 Nov 2011 12:09:18 -0600 From: Ben Myers To: Carlos Maiolino Cc: xfs@oss.sgi.com Subject: Re: [PATCH 2/2] xfs_repair: Properly set lost+found inode as used Message-ID: <20111114180918.GC29840@sgi.com> References: <1320857647-25511-1-git-send-email-cmaiolino@redhat.com> <1320857647-25511-3-git-send-email-cmaiolino@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1320857647-25511-3-git-send-email-cmaiolino@redhat.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Carlos, On Wed, Nov 09, 2011 at 02:54:07PM -0200, Carlos Maiolino wrote: > This patch makes mk_orphanage() to properly set the inode link count of > the recently allocated inode in the AVL tree, avoiding the lost+found > directory to be bypass the link count check in phase7 and possibly leaving > lost+found directory with a wrong link count. > > Signed-off-by: Carlos Maiolino > Reviewed-by: Christoph Hellwig > Reviewed-by: Eric Sandeen > --- > repair/phase6.c | 18 +++++++++++++++++- > 1 files changed, 17 insertions(+), 1 deletions(-) > > diff --git a/repair/phase6.c b/repair/phase6.c > index adad61d..d38e44f 100644 > --- a/repair/phase6.c > +++ b/repair/phase6.c > @@ -823,6 +823,8 @@ mk_orphanage(xfs_mount_t *mp) > xfs_inode_t *ip; > xfs_inode_t *pip; > xfs_fsblock_t first; > + ino_tree_node_t *irec; > + int ino_offset = 0; > int i; > int committed; > int error; > @@ -875,6 +877,19 @@ mk_orphanage(xfs_mount_t *mp) > ORPHANAGE, error); > } > ip->i_d.di_nlink++; /* account for . */ > + ino = ip->i_ino; > + > + irec = find_inode_rec(mp, > + XFS_INO_TO_AGNO(mp, ino), > + XFS_INO_TO_AGINO(mp, ino)); > + ino_offset = get_inode_offset(mp, ino, irec); > + > + /* > + * Mark the inode allocated to lost+found as used in the AVL tree > + * so it is not skipped in phase 7 > + */ > + set_inode_used(irec, ino_offset); > + add_inode_ref(irec, ino_offset); Both add_inode_ref()... > /* > * now that we know the transaction will stay around, > @@ -902,6 +917,7 @@ mk_orphanage(xfs_mount_t *mp) > XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rootino)), 0); > > > + > libxfs_trans_log_inode(tp, pip, XFS_ILOG_CORE); > libxfs_dir_init(tp, ip, pip); > libxfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); > @@ -912,9 +928,9 @@ mk_orphanage(xfs_mount_t *mp) > ORPHANAGE, error); > } > > - ino = ip->i_ino; > > libxfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES|XFS_TRANS_SYNC); > + add_inode_reached(irec,ino_offset); and add_inode_reached() call counted_nlink_inc. I have to admit to being an xfs_repair newbie, so you can tell me to take a hike if you want. Did you intend to bump up nlink twice? THat's not what I would have expected. THanks, Ben From htejun@gmail.com Mon Nov 14 12:14:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_84, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEIE0gN224779 for ; Mon, 14 Nov 2011 12:14:00 -0600 X-ASG-Debug-ID: 1321294438-085b01490000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-gy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E801F1048E50 for ; Mon, 14 Nov 2011 10:13:59 -0800 (PST) Received: from mail-gy0-f181.google.com (mail-gy0-f181.google.com [209.85.160.181]) by cuda.sgi.com with ESMTP id KNS6mqNcJsyEBfWd for ; Mon, 14 Nov 2011 10:13:59 -0800 (PST) Received: by gyd10 with SMTP id 10so6952924gyd.26 for ; Mon, 14 Nov 2011 10:13:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=6lXS1g+fRv5lw1kNKCQXl5K3e4giy+25bUW3/AN/nIk=; b=fxqZGGP5dSHg89BcL0AZay9hYOsQ30XRP4uFudG9byevW0i6YAujEZwlPc9h8dEv/x pqP3C9V6a2Byg+0WDbp0xISWzSAZE5u+z4racxLg4FYrsgc6PaMAidWOLyUXUZKQfgKx ow39L2So8K+eW7a0tP5USR8lRAQrErvvzAO0g= Received: by 10.68.73.40 with SMTP id i8mr51733660pbv.45.1321294438524; Mon, 14 Nov 2011 10:13:58 -0800 (PST) Received: from google.com (tejun.mtv.corp.google.com [172.18.96.198]) by mx.google.com with ESMTPS id wf19sm58254195pbb.17.2011.11.14.10.13.55 (version=SSLv3 cipher=OTHER); Mon, 14 Nov 2011 10:13:57 -0800 (PST) Sender: Tejun Heo Date: Mon, 14 Nov 2011 10:13:53 -0800 From: Tejun Heo To: Christoph Hellwig Cc: Ben Myers , xfs@oss.sgi.com, linux-kernel@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Subject: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Message-ID: <20111114181353.GC30922@google.com> References: <20111108085614.478431403@bombadil.infradead.org> <20111108085846.291838677@bombadil.infradead.org> <20111108231118.GP5534@dastard> <20111109075847.GA20604@infradead.org> <20111110174242.GZ20464@sgi.com> <20111114103410.GD31043@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111114103410.GD31043@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: mail-gy0-f181.google.com[209.85.160.181] X-Barracuda-Start-Time: 1321294439 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80253 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello, Christoph. On Mon, Nov 14, 2011 at 05:34:10AM -0500, Christoph Hellwig wrote: > On Thu, Nov 10, 2011 at 11:42:42AM -0600, Ben Myers wrote: > > > +STATIC int > > > +xfs_init_mount_workqueues( > > > + struct xfs_mount *mp) > > > +{ > > > +#define XFS_WQ_NAME_LEN 512 > > > + char name[XFS_WQ_NAME_LEN]; > > > + > > > + snprintf(name, XFS_WQ_NAME_LEN, "xfs-data/%s", mp->m_fsname); > > > + mp->m_data_workqueue = alloc_workqueue(name, WQ_MEM_RECLAIM, 1); > > > + if (!mp->m_data_workqueue) > > > + goto out; > > > > Looks to me like alloc_workqueue holds on to that name pointer in > > wq->name... won't overwriting the name below be a problem? > > It applies deep magic to make sure a pattern like mine is fine for > the lockdep lock name, but just uses it directly for the workqueue name. For lockdep lock name, it isn't about reusing but ensuring that same lockdep key doesn't end up with different names which lockdep doesn't allow. But yeah, given that workqueue is dynamically allocated, it's a bit silly to require the name to be constant. > Oddly enough the names seem to display correctly on my test systems > anyway. > > Tejun, any chance to change alloc_workqueue to use the string pasting > trick also for the normal workqueue name, or even better add a varargs > version of alloc_workqueue? Yeah, will whip something up. Thanks. -- tejun From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 12:56:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEIu7Br228799 for ; Mon, 14 Nov 2011 12:56:07 -0600 X-ASG-Debug-ID: 1321296965-5aa003e30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5F2E11548B1C for ; Mon, 14 Nov 2011 10:56:05 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id p7f1AOUPgWYCJlsV for ; Mon, 14 Nov 2011 10:56:05 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQ1hH-0001ln-Do; Mon, 14 Nov 2011 18:55:59 +0000 Date: Mon, 14 Nov 2011 13:55:59 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , Stefan Pfetzing , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH repair: do not walk the unlinked inode list Subject: Re: [PATCH repair: do not walk the unlinked inode list Message-ID: <20111114185559.GA23715@infradead.org> References: <20111109083729.GA23169@infradead.org> <20111109231133.GS5534@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111109231133.GS5534@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321296966 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80254 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 10:11:33AM +1100, Dave Chinner wrote: > You're making the assumption that log recovery has done the correct > thing any only replayed entire unlink transactions and hence the > filesystem is otherwise consistent (i.e that there are no other > references). I think that's a bad assumption - there's no guarantee > that the unlinked list only contains unreferenced inodes if there's > been corruption and/or log replay was not able to be run. We add inodes to the uncertain list if any of the following applies a) are found in an inode btree record reachable from the root in phase2, but they are suspect based on certain factors - else we add them to the inode tree directly. b) are found on the unlinked inodes list in phase3 c) a directory found in an reachable inode btree record points to them in phase3 so any inodes that either has a link pointing to it, or an inode allocation btree record pointing to it will still be added to the uncertain inode list if they aren't on the actual inode btree yet. Then later in phase3 we move all uncertain inodes that appear fine back into the main inode record tree. > I also think there's more to it than that. The walk of the inode list > also marks all the blocks in the block map as containing inodes, and > all the blocks still used by those inodes as data/bmap/attr types. > This change removes that, so we're going to potentially lose that > state if all the inodes in a block are on the unlinked list. We still do that walk if we have any genuine reference to the inode. If we don't have any reference but the unlinked list they can be considered free - we'd free every ressources assoicated with them on log recovery anyway. > Hence we'll end up with blocks containing inodes that are still > marked as used in the AGINO btree, but are marked as free space in > the block map. They aren't. We completely rebuild both the inode allocation and space allocation bitmaps from the information we gather in the earlier repair phases, and they will be in sync. > the AG or filesystem (e.g. agi->agi_count - agi->agi_free). Yes, it will > still spin for some time on this sort of corruption, but it won't > get stuck, and it won't add new holes into our block/inode usage > tracking... This would basically take forever with thinkgs like Arek's filesystem with almost 11 million inodes in each AG. From htejun@gmail.com Mon Nov 14 13:42:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEJguCQ233527 for ; Mon, 14 Nov 2011 13:42:56 -0600 X-ASG-Debug-ID: 1321299774-540001760000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-yx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0AC018C2279 for ; Mon, 14 Nov 2011 11:42:54 -0800 (PST) Received: from mail-yx0-f181.google.com (mail-yx0-f181.google.com [209.85.213.181]) by cuda.sgi.com with ESMTP id wHEgHJdC1k7bvJmM for ; Mon, 14 Nov 2011 11:42:54 -0800 (PST) Received: by yenm12 with SMTP id m12so7396364yen.26 for ; Mon, 14 Nov 2011 11:42:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:date:from:to:cc:subject:message-id:mime-version:content-type :content-disposition:user-agent; bh=WdeP9z9ICf9n1tVEYZgeQ0jBNpUEnUKlYsCJu8AP7P8=; b=nzRZVgBjJBB6FxfIXNO8pt/lcHlYOn7xZO4luOJ5cxkvtv3HlvRGngSsw4fAhKMzdf N5ZjyVw2CyChycOwUFyfLkjmJC5GhiBbr/rae3/SZiMIf2ZHGw6lde5rFieHg7VeG7dZ zg3q5Yq87v6M3Vy9VQ+3DtwV/rBQlCL/p2Zgg= Received: by 10.68.7.132 with SMTP id j4mr53167879pba.11.1321299773176; Mon, 14 Nov 2011 11:42:53 -0800 (PST) Received: from google.com (tejun.mtv.corp.google.com [172.18.96.198]) by mx.google.com with ESMTPS id wf19sm58771404pbb.17.2011.11.14.11.42.50 (version=SSLv3 cipher=OTHER); Mon, 14 Nov 2011 11:42:51 -0800 (PST) Sender: Tejun Heo Date: Mon, 14 Nov 2011 11:42:48 -0800 From: Tejun Heo To: Andrew Morton Cc: Christoph Hellwig , linux-kernel@vger.kernel.org, bpm@sgi.com, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] workqueue: make alloc_workqueue() take printf fmt and args for name Subject: [PATCH] workqueue: make alloc_workqueue() take printf fmt and args for name Message-ID: <20111114194248.GD30922@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: mail-yx0-f181.google.com[209.85.213.181] X-Barracuda-Start-Time: 1321299775 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80257 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean alloc_workqueue() currently expects the passed in @name pointer to remain accessible. This is inconvenient and a bit silly given that the whole wq is being dynamically allocated. This patch updates alloc_workqueue() and friends to take printf format string instead of opaque string and matching varargs at the end. The name is allocated together with the wq and formatted. alloc_ordered_workqueue() is converted to a macro to unify varargs handling with alloc_workqueue(), and, while at it, add comment to alloc_workqueue(). None of the current in-kernel users pass in string with '%' as constant name and this change shouldn't cause any problem. Signed-off-by: Tejun Heo Suggested-by: Christoph Hellwig --- Christoph, you probably were seeing the rescuer_task->comm in ps output. wq->name currently is currently only used for error reporting. I don't really mind this patch going through a different tree as I don't have any other wq changes scheduled at this point, so please feel free to route this through xfs or -mm. Thank you. include/linux/workqueue.h | 48 ++++++++++++++++++++++++++++++---------------- kernel/workqueue.c | 32 +++++++++++++++++++++--------- 2 files changed, 54 insertions(+), 26 deletions(-) diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index 0d556de..c87e86b 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h @@ -297,32 +297,51 @@ extern struct workqueue_struct *system_unbound_wq; extern struct workqueue_struct *system_freezable_wq; extern struct workqueue_struct * -__alloc_workqueue_key(const char *name, unsigned int flags, int max_active, - struct lock_class_key *key, const char *lock_name); +__alloc_workqueue_key(const char *fmt, unsigned int flags, int max_active, + struct lock_class_key *key, const char *lock_name, ...) + __attribute__((format (printf, 1, 6))); +/** + * alloc_workqueue - allocate a workqueue + * @fmt: printf format for the name of the workqueue + * @flags: WQ_* flags + * @max_active: max in-flight work items, 0 for default + * @args: args for @fmt + * + * Allocate a workqueue with the specified parameters. For detailed + * information on WQ_* flags, please refer to Documentation/workqueue.txt. + * + * The __lock_name macro dance is to guarantee that single lock_class_key + * doesn't end up with different namesm, which isn't allowed by lockdep. + * + * RETURNS: + * Pointer to the allocated workqueue on success, %NULL on failure. + */ #ifdef CONFIG_LOCKDEP -#define alloc_workqueue(name, flags, max_active) \ +#define alloc_workqueue(fmt, flags, max_active, args...) \ ({ \ static struct lock_class_key __key; \ const char *__lock_name; \ \ - if (__builtin_constant_p(name)) \ - __lock_name = (name); \ + if (__builtin_constant_p(fmt)) \ + __lock_name = (fmt); \ else \ - __lock_name = #name; \ + __lock_name = #fmt; \ \ - __alloc_workqueue_key((name), (flags), (max_active), \ - &__key, __lock_name); \ + __alloc_workqueue_key((fmt), (flags), (max_active), \ + &__key, __lock_name, ##args); \ }) #else -#define alloc_workqueue(name, flags, max_active) \ - __alloc_workqueue_key((name), (flags), (max_active), NULL, NULL) +#define alloc_workqueue(fmt, flags, max_active, args...) \ + __alloc_workqueue_key((fmt), (flags), (max_active), \ + NULL, NULL, ##args) #endif /** * alloc_ordered_workqueue - allocate an ordered workqueue - * @name: name of the workqueue + * @fmt: printf format for the name of the workqueue * @flags: WQ_* flags (only WQ_FREEZABLE and WQ_MEM_RECLAIM are meaningful) + * @args: args for @fmt * * Allocate an ordered workqueue. An ordered workqueue executes at * most one work item at any given time in the queued order. They are @@ -331,11 +350,8 @@ __alloc_workqueue_key(const char *name, unsigned int flags, int max_active, * RETURNS: * Pointer to the allocated workqueue on success, %NULL on failure. */ -static inline struct workqueue_struct * -alloc_ordered_workqueue(const char *name, unsigned int flags) -{ - return alloc_workqueue(name, WQ_UNBOUND | flags, 1); -} +#define alloc_ordered_workqueue(fmt, flags, args...) \ + alloc_workqueue(fmt, WQ_UNBOUND | (flags), 1, ##args) #define create_workqueue(name) \ alloc_workqueue((name), WQ_MEM_RECLAIM, 1) diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 42fa9ad..bec7b5b 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -242,10 +242,10 @@ struct workqueue_struct { int nr_drainers; /* W: drain in progress */ int saved_max_active; /* W: saved cwq max_active */ - const char *name; /* I: workqueue name */ #ifdef CONFIG_LOCKDEP struct lockdep_map lockdep_map; #endif + char name[]; /* I: workqueue name */ }; struct workqueue_struct *system_wq __read_mostly; @@ -2954,14 +2954,29 @@ static int wq_clamp_max_active(int max_active, unsigned int flags, return clamp_val(max_active, 1, lim); } -struct workqueue_struct *__alloc_workqueue_key(const char *name, +struct workqueue_struct *__alloc_workqueue_key(const char *fmt, unsigned int flags, int max_active, struct lock_class_key *key, - const char *lock_name) + const char *lock_name, ...) { + va_list args, args1; struct workqueue_struct *wq; unsigned int cpu; + size_t namelen; + + /* determine namelen, allocate wq and format name */ + va_start(args, lock_name); + va_copy(args1, args); + namelen = vsnprintf(NULL, 0, fmt, args) + 1; + + wq = kzalloc(sizeof(*wq) + namelen, GFP_KERNEL); + if (!wq) + goto err; + + vsnprintf(wq->name, namelen, fmt, args1); + va_end(args); + va_end(args1); /* * Workqueues which may be used during memory reclaim should @@ -2978,12 +2993,9 @@ struct workqueue_struct *__alloc_workqueue_key(const char *name, flags |= WQ_HIGHPRI; max_active = max_active ?: WQ_DFL_ACTIVE; - max_active = wq_clamp_max_active(max_active, flags, name); - - wq = kzalloc(sizeof(*wq), GFP_KERNEL); - if (!wq) - goto err; + max_active = wq_clamp_max_active(max_active, flags, wq->name); + /* init wq */ wq->flags = flags; wq->saved_max_active = max_active; mutex_init(&wq->flush_mutex); @@ -2991,7 +3003,6 @@ struct workqueue_struct *__alloc_workqueue_key(const char *name, INIT_LIST_HEAD(&wq->flusher_queue); INIT_LIST_HEAD(&wq->flusher_overflow); - wq->name = name; lockdep_init_map(&wq->lockdep_map, lock_name, key, 0); INIT_LIST_HEAD(&wq->list); @@ -3020,7 +3031,8 @@ struct workqueue_struct *__alloc_workqueue_key(const char *name, if (!rescuer) goto err; - rescuer->task = kthread_create(rescuer_thread, wq, "%s", name); + rescuer->task = kthread_create(rescuer_thread, wq, "%s", + wq->name); if (IS_ERR(rescuer->task)) goto err; From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 14:01:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEK1BKg235496 for ; Mon, 14 Nov 2011 14:01:11 -0600 X-ASG-Debug-ID: 1321300866-7f3c00370000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 01B611E9BDB9; Mon, 14 Nov 2011 12:01:06 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id VO3x5kBOV01bHAt9; Mon, 14 Nov 2011 12:01:06 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQ2iC-0005YK-LN; Mon, 14 Nov 2011 20:01:00 +0000 Date: Mon, 14 Nov 2011 15:01:00 -0500 From: Christoph Hellwig To: Tejun Heo Cc: Andrew Morton , Christoph Hellwig , linux-kernel@vger.kernel.org, bpm@sgi.com, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] workqueue: make alloc_workqueue() take printf fmt and args for name Subject: Re: [PATCH] workqueue: make alloc_workqueue() take printf fmt and args for name Message-ID: <20111114200100.GA18155@infradead.org> References: <20111114194248.GD30922@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111114194248.GD30922@google.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321300867 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80258 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 14, 2011 at 11:42:48AM -0800, Tejun Heo wrote: > Christoph, you probably were seeing the rescuer_task->comm in ps > output. wq->name currently is currently only used for error > reporting. > > I don't really mind this patch going through a different tree as I > don't have any other wq changes scheduled at this point, so please > feel free to route this through xfs or -mm. Ben pointed the bug out in a patch that I'd like to get into 3.2 and -stable. I'll probably repost it with a local workaround for now, and will switch to the nicer interface later. From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 14:05:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEK5vpc235995 for ; Mon, 14 Nov 2011 14:05:57 -0600 X-ASG-Debug-ID: 1321301156-740300c40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 843D81E9BE22 for ; Mon, 14 Nov 2011 12:05:56 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id POnQcbxbRfgQiVad for ; Mon, 14 Nov 2011 12:05:56 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQ2mw-0006QS-EA; Mon, 14 Nov 2011 20:05:54 +0000 Date: Mon, 14 Nov 2011 15:05:54 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_getbmap assert Subject: Re: xfs_getbmap assert Message-ID: <20111114200554.GA21487@infradead.org> References: <20111107103037.GA16213@infradead.org> <20111107201505.GE5534@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111107201505.GE5534@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321301156 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0204 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80258 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 08, 2011 at 07:15:05AM +1100, Dave Chinner wrote: > Can you see if that is the case that is being triggered? I've tried to reproduce the issue with additional debugging for almost a week now, but I haven't been able to hit the assert again yet. Which is strange given how often I managed to hit it just before. From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 14:20:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEKKqDV237424 for ; Mon, 14 Nov 2011 14:20:52 -0600 X-ASG-Debug-ID: 1321302050-0eae00a00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 76BD9105DD5A for ; Mon, 14 Nov 2011 12:20:50 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id a4B8MO8EUUWphkFq for ; Mon, 14 Nov 2011 12:20:50 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQ31I-00016X-34; Mon, 14 Nov 2011 20:20:44 +0000 Date: Mon, 14 Nov 2011 15:20:44 -0500 From: Christoph Hellwig To: Eric Paris Cc: Christoph Hellwig , Chandra Seetharaman , XFS Mailing List , linux-security-module@vger.kernel.org X-ASG-Orig-Subj: Re: Occasional memory fault in inode_has_perm() while running xfstest 234 Subject: Re: Occasional memory fault in inode_has_perm() while running xfstest 234 Message-ID: <20111114202044.GA306@infradead.org> References: <1320961003.2201.27.camel@chandra-lucid.austin.ibm.com> <20111114102755.GA31043@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321302051 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80259 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 14, 2011 at 10:13:11AM -0500, Eric Paris wrote: > The only way this can happen is if the filesystem is creating inodes > and not calling security_inode_alloc() (which should be done in > inode_init_always) > > I can only guess (and believe me it is a complete wild guess after > looking at grep for 5 seconds) it has something to do with the XFS > __releases() function which does some weirdness in the case of a > failed call to inode_init_always(). Do you mean xfs_iget_cache_hit? > The only other option is an FS somehow still uses an inode after > __destroy_inode(), but I'd assume that would land you in other > troubles. In either case, I'm hard pressed to blame SELinux/LSM, > since the VFS does appear to be hooked in the right places > (inode_init_alwasys and __destroy_inode) to set and unset > inode->i_security.... XFS inodes have a longer life time than VFS inodes they still hang around after ->destroy_inode, and if we manage to reuse them we'll call inode_init_always on them manually. The error handling there is nasty - basically we try to move it back into the state before we tried to reuse it, return an error to userspace and then expect the inode to either get reclaimed, or that we have enough memory next time someone tries to reuse it. Note that the only way for it to fail is if security_inode_alloc fails, so on normal non-LSM systems it won't ever fail. I can't really see an issue with i_security lifetimes from a quick look over the code, though. From BATV+f273fab3737168e2a79b+3004+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 14 14:25:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAEKPOhU238157 for ; Mon, 14 Nov 2011 14:25:24 -0600 X-ASG-Debug-ID: 1321302323-3e7f03450000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BDAC6126632E; Mon, 14 Nov 2011 12:25:23 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id wxlMH5J6IL5R5y6b; Mon, 14 Nov 2011 12:25:23 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQ35m-0001zF-Pj; Mon, 14 Nov 2011 20:25:22 +0000 Date: Mon, 14 Nov 2011 15:25:22 -0500 From: Christoph Hellwig To: Ben Myers Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsdump: add .ltdep to .gitignore Subject: Re: [PATCH] xfsdump: add .ltdep to .gitignore Message-ID: <20111114202522.GA4349@infradead.org> References: <1321289730-12687-1-git-send-email-bpm@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1321289730-12687-1-git-send-email-bpm@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321302323 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.51 X-Barracuda-Spam-Status: No, SCORE=-1.51 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC, SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80259 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 14, 2011 at 10:55:30AM -0600, Ben Myers wrote: > Make git ignore all .ltdep files. They are created as part of the build > process: > > inventory/.ltdep > librmt/.ltdep > > Signed-off-by: Ben Myers Looks good, I'll apply it with the next round of xfsdump updates. From debbugs@busoni.debian.org Mon Nov 14 15:51:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_73 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAELpAKm246227 for ; Mon, 14 Nov 2011 15:51:11 -0600 X-ASG-Debug-ID: 1321307465-26d5022a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from busoni.debian.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A269E1E9C85B for ; Mon, 14 Nov 2011 13:51:06 -0800 (PST) Received: from busoni.debian.org (busoni.debian.org [140.211.15.34]) by cuda.sgi.com with ESMTP id o91SByNj6GgwQfGx for ; Mon, 14 Nov 2011 13:51:06 -0800 (PST) Received: from debbugs by busoni.debian.org with local (Exim 4.72) (envelope-from ) id 1RQ4Qh-0005CG-Sg; Mon, 14 Nov 2011 21:51:03 +0000 X-Loop: owner@bugs.debian.org X-ASG-Orig-Subj: Bug#553875: fixed in xfsprogs 3.1.6 Subject: Bug#553875: fixed in xfsprogs 3.1.6 Reply-To: Aurelien Jarno , 553875@bugs.debian.org Resent-From: Aurelien Jarno Resent-To: debian-bugs-dist@lists.debian.org Resent-Cc: XFS Development Team X-Loop: owner@bugs.debian.org Resent-Date: Mon, 14 Nov 2011 21:51:02 +0000 Resent-Message-ID: X-Debian-PR-Message: followup 553875 X-Debian-PR-Package: xfsprogs X-Debian-PR-Keywords: sid wheezy X-Debian-PR-Source: xfsprogs Received: via spool by 553875-submit@bugs.debian.org id=B553875.132130733618844 (code B ref 553875); Mon, 14 Nov 2011 21:51:02 +0000 Received: (at 553875) by bugs.debian.org; 14 Nov 2011 21:48:56 +0000 Received: from hall.aurel32.net ([88.191.126.93]) by busoni.debian.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.72) (envelope-from ) id 1RQ4Oe-0004tX-71; Mon, 14 Nov 2011 21:48:56 +0000 Received: from [2001:470:d4ed:0:5e26:aff:fe2b:6f5b] (helo=volta.aurel32.net) by hall.aurel32.net with esmtpsa (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.72) (envelope-from ) id 1RQ4Oa-0007lC-3a; Mon, 14 Nov 2011 22:48:52 +0100 Received: from aurel32 by volta.aurel32.net with local (Exim 4.77) (envelope-from ) id 1RQ4OY-0004LK-Oq; Mon, 14 Nov 2011 22:48:50 +0100 Date: Mon, 14 Nov 2011 22:48:50 +0100 From: Aurelien Jarno To: Nathan Scott Cc: 553875@bugs.debian.org Message-ID: <20111114214850.GA16572@volta.aurel32.net> References: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: X-Mailer: Mutt 1.5.21 (2010-09-15) User-Agent: Mutt/1.5.21 (2010-09-15) Resent-Sender: Debian BTS X-Barracuda-Connect: busoni.debian.org[140.211.15.34] X-Barracuda-Start-Time: 1321307466 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0196 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80266 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean not-fixed 553875 3.1.6 found 553875 3.1.6 thanks On Fri, Nov 11, 2011 at 05:47:22AM +0000, Nathan Scott wrote: > Source: xfsprogs > Source-Version: 3.1.6 > > We believe that the bug you reported is fixed in the latest version of > xfsprogs, which is due to be installed in the Debian FTP archive: > > xfslibs-dev_3.1.6_i386.deb > to main/x/xfsprogs/xfslibs-dev_3.1.6_i386.deb > xfsprogs-udeb_3.1.6_i386.udeb > to main/x/xfsprogs/xfsprogs-udeb_3.1.6_i386.udeb > xfsprogs_3.1.6.dsc > to main/x/xfsprogs/xfsprogs_3.1.6.dsc > xfsprogs_3.1.6.tar.gz > to main/x/xfsprogs/xfsprogs_3.1.6.tar.gz > xfsprogs_3.1.6_i386.deb > to main/x/xfsprogs/xfsprogs_3.1.6_i386.deb > > > > A summary of the changes between this version and the previous one is > attached. > > Thank you for reporting the bug, which will now be closed. If you > have further comments please address them to 553875@bugs.debian.org, > and the maintainer will reopen the bug report if appropriate. > > Debian distribution maintenance software > pp. > Nathan Scott (supplier of updated xfsprogs package) > > (This message was generated automatically at their request; if you > believe that there is a problem with it please contact the archive > administrators by mailing ftpmaster@debian.org) > > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Format: 1.8 > Date: Wed, 11 Oct 2011 16:47:10 +1100 > Source: xfsprogs > Binary: xfsprogs xfslibs-dev xfsprogs-udeb > Architecture: source i386 > Version: 3.1.6 > Distribution: unstable > Urgency: low > Maintainer: XFS Development Team > Changed-By: Nathan Scott > Description: > xfslibs-dev - XFS filesystem-specific static libraries and headers > xfsprogs - Utilities for managing the XFS filesystem > xfsprogs-udeb - A stripped-down version of xfsprogs, for debian-installer (udeb) > Closes: 553875 > Changes: > xfsprogs (3.1.6) unstable; urgency=low > . > * New upstream release > * Handle upcoming libreadline5-dev removal (closes: #553875) This new version basically replaced the build-depends on libreadline-gplv2-dev by a build-depends on libreadline5-dev | libreadline-gplv2-dev Given libreadline5-dev is not in the archive, the package can't be built, and the bug is still there. Reopening it, marking 3.1.6 as non-fixed. -- Aurelien Jarno GPG: 1024D/F1BCDB73 aurelien@aurel32.net http://www.aurel32.net From debbugs@busoni.debian.org Mon Nov 14 15:51:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAELpB7e246231 for ; Mon, 14 Nov 2011 15:51:12 -0600 X-ASG-Debug-ID: 1321307470-0eae034d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from busoni.debian.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E5DE31303934 for ; Mon, 14 Nov 2011 13:51:10 -0800 (PST) Received: from busoni.debian.org (busoni.debian.org [140.211.15.34]) by cuda.sgi.com with ESMTP id no717AwvJxcWsz4G for ; Mon, 14 Nov 2011 13:51:10 -0800 (PST) Received: from debbugs by busoni.debian.org with local (Exim 4.72) (envelope-from ) id 1RQ4Qm-0005Cq-B7; Mon, 14 Nov 2011 21:51:08 +0000 Date: Mon, 14 Nov 2011 21:51:08 +0000 X-Loop: owner@bugs.debian.org From: owner@bugs.debian.org (Debian Bug Tracking System) To: Aurelien Jarno Cc: XFS Development Team (xfsprogs for {553875}) X-ASG-Orig-Subj: Processed (with 1 errors): Re: Bug#553875: fixed in xfsprogs 3.1.6 Subject: Processed (with 1 errors): Re: Bug#553875: fixed in xfsprogs 3.1.6 In-Reply-To: <20111114214850.GA16572@volta.aurel32.net> References: <20111114214850.GA16572@volta.aurel32.net> Message-ID: Precedence: bulk X-Debian-PR-Package: X-Debian-PR-Message: transcript Sender: Debian BTS X-Barracuda-Connect: busoni.debian.org[140.211.15.34] X-Barracuda-Start-Time: 1321307470 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4233 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80265 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Processing commands for control@bugs.debian.org: > not-fixed 553875 3.1.6 Unknown command or malformed arguments to command. > found 553875 3.1.6 Bug #553875 {Done: Nathan Scott } [xfsprogs] replacing libreadline5-dev build dependency with libreadline-dev Bug Marked as found in versions xfsprogs/3.1.6; no longer marked as fixed in versions xfsprogs/3.1.6 and reopened. > thanks Stopping processing here. Please contact me if you need assistance. -- 553875: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=553875 Debian Bug Tracking System Contact owner@bugs.debian.org with problems From sekharan@us.ibm.com Mon Nov 14 15:55:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAELtrnX247019 for ; Mon, 14 Nov 2011 15:55:53 -0600 X-ASG-Debug-ID: 1321307752-400300fd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e5.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CE22E24D07D for ; Mon, 14 Nov 2011 13:55:52 -0800 (PST) Received: from e5.ny.us.ibm.com (e5.ny.us.ibm.com [32.97.182.145]) by cuda.sgi.com with ESMTP id CvJLW8yH3nrlmXD5 for ; Mon, 14 Nov 2011 13:55:52 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from /spool/local by e5.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 14 Nov 2011 16:55:49 -0500 Received: from d01relay07.pok.ibm.com ([9.56.227.147]) by e5.ny.us.ibm.com ([192.168.1.105]) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Mon, 14 Nov 2011 16:55:20 -0500 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay07.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id pAELtHRI3150032 for ; Mon, 14 Nov 2011 16:55:17 -0500 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id pAELtGBL014369 for ; Mon, 14 Nov 2011 16:55:17 -0500 Received: from [9.53.40.164] (chandra-lucid.austin.ibm.com [9.53.40.164]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id pAELtENm014169; Mon, 14 Nov 2011 16:55:14 -0500 X-ASG-Orig-Subj: Re: Occasional memory fault in inode_has_perm() while running xfstest 234 Subject: Re: Occasional memory fault in inode_has_perm() while running xfstest 234 From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Eric Paris Cc: Christoph Hellwig , XFS Mailing List , linux-security-module@vger.kernel.org In-Reply-To: References: <1320961003.2201.27.camel@chandra-lucid.austin.ibm.com> <20111114102755.GA31043@infradead.org> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Mon, 14 Nov 2011 15:55:13 -0600 Message-ID: <1321307713.2201.50.camel@chandra-lucid.austin.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit x-cbid: 11111421-5930-0000-0000-0000018C6A17 X-Barracuda-Connect: e5.ny.us.ibm.com[32.97.182.145] X-Barracuda-Start-Time: 1321307752 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 2011-11-14 at 10:13 -0500, Eric Paris wrote: > The only way this can happen is if the filesystem is creating inodes > and not calling security_inode_alloc() (which should be done in > inode_init_always) > > I can only guess (and believe me it is a complete wild guess after > looking at grep for 5 seconds) it has something to do with the XFS > __releases() function which does some weirdness in the case of a > failed call to inode_init_always(). > > The only other option is an FS somehow still uses an inode after > __destroy_inode(), but I'd assume that would land you in other > troubles. In either case, I'm hard pressed to blame SELinux/LSM, > since the VFS does appear to be hooked in the right places > (inode_init_alwasys and __destroy_inode) to set and unset > inode->i_security.... Hi Eric, Thanks for your response. I added code to print inode value at xfs_iget_cache_hit() and inode_has_perm(). I see the inode values printed at inode_has_perm() but not at xfs_iget_cache_hit(), which means the failure at xfs_iget_cache_hit() is not the cause for the inode_security being NULL at inode_has_perm(). So, it makes me think that the memory fault I see is related to the (error path) code in xfs_iget_cache_hit(). Any other suggestions to try ? Chandra > > -Eric > > On Mon, Nov 14, 2011 at 5:27 AM, Christoph Hellwig wrote: > > This looks like a selinux issues. Ccing the LSM list. > > > > On Thu, Nov 10, 2011 at 03:36:43PM -0600, Chandra Seetharaman wrote: > >> Hi All, > >> > >> While debugging the xfstest case 234, I was occasionally hitting the > >> following memory fault. Has anybody seen it ? > >> > >> ----------------- > >> IP: [] inode_has_perm+0x1f/0x40 > >> PGD 0 > >> Oops: 0000 [#1] SMP > >> CPU 0 > >> Modules linked in: xfs exportfs ebtable_nat ebtables ipt_MASQUERADE iptable_nat nf_nat iptable_mangle bridge stp llc autofs4 sunrpc cpufreq_ondemand acpi_cpufreq freq_table mperf ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 ext3 jbd dm_mirror dm_region_hash dm_log dm_mod vhost_net macvtap macvlan tun kvm_intel kvm cdc_ether usbnet mii microcode serio_raw i2c_i801 i2c_core iTCO_wdt iTCO_vendor_support shpchp ioatdma i7core_edac edac_core ses enclosure sg igb dca ext4 mbcache jbd2 sd_mod crc_t10dif ahci libahci megaraid_sas [last unloaded: scsi_wait_scan] > >> > >> Pid: 32611, comm: setquota Not tainted 3.1.0-rc9.virgin+ #6 IBM System x3630 M3 -[7377AC1]-/69Y1101 > >> RIP: 0010:[] [] inode_has_perm+0x1f/0x40 > >> RSP: 0018:ffff880642bcdb78 EFLAGS: 00010246 > >> RAX: 0000000000800002 RBX: ffff88064f2205f8 RCX: 0000000000800000 > >> RDX: 0000000000800000 RSI: 0000000000000000 RDI: ffff880649e58480 > >> RBP: ffff880642bcdb78 R08: ffff880642bcdb88 R09: 0000000000000080 > >> R10: ffff880658ffff00 R11: ffff880642bcdb88 R12: 0000000000000081 > >> R13: ffff88064f2205f8 R14: ffff8806592b8100 R15: 0000000000000000 > >> FS: 00007f56dfa3a700(0000) GS:ffff88067f200000(0000) knlGS:0000000000000000 > >> CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b > >> CR2: 0000000000000020 CR3: 0000000642b30000 CR4: 00000000000006f0 > >> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 > >> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 > >> Process setquota (pid: 32611, threadinfo ffff880642bcc000, task ffff8806592b8100) > >> Stack: > >> ffff880642bcdc18 ffffffff811e5d79 0000000000000009 0000000000000000 > >> ffff88064f2205f8 0000000000000000 0000000000000000 0000000000000000 > >> 0000000000000000 0000000000000000 0000000000000000 0000000000000000 > >> Call Trace: > >> [] selinux_inode_permission+0xa9/0x100 > >> [] security_inode_permission+0x1c/0x30 > >> [] inode_permission+0x49/0x100 > >> [] link_path_walk+0x87/0x810 > >> [] ? unlock_page+0x2a/0x40 > >> [] path_lookupat+0x55/0x690 > >> [] ? handle_pte_fault+0xf7/0xb50 > >> [] do_path_lookup+0x31/0xc0 > >> [] ? getname_flags+0x1f8/0x280 > >> [] user_path_at+0x59/0xa0 > >> [] ? handle_mm_fault+0x15b/0x270 > >> [] ? do_page_fault+0x1e0/0x460 > >> [] ? kmem_cache_alloc+0x152/0x190 > >> [] vfs_fstatat+0x47/0x80 > >> [] ? do_sigaction+0x91/0x1d0 > >> [] vfs_stat+0x1b/0x20 > >> [] sys_newstat+0x24/0x50 > >> [] ? audit_syscall_entry+0x1bf/0x1f0 > >> [] system_call_fastpath+0x16/0x1b > >> Code: 66 66 66 2e 0f 1f 84 00 00 00 00 00 55 48 89 e5 66 66 66 66 90 f6 46 0d 02 75 23 48 8b 76 38 48 8b 7f 68 45 89 c1 49 89 c8 89 d1 <0f> b7 46 20 8b 7f 04 8b 76 1c 89 c2 e8 a0 f9 ff ff c9 c3 31 c0 > >> RIP [] inode_has_perm+0x1f/0x40 > >> RSP > >> CR2: 0000000000000020 > >> ---[ end trace 5d054c892d311b3f ]--- > >> ---------------------------- > >> > >> I made some code changes and found that inode->i_security is the data > >> structure that is NULL. > >> > >> I added the following code > >> ------------------ > >> diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c > >> index 266a229..43870ec 100644 > >> --- a/security/selinux/hooks.c > >> +++ b/security/selinux/hooks.c > >> @@ -1466,6 +1466,7 @@ static int task_has_system(struct task_struct *tsk, > >> SECCLASS_SYSTEM, perms, NULL); > >> } > >> > >> +u64 isec_yes; > >> /* Check whether a task has a particular permission to an inode. > >> The 'adp' parameter is optional and allows other audit > >> data to be passed (e.g. the dentry). */ > >> @@ -1486,6 +1487,13 @@ static int inode_has_perm(const struct cred *cred, > >> sid = cred_sid(cred); > >> isec = inode->i_security; > >> > >> + if (isec) > >> + isec_yes++; > >> + else { > >> + printk("isec NULL; isec_yes %llu\n", isec_yes); > >> + return -EACCES; > >> + } > >> + > >> return avc_has_perm_flags(sid, isec->sid, isec->sclass, perms, adp, flags); > >> } > >> > >> -------------------------------- > >> > >> and this is what I see in /var/log/messages > >> ----------------------------- > >> isec NULL; isec_yes 14345860 > >> isec NULL; isec_yes 102846678 > >> isec NULL; isec_yes 107203361 > >> isec NULL; isec_yes 136859591 > >> isec NULL; isec_yes 140941549 > >> isec NULL; isec_yes 168163633 > >> isec NULL; isec_yes 222030886 > >> isec NULL; isec_yes 238835570 > >> isec NULL; isec_yes 263587444 > >> isec NULL; isec_yes 280912141 > >> ------------------------------ > >> > >> Can somebody throw some light on it ? > >> > >> I am using xfs.sgi.com with commit 9e4c109ac822395e0aae650e4e3c9e4903f6602f > >> at the top. > >> > >> Regards, > >> > >> Chandra > >> > >> _______________________________________________ > >> xfs mailing list > >> xfs@oss.sgi.com > >> http://oss.sgi.com/mailman/listinfo/xfs > > ---end quoted text--- > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-security-module" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > > From debbugs@busoni.debian.org Mon Nov 14 20:03:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=3.0 required=5.0 tests=BAYES_20,HTML_MESSAGE autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAF237DN010304 for ; Mon, 14 Nov 2011 20:03:07 -0600 X-ASG-Debug-ID: 1321322585-308d00c80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from busoni.debian.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 39DC4154910A for ; Mon, 14 Nov 2011 18:03:05 -0800 (PST) Received: from busoni.debian.org (busoni.debian.org [140.211.15.34]) by cuda.sgi.com with ESMTP id MSXLAqEjsX3TIc7B for ; Mon, 14 Nov 2011 18:03:05 -0800 (PST) Received: from debbugs by busoni.debian.org with local (Exim 4.72) (envelope-from ) id 1RQ8MZ-0007pq-Sp; Tue, 15 Nov 2011 02:03:03 +0000 X-Loop: owner@bugs.debian.org X-ASG-Orig-Subj: Bug#553875: fixed in xfsprogs 3.1.6 Subject: Bug#553875: fixed in xfsprogs 3.1.6 Reply-To: Nathan Scott , 553875@bugs.debian.org Resent-From: Nathan Scott Original-Sender: ndsco1@student.monash.edu Resent-To: debian-bugs-dist@lists.debian.org Resent-Cc: XFS Development Team X-Loop: owner@bugs.debian.org Resent-Date: Tue, 15 Nov 2011 02:03:02 +0000 Resent-Message-ID: X-Debian-PR-Message: followup 553875 X-Debian-PR-Package: xfsprogs X-Debian-PR-Keywords: sid wheezy X-Debian-PR-Source: xfsprogs Received: via spool by 553875-submit@bugs.debian.org id=B553875.132132245629870 (code B ref 553875); Tue, 15 Nov 2011 02:03:02 +0000 Received: (at 553875) by bugs.debian.org; 15 Nov 2011 02:00:56 +0000 Received: from kenny.its.monash.edu.au ([130.194.13.164]) by busoni.debian.org with esmtp (Exim 4.72) (envelope-from ) id 1RQ8KW-0007lM-Fk for 553875@bugs.debian.org; Tue, 15 Nov 2011 02:00:56 +0000 Received: from jones.its.monash.edu.au ([130.194.13.86]) by kenny.its.monash.edu.au (Sun Java System Messaging Server 6.2-4.03 (built Sep 22 2005)) with ESMTP id <0LUO00H78G5G6930@kenny.its.monash.edu.au> for 553875@bugs.debian.org; Tue, 15 Nov 2011 12:00:52 +1100 (EST) Received: from jones.its.monash.edu.au (localhost.localdomain [127.0.0.1]) by localhost (Postfix) with SMTP id 5893A8BDDB7 for <553875@bugs.debian.org>; Tue, 15 Nov 2011 12:00:52 +1100 (EST) Received: from mail-yx0-f182.google.com (mail-yx0-f182.google.com [209.85.213.182]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by jones.its.monash.edu.au (Postfix) with ESMTPS id 7CCB18BDDB3 for <553875@bugs.debian.org>; Tue, 15 Nov 2011 12:00:51 +1100 (EST) Received: by mail-yx0-f182.google.com with SMTP id l11so2007947yen.41 for <553875@bugs.debian.org>; Mon, 14 Nov 2011 17:00:51 -0800 (PST) Received: by 10.68.25.199 with SMTP id e7mr53630566pbg.123.1321318850670; Mon, 14 Nov 2011 17:00:50 -0800 (PST) Received: by 10.142.125.16 with HTTP; Mon, 14 Nov 2011 17:00:50 -0800 (PST) Date: Tue, 15 Nov 2011 12:00:50 +1100 From: Nathan Scott In-reply-to: <20111114214850.GA16572@volta.aurel32.net> Sender: ndsco1@student.monash.edu To: Aurelien Jarno Cc: 553875@bugs.debian.org Message-id: MIME-version: 1.0 Content-type: multipart/alternative; boundary=bcaec520e6edbaafde04b1bb84ba X-Google-Sender-Auth: 8zCKtkt0OkGDDUEJUztaJkw9f50 X-PMX-Authenticated: NONE X-PMX-Version: 5.5.1.360522, Antispam-Engine: 2.6.1.350677, Antispam-Data: 2011.11.15.5120 X-PMX-Spam: Gauge=IIIIIII, Probability=8%, Report='HTML_NO_HTTP 0.1, BODYTEXTH_SIZE_10000_LESS 0, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_2000_2999 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, CTYPE_MULTIPART_NO_QUOTE 0, WEBMAIL_SOURCE 0, __ANY_URI 0, __BOUNCE_CHALLENGE_SUBJ 0, __BOUNCE_NDR_SUBJ_EXEMPT 0, __CT 0, __CTYPE_HAS_BOUNDARY 0, __CTYPE_MULTIPART 0, __CTYPE_MULTIPART_ALT 0, __HAS_HTML 0, __HAS_MSGID 0, __HELO_GMAIL 0, __MIME_HTML 0, __MIME_VERSION 0, __PHISH_SPEAR_HTTP_RECEIVED 0, __RDNS_GMAIL 0, __SANE_MSGID 0, __TO_MALFORMED_2 0, __URI_NO_PATH 0, __URI_NO_WWW 0' References: <20111114214850.GA16572@volta.aurel32.net> X-Greylist: delayed 3601 seconds by postgrey-1.32 at busoni; Tue, 15 Nov 2011 02:00:56 UTC Resent-Sender: Debian BTS X-Barracuda-Connect: busoni.debian.org[140.211.15.34] X-Barracuda-Start-Time: 1321322586 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0520 1.0000 -1.6872 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.69 X-Barracuda-Spam-Status: No, SCORE=-1.69 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80281 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --bcaec520e6edbaafde04b1bb84ba Content-Type: text/plain; charset=ISO-8859-1 Hi Aurelien, On 15 November 2011 08:48, Aurelien Jarno wrote: > > This new version basically replaced the build-depends on > libreadline-gplv2-dev > by a build-depends on > libreadline5-dev | libreadline-gplv2-dev > > Given libreadline5-dev is not in the archive, the package can't be > built, It seems to work as expected for me (iow, if either of the two are installed, it proceeds with using the installed package). I tested both variants on latest unstable, so I'm at a loss to explain the failure you're seeing - can you forward the build output showing the issue? Allowing either package to satisfy the dependency means more people have been able to continue to build and use these packages, which helps those users who are not using unstable, so unless its not feasible I'd prefer to leave that option open to them. cheers. -- Nathan --bcaec520e6edbaafde04b1bb84ba Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi Aurelien,

On 15 November 2011 08:48, A= urelien Jarno <aurelien@aurel32.net> wrote:

This new version basically replaced the build-depends on
=A0libreadline-gplv2-dev
by a build-depends on
=A0libreadline5-dev | libreadline-gplv2-dev

Given libreadline5-dev is not in the archive, the package can't be
built,

It seems to work as expected for me (iow, if ei= ther of the two are installed, it proceeds with using the installed package= ).=A0 I tested both variants on latest unstable, so I'm at a loss to ex= plain the failure you're seeing - can you forward the build output show= ing the issue?

Allowing either package to satisfy the dependency means more people hav= e been able to continue to build and use these packages, which helps those = users who are not using unstable, so unless its not feasible I'd prefer= to leave that option open to them.

cheers.

--
Nathan
--bcaec520e6edbaafde04b1bb84ba-- From debbugs@busoni.debian.org Tue Nov 15 00:21:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_73 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAF6L8j0034568 for ; Tue, 15 Nov 2011 00:21:08 -0600 X-ASG-Debug-ID: 1321338065-7b0b036a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from busoni.debian.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 32CAD24E46A for ; Mon, 14 Nov 2011 22:21:05 -0800 (PST) Received: from busoni.debian.org (busoni.debian.org [140.211.15.34]) by cuda.sgi.com with ESMTP id Sz5LwK25xomOwmad for ; Mon, 14 Nov 2011 22:21:05 -0800 (PST) Received: from debbugs by busoni.debian.org with local (Exim 4.72) (envelope-from ) id 1RQCOF-000236-FT; Tue, 15 Nov 2011 06:21:03 +0000 X-Loop: owner@bugs.debian.org X-ASG-Orig-Subj: Bug#553875: fixed in xfsprogs 3.1.6 Subject: Bug#553875: fixed in xfsprogs 3.1.6 Reply-To: Aurelien Jarno , 553875@bugs.debian.org Resent-From: Aurelien Jarno Original-Sender: Aurelien Jarno Resent-To: debian-bugs-dist@lists.debian.org Resent-Cc: XFS Development Team X-Loop: owner@bugs.debian.org Resent-Date: Tue, 15 Nov 2011 06:21:01 +0000 Resent-Message-ID: X-Debian-PR-Message: followup 553875 X-Debian-PR-Package: xfsprogs X-Debian-PR-Keywords: sid wheezy X-Debian-PR-Source: xfsprogs Received: via spool by 553875-submit@bugs.debian.org id=B553875.13213379076815 (code B ref 553875); Tue, 15 Nov 2011 06:21:01 +0000 Received: (at 553875) by bugs.debian.org; 15 Nov 2011 06:18:27 +0000 Received: from hall.aurel32.net ([88.191.126.93]) by busoni.debian.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.72) (envelope-from ) id 1RQCLi-0001ll-IM for 553875@bugs.debian.org; Tue, 15 Nov 2011 06:18:27 +0000 Received: from aurel32 by hall.aurel32.net with local (Exim 4.72) (envelope-from ) id 1RQCLe-0008C7-GZ; Tue, 15 Nov 2011 07:18:22 +0100 Date: Tue, 15 Nov 2011 07:18:22 +0100 From: Aurelien Jarno To: Nathan Scott Cc: 553875@bugs.debian.org Message-ID: <20111115061822.GA6219@hall.aurel32.net> References: <20111114214850.GA16572@volta.aurel32.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="LZvS9be/3tNcYl/X" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Mailer: Mutt 1.5.20 (2009-06-14) User-Agent: Mutt/1.5.20 (2009-06-14) Sender: Aurelien Jarno Resent-Sender: Debian BTS X-Barracuda-Connect: busoni.debian.org[140.211.15.34] X-Barracuda-Start-Time: 1321338066 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2088 1.0000 -0.7819 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.78 X-Barracuda-Spam-Status: No, SCORE=-0.78 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80300 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --LZvS9be/3tNcYl/X Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline On Tue, Nov 15, 2011 at 12:00:50PM +1100, Nathan Scott wrote: > Hi Aurelien, > > On 15 November 2011 08:48, Aurelien Jarno wrote: > > > > > This new version basically replaced the build-depends on > > libreadline-gplv2-dev > > by a build-depends on > > libreadline5-dev | libreadline-gplv2-dev > > > > Given libreadline5-dev is not in the archive, the package can't be > > built, > > > It seems to work as expected for me (iow, if either of the two are > installed, it proceeds with using the installed package). I tested both > variants on latest unstable, so I'm at a loss to explain the failure you're > seeing - can you forward the build output showing the issue? The buildd daemons require that the first package of an alternative exists in the archive, which is not the case there. You'll find attached a build log showing the issue. -- Aurelien Jarno GPG: 1024D/F1BCDB73 aurelien@aurel32.net http://www.aurel32.net --LZvS9be/3tNcYl/X Content-Type: text/plain; charset=unknown-8bit Content-Disposition: attachment; filename="xfsprogs_3.1.6-s390-20111115-0227" Content-Transfer-Encoding: 8bit sbuild (Debian sbuild) 0.61.0 (23 Feb 2011) on zandonai.debian.org â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•— â•‘ xfsprogs 3.1.6 (s390) 15 Nov 2011 02:27 â•‘ ╚â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• Package: xfsprogs Version: 3.1.6 Source Version: 3.1.6 Architecture: s390 Get:1 http://ftp.de.debian.org unstable InRelease [146 kB] Get:2 http://incoming.debian.org unstable InRelease [146 kB] Get:3 http://ftp.de.debian.org unstable/main Sources [5933 kB] Ign http://incoming.debian.org InRelease Get:4 http://incoming.debian.org Release.gpg [836 B] Get:5 http://incoming.debian.org unstable/main Sources [5933 kB] Get:6 http://ftp.de.debian.org unstable/contrib Sources [57.2 kB] Get:7 http://ftp.de.debian.org unstable/non-free Sources [103 kB] Get:8 http://ftp.de.debian.org unstable/main s390 Packages [7631 kB] Get:9 http://ftp.de.debian.org unstable/contrib s390 Packages [54.9 kB] Ign http://ftp.de.debian.org unstable/contrib TranslationIndex Get:10 http://ftp.de.debian.org unstable/main TranslationIndex [2045 B] Ign http://ftp.de.debian.org unstable/contrib Translation-en Get:11 http://incoming.debian.org unstable/contrib Sources [57.2 kB] Get:12 http://incoming.debian.org unstable/non-free Sources [103 kB] Get:13 http://incoming.debian.org unstable/main s390 Packages [7633 kB] Get:14 http://incoming.debian.org unstable/contrib s390 Packages [54.9 kB] Ign http://incoming.debian.org unstable/contrib TranslationIndex Get:15 http://incoming.debian.org unstable/main TranslationIndex [2045 B] Get:16 http://incoming.debian.org Release [1604 B] Get:17 http://incoming.debian.org Sources [30.5 kB] Get:18 http://incoming.debian.org Packages [502 kB] Ign http://incoming.debian.org unstable/contrib Translation-en Ign http://incoming.debian.org Translation-en Fetched 28.4 MB in 26s (1068 kB/s) Reading package lists... ┌──────────────────────────────────────────────────────────────────────────────┠│ Fetch source files │ └──────────────────────────────────────────────────────────────────────────────┘ Check APT ───────── Checking available source versions... Download source files with APT ────────────────────────────── Reading package lists... Building dependency tree... Reading state information... Need to get 1398 kB of source archives. Get:1 http://ftp.de.debian.org/debian/ unstable/main xfsprogs 3.1.6 (dsc) [1096 B] Get:2 http://ftp.de.debian.org/debian/ unstable/main xfsprogs 3.1.6 (tar) [1397 kB] Fetched 1398 kB in 0s (2784 kB/s) Download complete and in download only mode Check arch ────────── ┌──────────────────────────────────────────────────────────────────────────────┠│ Install core build dependencies (internal resolver) │ └──────────────────────────────────────────────────────────────────────────────┘ Build-Depends: build-essential, fakeroot Checking for already installed dependencies... build-essential: already installed (11.5) fakeroot: already installed (1.18.1-1) Checking for dependency conflicts... Installing positive dependencies: Reading package lists... Building dependency tree... Reading state information... 0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. Removing negative dependencies: Reading package lists... Building dependency tree... Reading state information... 0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. Checking correctness of dependencies... ┌──────────────────────────────────────────────────────────────────────────────┠│ Install xfsprogs build dependencies (internal resolver) │ └──────────────────────────────────────────────────────────────────────────────┘ Build-Depends: base-files, base-passwd, bash, coreutils, dash, debianutils, diffutils, dpkg, e2fsprogs, findutils, grep, gzip, hostname, ncurses-base, ncurses-bin, perl-base, sed, login, sysvinit-utils, sysvinit, tar, bsdutils, mount, util-linux, libc6-dev | libc-dev, gcc (>= 4:4.4.3), g++ (>= 4:4.4.3), make, dpkg-dev (>= 1.13.5), uuid-dev, autoconf, debhelper (>= 5), gettext, libtool, libreadline5-dev | libreadline-gplv2-dev, libblkid-dev (>= 2.17) Checking for already installed dependencies... base-files: already installed (6.5) base-passwd: already installed (3.5.23) bash: already installed (4.1-3) coreutils: already installed (8.13-3) dash: already installed (0.5.7-2) debianutils: already installed (4.0.4) diffutils: already installed (1:3.2-1) dpkg: already installed (1.16.1.1) e2fsprogs: already installed (1.42~WIP-2011-10-16-1) findutils: already installed (4.4.2-1+b1) grep: already installed (2.9-2) gzip: already installed (1.4-2) hostname: already installed (3.06) ncurses-base: already installed (5.9-4) ncurses-bin: already installed (5.9-4) perl-base: already installed (5.14.2-3) sed: already installed (4.2.1-9) login: already installed (1:4.1.4.2+svn3283-3) sysvinit-utils: already installed (2.88dsf-13.13) sysvinit: already installed (2.88dsf-13.13) tar: already installed (1.26-3) bsdutils: already installed (1:2.19.1-5) mount: already installed (2.19.1-5) util-linux: already installed (2.19.1-5) libc6-dev: already installed (2.13-21) gcc: already installed (4:4.6.1-3 >= 4:4.4.3 is satisfied) g++: already installed (4:4.6.1-3 >= 4:4.4.3 is satisfied) make: already installed (3.81-8.1) dpkg-dev: already installed (1.16.1.1 >= 1.13.5 is satisfied) uuid-dev: missing autoconf: missing debhelper: missing Using default version 8.9.9 gettext: missing libtool: missing libreadline5-dev: missing libreadline-gplv2-dev: missing libblkid-dev: missing Using default version 2.19.1-5 Checking for dependency conflicts... E: Package 'libreadline5-dev' has no installation candidate Installing positive dependencies: uuid-dev autoconf debhelper gettext libtool libreadline5-dev libblkid-dev Reading package lists... Building dependency tree... Reading state information... Package libreadline5-dev is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source However the following packages replace it: libreadline-gplv2-dev lib64readline-gplv2-dev E: Package 'libreadline5-dev' has no installation candidate apt-get failed. Package installation failed Not removing build depends: cloned chroot in use Source-dependencies not satisfied; skipping xfsprogs Purging /var/lib/schroot/mount/sid-s390-sbuild-03b3f6a5-6fa3-4646-9e64-e51bea664789/build/buildd-xfsprogs_3.1.6-s390-Hf4YVI Not cleaning session: cloned chroot in use ┌──────────────────────────────────────────────────────────────────────────────┠│ Summary │ └──────────────────────────────────────────────────────────────────────────────┘ Architecture: s390 Build-Space: 0 Build-Time: 0 Distribution: sid Fail-Stage: install-deps Install-Time: 0 Job: xfsprogs_3.1.6 Package: xfsprogs Package-Time: 0 Source-Version: 3.1.6 Space: 0 Status: given-back Version: 3.1.6 ──────────────────────────────────────────────────────────────────────────────── Finished at 20111115-0227 Build needed 00:00:00, 0k disc space --LZvS9be/3tNcYl/X-- From BATV+d59cd714167caaa18e35+3005+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 15 02:07:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAF87IjU037527 for ; Tue, 15 Nov 2011 02:07:18 -0600 X-ASG-Debug-ID: 1321344435-2a2500510000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CBFF11D0BF5D for ; Tue, 15 Nov 2011 00:07:15 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id X772knkL73hIFkR1 for ; Tue, 15 Nov 2011 00:07:15 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQE31-0007Km-1E for xfs@oss.sgi.com; Tue, 15 Nov 2011 08:07:15 +0000 Date: Tue, 15 Nov 2011 03:07:15 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] repair: validate acl count before reading it Subject: [PATCH] repair: validate acl count before reading it Message-ID: <20111115080714.GA24931@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321344435 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80306 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This prevents a segfault on a filesystem so badly corrupted by the RAID controller that it could be considered fuzzed. Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/repair/attr_repair.c =================================================================== --- xfsprogs-dev.orig/repair/attr_repair.c 2011-11-14 20:03:27.000000000 +0000 +++ xfsprogs-dev/repair/attr_repair.c 2011-11-14 20:20:55.000000000 +0000 @@ -931,8 +931,8 @@ process_longform_attr( } -static xfs_acl_t * -xfs_acl_from_disk(xfs_acl_disk_t *dacl) +static int +xfs_acl_from_disk(struct xfs_acl **aclp, struct xfs_acl_disk *dacl) { int count; xfs_acl_t *acl; @@ -940,10 +940,22 @@ xfs_acl_from_disk(xfs_acl_disk_t *dacl) xfs_acl_entry_disk_t *dace, *end; count = be32_to_cpu(dacl->acl_cnt); + if (count > XFS_ACL_MAX_ENTRIES) { + do_warn(_("to larget ACL, size %d"), count); + *aclp = NULL; + return EINVAL; + } + + end = &dacl->acl_entry[0] + count; acl = malloc((int)((char *)end - (char *)dacl)); - if (!acl) - return NULL; + if (!acl) { + do_warn(_("cannot malloc enough for ACL attribute\n")); + do_warn(_("SKIPPING this ACL\n")); + *aclp = NULL; + return ENOMEM; + } + acl->acl_cnt = count; ace = &acl->acl_entry[0]; for (dace = &dacl->acl_entry[0]; dace < end; ace++, dace++) { @@ -951,7 +963,9 @@ xfs_acl_from_disk(xfs_acl_disk_t *dacl) ace->ae_id = be32_to_cpu(dace->ae_id); ace->ae_perm = be16_to_cpu(dace->ae_perm); } - return acl; + + *aclp = acl; + return 0; } /* @@ -1004,15 +1018,14 @@ xfs_acl_valid(xfs_acl_disk_t *daclp) if (daclp == NULL) goto acl_invalid; - aclp = xfs_acl_from_disk(daclp); - if (aclp == NULL) { - do_warn(_("cannot malloc enough for ACL attribute\n")); - do_warn(_("SKIPPING this ACL\n")); + switch (xfs_acl_from_disk(&aclp, daclp)) { + case ENOMEM: return 0; - } - - if (aclp->acl_cnt > XFS_ACL_MAX_ENTRIES) + case EINVAL: goto acl_invalid; + default: + break; + } for (i = 0; i < aclp->acl_cnt; i++) { entry = &aclp->acl_entry[i]; From debbugs@busoni.debian.org Tue Nov 15 03:30:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.5 required=5.0 tests=BAYES_05,HTML_MESSAGE autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAF9UFDp039966 for ; Tue, 15 Nov 2011 03:30:15 -0600 X-ASG-Debug-ID: 1321349413-1e05019a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from busoni.debian.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 635AF1E9CA4A for ; Tue, 15 Nov 2011 01:30:13 -0800 (PST) Received: from busoni.debian.org (busoni.debian.org [140.211.15.34]) by cuda.sgi.com with ESMTP id jDjAn3eH16FE0sK0 for ; Tue, 15 Nov 2011 01:30:13 -0800 (PST) Received: from debbugs by busoni.debian.org with local (Exim 4.72) (envelope-from ) id 1RQFLA-00086c-0h; Tue, 15 Nov 2011 09:30:05 +0000 X-Loop: owner@bugs.debian.org X-ASG-Orig-Subj: Bug#553875: fixed in xfsprogs 3.1.6 Subject: Bug#553875: fixed in xfsprogs 3.1.6 Reply-To: Nathan Scott , 553875@bugs.debian.org Resent-From: Nathan Scott Original-Sender: ndsco1@student.monash.edu Resent-To: debian-bugs-dist@lists.debian.org Resent-Cc: XFS Development Team X-Loop: owner@bugs.debian.org Resent-Date: Tue, 15 Nov 2011 09:30:02 +0000 Resent-Message-ID: X-Debian-PR-Message: followup 553875 X-Debian-PR-Package: xfsprogs X-Debian-PR-Keywords: sid wheezy X-Debian-PR-Source: xfsprogs Received: via spool by 553875-submit@bugs.debian.org id=B553875.132134926030910 (code B ref 553875); Tue, 15 Nov 2011 09:30:02 +0000 Received: (at 553875) by bugs.debian.org; 15 Nov 2011 09:27:40 +0000 Received: from stan.its.monash.edu.au ([130.194.13.165]) by busoni.debian.org with esmtp (Exim 4.72) (envelope-from ) id 1RQFIo-00082P-1q for 553875@bugs.debian.org; Tue, 15 Nov 2011 09:27:39 +0000 Received: from palin.its.monash.edu.au ([130.194.13.83]) by stan.its.monash.edu.au (Sun Java System Messaging Server 6.2-4.03 (built Sep 22 2005)) with ESMTP id <0LUP00DRL3LZ3G70@stan.its.monash.edu.au> for 553875@bugs.debian.org; Tue, 15 Nov 2011 20:27:35 +1100 (EST) Received: from palin.its.monash.edu.au (localhost.localdomain [127.0.0.1]) by localhost (Postfix) with SMTP id E841A546BF2 for <553875@bugs.debian.org>; Tue, 15 Nov 2011 20:27:34 +1100 (EST) Received: from mail-pz0-f48.google.com (mail-pz0-f48.google.com [209.85.210.48]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by palin.its.monash.edu.au (Postfix) with ESMTPS id 4EEE8546BF0 for <553875@bugs.debian.org>; Tue, 15 Nov 2011 20:27:33 +1100 (EST) Received: by pzk32 with SMTP id 32so16437471pzk.7 for <553875@bugs.debian.org>; Tue, 15 Nov 2011 01:27:30 -0800 (PST) Received: by 10.68.10.38 with SMTP id f6mr46682479pbb.89.1321349250130; Tue, 15 Nov 2011 01:27:30 -0800 (PST) Received: by 10.142.125.16 with HTTP; Tue, 15 Nov 2011 01:27:29 -0800 (PST) Date: Tue, 15 Nov 2011 20:27:29 +1100 From: Nathan Scott In-reply-to: <20111115061822.GA6219@hall.aurel32.net> Sender: ndsco1@student.monash.edu To: Aurelien Jarno Cc: 553875@bugs.debian.org Message-id: MIME-version: 1.0 Content-type: multipart/alternative; boundary=bcaec53af244ada2a304b1c2988f X-Google-Sender-Auth: XenPrxt5yZI7fKOKUMPgu0RxFW4 X-PMX-Authenticated: NONE X-PMX-Version: 5.6.0.2009776, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2011.11.15.91814 X-PMX-Spam: Gauge=IIIIIIII, Probability=8%, Report=' HTML_NO_HTTP 0.1, BODYTEXTH_SIZE_10000_LESS 0, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_3000_3999 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, CTYPE_MULTIPART_NO_QUOTE 0, WEBMAIL_SOURCE 0, __ANY_URI 0, __BOUNCE_CHALLENGE_SUBJ 0, __BOUNCE_NDR_SUBJ_EXEMPT 0, __CT 0, __CTYPE_HAS_BOUNDARY 0, __CTYPE_MULTIPART 0, __CTYPE_MULTIPART_ALT 0, __HAS_HTML 0, __HAS_MSGID 0, __HELO_GMAIL 0, __MIME_HTML 0, __MIME_VERSION 0, __PHISH_SPEAR_HTTP_RECEIVED 0, __RDNS_GMAIL 0, __SANE_MSGID 0, __TO_MALFORMED_2 0, __URI_NO_PATH 0, __URI_NO_WWW 0, __URI_NS ' References: <20111114214850.GA16572@volta.aurel32.net> <20111115061822.GA6219@hall.aurel32.net> Resent-Sender: Debian BTS X-Barracuda-Connect: busoni.debian.org[140.211.15.34] X-Barracuda-Start-Time: 1321349414 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1214 1.0000 -1.2659 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.26 X-Barracuda-Spam-Status: No, SCORE=-1.26 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80311 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --bcaec53af244ada2a304b1c2988f Content-Type: text/plain; charset=ISO-8859-1 Hi, On 15 November 2011 17:18, Aurelien Jarno wrote: > On Tue, Nov 15, 2011 at 12:00:50PM +1100, Nathan Scott wrote: > > Hi Aurelien, > > > > On 15 November 2011 08:48, Aurelien Jarno wrote: > > > > > > > > This new version basically replaced the build-depends on > > > libreadline-gplv2-dev > > > by a build-depends on > > > libreadline5-dev | libreadline-gplv2-dev > > > > > > Given libreadline5-dev is not in the archive, the package can't be > > > built, > > > > > > It seems to work as expected for me (iow, if either of the two are > > installed, it proceeds with using the installed package). I tested both > > variants on latest unstable, so I'm at a loss to explain the failure > you're > > seeing - can you forward the build output showing the issue? > > The buildd daemons require that the first package of an alternative > exists in the archive, which is not the case there. *nod* - right you are - I look after another package which (by sheer good luck) got these the other the way around, correctly, and its building fine. I'll get a patch out for review, and get a new release uploaded soon. Thanks for the tip, Aurelien! cheers. -- Nathan --bcaec53af244ada2a304b1c2988f Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi,

On 15 November 2011 17:18, Aurelien J= arno <aurelien= @aurel32.net> wrote:
On Tue, Nov 15, 2011 at 12:00:50PM +1100, Nathan Scott wrote:
> Hi Aurelien,
>
> On 15 November 2011 08:48, Aurelien Jarno <aurelien@aurel32.net> wrote:
>
> >
> > This new version basically replaced the build-depends on
> > =A0libreadline-gplv2-dev
> > by a build-depends on
> > =A0libreadline5-dev | libreadline-gplv2-dev
> >
> > Given libreadline5-dev is not in the archive, the package can'= ;t be
> > built,
>
>
> It seems to work as expected for me (iow, if either of the two are
> installed, it proceeds with using the installed package). =A0I tested = both
> variants on latest unstable, so I'm at a loss to explain the failu= re you're
> seeing - can you forward the build output showing the issue?

The buildd daemons require that the first package of an alternative
exists in the archive, which is not the case there.

*nod* - right you are - I look after another package which (by she= er good luck) got these the other the way around, correctly, and its buildi= ng fine. =A0I'll get a patch out for review, and get a new release uplo= aded soon.

Thanks for the tip, Aurelien!

= cheers.

--
Nathan
--bcaec53af244ada2a304b1c2988f-- From ndsco1@student.monash.edu Tue Nov 15 03:39:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,HTML_MESSAGE autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAF9ddhU040180 for ; Tue, 15 Nov 2011 03:39:40 -0600 X-ASG-Debug-ID: 1321349977-6de9025d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from kenny.its.monash.edu.au (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 85D491D9C776 for ; Tue, 15 Nov 2011 01:39:38 -0800 (PST) Received: from kenny.its.monash.edu.au (kenny.its.monash.edu.au [130.194.13.164]) by cuda.sgi.com with ESMTP id Gvcv0BRuTvYh6QHW for ; Tue, 15 Nov 2011 01:39:38 -0800 (PST) Received: from chapman.its.monash.edu.au ([130.194.13.89]) by kenny.its.monash.edu.au (Sun Java System Messaging Server 6.2-4.03 (built Sep 22 2005)) with ESMTP id <0LUP00HFF4606B80@kenny.its.monash.edu.au> for xfs@oss.sgi.com; Tue, 15 Nov 2011 20:39:36 +1100 (EST) Received: from chapman.its.monash.edu.au (localhost.localdomain [127.0.0.1]) by localhost (Postfix) with SMTP id DCD567E6149 for ; Tue, 15 Nov 2011 20:39:35 +1100 (EST) Received: from mail-yw0-f54.google.com (mail-yw0-f54.google.com [209.85.213.54]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by chapman.its.monash.edu.au (Postfix) with ESMTPS id 05F5A7E6178 for ; Tue, 15 Nov 2011 20:39:34 +1100 (EST) Received: by mail-yw0-f54.google.com with SMTP id 9so4146755ywe.41 for ; Tue, 15 Nov 2011 01:39:34 -0800 (PST) Received: by 10.68.30.129 with SMTP id s1mr57590468pbh.4.1321349974024; Tue, 15 Nov 2011 01:39:34 -0800 (PST) Received: by 10.142.125.16 with HTTP; Tue, 15 Nov 2011 01:39:33 -0800 (PST) Date: Tue, 15 Nov 2011 20:39:33 +1100 From: Nathan Scott X-ASG-Orig-Subj: [patch] xfsprogs - workaround debian build daemon dependency resolution Subject: [patch] xfsprogs - workaround debian build daemon dependency resolution Sender: ndsco1@student.monash.edu To: xfs@oss.sgi.com Message-id: MIME-version: 1.0 Content-type: multipart/alternative; boundary=bcaec520e681d361fc04b1c2c32c X-Google-Sender-Auth: Vif8fDA_p3NTqfbXLZ7Kl-TboVw X-PMX-Authenticated: NONE X-PMX-Version: 5.5.2.365749, Antispam-Engine: 2.6.1.350677, Antispam-Data: 2011.11.15.92714 X-PMX-Spam: Gauge=IIIIIII, Probability=8%, Report='BODYTEXTH_SIZE_10000_LESS 0, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_2000_2999 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, CTYPE_MULTIPART_NO_QUOTE 0, WEBMAIL_SOURCE 0, __ANY_URI 0, __CP_URI_IN_BODY 0, __CT 0, __CTYPE_HAS_BOUNDARY 0, __CTYPE_MULTIPART 0, __CTYPE_MULTIPART_ALT 0, __HAS_HTML 0, __HAS_MSGID 0, __HELO_GMAIL 0, __MIME_HTML 0, __MIME_VERSION 0, __PHISH_SPEAR_HTTP_RECEIVED 0, __RDNS_GMAIL 0, __SANE_MSGID 0, __SUBJ_ALPHA_END 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_NO_WWW 0' X-Barracuda-Connect: kenny.its.monash.edu.au[130.194.13.164] X-Barracuda-Start-Time: 1321349978 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0203 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80311 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --bcaec520e681d361fc04b1c2c32c Content-Type: text/plain; charset=ISO-8859-1 Workaround the Debian buildd dependency handling for libreadline5 library handling Evidently the buildd daemons process depenencies differently to local builds, and expect the first of optional dependencies to be resolved. Flip the ordering to match this dependency. Signed-off-by: Nathan Scott diff --git a/debian/control b/debian/control index f813a43..89f8c6e 100644 --- a/debian/control +++ b/debian/control @@ -4,6 +4,7 @@ Priority: optional Maintainer: XFS Development Team Uploaders: Nathan Scott , Anibal Monsalve Salazar < anibal@debian.org> Build-Depends: uuid-dev, autoconf, debhelper (>= 5), gettext, libtool, libreadline5-dev | libreadline-gplv2-dev, libblkid-dev (>= 2.17) +Build-Depends: uuid-dev, autoconf, debhelper (>= 5), gettext, libtool, libreadline-gplv2-dev | libreadline5-dev, libblkid-dev (>= 2.17) Standards-Version: 3.9.1 Homepage: http://oss.sgi.com/projects/xfs/ --bcaec520e681d361fc04b1c2c32c Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Workaround the Debian buildd dependency handling for libreadline5 libr= ary handling

Evidently the buildd daemons process = depenencies differently to local builds, and
expect the first of = optional dependencies to be resolved. =A0Flip the ordering to match
this dependency.

Signed-off-by: Nathan Scott = <nathans@debian.org>
<= div>


diff --git a/debian/control b/debian= /control
index f813a43..89f8c6e 100644
--- a/debian/control
+++ b/debian/control
@@ -4,6 +4,7 @@ Priority: optional
=A0Maintainer: XFS Development Team <xfs@oss.sgi.com>
=A0Uploaders: Nathan Scott <n= athans@debian.org>, Anibal Monsalve Salazar <anibal@debian.org>
=A0Build-Depends: uuid= -dev, autoconf, debhelper (>=3D 5), gettext, libtool, libreadline5-dev |= libreadline-gplv2-dev, libblkid-dev (>=3D 2.17)
+Build-Depends: uuid-dev, autoconf, debhelper (>=3D 5), gettext, li= btool, libreadline-gplv2-dev | libreadline5-dev, libblkid-dev (>=3D 2.17= )
=A0Standards-Version: 3.9.1


--bcaec520e681d361fc04b1c2c32c-- From michael.monnerie@is.it-management.at Tue Nov 15 04:13:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_45, J_CHICKENPOX_54 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFADu6u041303 for ; Tue, 15 Nov 2011 04:13:56 -0600 X-ASG-Debug-ID: 1321352034-1d8b01e40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6CB0E24F270 for ; Tue, 15 Nov 2011 02:13:54 -0800 (PST) Received: from mailsrv14.zmi.at (mailsrv14.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id 9odG11Gl4h5wCbZR for ; Tue, 15 Nov 2011 02:13:54 -0800 (PST) Received: from mailsrv.i.zmi.at (h081217106033.dyn.cm.kabsi.at [81.217.106.33]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mailsrv2.i.zmi.at", Issuer "power4u.zmi.at" (not verified)) by mailsrv14.zmi.at (Postfix) with ESMTPSA id 1CEC7182242E for ; Tue, 15 Nov 2011 11:13:53 +0100 (CET) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id 280F6E18C15 for ; Tue, 15 Nov 2011 11:13:56 +0100 (CET) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: xfs_repair believes filesystem is mounted Subject: xfs_repair believes filesystem is mounted Date: Tue, 15 Nov 2011 11:13:47 +0100 User-Agent: KMail/1.13.6 (Linux/3.1.0-zmi; KDE/4.6.0; x86_64; ; ) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart2415195.lviGoeDqk2"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201111151113.52228@zmi.at> X-Barracuda-Connect: mailsrv14.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1321352035 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80313 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --nextPart2415195.lviGoeDqk2 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable ****************************************** # xfs_repair -n /dev/xvdc1 xfs_repair: /dev/xvdc1 contains a mounted and writable filesystem fatal error -- couldn't initialize XFS library ****************************************** I did a clean umount, then this error came. So I mounted and umounted=20 again, no way. I tested with # mount|grep xvdc and there's no output, so the filesystem shouldn't be mounted. Am I=20 missing something? I did=20 # xfs_repair -nf /dev/xvdc1 Phase 1 - find and verify superblock... Phase 2 - using internal log - scan filesystem freespace and inode maps... sb_icount 417856, counted 421696 sb_ifree 9530, counted 8156 sb_fdblocks 74472418, counted 245931172 - found root inode chunk Phase 3 - for each AG... - scan (but don't clear) agi unlinked lists... - process known inodes and perform inode discovery... - agno =3D 0 - agno =3D 1 - agno =3D 2 - agno =3D 3 - agno =3D 4 - agno =3D 5 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno =3D 0 - agno =3D 1 - agno =3D 5 - agno =3D 4 - agno =3D 3 - agno =3D 2 No modify flag set, skipping phase 5 Phase 6 - check inode connectivity... - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify link counts... No modify flag set, skipping filesystem flush and exiting. So should I do it without "-n"? =2D-=20 mit freundlichen Gr=C3=BCssen, Michael Monnerie, Ing. BSc it-management Internet Services: Prot=C3=A9ger http://proteger.at [gesprochen: Prot-e-schee] Tel: +43 660 / 415 6531 --nextPart2415195.lviGoeDqk2 Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEABECAAYFAk7CO2AACgkQzhSR9xwSCbSuPwCgzfJUBN5M2dMF/2GutajhelDz SFEAn2YTts2Pd70TSdOt6C0Q7W5q3viO =eE/T -----END PGP SIGNATURE----- --nextPart2415195.lviGoeDqk2-- From michael.monnerie@is.it-management.at Tue Nov 15 05:28:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFBSeUp044537 for ; Tue, 15 Nov 2011 05:28:40 -0600 X-ASG-Debug-ID: 1321356518-0f2c03540000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailsrv14.zmi.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 219588CA645 for ; Tue, 15 Nov 2011 03:28:38 -0800 (PST) Received: from mailsrv14.zmi.at (mailsrv14.zmi.at [212.69.164.54]) by cuda.sgi.com with ESMTP id wzbAkOkjvwUcqSBh for ; Tue, 15 Nov 2011 03:28:38 -0800 (PST) Received: from mailsrv.i.zmi.at (h081217106033.dyn.cm.kabsi.at [81.217.106.33]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mailsrv2.i.zmi.at", Issuer "power4u.zmi.at" (not verified)) by mailsrv14.zmi.at (Postfix) with ESMTPSA id 3CF1D1828D91 for ; Tue, 15 Nov 2011 12:28:36 +0100 (CET) Received: from saturn.localnet (saturn.i.zmi.at [10.72.27.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mailsrv.i.zmi.at (Postfix) with ESMTPSA id 4EB51E18C15 for ; Tue, 15 Nov 2011 12:28:39 +0100 (CET) From: Michael Monnerie Organization: it-management http://it-management.at To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair believes filesystem is mounted Subject: Re: xfs_repair believes filesystem is mounted Date: Tue, 15 Nov 2011 12:28:34 +0100 User-Agent: KMail/1.13.6 (Linux/3.1.0-zmi; KDE/4.6.0; x86_64; ; ) References: <201111151113.52228@zmi.at> In-Reply-To: <201111151113.52228@zmi.at> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart1409587.T7zkh2aZQY"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201111151228.35360@zmi.at> X-Barracuda-Connect: mailsrv14.zmi.at[212.69.164.54] X-Barracuda-Start-Time: 1321356519 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0269 1.0000 -1.8468 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.85 X-Barracuda-Spam-Status: No, SCORE=-1.85 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80318 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --nextPart1409587.T7zkh2aZQY Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On Dienstag, 15. November 2011 Michael Monnerie wrote: > xfs_repair: /dev/xvdc1 contains a mounted and writable filesystem Ha, got it: Got a bind mount on that fs. Sorry for the noise. =2D-=20 mit freundlichen Gr=C3=BCssen, Michael Monnerie, Ing. BSc it-management Internet Services: Prot=C3=A9ger http://proteger.at [gesprochen: Prot-e-schee] Tel: +43 660 / 415 6531 --nextPart1409587.T7zkh2aZQY Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) iEYEABECAAYFAk7CTOMACgkQzhSR9xwSCbRFjwCgrUwVvWISSY95EWZrD7pH6VIt BsYAn3dtf1WxYukBAHsnKIpPKGHsUsev =j8/T -----END PGP SIGNATURE----- --nextPart1409587.T7zkh2aZQY-- From bpm@sgi.com Tue Nov 15 12:20:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFIKwsP058343 for ; Tue, 15 Nov 2011 12:20:58 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id B0A84AC003; Tue, 15 Nov 2011 10:20:54 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 39260431F74; Tue, 15 Nov 2011 12:21:13 -0600 (CST) Date: Tue, 15 Nov 2011 12:21:13 -0600 From: Ben Myers To: WuBo Cc: linux-fsdevel@vger.kernel.org, Linux Btrfs , xfs@oss.sgi.com Subject: Re: [PATCH 2/3] xfstests 265: add a prealloc and reserve test Message-ID: <20111115182113.GD29840@sgi.com> References: <4EB20505.7070005@cn.fujitsu.com> <4EB205CC.6010509@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4EB205CC.6010509@cn.fujitsu.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Wu Bo, On Thu, Nov 03, 2011 at 11:09:00AM +0800, WuBo wrote: > This test is for preallocation test. If the disk is full, just with a prealloc > file has some free space that prealloc early. We need to check whether the write > to the free space is success or not. > > Signed-off-by: Wu Bo This test is failing for me because I don't have fallocate installed. I suggest the test could to be changed to check for binaries it uses, possibly the version of those binaries, and then not run unless the right ones are installed. But the best I can do right now is make a note of it. Just a heads up. ;) Regards, Ben From BATV+d59cd714167caaa18e35+3005+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 15 13:08:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFJ8Pam061623 for ; Tue, 15 Nov 2011 13:08:25 -0600 X-ASG-Debug-ID: 1321384103-1feb033e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 08F891F36987; Tue, 15 Nov 2011 11:08:23 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Qp83XqcRc6oqXAwY; Tue, 15 Nov 2011 11:08:23 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQOMn-00040b-8a; Tue, 15 Nov 2011 19:08:21 +0000 Date: Tue, 15 Nov 2011 14:08:21 -0500 From: Christoph Hellwig To: Ben Myers Cc: WuBo , linux-fsdevel@vger.kernel.org, Linux Btrfs , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/3] xfstests 265: add a prealloc and reserve test Subject: Re: [PATCH 2/3] xfstests 265: add a prealloc and reserve test Message-ID: <20111115190821.GA15331@infradead.org> References: <4EB20505.7070005@cn.fujitsu.com> <4EB205CC.6010509@cn.fujitsu.com> <20111115182113.GD29840@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111115182113.GD29840@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321384104 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0015 1.0000 -2.0113 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.91 X-Barracuda-Spam-Status: No, SCORE=-1.91 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80340 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 15, 2011 at 12:21:13PM -0600, Ben Myers wrote: > Hi Wu Bo, > > On Thu, Nov 03, 2011 at 11:09:00AM +0800, WuBo wrote: > > This test is for preallocation test. If the disk is full, just with a prealloc > > file has some free space that prealloc early. We need to check whether the write > > to the free space is success or not. > > > > Signed-off-by: Wu Bo > > This test is failing for me because I don't have fallocate installed. I > suggest the test could to be changed to check for binaries it uses, > possibly the version of those binaries, and then not run unless the > right ones are installed. But the best I can do right now is make a > note of it. It might be even better to just use the xfs_io falloc command as we generally expect an uptodate xfs_io for use with xfstests. From david@fromorbit.com Tue Nov 15 14:02:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFK2tkE066850 for ; Tue, 15 Nov 2011 14:02:56 -0600 X-ASG-Debug-ID: 1321387369-360b034b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 921F11268CD2 for ; Tue, 15 Nov 2011 12:02:49 -0800 (PST) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id aOXunNfgXKN8gU62 for ; Tue, 15 Nov 2011 12:02:49 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAATFwk55LIil/2dsb2JhbABDqW2BBoFyAQEFOhwjEAgDDgouFCUDIRPBABKJfwSUMYh/iRA Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail04.adl6.internode.on.net with ESMTP; 16 Nov 2011 06:32:47 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RQPDS-0007Qm-Aa; Wed, 16 Nov 2011 07:02:46 +1100 Date: Wed, 16 Nov 2011 07:02:46 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_getbmap assert Subject: Re: xfs_getbmap assert Message-ID: <20111115200246.GT5534@dastard> References: <20111107103037.GA16213@infradead.org> <20111107201505.GE5534@dastard> <20111114200554.GA21487@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111114200554.GA21487@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1321387374 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2832 1.0000 -0.4212 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.42 X-Barracuda-Spam-Status: No, SCORE=-0.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80343 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 14, 2011 at 03:05:54PM -0500, Christoph Hellwig wrote: > On Tue, Nov 08, 2011 at 07:15:05AM +1100, Dave Chinner wrote: > > Can you see if that is the case that is being triggered? > > I've tried to reproduce the issue with additional debugging for almost > a week now, but I haven't been able to hit the assert again yet. Which > is strange given how often I managed to hit it just before. Sounds exactly like the problems I've had trying to track this down - as soon as you go looking for it, it disappears... :/ Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+d59cd714167caaa18e35+3005+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 15 14:07:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFK7UnF067296 for ; Tue, 15 Nov 2011 14:07:31 -0600 X-ASG-Debug-ID: 1321387649-36ff002c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3D8511D0D940 for ; Tue, 15 Nov 2011 12:07:29 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 3D6HB7OyCjjPcAHB for ; Tue, 15 Nov 2011 12:07:29 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQPI1-0006PQ-Em; Tue, 15 Nov 2011 20:07:29 +0000 Date: Tue, 15 Nov 2011 15:07:29 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_getbmap assert Subject: Re: xfs_getbmap assert Message-ID: <20111115200729.GA21201@infradead.org> References: <20111107103037.GA16213@infradead.org> <20111107201505.GE5534@dastard> <20111114200554.GA21487@infradead.org> <20111115200246.GT5534@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111115200246.GT5534@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321387650 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0195 1.0000 -1.8940 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.79 X-Barracuda-Spam-Status: No, SCORE=-1.79 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80344 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 16, 2011 at 07:02:46AM +1100, Dave Chinner wrote: > On Mon, Nov 14, 2011 at 03:05:54PM -0500, Christoph Hellwig wrote: > > On Tue, Nov 08, 2011 at 07:15:05AM +1100, Dave Chinner wrote: > > > Can you see if that is the case that is being triggered? > > > > I've tried to reproduce the issue with additional debugging for almost > > a week now, but I haven't been able to hit the assert again yet. Which > > is strange given how often I managed to hit it just before. > > Sounds exactly like the problems I've had trying to track this down > - as soon as you go looking for it, it disappears... :/ I've actually reproduced it once today - of course that was running a kernel without the debugging patch in it.. From BATV+d59cd714167caaa18e35+3005+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 15 14:14:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFKESkc067874 for ; Tue, 15 Nov 2011 14:14:29 -0600 X-ASG-Debug-ID: 1321388066-1ecb005e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4452524FCAB for ; Tue, 15 Nov 2011 12:14:26 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id bkYmzt9uGHpfVKuP for ; Tue, 15 Nov 2011 12:14:26 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQPOk-0007RK-Hb for xfs@oss.sgi.com; Tue, 15 Nov 2011 20:14:26 +0000 Message-Id: <20111115201426.498870090@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Tue, 15 Nov 2011 15:14:08 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/5] [PATCH] xfs: fix attr2 vs large data fork assert Subject: [PATCH 1/5] [PATCH] xfs: fix attr2 vs large data fork assert References: <20111115201407.038216766@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-fix-attr-oops X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321388067 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80344 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean With Dmitry fsstress updates I've seen very reproducible crashes in xfs_attr_shortform_remove because xfs_attr_shortform_bytesfit claims that the attributes would not fit inline into the inode after removing an attribute. It turns out that we were operating on an inode with lots of delalloc extents, and thus an if_bytes values for the data fork that is larger than biggest possible on-disk storage for it which utterly confuses the code near the end of xfs_attr_shortform_bytesfit. Fix this by always allowing the current attribute fork, like we already do for the attr1 format, given that delalloc conversion will take care for moving either the data or attribute area out of line if it doesn't fit at that point - or making the point moot by merging extents at this point. Also document the function better, and clean up some lose bits. Signed-off-by: Christoph Hellwig Index: linux-2.6/fs/xfs/xfs_attr_leaf.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_attr_leaf.c 2011-11-04 13:46:59.481655134 +0100 +++ linux-2.6/fs/xfs/xfs_attr_leaf.c 2011-11-04 15:58:06.480155275 +0100 @@ -110,6 +110,7 @@ xfs_attr_namesp_match(int arg_flags, int /* * Query whether the requested number of additional bytes of extended * attribute space will be able to fit inline. + * * Returns zero if not, else the di_forkoff fork offset to be used in the * literal area for attribute data once the new bytes have been added. * @@ -136,11 +137,26 @@ xfs_attr_shortform_bytesfit(xfs_inode_t return (offset >= minforkoff) ? minforkoff : 0; } - if (!(mp->m_flags & XFS_MOUNT_ATTR2)) { - if (bytes <= XFS_IFORK_ASIZE(dp)) - return dp->i_d.di_forkoff; + /* + * If the requested numbers of bytes is smaller or equal to the + * current attribute fork size we can always proceed. + * + * Note that if_bytes in the data fork might actually be larger than + * the current data fork size is due to delalloc extents. In that + * case either the extent count will go down when they are converted + * to ral extents, or the delalloc conversion will take care of the + * literal area rebalancing. + */ + if (bytes <= XFS_IFORK_ASIZE(dp)) + return dp->i_d.di_forkoff; + + /* + * For attr2 we can try to move the forkoff if there is space in the + * literal area, but for the old format we are done if there is no + * space in the fixes attribute fork. + */ + if (!(mp->m_flags & XFS_MOUNT_ATTR2)) return 0; - } dsize = dp->i_df.if_bytes; @@ -157,10 +173,9 @@ xfs_attr_shortform_bytesfit(xfs_inode_t xfs_default_attroffset(dp)) dsize = XFS_BMDR_SPACE_CALC(MINDBTPTRS); break; - case XFS_DINODE_FMT_BTREE: /* - * If have data btree then keep forkoff if we have one, + * If have a data btree then keep forkoff if we have one, * otherwise we are adding a new attr, so then we set * minforkoff to where the btree root can finish so we have * plenty of room for attrs @@ -168,10 +183,9 @@ xfs_attr_shortform_bytesfit(xfs_inode_t if (dp->i_d.di_forkoff) { if (offset < dp->i_d.di_forkoff) return 0; - else - return dp->i_d.di_forkoff; - } else - dsize = XFS_BMAP_BROOT_SPACE(dp->i_df.if_broot); + return dp->i_d.di_forkoff; + } + dsize = XFS_BMAP_BROOT_SPACE(dp->i_df.if_broot); break; } @@ -186,10 +200,10 @@ xfs_attr_shortform_bytesfit(xfs_inode_t maxforkoff = XFS_LITINO(mp) - XFS_BMDR_SPACE_CALC(MINABTPTRS); maxforkoff = maxforkoff >> 3; /* rounded down */ - if (offset >= minforkoff && offset < maxforkoff) - return offset; if (offset >= maxforkoff) return maxforkoff; + if (offset >= minforkoff) + return offset; return 0; } From BATV+d59cd714167caaa18e35+3005+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 15 14:14:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFKETlk067878 for ; Tue, 15 Nov 2011 14:14:29 -0600 X-ASG-Debug-ID: 1321388066-6fca01e20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 73C981303890 for ; Tue, 15 Nov 2011 12:14:27 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id HApNBFNb78k6ERaT for ; Tue, 15 Nov 2011 12:14:27 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQPOk-0007Qk-Bo for xfs@oss.sgi.com; Tue, 15 Nov 2011 20:14:26 +0000 Message-Id: <20111115201407.038216766@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Tue, 15 Nov 2011 15:14:07 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/5] for-3.2 queue Subject: [PATCH 0/5] for-3.2 queue X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321388067 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0199 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80345 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean With more reports showing up that the VFS writeback code is not able to write back our size updates dirtied from the I/O completion handler in reasonable time I think it's time to move to logging all file size updates ASAP, that is for 3.2 and maybe after a reasonable testing period even -stable. This series has been sent out a few times, and I've been doing QA on it for weeks. Note that I haven't implemented the log space reservations from ->writepage - see the actual patch for the rationale. Also throw in the fork offset fix as it's an user-triggerable oops. From BATV+d59cd714167caaa18e35+3005+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 15 14:14:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFKESaS067876 for ; Tue, 15 Nov 2011 14:14:29 -0600 X-ASG-Debug-ID: 1321388067-0dfe00ee0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A84F324FCAF for ; Tue, 15 Nov 2011 12:14:27 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id F7B4s6ssfFZEfZov for ; Tue, 15 Nov 2011 12:14:27 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQPOl-0007Ss-4S for xfs@oss.sgi.com; Tue, 15 Nov 2011 20:14:27 +0000 Message-Id: <20111115201427.104680606@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Tue, 15 Nov 2011 15:14:11 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/5] xfs: log file size updates as part of unwritten extent conversion Subject: [PATCH 4/5] xfs: log file size updates as part of unwritten extent conversion References: <20111115201407.038216766@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-piggy-back-unwritten-size-updates X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321388067 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80344 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean If we convert and unwritten extent past the current i_size log the size update as part of the extent manipulation transactions instead of doing an unlogged metadata update later. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_aops.c | 11 ++++++----- fs/xfs/xfs_iomap.c | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 6 deletions(-) Index: linux-2.6/fs/xfs/xfs_iomap.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_iomap.c 2011-11-08 08:02:50.234386118 +0100 +++ linux-2.6/fs/xfs/xfs_iomap.c 2011-11-08 08:14:04.319888994 +0100 @@ -31,6 +31,7 @@ #include "xfs_ialloc_btree.h" #include "xfs_dinode.h" #include "xfs_inode.h" +#include "xfs_inode_item.h" #include "xfs_btree.h" #include "xfs_bmap.h" #include "xfs_rtalloc.h" @@ -645,6 +646,7 @@ xfs_iomap_write_unwritten( xfs_trans_t *tp; xfs_bmbt_irec_t imap; xfs_bmap_free_t free_list; + xfs_fsize_t i_size; uint resblks; int committed; int error; @@ -705,7 +707,22 @@ xfs_iomap_write_unwritten( if (error) goto error_on_bmapi_transaction; - error = xfs_bmap_finish(&(tp), &(free_list), &committed); + /* + * Log the updated inode size as we go. We have to be careful + * to only log it up to the actual write offset if it is + * halfway into a block. + */ + i_size = XFS_FSB_TO_B(mp, offset_fsb + count_fsb); + if (i_size > offset + count) + i_size = offset + count; + + i_size = xfs_new_eof(ip, i_size); + if (i_size) { + ip->i_d.di_size = i_size; + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + } + + error = xfs_bmap_finish(&tp, &free_list, &committed); if (error) goto error_on_bmapi_transaction; Index: linux-2.6/fs/xfs/xfs_aops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-08 08:12:31.586400976 +0100 +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-08 08:14:04.319888994 +0100 @@ -183,13 +183,14 @@ xfs_end_io( ioend->io_error = -error; goto done; } + } else { + /* + * We might have to update the on-disk file size after + * extending writes. + */ + xfs_setfilesize(ioend); } - /* - * We might have to update the on-disk file size after extending - * writes. - */ - xfs_setfilesize(ioend); done: xfs_destroy_ioend(ioend); } From BATV+d59cd714167caaa18e35+3005+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 15 14:14:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFKETj5067888 for ; Tue, 15 Nov 2011 14:14:29 -0600 X-ASG-Debug-ID: 1321388067-2461000f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F0ADA24FCB1 for ; Tue, 15 Nov 2011 12:14:27 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 3VltyqxHsPtZmcRL for ; Tue, 15 Nov 2011 12:14:27 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQPOl-0007TO-BR for xfs@oss.sgi.com; Tue, 15 Nov 2011 20:14:27 +0000 Message-Id: <20111115201427.299361653@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Tue, 15 Nov 2011 15:14:12 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 5/5] xfs: log file size updates at I/O completion time Subject: [PATCH 5/5] xfs: log file size updates at I/O completion time References: <20111115201407.038216766@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-log-file-size-updates X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321388067 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80344 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Do not use unlogged metadata updates and the VFS dirty bit for updating the file size after writeback. In addition to causing various problems with updates getting delayed for far too log this also drags in the unscalable VFS dirty tracking, and is one of the few remaining unlogged metadata updates. Note that we allocate a new transaction from the I/O completion handler. While this sounds fairly dangerous it isn't an issue in practice given that any appending write alreay had to start a transaction in writepages to allocate blocks, and we'll start throtteling there if we run low on log space or memory. We could still occasionally stall in the completion handler, but given that we have per-filesystems workqueues for the I/O completions, and completions that do not have to either convert unwritten extents or update the file size are processed from interrupt context we do not have to worry about this stalling a system to death. In addition to that implementing log reservations from ->writepage that are only released by a different thread requires a lot of work, and even with that wasn't quite doable in a deadlock-free manner. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_aops.c | 49 ++++++++++++++++++++++++++++--------------------- fs/xfs/xfs_file.c | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 22 deletions(-) Index: linux-2.6/fs/xfs/xfs_aops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-15 18:43:04.183113001 +0100 +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-15 18:43:05.059779662 +0100 @@ -26,6 +26,7 @@ #include "xfs_bmap_btree.h" #include "xfs_dinode.h" #include "xfs_inode.h" +#include "xfs_inode_item.h" #include "xfs_alloc.h" #include "xfs_error.h" #include "xfs_rw.h" @@ -114,22 +115,39 @@ static inline bool xfs_ioend_is_append(s * not extend all the way to the valid file size then restrict this update to * the end of the write. */ -STATIC void +STATIC int xfs_setfilesize( struct xfs_ioend *ioend) { struct xfs_inode *ip = XFS_I(ioend->io_inode); + struct xfs_mount *mp = ip->i_mount; + struct xfs_trans *tp; xfs_fsize_t isize; + int error = 0; xfs_ilock(ip, XFS_ILOCK_EXCL); isize = xfs_new_eof(ip, ioend->io_offset + ioend->io_size); - if (isize) { - trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size); - ip->i_d.di_size = isize; - xfs_mark_inode_dirty(ip); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + + if (!isize) + return 0; + + trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size); + + tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS); + error = xfs_trans_reserve(tp, 0, XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0); + if (error) { + xfs_trans_cancel(tp, 0); + return error; } - xfs_iunlock(ip, XFS_ILOCK_EXCL); + xfs_ilock(ip, XFS_ILOCK_EXCL); + + ip->i_d.di_size = isize; + xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + + return xfs_trans_commit(tp, 0); } /* @@ -183,12 +201,10 @@ xfs_end_io( ioend->io_error = -error; goto done; } - } else { - /* - * We might have to update the on-disk file size after - * extending writes. - */ - xfs_setfilesize(ioend); + } else if (xfs_ioend_is_append(ioend)) { + error = xfs_setfilesize(ioend); + if (error) + ioend->io_error = error; } done: @@ -345,19 +361,10 @@ xfs_submit_ioend_bio( xfs_ioend_t *ioend, struct bio *bio) { - struct xfs_inode *ip = XFS_I(ioend->io_inode); - atomic_inc(&ioend->io_remaining); bio->bi_private = ioend; bio->bi_end_io = xfs_end_bio; - /* - * If the I/O is beyond EOF we mark the inode dirty immediately - * but don't update the inode size until I/O completion. - */ - if (xfs_new_eof(ip, ioend->io_offset + ioend->io_size)) - xfs_mark_inode_dirty(ip); - submit_bio(wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE, bio); } Index: linux-2.6/fs/xfs/xfs_file.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_file.c 2011-11-15 10:03:17.539965975 +0100 +++ linux-2.6/fs/xfs/xfs_file.c 2011-11-15 18:43:05.059779662 +0100 @@ -436,6 +436,36 @@ xfs_aio_write_isize_update( } } +STATIC int +xfs_aio_write_isize_reset( + struct xfs_inode *ip) +{ + struct xfs_mount *mp = ip->i_mount; + struct xfs_trans *tp; + int error = 0; + + tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS); + error = xfs_trans_reserve(tp, 0, XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0); + if (error) { + xfs_trans_cancel(tp, 0); + return error; + } + + xfs_ilock(ip, XFS_ILOCK_EXCL); + + if (ip->i_d.di_size <= ip->i_size) { + xfs_iunlock(ip, XFS_ILOCK_EXCL); + xfs_trans_cancel(tp, 0); + return 0; + } + + ip->i_d.di_size = ip->i_size; + xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + + return xfs_trans_commit(tp, 0); +} + /* * If this was a direct or synchronous I/O that failed (such as ENOSPC) then * part of the I/O may have been written to disk before the error occurred. In @@ -447,14 +477,18 @@ xfs_aio_write_newsize_update( struct xfs_inode *ip, xfs_fsize_t new_size) { + bool reset = false; if (new_size == ip->i_new_size) { xfs_rw_ilock(ip, XFS_ILOCK_EXCL); if (new_size == ip->i_new_size) ip->i_new_size = 0; if (ip->i_d.di_size > ip->i_size) - ip->i_d.di_size = ip->i_size; + reset = true; xfs_rw_iunlock(ip, XFS_ILOCK_EXCL); } + + if (reset) + xfs_aio_write_isize_reset(ip); } /* From BATV+d59cd714167caaa18e35+3005+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 15 14:14:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_74 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFKET2b067894 for ; Tue, 15 Nov 2011 14:14:29 -0600 X-ASG-Debug-ID: 1321388066-0dfa00e00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5AAB424FCAE for ; Tue, 15 Nov 2011 12:14:27 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id v62iOBojiU33oFw9 for ; Tue, 15 Nov 2011 12:14:27 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQPOk-0007Rq-Nh for xfs@oss.sgi.com; Tue, 15 Nov 2011 20:14:26 +0000 Message-Id: <20111115201426.686729205@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Tue, 15 Nov 2011 15:14:09 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Subject: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues References: <20111115201407.038216766@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-split-workqueues X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321388067 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80344 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean commit 77d7a0c "xfs: Non-blocking inode locking in IO completion" introduced a trylocked and defer scheme in xfs_setfilesize to avoid deadlocks when on XFS filesystem is used ontop of another using the loop device, and we fsync in the loop filesystem. Now that we have the cheap enough concurrency managed workqueues, we can create per-filesystem instead of global workqueues and remove this scheme again, given that it has the potential of delaying size updates and is not helpful once we start to log the inode size. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_aops.c | 39 ++++++++++----------------------------- fs/xfs/xfs_aops.h | 2 -- fs/xfs/xfs_buf.c | 17 ----------------- fs/xfs/xfs_mount.h | 3 +++ fs/xfs/xfs_super.c | 43 ++++++++++++++++++++++++++++++++++++++++++- 5 files changed, 55 insertions(+), 49 deletions(-) Index: linux-2.6/fs/xfs/xfs_aops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-12 15:37:28.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-15 09:14:16.856650210 +0100 @@ -131,21 +131,15 @@ static inline bool xfs_ioend_is_append(s * will be the intended file size until i_size is updated. If this write does * not extend all the way to the valid file size then restrict this update to * the end of the write. - * - * This function does not block as blocking on the inode lock in IO completion - * can lead to IO completion order dependency deadlocks.. If it can't get the - * inode ilock it will return EAGAIN. Callers must handle this. */ -STATIC int +STATIC void xfs_setfilesize( - xfs_ioend_t *ioend) + struct xfs_ioend *ioend) { - xfs_inode_t *ip = XFS_I(ioend->io_inode); + struct xfs_inode *ip = XFS_I(ioend->io_inode); xfs_fsize_t isize; - if (!xfs_ilock_nowait(ip, XFS_ILOCK_EXCL)) - return EAGAIN; - + xfs_ilock(ip, XFS_ILOCK_EXCL); isize = xfs_ioend_new_eof(ioend); if (isize) { trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size); @@ -154,7 +148,6 @@ xfs_setfilesize( } xfs_iunlock(ip, XFS_ILOCK_EXCL); - return 0; } /* @@ -168,10 +161,12 @@ xfs_finish_ioend( struct xfs_ioend *ioend) { if (atomic_dec_and_test(&ioend->io_remaining)) { + struct xfs_mount *mp = XFS_I(ioend->io_inode)->i_mount; + if (ioend->io_type == IO_UNWRITTEN) - queue_work(xfsconvertd_workqueue, &ioend->io_work); + queue_work(mp->m_unwritten_workqueue, &ioend->io_work); else if (xfs_ioend_is_append(ioend)) - queue_work(xfsdatad_workqueue, &ioend->io_work); + queue_work(mp->m_data_workqueue, &ioend->io_work); else xfs_destroy_ioend(ioend); } @@ -212,23 +207,9 @@ xfs_end_io( * We might have to update the on-disk file size after extending * writes. */ - error = xfs_setfilesize(ioend); - ASSERT(!error || error == EAGAIN); - + xfs_setfilesize(ioend); done: - /* - * If we didn't complete processing of the ioend, requeue it to the - * tail of the workqueue for another attempt later. Otherwise destroy - * it. - */ - if (error == EAGAIN) { - atomic_inc(&ioend->io_remaining); - xfs_finish_ioend(ioend); - /* ensure we don't spin on blocked ioends */ - delay(1); - } else { - xfs_destroy_ioend(ioend); - } + xfs_destroy_ioend(ioend); } /* Index: linux-2.6/fs/xfs/xfs_aops.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_aops.h 2011-11-10 16:50:40.751797337 +0100 +++ linux-2.6/fs/xfs/xfs_aops.h 2011-11-15 09:14:16.856650210 +0100 @@ -18,8 +18,6 @@ #ifndef __XFS_AOPS_H__ #define __XFS_AOPS_H__ -extern struct workqueue_struct *xfsdatad_workqueue; -extern struct workqueue_struct *xfsconvertd_workqueue; extern mempool_t *xfs_ioend_pool; /* Index: linux-2.6/fs/xfs/xfs_buf.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_buf.c 2011-11-10 16:50:40.763795564 +0100 +++ linux-2.6/fs/xfs/xfs_buf.c 2011-11-15 09:14:16.859983547 +0100 @@ -45,8 +45,6 @@ static kmem_zone_t *xfs_buf_zone; STATIC int xfsbufd(void *); static struct workqueue_struct *xfslogd_workqueue; -struct workqueue_struct *xfsdatad_workqueue; -struct workqueue_struct *xfsconvertd_workqueue; #ifdef XFS_BUF_LOCK_TRACKING # define XB_SET_OWNER(bp) ((bp)->b_last_holder = current->pid) @@ -1797,21 +1795,8 @@ xfs_buf_init(void) if (!xfslogd_workqueue) goto out_free_buf_zone; - xfsdatad_workqueue = alloc_workqueue("xfsdatad", WQ_MEM_RECLAIM, 1); - if (!xfsdatad_workqueue) - goto out_destroy_xfslogd_workqueue; - - xfsconvertd_workqueue = alloc_workqueue("xfsconvertd", - WQ_MEM_RECLAIM, 1); - if (!xfsconvertd_workqueue) - goto out_destroy_xfsdatad_workqueue; - return 0; - out_destroy_xfsdatad_workqueue: - destroy_workqueue(xfsdatad_workqueue); - out_destroy_xfslogd_workqueue: - destroy_workqueue(xfslogd_workqueue); out_free_buf_zone: kmem_zone_destroy(xfs_buf_zone); out: @@ -1821,8 +1806,6 @@ xfs_buf_init(void) void xfs_buf_terminate(void) { - destroy_workqueue(xfsconvertd_workqueue); - destroy_workqueue(xfsdatad_workqueue); destroy_workqueue(xfslogd_workqueue); kmem_zone_destroy(xfs_buf_zone); } Index: linux-2.6/fs/xfs/xfs_super.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_super.c 2011-11-10 16:50:40.771795378 +0100 +++ linux-2.6/fs/xfs/xfs_super.c 2011-11-15 09:17:13.763315819 +0100 @@ -769,6 +769,42 @@ xfs_setup_devices( return 0; } +STATIC int +xfs_init_mount_workqueues( + struct xfs_mount *mp) +{ + snprintf(mp->m_data_workqueue_name, XFS_WQ_NAME_LEN, + "xfs-data/%s", mp->m_fsname); + mp->m_data_workqueue = + alloc_workqueue(mp->m_data_workqueue_name, WQ_MEM_RECLAIM, 1); + if (!mp->m_data_workqueue) + goto out; + + snprintf(mp->m_unwritten_workqueue_name, XFS_WQ_NAME_LEN, + "xfs-conv/%s", mp->m_fsname); + mp->m_unwritten_workqueue = + alloc_workqueue(mp->m_unwritten_workqueue_name, + WQ_MEM_RECLAIM, 1); + if (!mp->m_unwritten_workqueue) + goto out_destroy_data_iodone_queue; + + return 0; + +out_destroy_data_iodone_queue: + destroy_workqueue(mp->m_data_workqueue); +out: + return -ENOMEM; +#undef XFS_WQ_NAME_LEN +} + +STATIC void +xfs_destroy_mount_workqueues( + struct xfs_mount *mp) +{ + destroy_workqueue(mp->m_data_workqueue); + destroy_workqueue(mp->m_unwritten_workqueue); +} + /* Catch misguided souls that try to use this interface on XFS */ STATIC struct inode * xfs_fs_alloc_inode( @@ -1020,6 +1056,7 @@ xfs_fs_put_super( xfs_unmountfs(mp); xfs_freesb(mp); xfs_icsb_destroy_counters(mp); + xfs_destroy_mount_workqueues(mp); xfs_close_devices(mp); xfs_free_fsname(mp); kfree(mp); @@ -1353,10 +1390,14 @@ xfs_fs_fill_super( if (error) goto out_free_fsname; - error = xfs_icsb_init_counters(mp); + error = xfs_init_mount_workqueues(mp); if (error) goto out_close_devices; + error = xfs_icsb_init_counters(mp); + if (error) + goto out_destroy_workqueues; + error = xfs_readsb(mp, flags); if (error) goto out_destroy_counters; @@ -1419,6 +1460,8 @@ xfs_fs_fill_super( xfs_freesb(mp); out_destroy_counters: xfs_icsb_destroy_counters(mp); +out_destroy_workqueues: + xfs_destroy_mount_workqueues(mp); out_close_devices: xfs_close_devices(mp); out_free_fsname: Index: linux-2.6/fs/xfs/xfs_mount.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_mount.h 2011-11-10 16:50:40.787796774 +0100 +++ linux-2.6/fs/xfs/xfs_mount.h 2011-11-15 09:15:25.053316473 +0100 @@ -211,6 +211,12 @@ typedef struct xfs_mount { struct shrinker m_inode_shrink; /* inode reclaim shrinker */ int64_t m_low_space[XFS_LOWSP_MAX]; /* low free space thresholds */ + + struct workqueue_struct *m_data_workqueue; + struct workqueue_struct *m_unwritten_workqueue; +#define XFS_WQ_NAME_LEN 512 + char m_data_workqueue_name[XFS_WQ_NAME_LEN]; + char m_unwritten_workqueue_name[XFS_WQ_NAME_LEN]; } xfs_mount_t; /* From BATV+d59cd714167caaa18e35+3005+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 15 14:14:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_35 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFKET8D067895 for ; Tue, 15 Nov 2011 14:14:29 -0600 X-ASG-Debug-ID: 1321388067-04cc00f40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C7959135D2EB for ; Tue, 15 Nov 2011 12:14:27 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id sUaMDeSF074gkONk for ; Tue, 15 Nov 2011 12:14:27 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQPOk-0007SM-Tc for xfs@oss.sgi.com; Tue, 15 Nov 2011 20:14:27 +0000 Message-Id: <20111115201426.862605739@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Tue, 15 Nov 2011 15:14:10 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/5] xfs: do not require an ioend for new EOF calculation Subject: [PATCH 3/5] xfs: do not require an ioend for new EOF calculation References: <20111115201407.038216766@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-simplify-eof-calculation X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321388067 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80345 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Replace xfs_ioend_new_eof with a new inline xfs_new_eof helper that doesn't require and ioend, and is available also outside of xfs_aops.c. Also make the code a bit more clear by using a normal if statement instead of a slightly misleading MIN(). Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_aops.c | 26 +++++--------------------- fs/xfs/xfs_inode.h | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 21 deletions(-) Index: linux-2.6/fs/xfs/xfs_aops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-08 08:11:44.891887054 +0100 +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-08 08:12:31.586400976 +0100 @@ -99,24 +99,6 @@ xfs_destroy_ioend( } /* - * If the end of the current ioend is beyond the current EOF, - * return the new EOF value, otherwise zero. - */ -STATIC xfs_fsize_t -xfs_ioend_new_eof( - xfs_ioend_t *ioend) -{ - xfs_inode_t *ip = XFS_I(ioend->io_inode); - xfs_fsize_t isize; - xfs_fsize_t bsize; - - bsize = ioend->io_offset + ioend->io_size; - isize = MAX(ip->i_size, ip->i_new_size); - isize = MIN(isize, bsize); - return isize > ip->i_d.di_size ? isize : 0; -} - -/* * Fast and loose check if this write could update the on-disk inode size. */ static inline bool xfs_ioend_is_append(struct xfs_ioend *ioend) @@ -140,7 +122,7 @@ xfs_setfilesize( xfs_fsize_t isize; xfs_ilock(ip, XFS_ILOCK_EXCL); - isize = xfs_ioend_new_eof(ioend); + isize = xfs_new_eof(ip, ioend->io_offset + ioend->io_size); if (isize) { trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size); ip->i_d.di_size = isize; @@ -362,6 +344,8 @@ xfs_submit_ioend_bio( xfs_ioend_t *ioend, struct bio *bio) { + struct xfs_inode *ip = XFS_I(ioend->io_inode); + atomic_inc(&ioend->io_remaining); bio->bi_private = ioend; bio->bi_end_io = xfs_end_bio; @@ -370,8 +354,8 @@ xfs_submit_ioend_bio( * If the I/O is beyond EOF we mark the inode dirty immediately * but don't update the inode size until I/O completion. */ - if (xfs_ioend_new_eof(ioend)) - xfs_mark_inode_dirty(XFS_I(ioend->io_inode)); + if (xfs_new_eof(ip, ioend->io_offset + ioend->io_size)) + xfs_mark_inode_dirty(ip); submit_bio(wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE, bio); } Index: linux-2.6/fs/xfs/xfs_inode.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_inode.h 2011-11-08 08:02:50.000000000 +0100 +++ linux-2.6/fs/xfs/xfs_inode.h 2011-11-08 08:13:01.290386996 +0100 @@ -278,6 +278,20 @@ static inline struct inode *VFS_I(struct } /* + * If this I/O goes past the on-disk inode size update it unless it would + * be past the current in-core or write in-progress inode size. + */ +static inline xfs_fsize_t +xfs_new_eof(struct xfs_inode *ip, xfs_fsize_t new_size) +{ + xfs_fsize_t i_size = max(ip->i_size, ip->i_new_size); + + if (new_size > i_size) + new_size = i_size; + return new_size > ip->i_d.di_size ? new_size : 0; +} + +/* * i_flags helper functions */ static inline void From bpm@sgi.com Tue Nov 15 14:23:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFKN2Q4069418; Tue, 15 Nov 2011 14:23:03 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id DAA3E304089; Tue, 15 Nov 2011 12:22:55 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id CBB16431F74; Tue, 15 Nov 2011 14:23:14 -0600 (CST) Date: Tue, 15 Nov 2011 14:23:14 -0600 From: Ben Myers To: Mitsuo Hayasaka Cc: Alex Elder , Christoph Hellwig , yrl.pp-manager.tt@hitachi.com, linux-kernel@vger.kernel.org, xfs@oss.sgi.com, xfs-masters@oss.sgi.com Subject: Re: [PATCH] [BUGFIX] xfs: use doalloc flag in xfs_qm_dqattach_one() Message-ID: <20111115202314.GE29840@sgi.com> References: <20111110013310.3408.41745.stgit@ltc219.sdl.hitachi.co.jp> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111110013310.3408.41745.stgit@ltc219.sdl.hitachi.co.jp> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 10, 2011 at 10:33:10AM +0900, Mitsuo Hayasaka wrote: > The doalloc arg in xfs_qm_dqattach_one() is a flag that indicates > whether a new area to handle quota information will be allocated > if needed. Originally, it was passed to xfs_qm_dqget(), but has > been removed by the following commit (probably by mistake): > > commit 8e9b6e7fa4544ea8a0e030c8987b918509c8ff47 > Author: Christoph Hellwig > Date: Sun Feb 8 21:51:42 2009 +0100 > > xfs: remove the unused XFS_QMOPT_DQLOCK flag > > As the result, xfs_qm_dqget() called from xfs_qm_dqattach_one() > never allocates the new area even if it is needed. > > This patch gives the doalloc arg to xfs_qm_dqget() in > xfs_qm_dqattach_one() to fix this problem. > > Signed-off-by: Mitsuo Hayasaka > Cc: Alex Elder > Cc: Christoph Hellwig > --- > > fs/xfs/xfs_qm.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c > index 9a0aa76..95ba6dc 100644 > --- a/fs/xfs/xfs_qm.c > +++ b/fs/xfs/xfs_qm.c > @@ -674,7 +674,8 @@ xfs_qm_dqattach_one( > * disk and we didn't ask it to allocate; > * ESRCH if quotas got turned off suddenly. > */ > - error = xfs_qm_dqget(ip->i_mount, ip, id, type, XFS_QMOPT_DOWARN, &dqp); > + error = xfs_qm_dqget(ip->i_mount, ip, id, type, > + doalloc | XFS_QMOPT_DOWARN, &dqp); > if (error) > return error; > Looks like the only caller of xfs_qm_dqattach_one with XFS_QMOPT_DOALLOC possibly set is xfs_qm_dqattach_locked, which does so based upon its argument 'flags'. AFAICS the only caller of xfs_qm_dqattach_locked that sets this flag is xfs_qm_vop_dqalloc, which is called by xfs_ioctl_setattr, xfs_setattr_nonsize, xfs_create, and xfs_symlink. xfs_ioctl_setattr|xfs_setattr_nonsize|xfs_create|xfs_symlink xfs_qm_vop_dqalloc xfs_qm_dqattach_locked(ip, XFS_QMOPT_DQALLOC xfs_qm_dqattach_one I tried a few things to see if I could hit a problem without the patch but no luck. Anyway... Looks good. Reviewed-by: Ben Myers From bpm@oss.sgi.com Tue Nov 15 14:51:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFKpLX2073215 for ; Tue, 15 Nov 2011 14:51:21 -0600 Received: (from bpm@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id pAFKpLQ0073187; Tue, 15 Nov 2011 14:51:21 -0600 Date: Tue, 15 Nov 2011 14:51:21 -0600 Message-Id: <201111152051.pAFKpLQ0073187@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v3.2-rc1-4-gdb3e74b X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 810627d9a6d0e8820c798001875bc4e1b7754ebf X-Git-Newrev: db3e74b582915d66e10b0c73a62763418f54c340 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated db3e74b xfs: use doalloc flag in xfs_qm_dqattach_one() from 810627d9a6d0e8820c798001875bc4e1b7754ebf (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit db3e74b582915d66e10b0c73a62763418f54c340 Author: Mitsuo Hayasaka Date: Thu Nov 10 01:33:10 2011 +0000 xfs: use doalloc flag in xfs_qm_dqattach_one() The doalloc arg in xfs_qm_dqattach_one() is a flag that indicates whether a new area to handle quota information will be allocated if needed. Originally, it was passed to xfs_qm_dqget(), but has been removed by the following commit (probably by mistake): commit 8e9b6e7fa4544ea8a0e030c8987b918509c8ff47 Author: Christoph Hellwig Date: Sun Feb 8 21:51:42 2009 +0100 xfs: remove the unused XFS_QMOPT_DQLOCK flag As the result, xfs_qm_dqget() called from xfs_qm_dqattach_one() never allocates the new area even if it is needed. This patch gives the doalloc arg to xfs_qm_dqget() in xfs_qm_dqattach_one() to fix this problem. Signed-off-by: Mitsuo Hayasaka Cc: Alex Elder Cc: Christoph Hellwig Reviewed-by: Christoph Hellwig Signed-off-by: Ben Myers ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_qm.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) hooks/post-receive -- XFS development tree From dave@fromorbit.com Tue Nov 15 14:56:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_55 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFKuhE9073771 for ; Tue, 15 Nov 2011 14:56:43 -0600 X-ASG-Debug-ID: 1321390600-25fa01c30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 216081D0E855 for ; Tue, 15 Nov 2011 12:56:41 -0800 (PST) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id hnL9taxT1m65qZrS for ; Tue, 15 Nov 2011 12:56:41 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvwEAILPwk55LIil/2dsb2JhbABDqW2BBoFyAVw7GGoDNKB2oAKDVoMmgxUEpkA Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail04.adl6.internode.on.net with ESMTP; 16 Nov 2011 07:26:40 +1030 Received: from disappointment ([192.168.1.1]) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1RQQ3a-0007aZ-Hq for xfs@oss.sgi.com; Wed, 16 Nov 2011 07:56:38 +1100 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1RQQ3Z-0002PI-VW for xfs@oss.sgi.com; Wed, 16 Nov 2011 07:56:37 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfstests: detect gdbm library correctly Subject: [PATCH] xfstests: detect gdbm library correctly Date: Wed, 16 Nov 2011 07:56:37 +1100 Message-Id: <1321390597-9222-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.4 X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1321390602 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4176 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80348 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner Debian unstable has move the location of the gdbm libraries as part of it's multi-arch conversion. The libraries are now only found by the configured library search path in /etc/ld.conf.d, so change the autoconf macros to test and find the libraries by link tests rather than hard coding library paths when a header is found. Signed-off-by: Dave Chinner --- m4/package_gdbmdev.m4 | 41 ++++++++++++++++++++++++++++++++++++----- 1 files changed, 36 insertions(+), 5 deletions(-) diff --git a/m4/package_gdbmdev.m4 b/m4/package_gdbmdev.m4 index 6580fba..c07f75d 100644 --- a/m4/package_gdbmdev.m4 +++ b/m4/package_gdbmdev.m4 @@ -1,19 +1,50 @@ AC_DEFUN([AC_PACKAGE_WANT_NDBM], [ AC_CHECK_HEADERS(ndbm.h, [ have_db=true ], [ have_db=false ]) + found=false libgdbm="" + + if test $have_db = true; then + AC_CHECK_LIB(ndbm,dbm_open,found=true,found=false) + AC_CHECK_LIB(ndbm,dbm_fetch,,found=false) + AC_CHECK_LIB(ndbm,dbm_store,,found=false) + AC_CHECK_LIB(ndbm,dbm_close,,found=false) + + if test $found = true; then + libgdbm="$ndbm" + fi + fi + AC_SUBST(libgdbm) AC_SUBST(have_db) ]) AC_DEFUN([AC_PACKAGE_WANT_GDBM], [ AC_CHECK_HEADERS([gdbm/ndbm.h, gdbm-ndbm.h], [ have_db=true ], [ have_db=false ]) + found=false libgdbm="" - if test $have_db = true -a -f ${libexecdir}${libdirsuffix}/libgdbm_compat.a; then - libgdbm="${libexecdir}${libdirsuffix}/libgdbm_compat.a" - fi - if test $have_db = true -a -f ${libexecdir}${libdirsuffix}/libgdbm.a; then - libgdbm="${libgdbm} ${libexecdir}${libdirsuffix}/libgdbm.a" + + if test $have_db = true; then + AC_CHECK_LIB(gdbm,dbm_open,found=true,found=false) + AC_CHECK_LIB(gdbm,dbm_fetch,,found=false) + AC_CHECK_LIB(gdbm,dbm_store,,found=false) + AC_CHECK_LIB(gdbm,dbm_close,,found=false) + + if test $found = true; then + libgdbm="${libgdbm} -lgdbm" + fi + + found="no" + AC_CHECK_LIB(gdbm_compat,dbm_open,found=true,found=false) + AC_CHECK_LIB(gdbm_compat,dbm_fetch,,found=false) + AC_CHECK_LIB(gdbm_compat,dbm_store,,found=false) + AC_CHECK_LIB(gdbm_compat,dbm_close,,found="no") + + if test $found = true ; then + libgdbm="${libgdbm} -lgdbm_compat" + fi fi + AC_SUBST(libgdbm) AC_SUBST(have_db) ]) + -- 1.7.5.4 From BATV+d59cd714167caaa18e35+3005+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 15 15:09:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_35, J_CHICKENPOX_63,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAFL9tva075033 for ; Tue, 15 Nov 2011 15:09:55 -0600 X-ASG-Debug-ID: 1321391393-5ce300090000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 86F671268F5F for ; Tue, 15 Nov 2011 13:09:54 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 4br7mDOBd406RIwT for ; Tue, 15 Nov 2011 13:09:54 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQQGP-0001k1-Kr for xfs@oss.sgi.com; Tue, 15 Nov 2011 21:09:53 +0000 Date: Tue, 15 Nov 2011 16:09:53 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] repair: avoid ABBA deadlocks on prefetched buffers Subject: [PATCH] repair: avoid ABBA deadlocks on prefetched buffers Message-ID: <20111115210953.GA6670@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321391394 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80348 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Both the prefetch threads and actual repair processing threads can have multiple buffers at a time locked, but they do no use a common locker order, which can lead to ABBA deadlocks while trying to lock the buffers. Switch the prefetch code to do a trylock and skip buffers that have already been locked to avoid this deadlock. Reported-by: Arkadiusz Mi??kiewicz Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/include/libxfs.h =================================================================== --- xfsprogs-dev.orig/include/libxfs.h 2011-11-15 20:43:02.513069998 +0100 +++ xfsprogs-dev/include/libxfs.h 2011-11-15 20:43:16.669736580 +0100 @@ -279,27 +279,41 @@ enum xfs_buf_flags_t { /* b_flags bits * extern struct cache *libxfs_bcache; extern struct cache_operations libxfs_bcache_operations; +#define LIBXFS_GETBUF_TRYLOCK (1 << 0) + #ifdef XFS_BUF_TRACING #define libxfs_readbuf(dev, daddr, len, flags) \ - libxfs_trace_readbuf(__FUNCTION__, __FILE__, __LINE__, (dev), (daddr), (len), (flags)) + libxfs_trace_readbuf(__FUNCTION__, __FILE__, __LINE__, \ + (dev), (daddr), (len), (flags)) #define libxfs_writebuf(buf, flags) \ - libxfs_trace_writebuf(__FUNCTION__, __FILE__, __LINE__, (buf), (flags)) + libxfs_trace_writebuf(__FUNCTION__, __FILE__, __LINE__, \ + (buf), (flags)) #define libxfs_getbuf(dev, daddr, len) \ - libxfs_trace_getbuf(__FUNCTION__, __FILE__, __LINE__, (dev), (daddr), (len)) + libxfs_trace_getbuf(__FUNCTION__, __FILE__, __LINE__, \ + (dev), (daddr), (len)) +#define libxfs_getbuf_flags(dev, daddr, len, flags) \ + libxfs_trace_getbuf(__FUNCTION__, __FILE__, __LINE__, \ + (dev), (daddr), (len), (flags)) #define libxfs_putbuf(buf) \ - libxfs_trace_putbuf(__FUNCTION__, __FILE__, __LINE__, (buf)) + libxfs_trace_putbuf(__FUNCTION__, __FILE__, __LINE__, (buf)) -extern xfs_buf_t *libxfs_trace_readbuf(const char *, const char *, int, dev_t, xfs_daddr_t, int, int); -extern int libxfs_trace_writebuf(const char *, const char *, int, xfs_buf_t *, int); +extern xfs_buf_t *libxfs_trace_readbuf(const char *, const char *, int, + dev_t, xfs_daddr_t, int, int); +extern int libxfs_trace_writebuf(const char *, const char *, int, + xfs_buf_t *, int); extern xfs_buf_t *libxfs_trace_getbuf(const char *, const char *, int, dev_t, xfs_daddr_t, int); -extern void libxfs_trace_putbuf (const char *, const char *, int, xfs_buf_t *); +extern xfs_buf_t *libxfs_trace_getbuf_flags(const char *, const char *, int, + dev_t, xfs_daddr_t, int, unsigned int); +extern void libxfs_trace_putbuf (const char *, const char *, int, + xfs_buf_t *); #else extern xfs_buf_t *libxfs_readbuf(dev_t, xfs_daddr_t, int, int); extern int libxfs_writebuf(xfs_buf_t *, int); extern xfs_buf_t *libxfs_getbuf(dev_t, xfs_daddr_t, int); +extern xfs_buf_t *libxfs_getbuf_flags(dev_t, xfs_daddr_t, int, unsigned int); extern void libxfs_putbuf (xfs_buf_t *); #endif Index: xfsprogs-dev/libxfs/rdwr.c =================================================================== --- xfsprogs-dev.orig/libxfs/rdwr.c 2011-11-15 20:43:02.503069998 +0100 +++ xfsprogs-dev/libxfs/rdwr.c 2011-11-15 20:43:16.669736580 +0100 @@ -195,6 +195,7 @@ libxfs_log_header( #undef libxfs_readbuf #undef libxfs_writebuf #undef libxfs_getbuf +#undef libxfs_getbuf_flags #undef libxfs_putbuf xfs_buf_t *libxfs_readbuf(dev_t, xfs_daddr_t, int, int); @@ -238,6 +239,19 @@ libxfs_trace_getbuf(const char *func, co return bp; } +xfs_buf_t * +libxfs_trace_getbuf_flags(const char *func, const char *file, int line, + dev_t device, xfs_daddr_t blkno, int len, unsigned long flags) +{ + xfs_buf_t *bp = libxfs_getbuf(device, blkno, len, flags); + + bp->b_func = func; + bp->b_file = file; + bp->b_line = line; + + return bp; +} + void libxfs_trace_putbuf(const char *func, const char *file, int line, xfs_buf_t *bp) { @@ -380,8 +394,8 @@ int lock_buf_count = 0; extern int use_xfs_buf_lock; -xfs_buf_t * -libxfs_getbuf(dev_t device, xfs_daddr_t blkno, int len) +struct xfs_buf * +libxfs_getbuf_flags(dev_t device, xfs_daddr_t blkno, int len, unsigned int flags) { xfs_buf_t *bp; xfs_bufkey_t key; @@ -392,28 +406,48 @@ libxfs_getbuf(dev_t device, xfs_daddr_t key.bblen = len; miss = cache_node_get(libxfs_bcache, &key, (struct cache_node **)&bp); - if (bp) { - if (use_xfs_buf_lock) + if (!bp) + return NULL; + + if (use_xfs_buf_lock) { + if (flags & LIBXFS_GETBUF_TRYLOCK) { + int ret; + + ret = pthread_mutex_trylock(&bp->b_lock); + if (ret) { + ASSERT(ret == EAGAIN); + cache_node_put(libxfs_bcache, (struct cache_node *)bp); + return NULL; + } + } else { pthread_mutex_lock(&bp->b_lock); - cache_node_set_priority(libxfs_bcache, (struct cache_node *)bp, - cache_node_get_priority((struct cache_node *)bp) - + } + } + + cache_node_set_priority(libxfs_bcache, (struct cache_node *)bp, + cache_node_get_priority((struct cache_node *)bp) - CACHE_PREFETCH_PRIORITY); #ifdef XFS_BUF_TRACING - pthread_mutex_lock(&libxfs_bcache->c_mutex); - lock_buf_count++; - list_add(&bp->b_lock_list, &lock_buf_list); - pthread_mutex_unlock(&libxfs_bcache->c_mutex); + pthread_mutex_lock(&libxfs_bcache->c_mutex); + lock_buf_count++; + list_add(&bp->b_lock_list, &lock_buf_list); + pthread_mutex_unlock(&libxfs_bcache->c_mutex); #endif #ifdef IO_DEBUG - printf("%lx %s: %s buffer %p for bno = %llu\n", - pthread_self(), __FUNCTION__, miss ? "miss" : "hit", - bp, (long long)LIBXFS_BBTOOFF64(blkno)); + printf("%lx %s: %s buffer %p for bno = %llu\n", + pthread_self(), __FUNCTION__, miss ? "miss" : "hit", + bp, (long long)LIBXFS_BBTOOFF64(blkno)); #endif - } return bp; } +struct xfs_buf * +libxfs_getbuf(dev_t device, xfs_daddr_t blkno, int len) +{ + return libxfs_getbuf_flags(device, blkno, len, 0); +} + void libxfs_putbuf(xfs_buf_t *bp) { Index: xfsprogs-dev/repair/prefetch.c =================================================================== --- xfsprogs-dev.orig/repair/prefetch.c 2011-11-15 20:44:30.903069469 +0100 +++ xfsprogs-dev/repair/prefetch.c 2011-11-15 20:48:23.073068083 +0100 @@ -112,8 +112,17 @@ pf_queue_io( { xfs_buf_t *bp; - bp = libxfs_getbuf(mp->m_dev, XFS_FSB_TO_DADDR(mp, fsbno), - XFS_FSB_TO_BB(mp, blen)); + /* + * Never block on a buffer lock here, given that the actual repair + * code might lock buffers in a different order from us. Given that + * the lock holder is either reading it from disk himself or + * completely overwriting it this behaviour is perfectly fine. + */ + bp = libxfs_getbuf_flags(mp->m_dev, XFS_FSB_TO_DADDR(mp, fsbno), + XFS_FSB_TO_BB(mp, blen), LIBXFS_GETBUF_TRYLOCK); + if (!bp) + return; + if (bp->b_flags & LIBXFS_B_UPTODATE) { if (B_IS_INODE(flag)) pf_read_inode_dirs(args, bp); From david@fromorbit.com Tue Nov 15 18:23:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAG0NVFJ095122 for ; Tue, 15 Nov 2011 18:23:32 -0600 X-ASG-Debug-ID: 1321403006-5cdf02e90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2B367154A7BC for ; Tue, 15 Nov 2011 16:23:26 -0800 (PST) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id ILwYjFOLHISNvrcs for ; Tue, 15 Nov 2011 16:23:26 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAIsBw055LIil/2dsb2JhbABDqXGBBoFyAQEFJxMcIxAIAw4KLhQlAyETwRYSiX8ElDGSDw Received: from ppp121-44-136-165.lns20.syd7.internode.on.net (HELO dastard) ([121.44.136.165]) by ipmail06.adl6.internode.on.net with ESMTP; 16 Nov 2011 10:53:25 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RQTHf-0007wz-Da; Wed, 16 Nov 2011 11:23:23 +1100 Date: Wed, 16 Nov 2011 11:23:23 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] repair: validate acl count before reading it Subject: Re: [PATCH] repair: validate acl count before reading it Message-ID: <20111116002323.GW5534@dastard> References: <20111115080714.GA24931@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111115080714.GA24931@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1321403010 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0254 1.0000 -1.8564 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.86 X-Barracuda-Spam-Status: No, SCORE=-1.86 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80360 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 15, 2011 at 03:07:15AM -0500, Christoph Hellwig wrote: > This prevents a segfault on a filesystem so badly corrupted by the RAID > controller that it could be considered fuzzed. > > Signed-off-by: Christoph Hellwig > > Index: xfsprogs-dev/repair/attr_repair.c > =================================================================== > --- xfsprogs-dev.orig/repair/attr_repair.c 2011-11-14 20:03:27.000000000 +0000 > +++ xfsprogs-dev/repair/attr_repair.c 2011-11-14 20:20:55.000000000 +0000 > @@ -931,8 +931,8 @@ process_longform_attr( > } > > > -static xfs_acl_t * > -xfs_acl_from_disk(xfs_acl_disk_t *dacl) > +static int > +xfs_acl_from_disk(struct xfs_acl **aclp, struct xfs_acl_disk *dacl) > { > int count; > xfs_acl_t *acl; > @@ -940,10 +940,22 @@ xfs_acl_from_disk(xfs_acl_disk_t *dacl) > xfs_acl_entry_disk_t *dace, *end; > > count = be32_to_cpu(dacl->acl_cnt); > + if (count > XFS_ACL_MAX_ENTRIES) { > + do_warn(_("to larget ACL, size %d"), count); "Too many ACL entries, count %d\n" > + *aclp = NULL; > + return EINVAL; > + } > + > + > end = &dacl->acl_entry[0] + count; > acl = malloc((int)((char *)end - (char *)dacl)); > - if (!acl) > - return NULL; > + if (!acl) { > + do_warn(_("cannot malloc enough for ACL attribute\n")); > + do_warn(_("SKIPPING this ACL\n")); Should you put that same "Skipping" message for all the error cases? FWIW, should that status be stored somewhere so that when repair completes it can emit a warning saying something like: WARNING: ACLs were not correctly validated. You need to ensure ACLs are consistently and appropriately applied to your filesytem. Regardless, that can be done as a separate patch. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From news@pears-gallery.com Tue Nov 15 18:38:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.6 required=5.0 tests=BAYES_50,HTML_FONT_SIZE_HUGE, HTML_MESSAGE,RCVD_IN_SORBS_WEB autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAG0cphE096793 for ; Tue, 15 Nov 2011 18:38:52 -0600 X-ASG-Debug-ID: 1321403926-5cd5032a0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hvx5105.celeo.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 18F3E14901E5 for ; Tue, 15 Nov 2011 16:38:46 -0800 (PST) Received: from hvx5105.celeo.net (hvx5105.celeo.net [95.128.73.105]) by cuda.sgi.com with ESMTP id E5E4mVkNdT3eHkQ5 for ; Tue, 15 Nov 2011 16:38:46 -0800 (PST) Received: from mov76-1-78-236-189-81.fbx.proxad.net (mov76-1-78-236-189-81.fbx.proxad.net [78.236.189.81]) (using SSLv3 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: news@pears-gallery.com) by hvx5105.celeo.net (Postfix) with ESMTPSA id 46B92134DF5 for ; Wed, 16 Nov 2011 01:38:22 +0100 (CET) From: "Pears gallery" X-ASG-Orig-Subj: www.pears-gallery.com : SAISON 2 Subject: www.pears-gallery.com : SAISON 2 To: "linux-xfs" Content-Type: multipart/alternative; boundary="YzTju6jFDJf5HBLOFPRnYKl30=_SkMTdHU" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Organization: Pears gallery Date: Wed, 16 Nov 2011 01:38:45 +0100 X-Priority: 1 Message-Id: <20111116003822.46B92134DF5@hvx5105.celeo.net> X-Barracuda-Connect: hvx5105.celeo.net[95.128.73.105] X-Barracuda-Start-Time: 1321403928 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.49 X-Barracuda-Spam-Status: No, SCORE=0.49 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085, HTML_FONT_SIZE_HUGE, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80362 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.39 HTML_FONT_SIZE_HUGE BODY: HTML font size is huge 0.00 HTML_MESSAGE BODY: HTML included in message 0.10 BSF_SC0_SA085 Custom Rule SA085 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format --YzTju6jFDJf5HBLOFPRnYKl30=_SkMTdHU Content-Type: text/plain ; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable www.pears-gallery.com A NEW VERSION =20 12.000 visitors each month Display your works differently on the Internet Automatic translation in 8 languages ??of your work 2 MONTH =3D 1 EUROS WITH THIS CODE : ILOVEART CLICK ABONNEMENT 1 MONTH 25 EUROS AND ADD THIS CODE OUR FACEBOOK =20 =20 =20 =20 Thanks, =20 Pears Gallery Team Sophie, Romain et David. =20 Unsubscribe --YzTju6jFDJf5HBLOFPRnYKl30=_SkMTdHU Content-Type: text/html ; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

=

www.pears-gallery.com

A NEW VERSION

=  

12.000 visitors each= month

Display your works d= ifferently on the Internet

Automatic translatio= n in 8 languages ??of your work

&nbs= p;

&nbs= p;

2 MO= NTH =3D 1 EUROS

WITH THIS CODE : ILOVEART

CLICK ABONN= EMENT 1 MONTH 25 EUROS AND ADD THIS CODE

OUR FACEBOOK

 

 

 

 

Thanks,

 

Pears Gallery Team

Sophie, Romain et David.

 

 

U= nsubscribe

--YzTju6jFDJf5HBLOFPRnYKl30=_SkMTdHU-- From wu.bo@cn.fujitsu.com Tue Nov 15 19:30:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAG1UTEC102950 for ; Tue, 15 Nov 2011 19:30:30 -0600 X-ASG-Debug-ID: 1321407028-4b93005e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F2C768D0B29 for ; Tue, 15 Nov 2011 17:30:28 -0800 (PST) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id Pt0T6DSFhY7Gmg9D for ; Tue, 15 Nov 2011 17:30:28 -0800 (PST) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id 4AF35170095; Wed, 16 Nov 2011 09:30:27 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pAG1UP1F027163; Wed, 16 Nov 2011 09:30:25 +0800 Received: from localhost.localdomain ([10.167.225.174]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011111609301810-110070 ; Wed, 16 Nov 2011 09:30:18 +0800 Message-ID: <4EC31238.3080102@cn.fujitsu.com> Date: Wed, 16 Nov 2011 09:30:32 +0800 From: WuBo User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: Christoph Hellwig CC: Ben Myers , linux-fsdevel@vger.kernel.org, Linux Btrfs , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/3] xfstests 265: add a prealloc and reserve test Subject: Re: [PATCH 2/3] xfstests 265: add a prealloc and reserve test References: <4EB20505.7070005@cn.fujitsu.com> <4EB205CC.6010509@cn.fujitsu.com> <20111115182113.GD29840@sgi.com> <20111115190821.GA15331@infradead.org> In-Reply-To: <20111115190821.GA15331@infradead.org> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-16 09:30:18, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-16 09:30:20, Serialize complete at 2011-11-16 09:30:20 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1321407028 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2798 1.0000 -0.4363 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.44 X-Barracuda-Spam-Status: No, SCORE=-0.44 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80364 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/16/2011 03:08 AM, Christoph Hellwig wrote: > On Tue, Nov 15, 2011 at 12:21:13PM -0600, Ben Myers wrote: >> Hi Wu Bo, >> >> On Thu, Nov 03, 2011 at 11:09:00AM +0800, WuBo wrote: >>> This test is for preallocation test. If the disk is full, just with a prealloc >>> file has some free space that prealloc early. We need to check whether the write >>> to the free space is success or not. >>> >>> Signed-off-by: Wu Bo >> >> This test is failing for me because I don't have fallocate installed. I >> suggest the test could to be changed to check for binaries it uses, >> possibly the version of those binaries, and then not run unless the >> right ones are installed. But the best I can do right now is make a >> note of it. > > It might be even better to just use the xfs_io falloc command as we > generally expect an uptodate xfs_io for use with xfstests. Got it. thanks, wubo > > -- > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > From BATV+d90e868223b40484528d+3006+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 16 01:58:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAG7wbUJ148259 for ; Wed, 16 Nov 2011 01:58:37 -0600 X-ASG-Debug-ID: 1321430312-305f00a50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 861362526F9 for ; Tue, 15 Nov 2011 23:58:32 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id wpJljZ0wcXPhGIXZ for ; Tue, 15 Nov 2011 23:58:32 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQaO5-0006hM-K5; Wed, 16 Nov 2011 07:58:29 +0000 Date: Wed, 16 Nov 2011 02:58:29 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] repair: validate acl count before reading it Subject: Re: [PATCH] repair: validate acl count before reading it Message-ID: <20111116075829.GA15620@infradead.org> References: <20111115080714.GA24931@infradead.org> <20111116002323.GW5534@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111116002323.GW5534@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321430312 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0208 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80388 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 16, 2011 at 11:23:23AM +1100, Dave Chinner wrote: > > count = be32_to_cpu(dacl->acl_cnt); > > + if (count > XFS_ACL_MAX_ENTRIES) { > > + do_warn(_("to larget ACL, size %d"), count); > > "Too many ACL entries, count %d\n" Ok. > > + *aclp = NULL; > > + return EINVAL; > > + } > > + > > + > > end = &dacl->acl_entry[0] + count; > > acl = malloc((int)((char *)end - (char *)dacl)); > > - if (!acl) > > - return NULL; > > + if (!acl) { > > + do_warn(_("cannot malloc enough for ACL attribute\n")); > > + do_warn(_("SKIPPING this ACL\n")); > > Should you put that same "Skipping" message for all the error cases? For the ENOMEM case we indeed skip the ACL. For other errors we will just remove this attribute. Given how enomem really should not just happen for that small ACL I wonder how special casing it makes any sense - but that code has been there for a while. From wferi@niif.hu Wed Nov 16 07:50:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAGDo0RI179485 for ; Wed, 16 Nov 2011 07:50:01 -0600 X-ASG-Debug-ID: 1321451372-0d2e028c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from tac.ki.iif.hu (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 07D6F1D0FF0D for ; Wed, 16 Nov 2011 05:49:32 -0800 (PST) Received: from tac.ki.iif.hu (tac.ki.iif.hu [193.6.222.43]) by cuda.sgi.com with ESMTP id rbnzFXUONL3Y48DS for ; Wed, 16 Nov 2011 05:49:32 -0800 (PST) Received: from wferi by tac.ki.iif.hu with local (Exim 4.72) (envelope-from ) id 1RQfrf-0007VQ-PH; Wed, 16 Nov 2011 14:49:23 +0100 From: Ferenc Wagner To: "Rafael J. Wysocki" Cc: Christoph , "Theodore Ts'o" , LKML , xfs@oss.sgi.com, Christoph Hellwig , Nigel Cunningham , Pavel Machek , linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, Linux PM list X-ASG-Orig-Subj: Re: [PATCH] PM / Freezer: Freeze filesystems while freezing processes (v2) Subject: Re: [PATCH] PM / Freezer: Freeze filesystems while freezing processes (v2) References: <4E1C70AD.1010101@u-club.de> <201109260010.50649.rjw@sisk.pl> <4EA2DDD3.8080306@u-club.de> <201110222335.29573.rjw@sisk.pl> Date: Wed, 16 Nov 2011 14:49:23 +0100 In-Reply-To: <201110222335.29573.rjw@sisk.pl> (Rafael J. Wysocki's message of "Sat, 22 Oct 2011 23:35:29 +0200") Message-ID: <874ny4jhy4.fsf@tac.ki.iif.hu> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: tac.ki.iif.hu[193.6.222.43] X-Barracuda-Start-Time: 1321451373 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80410 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean "Rafael J. Wysocki" writes: > On Saturday, October 22, 2011, Christoph wrote: > >>> PM / Freezer: Freeze filesystems while freezing processes (v2) >>> >>> On Sunday, August 07, 2011, Dave Chinner wrote: >>> >>>> On Sat, Aug 06, 2011 at 11:17:18PM +0200, Rafael J. Wysocki wrote: >>>> >>>>> From: Rafael J. Wysocki >>>>> >>>>> Freeze all filesystems during the freezing of tasks by calling >>>>> freeze_bdev() for each of them and thaw them during the thawing of >>>>> tasks with the help of thaw_bdev(). >>>>> >>>>> This is needed by hibernation, because some filesystems (e.g. XFS) >>>>> deadlock with the preallocation of memory used by it if the memory >>>>> pressure caused by it is too heavy. >>> >>> Below is an alternative fix, the changelog pretty much explains the >>> idea. >>> >>> I've tested it on Toshiba Portege R500, but I don't have an XFS >>> partition to verify that it really helps, so I'd appreciate it if >>> someone able to reproduce the original issue could test it and report >>> back. >> >> Well, the kernel bugtracker is still down and I just like to post my >> experience with kernel (x64) v3.1-rc8/9 + patches. My machine is a >> MacBookPro, doomed with 4GB RAM running debian. >> >> Bug #1 >> >> on the way to hibernate, machine hangs on >> >> "PM: Preallocating image memory..." >> >> this patch worked for me now for weeks: >> "[PATCH] PM / Freezer: Freeze filesystems while freezing processes (v2)" >> https://lkml.org/lkml/2011/9/24/77 > > This patch is going to be merged into 3.2. Hi, I was the original reporter of the Bugzilla issue, just didn't know about this thread until recently. Anyway, I'm running 3.2-rc1 now, which contains the alternative fix, and I can confirm that it indeed works: hibernation does not deadlock on my XFS rooted system anymore during memory preallocation. Thanks everybody for his or her work on the issue! To add something still, preallocation now ends with a couple of seconds of heavy disk activity, but with several seconds of total inactivity beforehand. Is this warranted by some CPU intensive task at that stage? -- Thanks, Feri. From bpm@sgi.com Wed Nov 16 12:08:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_35 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAGI8uCx197718 for ; Wed, 16 Nov 2011 12:08:56 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id 167D0AC002; Wed, 16 Nov 2011 10:08:53 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 4C542431F74; Wed, 16 Nov 2011 12:09:12 -0600 (CST) Date: Wed, 16 Nov 2011 12:09:12 -0600 From: Ben Myers To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 3/5] xfs: do not require an ioend for new EOF calculation Message-ID: <20111116180912.GF29840@sgi.com> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201426.862605739@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111115201426.862605739@bombadil.infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 15, 2011 at 03:14:10PM -0500, Christoph Hellwig wrote: > Replace xfs_ioend_new_eof with a new inline xfs_new_eof helper that > doesn't require and ioend, and is available also outside of xfs_aops.c. > > Also make the code a bit more clear by using a normal if statement > instead of a slightly misleading MIN(). > > Signed-off-by: Christoph Hellwig This looks good to me. Getting rid of that MIN is much clearer. Reviewed-by: Ben Myers > --- > fs/xfs/xfs_aops.c | 26 +++++--------------------- > fs/xfs/xfs_inode.h | 14 ++++++++++++++ > 2 files changed, 19 insertions(+), 21 deletions(-) > > Index: linux-2.6/fs/xfs/xfs_aops.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-08 08:11:44.891887054 +0100 > +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-08 08:12:31.586400976 +0100 > @@ -99,24 +99,6 @@ xfs_destroy_ioend( > } > > /* > - * If the end of the current ioend is beyond the current EOF, > - * return the new EOF value, otherwise zero. > - */ > -STATIC xfs_fsize_t > -xfs_ioend_new_eof( > - xfs_ioend_t *ioend) > -{ > - xfs_inode_t *ip = XFS_I(ioend->io_inode); > - xfs_fsize_t isize; > - xfs_fsize_t bsize; > - > - bsize = ioend->io_offset + ioend->io_size; > - isize = MAX(ip->i_size, ip->i_new_size); > - isize = MIN(isize, bsize); > - return isize > ip->i_d.di_size ? isize : 0; > -} > - > -/* > * Fast and loose check if this write could update the on-disk inode size. > */ > static inline bool xfs_ioend_is_append(struct xfs_ioend *ioend) > @@ -140,7 +122,7 @@ xfs_setfilesize( > xfs_fsize_t isize; > > xfs_ilock(ip, XFS_ILOCK_EXCL); > - isize = xfs_ioend_new_eof(ioend); > + isize = xfs_new_eof(ip, ioend->io_offset + ioend->io_size); > if (isize) { > trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size); > ip->i_d.di_size = isize; > @@ -362,6 +344,8 @@ xfs_submit_ioend_bio( > xfs_ioend_t *ioend, > struct bio *bio) > { > + struct xfs_inode *ip = XFS_I(ioend->io_inode); > + > atomic_inc(&ioend->io_remaining); > bio->bi_private = ioend; > bio->bi_end_io = xfs_end_bio; > @@ -370,8 +354,8 @@ xfs_submit_ioend_bio( > * If the I/O is beyond EOF we mark the inode dirty immediately > * but don't update the inode size until I/O completion. > */ > - if (xfs_ioend_new_eof(ioend)) > - xfs_mark_inode_dirty(XFS_I(ioend->io_inode)); > + if (xfs_new_eof(ip, ioend->io_offset + ioend->io_size)) > + xfs_mark_inode_dirty(ip); > > submit_bio(wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE, bio); > } > Index: linux-2.6/fs/xfs/xfs_inode.h > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_inode.h 2011-11-08 08:02:50.000000000 +0100 > +++ linux-2.6/fs/xfs/xfs_inode.h 2011-11-08 08:13:01.290386996 +0100 > @@ -278,6 +278,20 @@ static inline struct inode *VFS_I(struct > } > > /* > + * If this I/O goes past the on-disk inode size update it unless it would > + * be past the current in-core or write in-progress inode size. > + */ > +static inline xfs_fsize_t > +xfs_new_eof(struct xfs_inode *ip, xfs_fsize_t new_size) > +{ > + xfs_fsize_t i_size = max(ip->i_size, ip->i_new_size); > + > + if (new_size > i_size) > + new_size = i_size; > + return new_size > ip->i_d.di_size ? new_size : 0; > +} > + > +/* > * i_flags helper functions > */ > static inline void > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From bpm@sgi.com Wed Nov 16 13:01:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAGJ16di204383 for ; Wed, 16 Nov 2011 13:01:07 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id B9EF48F8073; Wed, 16 Nov 2011 11:01:00 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 2626D431F74; Wed, 16 Nov 2011 13:01:20 -0600 (CST) Date: Wed, 16 Nov 2011 13:01:20 -0600 From: Ben Myers To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Message-ID: <20111116190120.GG29840@sgi.com> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201426.686729205@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111115201426.686729205@bombadil.infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 15, 2011 at 03:14:09PM -0500, Christoph Hellwig wrote: > commit 77d7a0c "xfs: Non-blocking inode locking in IO completion" introduced > a trylocked and defer scheme in xfs_setfilesize to avoid deadlocks when on > XFS filesystem is used ontop of another using the loop device, and we > fsync in the loop filesystem. > > Now that we have the cheap enough concurrency managed workqueues, we can > create per-filesystem instead of global workqueues and remove this scheme > again, given that it has the potential of delaying size updates and is not > helpful once we start to log the inode size. > > Signed-off-by: Christoph Hellwig ... > /* > @@ -168,10 +161,12 @@ xfs_finish_ioend( > struct xfs_ioend *ioend) > { > if (atomic_dec_and_test(&ioend->io_remaining)) { > + struct xfs_mount *mp = XFS_I(ioend->io_inode)->i_mount; > + > if (ioend->io_type == IO_UNWRITTEN) > - queue_work(xfsconvertd_workqueue, &ioend->io_work); > + queue_work(mp->m_unwritten_workqueue, &ioend->io_work); > else if (xfs_ioend_is_append(ioend)) I wonder if we could skip size updates due to the 'fast and loose' nature of xfs_ioend_is_append, and end up destroying the ioend below, without updating the file size. It's not strictly related to your patch though. > - queue_work(xfsdatad_workqueue, &ioend->io_work); > + queue_work(mp->m_data_workqueue, &ioend->io_work); > else > xfs_destroy_ioend(ioend); > } ... > Index: linux-2.6/fs/xfs/xfs_super.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_super.c 2011-11-10 16:50:40.771795378 +0100 > +++ linux-2.6/fs/xfs/xfs_super.c 2011-11-15 09:17:13.763315819 +0100 > @@ -769,6 +769,42 @@ xfs_setup_devices( > return 0; > } > > +STATIC int > +xfs_init_mount_workqueues( > + struct xfs_mount *mp) > +{ > + snprintf(mp->m_data_workqueue_name, XFS_WQ_NAME_LEN, > + "xfs-data/%s", mp->m_fsname); > + mp->m_data_workqueue = > + alloc_workqueue(mp->m_data_workqueue_name, WQ_MEM_RECLAIM, 1); > + if (!mp->m_data_workqueue) > + goto out; > + > + snprintf(mp->m_unwritten_workqueue_name, XFS_WQ_NAME_LEN, > + "xfs-conv/%s", mp->m_fsname); > + mp->m_unwritten_workqueue = > + alloc_workqueue(mp->m_unwritten_workqueue_name, > + WQ_MEM_RECLAIM, 1); Hrm... mp->m_fsname can be MAXNAMELEN (256 in xfs), and XFS_WQ_NAME_LEN you chose is 512. As it stands there really isn't a problem here. And, it sounds like you are wanting to replace this once Tejun improves the interface... maybe that was worth pointing out. > + if (!mp->m_unwritten_workqueue) > + goto out_destroy_data_iodone_queue; > + > + return 0; > + > +out_destroy_data_iodone_queue: > + destroy_workqueue(mp->m_data_workqueue); > +out: > + return -ENOMEM; > +#undef XFS_WQ_NAME_LEN Reviewed-by: Ben Myers From sim@netnation.com Wed Nov 16 13:56:47 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAGJulZ5216008 for ; Wed, 16 Nov 2011 13:56:47 -0600 X-ASG-Debug-ID: 1321473405-443201360000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from peace.netnation.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 776251D12198 for ; Wed, 16 Nov 2011 11:56:46 -0800 (PST) Received: from peace.netnation.com (peace.netnation.com [204.174.223.2]) by cuda.sgi.com with ESMTP id FLIjWLB7fo6kr0Ry for ; Wed, 16 Nov 2011 11:56:46 -0800 (PST) Received: from sim by peace.netnation.com with local (Exim 4.69) (envelope-from ) id 1RQlb9-00081G-Bc; Wed, 16 Nov 2011 11:56:43 -0800 Date: Wed, 16 Nov 2011 11:56:43 -0800 From: Simon Kirby To: Christoph Hellwig Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS read hangs in 3.1-rc10 Subject: Re: XFS read hangs in 3.1-rc10 Message-ID: <20111116195643.GF24411@hostway.ca> References: <20111020224214.GC22772@hostway.ca> <20111021132240.GA24136@infradead.org> <20111021202857.GB30100@hostway.ca> <20111024082219.GA19941@infradead.org> <20111025200748.GA25043@hostway.ca> <20111026112521.GA10432@infradead.org> <20111104210324.GB14983@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111104210324.GB14983@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: peace.netnation.com[204.174.223.2] X-Barracuda-Start-Time: 1321473406 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0035 1.0000 -1.9982 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80433 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Nov 04, 2011 at 05:03:24PM -0400, Christoph Hellwig wrote: > Sorry Simon, > > I haven't really been able to get back to this as fast as I wanted to > do. Can you do another run and check if the patch still helps your > issue even if you remove the xfs_log_force line? Hello! Sorry for the delay in testing. Yes, everything looks fine even with the xfs_log_force line from your patch commented out. So, the changes in xfs_reclaim_inode() are just the set_bit(XBT_FORCE_FLUSH) and wake_up_process(), relative to 3.1. Simon- From bpm@sgi.com Wed Nov 16 15:03:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAGL3VhK221913 for ; Wed, 16 Nov 2011 15:03:31 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id C61D730404E; Wed, 16 Nov 2011 13:03:27 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 13F00431F74; Wed, 16 Nov 2011 15:03:47 -0600 (CST) Date: Wed, 16 Nov 2011 15:03:47 -0600 From: Ben Myers To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 4/5] xfs: log file size updates as part of unwritten extent conversion Message-ID: <20111116210347.GH29840@sgi.com> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201427.104680606@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111115201427.104680606@bombadil.infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Christoph, On Tue, Nov 15, 2011 at 03:14:11PM -0500, Christoph Hellwig wrote: > If we convert and unwritten extent past the current i_size log the size update > as part of the extent manipulation transactions instead of doing an unlogged > metadata update later. > > Signed-off-by: Christoph Hellwig > > --- > fs/xfs/xfs_aops.c | 11 ++++++----- > fs/xfs/xfs_iomap.c | 19 ++++++++++++++++++- > 2 files changed, 24 insertions(+), 6 deletions(-) > > Index: linux-2.6/fs/xfs/xfs_iomap.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_iomap.c 2011-11-08 08:02:50.234386118 +0100 > +++ linux-2.6/fs/xfs/xfs_iomap.c 2011-11-08 08:14:04.319888994 +0100 > @@ -31,6 +31,7 @@ > #include "xfs_ialloc_btree.h" > #include "xfs_dinode.h" > #include "xfs_inode.h" > +#include "xfs_inode_item.h" > #include "xfs_btree.h" > #include "xfs_bmap.h" > #include "xfs_rtalloc.h" > @@ -645,6 +646,7 @@ xfs_iomap_write_unwritten( > xfs_trans_t *tp; > xfs_bmbt_irec_t imap; > xfs_bmap_free_t free_list; > + xfs_fsize_t i_size; > uint resblks; > int committed; > int error; > @@ -705,7 +707,22 @@ xfs_iomap_write_unwritten( > if (error) > goto error_on_bmapi_transaction; > > - error = xfs_bmap_finish(&(tp), &(free_list), &committed); > + /* > + * Log the updated inode size as we go. We have to be careful > + * to only log it up to the actual write offset if it is > + * halfway into a block. > + */ > + i_size = XFS_FSB_TO_B(mp, offset_fsb + count_fsb); ^^^^^^^^^ imap.br_blockcount? Do you intend to log the new inode size based upon the entire request? I discussed this a bit with Alex, and I think we agreed that it might be better to update the size based upon the length of the extent that was converted. Regards, Ben > + if (i_size > offset + count) > + i_size = offset + count; > + > + i_size = xfs_new_eof(ip, i_size); > + if (i_size) { > + ip->i_d.di_size = i_size; > + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); > + } > + > + error = xfs_bmap_finish(&tp, &free_list, &committed); > if (error) > goto error_on_bmapi_transaction; > > Index: linux-2.6/fs/xfs/xfs_aops.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-08 08:12:31.586400976 +0100 > +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-08 08:14:04.319888994 +0100 > @@ -183,13 +183,14 @@ xfs_end_io( > ioend->io_error = -error; > goto done; > } > + } else { > + /* > + * We might have to update the on-disk file size after > + * extending writes. > + */ > + xfs_setfilesize(ioend); > } > > - /* > - * We might have to update the on-disk file size after extending > - * writes. > - */ > - xfs_setfilesize(ioend); > done: > xfs_destroy_ioend(ioend); > } > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From rjw@sisk.pl Wed Nov 16 16:15:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAGMFtOW228900 for ; Wed, 16 Nov 2011 16:15:56 -0600 X-ASG-Debug-ID: 1321481753-29fc010d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ogre.sisk.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8E9D81D12F8F for ; Wed, 16 Nov 2011 14:15:53 -0800 (PST) Received: from ogre.sisk.pl (ogre.sisk.pl [217.79.144.158]) by cuda.sgi.com with ESMTP id SSbuWoSPBX3NJu4s for ; Wed, 16 Nov 2011 14:15:53 -0800 (PST) Received: from localhost (localhost.localdomain [127.0.0.1]) by ogre.sisk.pl (Postfix) with ESMTP id 4DEC61C6861; Wed, 16 Nov 2011 21:39:35 +0100 (CET) Received: from ogre.sisk.pl ([127.0.0.1]) by localhost (ogre.sisk.pl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20352-10; Wed, 16 Nov 2011 21:39:25 +0100 (CET) Received: from ferrari.rjw.lan (220-bem-13.acn.waw.pl [82.210.184.220]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ogre.sisk.pl (Postfix) with ESMTP id 2EF101C6786; Wed, 16 Nov 2011 21:39:25 +0100 (CET) From: "Rafael J. Wysocki" To: Ferenc Wagner X-ASG-Orig-Subj: Re: [PATCH] PM / Freezer: Freeze filesystems while freezing processes (v2) Subject: Re: [PATCH] PM / Freezer: Freeze filesystems while freezing processes (v2) Date: Wed, 16 Nov 2011 22:50:41 +0100 User-Agent: KMail/1.13.6 (Linux/3.1.0-rc10+; KDE/4.6.0; x86_64; ; ) Cc: Christoph , "Theodore Ts'o" , LKML , xfs@oss.sgi.com, Christoph Hellwig , Nigel Cunningham , Pavel Machek , linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, Linux PM list References: <4E1C70AD.1010101@u-club.de> <201110222335.29573.rjw@sisk.pl> <874ny4jhy4.fsf@tac.ki.iif.hu> In-Reply-To: <874ny4jhy4.fsf@tac.ki.iif.hu> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201111162250.42080.rjw@sisk.pl> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at ogre.sisk.pl using MkS_Vir for Linux X-Barracuda-Connect: ogre.sisk.pl[217.79.144.158] X-Barracuda-Start-Time: 1321481754 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80441 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean On Wednesday, November 16, 2011, Ferenc Wagner wrote: > "Rafael J. Wysocki" writes: > > > On Saturday, October 22, 2011, Christoph wrote: > > > >>> PM / Freezer: Freeze filesystems while freezing processes (v2) > >>> > >>> On Sunday, August 07, 2011, Dave Chinner wrote: > >>> > >>>> On Sat, Aug 06, 2011 at 11:17:18PM +0200, Rafael J. Wysocki wrote: > >>>> > >>>>> From: Rafael J. Wysocki > >>>>> > >>>>> Freeze all filesystems during the freezing of tasks by calling > >>>>> freeze_bdev() for each of them and thaw them during the thawing of > >>>>> tasks with the help of thaw_bdev(). > >>>>> > >>>>> This is needed by hibernation, because some filesystems (e.g. XFS) > >>>>> deadlock with the preallocation of memory used by it if the memory > >>>>> pressure caused by it is too heavy. > >>> > >>> Below is an alternative fix, the changelog pretty much explains the > >>> idea. > >>> > >>> I've tested it on Toshiba Portege R500, but I don't have an XFS > >>> partition to verify that it really helps, so I'd appreciate it if > >>> someone able to reproduce the original issue could test it and report > >>> back. > >> > >> Well, the kernel bugtracker is still down and I just like to post my > >> experience with kernel (x64) v3.1-rc8/9 + patches. My machine is a > >> MacBookPro, doomed with 4GB RAM running debian. > >> > >> Bug #1 > >> > >> on the way to hibernate, machine hangs on > >> > >> "PM: Preallocating image memory..." > >> > >> this patch worked for me now for weeks: > >> "[PATCH] PM / Freezer: Freeze filesystems while freezing processes (v2)" > >> https://lkml.org/lkml/2011/9/24/77 > > > > This patch is going to be merged into 3.2. > > Hi, > > I was the original reporter of the Bugzilla issue, just didn't know > about this thread until recently. Anyway, I'm running 3.2-rc1 now, > which contains the alternative fix, and I can confirm that it indeed > works: hibernation does not deadlock on my XFS rooted system anymore > during memory preallocation. Thanks everybody for his or her work on > the issue! > > To add something still, preallocation now ends with a couple of seconds > of heavy disk activity, but with several seconds of total inactivity > beforehand. Is this warranted by some CPU intensive task at that stage? Quilte frankly, I have no idea. Thanks, Rafael From wkendall@sgi.com Wed Nov 16 16:26:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAGMQDcg229687 for ; Wed, 16 Nov 2011 16:26:13 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id D29518F8073; Wed, 16 Nov 2011 14:26:09 -0800 (PST) Received: from augusta (augusta.americas.sgi.com [128.162.233.117]) by estes.americas.sgi.com (Postfix) with ESMTP id CCDC470017B7; Wed, 16 Nov 2011 16:26:09 -0600 (CST) Received: by augusta (Postfix, from userid 2022) id 8C18E20FC197; Wed, 16 Nov 2011 16:26:09 -0600 (CST) From: Bill Kendall To: xfs@oss.sgi.com Cc: Bill Kendall Subject: [PATCH] xfsdump: obsolete excluding files by extended attr Date: Wed, 16 Nov 2011 16:26:06 -0600 Message-Id: <1321482366-6161-1-git-send-email-wkendall@sgi.com> X-Mailer: git-send-email 1.7.0.4 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfsdump supports excluding files by setting the "no-dump" flag using chattr, or by adding an extended attribute named "SGI_XFSDUMP_SKIP_FILE". The former is the preferred method, and a deprecation warning has been issued for 5+ years if the latter method is used. This patch removes support for the "SGI_XFSDUMP_SKIP_FILE" attribute. Signed-off-by: Bill Kendall --- dump/inomap.c | 38 -------------------------------------- man/man8/xfsdump.8 | 5 +---- 2 files changed, 1 insertions(+), 42 deletions(-) diff --git a/dump/inomap.c b/dump/inomap.c index a3b1220..aa4f59d 100644 --- a/dump/inomap.c +++ b/dump/inomap.c @@ -595,44 +595,6 @@ cb_add( void *arg1, MAP_NDR_NOCHNG ); inomap_exclude_skipattr++; return 0; - } else if (allowexcludefiles_pr && - (statp->bs_xflags & XFS_XFLAG_HASATTR)) { - int rval; - attr_multiop_t attrop; - static char *skip_attr_name = "SGI_XFSDUMP_SKIP_FILE"; - static int deprecated_msg_issued = 0; - - attrop.am_attrname = skip_attr_name; - attrop.am_attrvalue = NULL; - attrop.am_length = 0; - attrop.am_error = 0; - attrop.am_flags = 0; - attrop.am_opcode = ATTR_OP_GET; - - rval = jdm_attr_multi( fshandlep, - statp, - (char *)&attrop, - 1, - 0 ); - if ( !rval && (!attrop.am_error || attrop.am_error == E2BIG || attrop.am_error == ERANGE) ) { - mlog( MLOG_DEBUG | MLOG_EXCLFILES, - "pruned ino %llu, owner %u, estimated size %llu: skip attribute set\n", - statp->bs_ino, - statp->bs_uid, - estimated_size ); - if ( !deprecated_msg_issued ) { - deprecated_msg_issued = 1; - mlog( MLOG_SILENT | MLOG_WARNING, - "excluding files using %s attribute is deprecated\n", - skip_attr_name ); - } - inomap_add( cb_inomap_contextp, - ino, - (gen_t)statp->bs_gen, - MAP_NDR_NOCHNG ); - inomap_exclude_skipattr++; - return 0; - } } inomap_add( cb_inomap_contextp, diff --git a/man/man8/xfsdump.8 b/man/man8/xfsdump.8 index 5360378..fb47f7b 100644 --- a/man/man8/xfsdump.8 +++ b/man/man8/xfsdump.8 @@ -112,10 +112,7 @@ xfsdump cannot fit a media file onto a single tape. Allow files to be excluded from the dump. This will cause xfsdump to skip files which have the "no dump" file attribute set. See the "Excluding individual files" section below for details on setting -this file attribute. Files with an extended attribute named -"SGI_XFSDUMP_SKIP_FILE" will also be skipped, however this method -is deprecated and xfsdump will stop checking for it in a future -version. +this file attribute. .TP 5 \f3\-f\f1 \f2dest\f1 [ \f3\-f\f1 \f2dest\f1 ... ] Specifies a dump destination. -- 1.7.0.4 From david@fromorbit.com Wed Nov 16 17:15:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAGNFNdR234380 for ; Wed, 16 Nov 2011 17:15:23 -0600 X-ASG-Debug-ID: 1321485320-2a1401f10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 751381D12F33 for ; Wed, 16 Nov 2011 15:15:21 -0800 (PST) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 6BgETgrAdcFDAEPF for ; Wed, 16 Nov 2011 15:15:21 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av4EAFVBxE55Lbtu/2dsb2JhbABCqgKBBoFyAQEBAwEBAQEkExwYCwULCAMOChUZFBMSAyETiAIItj0ShmSCPmMElDOSEQ Received: from ppp121-45-187-110.lns20.syd7.internode.on.net (HELO dastard) ([121.45.187.110]) by ipmail07.adl2.internode.on.net with ESMTP; 17 Nov 2011 09:45:19 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RQohJ-0001rF-H2; Thu, 17 Nov 2011 10:15:17 +1100 Date: Thu, 17 Nov 2011 10:15:17 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/5] [PATCH] xfs: fix attr2 vs large data fork assert Subject: Re: [PATCH 1/5] [PATCH] xfs: fix attr2 vs large data fork assert Message-ID: <20111116231517.GA7046@dastard> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201426.498870090@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111115201426.498870090@bombadil.infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1321485322 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80445 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 15, 2011 at 03:14:08PM -0500, Christoph Hellwig wrote: > With Dmitry fsstress updates I've seen very reproducible crashes in > xfs_attr_shortform_remove because xfs_attr_shortform_bytesfit claims that > the attributes would not fit inline into the inode after removing an > attribute. It turns out that we were operating on an inode with lots > of delalloc extents, and thus an if_bytes values for the data fork that > is larger than biggest possible on-disk storage for it which utterly > confuses the code near the end of xfs_attr_shortform_bytesfit. We have a test that stresses allocated extents vs attributes in the xfs_fsr swapext test (227), but that does not take into account delalloc extents. It sounds like it would be relatively easy to write a regression test for this particular case - create a file with a bunch of attributes, then create a number of delalloc data extents, then remove the attributes to trigger the condition in xfs_attr_shortform_remove().... > Fix this by always allowing the current attribute fork, like we already > do for the attr1 format, given that delalloc conversion will take care > for moving either the data or attribute area out of line if it doesn't > fit at that point - or making the point moot by merging extents at this > point. > > Also document the function better, and clean up some lose bits. While you are touching that function, can you fix all the whitespace damage as well? (lots of trailing whitespace). There's a couple of typos I noticed in your changes (below), but otherwise looks good. Reviewed-by: Dave Chinner > > Signed-off-by: Christoph Hellwig > > Index: linux-2.6/fs/xfs/xfs_attr_leaf.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_attr_leaf.c 2011-11-04 13:46:59.481655134 +0100 > +++ linux-2.6/fs/xfs/xfs_attr_leaf.c 2011-11-04 15:58:06.480155275 +0100 > @@ -110,6 +110,7 @@ xfs_attr_namesp_match(int arg_flags, int > /* > * Query whether the requested number of additional bytes of extended > * attribute space will be able to fit inline. > + * > * Returns zero if not, else the di_forkoff fork offset to be used in the > * literal area for attribute data once the new bytes have been added. > * > @@ -136,11 +137,26 @@ xfs_attr_shortform_bytesfit(xfs_inode_t > return (offset >= minforkoff) ? minforkoff : 0; > } > > - if (!(mp->m_flags & XFS_MOUNT_ATTR2)) { > - if (bytes <= XFS_IFORK_ASIZE(dp)) > - return dp->i_d.di_forkoff; > + /* > + * If the requested numbers of bytes is smaller or equal to the > + * current attribute fork size we can always proceed. > + * > + * Note that if_bytes in the data fork might actually be larger than > + * the current data fork size is due to delalloc extents. In that > + * case either the extent count will go down when they are converted > + * to ral extents, or the delalloc conversion will take care of the real > + * literal area rebalancing. > + */ > + if (bytes <= XFS_IFORK_ASIZE(dp)) > + return dp->i_d.di_forkoff; > + > + /* > + * For attr2 we can try to move the forkoff if there is space in the > + * literal area, but for the old format we are done if there is no > + * space in the fixes attribute fork. > + */ > + if (!(mp->m_flags & XFS_MOUNT_ATTR2)) > return 0; > - } > > dsize = dp->i_df.if_bytes; > > @@ -157,10 +173,9 @@ xfs_attr_shortform_bytesfit(xfs_inode_t > xfs_default_attroffset(dp)) > dsize = XFS_BMDR_SPACE_CALC(MINDBTPTRS); > break; > - > case XFS_DINODE_FMT_BTREE: > /* > - * If have data btree then keep forkoff if we have one, > + * If have a data btree then keep forkoff if we have one, If we have > * otherwise we are adding a new attr, so then we set > * minforkoff to where the btree root can finish so we have > * plenty of room for attrs > @@ -168,10 +183,9 @@ xfs_attr_shortform_bytesfit(xfs_inode_t > if (dp->i_d.di_forkoff) { > if (offset < dp->i_d.di_forkoff) > return 0; > - else > - return dp->i_d.di_forkoff; > - } else > - dsize = XFS_BMAP_BROOT_SPACE(dp->i_df.if_broot); > + return dp->i_d.di_forkoff; > + } > + dsize = XFS_BMAP_BROOT_SPACE(dp->i_df.if_broot); > break; > } > > @@ -186,10 +200,10 @@ xfs_attr_shortform_bytesfit(xfs_inode_t > maxforkoff = XFS_LITINO(mp) - XFS_BMDR_SPACE_CALC(MINABTPTRS); > maxforkoff = maxforkoff >> 3; /* rounded down */ > > - if (offset >= minforkoff && offset < maxforkoff) > - return offset; > if (offset >= maxforkoff) > return maxforkoff; > + if (offset >= minforkoff) > + return offset; > return 0; > } > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Nov 16 17:24:34 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAGNOYJK235634 for ; Wed, 16 Nov 2011 17:24:34 -0600 X-ASG-Debug-ID: 1321485872-5e5b01aa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B11E5256EB9 for ; Wed, 16 Nov 2011 15:24:32 -0800 (PST) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id ZDJ1WDqT2g00Qwth for ; Wed, 16 Nov 2011 15:24:32 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av4EAJhExE55Lbtu/2dsb2JhbABCqgKBBoFyAQEEAScTHCMFCwgDDgouFCUDIRMbh2e1NRKJImMElDOSEQ Received: from ppp121-45-187-110.lns20.syd7.internode.on.net (HELO dastard) ([121.45.187.110]) by ipmail07.adl2.internode.on.net with ESMTP; 17 Nov 2011 09:54:31 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RQoqE-0001s9-6Q; Thu, 17 Nov 2011 10:24:30 +1100 Date: Thu, 17 Nov 2011 10:24:30 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Subject: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Message-ID: <20111116232430.GB7046@dastard> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201426.686729205@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111115201426.686729205@bombadil.infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1321485873 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80447 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 15, 2011 at 03:14:09PM -0500, Christoph Hellwig wrote: > commit 77d7a0c "xfs: Non-blocking inode locking in IO completion" introduced > a trylocked and defer scheme in xfs_setfilesize to avoid deadlocks when on > XFS filesystem is used ontop of another using the loop device, and we > fsync in the loop filesystem. > > Now that we have the cheap enough concurrency managed workqueues, we can > create per-filesystem instead of global workqueues and remove this scheme > again, given that it has the potential of delaying size updates and is not > helpful once we start to log the inode size. > > Signed-off-by: Christoph Hellwig .... > > +STATIC int > +xfs_init_mount_workqueues( > + struct xfs_mount *mp) > +{ > + snprintf(mp->m_data_workqueue_name, XFS_WQ_NAME_LEN, > + "xfs-data/%s", mp->m_fsname); > + mp->m_data_workqueue = > + alloc_workqueue(mp->m_data_workqueue_name, WQ_MEM_RECLAIM, 1); > + if (!mp->m_data_workqueue) > + goto out; > + > + snprintf(mp->m_unwritten_workqueue_name, XFS_WQ_NAME_LEN, > + "xfs-conv/%s", mp->m_fsname); > + mp->m_unwritten_workqueue = > + alloc_workqueue(mp->m_unwritten_workqueue_name, > + WQ_MEM_RECLAIM, 1); > + if (!mp->m_unwritten_workqueue) > + goto out_destroy_data_iodone_queue; > + > + return 0; > + > +out_destroy_data_iodone_queue: > + destroy_workqueue(mp->m_data_workqueue); > +out: > + return -ENOMEM; > +#undef XFS_WQ_NAME_LEN Don't need the undef here anymore as the #define is in the header file and not local to the function. > Index: linux-2.6/fs/xfs/xfs_mount.h > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_mount.h 2011-11-10 16:50:40.787796774 +0100 > +++ linux-2.6/fs/xfs/xfs_mount.h 2011-11-15 09:15:25.053316473 +0100 > @@ -211,6 +211,12 @@ typedef struct xfs_mount { > struct shrinker m_inode_shrink; /* inode reclaim shrinker */ > int64_t m_low_space[XFS_LOWSP_MAX]; > /* low free space thresholds */ > + > + struct workqueue_struct *m_data_workqueue; > + struct workqueue_struct *m_unwritten_workqueue; > +#define XFS_WQ_NAME_LEN 512 > + char m_data_workqueue_name[XFS_WQ_NAME_LEN]; > + char m_unwritten_workqueue_name[XFS_WQ_NAME_LEN]; > } xfs_mount_t; Can't say I'm a great fan of this - making the workqueue code use kstrdup() would be a much better better solution, IMO, just like was done a while for the SLAB cache names to solve exactly the same problem.... Regardless, Reviewed-by: Dave Chinner Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Nov 16 17:28:39 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAGNSc02236366 for ; Wed, 16 Nov 2011 17:28:39 -0600 X-ASG-Debug-ID: 1321486116-29fc02310000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3DDB71D13076 for ; Wed, 16 Nov 2011 15:28:37 -0800 (PST) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id l20wU8oRCGgjIN11 for ; Wed, 16 Nov 2011 15:28:37 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAJhExE55Lbtu/2dsb2JhbABCqgKBBoFyAQEFOhwjEAgDDgouFCUDIRO9NxKJImMElDOSEQ Received: from ppp121-45-187-110.lns20.syd7.internode.on.net (HELO dastard) ([121.45.187.110]) by ipmail07.adl2.internode.on.net with ESMTP; 17 Nov 2011 09:58:36 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RQouB-0001sr-CN; Thu, 17 Nov 2011 10:28:35 +1100 Date: Thu, 17 Nov 2011 10:28:35 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/5] xfs: do not require an ioend for new EOF calculation Subject: Re: [PATCH 3/5] xfs: do not require an ioend for new EOF calculation Message-ID: <20111116232835.GC7046@dastard> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201426.862605739@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111115201426.862605739@bombadil.infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1321486118 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1869 1.0000 -0.8973 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.90 X-Barracuda-Spam-Status: No, SCORE=-0.90 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80447 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 15, 2011 at 03:14:10PM -0500, Christoph Hellwig wrote: > Replace xfs_ioend_new_eof with a new inline xfs_new_eof helper that > doesn't require and ioend, and is available also outside of xfs_aops.c. > > Also make the code a bit more clear by using a normal if statement > instead of a slightly misleading MIN(). > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Nov 16 17:58:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAGNwwET239437 for ; Wed, 16 Nov 2011 17:58:58 -0600 X-ASG-Debug-ID: 1321487935-617902010000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4CC95256F77 for ; Wed, 16 Nov 2011 15:58:56 -0800 (PST) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id MDszV93SoDxWeFt3 for ; Wed, 16 Nov 2011 15:58:56 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EALBLxE55Lbtu/2dsb2JhbABCqgSBBoFyAQEFOhwjEAgDDgouFCUDIRO8ChKJImMElDOSEQ Received: from ppp121-45-187-110.lns20.syd7.internode.on.net (HELO dastard) ([121.45.187.110]) by ipmail07.adl2.internode.on.net with ESMTP; 17 Nov 2011 10:28:55 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RQpNV-0001vs-8n; Thu, 17 Nov 2011 10:58:53 +1100 Date: Thu, 17 Nov 2011 10:58:53 +1100 From: Dave Chinner To: Ben Myers Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/5] xfs: log file size updates as part of unwritten extent conversion Subject: Re: [PATCH 4/5] xfs: log file size updates as part of unwritten extent conversion Message-ID: <20111116235853.GD7046@dastard> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201427.104680606@bombadil.infradead.org> <20111116210347.GH29840@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111116210347.GH29840@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1321487937 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80449 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 16, 2011 at 03:03:47PM -0600, Ben Myers wrote: > Hey Christoph, > > On Tue, Nov 15, 2011 at 03:14:11PM -0500, Christoph Hellwig wrote: > > If we convert and unwritten extent past the current i_size log the size update > > as part of the extent manipulation transactions instead of doing an unlogged > > metadata update later. > > > > Signed-off-by: Christoph Hellwig > > > > --- > > fs/xfs/xfs_aops.c | 11 ++++++----- > > fs/xfs/xfs_iomap.c | 19 ++++++++++++++++++- > > 2 files changed, 24 insertions(+), 6 deletions(-) > > > > Index: linux-2.6/fs/xfs/xfs_iomap.c > > =================================================================== > > --- linux-2.6.orig/fs/xfs/xfs_iomap.c 2011-11-08 08:02:50.234386118 +0100 > > +++ linux-2.6/fs/xfs/xfs_iomap.c 2011-11-08 08:14:04.319888994 +0100 > > @@ -31,6 +31,7 @@ > > #include "xfs_ialloc_btree.h" > > #include "xfs_dinode.h" > > #include "xfs_inode.h" > > +#include "xfs_inode_item.h" > > #include "xfs_btree.h" > > #include "xfs_bmap.h" > > #include "xfs_rtalloc.h" > > @@ -645,6 +646,7 @@ xfs_iomap_write_unwritten( > > xfs_trans_t *tp; > > xfs_bmbt_irec_t imap; > > xfs_bmap_free_t free_list; > > + xfs_fsize_t i_size; > > uint resblks; > > int committed; > > int error; > > @@ -705,7 +707,22 @@ xfs_iomap_write_unwritten( > > if (error) > > goto error_on_bmapi_transaction; > > > > - error = xfs_bmap_finish(&(tp), &(free_list), &committed); > > + /* > > + * Log the updated inode size as we go. We have to be careful > > + * to only log it up to the actual write offset if it is > > + * halfway into a block. > > + */ > > + i_size = XFS_FSB_TO_B(mp, offset_fsb + count_fsb); > ^^^^^^^^^ > imap.br_blockcount? > > Do you intend to log the new inode size based upon the entire request? > > I discussed this a bit with Alex, and I think we agreed that it might be > better to update the size based upon the length of the extent that was > converted. It probably doesn't matter because we've already written data to the entire range - we only really need to update the inode size once per IO. All we are discussing here is how the failure case behaves - whether the EOF reflects the entire IO but not the data that was written, or the EOF reflects the converted range but not the data IO boundaries. However, I'm not sure this is even relevant - if we've got multiple extents to write to and then convert in a single high level IO, they would have been mapped into separate IOs, bios and ioends. That's definitely the case for buffered IO, and AFAICT, the same for direct IO (Christoph - can you confirm this?). Hence I -think- we now only ever convert a single extent at a time in this function and the loop is redundant, and so the code as written behaves as per expected - the file size is updated once per unwritten extent conversion that occurs beyong EOF. Chrisptoph, if this "only one extent per ioend" condition is really true, then is there any need for this loop at all? i.e. do we ever do a partial extent conversion for a completed IO and therefore have to do a second transaction to convert the rest of the extent? Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Nov 16 18:29:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAH0TLlP242745 for ; Wed, 16 Nov 2011 18:29:21 -0600 X-ASG-Debug-ID: 1321489758-125f00770000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 122E11D1327A for ; Wed, 16 Nov 2011 16:29:19 -0800 (PST) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id Aq4YOS7TiSJoGxE9 for ; Wed, 16 Nov 2011 16:29:19 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av4EAMpSxE55Lbtu/2dsb2JhbABCqgWBBoFyAQEEAScTHCMFCwgDDgYELhQlAyETiAKzKRKJImMElDOSEQ Received: from ppp121-45-187-110.lns20.syd7.internode.on.net (HELO dastard) ([121.45.187.110]) by ipmail07.adl2.internode.on.net with ESMTP; 17 Nov 2011 10:59:17 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RQpqt-0001ym-Pb; Thu, 17 Nov 2011 11:29:15 +1100 Date: Thu, 17 Nov 2011 11:29:15 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/5] xfs: log file size updates at I/O completion time Subject: Re: [PATCH 5/5] xfs: log file size updates at I/O completion time Message-ID: <20111117002915.GE7046@dastard> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201427.299361653@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111115201427.299361653@bombadil.infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1321489760 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0204 1.0000 -1.8883 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.89 X-Barracuda-Spam-Status: No, SCORE=-1.89 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80451 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 15, 2011 at 03:14:12PM -0500, Christoph Hellwig wrote: > Do not use unlogged metadata updates and the VFS dirty bit for updating > the file size after writeback. In addition to causing various problems > with updates getting delayed for far too log this also drags in the > unscalable VFS dirty tracking, and is one of the few remaining unlogged > metadata updates. > > Note that we allocate a new transaction from the I/O completion handler. > While this sounds fairly dangerous it isn't an issue in practice given > that any appending write alreay had to start a transaction in writepages > to allocate blocks, and we'll start throtteling there if we run low on > log space or memory. Actually, that is not true: we know that transaction reservation in Io completion can hang systems. That's why we specifically shifted unwritten extent conversion to it's own workqueue. $ gl -n 1 c626d17 commit c626d174cfe38e7f0545d074c299527892cd8c45 Author: Dave Chinner Date: Mon Apr 6 18:42:11 2009 +0200 xfs: prevent unwritten extent conversion from blocking I/O completion Unwritten extent conversion can recurse back into the filesystem due to memory allocation. Memory reclaim requires I/O completions to be processed to allow the callers to make progress. If the I/O completion workqueue thread is doing the recursion, then we have a deadlock situation. Move unwritten extent completion into it's own workqueue so it doesn't block I/O completions for normal delayed allocation or overwrite data. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig The condition that I saw most frequently was transaction reservation blocking and preventing IO from completing and therefore marking memory clean and freeable, whilst the unwritten extent conversion transaction reservation was blocked because the tail of the log could not be moved due to memory allocation for inode buffers to write back the inodes pinning the tail of the log failing and hence looping endlessly in the buffer cache. If we do transaction reservations for every single extending IO completion during Io completion, we are effectively making the deadlock possible for most extending delayed allocation write IOs (i.e. the majority of write IO in a typical system). Contrast that to when we are in the .writepage calling context: transaction reservation does not block IO completions that do not require unwritten extent conversion, so dirty pages can still be cleaned even when transactions and/or transaction reservations stall waiting for memory to be freed. > We could still occasionally stall in the completion handler, but given > that we have per-filesystems workqueues for the I/O completions, > and completions that do not have to either convert unwritten extents > or update the file size are processed from interrupt context we do not > have to worry about this stalling a system to death. per-filesystem workqueues does not fix the problem - the deadlock still exists when you only have one active filesystem. > In addition to that implementing log reservations from ->writepage that > are only released by a different thread requires a lot of work, That's trivial to do - there's nothing thread specific about a transaction. All you need to do is ensure that everything is logged before you pass the struct xfs_trans off to another thread. We can do that simply by adding it to the ioend. > and even > with that wasn't quite doable in a deadlock-free manner. What new deadlocks did you find? I can't think of any off the top of my head, so I'm curious to know what you hit... Cheers, Dave. -- Dave Chinner david@fromorbit.com From news@pears-gallery.com Wed Nov 16 20:03:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.6 required=5.0 tests=BAYES_50,HTML_FONT_SIZE_HUGE, HTML_MESSAGE,RCVD_IN_SORBS_WEB autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAH23JiA250983 for ; Wed, 16 Nov 2011 20:03:19 -0600 X-ASG-Debug-ID: 1321495396-5e5c037a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hvx5105.celeo.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 37E692577B5 for ; Wed, 16 Nov 2011 18:03:17 -0800 (PST) Received: from hvx5105.celeo.net (hvx5105.celeo.net [95.128.73.105]) by cuda.sgi.com with ESMTP id rQRcHlPWggY2u1xj for ; Wed, 16 Nov 2011 18:03:17 -0800 (PST) Received: from mov76-1-78-236-189-81.fbx.proxad.net (mov76-1-78-236-189-81.fbx.proxad.net [78.236.189.81]) (using SSLv3 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: news@pears-gallery.com) by hvx5105.celeo.net (Postfix) with ESMTPSA id CB100134FC5 for ; Thu, 17 Nov 2011 03:02:48 +0100 (CET) From: "Pears gallery" X-ASG-Orig-Subj: www.pears-gallery.com : SAISON 2 Subject: www.pears-gallery.com : SAISON 2 To: "xfs" Content-Type: multipart/alternative; boundary="Ylf0klObUDFOQ=_lXoVdpNbS8xZuLRkuts" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Organization: Pears gallery Date: Thu, 17 Nov 2011 03:03:15 +0100 X-Priority: 1 Message-Id: <20111117020248.CB100134FC5@hvx5105.celeo.net> X-Barracuda-Connect: hvx5105.celeo.net[95.128.73.105] X-Barracuda-Start-Time: 1321495398 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.49 X-Barracuda-Spam-Status: No, SCORE=0.49 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085, HTML_FONT_SIZE_HUGE, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80457 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.39 HTML_FONT_SIZE_HUGE BODY: HTML font size is huge 0.00 HTML_MESSAGE BODY: HTML included in message 0.10 BSF_SC0_SA085 Custom Rule SA085 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format --Ylf0klObUDFOQ=_lXoVdpNbS8xZuLRkuts Content-Type: text/plain ; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable www.pears-gallery.com A NEW VERSION =20 12.000 visitors each month Display your works differently on the Internet Automatic translation in 8 languages ??of your work 2 MONTH =3D 1 EUROS WITH THIS CODE : ILOVEART CLICK ABONNEMENT 1 MONTH 25 EUROS AND ADD CODE OUR FACEBOOK =20 =20 =20 =20 Thanks, =20 Pears Gallery Team Sophie, Romain et David. =20 Unsubscribe --Ylf0klObUDFOQ=_lXoVdpNbS8xZuLRkuts Content-Type: text/html ; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

=

www.pears-gallery.com

A NEW VERSION

=  

12.000 visitors each= month

Display your works d= ifferently on the Internet

Automatic translatio= n in 8 languages ??of your work

&nbs= p;

&nbs= p;

2 MO= NTH =3D 1 EUROS

WITH THIS CODE : ILOVEART

CLICK ABONN= EMENT 1 MONTH 25 EUROS AND ADD CODE

OUR FACEBOOK

 

 

 

 

Thanks,

 

Pears Gallery Team

Sophie, Romain et David.

 

 

U= nsubscribe

--Ylf0klObUDFOQ=_lXoVdpNbS8xZuLRkuts-- From david@fromorbit.com Wed Nov 16 22:25:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAH4Pqci004015 for ; Wed, 16 Nov 2011 22:25:53 -0600 X-ASG-Debug-ID: 1321503949-4b9f00580000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 900492587C3 for ; Wed, 16 Nov 2011 20:25:50 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id AqUxStdMGBSXNKiO for ; Wed, 16 Nov 2011 20:25:50 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAASKxE55Lbtu/2dsb2JhbAA6CKoFgQaBcgEBBTocIxAIAw4KLhQlAyETumQShlSCTmMElDOSEQ Received: from ppp121-45-187-110.lns20.syd7.internode.on.net (HELO dastard) ([121.45.187.110]) by ipmail06.adl2.internode.on.net with ESMTP; 17 Nov 2011 14:55:45 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RQtXk-0003oC-5e; Thu, 17 Nov 2011 15:25:44 +1100 Date: Thu, 17 Nov 2011 15:25:43 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] repair: avoid ABBA deadlocks on prefetched buffers Subject: Re: [PATCH] repair: avoid ABBA deadlocks on prefetched buffers Message-ID: <20111117042543.GF7046@dastard> References: <20111115210953.GA6670@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111115210953.GA6670@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1321503951 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0037 1.0000 -1.9970 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80467 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 15, 2011 at 04:09:53PM -0500, Christoph Hellwig wrote: > Both the prefetch threads and actual repair processing threads can have > multiple buffers at a time locked, but they do no use a common locker > order, which can lead to ABBA deadlocks while trying to lock the buffers. > > Switch the prefetch code to do a trylock and skip buffers that have > already been locked to avoid this deadlock. > > Reported-by: Arkadiusz Mi??kiewicz > Signed-off-by: Christoph Hellwig Looks sane to me. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From wu.bo@cn.fujitsu.com Wed Nov 16 23:16:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAH5G751008268 for ; Wed, 16 Nov 2011 23:16:07 -0600 X-ASG-Debug-ID: 1321506963-574402940000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 51030154D26F for ; Wed, 16 Nov 2011 21:16:04 -0800 (PST) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id 267qcEXvyraMIHte for ; Wed, 16 Nov 2011 21:16:04 -0800 (PST) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id 33D7C170091; Thu, 17 Nov 2011 13:16:03 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pAH5G1Jl025953; Thu, 17 Nov 2011 13:16:02 +0800 Received: from localhost.localdomain ([10.167.225.174]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011111713155398-126955 ; Thu, 17 Nov 2011 13:15:53 +0800 Message-ID: <4EC4989D.9080107@cn.fujitsu.com> Date: Thu, 17 Nov 2011 13:16:13 +0800 From: WuBo User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, Ben Myers , Christoph Hellwig X-ASG-Orig-Subj: [PATCH] change fallocate to xfs_io falloc Subject: [PATCH] change fallocate to xfs_io falloc References: <4EB20505.7070005@cn.fujitsu.com> In-Reply-To: <4EB20505.7070005@cn.fujitsu.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-17 13:15:53, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-17 13:15:55, Serialize complete at 2011-11-17 13:15:55 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1321506965 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0199 1.0000 -1.8914 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.89 X-Barracuda-Spam-Status: No, SCORE=-1.89 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80470 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Thanks to Ben for pointing it that the fallocate maybe uninstall without checking it, and change fallocate to xfs_io as Christoph suggested. Signed-off-by: Wu Bo --- 274 | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/274 b/274 index b658004..bcf5a11 100755 --- a/274 +++ b/274 @@ -46,6 +46,7 @@ _cleanup() _supported_fs generic _supported_os IRIX Linux _require_scratch +_require_xfs_io_falloc echo "------------------------------" echo "preallocation test" @@ -67,7 +68,7 @@ then exit fi -fallocate -n -o 4K -l 1M test >/dev/null 2>&1 +$XFS_IO_PROG -F -f -c 'falloc 4096 1m' test >/dev/null if [ $? -ne 0 ] then echo "fallocate file err" -- 1.7.3.1 From BATV+614be7b1d234adefc46e+3007+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 17 01:25:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAH7Pocq023508 for ; Thu, 17 Nov 2011 01:25:51 -0600 X-ASG-Debug-ID: 1321514745-6622026f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 949C925DD55 for ; Wed, 16 Nov 2011 23:25:45 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 1f0Mh3PE0ncHjiNr for ; Wed, 16 Nov 2011 23:25:45 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQwLv-0001vu-V7; Thu, 17 Nov 2011 07:25:43 +0000 Date: Thu, 17 Nov 2011 02:25:43 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Subject: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Message-ID: <20111117072543.GA3733@infradead.org> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201426.686729205@bombadil.infradead.org> <20111116232430.GB7046@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111116232430.GB7046@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321514746 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80479 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 17, 2011 at 10:24:30AM +1100, Dave Chinner wrote: > Don't need the undef here anymore as the #define is in the header > file and not local to the function. I'll fix it up. > Can't say I'm a great fan of this - making the workqueue code use > kstrdup() would be a much better better solution, IMO, just like was > done a while for the SLAB cache names to solve exactly the same > problem.... Tejun has a patch to make the name argument to alloc_workqueue both dynamically allocated and varags format. That'll fix it, but we can't rely on it yet. I will switch over to it later in the 3.3 cycle. From BATV+614be7b1d234adefc46e+3007+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 17 01:30:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAH7U7qE023979 for ; Thu, 17 Nov 2011 01:30:07 -0600 X-ASG-Debug-ID: 1321515005-15c9022b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6E6EB162651D for ; Wed, 16 Nov 2011 23:30:05 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id QuwZvumooqXc8t6A for ; Wed, 16 Nov 2011 23:30:05 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQwQ8-0002np-Io; Thu, 17 Nov 2011 07:30:04 +0000 Date: Thu, 17 Nov 2011 02:30:04 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/5] [PATCH] xfs: fix attr2 vs large data fork assert Subject: Re: [PATCH 1/5] [PATCH] xfs: fix attr2 vs large data fork assert Message-ID: <20111117073004.GB3733@infradead.org> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201426.498870090@bombadil.infradead.org> <20111116231517.GA7046@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111116231517.GA7046@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321515006 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80478 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 17, 2011 at 10:15:17AM +1100, Dave Chinner wrote: > On Tue, Nov 15, 2011 at 03:14:08PM -0500, Christoph Hellwig wrote: > > With Dmitry fsstress updates I've seen very reproducible crashes in > > xfs_attr_shortform_remove because xfs_attr_shortform_bytesfit claims that > > the attributes would not fit inline into the inode after removing an > > attribute. It turns out that we were operating on an inode with lots > > of delalloc extents, and thus an if_bytes values for the data fork that > > is larger than biggest possible on-disk storage for it which utterly > > confuses the code near the end of xfs_attr_shortform_bytesfit. > > We have a test that stresses allocated extents vs attributes in the > xfs_fsr swapext test (227), but that does not take into account > delalloc extents. It sounds like it would be relatively easy to > write a regression test for this particular case - create a file > with a bunch of attributes, then create a number of delalloc data > extents, then remove the attributes to trigger the condition in > xfs_attr_shortform_remove().... Test 117 with Dmitries new fsstress changes hit it 100% reliably before xfstests: freeze fsstress options for 117'th I was planning on adding a copy of the test using an explicit combination of fsstress seeds that reproduce the issue. > While you are touching that function, can you fix all the whitespace > damage as well? (lots of trailing whitespace). There's a couple of > typos I noticed in your changes (below), but otherwise looks good. I'll fix the tpos and whitespace issues. From BATV+614be7b1d234adefc46e+3007+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 17 01:40:05 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAH7e57D024786 for ; Thu, 17 Nov 2011 01:40:05 -0600 X-ASG-Debug-ID: 1321515603-15b702350000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5A47C154D8DD; Wed, 16 Nov 2011 23:40:04 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id XIl9FoNTCCmAn3sW; Wed, 16 Nov 2011 23:40:04 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQwZn-0004oQ-6q; Thu, 17 Nov 2011 07:40:03 +0000 Date: Thu, 17 Nov 2011 02:40:03 -0500 From: Christoph Hellwig To: Ben Myers Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Subject: Re: [PATCH 2/5] xfs: use per-filesystem I/O completion workqueues Message-ID: <20111117074003.GC3733@infradead.org> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201426.686729205@bombadil.infradead.org> <20111116190120.GG29840@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111116190120.GG29840@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321515604 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80480 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 16, 2011 at 01:01:20PM -0600, Ben Myers wrote: > On Tue, Nov 15, 2011 at 03:14:09PM -0500, Christoph Hellwig wrote: > > commit 77d7a0c "xfs: Non-blocking inode locking in IO completion" introduced > > a trylocked and defer scheme in xfs_setfilesize to avoid deadlocks when on > > XFS filesystem is used ontop of another using the loop device, and we > > fsync in the loop filesystem. > > > > Now that we have the cheap enough concurrency managed workqueues, we can > > create per-filesystem instead of global workqueues and remove this scheme > > again, given that it has the potential of delaying size updates and is not > > helpful once we start to log the inode size. > > > > Signed-off-by: Christoph Hellwig > > ... > > > /* > > @@ -168,10 +161,12 @@ xfs_finish_ioend( > > struct xfs_ioend *ioend) > > { > > if (atomic_dec_and_test(&ioend->io_remaining)) { > > + struct xfs_mount *mp = XFS_I(ioend->io_inode)->i_mount; > > + > > if (ioend->io_type == IO_UNWRITTEN) > > - queue_work(xfsconvertd_workqueue, &ioend->io_work); > > + queue_work(mp->m_unwritten_workqueue, &ioend->io_work); > > else if (xfs_ioend_is_append(ioend)) > > I wonder if we could skip size updates due to the 'fast and loose' > nature of xfs_ioend_is_append, and end up destroying the ioend below, > without updating the file size. It's not strictly related to your patch > though. No - xfs_ioend_is_append check that the offset is beyond the on-disk inode size. The loose part is that we don't bother with the in-core i_size and i_new_size which could change due to I/O errors. di_size on the other hand will only go downwards during truncate, and we make sure all outstanding buffered I/Os have finished first. From BATV+614be7b1d234adefc46e+3007+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 17 01:48:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAH7mRRl025480 for ; Thu, 17 Nov 2011 01:48:28 -0600 X-ASG-Debug-ID: 1321516106-780901d40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6E7704D2E56; Wed, 16 Nov 2011 23:48:27 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id uG2LnYFtPqYQu2pN; Wed, 16 Nov 2011 23:48:27 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQwhu-0005lu-Kh; Thu, 17 Nov 2011 07:48:26 +0000 Date: Thu, 17 Nov 2011 02:48:26 -0500 From: Christoph Hellwig To: Ben Myers Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/5] xfs: log file size updates as part of unwritten extent conversion Subject: Re: [PATCH 4/5] xfs: log file size updates as part of unwritten extent conversion Message-ID: <20111117074826.GA18555@infradead.org> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201427.104680606@bombadil.infradead.org> <20111116210347.GH29840@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111116210347.GH29840@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321516107 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80479 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 16, 2011 at 03:03:47PM -0600, Ben Myers wrote: > > + /* > > + * Log the updated inode size as we go. We have to be careful > > + * to only log it up to the actual write offset if it is > > + * halfway into a block. > > + */ > > + i_size = XFS_FSB_TO_B(mp, offset_fsb + count_fsb); > ^^^^^^^^^ > imap.br_blockcount? Indeed. > Do you intend to log the new inode size based upon the entire request? No. > I discussed this a bit with Alex, and I think we agreed that it might be > better to update the size based upon the length of the extent that was > converted. Yes, that was the intention, it just had a bug. From BATV+614be7b1d234adefc46e+3007+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 17 01:51:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAH7pp8W026019 for ; Thu, 17 Nov 2011 01:51:52 -0600 X-ASG-Debug-ID: 1321516310-7ce600b40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 365571D13CE2; Wed, 16 Nov 2011 23:51:50 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id aJQ4rasxsce9Ai5s; Wed, 16 Nov 2011 23:51:50 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQwlC-0006bg-9r; Thu, 17 Nov 2011 07:51:50 +0000 Date: Thu, 17 Nov 2011 02:51:50 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Ben Myers , Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/5] xfs: log file size updates as part of unwritten extent conversion Subject: Re: [PATCH 4/5] xfs: log file size updates as part of unwritten extent conversion Message-ID: <20111117075150.GB18555@infradead.org> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201427.104680606@bombadil.infradead.org> <20111116210347.GH29840@sgi.com> <20111116235853.GD7046@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111116235853.GD7046@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321516311 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80481 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 17, 2011 at 10:58:53AM +1100, Dave Chinner wrote: > However, I'm not sure this is even relevant - if we've got multiple > extents to write to and then convert in a single high level IO, they > would have been mapped into separate IOs, bios and ioends. That's > definitely the case for buffered IO, and AFAICT, the same for direct > IO (Christoph - can you confirm this?). For direct I/O we do a single call to xfs_iomap_write_unwritten for the whole write system call, which might span multiple extents. > Chrisptoph, if this "only one extent per ioend" condition is really > true, then is there any need for this loop at all? i.e. do we ever > do a partial extent conversion for a completed IO and therefore have > to do a second transaction to convert the rest of the extent? It might be a good idea to move the looping code directly into the direct I/O completion path. Or replace the current direct I/O end_io handler mess with something that actually makes sense. For now I'd leave the code as-is but with the fix pointed out by Ben, and look into a test case reproducing that bug. I'll look into figuring out something saner for the direct I/O case later. From BATV+614be7b1d234adefc46e+3007+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 17 02:03:06 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAH835TB027111 for ; Thu, 17 Nov 2011 02:03:06 -0600 X-ASG-Debug-ID: 1321516984-15c202870000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 26607154DC32 for ; Thu, 17 Nov 2011 00:03:04 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id mwbEB6obTlVAE0R9 for ; Thu, 17 Nov 2011 00:03:04 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RQww4-0008U4-9e; Thu, 17 Nov 2011 08:03:04 +0000 Date: Thu, 17 Nov 2011 03:03:04 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/5] xfs: log file size updates at I/O completion time Subject: Re: [PATCH 5/5] xfs: log file size updates at I/O completion time Message-ID: <20111117080304.GA25952@infradead.org> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201427.299361653@bombadil.infradead.org> <20111117002915.GE7046@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111117002915.GE7046@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321516985 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80480 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 17, 2011 at 11:29:15AM +1100, Dave Chinner wrote: > Actually, that is not true: we know that transaction reservation in > Io completion can hang systems. That's why we specifically shifted > unwritten extent conversion to it's own workqueue. > The condition that I saw most frequently was transaction reservation > blocking and preventing IO from completing and therefore marking > memory clean and freeable, whilst the unwritten extent conversion > transaction reservation was blocked because the tail of the log > could not be moved due to memory allocation for inode buffers to > write back the inodes pinning the tail of the log failing and hence > looping endlessly in the buffer cache. If we do transaction > reservations for every single extending IO completion during Io > completion, we are effectively making the deadlock possible for most > extending delayed allocation write IOs (i.e. the majority of write > IO in a typical system). That fact has changed: commit 80641dc66a2d6dfb22af4413227a92b8ab84c7bb Author: Christoph Hellwig Date: Mon Oct 19 04:00:03 2009 +0000 xfs: I/O completion handlers must use NOFS allocations When completing I/O requests we must not allow the memory allocator to recurse into the filesystem, as we might deadlock on waiting for the I/O completion otherwise. The only thing currently allocating normal GFP_KERNEL memory is the allocation of the transaction structure for the unwritten extent conversion. Add a memflags argument to _xfs_trans_alloc to allow controlling the allocator behaviour. So unwritten extent conversion will never recurse back into the filesystem any more. If we still care about blocking on other things (and I've hit this code fairly hard over the last months) we can increase the per-cpu workqueue concurrency limit. Currently xfs limits each of the workqueues to one item, but the default (when passing 0) would be 512. With that we could probably even get away with one per-filesystem workqueue if we want, but I'd really prefer to get the size logging fix out to users ASAP instead of doing all the fine-tuning now. > > In addition to that implementing log reservations from ->writepage that > > are only released by a different thread requires a lot of work, > > That's trivial to do - there's nothing thread specific about a > transaction. All you need to do is ensure that everything is logged > before you pass the struct xfs_trans off to another thread. We > can do that simply by adding it to the ioend. The transaction set PF_FSTRANS in current->flags, which also includes saving and restoring the current flags in (I can't figure out exactly why we do the later). Without this we trivially deadlock - I tried to fix it, but it either didn't quite work or I ran into more deadlocks through. From bpm@sgi.com Thu Nov 17 13:25:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAHJPVbd069129 for ; Thu, 17 Nov 2011 13:25:32 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id 5E3F88F8066; Thu, 17 Nov 2011 11:25:28 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 172BF431F74; Thu, 17 Nov 2011 13:25:48 -0600 (CST) Date: Thu, 17 Nov 2011 13:25:48 -0600 From: Ben Myers To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 5/5] xfs: log file size updates at I/O completion time Message-ID: <20111117192548.GI29840@sgi.com> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201427.299361653@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111115201427.299361653@bombadil.infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Christoph, On Tue, Nov 15, 2011 at 03:14:12PM -0500, Christoph Hellwig wrote: > Do not use unlogged metadata updates and the VFS dirty bit for updating > the file size after writeback. In addition to causing various problems > with updates getting delayed for far too log this also drags in the > unscalable VFS dirty tracking, and is one of the few remaining unlogged > metadata updates. > > Note that we allocate a new transaction from the I/O completion handler. > While this sounds fairly dangerous it isn't an issue in practice given > that any appending write alreay had to start a transaction in writepages > to allocate blocks, and we'll start throtteling there if we run low on > log space or memory. > > We could still occasionally stall in the completion handler, but given > that we have per-filesystems workqueues for the I/O completions, > and completions that do not have to either convert unwritten extents > or update the file size are processed from interrupt context we do not > have to worry about this stalling a system to death. > > In addition to that implementing log reservations from ->writepage that > are only released by a different thread requires a lot of work, and even > with that wasn't quite doable in a deadlock-free manner. > > Signed-off-by: Christoph Hellwig > > --- > fs/xfs/xfs_aops.c | 49 ++++++++++++++++++++++++++++--------------------- > fs/xfs/xfs_file.c | 36 +++++++++++++++++++++++++++++++++++- > 2 files changed, 63 insertions(+), 22 deletions(-) > > Index: linux-2.6/fs/xfs/xfs_aops.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-15 18:43:04.183113001 +0100 > +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-15 18:43:05.059779662 +0100 > @@ -26,6 +26,7 @@ > #include "xfs_bmap_btree.h" > #include "xfs_dinode.h" > #include "xfs_inode.h" > +#include "xfs_inode_item.h" > #include "xfs_alloc.h" > #include "xfs_error.h" > #include "xfs_rw.h" > @@ -114,22 +115,39 @@ static inline bool xfs_ioend_is_append(s > * not extend all the way to the valid file size then restrict this update to > * the end of the write. > */ > -STATIC void > +STATIC int > xfs_setfilesize( > struct xfs_ioend *ioend) > { > struct xfs_inode *ip = XFS_I(ioend->io_inode); > + struct xfs_mount *mp = ip->i_mount; > + struct xfs_trans *tp; > xfs_fsize_t isize; > + int error = 0; > > xfs_ilock(ip, XFS_ILOCK_EXCL); > isize = xfs_new_eof(ip, ioend->io_offset + ioend->io_size); > - if (isize) { > - trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size); > - ip->i_d.di_size = isize; > - xfs_mark_inode_dirty(ip); > + xfs_iunlock(ip, XFS_ILOCK_EXCL); > + > + if (!isize) > + return 0; > + > + trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size); > + > + tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS); > + error = xfs_trans_reserve(tp, 0, XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0); > + if (error) { > + xfs_trans_cancel(tp, 0); > + return error; > } > > - xfs_iunlock(ip, XFS_ILOCK_EXCL); > + xfs_ilock(ip, XFS_ILOCK_EXCL); > + > + ip->i_d.di_size = isize; Make this assignment above, before dropping the ilock, so that multiple updates to di_size cannot be reordered while allocating a transaction. > + xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); > + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); > + > + return xfs_trans_commit(tp, 0); > } > > /* > @@ -183,12 +201,10 @@ xfs_end_io( > ioend->io_error = -error; > goto done; > } > - } else { > - /* > - * We might have to update the on-disk file size after > - * extending writes. > - */ > - xfs_setfilesize(ioend); > + } else if (xfs_ioend_is_append(ioend)) { I guess I am harping on the ilock today. You already have this optimisation in xfs_setfilesize, and it is clearly correct in the sense that it takes the ilock while reading from i_d.di_size, and returns if no update is necessary. Is taking the ilock here really so expensive that this additional level of optimisation is necessary? xfs_ioend_is_append doesn't take the ilock and it really isn't obvious why (if) that is ok. Your explanation in reply to my earlier question about xfs_ioend_is_append helped but the idea still isn't fully formed for me yet. Anyway... I suggest a comment be added with an explanation. > + error = xfs_setfilesize(ioend); > + if (error) > + ioend->io_error = error; > } > > done: > @@ -345,19 +361,10 @@ xfs_submit_ioend_bio( > xfs_ioend_t *ioend, > struct bio *bio) > { > - struct xfs_inode *ip = XFS_I(ioend->io_inode); > - > atomic_inc(&ioend->io_remaining); > bio->bi_private = ioend; > bio->bi_end_io = xfs_end_bio; > > - /* > - * If the I/O is beyond EOF we mark the inode dirty immediately > - * but don't update the inode size until I/O completion. > - */ > - if (xfs_new_eof(ip, ioend->io_offset + ioend->io_size)) > - xfs_mark_inode_dirty(ip); > - > submit_bio(wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE, bio); > } We don't need to mark dirty here because we're gonna log the size update in the completion handler. That looks good. > Index: linux-2.6/fs/xfs/xfs_file.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_file.c 2011-11-15 10:03:17.539965975 +0100 > +++ linux-2.6/fs/xfs/xfs_file.c 2011-11-15 18:43:05.059779662 +0100 > @@ -436,6 +436,36 @@ xfs_aio_write_isize_update( > } > } > > +STATIC int > +xfs_aio_write_isize_reset( > + struct xfs_inode *ip) > +{ > + struct xfs_mount *mp = ip->i_mount; > + struct xfs_trans *tp; > + int error = 0; > + > + tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS); > + error = xfs_trans_reserve(tp, 0, XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0); > + if (error) { > + xfs_trans_cancel(tp, 0); > + return error; > + } > + > + xfs_ilock(ip, XFS_ILOCK_EXCL); > + > + if (ip->i_d.di_size <= ip->i_size) { > + xfs_iunlock(ip, XFS_ILOCK_EXCL); > + xfs_trans_cancel(tp, 0); > + return 0; > + } > + > + ip->i_d.di_size = ip->i_size; > + xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); > + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); > + > + return xfs_trans_commit(tp, 0); > +} > + > /* > * If this was a direct or synchronous I/O that failed (such as ENOSPC) then > * part of the I/O may have been written to disk before the error occurred. In > @@ -447,14 +477,18 @@ xfs_aio_write_newsize_update( > struct xfs_inode *ip, > xfs_fsize_t new_size) > { > + bool reset = false; add a blank line here > if (new_size == ip->i_new_size) { > xfs_rw_ilock(ip, XFS_ILOCK_EXCL); > if (new_size == ip->i_new_size) > ip->i_new_size = 0; > if (ip->i_d.di_size > ip->i_size) > - ip->i_d.di_size = ip->i_size; > + reset = true; > xfs_rw_iunlock(ip, XFS_ILOCK_EXCL); > } > + > + if (reset) > + xfs_aio_write_isize_reset(ip); > } Wow.. Size updates are complicated. I have more studying to do. -Ben From aelder@sgi.com Thu Nov 17 13:29:02 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAHJT2uo069242 for ; Thu, 17 Nov 2011 13:29:02 -0600 Received: from xmail.sgi.com (pv-excas2-dc21-nlb.corp.sgi.com [137.38.102.197]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8D06C304051; Thu, 17 Nov 2011 11:28:58 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Thu, 17 Nov 2011 13:28:58 -0600 Message-ID: <1321558138.3015.4.camel@doink> Subject: Re: [patch] xfsprogs - workaround debian build daemon dependency resolution From: Alex Elder Reply-To: To: Nathan Scott CC: Date: Thu, 17 Nov 2011 13:28:58 -0600 In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.1- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, 2011-11-15 at 20:39 +1100, Nathan Scott wrote: > Workaround the Debian buildd dependency handling for libreadline5 library > handling > > Evidently the buildd daemons process depenencies differently to local > builds, and > expect the first of optional dependencies to be resolved. Flip the > ordering to match > this dependency. > > Signed-off-by: Nathan Scott Looks fine to me. Signed-off-by: Alex Elder From aelder@sgi.com Thu Nov 17 13:42:26 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAHJgPHL069983 for ; Thu, 17 Nov 2011 13:42:26 -0600 Received: from xmail.sgi.com (pv-excas2-dc21-nlb.corp.sgi.com [137.38.102.197]) by relay1.corp.sgi.com (Postfix) with ESMTP id A9DFB8F8052; Thu, 17 Nov 2011 11:42:25 -0800 (PST) Received: from [127.0.0.1] (128.162.232.50) by xmail.sgi.com (137.38.102.30) with Microsoft SMTP Server (TLS) id 14.1.339.1; Thu, 17 Nov 2011 13:42:25 -0600 Message-ID: <1321558944.3015.6.camel@doink> Subject: Re: [patch] xfsprogs - workaround debian build daemon dependency resolution From: Alex Elder Reply-To: To: Nathan Scott CC: Date: Thu, 17 Nov 2011 13:42:24 -0600 In-Reply-To: <1321558138.3015.4.camel@doink> References: <1321558138.3015.4.camel@doink> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.1- Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Originating-IP: [128.162.232.50] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, 2011-11-17 at 13:28 -0600, Alex Elder wrote: > On Tue, 2011-11-15 at 20:39 +1100, Nathan Scott wrote: > > Workaround the Debian buildd dependency handling for libreadline5 library > > handling > > > > Evidently the buildd daemons process depenencies differently to local > > builds, and > > expect the first of optional dependencies to be resolved. Flip the > > ordering to match > > this dependency. > > > > Signed-off-by: Nathan Scott > > Looks fine to me. > > Signed-off-by: Alex Elder > Actually, it *looked* fine superficially, but it's crap. Get in touch with me or Ben (bpm) on IRC so we can get this fixed and we'll cut a release with this included today. -Alex From bpm@sgi.com Thu Nov 17 14:38:39 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAHKccVG071677 for ; Thu, 17 Nov 2011 14:38:38 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id A93858F804C; Thu, 17 Nov 2011 12:38:35 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 6729F431F74; Thu, 17 Nov 2011 14:38:55 -0600 (CST) Date: Thu, 17 Nov 2011 14:38:55 -0600 From: Ben Myers To: Nathan Scott Cc: Alex Elder , xfs@oss.sgi.com Subject: Re: [patch] xfsprogs - workaround debian build daemon dependency resolution Message-ID: <20111117203855.GJ29840@sgi.com> References: <1321558138.3015.4.camel@doink> <1321558944.3015.6.camel@doink> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1321558944.3015.6.camel@doink> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Nathan, On Thu, Nov 17, 2011 at 01:42:24PM -0600, Alex Elder wrote: > On Thu, 2011-11-17 at 13:28 -0600, Alex Elder wrote: > > On Tue, 2011-11-15 at 20:39 +1100, Nathan Scott wrote: > > > Workaround the Debian buildd dependency handling for libreadline5 library > > > handling > > > > > > Evidently the buildd daemons process depenencies differently to local > > > builds, and > > > expect the first of optional dependencies to be resolved. Flip the > > > ordering to match > > > this dependency. > > > > > > Signed-off-by: Nathan Scott > > > > Looks fine to me. > > > > Signed-off-by: Alex Elder > > > > Actually, it *looked* fine superficially, but it's crap. Is this what you're after? diff --git a/debian/control b/debian/control index f813a43..ca517ad 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Section: admin Priority: optional Maintainer: XFS Development Team Uploaders: Nathan Scott , Anibal Monsalve Salazar -Build-Depends: uuid-dev, autoconf, debhelper (>= 5), gettext, libtool, libreadline5-dev | libreadline-gplv2-dev, libblkid-dev (>= 2.17) +Build-Depends: uuid-dev, autoconf, debhelper (>= 5), gettext, libtool, libreadline-gplv2-dev | libreadline5-dev, libblkid-dev (>= 2.17) Standards-Version: 3.9.1 Homepage: http://oss.sgi.com/projects/xfs/ Thanks, Ben From bpm@sgi.com Thu Nov 17 14:50:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAHKoHN9071958 for ; Thu, 17 Nov 2011 14:50:17 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id 07EC6304066; Thu, 17 Nov 2011 12:50:13 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 9685A431F74; Thu, 17 Nov 2011 14:50:33 -0600 (CST) Date: Thu, 17 Nov 2011 14:50:33 -0600 From: Ben Myers To: WuBo Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, Christoph Hellwig Subject: Re: [PATCH] change fallocate to xfs_io falloc Message-ID: <20111117205033.GK29840@sgi.com> References: <4EB20505.7070005@cn.fujitsu.com> <4EC4989D.9080107@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4EC4989D.9080107@cn.fujitsu.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Wu Bo, On Thu, Nov 17, 2011 at 01:16:13PM +0800, WuBo wrote: > Thanks to Ben for pointing it that the fallocate maybe uninstall > without checking it, and change fallocate to xfs_io as Christoph > suggested. > > Signed-off-by: Wu Bo Nice! It works great for me. ;) Reviewed-by: Ben Myers Thanks, Ben > --- > 274 | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/274 b/274 > index b658004..bcf5a11 100755 > --- a/274 > +++ b/274 > @@ -46,6 +46,7 @@ _cleanup() > _supported_fs generic > _supported_os IRIX Linux > _require_scratch > +_require_xfs_io_falloc > > echo "------------------------------" > echo "preallocation test" > @@ -67,7 +68,7 @@ then > exit > fi > > -fallocate -n -o 4K -l 1M test >/dev/null 2>&1 > +$XFS_IO_PROG -F -f -c 'falloc 4096 1m' test >/dev/null > if [ $? -ne 0 ] > then > echo "fallocate file err" > -- > 1.7.3.1 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From ndsco1@student.monash.edu Thu Nov 17 16:20:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.9 required=5.0 tests=BAYES_50,HTML_MESSAGE, J_CHICKENPOX_13 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAHMKqQw074481 for ; Thu, 17 Nov 2011 16:20:53 -0600 X-ASG-Debug-ID: 1321568450-5fb803960000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from stan.its.monash.edu.au (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 96D431271314 for ; Thu, 17 Nov 2011 14:20:51 -0800 (PST) Received: from stan.its.monash.edu.au (stan.its.monash.edu.au [130.194.13.165]) by cuda.sgi.com with ESMTP id EXE7Wge0zSosipfz for ; Thu, 17 Nov 2011 14:20:51 -0800 (PST) Received: from chapman.its.monash.edu.au ([130.194.13.89]) by stan.its.monash.edu.au (Sun Java System Messaging Server 6.2-4.03 (built Sep 22 2005)) with ESMTP id <0LUT0053MSQO0940@stan.its.monash.edu.au> for xfs@oss.sgi.com; Fri, 18 Nov 2011 09:20:49 +1100 (EST) Received: from chapman.its.monash.edu.au (localhost.localdomain [127.0.0.1]) by localhost (Postfix) with SMTP id E8D6E7E6191 for ; Fri, 18 Nov 2011 09:20:48 +1100 (EST) Received: from mail-yx0-f182.google.com (mail-yx0-f182.google.com [209.85.213.182]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by chapman.its.monash.edu.au (Postfix) with ESMTPS id 14DCC7E6123 for ; Fri, 18 Nov 2011 09:20:47 +1100 (EST) Received: by mail-yx0-f182.google.com with SMTP id l11so2029325yen.41 for ; Thu, 17 Nov 2011 14:20:47 -0800 (PST) Received: by 10.68.16.103 with SMTP id f7mr2818890pbd.55.1321568447115; Thu, 17 Nov 2011 14:20:47 -0800 (PST) Received: by 10.142.125.16 with HTTP; Thu, 17 Nov 2011 14:20:47 -0800 (PST) Date: Fri, 18 Nov 2011 09:20:47 +1100 From: Nathan Scott X-ASG-Orig-Subj: Re: [patch] xfsprogs - workaround debian build daemon dependency resolution Subject: Re: [patch] xfsprogs - workaround debian build daemon dependency resolution In-reply-to: <20111117203855.GJ29840@sgi.com> Sender: ndsco1@student.monash.edu To: Ben Myers Cc: Alex Elder , xfs@oss.sgi.com Message-id: MIME-version: 1.0 Content-type: multipart/alternative; boundary=bcaec521638bd6334704b1f5a188 X-Google-Sender-Auth: yJvFe9zgMSFI2_pS_TrB2AHUNOI X-PMX-Authenticated: NONE X-PMX-Version: 5.5.2.365749, Antispam-Engine: 2.6.1.350677, Antispam-Data: 2011.11.17.220915 X-PMX-Spam: Gauge=IIIIIIII, Probability=8%, Report='HTML_NO_HTTP 0.1, MULTIPLE_RCPTS 0.1, BODYTEXTH_SIZE_10000_LESS 0, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_1000_LESS 0, BODY_SIZE_2000_LESS 0, BODY_SIZE_400_499 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, CTYPE_MULTIPART_NO_QUOTE 0, NO_URI_FOUND 0, SMALL_BODY 0, WEBMAIL_SOURCE 0, __BOUNCE_CHALLENGE_SUBJ 0, __BOUNCE_NDR_SUBJ_EXEMPT 0, __CT 0, __CTYPE_HAS_BOUNDARY 0, __CTYPE_MULTIPART 0, __CTYPE_MULTIPART_ALT 0, __HAS_HTML 0, __HAS_MSGID 0, __HELO_GMAIL 0, __MIME_HTML 0, __MIME_VERSION 0, __MULTIPLE_RCPTS_CC_X2 0, __PHISH_SPEAR_HTTP_RECEIVED 0, __RDNS_GMAIL 0, __SANE_MSGID 0, __SUBJ_ALPHA_END 0, __TO_MALFORMED_2 0' References: <1321558138.3015.4.camel@doink> <1321558944.3015.6.camel@doink> <20111117203855.GJ29840@sgi.com> X-Barracuda-Connect: stan.its.monash.edu.au[130.194.13.165] X-Barracuda-Start-Time: 1321568451 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0257 1.0000 -1.8543 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.85 X-Barracuda-Spam-Status: No, SCORE=-1.85 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80538 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --bcaec521638bd6334704b1f5a188 Content-Type: text/plain; charset=ISO-8859-1 Spot on - thanks! T'was wrong in my workarea ... :( cheers. -- Nathan --bcaec521638bd6334704b1f5a188 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Spot on - thanks!=A0 T'was wrong in my workarea ... :(

cheers.
--
Nathan
--bcaec521638bd6334704b1f5a188-- From bpm@sgi.com Thu Nov 17 17:31:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAHNVNBt076877 for ; Thu, 17 Nov 2011 17:31:23 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4485D8F8039 for ; Thu, 17 Nov 2011 15:31:20 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 0FA36431F74; Thu, 17 Nov 2011 17:31:40 -0600 (CST) Date: Thu, 17 Nov 2011 17:31:39 -0600 From: Ben Myers To: xfs@oss.sgi.com Subject: [ANNOUNCE] xfsprogs v3.1.7 Message-ID: <20111117233139.GL29840@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Version 3.1.7 of xfsprogs has been released. The source code can be accessed via git using this URL: git://oss.sgi.com/xfs/cmds/xfsprogs.git A gzipped-tar archive of the source code is available here: ftp://oss.sgi.com/projects/xfs/cmd_tars/xfsprogs-3.1.7.tar.gz The development tree for this code (not available at the moment) is normally published here as well: git://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git Below is a summary (from the doc/CHANGES file) of changes since release 3.1.6: xfsprogs-3.1.7 (16 November 2011) - Pull in fix for debian/control - Polish translation update, thanks to Jakub Bogusz - Fix xfs_repair link count on lost+found, thanks to Carlos Maiolino - Fix various incorrect printf formats From david@fromorbit.com Thu Nov 17 18:50:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAI0otld080370 for ; Thu, 17 Nov 2011 18:50:56 -0600 X-ASG-Debug-ID: 1321577452-4e6101e30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 459F41CECD5D for ; Thu, 17 Nov 2011 16:50:52 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id nvDhrjKYqcmcbXzE for ; Thu, 17 Nov 2011 16:50:52 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av4EAEGqxU55Lbtu/2dsb2JhbABCqkGBBoFyAQEEAScTHCMFCwgDDgYELhQlAyETiAK2LBKKBQSUNJIR Received: from ppp121-45-187-110.lns20.syd7.internode.on.net (HELO dastard) ([121.45.187.110]) by ipmail06.adl2.internode.on.net with ESMTP; 18 Nov 2011 11:20:51 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RRCfJ-0000Jn-Al; Fri, 18 Nov 2011 11:50:49 +1100 Date: Fri, 18 Nov 2011 11:50:49 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/5] xfs: log file size updates at I/O completion time Subject: Re: [PATCH 5/5] xfs: log file size updates at I/O completion time Message-ID: <20111118005049.GG7046@dastard> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201427.299361653@bombadil.infradead.org> <20111117002915.GE7046@dastard> <20111117080304.GA25952@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111117080304.GA25952@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1321577454 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80549 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 17, 2011 at 03:03:04AM -0500, Christoph Hellwig wrote: > On Thu, Nov 17, 2011 at 11:29:15AM +1100, Dave Chinner wrote: > > Actually, that is not true: we know that transaction reservation in > > Io completion can hang systems. That's why we specifically shifted > > unwritten extent conversion to it's own workqueue. > > > The condition that I saw most frequently was transaction reservation > > blocking and preventing IO from completing and therefore marking > > memory clean and freeable, whilst the unwritten extent conversion > > transaction reservation was blocked because the tail of the log > > could not be moved due to memory allocation for inode buffers to > > write back the inodes pinning the tail of the log failing and hence > > looping endlessly in the buffer cache. If we do transaction > > reservations for every single extending IO completion during Io > > completion, we are effectively making the deadlock possible for most > > extending delayed allocation write IOs (i.e. the majority of write > > IO in a typical system). > > That fact has changed: > > commit 80641dc66a2d6dfb22af4413227a92b8ab84c7bb > Author: Christoph Hellwig > Date: Mon Oct 19 04:00:03 2009 +0000 > > xfs: I/O completion handlers must use NOFS allocations > > When completing I/O requests we must not allow the memory allocator to > recurse into the filesystem, as we might deadlock on waiting for the > I/O completion otherwise. The only thing currently allocating normal > GFP_KERNEL memory is the allocation of the transaction structure for > the unwritten extent conversion. Add a memflags argument to > _xfs_trans_alloc to allow controlling the allocator behaviour. Right, but that isn't the problem I've seen. That's memory reclaim recursion - The situation I've seen is simply not having the available memory available to flush a dirty inode when a buffer needs to be allocated. IOWs, flushing a dirty inode can require a metadata buffer to be allocated. The problem is that allocating pages for a metadata buffer can get stuck in the allocation loop in xfs_buf_allocate_memory() precisely because GFP_NOFS page allocation is failing. Then no further pages can be cleaned/freed because IO completion is held up waiting for this allocation loop to succeed to allow log space to be made available... > So unwritten extent conversion will never recurse back into the > filesystem any more. It often needs to read metadata buffers from disk, so can deadlock as per above. The moving of unwritten extent conversion into it's own workqueue didn't prevent that deadlock - it just made it extremely unlikely because normal IO could still complete and hence the system could make progress in almost all cases it previously deadlocked on. > If we still care about blocking on other things > (and I've hit this code fairly hard over the last months) we can > increase the per-cpu workqueue concurrency limit. Currently xfs > limits each of the workqueues to one item, but the default (when > passing 0) would be 512. With that we could probably even get away > with one per-filesystem workqueue if we want, but I'd really prefer > to get the size logging fix out to users ASAP instead of doing all > the fine-tuning now. > > > > In addition to that implementing log reservations from ->writepage that > > > are only released by a different thread requires a lot of work, > > > > That's trivial to do - there's nothing thread specific about a > > transaction. All you need to do is ensure that everything is logged > > before you pass the struct xfs_trans off to another thread. We > > can do that simply by adding it to the ioend. > > The transaction set PF_FSTRANS in current->flags, which also includes > saving and restoring the current flags in (I can't figure out exactly > why we do the later). Without this we trivially deadlock - I tried > to fix it, but it either didn't quite work or I ran into more deadlocks > through. Oh, I forgot about that. That should still be able to be done, though - when the transaction is attached to the ioend, remove the PF_FSTRANS flag from that thread, and set it when we get the ioend during completion. I did exactly this for handing allocation off to a workqueue - the work done by the workqueue is completely within transaction context, so the worker thread needs to have that flag set when the work starts, and cleared when the work completes. I didn't see any problems from doing this. Hence, AFAICT, the handing off of such state to other threads along with the transaction shouldn't be problematic if it matches the way the transaction is passed around. Without seeing you patches to do this, I can't really comment any further.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From lizf@cn.fujitsu.com Thu Nov 17 21:24:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAI3Orpb089079 for ; Thu, 17 Nov 2011 21:24:54 -0600 X-ASG-Debug-ID: 1321586679-577f02500000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A7B931D1743D for ; Thu, 17 Nov 2011 19:24:48 -0800 (PST) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id mAlkhtiolZk3483y for ; Thu, 17 Nov 2011 19:24:48 -0800 (PST) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id 81A7B170150; Fri, 18 Nov 2011 11:24:27 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pAI3OPV7018440; Fri, 18 Nov 2011 11:24:26 +0800 Received: from [10.167.225.230] ([10.167.225.230]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011111811241714-139636 ; Fri, 18 Nov 2011 11:24:17 +0800 Message-ID: <4EC5D05A.4000503@cn.fujitsu.com> Date: Fri, 18 Nov 2011 11:26:18 +0800 From: Li Zefan User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com, "linux-btrfs@vger.kernel.org" X-ASG-Orig-Subj: [PATCH] 254: fix to pass subvolid=0 to set default btrfs subvolme Subject: [PATCH] 254: fix to pass subvolid=0 to set default btrfs subvolme X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-18 11:24:17, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-18 11:24:19, Serialize complete at 2011-11-18 11:24:19 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1321586692 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0026 1.0000 -2.0043 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80559 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The usage is 'btrfs subvolume set-default ', not ' '. The code happens to work because strotoull(path) returns 0, but it will fail if in the future we check the argument more strict in btrfs-progs. Signed-off-by: Li Zefan --- 254 | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/254 b/254 index 6320291..5216120 100755 --- a/254 +++ b/254 @@ -78,7 +78,7 @@ ls $SCRATCH_MNT/subvol echo "Creating file bar in subvol" dd if=/dev/zero of=$SCRATCH_MNT/subvol/bar bs=1M count=1 &> /dev/null echo "Setting subvol to the default" -btrfs subvolume set-default $SCRATCH_MNT/subvol $SCRATCH_MNT/subvol | _filter_scratch +btrfs subvolume set-default 0 $SCRATCH_MNT/subvol | _filter_scratch _scratch_remount echo "List root dir which is now subvol" ls $SCRATCH_MNT @@ -88,7 +88,7 @@ _scratch_mount "-o subvolid=0" echo "List root dir" ls $SCRATCH_MNT echo "Setting the root dir as the default again" -btrfs subvolume set-default $SCRATCH_MNT $SCRATCH_MNT | _filter_scratch +btrfs subvolume set-default 0 $SCRATCH_MNT | _filter_scratch _scratch_remount echo "List root dir" ls $SCRATCH_MNT -- 1.7.3.1 From david@fromorbit.com Thu Nov 17 21:37:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAI3b2Sa089693 for ; Thu, 17 Nov 2011 21:37:03 -0600 X-ASG-Debug-ID: 1321587419-113601480000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2BFAA154E7FF for ; Thu, 17 Nov 2011 19:36:59 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id ZUw4li3vtewMDGcR for ; Thu, 17 Nov 2011 19:36:59 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAOfQxU55Lbtu/2dsb2JhbABCqkKBBoFyAQEFJxMcIxAIAw4KLhQlAyETvmMSigUElDaSFA Received: from ppp121-45-187-110.lns20.syd7.internode.on.net (HELO dastard) ([121.45.187.110]) by ipmail06.adl2.internode.on.net with ESMTP; 18 Nov 2011 14:06:58 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RRFG4-0000YU-PL; Fri, 18 Nov 2011 14:36:56 +1100 Date: Fri, 18 Nov 2011 14:36:56 +1100 From: Dave Chinner To: Ben Myers Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/5] xfs: log file size updates at I/O completion time Subject: Re: [PATCH 5/5] xfs: log file size updates at I/O completion time Message-ID: <20111118033656.GH7046@dastard> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201427.299361653@bombadil.infradead.org> <20111117192548.GI29840@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111117192548.GI29840@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1321587421 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80560 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 17, 2011 at 01:25:48PM -0600, Ben Myers wrote: > Hey Christoph, > > On Tue, Nov 15, 2011 at 03:14:12PM -0500, Christoph Hellwig wrote: > > Do not use unlogged metadata updates and the VFS dirty bit for updating > > the file size after writeback. In addition to causing various problems > > with updates getting delayed for far too log this also drags in the > > unscalable VFS dirty tracking, and is one of the few remaining unlogged > > metadata updates. > > > > Note that we allocate a new transaction from the I/O completion handler. > > While this sounds fairly dangerous it isn't an issue in practice given > > that any appending write alreay had to start a transaction in writepages > > to allocate blocks, and we'll start throtteling there if we run low on > > log space or memory. > > > > We could still occasionally stall in the completion handler, but given > > that we have per-filesystems workqueues for the I/O completions, > > and completions that do not have to either convert unwritten extents > > or update the file size are processed from interrupt context we do not > > have to worry about this stalling a system to death. > > > > In addition to that implementing log reservations from ->writepage that > > are only released by a different thread requires a lot of work, and even > > with that wasn't quite doable in a deadlock-free manner. > > > > Signed-off-by: Christoph Hellwig > > > > --- > > fs/xfs/xfs_aops.c | 49 ++++++++++++++++++++++++++++--------------------- > > fs/xfs/xfs_file.c | 36 +++++++++++++++++++++++++++++++++++- > > 2 files changed, 63 insertions(+), 22 deletions(-) > > > > Index: linux-2.6/fs/xfs/xfs_aops.c > > =================================================================== > > --- linux-2.6.orig/fs/xfs/xfs_aops.c 2011-11-15 18:43:04.183113001 +0100 > > +++ linux-2.6/fs/xfs/xfs_aops.c 2011-11-15 18:43:05.059779662 +0100 > > @@ -26,6 +26,7 @@ > > #include "xfs_bmap_btree.h" > > #include "xfs_dinode.h" > > #include "xfs_inode.h" > > +#include "xfs_inode_item.h" > > #include "xfs_alloc.h" > > #include "xfs_error.h" > > #include "xfs_rw.h" > > @@ -114,22 +115,39 @@ static inline bool xfs_ioend_is_append(s > > * not extend all the way to the valid file size then restrict this update to > > * the end of the write. > > */ > > -STATIC void > > +STATIC int > > xfs_setfilesize( > > struct xfs_ioend *ioend) > > { > > struct xfs_inode *ip = XFS_I(ioend->io_inode); > > + struct xfs_mount *mp = ip->i_mount; > > + struct xfs_trans *tp; > > xfs_fsize_t isize; > > + int error = 0; > > > > xfs_ilock(ip, XFS_ILOCK_EXCL); > > isize = xfs_new_eof(ip, ioend->io_offset + ioend->io_size); > > - if (isize) { > > - trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size); > > - ip->i_d.di_size = isize; > > - xfs_mark_inode_dirty(ip); > > + xfs_iunlock(ip, XFS_ILOCK_EXCL); > > + > > + if (!isize) > > + return 0; > > + > > + trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size); > > + > > + tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS); > > + error = xfs_trans_reserve(tp, 0, XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0); > > + if (error) { > > + xfs_trans_cancel(tp, 0); > > + return error; > > } > > > > - xfs_iunlock(ip, XFS_ILOCK_EXCL); > > + xfs_ilock(ip, XFS_ILOCK_EXCL); > > + > > + ip->i_d.di_size = isize; > > Make this assignment above, before dropping the ilock, so that multiple > updates to di_size cannot be reordered while allocating a transaction. Which then makes it a non-transactional change. i.e. it can be written to disk without having been logged in a transaction. That defeats the purpose of this change.... I think what the code needs to do here is recheck whether the size update needs to be done, and if not cancel the transaction and do nothing. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Nov 17 21:44:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAI3ietj090281 for ; Thu, 17 Nov 2011 21:44:40 -0600 X-ASG-Debug-ID: 1321587877-5371001b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C5BD725DBDD for ; Thu, 17 Nov 2011 19:44:38 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id HfJVJU9TIzCDGcN0 for ; Thu, 17 Nov 2011 19:44:38 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EACLUxU55Lbtu/2dsb2JhbABCqkKBBoFyAQEFJxMcIxAIAw4KLhQlAyETvmYSigUElDaSFA Received: from ppp121-45-187-110.lns20.syd7.internode.on.net (HELO dastard) ([121.45.187.110]) by ipmail06.adl2.internode.on.net with ESMTP; 18 Nov 2011 14:14:13 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RRFN6-0000Z2-1z; Fri, 18 Nov 2011 14:44:12 +1100 Date: Fri, 18 Nov 2011 14:44:11 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/5] xfs: log file size updates at I/O completion time Subject: Re: [PATCH 5/5] xfs: log file size updates at I/O completion time Message-ID: <20111118034411.GI7046@dastard> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201427.299361653@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111115201427.299361653@bombadil.infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1321587879 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80559 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 15, 2011 at 03:14:12PM -0500, Christoph Hellwig wrote: > Do not use unlogged metadata updates and the VFS dirty bit for updating > the file size after writeback. In addition to causing various problems > with updates getting delayed for far too log this also drags in the > unscalable VFS dirty tracking, and is one of the few remaining unlogged > metadata updates. > > Note that we allocate a new transaction from the I/O completion handler. > While this sounds fairly dangerous it isn't an issue in practice given > that any appending write alreay had to start a transaction in writepages > to allocate blocks, and we'll start throtteling there if we run low on > log space or memory. > > We could still occasionally stall in the completion handler, but given > that we have per-filesystems workqueues for the I/O completions, > and completions that do not have to either convert unwritten extents > or update the file size are processed from interrupt context we do not > have to worry about this stalling a system to death. > > In addition to that implementing log reservations from ->writepage that > are only released by a different thread requires a lot of work, and even > with that wasn't quite doable in a deadlock-free manner. > > Signed-off-by: Christoph Hellwig .... > Index: linux-2.6/fs/xfs/xfs_file.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_file.c 2011-11-15 10:03:17.539965975 +0100 > +++ linux-2.6/fs/xfs/xfs_file.c 2011-11-15 18:43:05.059779662 +0100 > @@ -436,6 +436,36 @@ xfs_aio_write_isize_update( > } > } > > +STATIC int > +xfs_aio_write_isize_reset( > + struct xfs_inode *ip) > +{ > + struct xfs_mount *mp = ip->i_mount; > + struct xfs_trans *tp; > + int error = 0; > + > + tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS); > + error = xfs_trans_reserve(tp, 0, XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0); > + if (error) { > + xfs_trans_cancel(tp, 0); > + return error; > + } > + > + xfs_ilock(ip, XFS_ILOCK_EXCL); > + > + if (ip->i_d.di_size <= ip->i_size) { > + xfs_iunlock(ip, XFS_ILOCK_EXCL); > + xfs_trans_cancel(tp, 0); > + return 0; > + } > + > + ip->i_d.di_size = ip->i_size; > + xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); > + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); > + > + return xfs_trans_commit(tp, 0); > +} > + > /* > * If this was a direct or synchronous I/O that failed (such as ENOSPC) then > * part of the I/O may have been written to disk before the error occurred. In > @@ -447,14 +477,18 @@ xfs_aio_write_newsize_update( > struct xfs_inode *ip, > xfs_fsize_t new_size) > { > + bool reset = false; > if (new_size == ip->i_new_size) { > xfs_rw_ilock(ip, XFS_ILOCK_EXCL); > if (new_size == ip->i_new_size) > ip->i_new_size = 0; > if (ip->i_d.di_size > ip->i_size) > - ip->i_d.di_size = ip->i_size; > + reset = true; > xfs_rw_iunlock(ip, XFS_ILOCK_EXCL); > } > + > + if (reset) > + xfs_aio_write_isize_reset(ip); I think this reset is racy. ip->i_size can change between the check and the reset, potentially leading to inconsistent values being logged during truncate/write error handling. Further, the reset transaction can fail, and hence we need to propagate the error back to the caller rather than dropping it on the ground. Cheers, Dave. -- Dave Chinner david@fromorbit.com From arekm@maven.pl Fri Nov 18 01:04:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_111, MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAI74DsX104238 for ; Fri, 18 Nov 2011 01:04:13 -0600 X-ASG-Debug-ID: 1321599849-5bbb00de0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2E44112722E9 for ; Thu, 17 Nov 2011 23:04:09 -0800 (PST) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id S7bBDVjRMIeyo5Rr for ; Thu, 17 Nov 2011 23:04:09 -0800 (PST) Received: by bkaq10 with SMTP id q10so3318932bka.26 for ; Thu, 17 Nov 2011 23:04:09 -0800 (PST) Received: by 10.205.139.71 with SMTP id iv7mr1976010bkc.60.1321599848814; Thu, 17 Nov 2011 23:04:08 -0800 (PST) Received: from t400.localnet (89-69-21-174.dynamic.chello.pl. [89.69.21.174]) by mx.google.com with ESMTPS id w11sm4503887fad.7.2011.11.17.23.04.07 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 17 Nov 2011 23:04:07 -0800 (PST) From: Arkadiusz =?utf-8?q?Mi=C5=9Bkiewicz?= To: Christoph Hellwig X-ASG-Orig-Subj: Re: [PATCH 3/3] xfsprogs: allow linking against libtcmalloc Subject: Re: [PATCH 3/3] xfsprogs: allow linking against libtcmalloc Date: Fri, 18 Nov 2011 08:04:06 +0100 User-Agent: KMail/1.13.7 (Linux/3.2.0-rc1-00306-g7f80850-dirty; KDE/4.7.3; x86_64; ; ) Cc: xfs@oss.sgi.com References: <20111114155742.285135418@bombadil.infradead.org> <20111114160217.591812422@bombadil.infradead.org> In-Reply-To: <20111114160217.591812422@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <201111180804.06413.arekm@maven.pl> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1321599851 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0206 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80571 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Monday 14 of November 2011, Christoph Hellwig wrote: > Allow linking against the libtcmalloc library from Google's performance > tools, which at least for repair reduces the memory usage dramatically. Should -fno-builtin-malloc be also used? =2D-- xfsprogs-3.1.7/configure.in.org 2011-11-18 07:58:49.815439699 +0100 +++ xfsprogs-3.1.7/configure.in 2011-11-18 07:59:49.360093001 +0100 @@ -31,6 +31,26 @@ AC_SUBST(libeditline) AC_SUBST(enable_editline) =20 +AC_ARG_ENABLE(tcmalloc, +[ --enable-tcmalloc=3D[yes/no] Enable tcmalloc [default=3Dno]],, + enable_tcmalloc=3Dcheck) + +if test x$enable_tcmalloc !=3D xno; then + saved_CPPFLAGS=3D"$CPPFLAGS" + CPPFLAGS=3D"$CPPFLAGS -fno-builtin-malloc" + AC_CHECK_LIB([tcmalloc_minimal], [malloc], [libtcmalloc=3D"-ltcmalloc_= minimal"], + [AC_CHECK_LIB([tcmalloc], [malloc], [libtcmalloc=3D"-ltcmalloc"], [ + if test x$enable_tcmalloc =3D xyes; then + AC_MSG_ERROR([libtcmalloc_minimal or libtcmalloc library not found], 1) + fi] + )] + ) + if test x$libtcmalloc =3D x; then + CPPFLAGS=3D"$saved_CPPFLAGS" + fi +fi +AC_SUBST(libtcmalloc) + AC_ARG_ENABLE(termcap, [ --enable-termcap=3D[yes/no] Enable terminal capabilities library [defaul= t=3Dno]], test $enable_termcap =3D yes && libtermcap=3D"-ltermcap",) Index: xfsprogs-dev/include/builddefs.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =2D-- xfsprogs-dev.orig/include/builddefs.in 2011-08-14 17:00:02.000000000 = +0000 +++ xfsprogs-dev/include/builddefs.in 2011-11-14 12:09:52.000000000 +0000 @@ -22,7 +22,7 @@ _BUILDDEFS_INCLUDED_ =3D 1 =20 DEBUG =3D @debug_build@ OPTIMIZER =3D @opt_build@ =2DMALLOCLIB =3D @malloc_lib@ +MALLOCLIB =3D @malloc_lib@ @libtcmalloc@ LOADERFLAGS =3D @LDFLAGS@ LTLDFLAGS =3D @LDFLAGS@ CFLAGS =3D @CFLAGS@ =2D-=20 Arkadiusz Mi=C5=9Bkiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From lizf@cn.fujitsu.com Fri Nov 18 02:42:02 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAI8g1hT111038 for ; Fri, 18 Nov 2011 02:42:02 -0600 X-ASG-Debug-ID: 1321605718-1a1501250000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 02549260486 for ; Fri, 18 Nov 2011 00:41:59 -0800 (PST) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id GFP3Cnlzk4ukWjD1 for ; Fri, 18 Nov 2011 00:41:59 -0800 (PST) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id CCB8D170141; Fri, 18 Nov 2011 16:41:56 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pAI8fsNL001835; Fri, 18 Nov 2011 16:41:55 +0800 Received: from [10.167.225.230] ([10.167.225.230]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011111816414617-143380 ; Fri, 18 Nov 2011 16:41:46 +0800 Message-ID: <4EC61AC3.6010806@cn.fujitsu.com> Date: Fri, 18 Nov 2011 16:43:47 +0800 From: Li Zefan User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com, "linux-btrfs@vger.kernel.org" X-ASG-Orig-Subj: [PATCH] 254: disable space cache Subject: [PATCH] 254: disable space cache X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-18 16:41:46, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-18 16:41:48, Serialize complete at 2011-11-18 16:41:48 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1321605721 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0827 1.0000 -1.4971 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.50 X-Barracuda-Spam-Status: No, SCORE=-1.50 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80578 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I can't pass 254, and below is the output: 254 3s ... - output mismatch (see 254.out.bad) ... ID 256 top level 5 path snap -ID 257 top level 5 path subvol +ID 258 top level 5 path subvol When space cache is enabled (and now mkfs.btrfs always enables it), there will be some space cache inodes in the root tree, and they consume some IDs, and that's why "subvol" has the ID 258 but not 257. Just disable space cache for this test case. Signed-off-by: Li Zefan --- 254 | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/254 b/254 index 5216120..1cd4832 100755 --- a/254 +++ b/254 @@ -48,7 +48,7 @@ _supported_os Linux _require_scratch _scratch_mkfs > /dev/null 2>&1 -_scratch_mount +_scratch_mount -o nospace_cache # First test basic snapshotting echo "Creating file foo in root dir" -- 1.7.3.1 From arekm@maven.pl Fri Nov 18 02:44:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAI8iHqK111398 for ; Fri, 18 Nov 2011 02:44:17 -0600 X-ASG-Debug-ID: 1321605852-551c03300000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E8C58120A78A for ; Fri, 18 Nov 2011 00:44:13 -0800 (PST) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id M8IGI0KT4qiAsvfZ for ; Fri, 18 Nov 2011 00:44:13 -0800 (PST) Received: by bkaq10 with SMTP id q10so3413008bka.26 for ; Fri, 18 Nov 2011 00:44:12 -0800 (PST) Received: by 10.205.112.6 with SMTP id eq6mr2361915bkc.16.1321605852064; Fri, 18 Nov 2011 00:44:12 -0800 (PST) Received: from t400.localnet (89-69-21-174.dynamic.chello.pl. [89.69.21.174]) by mx.google.com with ESMTPS id x27sm4723755fag.14.2011.11.18.00.44.11 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 18 Nov 2011 00:44:11 -0800 (PST) From: Arkadiusz =?utf-8?q?Mi=C5=9Bkiewicz?= To: Christoph Hellwig X-ASG-Orig-Subj: Re: [PATCH] repair: avoid ABBA deadlocks on prefetched buffers Subject: Re: [PATCH] repair: avoid ABBA deadlocks on prefetched buffers Date: Fri, 18 Nov 2011 09:44:09 +0100 User-Agent: KMail/1.13.7 (Linux/3.2.0-rc1-00306-g7f80850-dirty; KDE/4.7.3; x86_64; ; ) References: <20111115210953.GA6670@infradead.org> In-Reply-To: <20111115210953.GA6670@infradead.org> Cc: xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <201111180944.10048.arekm@maven.pl> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1321605853 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80579 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tuesday 15 of November 2011, Christoph Hellwig wrote: > Both the prefetch threads and actual repair processing threads can have > multiple buffers at a time locked, but they do no use a common locker > order, which can lead to ABBA deadlocks while trying to lock the buffers. There is still some issue with deadlocking. The last printed messages: b=C5=82=C4=99dna liczba magiczna 0x41425443 w bloku inobt 2/1438099 b=C5=82=C4=99dna liczba magiczna 0x41425443 w bloku inobt 2/1438196 b=C5=82=C4=99dna liczba magiczna 0x41425443 w bloku inobt 2/1438732 (invalid magic number ... in block inobt ...) # gdb ./xfs_repair_tcmalloc `pidof xfs_repair_tcmalloc` GNU gdb (GDB) 7.3.1-1 (PLD Linux) Copyright (C) 2011 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-pld-linux". =46or bug reporting instructions, please see: ... Reading symbols from /root/xfs_repair_tcmalloc...done. Attaching to program: /root/xfs_repair_tcmalloc, process 21440 Reading symbols from /lib64/libuuid.so.1...(no debugging symbols found)...d= one. Loaded symbols for /lib64/libuuid.so.1 Reading symbols from /lib64/librt.so.1...(no debugging symbols found)...don= e. Loaded symbols for /lib64/librt.so.1 Reading symbols from /lib64/libtcmalloc_minimal.so.0...(no debugging symbol= s found)...done. Loaded symbols for /lib64/libtcmalloc_minimal.so.0 Reading symbols from /lib64/libpthread.so.0...(no debugging symbols found).= =2E.done. [Thread debugging using libthread_db enabled] [New Thread 0x7fdf93a73700 (LWP 21462)] Loaded symbols for /lib64/libpthread.so.0 Reading symbols from /usr/lib64/libstdc++.so.6...(no debugging symbols foun= d)...done. Loaded symbols for /usr/lib64/libstdc++.so.6 Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done. Loaded symbols for /lib64/libm.so.6 Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done. Loaded symbols for /lib64/libc.so.6 Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols fo= und)...done. Loaded symbols for /lib64/ld-linux-x86-64.so.2 Reading symbols from /lib64/libgcc_s.so.1...(no debugging symbols found)...= done. Loaded symbols for /lib64/libgcc_s.so.1 0x00007fdf9c2c21bf in pthread_join () from /lib64/libpthread.so.0 (gdb) bt #0 0x00007fdf9c2c21bf in pthread_join () from /lib64/libpthread.so.0 #1 0x000000000042dd8f in destroy_work_queue (wq=3D0x7fff62659180) at threa= ds.c:146 #2 0x000000000042d89f in scan_ags (mp=3D0x7fff62659300, scan_threads=3D) at scan.c:1353 #3 0x000000000041b68e in phase2 (mp=3D0x7fff62659300, scan_threads=3D32) a= t phase2.c:142 #4 0x0000000000402bd6 in main (argc=3D, argv=3D) at xfs_repair.c:747 (gdb) info threads Id Target Id Frame 2 Thread 0x7fdf93a73700 (LWP 21462) "xfs_repair_tcma" 0x00007fdf9c2c78= e4 in __lll_lock_wait () from /lib64/libpthread.so.0 * 1 Thread 0x7fdf9cbba760 (LWP 21440) "xfs_repair_tcma" 0x00007fdf9c2c21= bf in pthread_join () from /lib64/libpthread.so.0 (gdb) thread 2 [Switching to thread 2 (Thread 0x7fdf93a73700 (LWP 21462))] #0 0x00007fdf9c2c78e4 in __lll_lock_wait () from /lib64/libpthread.so.0 (gdb) bt #0 0x00007fdf9c2c78e4 in __lll_lock_wait () from /lib64/libpthread.so.0 #1 0x00007fdf9c2c31b5 in _L_lock_883 () from /lib64/libpthread.so.0 #2 0x00007fdf9c2c300a in pthread_mutex_lock () from /lib64/libpthread.so.0 #3 0x00000000004334ba in libxfs_getbuf_flags (device=3D, bl= kno=3D, len=3D, flags=3D) at r= dwr.c:423 #4 0x000000000043370e in libxfs_readbuf (dev=3D65024, blkno=3D4294967344, = len=3D8, flags=3D0) at rdwr.c:530 #5 0x000000000042b44f in scan_sbtree (root=3D8, nlevels=3D25160588, agno= =3D2, suspect=3D1, func=3D0x42c5d0 , isroot=3D= , priv=3D0x7143f0) at scan.c:90 #6 0x000000000042ccdd in scanfunc_ino (block=3D, level=3D25= 160588, bno=3D, agno=3D2, suspect=3D1, isroot=3D1, priv=3D0x= 7143f0) at scan.c:1037 #7 0x000000000042b476 in scan_sbtree (root=3D8, nlevels=3D25160589, agno= =3D2, suspect=3D0, func=3D0x42c5d0 , isroot=3D= , priv=3D0x7143f0) at scan.c:96 #8 0x000000000042c3a8 in validate_agi (agcnts=3D0x7143f0, agno=3D2, agi=3D= 0x783a00) at scan.c:1151 #9 scan_ag (wq=3D, agno=3D2, arg=3D0x7143f0) at scan.c:1293 #10 0x000000000042da4a in worker_thread (arg=3D0x7fff62659180) at threads.c= :46 #11 0x00007fdf9c2c0ed5 in start_thread () from /lib64/libpthread.so.0 #12 0x00007fdf9ba7de5d in clone () from /lib64/libc.so.6 #13 0x0000000000000000 in ?? () (gdb) =2D-=20 Arkadiusz Mi=C5=9Bkiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From sekharan@us.ibm.com Fri Nov 18 09:40:34 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAIFeXuC172833 for ; Fri, 18 Nov 2011 09:40:34 -0600 X-ASG-Debug-ID: 1321630832-67c902b60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e32.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4A9DF261823 for ; Fri, 18 Nov 2011 07:40:33 -0800 (PST) Received: from e32.co.us.ibm.com (e32.co.us.ibm.com [32.97.110.150]) by cuda.sgi.com with ESMTP id 4wdwtpKKqNtzH6Pu for ; Fri, 18 Nov 2011 07:40:33 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from /spool/local by e32.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 18 Nov 2011 08:40:32 -0700 Received: from d03relay04.boulder.ibm.com ([9.17.195.106]) by e32.co.us.ibm.com ([192.168.1.132]) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 18 Nov 2011 08:39:36 -0700 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d03relay04.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id pAIFdMjp072960 for ; Fri, 18 Nov 2011 08:39:23 -0700 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id pAIFdJX2023284 for ; Fri, 18 Nov 2011 08:39:21 -0700 Received: from [9.53.40.164] (chandra-lucid.austin.ibm.com [9.53.40.164]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id pAIFdFSu022969; Fri, 18 Nov 2011 08:39:15 -0700 X-ASG-Orig-Subj: Re: Debug of xfstest 234 hang Subject: Re: Debug of xfstest 234 hang From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Dave Chinner Cc: Alex Elder , XFS Mailing List In-Reply-To: <20111110221937.GA2386@dastard> References: <1320959794.2201.15.camel@chandra-lucid.austin.ibm.com> <20111110221937.GA2386@dastard> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Fri, 18 Nov 2011 09:39:11 -0600 Message-ID: <1321630751.2201.66.camel@chandra-lucid.austin.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit x-cbid: 11111815-3270-0000-0000-000001DDC823 X-Barracuda-Connect: e32.co.us.ibm.com[32.97.110.150] X-Barracuda-Start-Time: 1321630833 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Dave, I found the problem that is causing this issue. The logic around the threshold calculation works as expected. I saw the problem even when there is lot of space left and xlog_grant_push_ail() returns with free space available. The problem is in the way the l_reserveq and l_writeq are handled. When we wake the processes that are sleeping on l_reserveq and l_writeq thru wake_up(), we do not remove them from the queue, we expect the process to remove themselves from the list (and we drop the lock). But, before the woken up process gets a chance to remove itself, some other process p1 comes in, checks that the queue is not empty and puts itself at the end of the queue. All the woken up processes remove themselves from the queue and move on. Whereas, the process p1 just gets stuck in the queue. Any new process that comes in gets back at the end of the queue and all of them gets stuck. The problem doesn't happen if there is lot of activities, which makes some process calls xfs_log_move_tail() or push the ail (thru xlog_grant_push_ail()). But, with no activity, all these processes are never woken up. IMO, the right solution is to remove the item from the list when we wake them up. I tried the change and it works as expected. Will send the patch to the list shortly. Regards, Chandra From aelder@sgi.com Fri Nov 18 11:21:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAIHL85a188959 for ; Fri, 18 Nov 2011 11:21:09 -0600 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay2.corp.sgi.com (Postfix) with ESMTP id A45C2304051; Fri, 18 Nov 2011 09:21:05 -0800 (PST) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.5/8.14.2) with ESMTP id pAIHL5nZ002316; Fri, 18 Nov 2011 11:21:05 -0600 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.5/8.14.5/Submit) id pAIHL5VU002315; Fri, 18 Nov 2011 11:21:05 -0600 From: Alex Elder Message-Id: <201111181721.pAIHL5VU002315@stout.americas.sgi.com> Date: Fri, 18 Nov 2011 11:21:05 -0600 To: xfs@oss.sgi.com Subject: [PATCH] MAINTAINERS: update XFS maintainer entry Cc: bpm@sgi.com User-Agent: Heirloom mailx 12.5 7/5/10 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I will no longer be maintaining XFS for SGI. Ben Myers (bpm@sgi.com) has agreed to be the primary maintainer for XFS in my place. I will continue to be able to push commits to the SGI XFS tree if required. As such I will continue to be a designated XFS maintainer, but plan to serve in more of a backup role. Signed-off-by: Alex Elder --- MAINTAINERS | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index 4808256..227cd7c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -7425,7 +7425,8 @@ F: drivers/xen/*swiotlb* XFS FILESYSTEM P: Silicon Graphics Inc -M: Alex Elder +M: Ben Myers +M: Alex Elder M: xfs-masters@oss.sgi.com L: xfs@oss.sgi.com W: http://oss.sgi.com/projects/xfs -- 1.7.6.1 From bpm@sgi.com Fri Nov 18 11:26:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAIHQEp9189743 for ; Fri, 18 Nov 2011 11:26:14 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3A52C304043; Fri, 18 Nov 2011 09:26:14 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 1413A431F74; Fri, 18 Nov 2011 11:26:34 -0600 (CST) Date: Fri, 18 Nov 2011 11:26:34 -0600 From: Ben Myers To: Alex Elder Cc: xfs@oss.sgi.com Subject: Re: [PATCH] MAINTAINERS: update XFS maintainer entry Message-ID: <20111118172634.GM29840@sgi.com> References: <201111181721.pAIHL5VU002315@stout.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201111181721.pAIHL5VU002315@stout.americas.sgi.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Nov 18, 2011 at 11:21:05AM -0600, Alex Elder wrote: > I will no longer be maintaining XFS for SGI. Ben Myers > (bpm@sgi.com) has agreed to be the primary maintainer > for XFS in my place. I will continue to be able to push > commits to the SGI XFS tree if required. As such I will > continue to be a designated XFS maintainer, but plan to > serve in more of a backup role. > > Signed-off-by: Alex Elder Reviewed-by: Ben Myers > --- > MAINTAINERS | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/MAINTAINERS b/MAINTAINERS > index 4808256..227cd7c 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -7425,7 +7425,8 @@ F: drivers/xen/*swiotlb* > > XFS FILESYSTEM > P: Silicon Graphics Inc > -M: Alex Elder > +M: Ben Myers > +M: Alex Elder > M: xfs-masters@oss.sgi.com > L: xfs@oss.sgi.com > W: http://oss.sgi.com/projects/xfs > -- > 1.7.6.1 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From peterakimball@yahoo.com Fri Nov 18 11:33:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_40,FREEMAIL_FROM, T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAIHXKuU190789 for ; Fri, 18 Nov 2011 11:33:21 -0600 X-ASG-Debug-ID: 1321637599-22ce00880000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from nm20-vm0.bullet.mail.sp2.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 1678C16DB3E3 for ; Fri, 18 Nov 2011 09:33:19 -0800 (PST) Received: from nm20-vm0.bullet.mail.sp2.yahoo.com (nm20-vm0.bullet.mail.sp2.yahoo.com [98.139.91.218]) by cuda.sgi.com with SMTP id ymCYjt5EisPQOPiv for ; Fri, 18 Nov 2011 09:33:19 -0800 (PST) Received: from [98.139.91.70] by nm20.bullet.mail.sp2.yahoo.com with NNFMP; 18 Nov 2011 17:33:19 -0000 Received: from [98.136.185.47] by tm10.bullet.mail.sp2.yahoo.com with NNFMP; 18 Nov 2011 17:33:19 -0000 Received: from [127.0.0.1] by smtp108.mail.gq1.yahoo.com with NNFMP; 18 Nov 2011 17:33:19 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1321637599; bh=Kn12mtHbPsG95o4qFWvi8Pv8/GJO/ttydCRPWpFIqCc=; h=X-Yahoo-Newman-Id:X-Yahoo-Newman-Property:X-YMail-OSG:X-Yahoo-SMTP:Received:From:Content-Type:Content-Transfer-Encoding:Subject:Date:Message-Id:To:Mime-Version:X-Mailer; b=Z41CuIAd8oFicn8UTi8Z2W5We0c34of8Up0lJe95RATx6JR9u3Li5SMOgUxQpNFfGpHjdmnah3uPgV79+hCFny5wJBo/zv+SV+dOzbei9+DznMVgGgECqoC0dCFOV9M4F062XsBXYv4JAc6zZ46v5aIgiKFQxUuqD5S7J+pc0IY= X-Yahoo-Newman-Id: 35011.98955.bm@smtp108.mail.gq1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: W.xB_J4VM1nb9u.hopNzTjbe7ge4DGKiztwFh6I_DAXBSlQ SaCG5gnhQk.SHuHiDamZdSZWLhN_z6pVDpEDXC5aKdGlo4EfIp.0ixTHPEIe EMp9w2UOMX6Q9azKFiI3txIsmC1xIdGNAA8Ev5wBwZTCCUh2jxGv5tylVnsA fSZwkdyU5XaYxexh52fmSEK_jVQ1HbmqIONASflVsvVbLPuTP1Gho6Yr7ujA Kevq3kcSEacDW9biRqyxCe8bK2tkJXbquiZVlWAIifE_zGhCt0SXRIoF7v2d Tdhe6UuIOnI7oD9ryrhIqTthp5WIFquf1aXHRBmgWcuDrXE5.GtSylbLRMiz XuMlykdWSPBTN4TMfN_xbcIsp091PQjUUoo6e0VWe5PlErLeHc89GlP9cbL0 TkGQZOsdiGL_2hipCKrg3KpDSsNl3ND2qrUbD X-Yahoo-SMTP: .su40JeswBCx1na_650V4RX6HMvZzgG9fR4- Received: from [172.16.1.15] (peterakimball@68.236.177.120 with plain) by smtp108.mail.gq1.yahoo.com with SMTP; 18 Nov 2011 09:33:18 -0800 PST From: Peter Kimball Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable X-ASG-Orig-Subj: inode64 readiness testing Subject: inode64 readiness testing Date: Fri, 18 Nov 2011 12:33:16 -0500 Message-Id: <501A7AEB-6708-4181-AAE2-D145DC23B938@yahoo.com> To: xfs@oss.sgi.com Mime-Version: 1.0 (Apple Message framework v1244.3) X-Mailer: Apple Mail (2.1244.3) X-Barracuda-Connect: nm20-vm0.bullet.mail.sp2.yahoo.com[98.139.91.218] X-Barracuda-Start-Time: 1321637600 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0715 1.0000 -1.5662 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.57 X-Barracuda-Spam-Status: No, SCORE=-1.57 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80613 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi folks, We've got some large XFS volumes that should probably be using the = inode64 mount option, but aren't yet. Before I go making irrevocable = changes, I wanted to run my testing procedure by you to make sure I've = actually tested what I think I tested. These volumes will be shared via = NFS, which is not your problem but seems to be a troublemaker. I created a blank 1GB disk image, created an XFS filesystem on that = image, and mounted it on a loopback device using the ino64 flag. =20 I wrote a bunch of data to the filesystem (lots of small files), = approximately 600MB. At this point, I think I have a filesystem in which inodes use 64-bit = addresses, even if the actual address value would fit in 32 bits. I = would expect any program that can't handle 64-bit addresses to barf when = trying to access any data on the filesystem. I then unmounted the filesystem and re-mounted it using the inode64 = flag, just like it would be mounted in production. I then verified that the programs I cared about (mostly NFS clients) = could read all of the data I had written. I also made sure they could = write to the filesystem. Since I haven't seen any read/write failures at this point, I feel I'm = ready to sign off that we're ready to start using the inode64 flag. Did = I properly create files using 64-bit inodes? Did I read from the = filesystem in such a way that I would know if my readers were unable to = handle 64-bit inodes? Is there anything I should test that I haven't? Thanks for all your hard work on this most useful project! Peter ps: not sure it makes a difference, this is on Centos 5.3 = (2.6.18-128.el5), so I'm not entirely certain which XFS bugs/features = have been folded in by the maintainers... From sekharan@us.ibm.com Fri Nov 18 13:21:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAIJL28g197994 for ; Fri, 18 Nov 2011 13:21:04 -0600 X-ASG-Debug-ID: 1321644061-6a68017a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e7.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6C7FA2628A5 for ; Fri, 18 Nov 2011 11:21:02 -0800 (PST) Received: from e7.ny.us.ibm.com (e7.ny.us.ibm.com [32.97.182.137]) by cuda.sgi.com with ESMTP id VEYqxko0YVJjSaBM for ; Fri, 18 Nov 2011 11:21:02 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from /spool/local by e7.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 18 Nov 2011 14:21:01 -0500 Received: from d01relay04.pok.ibm.com ([9.56.227.236]) by e7.ny.us.ibm.com ([192.168.1.107]) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 18 Nov 2011 14:20:58 -0500 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id pAIJKtnj278740 for ; Fri, 18 Nov 2011 14:20:56 -0500 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id pAIJKtc5015647 for ; Fri, 18 Nov 2011 12:20:55 -0700 Received: from [9.53.40.164] (chandra-lucid.austin.ibm.com [9.53.40.164]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id pAIJKsuK015633 for ; Fri, 18 Nov 2011 12:20:55 -0700 X-ASG-Orig-Subj: [PATCH] xfs: Remove the entries from the queue while waking them up. Subject: [PATCH] xfs: Remove the entries from the queue while waking them up. From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Mailing List Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Fri, 18 Nov 2011 13:20:54 -0600 Message-ID: <1321644054.2201.80.camel@chandra-lucid.austin.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit x-cbid: 11111819-5806-0000-0000-0000094502D7 X-Barracuda-Connect: e7.ny.us.ibm.com[32.97.182.137] X-Barracuda-Start-Time: 1321644062 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean l_reserveq and l_writeq maintains a list of processes waiting to get log space. Processes are supposed to get in the list when the amount of free space available in the log is less than what they need. When space becomes available current code, wakes up the processes, but expect the processes to remove themselves from the queue. Since the lock protecting the list is only acquired later by the woken up process, there is a window of time were a new process that is looking for space can wrongly get into the queue while there is enough space available. Since there is enough space available, this process can never be woken up, which leads to the hang of the process. This was originally reported by Alex Elder as hang seen in xfstests #234. With log of log activities, this problem may not be seen, as some process will be pushing the processes along. But, 234 does lot of quota operations only, hence the problem was noticed in that test. This patch fixes the problem by removing the element from the queue (safely) when the process was woken up. Reported-by: Alex elder Signed-Off-by: Chandra Seethraman --- diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c index a14cd89..9941fcb 100644 --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c @@ -674,7 +674,7 @@ void xfs_log_move_tail(xfs_mount_t *mp, xfs_lsn_t tail_lsn) { - xlog_ticket_t *tic; + xlog_ticket_t *tic, *tmp; xlog_t *log = mp->m_log; int need_bytes, free_bytes; @@ -695,7 +695,7 @@ xfs_log_move_tail(xfs_mount_t *mp, #endif spin_lock(&log->l_grant_write_lock); free_bytes = xlog_space_left(log, &log->l_grant_write_head); - list_for_each_entry(tic, &log->l_writeq, t_queue) { + list_for_each_entry_safe(tic, tmp, &log->l_writeq, t_queue) { ASSERT(tic->t_flags & XLOG_TIC_PERM_RESERV); if (free_bytes < tic->t_unit_res && tail_lsn != 1) @@ -703,6 +703,7 @@ xfs_log_move_tail(xfs_mount_t *mp, tail_lsn = 0; free_bytes -= tic->t_unit_res; trace_xfs_log_regrant_write_wake_up(log, tic); + list_del_init(&tic->t_queue); wake_up(&tic->t_wait); } spin_unlock(&log->l_grant_write_lock); @@ -715,7 +716,7 @@ xfs_log_move_tail(xfs_mount_t *mp, #endif spin_lock(&log->l_grant_reserve_lock); free_bytes = xlog_space_left(log, &log->l_grant_reserve_head); - list_for_each_entry(tic, &log->l_reserveq, t_queue) { + list_for_each_entry_safe(tic, tmp, &log->l_reserveq, t_queue) { if (tic->t_flags & XLOG_TIC_PERM_RESERV) need_bytes = tic->t_unit_res*tic->t_cnt; else @@ -725,6 +726,7 @@ xfs_log_move_tail(xfs_mount_t *mp, tail_lsn = 0; free_bytes -= need_bytes; trace_xfs_log_grant_wake_up(log, tic); + list_del_init(&tic->t_queue); wake_up(&tic->t_wait); } spin_unlock(&log->l_grant_reserve_lock); @@ -2550,8 +2552,7 @@ redo: free_bytes = xlog_space_left(log, &log->l_grant_reserve_head); if (free_bytes < need_bytes) { spin_lock(&log->l_grant_reserve_lock); - if (list_empty(&tic->t_queue)) - list_add_tail(&tic->t_queue, &log->l_reserveq); + list_add_tail(&tic->t_queue, &log->l_reserveq); trace_xfs_log_grant_sleep2(log, tic); @@ -2567,12 +2568,6 @@ redo: goto redo; } - if (!list_empty(&tic->t_queue)) { - spin_lock(&log->l_grant_reserve_lock); - list_del_init(&tic->t_queue); - spin_unlock(&log->l_grant_reserve_lock); - } - /* we've got enough space */ xlog_grant_add_space(log, &log->l_grant_reserve_head, need_bytes); xlog_grant_add_space(log, &log->l_grant_write_head, need_bytes); @@ -2626,30 +2621,28 @@ xlog_regrant_write_log_space(xlog_t *log, goto error_return_unlocked; /* If there are other waiters on the queue then give them a - * chance at logspace before us. Wake up the first waiters, - * if we do not wake up all the waiters then go to sleep waiting - * for more free space, otherwise try to get some space for - * this transaction. + * chance at logspace before us. If we do not wake up all + * the waiters then go to sleep waiting for more free space, + * otherwise try to get some space for this transaction. */ need_bytes = tic->t_unit_res; if (!list_empty_careful(&log->l_writeq)) { - struct xlog_ticket *ntic; + struct xlog_ticket *ntic, *tmp; spin_lock(&log->l_grant_write_lock); free_bytes = xlog_space_left(log, &log->l_grant_write_head); - list_for_each_entry(ntic, &log->l_writeq, t_queue) { + list_for_each_entry_safe(ntic, tmp, &log->l_writeq, t_queue) { ASSERT(ntic->t_flags & XLOG_TIC_PERM_RESERV); if (free_bytes < ntic->t_unit_res) break; free_bytes -= ntic->t_unit_res; + list_del_init(&ntic->t_queue); wake_up(&ntic->t_wait); } - if (ntic != list_first_entry(&log->l_writeq, - struct xlog_ticket, t_queue)) { - if (list_empty(&tic->t_queue)) - list_add_tail(&tic->t_queue, &log->l_writeq); + if (!list_empty(&log->l_writeq)) { + list_add_tail(&tic->t_queue, &log->l_writeq); trace_xfs_log_regrant_write_sleep1(log, tic); xlog_grant_push_ail(log, need_bytes); @@ -2668,8 +2661,7 @@ redo: free_bytes = xlog_space_left(log, &log->l_grant_write_head); if (free_bytes < need_bytes) { spin_lock(&log->l_grant_write_lock); - if (list_empty(&tic->t_queue)) - list_add_tail(&tic->t_queue, &log->l_writeq); + list_add_tail(&tic->t_queue, &log->l_writeq); if (XLOG_FORCED_SHUTDOWN(log)) goto error_return; @@ -2684,12 +2676,6 @@ redo: goto redo; } - if (!list_empty(&tic->t_queue)) { - spin_lock(&log->l_grant_write_lock); - list_del_init(&tic->t_queue); - spin_unlock(&log->l_grant_write_lock); - } - /* we've got enough space */ xlog_grant_add_space(log, &log->l_grant_write_head, need_bytes); trace_xfs_log_regrant_write_exit(log, tic); @@ -3621,7 +3607,7 @@ xfs_log_force_umount( struct xfs_mount *mp, int logerror) { - xlog_ticket_t *tic; + xlog_ticket_t *tic, *tmp; xlog_t *log; int retval; @@ -3690,13 +3676,17 @@ xfs_log_force_umount( * action is protected by the grant locks. */ spin_lock(&log->l_grant_reserve_lock); - list_for_each_entry(tic, &log->l_reserveq, t_queue) + list_for_each_entry_safe(tic, tmp, &log->l_reserveq, t_queue) { + list_del_init(&tic->t_queue); wake_up(&tic->t_wait); + } spin_unlock(&log->l_grant_reserve_lock); spin_lock(&log->l_grant_write_lock); - list_for_each_entry(tic, &log->l_writeq, t_queue) + list_for_each_entry_safe(tic, tmp, &log->l_writeq, t_queue) { + list_del_init(&tic->t_queue); wake_up(&tic->t_wait); + } spin_unlock(&log->l_grant_write_lock); if (!(log->l_iclog->ic_state & XLOG_STATE_IOERROR)) { From bpm@oss.sgi.com Fri Nov 18 14:01:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAIK1JZi201067 for ; Fri, 18 Nov 2011 14:01:20 -0600 Received: (from bpm@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id pAIK1JEC201041; Fri, 18 Nov 2011 14:01:19 -0600 Date: Fri, 18 Nov 2011 14:01:19 -0600 Message-Id: <201111182001.pAIK1JEC201041@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v3.2-rc1-5-gc889132 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: db3e74b582915d66e10b0c73a62763418f54c340 X-Git-Newrev: c8891329131f791e0ddc422eaf6fc86e9a8cf8f5 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated from db3e74b582915d66e10b0c73a62763418f54c340 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- XFS development tree From bpm@oss.sgi.com Fri Nov 18 14:38:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAIKcUEt203500 for ; Fri, 18 Nov 2011 14:38:30 -0600 Received: (from bpm@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id pAIKcUwg203472; Fri, 18 Nov 2011 14:38:30 -0600 Date: Fri, 18 Nov 2011 14:38:30 -0600 Message-Id: <201111182038.pAIKcUwg203472@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v3.2-rc1-5-gc889132 X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: 810627d9a6d0e8820c798001875bc4e1b7754ebf X-Git-Newrev: c8891329131f791e0ddc422eaf6fc86e9a8cf8f5 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated db3e74b xfs: use doalloc flag in xfs_qm_dqattach_one() from 810627d9a6d0e8820c798001875bc4e1b7754ebf (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit db3e74b582915d66e10b0c73a62763418f54c340 Author: Mitsuo Hayasaka Date: Thu Nov 10 01:33:10 2011 +0000 xfs: use doalloc flag in xfs_qm_dqattach_one() The doalloc arg in xfs_qm_dqattach_one() is a flag that indicates whether a new area to handle quota information will be allocated if needed. Originally, it was passed to xfs_qm_dqget(), but has been removed by the following commit (probably by mistake): commit 8e9b6e7fa4544ea8a0e030c8987b918509c8ff47 Author: Christoph Hellwig Date: Sun Feb 8 21:51:42 2009 +0100 xfs: remove the unused XFS_QMOPT_DQLOCK flag As the result, xfs_qm_dqget() called from xfs_qm_dqattach_one() never allocates the new area even if it is needed. This patch gives the doalloc arg to xfs_qm_dqget() in xfs_qm_dqattach_one() to fix this problem. Signed-off-by: Mitsuo Hayasaka Cc: Alex Elder Cc: Christoph Hellwig Reviewed-by: Christoph Hellwig Signed-off-by: Ben Myers ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_qm.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) hooks/post-receive -- XFS development tree From bpm@sgi.com Fri Nov 18 14:46:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAIKkBOh203878 for ; Fri, 18 Nov 2011 14:46:11 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id EA7438F804B; Fri, 18 Nov 2011 12:46:07 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id D60B0431F74; Fri, 18 Nov 2011 14:46:27 -0600 (CST) Date: Fri, 18 Nov 2011 14:46:27 -0600 From: Ben Myers To: torvalds@linux-foundation.org Cc: xfs@oss.sgi.com, akpm@linux-foundation.org, linux-kernel@vger.kernel.org Subject: [GIT PULL] XFS update for 3.2-rc3 Message-ID: <20111118204627.GQ749@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Linus, please pull the following changes for XFS for 3.2-rc3. One is a bugfix for a regression related to quotas, and the other adds me to the MAINTAINERS list for XFS. Thanks much! -Ben The following changes since commit b6844523839779030430ff28f036f83e2a3f43e6: Linus Torvalds (1): Merge branch 'stable/for-linus-fixes-3.2' of git://git.kernel.org/.../konrad/xen are available in the git repository at: git://oss.sgi.com/xfs/xfs for-linus Alex Elder (1): MAINTAINERS: update XFS maintainer entry Mitsuo Hayasaka (1): xfs: use doalloc flag in xfs_qm_dqattach_one() MAINTAINERS | 3 ++- fs/xfs/xfs_qm.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) From dak@franck.debian.org Fri Nov 18 16:31:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAIMVTOO210811 for ; Fri, 18 Nov 2011 16:31:29 -0600 X-ASG-Debug-ID: 1321655488-6a6c03410000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from franck.debian.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BBE5B263529 for ; Fri, 18 Nov 2011 14:31:28 -0800 (PST) Received: from franck.debian.org (franck.debian.org [128.148.34.3]) by cuda.sgi.com with ESMTP id t7kTldg25jQuh8RY for ; Fri, 18 Nov 2011 14:31:28 -0800 (PST) Received: from dak by franck.debian.org with local (Exim 4.72) (envelope-from ) id 1RRWxz-0005zR-Lk for xfs@oss.sgi.com; Fri, 18 Nov 2011 22:31:27 +0000 Message-Id: To: xfs@oss.sgi.com From: Debian FTP Masters X-ASG-Orig-Subj: Processing of xfsprogs_3.1.7_i386.changes Subject: Processing of xfsprogs_3.1.7_i386.changes Date: Fri, 18 Nov 2011 22:31:27 +0000 X-Debian: DAK X-DAK: DAK X-Debian-Package: xfsprogs Sender: Archive Administrator X-Barracuda-Connect: franck.debian.org[128.148.34.3] X-Barracuda-Start-Time: 1321655488 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0677 1.0000 -1.5897 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.59 X-Barracuda-Spam-Status: No, SCORE=-1.59 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80634 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfsprogs_3.1.7_i386.changes uploaded successfully to localhost along with the files: xfsprogs_3.1.7.dsc xfsprogs_3.1.7.tar.gz xfsprogs_3.1.7_i386.deb xfslibs-dev_3.1.7_i386.deb xfsprogs-udeb_3.1.7_i386.udeb Greetings, Your Debian queue daemon (running on host franck.debian.org) From envelope@ftp-master.debian.org Fri Nov 18 16:33:02 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAIMX2YA210900 for ; Fri, 18 Nov 2011 16:33:02 -0600 X-ASG-Debug-ID: 1321655581-6a69034d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from franck.debian.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 865F0263535 for ; Fri, 18 Nov 2011 14:33:01 -0800 (PST) Received: from franck.debian.org (franck.debian.org [128.148.34.3]) by cuda.sgi.com with ESMTP id oRmfrXCgOBpVYPTY for ; Fri, 18 Nov 2011 14:33:01 -0800 (PST) Received: from dak by franck.debian.org with local (Exim 4.72) (envelope-from ) id 1RRWzT-0006Ha-MO; Fri, 18 Nov 2011 22:32:59 +0000 Date: Fri, 18 Nov 2011 22:32:59 +0000 Message-Id: From: Debian FTP Masters To: Nathan Scott , XFS Development Team X-DAK: dak process-upload X-Debian: DAK X-Debian-Package: xfsprogs Precedence: bulk MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-ASG-Orig-Subj: xfsprogs_3.1.7_i386.changes ACCEPTED into unstable Subject: xfsprogs_3.1.7_i386.changes ACCEPTED into unstable Sender: Archive Administrator X-Barracuda-Connect: franck.debian.org[128.148.34.3] X-Barracuda-Start-Time: 1321655581 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0049 1.0000 -1.9892 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.99 X-Barracuda-Spam-Status: No, SCORE=-1.99 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80634 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Accepted: xfslibs-dev_3.1.7_i386.deb to main/x/xfsprogs/xfslibs-dev_3.1.7_i386.deb xfsprogs-udeb_3.1.7_i386.udeb to main/x/xfsprogs/xfsprogs-udeb_3.1.7_i386.udeb xfsprogs_3.1.7.dsc to main/x/xfsprogs/xfsprogs_3.1.7.dsc xfsprogs_3.1.7.tar.gz to main/x/xfsprogs/xfsprogs_3.1.7.tar.gz xfsprogs_3.1.7_i386.deb to main/x/xfsprogs/xfsprogs_3.1.7_i386.deb Override entries for your package: xfslibs-dev_3.1.7_i386.deb - extra libdevel xfsprogs-udeb_3.1.7_i386.udeb - optional debian-installer xfsprogs_3.1.7.dsc - source admin xfsprogs_3.1.7_i386.deb - optional admin Announcing to debian-devel-changes@lists.debian.org Closing bugs: 553875 Thank you for your contribution to Debian. From debbugs@busoni.debian.org Fri Nov 18 16:36:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_73 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAIMa97h211081 for ; Fri, 18 Nov 2011 16:36:09 -0600 X-ASG-Debug-ID: 1321655767-6a76035d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from busoni.debian.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1E408263549 for ; Fri, 18 Nov 2011 14:36:07 -0800 (PST) Received: from busoni.debian.org (busoni.debian.org [140.211.15.34]) by cuda.sgi.com with ESMTP id 8x0gIZV2kYdrlnux for ; Fri, 18 Nov 2011 14:36:07 -0800 (PST) Received: from debbugs by busoni.debian.org with local (Exim 4.72) (envelope-from ) id 1RRX2R-00045k-Me; Fri, 18 Nov 2011 22:36:03 +0000 MIME-Version: 1.0 X-Mailer: MIME-tools 5.428 (Entity 5.428) X-Loop: owner@bugs.debian.org From: owner@bugs.debian.org (Debian Bug Tracking System) To: Nathan Scott X-ASG-Orig-Subj: Bug#553875: marked as done (replacing libreadline5-dev build dependency with libreadline-dev) Subject: Bug#553875: marked as done (replacing libreadline5-dev build dependency with libreadline-dev) Message-ID: References: <200911020111.nA21BMV5011421@bolero.cs.tu-berlin.de> X-Debian-PR-Message: closed 553875 X-Debian-PR-Package: xfsprogs X-Debian-PR-Keywords: sid wheezy X-Debian-PR-Source: xfsprogs Date: Fri, 18 Nov 2011 22:36:03 +0000 Content-Type: multipart/mixed; boundary="----------=_1321655763-15725-0" Sender: Debian BTS X-Barracuda-Connect: busoni.debian.org[140.211.15.34] X-Barracuda-Start-Time: 1321655768 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1204 1.0000 -1.2716 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.07 X-Barracuda-Spam-Status: No, SCORE=-1.07 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA590 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80634 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 BSF_SC0_SA590 Custom Rule SA590 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format... ------------=_1321655763-15725-0 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Your message dated Fri, 18 Nov 2011 22:32:59 +0000 with message-id and subject line Bug#553875: fixed in xfsprogs 3.1.7 has caused the Debian Bug report #553875, regarding replacing libreadline5-dev build dependency with libreadline-dev to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org immediately.) --=20 553875: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D553875 Debian Bug Tracking System Contact owner@bugs.debian.org with problems ------------=_1321655763-15725-0 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at maintonly) by bugs.debian.org; 2 Nov 2009 01:19:24 +0000 X-Spam-Checker-Version: SpamAssassin 3.2.3-bugs.debian.org_2005_01_02 (2007-08-08) on rietz.debian.org X-Spam-Level: X-Spam-Bayes: score:0.0000 Tokens: new, 10; hammy, 94; neutral, 43; spammy, 0. spammytokens: hammytokens:0.000-+--Usertags, 0.000-+--Severity, 0.000-+--usertags, 0.000-+--sk:lists.d, 0.000-+--severity X-Spam-Status: No, score=-9.3 required=4.0 tests=AWL,BAYES_00,HAS_PACKAGE, RCVD_IN_DNSWL_MED autolearn=ham version=3.2.3-bugs.debian.org_2005_01_02 Return-path: Received: from mail.cs.tu-berlin.de ([130.149.17.13]) by rietz.debian.org with esmtp (Exim 4.63) (envelope-from ) id 1N4lZs-00065m-Ks for maintonly@bugs.debian.org; Mon, 02 Nov 2009 01:19:24 +0000 Received: from localhost (localhost [127.0.0.1]) by localhost-12225.cs.tu-berlin.de (Postfix) with ESMTP id 66CE62A5A4 for ; Mon, 2 Nov 2009 02:11:32 +0100 (MET) X-Virus-Scanned: amavisd-new at cs.tu-berlin.de (including SpamAssassin) Received: from mailhost.cs.tu-berlin.de ([127.0.0.1]) by localhost (mail.cs.tu-berlin.de [127.0.0.1]) (amavisd-new, port 12224) with ESMTP id b+HXJT2HkfTf 06852-17 for ; Mon, 2 Nov 2009 02:11:23 +0100 (MET) 16504 Received: from bolero.cs.tu-berlin.de (bolero.cs.tu-berlin.de [130.149.19.1]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mailhost.cs.tu-berlin.de (Postfix) with ESMTPS for ; Mon, 2 Nov 2009 02:11:23 +0100 (MET) Received: (from doko@localhost) by bolero.cs.tu-berlin.de (8.13.8+Sun/8.13.3/Submit) id nA21BMV5011421 for maintonly@bugs.debian.org; Mon, 2 Nov 2009 02:11:22 +0100 (MET) Date: Mon, 2 Nov 2009 02:11:22 +0100 (MET) From: Matthias Klose Message-Id: <200911020111.nA21BMV5011421@bolero.cs.tu-berlin.de> To: maintonly@bugs.debian.org Subject: replacing libreadline5-dev build dependency with libreadline-dev Delivered-To: maintonly@bugs.debian.org Package: xfsprogs Version: 3.0.4 Severity: important User: doko@debian.org Usertags: readline6 Sent to http://lists.debian.org/debian-devel/2009/09/msg00549.html As a package maintainer you got this email directly as well. Both libreadline-dev (>= 6.0) and libreadline6-dev are now available in unstable and testing. If possible, please replace the libreadline5-dev build dependency with libreadline-dev, so that in future changes of the libreadline soname binNMU's can be used for this kind of update. ------------=_1321655763-15725-0 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 553875-close) by bugs.debian.org; 18 Nov 2011 22:33:01 +0000 X-Spam-Checker-Version: SpamAssassin 3.3.1-bugs.debian.org_2005_01_02 (2010-03-16) on busoni.debian.org X-Spam-Level: X-Spam-Status: No, score=-11.7 required=4.0 tests=BAYES_00,FROMDEVELOPER, FVGT_m_MULTI_ODD,HAS_BUG_NUMBER,IMPRONONCABLE_1,IMPRONONCABLE_2, MURPHY_WRONG_WORD1,MURPHY_WRONG_WORD2,PGPSIGNATURE autolearn=ham version=3.3.1-bugs.debian.org_2005_01_02 X-Spam-Bayes: score:0.0000 Tokens: new, 34; hammy, 151; neutral, 130; spammy, 0. spammytokens: hammytokens:0.000-+--HX-Debian:DAK, 0.000-+--H*rp:D*ftp-master.debian.org, 0.000-+--HX-DAK:process-upload, 0.000-+--H*RU:128.148.34.3, 0.000-+--HX-Spam-Relays-External:128.148.34.3 Return-path: Received: from franck.debian.org ([128.148.34.3]) from C=NA,ST=NA,L=Ankh Morpork,O=Debian SMTP,OU=Debian SMTP CA,CN=franck.debian.org,EMAIL=hostmaster@franck.debian.org (verified) by busoni.debian.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.72) (envelope-from ) id 1RRWzU-0003oA-UV for 553875-close@bugs.debian.org; Fri, 18 Nov 2011 22:33:01 +0000 Received: from dak by franck.debian.org with local (Exim 4.72) (envelope-from ) id 1RRWzT-0006Hh-Om; Fri, 18 Nov 2011 22:32:59 +0000 Date: Fri, 18 Nov 2011 22:32:59 +0000 Message-Id: From: Nathan Scott To: 553875-close@bugs.debian.org X-DAK: dak process-upload X-Debian: DAK X-Debian-Package: xfsprogs MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Subject: Bug#553875: fixed in xfsprogs 3.1.7 Sender: Archive Administrator Source: xfsprogs Source-Version: 3.1.7 We believe that the bug you reported is fixed in the latest version of xfsprogs, which is due to be installed in the Debian FTP archive: xfslibs-dev_3.1.7_i386.deb to main/x/xfsprogs/xfslibs-dev_3.1.7_i386.deb xfsprogs-udeb_3.1.7_i386.udeb to main/x/xfsprogs/xfsprogs-udeb_3.1.7_i386.udeb xfsprogs_3.1.7.dsc to main/x/xfsprogs/xfsprogs_3.1.7.dsc xfsprogs_3.1.7.tar.gz to main/x/xfsprogs/xfsprogs_3.1.7.tar.gz xfsprogs_3.1.7_i386.deb to main/x/xfsprogs/xfsprogs_3.1.7_i386.deb A summary of the changes between this version and the previous one is attached. Thank you for reporting the bug, which will now be closed. If you have further comments please address them to 553875@bugs.debian.org, and the maintainer will reopen the bug report if appropriate. Debian distribution maintenance software pp. Nathan Scott (supplier of updated xfsprogs package) (This message was generated automatically at their request; if you believe that there is a problem with it please contact the archive administrators by mailing ftpmaster@debian.org) -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Format: 1.8 Date: Thu, 17 Nov 2011 08:47:00 +1100 Source: xfsprogs Binary: xfsprogs xfslibs-dev xfsprogs-udeb Architecture: source i386 Version: 3.1.7 Distribution: unstable Urgency: low Maintainer: XFS Development Team Changed-By: Nathan Scott Description: xfslibs-dev - XFS filesystem-specific static libraries and headers xfsprogs - Utilities for managing the XFS filesystem xfsprogs-udeb - A stripped-down version of xfsprogs, for debian-installer (udeb) Closes: 553875 Changes: xfsprogs (3.1.7) unstable; urgency=low . * New upstream release * Fix libreadline build dependency (closes: #553875) Checksums-Sha1: f5474e00d0ca22e7aef74110aaeefcbfd10b90fb 1096 xfsprogs_3.1.7.dsc ca305727a106d1d13a736d691f8666a4732e89e1 1398644 xfsprogs_3.1.7.tar.gz 1ce72599c11e80ec52ac32d4e73608b85a5ddf64 1543174 xfsprogs_3.1.7_i386.deb 2abf0dfd9f9ba3d9e8dce6c9148566968c24e3a8 32126 xfslibs-dev_3.1.7_i386.deb 49cabd6c61461057493370a6855a4601b0dff19a 138904 xfsprogs-udeb_3.1.7_i386.udeb Checksums-Sha256: 2a723a34e14eb263803772789809eb7563fbea68e224c28c10bd660e9ac76ec1 1096 xfsprogs_3.1.7.dsc 1c529e623bc26bd7987229d55397562339a8cb5cd3aeeef7fc36a2ec47d6e7f7 1398644 xfsprogs_3.1.7.tar.gz b977e9ab6f8e2bc4e2508984adca16fa89b27f5ac88a4cfab5fb81374babef79 1543174 xfsprogs_3.1.7_i386.deb 560f812d9acab6beb3d0270d895ea70d924246701eda77c578e6decfbdcff344 32126 xfslibs-dev_3.1.7_i386.deb c0b20e3908c6070a2820b12fbb80cccb24dfd7179007c1c36632e829088bc9d3 138904 xfsprogs-udeb_3.1.7_i386.udeb Files: 11d43a6eed718c4bf736081b829c25b1 1096 admin optional xfsprogs_3.1.7.dsc 535e5282887840eaab5a902bef0e4fcf 1398644 admin optional xfsprogs_3.1.7.tar.gz 49999d460519278d15da6ca86adb246a 1543174 admin optional xfsprogs_3.1.7_i386.deb 6cdaeafa9246d04b484c417fd358da9a 32126 libdevel extra xfslibs-dev_3.1.7_i386.deb e2798dd5fd325b32c0e70e4e443b537f 138904 debian-installer optional xfsprogs-udeb_3.1.7_i386.udeb Package-Type: udeb -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iEYEARECAAYFAk7G1oQACgkQm8fl3HSIa2NNvQCeLpkMJqIFcqia6nlRfHNYyeza EnQAniDSRUz8r2kjkaImScPzi7cT3OjU =LJb8 -----END PGP SIGNATURE----- ------------=_1321655763-15725-0-- From renlongjx7184@sohu.com Fri Nov 18 17:06:32 2011 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAIN6S5G212835 for ; Fri, 18 Nov 2011 17:06:30 -0600 X-ASG-Debug-ID: 1321657580-307102130000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from websmtp.sohu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 972371491491 for ; Fri, 18 Nov 2011 15:06:20 -0800 (PST) Received: from websmtp.sohu.com (websmtp.sohu.com [61.135.132.136]) by cuda.sgi.com with ESMTP id mrLdO2lXzdzkkR7u for ; Fri, 18 Nov 2011 15:06:20 -0800 (PST) Received: from edmax (unknown [110.244.79.18]) by websmtp.sohu.com (Postfix) with ESMTPA id 65B933A62BF9; Fri, 18 Nov 2011 19:10:04 +0800 (CST) Reply-To: Message-ID: <78F6799C00D63012E4330E90FA7F21A1@edmax> From: =?utf-8?B?5Lya5Yqh57uE?= To: X-ASG-Orig-Subj: =?utf-8?B?4oCc5Y2B5LqM5LqU56eR5oqA6aG555uu5LiT6aG56LWE6YeR55Sz5oql5LiO566h55CG5L2T5Yi25pS5?= =?utf-8?B?6Z2p5pqo5LyB5Lia55+l6K+G5Lqn5p2D566h55CG5ZKM5LiT5Yip6L+Q55So56CU6K6o54+t55qE6YCa?= =?utf-8?B?55+l4oCd44CQ5YyX5Lqs44CR44CQMTEuMjTjgJEuZG9jICAg?= =?utf-8?B?ICAgICA=?= Subject: =?utf-8?B?4oCc5Y2B5LqM5LqU56eR5oqA6aG555uu5LiT6aG56LWE6YeR55Sz5oql5LiO566h55CG5L2T5Yi25pS5?= =?utf-8?B?6Z2p5pqo5LyB5Lia55+l6K+G5Lqn5p2D566h55CG5ZKM5LiT5Yip6L+Q55So56CU6K6o54+t55qE6YCa?= =?utf-8?B?55+l4oCd44CQ5YyX5Lqs44CR44CQMTEuMjTjgJEuZG9jICAg?= =?utf-8?B?ICAgICA=?= Date: Fri, 18 Nov 2011 19:10:10 +0800 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0A74_013CCF6C.1D04BC10" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.5512 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5512 X-SOHU-Antispam-Bayes: 0 X-Barracuda-Connect: websmtp.sohu.com[61.135.132.136] X-Barracuda-Start-Time: 1321657586 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format. ------=_NextPart_000_0A74_013CCF6C.1D04BC10 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_001_01C7_013CCF6C.1D04BC10" ------=_NextPart_001_01C7_013CCF6C.1D04BC10 Content-Type: multipart/alternative; boundary="----=_NextPart_002_040F_013CCF6C.1D04BC10" ------=_NextPart_002_040F_013CCF6C.1D04BC10 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 5Zu95a625Y+R5pS55aeU5Z+56K6t5Lit5b+D5Li+5Yqe4oCc5Y2B5LqM5LqU56eR5oqA6aG555uu 5LiT6aG56LWE6YeR55Sz5oql5LiO566h55CG5L2T5Yi25pS56Z2p5pqo5LyB5Lia55+l6K+G5Lqn 5p2D566h55CG5ZKM5LiT5Yip6L+Q55So56CU6K6o54+t55qE6YCa55+l4oCd44CQ5YyX5Lqs44CR 44CQMTEuMjTjgJEuZG9j ------=_NextPart_002_040F_013CCF6C.1D04BC10 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv L0VOIj4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0 Zi04IiBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZT4NCjxNRVRBIG5hbWU9R0VORVJBVE9SIGNvbnRl bnQ9Ik1TSFRNTCA4LjAwLjYwMDEuMTkxNTQiPjwvSEVBRD4NCjxCT0RZPg0KPFA+PElNRyBib3Jk ZXI9MCBoc3BhY2U9MCBhbHQ9IiIgYWxpZ249YmFzZWxpbmUgDQpzcmM9ImNpZDowMDA2M0E0OTYy QjVfMEI3NjE4MTFfMEM1QzEzNjMiPuWbveWutuWPkeaUueWnlOWfueiureS4reW/g+S4vuWKnuKA nOWNgeS6jOS6lOenkeaKgOmhueebruS4k+mhuei1hOmHkeeUs+aKpeS4jueuoeeQhuS9k+WItuaU uemdqeaaqOS8geS4muefpeivhuS6p+adg+euoeeQhuWSjOS4k+WIqei/kOeUqOeglOiuqOePreea hOmAmuefpeKAneOAkOWMl+S6rOOAkeOAkDExLjI044CRLmRvYzwvUD48L0JPRFk+PC9IVE1MPg0K ------=_NextPart_002_040F_013CCF6C.1D04BC10-- ------=_NextPart_001_01C7_013CCF6C.1D04BC10 Content-Type: image/jpeg; name="=?utf-8?B?5Y+R5pS55aeULmpwZw==?=" Content-Transfer-Encoding: base64 Content-ID: <00063A4962B5_0B761811_0C5C1363> /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsK CwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQU FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAI6AlsDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9U6KK KACiiopWC8nhQCSSMjtQB5j8fvFXibwT4Dl8T+FRHeX2kzxvLpktuZo7yJ2COPlIZWUPvDBgAASw I6cN8QPih458Taj8OtG+H1mtprOqwRa9q6arDvg0/T2jwI7gnH3nZwAuGJiOGGDnu9c0nRdSv7q5 u/hZJqsrsY2untdNc3CjgYLzAkfKCM4PTHWvnn9l+Lw7q2l+K7fU/AJ8R6jPrd5dWszWdlLttQyx IimWUZCyB8ouVUsucblyAfWPhfxNZ+LNC/tDSNSsdaUAxNcWMwaAzKAHQEbsfN9SPU1y3irx94w8 GeFtZ8Q6p4X0Z9N0qznvpls9elaZ4okLkqptVXOF/vd65/4ZWOr2d14psNJ+GFh8MD5qDT9TaC1u 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 d6WiigAooooAKKKKACiiigAooooAKKKKAP/Z ------=_NextPart_001_01C7_013CCF6C.1D04BC10-- ------=_NextPart_000_0A74_013CCF6C.1D04BC10 Content-Type: application/msword; name="=?utf-8?B?5Zu95a625Y+R5pS55aeU5Z+56K6t5Lit5b+D5Li+5Yqe4oCc5Y2B5LqM5LqU56eR5oqA6aG555uu5LiT6aG56LWE6YeR55Sz5oql5LiO566h55" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?utf-8?B?5Zu95a625Y+R5pS55aeU5Z+56K6t5Lit5b+D5Li+5Yqe4oCc5Y2B5LqM5LqU56eR5oqA6aG555uu5LiT6aG56LWE6YeR55Sz5oql5LiO56" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAAHAAAAFAMAAAAAAAAA EAAAFgMAAAEAAAD+////AAAAAA0DAAAOAwAADwMAABADAAARAwAAEgMAABMDAAD///////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////s pcEAJ2AJBAAA+FK/AAAAAAAAEAAAAAAABgAAejkAAA4AYmpiahDTENMAAAAAAAAAAAAAAAAAAAAA AAAECBYAuDoBAHK5AQByuQEAiwEAAAAAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAAKQAAAAAACoGAAAAAAAAKgYAACoG AAAAAAAAKgYAAAAAAAAqBgAAAAAAACoGAAAAAAAAKgYAACQAAAAAAAAAAAAAAE4GAAAAAAAANiAA AAAAAAA2IAAAAAAAADYgAABQAAAAhiAAACQAAACqIAAAvAAAAE4GAAAAAAAAIy0AAOIBAAByIQAA AAAAAHIhAAAiAAAAlCEAAAAAAACUIQAAAAAAAJQhAAAAAAAAvCMAAAAAAAC8IwAAAAAAALwjAAAA AAAAliwAAAIAAACYLAAAAAAAAJgsAAAAAAAAmCwAAAAAAACYLAAAAAAAAJgsAAAAAAAAmCwAACQA AAAFLwAAaAIAAG0xAAA8AAAAvCwAACEAAAAAAAAAAAAAAAAAAAAAAAAAKgYAAAAAAAC8IwAAAAAA AAAAAAAAAAAAAAAAAAAAAACaIwAAIgAAALwjAAAAAAAAvCMAAAAAAAC8IwAAAAAAALwsAAAAAAAA AAAAAAAAAAAqBgAAAAAAACoGAAAAAAAAlCEAAAAAAAAAAAAAAAAAAJQhAAAGAgAA3SwAABYAAABe KAAAAAAAAF4oAAAAAAAAXigAAAAAAAC8IwAAOAIAACoGAAAAAAAAlCEAAAAAAAAqBgAAAAAAAJQh AAAAAAAAliwAAAAAAAAAAAAAAAAAAF4oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAvCMAAAAAAACWLAAAAAAAAAAAAAAAAAAAXigAAAAAAAAAAAAA AAAAAF4oAAAAAAAAKgYAAAAAAAAqBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXigAAAAAAACUIQAAAAAAAGYhAAAMAAAAwGl2DHCX zAEAAAAAAAAAADYgAAAAAAAA9CUAAHgBAABeKAAAAAAAAAAAAAAAAAAACioAAIwCAADzLAAAMAAA ACMtAAAAAAAAXigAAAAAAACpMQAAAAAAAGwnAACOAAAAqTEAAAAAAABeKAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABe KAAAgAAAAKkxAAAAAAAAAAAAAAAAAAAqBgAAAAAAAN4oAAAsAQAAvCMAAAAAAAC8IwAAAAAAAF4o AAAAAAAAvCMAAAAAAAC8IwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvCMA AAAAAAC8IwAAAAAAALwjAAAAAAAAvCwAAAAAAAC8LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA+icAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwjAAAA AAAAvCMAAAAAAAC8IwAAAAAAACMtAAAAAAAAvCMAAAAAAAC8IwAAAAAAALwjAAAAAAAAvCMAAAAA AAAAAAAAAAAAAE4GAAAAAAAATgYAAAAAAABOBgAARA4AAJIUAACkCwAATgYAAAAAAABOBgAAAAAA AE4GAAAAAAAAkhQAAAAAAABOBgAAAAAAAE4GAAAAAAAATgYAAAAAAAAqBgAAAAAAACoGAAAAAAAA KgYAAAAAAAAqBgAAAAAAACoGAAAAAAAAKgYAAAAAAAD/////AAAAAAIADAEAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADQAB AA0AAQAMAAgADQBElvZOGv8NAFVTTU8NVPB5BwAHAAcA5ovGfjBXQFcHAAcArpAgABZ/BwAHAAcA VID7fLpOBwAHADV1IADdiwcABwAgTyAAH3cHAAcABwBmW1hU01kNVAcAJ2ArUgcATIAgAKFSBwBA YihX6JDolQcANXUgACAAIADdiw0ACP8rVDpT91MJ/wcARQAtAE0AQQBJAEwABwBLYiAAIAA6ZwcA BwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAH AAcABwAHAAcAIAAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAE9Pv1uJW5JjBwChJSAA B2j0lSAAIAAgACAAIAAgACAAIAChJSAAVVP0lSAAIAAgACAAIAChJSAA6oFMiIlbkmMHAAcApWIN VFSA+3y6Thr/TmclZrOCIAAgAAGACF4NAKViDVQ1dSAAIADdixr/MAAxADAALQA1ADgANAA0ADkA NQA1ADgADQClYg1UIE8gACAAH3ca/zAAMQAwAC0ANQA5ADQANQA1ADAAMgAzAA0ApWINVK6QIAAg ALF7Gv8gAGMAaABpAG4AYQBfAGcAagBmAGcAdwBwAHgAegB4AEAAdgBpAHAALgAxADIAAAYAAAII AAAECAAABggAAAgIAAAKCAAADAgAAA4IAAAQCAAAFggAABgIAAAgCAAAIggAACQIAAAmCAAALggA ADAIAAAyCAAAOAgAADwIAAA+CAAARAgAAPfv5+/f18m6q56NfW1ljX1tVG1lRQAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAHRZoQUHvAENKHABLSAAAT0oEAFBKBABRSgQAbygBIRZoQUHvAENK HABLSAAAT0oEAFBKBABRSgQAYUocAG8oAQ4WaEFB7wBDShQAS0gAAAAeFmhBQe8AQ0ocAEtIAABP SgQAUEoEAFFKBABhShwAAB4WaEFB7wBAiOz/Q0ocAEtIAABPSgQAUEoEAFFKBAAAIRZoQUHvAECI 7P9DShwAS0gAAE9KBABQSgQAUUoEAG8oARkWaEFB7wA1CIFDSh4AT0oDAFFKAwBhSh4AHBZoQUHv ADUIgUNKHgBPSgMAUUoDAGFKHgBvKAEAHBZoLlZZADUIgUNKHgBPSgMAUUoDAGFKHgBvKAEAGgNq AAAAABZoLlZZAFUIAW1IAARuSAAEdQgBAA8VaMYxewAWaMYxewBvKAEPA2r/GgMAFmguVlkAVQgB DwNqsXsBABZoLlZZAFUIAQ8VaMYxewAWaCZQMwBvKAEPA2oAAAAAFmjpPQQAVQgBABUABgAABAgA AAgIAAAMCAAAEAgAABgIAAAiCAAAJAgAACYIAAD3AAAAAAAAAAAAAAAA9wAAAAAAAAAAAAAAAO8A AAAAAAAAAAAAAADkAAAAAAAAAAAAAAAA3AAAAAAAAAAAAAAAAMkAAAAAAAAAAAAAAADJAAAAAAAA AAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAgAAAa2S3fgQAFiQBFyQBSWYBAAAAApZsAAM0AQXWGAIB AAACAQAAAgEAAAIBAAACAQAAAgEAAAeUaAII1jAAApT/bAWII4AG2AUCAQAAAgEAAAIBAAACAQAA gAYcHgIBAAACAQAAAgEAAAIBAAAKdAAA4AENNmAPlG8HEJS0ABPWMAAAAP8CAQAAAAAA/wIBAAAA AAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAABT2AQAAGtYIAAAA/wAAAP8b1ggAAAD/AAAA /xzWCAAAAP8AAAD/HdYIAAAA/wAAAP8elLQANNYGAAEFAwAANNYGAAEKA2wAYfYDAABmNAETAAAD JAEWJAEZhG8HGyZgIyQCL4S0AEckAEgkAElmAQAAAGEkAQAHAABHJABIJABnZEFB7wAACgAAAyQB RyQASCQAYSQBZ2QuVlkAAAcAAAMkAWEkAWdkxjF7AAAHAAADJAFhJAFnZCZQMwAACAAGAAAWOQAA eDkAAP7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAQECJggAADAIAAAy CAAAOggAADwIAADsAAAAAAAAAAAAAAAA1gAAAAAAAAAAAAAAAOwAAAAAAAAAAAAAAADGAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAFiQBGYRvBxsm YCMkAi+EtABHJABIJABJZgEAAAAWAAAOhBP/FiQBGYRvBxsmYCMkAi+EtABHJABIJABJZgEAAABV RI//XYQT/xMAAAMkARYkARmEbwcbJmAjJAIvhLQARyQASCQASWYBAAAAYSQBAAQ8CAAAPggAAEYI AABICAAAUAgAAFIIAABYAAAAAAAAAAAAAAAARQAAAAAAAAAAAAAAAEUAAAAAAAAAAAAAAAAvAAAA AAAAAAAAAAAARQAAAAAAAAAAAAAAAAAAAAAAFgAAEYQYARYkARmEbwcbJmAjJAIvhLQARyQASCQA SWYBAAAAV0RkAGCEGAETAAADJAEWJAEZhG8HGyZgIyQCL4S0AEckAEgkAElmAQAAAGEkAQCmAABr ZHN/BAAWJAEXJAFJZgEAAAAClmwAAzQBBdYYAgEAAAIBAAACAQAAAgEAAAIBAAACAQAAB5RlAgjW XAAElP9sBUAYOx2II4AG2AUCAQAAAgEAAAIBAAACAQAAgAbUEgIBAAACAQAAAgEAAAIBAACABvsE AgEAAAIBAAACAQAAAgEAAIAGTQYCAQAAAgEAAAIBAAACAQAACnQAAOABDTZgD5RvBxCUtAAT1jAA AAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAU9gEAABrWEAAA AP8AAAD/AAAA/wAAAP8b1hAAAAD/AAAA/wAAAP8AAAD/HNYQAAAA/wAAAP8AAAD/AAAA/x3WEAAA AP8AAAD/AAAA/wAAAP8elLQANNYGAAEFAwAANNYGAAEKA2wAYfYDAABmNAEABUQIAABGCAAASAgA AE4IAABSCAAAWAgAAFwIAABeCAAAZggAAGgIAABsCAAAbggAAHQIAAB2CAAAfggAAIAIAACKCAAA jAgAAJYIAACYCAAApAgAAKYIAACuCAAAsAgAALIIAADACAAAwggAANAIAADSCAAA4AgAAOIIAADw CAAA8ggAAPQIAAACCQAABAkAABIJAAAUCQAAHAkAAB4JAAAmCQAANAkAAD4JAABUCQAAVgkAAFgJ AADy4tHi0eLJuKi4qNHi0eLR4tHil+LR4sniyeLJ4sniydHiyeLJ0eKIeYh54skAAAAAAAAAAAAA AAAAHRZoew6dAENKHABPSgQAUEoEAFFKAwBhShwAbygBHRZoQUHvAENKHABPSgQAUEoEAFFKAwBh ShwAbygBIRZooX3dAENKHABLSAAAT0oEAFBKBABRSgQAYUocAG8oAR4WaEFB7wBAiOz/Q0ocAEtI AABPSgQAUEoEAFFKBAAAIRZoQUHvAECI7P9DShwAS0gAAE9KBABQSgQAUUoEAG8oAQ4WaEFB7wBD ShQAS0gAAAAhFmhBQe8AQ0ocAEtIAABPSgQAUEoEAFFKBABhShwAbygBHhZoQUHvAENKHABLSAAA T0oEAFBKBABRSgQAYUocAAAaFmhBQe8AQ0ocAEtIAABPSgQAUEoEAFFKBAAtUggAAFoIAABcCAAA XggAAOwAAAAAAAAAAAAAAADsAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAa2Rb gAQAFiQBFyQBSWYBAAAAApZsAAM0AQXWGAIBAAACAQAAAgEAAAIBAAACAQAAAgEAAAeUWwII1ogA BpT/bAURDJsRQBg7HYgjgAbYBQIBAAACAQAAAgEAAAIBAACABqUGAgEAAAIBAAACAQAAAgEAAIAG igUCAQAAAgEAAAIBAAACAQAAgAalBgIBAAACAQAAAgEAAAIBAACABvsEAgEAAAIBAAACAQAAAgEA AIAGTQYCAQAAAgEAAAIBAAACAQAACnQAAOABDTZgD5RvBxCUtAAT1jAAAAD/AgEAAAAAAP8CAQAA AAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAU9gEAABrWGAAAAP8AAAD/AAAA/wAAAP8A AAD/AAAA/xvWGAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xzWGAAAAP8AAAD/AAAA/wAAAP8AAAD/ AAAA/x3WGAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/x6UtAA01gYAAQUDAAA01gYAAQoDbABh9gMA AGY0ARMAAAMkARYkARmEbwcbJmAjJAIvhLQARyQASCQASWYBAAAAYSQBAANeCAAAaAgAAG4IAAB2 CAAAgAgAAIwIAACYCAAApggAALAIAADsAAAAAAAAAAAAAAAA7AAAAAAAAAAAAAAAAOwAAAAAAAAA AAAAAADsAAAAAAAAAAAAAAAA7AAAAAAAAAAAAAAAAOwAAAAAAAAAAAAAAADsAAAAAAAAAAAAAAAA 7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAEwAAAyQBFiQBGYRvBxsmYCMkAi+EtABHJABIJABJZgEAAABhJAEACLAIAACyCAAAIgAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwA 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 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAMk ARYkARmEbwcbJmAjJAIvhLQARyQASCQASWYBAAAAYSQBAAfwCAAA8ggAACIAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcAABrZCOGBAAW JAEXJAFJZgEAAAAClmwABdYYAgEAAAIBAAACAQAAAgEAAAIBAAACAQAAB5RXAgjWngAHlP9sBTEI EQybEUAYOx2II4AG2AUCAQAAAgEAAAIBAAACAQAAAAbFAgIBAAACAQAAAgEAAAIBAACABuADAgEA AAIBAAACAQAAAgEAAIAGigUCAQAAAgEAAAIBAAACAQAAgAalBgIBAAACAQAAAgEAAAIBAAAABvsE AgEAAAIBAAACAQAAAgEAAIAGTQYCAQAAAgEAAAIBAAACAQAACnQAAOABDTZgD5RvBxCUtAAT1jAA AAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAU9gEAABrWHAAA AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8b1hwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/ HNYcAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/x3WHAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA /wAAAP8elLQANNYGAAEFAwAANNYGAAEKA2wAYfYDAAAAAfIIAAD2CAAA+AgAAPoIAAD8CAAA/ggA AAAJAAACCQAA7AAAAAAAAAAAAAAAAOwAAAAAAAAAAAAAAADsAAAAAAAAAAAAAAAA7AAAAAAAAAAA AAAAAOwAAAAAAAAAAAAAAADsAAAAAAAAAAAAAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAADJAEW JAEZhG8HGyZgIyQCL4S0AEckAEgkAElmAQAAAGEkAQAHAgkAAAQJAAAiAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3AAAa2RThwQAFiQB FyQBSWYBAAAAApZsAAXWGAIBAAACAQAAAgEAAAIBAAACAQAAAgEAAAeUVwII1p4AB5T/bAUxCBEM mxFAGDsdiCOABtgFAgEAAAIBAAACAQAAAgEAAAAGxQICAQAAAgEAAAIBAAACAQAAgAbgAwIBAAAC AQAAAgEAAAIBAACABooFAgEAAAIBAAACAQAAAgEAAIAGpQYCAQAAAgEAAAIBAAACAQAAAAb7BAIB AAACAQAAAgEAAAIBAACABk0GAgEAAAIBAAACAQAAAgEAAAp0AADgAQ02YA+UbwcQlLQAE9YwAAAA /wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAFPYBAAAa1hwAAAD/ AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/G9YcAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xzW HAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8d1hwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A AAD/HpS0ADTWBgABBQMAADTWBgABCgNsAGH2AwAAAAEECQAABgkAAAgJAAAKCQAADAkAAA4JAAAQ CQAAEgkAAOwAAAAAAAAAAAAAAADsAAAAAAAAAAAAAAAA7AAAAAAAAAAAAAAAAOwAAAAAAAAAAAAA AADsAAAAAAAAAAAAAAAA7AAAAAAAAAAAAAAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAyQBFiQB GYRvBxsmYCMkAi+EtABHJABIJABJZgEAAABhJAEABxIJAAAUCQAAIgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwAAGtkg4gEABYkARck AUlmAQAAAAKWbAAF1hgCAQAAAgEAAAIBAAACAQAAAgEAAAIBAAAHlFcCCNaeAAeU/2wFMQgRDJsR QBg7HYgjgAbYBQIBAAACAQAAAgEAAAIBAAAABsUCAgEAAAIBAAACAQAAAgEAAIAG4AMCAQAAAgEA AAIBAAACAQAAgAaKBQIBAAACAQAAAgEAAAIBAACABqUGAgEAAAIBAAACAQAAAgEAAAAG+wQCAQAA AgEAAAIBAAACAQAAgAZNBgIBAAACAQAAAgEAAAIBAAAKdAAA4AENNmAPlG8HEJS0ABPWMAAAAP8C AQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAABT2AQAAGtYcAAAA/wAA AP8AAAD/AAAA/wAAAP8AAAD/AAAA/xvWHAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8c1hwA AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/HdYcAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA /x6UtAA01gYAAQUDAAA01gYAAQoDbABh9gMAAAABFAkAAB4JAABWCQAAWAkAAHQJAACcCQAAxAkA AOwAAAAAAAAAAAAAAADOAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAABAAAAA AAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAWJAEZhG8HGyZg IyQCL4S0AEckAEgkAElmAQAAAAB9AABrZLOJBAAWJAEXJAFJZgEAAAAClmwABdYYAgEAAAIBAAAC AQAAAgEAAAIBAAACAQAAB5RoAgjWMAAClP9sBYgjgAbYBQIBAAACAQAAAgEAAAIBAACABhweAgEA AAIBAAACAQAAAgEAAAp0AADgAQ02YA+UbwcQlLQAE9YwAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAA AAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAFPYBAAAa1ggAAAD/AAAA/xvWCAAAAP8AAAD/HNYIAAAA /wAAAP8d1ggAAAD/AAAA/x6UtAA01gYAAQUDAAA01gYAAQoDbABh9gMAAAAdAAARhDACEmQ0/gAA FiQBGYRvBxsmYCMkAi+EtAAxJAFHJABIJABJZgEAAABXRMgAYIQwAmdkew6dABMAAAMkARYkARmE bwcbJmAjJAIvhLQARyQASCQASWYBAAAAYSQBAAZYCQAAXAkAAGQJAABqCQAAcgkAAHQJAAB4CQAA ggkAAIoJAACaCQAAnAkAAKAJAACqCQAArAkAALIJAADCCQAAxAkAAMgJAADSCQAAAAoAAAA4AAAK OAAADDgAAEo4AADs2Me2pOzYkoPY7NhxkoPY7NhhX2FNPgAAAAAAHRZoQUHvAENKHABPSgQAUEoE AFFKAwBhShwAbygBIxVolFrzABZoQUHvADUIgUNKHABPSgQAUEoEAFFKAwBhShwAA1UIAR8VaNgC cgAWaKsO9QBDShwAT0oEAFBKBABcCIFhShwAIhVoAGKtABZoqw71AENKHABPSgMAUUoDAFwIgWFK HABvKAEAHBZoqw71AENKHABPSgQAUEoEAFwIgWFKHABvKAEAIhVoAGKtABZoqw71AENKHABPSgQA UEoEAFwIgWFKHABvKAEAIxVolFrzABZoQUHvADUIgUNKHABLSAAAT0oEAFBKBABRSgQAIBZouwSL ADUIgUNKHABLSAAAT0oEAFBKBABRSgQAbygBACAWaP4+KQA1CIFDShwAS0gAAE9KBABQSgQAUUoE AG8oAQAmFWiUWvMAFmhBQe8ANQiBQ0ocAEtIAABPSgQAUEoEAFFKBABvKAEAJhVolFrzABZolFrz ADUIgUNKHABLSAAAT0oEAFBKBABRSgQAbygBFzYALgBjAG8AbQAHACAAIAAgACAAIAAgACAAIAAg ACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAADQBVUyAATU8gAH57 IADgeg0AjE7LJQBOAE50XiAAIAAIZyAAIADlZQcABwAHWehsGv8xAC4A94ukix93EJB5mGtYmVFk a2iIG/8NACAAIAAgACAAIAAgADIALgBka2iIDVlwUwlnSGUCMAcABwAcIEFTjE6UTh0g0XmAYnmY 7nYTTnmYRI3RkTN1pWIOTqF7BnRTTzZSOWVpl6hmAU8aTuV3xounTkNnoXsGdIxUE04pUtCPKHUT TpiYFHioi+1zpWINVGiIDQANAA0AAwANAA0ABAANAA0AAwANAA0ABAANAA0ADQANAA0ADQATAFAA QQBHAEUAIAAgABUADQANAA0AEwBQAEEARwBFACAAIAAUAC0AIAA1ACAALQAVAA0ADQANAA0ADQAN AA0ADQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxAkAAAw4AABMOAAAXDgAAHQ4AADnAAAAAAAAAAAA AAAA1AAAAAAAAAAAAAAAAL4AAAAAAAAAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 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 FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRSUtABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRTVPFLQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAJS0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRSDOOetLQAUUUUAFFFFABRRRQA0UooHSloAKKKKACiiigAooooAKKKKACiiigAooooAKKKQmgB aKac8UtAC0lJnnvxQDn86AFzRmvOIbWWWx0hzqmrebc29zLNjUZhnYvy8BuMEjpWh4f85L7w7Mb6 +lN9aSyTLNdSSIzBUxhWOB1JoA7iikJwM03PJA7UAOozXHeJtVmtNemgbWZ9PjTTRLEsSoQ8u5xz uVuwHp0rPv8AW9WvfB9xHLp0cgFnE0twt6hflQQ7IBkZ64+tAHoORRkZ61zGq6hdNpOn213Y/ZW1 K8FnNGJtxjRg/KsvfCj255rDa6a4+ySTPr6o0qWfnJqKIrOH2FiqnPUHJ28/rQB6HketGa5zwc8x tNQiluZ7nyNRnhWS4lLvtU4AyfauZsNcgtZtRjHiW200SX07m3Nn5hOXODu75A9+1AHpOaK5nQ9U luo7q5h1sa1HBGSYIrMRNuPIwSeTwRj3rCfxVc6baakpivYLmfUv3JlKy4G+MPEoDNghCTgDHPGT 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 gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigCqloy6pNeF/lkgSIJjptZzn/wAe/SqB0e6+y28C3vEd158oMYxIPO836g546468dMbNFAFW 7trid7cwXbW4jlDyBUDeao6oc9AfUVZpaKAGSRrLE0bqGVwQynoQe1U4LArdrNLjZApjtolOVjXo T7sQMew4HU5v0UAVNOt5LWz8qUqXDu2V6cuSP0NV4tJI1a4v5rlpA7AwxAYWE7Apb3Y469gcdznT pKAM7SbK6tJb5ruRJWnuA6OowWURooJHY/Kc44+nQV77QVvLgmWSSZZW/etI/wB1AchFUADufmOS BnnJyNqmlhmgDMOlXbXn2o6rKrhSgCQoAFJzjkHngc1Jqtnd3lusEEkYRmUSiReWXcCSCOhwD259 utaGc0UAYcmkXtxdXbPJHDH9oFxbEDeS4RQpYcYAKnjqfUY50PsQvI421KCJ5E58sMXjz64IAz7k cVdooAw20vU3j1C3S5toYbp5CrGJncBhjP3hzWrLDK8CxJMYjwGdFGcd8Zzj9anooAxF0R49TlES wpp80CJKrDe8pBfIJPY7uSck+3WrWmWeoWS+TcXyXUK5Ee6EiQL2DPuO7A74ya0aSgBaKSloAKKK KACikooAWiiigAooooAKKKSgBaSlooAKKKKAEPNAGKWigBu3v3pRS0UAIRmkAp1FADWBIwKTbg5H 60+koAayBiMk/hQUPHzcCnGigBFG0Ypce5paKAEAwMUY/OlooAKTHOaWigBMUhBLA5xTqSgBoTBJ yeTmnGikJHc0ANWMKpAJOSTyc9adgYx2o4o60xgFC9B1pc0d6DSEFLSd6WgAooooAKKKKACiiigA ooooAKKKKACikyBRQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABSGlpKACmkfzp9JigAXpSGloxzQAClpOaWgAooooASg9KOaKAE7UtLRQAlLRSUALR RRQAlFFFABRS0lABRznpRR3oAWkpaKACk70UtABRRRQAUUUUAFFFFADfrS0EZoxQAw9M0u4gDAzS kZ6UHgHNADA5Jzxj0pykkZIxUeWzg84qRPmU555oAR2bHy05Tkc8U08HnH5U8AcUAJnB6UEkN7Uh HWnd6AELEdFJqMM20HbnNPYZ6NimIPkHzY+lAEg6UxgeTnvUnao5CETJoABkDjlvSkDSE4Kj86Xe AoYg8+gpBL32n8qBki5/iHNLSK27sR9RS0CClpKWgAooooAKKKKACiiigAooooAKKKKAEwCQSOnS iiigBaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopKWgAoopKAF ooooAKKKKACikpCSO1AC0tMBOelOyKAFopM0tABRSCloAKKKKACiiigAopKWgAoopKAFoopM0ALR RSZ5xQAtFFN3DPUUAOopKM0ALRRSUALRSUUALRSZpaACikyKM0ALRSZooATaN2cc0uKKKADFLSUt ACUtFFADdq+go2rn7op1IaACkxu+8B1ozjrQDQAbcUUpxTdy+ooAdRQD6UUAHelpO9LQAUUUUAFF FFABRRRQAUUUUAJmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKSgAo JxS0lABSA9frS4oxQAjHC5zSZI7nmnZxTdo64oAU4xyaah5PzZp5poQDkdxQA4HIoJxSKMDk5o96 ABTkfjSc56frTgKDz0oAQZz+FNc/MBmnikbnA96AImznOSOR/OntnrnFLtGOR0oZA3OOe1ACI27n NPNRABTnnB71L24oAjU5JAPIPrT06c01V254PJpyfdoAdSUtJQA3vjcc04cUYpuWzyMdOnNACnqK UdaQnNA5NACntTTw4px7UEZIoAWkooOe1ACMcDriomVg2Ripj0qMoSc4OKAHr065qJh8xwTgnvUo GBxTWQ5GPWgByDHfNISc/pTgMDFN2/MWx7YoAUE5oYAkZoGc80uOaAGr1/ChzjHpmnAc5pDzxigB oJJI445pzDIz6c0mCPc+tKckccUAR5w3B69805+IjnnimlPmP86VxmMjpxQMbkBtvf8A3akTHzY9 arSzwwEtNOkXu0gH86rR69ppLBLtZSGwfKBk/wDQQaClCT2RoBgTnNPBGT1rHHiPTCQPtDjdJsGY JMFvTO3rzVn+3NMWTy5L2KJjyFlOw/kcUrobpTW8WXicUoNRQzxXEe+GVJFPIZTkVKOD2pkNWDPO KaGJYDP50uCWzn6UbeRxmgQ+kPWimuMjGcUAJITg49KjJJ29RjripSPlPfim7dwH8JoGLuxHknPv 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 mngGgB9FIKT3FAC0EgUinimSAHufzoAkzRmmIwJ9felZuenSgBdwpSah4VhjpmnTcpg9KAH7h606 q6jYAq8jOanzgdMmgApah+6M7cAmpR0oAWim47D1pR3oAKWmHk0q/jQA6kpDQO1ADqQkD8aRu3OK iZz8poAfuHmBT1xmn5qMjJHFOxz0NAD6KQdKWgAooooAKKTNHegABz0paaD7+1OoAKKKKACiiigA ooooAKKKKAEopaKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBDwOKTGRzTqKAI1XBPPen9BS0UAR7fXoaco wOaWloAYVB46etKoxx3p1FADeuQKMCnUUAIeRzSDkcDinUUAJRilooATGKQA4/GnUUANApHUsMA4 96fRQBGqnHv3zSlSeop9FAERU+9LJg/KAcmn0tAEQGByMmnk7R0NLRQA3bgHvmnDpS0UANI9aUdz 60tFADMnIODSgc55+lOooATknGOKO9LRQA08naRx603aeAeeetSUUAMC4OKfSd6WgBKWiigBKKWi gBKWiigBKWiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gApKWmSp5kTpuZNwI3KcEe4oAdmjNZ/9kkNuF9eZ95zj8qRdIZTn+0b04PQyg5/SgDR7VSm1a2h1 aDTDuaedWYbRwoAzyffnH0q427adoBbHArjDHrVv4j0f7VY2hneSZ2kjvHO/KAMSDGMbRgAc9AM9 6AO060tIRlcA49xVD+zrsEf8Tm9x/uw//G6AL9LVAWF0P+YveH6rD/8AG6uoCqAM24gck96AHUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAnelpO9LQAUUUUAFFFFABRRRQAUU UlAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABSEA0tFACAYpaKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaSg A70tJ3paACiiigAooooAKKKKAE60tFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFJnNAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFJS0UAJS0ho7UALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRSUtABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0UAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAhoHSlooAKKKKACiiigAooooAKKKK ACiiigAooooAQqpYMQMjofSloooAKKKKACiiigBKWkoVgwyDnnFAC0UUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRSUALRSc5paACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KSlooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKSloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAE/hqK1/ 1J/66P8A+hGiigCaiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSiigBaKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEHU0tFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQB//9kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAsXsBAEQAZAAAAAAAAAAIAAAAAAAAAAAAAAAAANAvwkF8A3wDAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAATwWAAAALIECvAIAAAAAQQAAAAKAABTAAvwJgAAAARB AQAAAAXBCAAAAAYBAgAAAD8BAAAGAP8BAAAIADEANQA3AAAAEwAi8QYAAAC/AQAAYAAAABDwBAAA AAAAAIBSAAfwBXsBAAUFzuzNDNxnzEmm2lj6/TN8mP8A4XoBAAEAAABEAAAAAACbCaBGHfDZegEA zuzNDNxnzEmm2lj6/TN8mP//2P/gABBKRklGAAEBAQBgAGAAAP/bAEMACgcHCAcGCggICAsKCgsO GBAODQ0OHRUWERgjHyUkIh8iISYrNy8mKTQpISIwQTE0OTs+Pj4lLkRJQzxINz0+O//bAEMBCgsL Dg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7O//AABEIA+kC2AMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/ xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKC CQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaH iImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp 6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAME BwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYn KCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeY mZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/ 2gAMAwEAAhEDEQA/APYV6CpB3qNelPXvQMdRRRQIKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACkpaKAGlFPVR+VNMMZ6xqf+A1JRSsBF9mgPWGP/AL5FJ9ktv+feL/vgVNRT AgNnan/l2i/74FH2K0/59Yf+/YqeigCD7Ha/8+0X/fApfslt/wA8I/8AvkVNRQBB9kt/+eSj6Cj7 Fb/3P1NT0UAQC0hHRT/30f8AGg2kJ7P+Ejf41PRQBB9ji9Zf+/z/AONH2SL+9N/3+f8AxqeigCD7 HH/fm/7/AL/40n2OP+/N/wB/n/xqxRQBW+xJ/wA9Z/8Av83+NKLRB/y1m/GVv8asUUAQ/Zh2llH/ AAM0n2du1zMPxH+FT0UAQfZ3/wCfqb/x3/Ck+zyf8/k35J/8TViigCv9nl/5/J/yT/4mj7PL/wA/ k35J/wDE1YooAr/Zpf8An9n/AO+Y/wD4mgW0v/P7Of8AgMf/AMTViigCDyJR0upPxVf8KPKnHS5z 9UFT0UAQeXcf891/79//AF6Nlz/z2T8Y/wD69T0UAQbLr/ntF/36P/xVIUvP+e8P/fk//FVYooAr bLz/AJ7wf9+T/wDF0oS77zQn/tif/iqsUUAVyt3/AM9IT/wAj+tM8m4PUx/+Pf41booAqLBcKSQy c+rNSmK5IIOzn0kYf0q1RQBVVLlP4EP1lb/Cn7rr/njD/wB/T/8AE1PRSsBXJuieYYf+/wAf/iaM T97eH/v4f/iasUUwK+65/wCfeL/v6f8A4mgPc/8APCP/AL+//WqxRQBBvuP+eC/9/P8A61HmT/8A PuP++xU9FAEPmTf8+/8A4+KPNm/592/76FTUUgIPNlH/AC7Ofoy/40vnSf8APrL+a/41NRTAg86T /n1l/NP/AIqjz5P+fSb80/8AiqnooAg8+T/n0m/NP/iqBPJ/z6y/mn/xVT0UAQ+c/wDz7S/+O/40 eee8Eo/Af41NRSAgM4A/1Uv/AHwaPtKDrHL/AN+m/wAKnopgQ/aE/uy/9+m/wo+0R/3Zf+/Tf4VN RQBB9pj/ALsv/fl/8KX7Qn92X/v03+FTUlAEP2mL0f8A79t/hR9ohY45z7oR/SpqRhwaQGV4nVR4 X1Q7R/x6Sf8AoJopfFH/ACKmqf8AXpJ/6CaKYGkOlOFNXpTl7/WgY6iiigQUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUmaWkoAWiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKRvun6UtIelAGV4o/5F TVf+vST/ANBNFHir/kVNV/69JP8A0E0UAaS9KcvU/Wmr0py9/rQMdRRRQITpS0UUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUh6UtIelAGV4q/5FTVf+ vST/ANBNFHir/kVNV/69JP8A0E0UCNJelOXv9aaOlOXp+NIodRRRTEFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIaWkoAyvFX/Iqar/16Sf+gmij xT/yKmq/9ekn/oJopgaK9KevT8aiU8VInI/GpGPooopiCiiigAooooAKKSloAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKSgDL8U/8irqv/XpJ/wCgmijxT/yKuq/9 ekn/AKCaKALo6VLH92mKOKkT7v40kMWloopiCiiigAooooATFLRRQAUUUUAFFFFABRRRQAUUlFAC 0UUUAFFFFABSUtFACUUtJQAtFJ+NFABQM96WigAooooATIziijjPvQaACgnFIOuKCSe3FAAGyAaW kGQMYpTyKADNB4Bphzx9ac33TigBc0A5oNIBzmgAzyfalppw2eO9OAxxQAGjNNZtrDJ68D60o+9Q AtLTSOT9KPwoAWjNFNx04/WgB1GeaKT8etAC5oJxSLSEdMUAPpCcCgUEZGKAEVsilpADnr+lDAEi gBc9PelqPGAeTgDNP7UAFLSE0gOQfagBc0DmmjqePpTgeOaACikP1pRQAdKWmscUvegBaTNBJz0p vU5FAD6KKKACikPSloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkNLRQBleKM/8Itqn/Xp J/6CaKPFH/Irap/16Sf+gmimBoDpT0+7+Jpi9Ken3fxNSMdRRRTEFFFFABRRRQAUUhpaACiiigAo oooAKKKKACiikoAWikyDS0AFFJkZ+lFAC0UmaAc0ALRSZGcdxRnnFABS0UlAC0UUmaAFoopKADHO aKKWgBKWiigBKWiigBMDOaCMjFLRQAlLRRQAlLRRQAm0ZzRjnNLRQAmM0tFJQAEZoxxS0UAFJjNL RQAlB5paKAEpaKKACkIzS0UAIVBGKKWigBAoFFLRQAmKWiigBO9AGPpS0UAIRmkANOooAQ5pMEH2 p1FABSEZHWlooATAxijFLRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIe1LSHtQBl+J/+ RW1T/r0k/wDQTRS+J/8AkVtU/wCvST/0E0UIC+vSnp92mL0p6fdoGOooooEFFFFABRRRQAUUUUAF JS0hoAQmlFJg9aUdKACigjNFAAc9qQ9OmfpQwJHFLQA0devTinHpSAUFQ2M5oAaCd554PSlXPII+ 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 tFAEYBB555/KngYFLRQAhGQRQBilooAYy7utCqBwR0p9JQAEZHNIBxS0UABoxS0UAIOlLRRQAlGK WigBAKDS0UAIKD2+tLRQAmKKWigBMUdKWigBCB1xQBS0UAMZc8kZpQv0p1FADSM0bRnNOooAawGK BzTqKAE7UhXIp1FACADFRjjAwfQ8VLRQAxFwKUgcnoemcU6igCNY41dmVVDucsQMFuMc+vFOPp19 adRQAwCn0UUAJSOu5cU6igBB06YpaKKACiiigAooooAKKKKACiiigAooooAKKKKACiikoABS0gpa AKWsf8gS+/69pP8A0E0Uaz/yBL//AK9pP/QTRTQFwdKWkHSlpAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFACUtFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUh9qAFopOaM0ALSUVStb8z6ld2RgaM2yo24sDvDbuRj/d+v0oAvUUUnNAC0UUUAFFFFABRRRQAU UUUAFFFFABSGlpDQAL0/GlpF6UtAFLWf+QJf/wDXtJ/6CaKNZ/5Ad/8A9e0n/oJopoC4OlLSDpS0 gCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooASlpDRQAtFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFRzQrPGY3LBT12sVP5jmpKKAKJ0m2P/LS7H0vJR/7NSx6VbxS LIst2WU5Aa8mYfiC2DV2igArGsJoW8UaoiyKX8qDj1xvz9cZGfTitijFAAVBUjnn0OKp/wBlwf8A PW6/8C5f/iqu0UAUjpkXGLi6GD/z8uf5mrlLRQAUUUUAFFFFABRRRQAUUUUAFFFFACDpS0g6UtAF LWf+QHf/APXtJ/6CaKNZ/wCQHf8A/XtJ/wCgmimgLg6UtIOlLSAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEX7opaRegpaAKWtf8gO//wCv aT/0E0Ua1/yAr/8A69pP/QTRTQFwdKWkHSlpAFFFFABRRRQAUUUUAITiloooAKKKKACiiigAoooo AKKKKACikHSloAKKKKACkpaKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkB zS0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0UAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUAIpyoPtTqan3F+lOoApa1/wAgO/8A +vaT/wBBNFGs/wDIDv8A/r2k/wDQTRTAuDpS0lLSAKKKSgBaKKKACiiigAooooAKKKKACiiigAoo ooAKKKKAEHSloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACkKgkZHTpS0UAFFFFABSUtFACUtFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUlACL90fSnUi/dFLQBS1n/kCX /wD17Sf+gmijWf8AkCX/AP17Sf8AoJopgXO1AORmkH3fwpaQC0UUUAFFFFABRRRQAUUUUAFIeaWi gBKWiigAooooAKKKKACk70tJQAc59qWiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkPSlooARfuilpF+6KWgClr P/IEv/8Ar2k/9BNFT3f/AB5z/wDXNv5UUgP/2U6fAQBEAGQAAAAAAAAACAAAAAAAAAAAAAAAAADQ L8JBfAN8AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAE8FgAAACyBArwCAAAAAIE AAAACgAAUwAL8CYAAAAEQQIAAAAFwQgAAAAGAQIAAAAIAdhQAQD/AQAACAAxADUANwAAABMAIvEG AAAAvwEAAGAAAAAQ8AQAAAABAACAUgAH8KKeAQAFBf8+Kh5qbQO2Tc6SY3rjoan/AH6eAQABAAAA 9XsBAAAAmwmgRh3wdp4BAP8+Kh5qbQO2Tc6SY3rjoan//9j/4AAQSkZJRgABAQEAYABgAAD/2wBD AAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5E SUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCAPpAtgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAA AAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKB kaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn aGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT 1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI CQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6 goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk 5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2UDgUtIOlLQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFACZ56UtFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmm+UuMc/nT6KAIlt4 1JOM59TmmvaQurAoOe4qeigCBbO3UY8pD9VBpfstv/zwj/74FTUUAQGztic+RH/3wKX7Lb/88I/+ +BU1FAEP2S3/AOeEX/fAo+yW3/PvF/3wKmooAh+yW3/PvF/3wKPsdt/z7xf98CpqKAIfsdt/z7xf 98Cj7Jbf8+8X/fAqaigCH7Jbf8+8X/fAo+yW3/PvF/3wKmooAh+x23/PvF/3wKPslt/z7xf98Cpq KAIfslv/AM8Iv++BR9ktv+feL/vgVNRQBD9ktv8An3i/74FH2S2/594v++BU1FAEP2S2/wCfeL/v gUfY7b/n3i/74FTUUAQfY7X/AJ9of+/Yo+xWn/PrD/37FT0UAQfYbT/n1h/79ik+wWf/AD6w/wDf sVYooAr/ANn2f/PrD/3wKT+z7P8A59Yv++BVmigDF1+2gt9BvHiiVT5Z5AoqXxN/yL15/wBc6KaA 1aKQdKWkAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFJnFLSUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFAGV4l/5F68/65mijxL/AMi9e/8AXM0U0BqDpS0g6UtIAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMrxL/AMi9 e/8AXI0UviT/AJF+9/65mimgNMdKWkHSlpAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRSUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA 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 MtrTxJdzaZCtvZJbiGVYxhJJtxJP1UcE/wC1jqDjduoWubWSFJ5IC4x5kWNy/TIIz+FZ+maK+nyK 39q3txHGpRYZfLCD3+VFJP19aANOV2jjLJG0hH8K4yfzIH61T+33WP8AkD3n/fcP/wAcq9Rj3oAp Jf3LOqtpN5GCQCzNCQPriQmr1JiloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKQ0tIelAAKWkpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooArX//AB6t/ntR Rf8A/Hq30/pRRYCwOlLSDpS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtIaAAdKWkFLQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFa+/49W+h/lRRff8erfQ/wAjRQBYHSlpB0FLQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFIaWkNAAKWmjrTqACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAq3/wDx6N9D/KijUP8Aj0b6H+VFK40WR0paQdKWmIKKKKACiiigAooooASloooAKKKK ACiiigAooooAKKKKACiiigAooooAKSlooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKQHNLSUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUlLRQA0dadSY5paACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAq3/8Ax6N9 D/Kilv8A/j1f6H+VFA0WF6UtIOlLQIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBKWiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKAKt//wAer/Q/yopb/wD49X+h/lRQMsD7oNAORTI/ 9Sv0p9AhaKKKACiiigBKWiigAooooAKKKKACiiigBOaBnvS0UAJzS0UUAFFFFACc5paKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlooATnNLRRQAUUUUAFFFFABRRRQAUUUUA FJS0UAFFFFABRRRQAUUUUAFFFIelAFbUOLRz7H+VFJP9z8DRUsZ//9m4YwEARABkAAAAAAAAAAgA AAAAAAAAAAAAAAAA0C/CQXwDfAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8ABPBY AAAAsgQK8AgAAAADBAAAAAoAAFMAC/AmAAAABEEDAAAABcEIAAAABgECAAAACAG3bQEA/wEAAAgA MQA1ADcAAAATACLxBgAAAL8BAABgAAAAEPAEAAAAAgAAgFIAB/AMYwEABQXUXu5/hRVcSKdDZM+4 AL/7/wDoYgEAAQAAAEMbAwAAAJsJoEYd8OBiAQDUXu5/hRVcSKdDZM+4AL/7///Y/+AAEEpGSUYA AQEBAGAAYAAA/9sAQwAKBwcIBwYKCAgICwoKCw4YEA4NDQ4dFRYRGCMfJSQiHyIhJis3LyYpNCkh IjBBMTQ5Oz4+PiUuRElDPEg3PT47/9sAQwEKCwsODQ4cEBAcOygiKDs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7/8AAEQgD6QLYAwEiAAIRAQMRAf/EAB8A AAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUS ITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4 ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEA AAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2Rl ZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJ ytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9kKgnkUu0elLRQAm0Um0 elOpKADA9KMCiigAxRRS0AFFFFABRRRQAUlLRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtFACUUtF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAlFFFABS0mKWgAoopKAFoopKAFooooAKKKKACiiigBKKKK ADNLSUtABRRSUALRRSUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFJRQAtFFFABRRRQAUUUUAFFFFABRRSUALRSU UALRSUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUlABRRRQAtFJRQAtFFFA BRRRQAUUUUAFFFFACUUUYoAKWk70tABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UlLRQAh6UUN900UAFFJSigBaKKKACiiigAooooAKKKKACkoooAKWkpaACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAa33T9KKJP9W30ooATinCm+9OFAxaKKKBBRRRQAUUlFAC0 lGaKACiiigApaQUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFICDS1HHCkTOUXG9tzc9TjH9KAJKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigBsn+rb6Gikk/wBU/wDumigApw6U0dacOlAC0UUUAFFFFABSUZpM0AFFFFAwpaSj NAC0tNp1AgqC7vLaxt3uLudIIkGWeRsAVPWP4siSXwrqe5VYi1lK5GcHYeaANOS4iht2uJHCRKu9 nPAAxnNNtbyC9iMkD7gDtIKlSp9CDyDyOD61ma4wHhxSD8pe33Ef3TKmf0zT7JhHr+rcgRhYXPs2 0g/oq0Aa9JTY5ElQSRurowyGU5Bpx6UAVRfJ9vmtGG0xRJKWPQhiwH/oJptjqAvJbuPZsNrOYW/2 vlVgR+DCub13+0Fm1ZZHilV9OClI4wvyHz8cs/bqcA544qLTpJBrhjnv8TtqgLwQvtRl+yhgxH3i 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 AQAAFPYBAAAX9gAAAB6UtAAs1gMABgE11gUAAQPYBTXWBQECA6UGNdYFAgMDigU11gUDBAOlBjXW BQQFA/sENdYFBQYDTQYv1gsABg8AAAD/AgEAAGY0ASIBFiQBFyQBSWYBAAAAAZYAACF2AAdoATXW BQABA9gFNdYFAQIDxQI11gUCAwPgAzXWBQMEA4oFNdYFBAUDpQY11gUFBgP7BDXWBQYHA00GI3YA AdgFI3YBAsUCI3YCA+ADI3YDBIoFI3YEBaUGI3YFBvsEI3YGB00GOlYLAAKWbAAHlFUCCnQAAOAB DTZgD5RvBxCUtAAT1jAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA /wIBAAAU9gEAABf2AAAAHpS0ACzWAwAHATXWBQABA9gFNdYFAQIDxQI11gUCAwPgAzXWBQMEA4oF NdYFBAUDpQY11gUFBgP7BDXWBQYHA00GL9YLAAcPAAAA/wIBAAAuARYkARckAUlmAQAAAAGWAAAh dgAHaAE11gUAAQPYBTXWBQECA8UCNdYFAgMD4AM11gUDBAOKBTXWBQQFA6UGNdYFBQYD+wQ11gUG BwNNBiN2AAHYBSN2AQLFAiN2AgPgAyN2AwSKBSN2BAWlBiN2BQb7BCN2BgdNBjpWCwAClmwAB5Rr Agp0AADgAQ02YA+UbwcQlLQAE9YwAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/ AgEAAAAAAP8CAQAAFPYBAAAX9gAAAB6UtAAs1gMAAQEs1gMCBQEs1gMGBwE11gUAAQPYBTXWBQEC A8UCNdYFAgMD4AM11gUDBAOKBTXWBQQFA6UGNdYFBQYD+wQ11gUGBwNNBi/WCwAHDwAAAP8CAQAA LgEWJAEXJAFJZgEAAAABlgAAIXYAB2gBNdYFAAED2AU11gUBAgPFAjXWBQIDA+ADNdYFAwQDigU1 1gUEBQOlBjXWBQUGA/sENdYFBgcDTQYjdgAB2AUjdgECxQIjdgID4AMjdgMEigUjdgQFpQYjdgUG +wQjdgYHTQY6VgsAApZsAAeUVwIKdAAA4AENNmAPlG8HEJS0ABPWMAAAAP8CAQAAAAAA/wIBAAAA AAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAABT2AQAAF/YAAAAelLQALNYDAAEBLNYDAgUB LNYDBgcBNdYFAAED2AU11gUBAgPFAjXWBQIDA+ADNdYFAwQDigU11gUEBQOlBjXWBQUGA/sENdYF BgcDTQYv1gsABw8AAAD/AgEAAC4BFiQBFyQBSWYBAAAAAZYAACF2AAdoATXWBQABA9gFNdYFAQID xQI11gUCAwPgAzXWBQMEA4oFNdYFBAUDpQY11gUFBgP7BDXWBQYHA00GI3YAAdgFI3YBAsUCI3YC A+ADI3YDBIoFI3YEBaUGI3YFBvsEI3YGB00GOlYLAAKWbAAHlFcCCnQAAOABDTZgD5RvBxCUtAAT 1jAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAU9gEAABf2 AAAAHpS0ACzWAwABASzWAwIFASzWAwYHATXWBQABA9gFNdYFAQIDxQI11gUCAwPgAzXWBQMEA4oF NdYFBAUDpQY11gUFBgP7BDXWBQYHA00GL9YLAAcPAAAA/wIBAAAuARYkARckAUlmAQAAAAGWAAAh dgAHaAE11gUAAQPYBTXWBQECA8UCNdYFAgMD4AM11gUDBAOKBTXWBQQFA6UGNdYFBQYD+wQ11gUG BwNNBiN2AAHYBSN2AQLFAiN2AgPgAyN2AwSKBSN2BAWlBiN2BQb7BCN2BgdNBjpWCwAClmwAB5RX Agp0AADgAQ02YA+UbwcQlLQAE9YwAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/ AgEAAAAAAP8CAQAAFPYBAAAX9gAAAB6UtAAs1gMAAQEs1gMCBQEs1gMGBwE11gUAAQPYBTXWBQEC A8UCNdYFAgMD4AM11gUDBAOKBTXWBQQFA6UGNdYFBQYD+wQ11gUGBwNNBi/WCwAHDwAAAP8CAQAA LgEWJAEXJAFJZgEAAAABlgAAIXYAB2gBNdYFAAED2AU11gUBAgPFAjXWBQIDA+ADNdYFAwQDigU1 1gUEBQOlBjXWBQUGA/sENdYFBgcDTQYjdgAB2AUjdgECxQIjdgID4AMjdgMEigUjdgQFpQYjdgUG +wQjdgYHTQY6VgsAApZsAAeUVwIKdAAA4AENNmAPlG8HEJS0ABPWMAAAAP8CAQAAAAAA/wIBAAAA AAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAABT2AQAAF/YAAAAelLQALNYDAAEBLNYDAgUB LNYDBgcBNdYFAAED2AU11gUBAgPFAjXWBQIDA+ADNdYFAwQDigU11gUEBQOlBjXWBQUGA/sENdYF BgcDTQYv1gsABw8AAAD/AgEAAC4BFiQBFyQBSWYBAAAAAZYAACF2AAdoATXWBQABA9gFNdYFAQID xQI11gUCAwPgAzXWBQMEA4oFNdYFBAUDpQY11gUFBgP7BDXWBQYHA00GI3YAAdgFI3YBAsUCI3YC A+ADI3YDBIoFI3YEBaUGI3YFBvsEI3YGB00GOlYLAAKWbAAHlFcCCnQAAOABDTZgD5RvBxCUtAAT 1jAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAU9gEAABf2 AAAAHpS0ACzWAwABASzWAwIFASzWAwYHATXWBQABA9gFNdYFAQIDxQI11gUCAwPgAzXWBQMEA4oF NdYFBAUDpQY11gUFBgP7BDXWBQYHA00GL9YLAAcPAAAA/wIBAAC0ABYkARckAUlmAQAAAAGWAAAh dgACaAE11gUAAQPYBTXWBQECAxweI3YAAdgFI3YBAhweOlYLAAKWbAAHlGgCCnQAAOABDTZgD5Rv BxCUtAAT1jAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAU 9gEAABf2AAAAHpS0ACzWAwACATXWBQABA9gFNdYFAQIDHB4v1gsAAg8AAAD/AgEAALQAFiQBFyQB SWYBAAAAAZYAACF2AAJoATXWBQABA/gXNdYFAQID/AsjdgAB+BcjdgEC/As6VgsAApZsAAeU2gYK dAAA4AENNmAPlG8HEJS0ABPWMAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIB AAAAAAD/AgEAABT2AQAAF/YAAAAelLQALNYDAAIBNdYFAAED+Bc11gUBAgP8Cy/WCwACDwAAAP8C AQAAngAWJAEXJAFJZgEAAAABlgAAIXYAAWgBNdYFAAED9CMjdgAB9CM6VgsAApZsAAeU4gQKdAAA 4AENNmAPlG8HEJS0ABPWMAAAAP8CAQAAAAAA/wIBAAAAAAD/AgEAAAAAAP8CAQAAAAAA/wIBAAAA AAD/AgEAABT2AQAAF/YAAAAelLQALNYDAAEBNdYFAAED9CMv1gsAAQ8AAAD/AgEAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA hgIXABIAAQCcAA8ABAAAAAMAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAQPH/AgBKAAwEAAAmUDMAAAACAGNrh2UAAAsAAAADJAMx JABhJAMAIABDShUAS0gCAF9IAQRhShgAbUgJBG5IBAhzSAkEdEgECAAAAAAAAAAAAAAAAAAAAAAA ACQAQUDy/6EAJAAMBQAAAAAAAAAABgDYnqSLtWs9hFdbU08AAAAAQgBpQPP/swBCAAwFAAAAAAAA AAAEAG5mGpBoiDxoAAAcABf2AwAANNYGAAEKA2wANNYGAAEFAwAAYfYDAAACAAsAAAAgAGsA9P/B ACAAAAUAAAAAAAAAAAMA4GUXUmiIAAACAAAAAAAAADwAIEABAPIAPAAMBAAAJlAzAAAAAgB1mBqB AAAWAA8AAyQADcYIAAI5EHIgAQJHJABhJAAIAENKEgBhShIAHAApQKIAAQEcAAwEAAAmUDMAAAAC AHWYAXgAAAAATgAfQAEAEgFOAAwEAAAmUDMAAAACAHWYCXcAACcAEQADJAENxggAAjkQciABAiZk BgEAAUckAFDGCAAAAP8GAQEAYSQBAAgAQ0oSAGFKEgBUAF5AAQAiAVQADAAAABcJwwAAAAYAbmYa kCgAUX/ZeikAAAAZABIAAyQAE6RkABSkZAAxJAFbJAFcJAFhJAAAFABDShgAS0gAAE9KAwBRSgMA XkoDACgAVUCiADEBKAAMAAAAOxJsAAAAAwCFjf6UpWMAAAkAPioBcGgAAP8AAEwAQ0ABAEIBTAAM AAAAwyPXAAAABgBja4dlh2UsZyl/248AABYAFAAPhCIOEYTe8VdEF/xehCIOYITe8Q8ANQiBQ0ok AFBKBgBhShQAAP4A/k9hAVIB/gAMAAAAMhD4AAAAawDYnqSLtWs9hFdbU08gAFAAYQByAGEAIABD AGgAYQByACAAQwBoAGEAcgAgAEMAaABhAHIAIABDAGgAYQByACAAQwBoAGEAcgAgAEMAaABhAHIA IABDAGgAYQByACAAQwBoAGEAcgAgAEMAaABhAHIAMQAgAEMAaABhAHIAIABDAGgAYQByACAAQwBo AGEAcgAgAEMAaABhAHIAIABDAGgAYQByACAAQwBoAGEAcgAgAEMAaABhAHIAIABDAGgAYQByACAA QwBoAGEAcgAgAEMAaABhAHIAAAACABUADABDShgAT0oHAFFKBwA4AFlAAQBiATgADAUAADIQ+AAA AAUAh2VjaNN+hGf+VgAAEwAWAC1EIAFNxgoAAAD/AACAAAAAAAAAAAAAAAYAAAC9AQAABAAARAAA AAD/////BAA4RAAAAAD/////AAAAAAIAAAAEAAAABgAAAAgAAAAMAAAAEQAAABIAAAATAAAAGAAA ABkAAAAdAAAAHgAAAB8AAAAjAAAAJAAAACgAAAApAAAALQAAAC4AAAAvAAAANAAAADcAAAA7AAAA QAAAAEYAAABMAAAAUwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAGEAAABi AAAAYwAAAGQAAABlAAAAZgAAAGcAAABoAAAAaQAAAGoAAABrAAAAbAAAAG0AAABuAAAAbwAAAHAA AABxAAAAcgAAAHMAAAB0AAAAdQAAAHYAAAB3AAAAeAAAAHkAAAB7AAAAfAAAAH0AAAB+AAAAfwAA AIAAAACBAAAAggAAAIMAAACEAAAAhQAAAIYAAACHAAAAiAAAAIkAAACKAAAAjwAAAKsAAACsAAAA ugAAAM4AAADiAAAABgEAACYBAAAuAQAAOgEAADsBAABLAQAAWwEAAFwBAACJAQAAigEAAIsBAACN AQAAjgEAAJABAACRAQAAkwEAAJQBAACWAQAAlwEAAJgBAACZAQAAmgEAAJsBAACkAQAApQEAAKYB AAC1AQAAtgEAALcBAAC7AQAAvgEAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAA AAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAA AAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAqQAAAAAwAAAA AAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACZAAAAADAAAAAA AAAAgAAAAIABAADMAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAAAAAAAAA AACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAA AIAAAACAAQAAyQAAAAAgAJkAAAAAMAAAAAAAAACAAAAAgAEAAMwAAAAAIACpAAAAADAAAAAAAAAA gAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAAAAAAAAAAACA AAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAA AACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACZAAAAADAAAAAAAAAAgAAA AIABAADMAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAA gAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACA AQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAAACpAAAAADAAAAAAAAAAgAAAAIAB AADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEA AMkAAAAAIACZAAAAADAAAAAAAAAAgAAAAIABAADMAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAA yQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJ AAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkA AAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAA AAAgAJkAAAAAMAAAAAAAAACAAAAAgAEAAMwAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAA ACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAA IACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAg AKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAA mQAAAAAwAAAAAAAAAIAAAACAAQAAzAAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACp AAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkA AAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAA AAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACZAAAA ADAAAAAAAAAAgAAAAIABAADMAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAA MAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAw AAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAA AAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAJkAAAAAMAAA AAAAAACAAAAAgAEAAMwAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAA AAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAA AAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAA AACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAmQAAAAAwAAAAAAAA AIAAAACAAQAAzAAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAA gAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACA AAAAgAEAAMkAAAAAIACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAACAAqQAAAAAwAAAAAAAAAIAA AACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAIACZAAAAADAAAAAAAAAAgAAA AIABAADMAAAAACAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAA gAEAAMkAAAAAIAGZAAAAADAAAAAAAAAAgAAAAIABAADMAAAAACAAqQAAAAAwAAAAAAAAAIAAAACA AQAAyQAAAAAAAKkAAAAAMAAAAAAAAACAAAAAgAEAAMkAAAAAAACpAAAAADAAAAAAAAAAgAAAAIAB AADJAAAAAAAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAKkAAAAAMAAAAAAAAACAAAAAgAEA AMkAAAAAAACpAAAAADAAAAAAAAAAgAAAAIABAADJAAAAAAAAqQAAAAAwAAAAAAAAAIAAAACAAQAA yQAAAAAgAJkAAAAAMAAAAAAAAACAAAAAgAEAAMwAAAAAIACpAAAAAAAAAAAAAAAAgAAAAIABAADJ AAAAAAAAqQAAAAAwAAAAAAAAAIAAAACAAQAAyQAAAAAgAJkAAAAAMAAAAAAAAACAAAAAgAEAAMwA AAAAIACYAAAAFAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAA AAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAABY0QAwCDAAAAAAAAACAAAADgAAAAAAAAAA AMUHyJEAMAAwAAAAAAAAAQAAAAAAAAAAAAAAAACmB1jRADAIMAAAAAAAAAIAAAAOAAAAAAAAAAAA xQfIkQAwADAAAAAAAAABAAAAAAAAAAAAAAAAAKYHWNEAMAgwAAAAAAAAAgAAAA4AAAAAAAAAAADF B8iRADAAMAAAAAAAAAEAAAAAAAAAAAAAAAAApgdY0QAwCDAAAAAAAAACAAAADgAAAAAAAAAAAMUH yJEAMAAwAAAAAAAAAQAAAAAAAAAAAAAAAACmB5hAAAARMAAAAAAAAACAAAAAgAAAAAAAAAAAAAeo 0QAwCTAAAAAAAAABAAAACgAAAAoAAAAk+6cHmEAAABEwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJhA AAAQMAAAAAAAAACAAAAAgAAAAAAAAAAAAAeYQAAAEDAAAAAAAAAAgAAAAIAAAAABAAAAAAAHScgA MAEwAAAAAAAAAQAAAAQAAAAAAAAAAACAAUnIADABMAAAAAAAAAEAAAACAAAAAAAAAAAAgAGYQAAA DzAAAAAAAAAAgAAAAIAAAAABAAAAAAAAmEAAAA8wAAAAAAAAAIAAAACAAAAAAAAAAAAAAEnIADAA MAAAAAAAAAEAAAAAAAAAAAAAAAAApgeo0QAwEjAAAAAAAAABAAAAAwAAABMAAADI+acHyJEAMAAw AAAAAAAAAQAAAAAAAAAAAAAAHAemBwAAAAACAAAABAAAAAYAAAAMAAAAEQAAABIAAAATAAAAGAAA ABkAAAAdAAAAHgAAAB8AAAAjAAAAJAAAACgAAAApAAAALQAAAC4AAAAvAAAANAAAADcAAAA7AAAA QAAAAEYAAABMAAAAUwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAGEAAABi AAAAYwAAAGQAAABlAAAAZgAAAGcAAABoAAAAaQAAAGoAAABrAAAAbAAAAG0AAABuAAAAbwAAAHAA AABxAAAAcgAAAHMAAAB0AAAAdQAAAHYAAAB3AAAAeAAAAHkAAAB7AAAAfAAAAH0AAAB+AAAAfwAA AIAAAACBAAAAggAAAIMAAACEAAAAhQAAAIYAAACHAAAAiAAAAIkAAACKAAAAjwAAAKsAAACsAAAA ugAAAM4AAADiAAAABgEAACYBAAAuAQAAOgEAADsBAABLAQAAWwEAAFwBAACJAQAAigEAAL4BAABL yAAwAjAAAAAAAAABAAAAAgAAAAAAAAAAAIAHypEAMAEwAAAAAAAAAQAAAAQAAAAAAAAAAACAB1rR ADABMAAAAAAAAAEAAAAvAAAAAAAAAAAAAAfK0QAwADAAAAAAAAACAAAAAQAAAAAAAAAAANMHytEA MAAwAAAAAAAAAgAAAAEAAQAAAQAAAADTB8rRADAAMAAAAAAAAAIAAAABAAEAAAEAAAAA0wcCQAAA ADAAAAAAAAAAAAAAAAABAAAEAAAAACAHytEAMAIwAAAAAAAAAgAAAAEAAQAAAQAAAADTB8rRADAC MAAAAAAAAAIAAAABAAEAAAEAAAAA0wfK0QAwAjAAAAAAAAACAAAAAQABAAABAAAAANMHytEAMAIw AAAAAAAAAgAAAAEAAQAAAQAAAADTBwJAAAAAMAAAAAAAAAAAAAAAAAEAAAQAAAAAoAfK0QAwBDAA AAAAAAACAAAAAQABAAABAAAAANMHytEAMAQwAAAAAAAAAgAAAAEAAQAAAQAAAADTB8rRADAEMAAA AAAAAAIAAAABAAEAAAEAAAAA0wfK0QAwBDAAAAAAAAACAAAAAQABAAABAAAAANMHytEAMAQwAAAA AAAAAgAAAAEAAQAAAQAAAADTB8rRADAEMAAAAAAAAAIAAAABAAEAAAEAAAAA0wcCQAAAADAAAAAA AAAAAAAAAAABAAAEAAAAAKAHytEAMAYwAAAAAAAAAgAAAAEAAQAAAQAAAADTB8rRADAGMAAAAAAA AAIAAAABAAEAAAEAAAAA0wfK0QAwBjAAAAAAAAACAAAAAQABAAABAAAAANMHytEAMAYwAAAAAAAA AgAAAAEAAQAAAQAAAADTB8rRADAGMAAAAAAAAAIAAAABAAEAAAEAAAAA0wfK0QAwBjAAAAAAAAAC AAAAAQABAAABAAAAANMHytEAMAYwAAAAAAAAAgAAAAEAAQAAAQAAAADTB8rRADAGMAAAAAAAAAIA AAABAAEAAAEAAAAA0wcCQAAAADAAAAAAAAAAAAAAAAABAAAEAAAAAKAHytEAMAgwAAAAAAAAAgAA AAEAAQAAAQAAAADTB8rRADAIMAAAAAAAAAIAAAABAAEAAAEAAAAA0wfK0QAwCDAAAAAAAAACAAAA AQABAAABAAAAANMHytEAMAgwAAAAAAAAAgAAAAEAAQAAAQAAAADTB8rRADAIMAAAAAAAAAIAAAAB AAEAAAEAAAAA0wfK0QAwCDAAAAAAAAACAAAAAQABAAABAAAAANMHytEAMAgwAAAAAAAAAgAAAAEA AQAAAQAAAADTBwJAAAAAMAAAAAAAAAAAAAAAAAEAAAQAAAAAoAfK0QAwCjAAAAAAAAACAAAAAQAB AAABAAAAANMHytEAMAowAAAAAAAAAgAAAAEAAQAAAQAAAADTB8rRADAKMAAAAAAAAAIAAAABAAEA AAEAAAAA0wfK0QAwCjAAAAAAAAACAAAAAQABAAABAAAAANMHytEAMAowAAAAAAAAAgAAAAEAAQAA AQAAAADTB8rRADAKMAAAAAAAAAIAAAABAAEAAAEAAAAA0wfK0QAwCjAAAAAAAAACAAAAAQABAAAB AAAAANMHAkAAAAAwAAAAAAAAAAAAAAAAAQAABAAAAACgB8rRADAMMAAAAAAAAAIAAAABAAEAAAEA AAAA0wfK0QAwDDAAAAAAAAACAAAAAQABAAABAAAAANMHytEAMAwwAAAAAAAAAgAAAAEAAQAAAQAA AADTB8rRADAMMAAAAAAAAAIAAAABAAEAAAEAAAAA0wfK0QAwDDAAAAAAAAACAAAAAQABAAABAAAA ANMHytEAMAwwAAAAAAAAAgAAAAEAAQAAAQAAAADTB8rRADAMMAAAAAAAAAIAAAABAAEAAAEAAAAA 0wcCQAAAADAAAAAAAAAAAAAAAAABAAAEAAAAAKAHytEAMA4wAAAAAAAAAgAAAAEAAQAAAQAAAADT B8rRADAOMAAAAAAAAAIAAAABAAEAAAEAAAAA0wfK0QAwDjAAAAAAAAACAAAAAQABAAABAAAAANMH ytEAMA4wAAAAAAAAAgAAAAEAAQAAAQAAAADTB8rRADAOMAAAAAAAAAIAAAABAAEAAAEAAAAA0wfK 0QAwDjAAAAAAAAACAAAAAQABAAABAAAAANMHytEAMA4wAAAAAAAAAgAAAAEAAQAAAQAAAADTBwJA AAAAMAAAAAAAAAAAAAAAAAEAAAQAAAAAoAfK0QAwEDAAAAAAAAACAAAAAQABAAABAAAAANMHytEA MBAwAAAAAAAAAgAAAAEAAQAAAQAAAADTB8rRADAQMAAAAAAAAAIAAAABAAEAAAEAAAAA0wfK0QAw EDAAAAAAAAACAAAAAQABAAABAAAAANMHytEAMBAwAAAAAAAAAgAAAAEAAQAAAQAAAADTB8rRADAQ MAAAAAAAAAIAAAABAAEAAAEAAAAA0wfK0QAwEDAAAAAAAAACAAAAAQABAAABAAAAANMHAkAAAAAw AAAAAAAAAAAAAAAAAQAAlAAAAACgB8rRADASMAAAAAAAAAIAAAABAAEAAAEAAAAA0wfK0QAwEjAA AAAAAAACAAAAAQABAAABAAAAANMHytEAMBIwAAAAAAAAAgAAAAEAAQAAAQAAAADTB8rRADASMAAA AAAAAAIAAAABAAEAAAEAAAAA0wfK0QAwEjAAAAAAAAACAAAAAQABAAABAAAAANMHytEAMBIwAAAA AAAAAgAAAAEAAQAAAQAAAADTB8rRADASMAAAAAAAAAIAAAABAAEAAAEAAAAA0wfK0QAwCDAAAAAA AAACAAAAAQABAAAEAAAAAKAHytEAMBQwAAAAAAAAAgAAAAEAAQAAAQAAAADTB8rRADAUMAAAAAAA AAIAAAABAAEAAAEAAAAA0wcCQAAAADAAAAAAAAAAAAAAAAABAAAEAAAAAKAHytEAMBYwAAAAAAAA AgAAAAEAAQAAAQAAAADTB8rRADAWMAAAAAAAAAIAAAABAAEAAAEAAAAA0wfK0QAwFjAAAAAAAAAC AAAAAQABAAABAAAAANMHytEAMBYwAAAAAAAAAgAAAAEAAQAAAQAAAADTB8rRADAWMAAAAAAAAAIA AAABAAEAAAEAAAAA0wfK0QAwFjAAAAAAAAACAAAAAQABAAABAAAAANMHytEAMBYwAAAAAAAAAgAA AAEAAQAAAQAAAADTBwJAAAAAMAAAAAAAAAAAAAAAAAEAAAQAAAAAoAfK0QAwGDAAAAAAAAACAAAA AQABAAABAAAAAKcHyNEAMBgwAAAAAAAAAgAAAAEAAQAAAQAAAACgAQBAAAAAMAAAAAAAABYAAAAA AAEAAAQAAAAAoAHI0QAwADAAAAAAAAABAAAAAAAAAAAAAAAAAIABqtEAMAIwAAAAAAAAAQAAAE8A AAAAAAAAAAAAB5oAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAAcAAAAAAwAAAAYAAAAGAAAACQAA AAwAAAAMAAAADgAAABAAAAAbAAAALAAAAC4AAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAA MwAAAAAGAABECAAAWAkAAEo4AAB6OQAABQAAAAoAAAAbAAAAHgAAAAAGAAAmCAAAPAgAAFIIAABe CAAAsAgAALIIAADACAAAwggAANAIAADSCAAA4AgAAOIIAADwCAAA8ggAAAIJAAAECQAAEgkAABQJ AADECQAAdDgAALY4AAAsOQAAejkAAAYAAAAIAAAACQAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAA ABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAdAAAAHwAAACAAAAAhAAAA AAYAAHg5AAAHAAAAEAAAABcAAAAbAAAAIgAAACgAAAAzAAAAEyGVABMhFP+VgA8AAPCgAAAAAAAG 8CAAAAACDAAAAwAAAAUAAAACAAAAAgAAAAUAAAABAAAAAQAAAC8AAfBYAAAAAgAH8CQAAAAAAAAA AAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAABSAAfwJAAAAAUFeHiATRRlHu5rYlRDVf29 IP8AS/YAAAEAAABtRAAAAAAAAEAAHvEQAAAA//8AAAAA/wCAgIAA9wAAEAAPAALwBAEAACAACPAI AAAAAgAAAAQEAAAPAAPwogAAAA8ABPAoAAAAAQAJ8BAAAAAAAAAAAAAAAAAAAAAAAAAAAgAK8AgA AAAABAAABQAAAA8ABPBqAAAAsgQK8AgAAAAEBAAAAAoAAGMAC/AsAAAABEECAAAABcEIAAAABgEC AAAACAHpIgEA/wEAAAgAvwMgACAAMQA1ADcAAAATACLxBgAAAL8BAABgAAAAEPAEAAAAAAAAAAAA EfAEAAAAAQAAAA8ABPBCAAAAEgAK8AgAAAABBAAAAA4AAFMAC/AeAAAAvwEAABAAywEAAAAA/wEA AAgABAMJAAAAPwMBAAEAAAAR8AQAAAABAAAAAQ8AAvBIAAAAEAAI8AgAAAABAAAAAAgAAA8AA/Aw AAAADwAE8CgAAAABAAnwEAAAAAAAAAAAAAAAAAAAAAAAAAACAArwCAAAAAAIAAAFAAAABgAAAL0B AAAEBAAAnfv//5D9//9EJgAA2DYAAFRAAAAAAAAAAAAIAAAACwAAAAwAAAAQAAAAEwAAABcAAAAZ AAAAGgAAABsAAAAcAAAAHwAAACIAAAAkAAAAJQAAACYAAAAnAAAAKQAAACoAAAArAAAALAAAAC8A AAAzAAAANAAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAAD8AAABAAAAAQQAAAEQAAABFAAAARwAA AEsAAABTAAAAVAAAAFYAAABXAAAAigAAAI4AAACdAAAAnwAAAKQAAAClAAAApgAAAKoAAACsAAAA tQAAAL8AAADAAAAAzgAAANEAAADUAAAA1QAAAOIAAADlAAAAJgEAACcBAAAoAQAAKQEAACoBAAAr AQAALAEAAC0BAAAuAQAAMwEAADUBAAA2AQAAOAEAADkBAAA7AQAAPgEAAEABAABKAQAAUwEAAFoB AABdAQAAiAEAAIsBAACLAQAAjQEAAI0BAACOAQAAjgEAAJABAACRAQAAkwEAAJQBAACWAQAAlwEA ALsBAAC+AQAABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUA BwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAEAAcABQAH AAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcA BAAHAAQAAgAEAAcABAAHAAQABwAEAAcAAgAAAAAACAAAAAsAAAAMAAAAEAAAABMAAAAXAAAAGQAA ABwAAAAfAAAAIgAAACQAAAAnAAAAKQAAACwAAAAvAAAAMwAAADQAAAA2AAAANwAAADoAAAA7AAAA PwAAAEAAAABFAAAARgAAAEsAAABTAAAAVwAAAIoAAACOAAAAjwAAAKoAAACsAAAAuQAAALoAAADN AAAA4gAAAAUBAAAmAQAALQEAAC4BAAA5AQAAOwEAAEoBAABRAQAAWgEAAFwBAACIAQAAiwEAAIsB AACNAQAAjQEAAI4BAACOAQAAkAEAAJEBAACTAQAAlAEAAJYBAACXAQAAuwEAAL4BAAAHAAUABwAF AAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUA BwAEAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAQABwAEAAIABAAHAAQABwAEAAcABAAH AAIAAAAAAAEAAAAIAAAAiQEAAIoBAACLAQAAiwEAAI0BAACNAQAAjgEAAI4BAACQAQAAkQEAAJMB AACUAQAAlgEAAJkBAACbAQAAowEAAKYBAAC0AQAAtwEAALsBAAC+AQAABAADAAQAAwACAAQAAgAE AAIABAACAAQAAgAEAAIABAACAAcAAgAHAAIABAACAAAAAACsAAAAtQAAAIsBAACLAQAAjQEAAI0B AACOAQAAjgEAAJABAACRAQAAkwEAAJQBAACWAQAAlwEAALsBAAC+AQAABwAEAAcABAAHAAQAAgAE AAcABAAHAAQABwAEAAcAAgAHAGZOPhQAAAAAAAAAAAABAgACAFVtIhkAAAAAAAAAAAABAgACAChb LTgAAAAAAAAAAAABAgACAFo71jsAAAAAAAAAAAABAgACALsmG1IAAAAAAAAAAAABAgACAGRzZ1oA AAAAAAAAAAABAgACAKZpfn4AAAAAAAAAAAABAgACAEUAAAAEAAAACAAAAOUAAAAAAAAARAAAAIsk AAC8BgEA6T0EABEdDwDKNh0AxG4eABFiJwD+PikA5kQtACZQMwARMzcAwQQ6AIAtRABsWFUALlZZ AGwYZQC1aWgAOxJsAPopcADMFnEAynd0AP4ZeACReHgAu2F5AMYxewB/dH4AVTCBALxqgwAiFocA eSKIAIZKigC7BIsAlSiMAONikAB7Dp0AziWfAAdDpgBVTqYAXimsAJ9ergBFLLAA2Eq1AO9ZtQAv GbcAYC2/AERdwAA2TMEAGHvCABcJwwCmF8UAJlPHAFIHyQDhN84A11jUAMMj1wDkUtgAoX7bAKF9 3QBRYuAAgUHjAHAo5wBEIukAcTjpAEFB7wA8NfAAlFrzAKsO9QAyEPgAvxL6AAAAAAAMAAAAEQAA ABIAAAATAAAAGAAAABkAAAAdAAAAHgAAAB8AAAAjAAAAJAAAACgAAAApAAAALQAAAC4AAAAvAAAA NAAAADcAAAA7AAAAQAAAAEwAAABTAAAAWAAAAFkAAABaAAAAWwAAAFwAAABdAAAAXgAAAF8AAABg AAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4A AABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHsAAAB8AAAAfQAA AH4AAAB/AAAAgAAAAIEAAACCAAAAgwAAAIQAAACFAAAAhgAAAIcAAACIAAAAiQAAAIoAAACPAAAA qwAAAKwAAAAGAQAAOgEAADsBAABbAQAAXAEAAL4BAAAAAAAACAAAAAIBAAACAQAAjgEABAIBAAAC AQAAAgEAAAIBAACOAQAEAgEAAAIBAAACAQAAAgEAAAIBAAACAQAAjgEABAIBAAACAQAAAgEAAAIB AAACAQAAAgEAAAIBAACOAQAEAgEAAAIBAAACAQAAAgEAAAIBAAACAQAAAgEAAI4BAAQCAQAAAgEA AAIBAAACAQAAAgEAAAIBAAACAQAAjgEABAIBAAACAQAAAgEAAAIBAAACAQAAAgEAAAIBAACOAQAE AgEAAAIBAAACAQAAAgEAAAIBAAACAQAAAgEAAI4BAAQCAQAAAgEAAAIBAAACAQAAAgEAAAIBAAAC AQAAjgEABAIBAAACAQAAAgEAAAIBAAACAQAAAgEAAAIBAACOAQAEAgEAAAIBAACOAQAEAgEAAAIB AACOAQAEAgEAAIYBAAT/QA2AAAC1AAAAtQAAABDaMwEBAAEAtQAAAAAAAAC1AAAAAAAAAAIcAAAA AAAAAAABAAC9AQAAQAAACAAAAABAAAA4AAAAAP//AQAAAAcAVQBuAGsAbgBvAHcAbgD//wEACAAA AAAAAAAAAAAA//8BAAAAAAD//wAAAgD//wAAAAD//wAAAgD//wAAAAAIAAAARxaQAQAAAgIGAwUE BQIDBId6ACAAAACACAAAAAAAAAD/AQAAAAAAAFQAaQBtAGUAcwAgAE4AZQB3ACAAUgBvAG0AYQBu AAAANRaQAQIABQUBAgEHBgIFBwAAAAAAAAAQAAAAAAAAAAAAAACAAAAAAFMAeQBtAGIAbwBsAAAA MyaQAQAAAgsGBAICAgICBId6ACAAAACACAAAAAAAAAD/AQAAAAAAAEEAcgBpAGEAbAAAADsGkAGG AwIBBgADAQEBAQEDAAAAAAAOCBAAAAAAAAAAAQAEAAAAAACLW1NPAABTAGkAbQBTAHUAbgAAADs1 kAGGAAIBBgkDAQEBAQEBAAAAAAAOCBAAAAAAAAAAAAAEAAAAAAD/TotbXwBHAEIAMgAzADEAMgAA AEFFkAGGCgMABQkAAAAAAAABAAAAAAAOCBAAAAAAAAAAAAAEAAAAAAC5ZWNrD1wHaItbXwBHAEIA SwAAANGeU08AADsGkAGGAwIBBgADAQEBAQEBAAAAAAAOCBAAAAAAAAAAAAAEAAAAAADRnlNPAABT AGkAbQBIAGUAaQAAADUmAAAAAAILBgQDBQQEAgSHegBhAAAAgAgAAAAAAAAA/wEBAAAAAABUAGEA aABvAG0AYQAAACAABAAxCIgYAACkAQAAaAEAAAAAgOP6pnb6+iaF9PaGDwANAAAAOgAAAFEBAAAB AAEAAAAEAAMQAgAAADoAAABRAQAAAQABAAAAAgAAAAAAAAAhAwAAAAAAAAMALQATACEAKQAsAC4A OgA7AD8AXQB9AKgAtwDHAskCFSAWIBkgHSAmIDYiATACMAMwBTAJMAswDTAPMBEwFTAXMAH/Av8H /wn/DP8O/xr/G/8f/z3/QP9c/13/Xv/g/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAFsAewC3ABggHCAIMAowDDAOMBAwFDAWMAj/Dv87/1v/ 4f/l/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAjBooFtACcAIKAEgQAAAAAAAAAAAAAAAAAAIoBAACKAQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAA AAgyg3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASFAAAAAACPD/DwEAAT8AAKgD AAD///9/////f////3////9/////f////3////9/JlAzAAAAAAAyAAAAAAAAAAAAAAAAAAAAAAD/ /xIAAAAAAAAAAQAgAAAAAAAAAAQArl9vjyh1N2IEAK5fb48tTv1WAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/wAABQECAAAAAAAAAAAAAAAAAAAAAAAB AAAA4IWf8vlPaBCrkQgAKyez2TAAAAB0AQAAEQAAAAEAAACQAAAAAgAAAJgAAAADAAAApAAAAAQA AACwAAAABQAAAMQAAAAHAAAA0AAAAAgAAADkAAAACQAAAPgAAAASAAAABAEAAAoAAAAkAQAACwAA ADABAAAMAAAAPAEAAA0AAABIAQAADgAAAFQBAAAPAAAAXAEAABAAAABkAQAAEwAAAGwBAAACAAAA qAMAAB4AAAAEAAAAIAAAAB4AAAAEAAAAAAAAAB4AAAAMAAAAzqLI7dPDu6cAAAAAHgAAAAQAAAAA AAAAHgAAAAwAAABOb3JtYWwuZG90AAAeAAAADAAAAM6iyO3W0Ln6AAAAAB4AAAAEAAAAMTUAAB4A AAAYAAAATWljcm9zb2Z0IE9mZmljZSBXb3JkAAAAQAAAAACO6tABAAAAQAAAAAAuDCwNN8wBQAAA AAAwvNM2lcwBQAAAAAAsVPVvl8wBAwAAAAEAAAADAAAAOgAAAAMAAABRAQAAAwAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v8AAAUBAgAAAAAAAAAAAAAAAAAAAAAAAQAAAALVzdWc LhsQk5cIACss+a4wAAAAtAAAAAoAAAABAAAAWAAAAA8AAABgAAAABQAAAHQAAAAGAAAAfAAAABEA AACEAAAAFwAAAIwAAAALAAAAlAAAABAAAACcAAAAEwAAAKQAAAAWAAAArAAAAAIAAACoAwAAHgAA AAwAAADOosjt1tC5+gAAAAADAAAAAgAAAAMAAAABAAAAAwAAAIoBAAADAAAADycLAAsAAAAAAAAA CwAAAAAAAAALAAAAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAAL AAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkA AAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAA ACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAA NgAAADcAAAA4AAAAOQAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABE AAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIA AABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAA AGEAAABiAAAAYwAAAGQAAABlAAAAZgAAAGcAAABoAAAAaQAAAGoAAABrAAAAbAAAAG0AAABuAAAA bwAAAHAAAABxAAAAcgAAAHMAAAB0AAAAdQAAAHYAAAB3AAAAeAAAAHkAAAB6AAAAewAAAHwAAAB9 AAAAfgAAAH8AAACAAAAAgQAAAIIAAACDAAAAhAAAAIUAAACGAAAAhwAAAIgAAACJAAAAigAAAIsA AACMAAAAjQAAAI4AAACPAAAAkAAAAJEAAACSAAAAkwAAAJQAAACVAAAAlgAAAJcAAACYAAAAmQAA AJoAAACbAAAAnAAAAJ0AAAD+////nwAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAA qAAAAKkAAACqAAAAqwAAAKwAAACtAAAArgAAAK8AAACwAAAAsQAAALIAAACzAAAAtAAAALUAAAC2 AAAAtwAAALgAAAC5AAAAugAAALsAAAC8AAAAvQAAAL4AAAC/AAAAwAAAAMEAAADCAAAAwwAAAMQA AADFAAAAxgAAAMcAAADIAAAAyQAAAMoAAADLAAAAzAAAAM0AAADOAAAAzwAAANAAAADRAAAA0gAA ANMAAADUAAAA1QAAANYAAADXAAAA2AAAANkAAADaAAAA2wAAANwAAADdAAAA3gAAAN8AAADgAAAA 4QAAAOIAAADjAAAA5AAAAOUAAADmAAAA5wAAAOgAAADpAAAA6gAAAOsAAADsAAAA7QAAAO4AAADv AAAA8AAAAPEAAADyAAAA8wAAAPQAAAD1AAAA9gAAAPcAAAD4AAAA+QAAAPoAAAD7AAAA/AAAAP0A AAD+AAAA/wAAAAABAAABAQAAAgEAAAMBAAAEAQAABQEAAAYBAAAHAQAACAEAAAkBAAAKAQAACwEA AAwBAAANAQAADgEAAA8BAAAQAQAAEQEAABIBAAATAQAAFAEAABUBAAAWAQAAFwEAABgBAAAZAQAA GgEAABsBAAAcAQAAHQEAAB4BAAAfAQAAIAEAACEBAAAiAQAAIwEAACQBAAAlAQAAJgEAACcBAAAo AQAAKQEAACoBAAArAQAALAEAAC0BAAAuAQAALwEAADABAAAxAQAAMgEAADMBAAA0AQAANQEAADYB AAA3AQAAOAEAADkBAAA6AQAAOwEAADwBAAA9AQAAPgEAAD8BAABAAQAAQQEAAEIBAABDAQAARAEA AEUBAABGAQAARwEAAEgBAABJAQAASgEAAEsBAABMAQAATQEAAE4BAABPAQAAUAEAAFEBAABSAQAA UwEAAFQBAABVAQAAVgEAAFcBAABYAQAAWQEAAFoBAABbAQAAXAEAAF0BAABeAQAAXwEAAGABAABh AQAAYgEAAGMBAABkAQAAZQEAAGYBAABnAQAAaAEAAGkBAABqAQAAawEAAGwBAABtAQAAbgEAAG8B AABwAQAAcQEAAHIBAABzAQAAdAEAAHUBAAB2AQAAdwEAAHgBAAB5AQAAegEAAHsBAAB8AQAAfQEA AH4BAAB/AQAAgAEAAIEBAACCAQAAgwEAAIQBAACFAQAAhgEAAIcBAACIAQAAiQEAAIoBAACLAQAA jAEAAI0BAACOAQAAjwEAAJABAACRAQAAkgEAAJMBAACUAQAAlQEAAJYBAACXAQAAmAEAAJkBAACa AQAAmwEAAJwBAACdAQAAngEAAJ8BAACgAQAAoQEAAKIBAACjAQAApAEAAKUBAACmAQAApwEAAKgB AACpAQAAqgEAAKsBAACsAQAArQEAAK4BAACvAQAAsAEAALEBAACyAQAAswEAALQBAAC1AQAAtgEA ALcBAAC4AQAAuQEAALoBAAC7AQAAvAEAAL0BAAC+AQAAvwEAAMABAADBAQAAwgEAAMMBAADEAQAA xQEAAMYBAADHAQAAyAEAAMkBAADKAQAAywEAAMwBAADNAQAAzgEAAM8BAADQAQAA0QEAANIBAADT AQAA1AEAANUBAADWAQAA1wEAANgBAADZAQAA2gEAANsBAADcAQAA3QEAAN4BAADfAQAA4AEAAOEB AADiAQAA4wEAAOQBAADlAQAA5gEAAOcBAADoAQAA6QEAAOoBAADrAQAA7AEAAO0BAADuAQAA7wEA APABAADxAQAA8gEAAPMBAAD0AQAA9QEAAPYBAAD3AQAA+AEAAPkBAAD6AQAA+wEAAPwBAAD9AQAA /gEAAP8BAAAAAgAAAQIAAAICAAADAgAABAIAAAUCAAAGAgAABwIAAAgCAAAJAgAACgIAAAsCAAAM AgAADQIAAA4CAAAPAgAAEAIAABECAAASAgAAEwIAABQCAAAVAgAAFgIAABcCAAAYAgAAGQIAABoC AAAbAgAAHAIAAB0CAAAeAgAAHwIAACACAAAhAgAAIgIAACMCAAAkAgAAJQIAACYCAAAnAgAAKAIA ACkCAAAqAgAAKwIAACwCAAAtAgAALgIAAC8CAAAwAgAAMQIAADICAAAzAgAANAIAADUCAAA2AgAA NwIAADgCAAA5AgAAOgIAADsCAAA8AgAAPQIAAD4CAAA/AgAAQAIAAEECAABCAgAAQwIAAEQCAABF AgAARgIAAEcCAABIAgAASQIAAEoCAABLAgAATAIAAE0CAABOAgAATwIAAFACAABRAgAAUgIAAFMC AABUAgAAVQIAAFYCAABXAgAAWAIAAFkCAABaAgAAWwIAAFwCAABdAgAAXgIAAF8CAABgAgAAYQIA AGICAABjAgAAZAIAAGUCAABmAgAAZwIAAGgCAABpAgAAagIAAGsCAABsAgAAbQIAAG4CAABvAgAA cAIAAHECAAByAgAAcwIAAHQCAAB1AgAAdgIAAHcCAAB4AgAAeQIAAHoCAAB7AgAAfAIAAH0CAAB+ AgAAfwIAAIACAACBAgAAggIAAIMCAACEAgAAhQIAAIYCAACHAgAAiAIAAIkCAACKAgAAiwIAAIwC AACNAgAAjgIAAI8CAACQAgAAkQIAAJICAACTAgAAlAIAAJUCAACWAgAAlwIAAJgCAACZAgAAmgIA AJsCAACcAgAAnQIAAJ4CAACfAgAAoAIAAKECAACiAgAAowIAAKQCAAClAgAApgIAAKcCAACoAgAA qQIAAKoCAACrAgAArAIAAK0CAACuAgAArwIAALACAACxAgAAsgIAALMCAAC0AgAAtQIAALYCAAC3 AgAAuAIAALkCAAC6AgAAuwIAALwCAAC9AgAAvgIAAL8CAADAAgAAwQIAAMICAADDAgAAxAIAAMUC AADGAgAAxwIAAMgCAADJAgAAygIAAMsCAADMAgAAzQIAAM4CAADPAgAA0AIAANECAADSAgAA0wIA ANQCAADVAgAA1gIAANcCAADYAgAA2QIAANoCAADbAgAA3AIAAN0CAADeAgAA3wIAAOACAADhAgAA 4gIAAOMCAAD+////5QIAAOYCAADnAgAA6AIAAOkCAADqAgAA6wIAAOwCAADtAgAA7gIAAO8CAADw AgAA8QIAAPICAADzAgAA9AIAAPUCAAD2AgAA9wIAAPgCAAD5AgAA+gIAAPsCAAD8AgAA/v////4C AAD/AgAAAAMAAAEDAAACAwAAAwMAAAQDAAD+////BgMAAAcDAAAIAwAACQMAAAoDAAALAwAADAMA AP7////9/////f////3////9/////f////3////9////FQMAAP7////+/////v////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////UgBvAG8AdAAgAEUAbgB0AHIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAABYABQH//////////wMAAAAGCQIAAAAAAMAAAAAAAABGAAAAAAAAAAAA AAAAoFCCDHCXzAEXAwAAgAAAAAAAAABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgACAf///////////////wAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ4AAAC/iwQAAAAAADEAVABhAGIAbABlAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAIBAQAAAAYAAAD/ ////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AIAAKkxAAAAAAAAVwBvAHIA ZABEAG8AYwB1AG0AZQBuAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABoAAgECAAAABQAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA uDoBAAAAAAAFAFMAdQBtAG0AYQByAHkASQBuAGYAbwByAG0AYQB0AGkAbwBuAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAKAACAf///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAP0CAAAAEAAAAAAAAAUARABvAGMAdQBtAGUAbgB0AFMAdQBtAG0AYQByAHkASQBu AGYAbwByAG0AYQB0AGkAbwBuAAAAAAAAAAAAAAA4AAIBBAAAAP//////////AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQMAAAAQAAAAAAAAAQBDAG8AbQBwAE8AYgBqAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAgD///////////// //8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAEAAAD+//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////AQD+/wMKAAD/////BgkCAAAAAADAAAAAAAAARhsAAABNaWNyb3NvZnQgT2ZmaWNlIFdv cmQgzsS1tQAKAAAATVNXb3JkRG9jABAAAABXb3JkLkRvY3VtZW50LjgA9DmycQAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAA= ------=_NextPart_000_0A74_013CCF6C.1D04BC10-- From david@fromorbit.com Fri Nov 18 19:14:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJ1Evi1224977 for ; Fri, 18 Nov 2011 19:14:57 -0600 X-ASG-Debug-ID: 1321665293-111500260000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A9A2C26332E for ; Fri, 18 Nov 2011 17:14:54 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id lZ0DDskTcrMTQdas for ; Fri, 18 Nov 2011 17:14:54 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAM4Cx055LGY5/2dsb2JhbABDqjmBBoFyAQEEAScTHCMFCwgDDgouFCUDIROIAwi2RhKGVYMwBJQ4khY Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail06.adl2.internode.on.net with ESMTP; 19 Nov 2011 11:44:52 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RRZW6-0004RT-Ub; Sat, 19 Nov 2011 12:14:50 +1100 Date: Sat, 19 Nov 2011 12:14:50 +1100 From: Dave Chinner To: Chandra Seetharaman Cc: XFS Mailing List X-ASG-Orig-Subj: Re: [PATCH] xfs: Remove the entries from the queue while waking them up. Subject: Re: [PATCH] xfs: Remove the entries from the queue while waking them up. Message-ID: <20111119011450.GL7046@dastard> References: <1321644054.2201.80.camel@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1321644054.2201.80.camel@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1321665295 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80644 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Nov 18, 2011 at 01:20:54PM -0600, Chandra Seetharaman wrote: > l_reserveq and l_writeq maintains a list of processes waiting to get log > space. Processes are supposed to get in the list when the amount of free > space available in the log is less than what they need. > > When space becomes available current code, wakes up the processes, but > expect the processes to remove themselves from the queue. > > Since the lock protecting the list is only acquired later by the woken > up process, there is a window of time were a new process that is looking > for space can wrongly get into the queue while there is enough space > available. > > Since there is enough space available, this process can never be woken > up, which leads to the hang of the process. Excellent work, Chandra. > This was originally reported by Alex Elder as hang seen > in xfstests #234. > > With log of log activities, this problem may not be seen, as some > process will be pushing the processes along. But, 234 does lot of quota > operations only, hence the problem was noticed in that test. Right, and it's only since we made the log reserve path lockless that we've been tripping over this race condition. I'd say those changes made it easier to hit, because this race condition has been there for a long time. Indeed, the wakeup race was present in the initial commit for the grant write/reserve head accounting code way back in June of 1994: http://oss.sgi.com/cgi-bin/gitweb.cgi?p=archive/xfs-import.git;a=commitdiff;h=84181026c6c915d7727a4cf316415dd1e8d5805a This is effectively a zero-day bug you've just got to the bottom of - it's one of the oldest bugs ever found in the XFS codebase - and would explain the occasional random log space hangs that have been seen over the years and we've never been able to reproduce. > This patch fixes the problem by removing the element from the queue > (safely) when the process was woken up. > > Reported-by: Alex elder > Signed-Off-by: Chandra Seethraman Couple of comments about the patch below > --- > diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c > index a14cd89..9941fcb 100644 > --- a/fs/xfs/xfs_log.c > +++ b/fs/xfs/xfs_log.c > @@ -674,7 +674,7 @@ void > xfs_log_move_tail(xfs_mount_t *mp, > xfs_lsn_t tail_lsn) > { > - xlog_ticket_t *tic; > + xlog_ticket_t *tic, *tmp; When we modify such declarations, we normally remove the typedef. Typically we also only declare one variable per line. Also, it's best to avoid variables named "tmp". What it really is used for is the loop next pointer, so "next" is a much better name for it. i.e: - xlog_ticket_t *tic; + struct xlog_ticket *tic; + struct xlog_ticket *next; Can change all the "tmp" variables appropriately? > xlog_t *log = mp->m_log; > int need_bytes, free_bytes; > > @@ -695,7 +695,7 @@ xfs_log_move_tail(xfs_mount_t *mp, > #endif > spin_lock(&log->l_grant_write_lock); > free_bytes = xlog_space_left(log, &log->l_grant_write_head); > - list_for_each_entry(tic, &log->l_writeq, t_queue) { > + list_for_each_entry_safe(tic, tmp, &log->l_writeq, t_queue) { > ASSERT(tic->t_flags & XLOG_TIC_PERM_RESERV); > > if (free_bytes < tic->t_unit_res && tail_lsn != 1) > @@ -703,6 +703,7 @@ xfs_log_move_tail(xfs_mount_t *mp, > tail_lsn = 0; > free_bytes -= tic->t_unit_res; > trace_xfs_log_regrant_write_wake_up(log, tic); > + list_del_init(&tic->t_queue); > wake_up(&tic->t_wait); > } > spin_unlock(&log->l_grant_write_lock); A comment here describing the reason why we need to remove the ticket from the queue before issuing the wakeup would be good. We normally add comments explaining how we've avoided race conditions in the code so that in a couple of years time we know why the code was written that way without having to go looking in the commit history. > @@ -715,7 +716,7 @@ xfs_log_move_tail(xfs_mount_t *mp, > #endif > spin_lock(&log->l_grant_reserve_lock); > free_bytes = xlog_space_left(log, &log->l_grant_reserve_head); > - list_for_each_entry(tic, &log->l_reserveq, t_queue) { > + list_for_each_entry_safe(tic, tmp, &log->l_reserveq, t_queue) { > if (tic->t_flags & XLOG_TIC_PERM_RESERV) > need_bytes = tic->t_unit_res*tic->t_cnt; > else > @@ -725,6 +726,7 @@ xfs_log_move_tail(xfs_mount_t *mp, > tail_lsn = 0; > free_bytes -= need_bytes; > trace_xfs_log_grant_wake_up(log, tic); > + list_del_init(&tic->t_queue); > wake_up(&tic->t_wait); > } > spin_unlock(&log->l_grant_reserve_lock); > @@ -2550,8 +2552,7 @@ redo: > free_bytes = xlog_space_left(log, &log->l_grant_reserve_head); > if (free_bytes < need_bytes) { > spin_lock(&log->l_grant_reserve_lock); > - if (list_empty(&tic->t_queue)) > - list_add_tail(&tic->t_queue, &log->l_reserveq); > + list_add_tail(&tic->t_queue, &log->l_reserveq); > > trace_xfs_log_grant_sleep2(log, tic); > Ok, we now have the assumption that when we enter this code the ticket is not on any queue at all. Can you add an "ASSERT(list_empty(&tic->t_queue));" to the code before the above xlog_space_left() call? That way we'll know if we violate that assumption as potentially corrupt memory.... > @@ -2567,12 +2568,6 @@ redo: > goto redo; > } > > - if (!list_empty(&tic->t_queue)) { > - spin_lock(&log->l_grant_reserve_lock); > - list_del_init(&tic->t_queue); > - spin_unlock(&log->l_grant_reserve_lock); > - } > - > /* we've got enough space */ > xlog_grant_add_space(log, &log->l_grant_reserve_head, need_bytes); > xlog_grant_add_space(log, &log->l_grant_write_head, need_bytes); > @@ -2626,30 +2621,28 @@ xlog_regrant_write_log_space(xlog_t *log, > goto error_return_unlocked; > > /* If there are other waiters on the queue then give them a > - * chance at logspace before us. Wake up the first waiters, > - * if we do not wake up all the waiters then go to sleep waiting > - * for more free space, otherwise try to get some space for > - * this transaction. > + * chance at logspace before us. If we do not wake up all > + * the waiters then go to sleep waiting for more free space, > + * otherwise try to get some space for this transaction. > */ > need_bytes = tic->t_unit_res; > if (!list_empty_careful(&log->l_writeq)) { > - struct xlog_ticket *ntic; > + struct xlog_ticket *ntic, *tmp; tmp -> next And probably need an assert for tic not being in a queue. > > spin_lock(&log->l_grant_write_lock); > free_bytes = xlog_space_left(log, &log->l_grant_write_head); > - list_for_each_entry(ntic, &log->l_writeq, t_queue) { > + list_for_each_entry_safe(ntic, tmp, &log->l_writeq, t_queue) { > ASSERT(ntic->t_flags & XLOG_TIC_PERM_RESERV); > > if (free_bytes < ntic->t_unit_res) > break; > free_bytes -= ntic->t_unit_res; > + list_del_init(&ntic->t_queue); > wake_up(&ntic->t_wait); > } > > - if (ntic != list_first_entry(&log->l_writeq, > - struct xlog_ticket, t_queue)) { > - if (list_empty(&tic->t_queue)) > - list_add_tail(&tic->t_queue, &log->l_writeq); > + if (!list_empty(&log->l_writeq)) { > + list_add_tail(&tic->t_queue, &log->l_writeq); > trace_xfs_log_regrant_write_sleep1(log, tic); > > xlog_grant_push_ail(log, need_bytes); > @@ -2668,8 +2661,7 @@ redo: > free_bytes = xlog_space_left(log, &log->l_grant_write_head); > if (free_bytes < need_bytes) { > spin_lock(&log->l_grant_write_lock); > - if (list_empty(&tic->t_queue)) > - list_add_tail(&tic->t_queue, &log->l_writeq); > + list_add_tail(&tic->t_queue, &log->l_writeq); > > if (XLOG_FORCED_SHUTDOWN(log)) > goto error_return; Same again - assert above xlog_space_left. > @@ -2684,12 +2676,6 @@ redo: > goto redo; > } > > - if (!list_empty(&tic->t_queue)) { > - spin_lock(&log->l_grant_write_lock); > - list_del_init(&tic->t_queue); > - spin_unlock(&log->l_grant_write_lock); > - } > - > /* we've got enough space */ > xlog_grant_add_space(log, &log->l_grant_write_head, need_bytes); > trace_xfs_log_regrant_write_exit(log, tic); > @@ -3621,7 +3607,7 @@ xfs_log_force_umount( > struct xfs_mount *mp, > int logerror) > { > - xlog_ticket_t *tic; > + xlog_ticket_t *tic, *tmp; > xlog_t *log; > int retval; tmp -> next > > @@ -3690,13 +3676,17 @@ xfs_log_force_umount( > * action is protected by the grant locks. > */ > spin_lock(&log->l_grant_reserve_lock); > - list_for_each_entry(tic, &log->l_reserveq, t_queue) > + list_for_each_entry_safe(tic, tmp, &log->l_reserveq, t_queue) { > + list_del_init(&tic->t_queue); > wake_up(&tic->t_wait); > + } > spin_unlock(&log->l_grant_reserve_lock); > > spin_lock(&log->l_grant_write_lock); > - list_for_each_entry(tic, &log->l_writeq, t_queue) > + list_for_each_entry_safe(tic, tmp, &log->l_writeq, t_queue) { > + list_del_init(&tic->t_queue); > wake_up(&tic->t_wait); > + } > spin_unlock(&log->l_grant_write_lock); And comments explaining why we are removing the ticket from the queue before issuing the wakeup. I'll run some testing on the patch - it looks like it's correct, but seeing as this logic hasn't changed for so long a bit more testing won't hurt. ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From eguan@redhat.com Sat Nov 19 02:23:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJ8NVeu008592 for ; Sat, 19 Nov 2011 02:23:32 -0600 X-ASG-Debug-ID: 1321691010-7b9300970000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C92CC1627DFC for ; Sat, 19 Nov 2011 00:23:30 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 5IEkWf33vmZJbQpo for ; Sat, 19 Nov 2011 00:23:30 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pAJ8NTUU010114 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sat, 19 Nov 2011 03:23:29 -0500 Received: from localhost (wlan-5-106.nay.redhat.com [10.66.12.106] (may be forged)) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id pAJ8NSD3000453; Sat, 19 Nov 2011 03:23:29 -0500 From: Eryu Guan To: xfs@oss.sgi.com Cc: Eryu Guan , Christoph Hellwig X-ASG-Orig-Subj: [PATCH] xfstests: 276 test time before epoch is correct when re-read in from disk Subject: [PATCH] xfstests: 276 test time before epoch is correct when re-read in from disk Date: Sat, 19 Nov 2011 16:24:15 +0800 Message-Id: <1321691055-1927-1-git-send-email-eguan@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1321691010 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a regression test case for commit 4d7bf11d649c72621ca31b8ea12b9c94af380e63 ext2/3/4: fix file date underflow on ext2 3 filesystems on 64 bit systems On 64bit systems, unpatched extX doesn't sign-extend time values read in from disk. This results in times which should be before the epoch jumping forward in time. For example: At creation, inode information still in memory. [root@cluster1 ~]# touch -t 196001010101 test.txt [root@cluster1 ~]# ls -l test.txt -rw-r--r-- 1 root root 0 Jan 1 1960 test.txt After remount/reboot to force the values to be read in from disk: [root@cluster1 ~]# ls -l test.txt -rw-r--r-- 1 root root 0 Feb 6 2096 test.txt When the time value was read in from disk, it wasn't sign extended so became a large, positive time value. This doesn't occur on 32bit systems since the time is stored as 32bits on disk and thus doesn't need to be extended in size. Cc: Christoph Hellwig Signed-off-by: Eryu Guan --- 276 | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 276.out | 5 ++++ group | 1 + 3 files changed, 80 insertions(+), 0 deletions(-) create mode 100755 276 create mode 100644 276.out diff --git a/276 b/276 new file mode 100755 index 0000000..7570977 --- /dev/null +++ b/276 @@ -0,0 +1,74 @@ +#! /bin/bash +# FS QA Test No. 276 +# +# Test time before epoch is correct when re-read in from disk. +# +#----------------------------------------------------------------------- +# Copyright (c) 2011 Red Hat, Inc. All Rights Reserved. +# +# 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. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# +# creator +owner=eguan@redhat.com + +seq=`basename $0` +echo "QA output created by $seq" + +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $testfile + _scratch_unmount +} + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here + +# Modify as appropriate. +_supported_fs generic +_supported_os Linux + +_require_scratch +_scratch_mkfs &>/dev/null +_scratch_mount + +testfile=$SCRATCH_MNT/testfile + +# set timestamp 1 second before epoch +touch -d @-1 $testfile +atime_1=`stat --format=%X $testfile` +mtime_1=`stat --format=%Y $testfile` +echo "atime after touch $atime_1" +echo "mtime after touch $mtime_1" + +# remount fs to force re-read in timestamp from disk +_scratch_remount + +atime_2=`stat --format=%X $testfile` +mtime_2=`stat --format=%Y $testfile` +echo "atime after remount $atime_2" +echo "mtime after remount $mtime_2" + +if [ "$atime_1" = "$atime_2" -a "$mtime_1" = "$mtime_2" ];then + status=0 +fi + +exit diff --git a/276.out b/276.out new file mode 100644 index 0000000..6e544ee --- /dev/null +++ b/276.out @@ -0,0 +1,5 @@ +QA output created by 276 +atime after touch -1 +mtime after touch -1 +atime after remount -1 +mtime after remount -1 diff --git a/group b/group index 08d999a..be4bd9b 100644 --- a/group +++ b/group @@ -389,3 +389,4 @@ deprecated 273 auto rw 274 auto rw 275 auto rw +276 auto quick -- 1.7.7.1 From jeff.liu@oracle.com Sat Nov 19 02:30:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJ8ULL2009302 for ; Sat, 19 Nov 2011 02:30:21 -0600 X-ASG-Debug-ID: 1321691419-62c400e70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rcsinet15.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 621BF1D1DCF7; Sat, 19 Nov 2011 00:30:19 -0800 (PST) Received: from rcsinet15.oracle.com (rcsinet15.oracle.com [148.87.113.117]) by cuda.sgi.com with ESMTP id pbbSOVdttseBVYfj; Sat, 19 Nov 2011 00:30:19 -0800 (PST) Received: from ucsinet21.oracle.com (ucsinet21.oracle.com [156.151.31.93]) by rcsinet15.oracle.com (Switch-3.4.4/Switch-3.4.4) with ESMTP id pAJ8Tusd020424 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 19 Nov 2011 08:29:56 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by ucsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id pAJ8Ts2u027003 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 19 Nov 2011 08:29:55 GMT Received: from abhmt106.oracle.com (abhmt106.oracle.com [141.146.116.58]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id pAJ8TmFM010059; Sat, 19 Nov 2011 02:29:48 -0600 Received: from [192.168.1.104] (/221.223.118.169) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sat, 19 Nov 2011 00:29:46 -0800 Message-ID: <4EC768F5.4050904@oracle.com> Date: Sat, 19 Nov 2011 16:29:41 +0800 From: Jeff Liu Reply-To: jeff.liu@oracle.com Organization: Oracle User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Thunderbird/3.1.11 MIME-Version: 1.0 To: xfs@oss.sgi.com CC: aelder@sgi.com, Christoph Hellwig , Dave Chinner , Chris Mason X-ASG-Orig-Subj: XFS SEEK_DATA/SEEK_HOLE support V1 Subject: XFS SEEK_DATA/SEEK_HOLE support V1 References: <4E887D7F.2010306@oracle.com> <20111114102444.GA27791@infradead.org> <4EC10DE8.6030607@oracle.com> <20111114125044.GA9802@infradead.org> In-Reply-To: <20111114125044.GA9802@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: ucsinet21.oracle.com [156.151.31.93] X-CT-RefId: str=0001.0A090207.4EC76905.003D,ss=1,re=0.000,fgs=0 X-Barracuda-Connect: rcsinet15.oracle.com[148.87.113.117] X-Barracuda-Start-Time: 1321691420 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80674 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello, Sorry for the delay! I have worked on another high priority task these days. So the below patch is the first try to add SEEK_DATA/SEEK_HOLE to XFS, I have tested it through seek_test.c from Sunil, looks all works to me. http://oss.oracle.com/~smushran/seek_data/seek_test.c Any feedback are welcome, thank you! Signed-off-by: Jie Liu --- fs/xfs/xfs_bmap.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_bmap.h | 1 + fs/xfs/xfs_file.c | 51 ++++++++++++++++++++++++++++++++- fs/xfs/xfs_iops.c | 64 +++++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_iops.h | 3 ++ 5 files changed, 199 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index c68baeb..04c3930 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c @@ -6133,3 +6133,84 @@ next_block: return error; } + + +int +xfs_seek_data_hole( + struct xfs_inode *ip, + loff_t *start, + u32 type) +{ + xfs_mount_t *mp = ip->i_mount; + xfs_fileoff_t seekoff = *start; + xfs_fileoff_t filelen; + xfs_extnum_t lastx; + xfs_ifork_t *ifp; + struct xfs_bmbt_irec got; + struct xfs_bmbt_irec prev; + u64 extoff; + u64 extlen; + int eof; + + if (xfs_get_extsz_hint(ip) || + ip->i_d.di_flags & (XFS_DIFLAG_PREALLOC | XFS_DIFLAG_APPEND)) { + filelen = XFS_MAXIOFFSET(mp); + } else { + filelen = ip->i_size; + } + + ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); + xfs_bmap_search_extents(ip, XFS_BB_TO_FSBT(mp, BTOBB(*start)), + XFS_DATA_FORK, &eof, &lastx, &got, &prev); + + if (type == SEEK_DATA) { + extoff = BBTOB(XFS_FSB_TO_BB(mp, got.br_startoff)); + extlen = BBTOB(XFS_FSB_TO_BB(mp, got.br_blockcount)); + + if (eof) { + if (seekoff < extoff + extlen) + *start = seekoff; + else { + /* + * There is no more data region past the + * supplied offset. + */ + return XFS_ERROR(ENXIO); + } + } + + *start = seekoff < extoff ? extoff : seekoff; + } else { + for (;;) { + extoff = BBTOB(XFS_FSB_TO_BB(mp, got.br_startoff)); + extlen = BBTOB(XFS_FSB_TO_BB(mp, got.br_blockcount)); + if (eof) { + /* + * There might be a hole at the end of the + * file, adjust to the file size. + */ + if (seekoff >= extoff) { + *start = min_t(xfs_fileoff_t, filelen, + (extoff + extlen)); + } + break; + } + + /* A hole found */ + if (seekoff < extoff) { + *start = seekoff; + break; + } + + /* Fetch the next extent */ + seekoff = extoff + extlen; + if (++lastx < ifp->if_bytes / sizeof(xfs_bmbt_rec_t)) + xfs_bmbt_get_all(xfs_iext_get_ext(ifp, lastx), + &got); + else + eof = 1; + } + } + + return 0; +} diff --git a/fs/xfs/xfs_bmap.h b/fs/xfs/xfs_bmap.h index 89ee672..964e29b 100644 --- a/fs/xfs/xfs_bmap.h +++ b/fs/xfs/xfs_bmap.h @@ -196,6 +196,7 @@ int xfs_bunmapi(struct xfs_trans *tp, struct xfs_inode *ip, int xfs_check_nostate_extents(struct xfs_ifork *ifp, xfs_extnum_t idx, xfs_extnum_t num); uint xfs_default_attroffset(struct xfs_inode *ip); +int xfs_seek_data_hole(struct xfs_inode *ip, loff_t *start, u32 type); #ifdef __KERNEL__ /* bmap to userspace formatter - copy to user & advance pointer */ diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 753ed9b..bf5471b 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -1141,8 +1141,57 @@ xfs_vm_page_mkwrite( return block_page_mkwrite(vma, vmf, xfs_get_blocks); } +STATIC loff_t +xfs_file_llseek( + struct file *file, + loff_t offset, + int origin) +{ + struct inode *inode = file->f_mapping->host; + int ret; + + if (origin != SEEK_DATA && origin != SEEK_HOLE) + return generic_file_llseek(file, offset, origin); + + mutex_lock(&inode->i_mutex); + switch (origin) { + case SEEK_DATA: + case SEEK_HOLE: + if (offset >= i_size_read(inode)) { + ret = -ENXIO; + goto error; + } + + ret = xfs_find_desired_extent(inode, &offset, origin); + if (ret) + goto error; + } + + if (offset < 0 && !(file->f_mode & FMODE_UNSIGNED_OFFSET)) { + ret = -EINVAL; + goto error; + } + + if (offset > inode->i_sb->s_maxbytes) { + ret = -EINVAL; + goto error; + } + + if (offset != file->f_pos) { + file->f_pos = offset; + file->f_version = 0; + } + + mutex_unlock(&inode->i_mutex); + return offset; + +error: + mutex_unlock(&inode->i_mutex); + return ret; +} + const struct file_operations xfs_file_operations = { - .llseek = generic_file_llseek, + .llseek = xfs_file_llseek, .read = do_sync_read, .write = do_sync_write, .aio_read = xfs_file_aio_read, diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 23ce927..482c1ff 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -1030,6 +1030,70 @@ xfs_vn_fiemap( return 0; } +int +xfs_find_desired_extent( + struct inode *inode, + loff_t *start, + u32 type) +{ + xfs_inode_t *ip = XFS_I(inode); + xfs_mount_t *mp = ip->i_mount; + struct xfs_ifork *ifp; + int lock; + int error; + + if (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS && + ip->i_d.di_format != XFS_DINODE_FMT_BTREE && + ip->i_d.di_format != XFS_DINODE_FMT_LOCAL) + return XFS_ERROR(EINVAL); + + xfs_ilock(ip, XFS_IOLOCK_SHARED); + + /* + * Flush the delay alloc blocks. Even after flushing the inode, + * there can still be delalloc blocks on the inode beyond EOF + * due to speculative preallocation. These are not removed until + * the release function is called or the inode is inactivated. + * Hence we cannot assert here that ip->i_delayed_blks == 0. + */ + if (ip->i_delayed_blks || ip->i_size > ip->i_d.di_size) { + error = xfs_flush_pages(ip, 0, -1, 0, FI_REMAPF); + if (error) + goto out_unlock_iolock; + } + + lock = xfs_ilock_map_shared(ip); + + if (XFS_FORCED_SHUTDOWN(mp)) { + error = EIO; + goto out_unlock_ilock; + } + + XFS_STATS_INC(xs_blk_mapr); + ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); + + ASSERT(ifp->if_ext_max == + XFS_IFORK_SIZE(ip, XFS_DATA_FORK) / (uint)sizeof(xfs_bmbt_rec_t)); + + if (!(ifp->if_flags & XFS_IFEXTENTS)) { + error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK); + if (error) + goto out_unlock_ilock; + } + + error = xfs_seek_data_hole(ip, start, type); + +out_unlock_ilock: + xfs_iunlock_map_shared(ip, lock); +out_unlock_iolock: + xfs_iunlock(ip, XFS_IOLOCK_SHARED); + + if (error) + return -error; + + return 0; +} + static const struct inode_operations xfs_inode_operations = { .get_acl = xfs_get_acl, .getattr = xfs_vn_getattr, diff --git a/fs/xfs/xfs_iops.h b/fs/xfs/xfs_iops.h index ef41c92..ea47abd 100644 --- a/fs/xfs/xfs_iops.h +++ b/fs/xfs/xfs_iops.h @@ -27,4 +27,7 @@ extern ssize_t xfs_vn_listxattr(struct dentry *, char *data, size_t size); extern void xfs_setup_inode(struct xfs_inode *); +extern int xfs_find_desired_extent(struct inode *inode, loff_t *start, + u32 type); + #endif /* __XFS_IOPS_H__ */ -- 1.7.4.1 From jeff.liu@oracle.com Sat Nov 19 02:35:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJ8ZKU5010270 for ; Sat, 19 Nov 2011 02:35:20 -0600 X-ASG-Debug-ID: 1321691718-774b03990000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rcsinet15.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 091A71D1DD24; Sat, 19 Nov 2011 00:35:18 -0800 (PST) Received: from rcsinet15.oracle.com (rcsinet15.oracle.com [148.87.113.117]) by cuda.sgi.com with ESMTP id IWUpHfGwHM7oxOpQ; Sat, 19 Nov 2011 00:35:18 -0800 (PST) Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by rcsinet15.oracle.com (Switch-3.4.4/Switch-3.4.4) with ESMTP id pAJ8Z4Ga024061 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 19 Nov 2011 08:35:05 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id pAJ8Z30Y009135 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 19 Nov 2011 08:35:03 GMT Received: from abhmt117.oracle.com (abhmt117.oracle.com [141.146.116.69]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id pAJ8Yv2W019380; Sat, 19 Nov 2011 02:34:57 -0600 Received: from [192.168.1.104] (/221.223.118.169) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sat, 19 Nov 2011 00:34:57 -0800 Message-ID: <4EC76A2A.3060709@oracle.com> Date: Sat, 19 Nov 2011 16:34:50 +0800 From: Jeff Liu Reply-To: jeff.liu@oracle.com Organization: Oracle User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Thunderbird/3.1.11 MIME-Version: 1.0 To: jeff.liu@oracle.com CC: xfs@oss.sgi.com, aelder@sgi.com, Christoph Hellwig , Dave Chinner , Chris Mason X-ASG-Orig-Subj: Re: XFS SEEK_DATA/SEEK_HOLE support V1 Subject: Re: XFS SEEK_DATA/SEEK_HOLE support V1 References: <4E887D7F.2010306@oracle.com> <20111114102444.GA27791@infradead.org> <4EC10DE8.6030607@oracle.com> <20111114125044.GA9802@infradead.org> <4EC768F5.4050904@oracle.com> In-Reply-To: <4EC768F5.4050904@oracle.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090202.4EC76A39.0085,ss=1,re=0.000,fgs=0 X-Barracuda-Connect: rcsinet15.oracle.com[148.87.113.117] X-Barracuda-Start-Time: 1321691719 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.98 X-Barracuda-Spam-Status: No, SCORE=0.98 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA550, BSF_SC0_SA_TO_FROM_ADDR_MATCH X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80674 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_SC0_SA_TO_FROM_ADDR_MATCH Sender Address Matches Recipient Address 2.50 BSF_SC0_SA550 Custom Rule SA550 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Sorry!! I forgot to write the subject beginning with "[PATCH]", will re-sent it again. Thanks, -Jeff On 11/19/2011 04:29 PM, Jeff Liu wrote: > Hello, > > Sorry for the delay! I have worked on another high priority task these days. > > So the below patch is the first try to add SEEK_DATA/SEEK_HOLE to XFS, I have tested it through seek_test.c from Sunil, looks all works to me. > http://oss.oracle.com/~smushran/seek_data/seek_test.c > > Any feedback are welcome, thank you! > > Signed-off-by: Jie Liu > > --- > fs/xfs/xfs_bmap.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > fs/xfs/xfs_bmap.h | 1 + > fs/xfs/xfs_file.c | 51 ++++++++++++++++++++++++++++++++- > fs/xfs/xfs_iops.c | 64 +++++++++++++++++++++++++++++++++++++++++ > fs/xfs/xfs_iops.h | 3 ++ > 5 files changed, 199 insertions(+), 1 deletions(-) > > diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c > index c68baeb..04c3930 100644 > --- a/fs/xfs/xfs_bmap.c > +++ b/fs/xfs/xfs_bmap.c > @@ -6133,3 +6133,84 @@ next_block: > > return error; > } > + > + > +int > +xfs_seek_data_hole( > + struct xfs_inode *ip, > + loff_t *start, > + u32 type) > +{ > + xfs_mount_t *mp = ip->i_mount; > + xfs_fileoff_t seekoff = *start; > + xfs_fileoff_t filelen; > + xfs_extnum_t lastx; > + xfs_ifork_t *ifp; > + struct xfs_bmbt_irec got; > + struct xfs_bmbt_irec prev; > + u64 extoff; > + u64 extlen; > + int eof; > + > + if (xfs_get_extsz_hint(ip) || > + ip->i_d.di_flags & (XFS_DIFLAG_PREALLOC | XFS_DIFLAG_APPEND)) { > + filelen = XFS_MAXIOFFSET(mp); > + } else { > + filelen = ip->i_size; > + } > + > + ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); > + xfs_bmap_search_extents(ip, XFS_BB_TO_FSBT(mp, BTOBB(*start)), > + XFS_DATA_FORK, &eof, &lastx, &got, &prev); > + > + if (type == SEEK_DATA) { > + extoff = BBTOB(XFS_FSB_TO_BB(mp, got.br_startoff)); > + extlen = BBTOB(XFS_FSB_TO_BB(mp, got.br_blockcount)); > + > + if (eof) { > + if (seekoff < extoff + extlen) > + *start = seekoff; > + else { > + /* > + * There is no more data region past the > + * supplied offset. > + */ > + return XFS_ERROR(ENXIO); > + } > + } > + > + *start = seekoff < extoff ? extoff : seekoff; > + } else { > + for (;;) { > + extoff = BBTOB(XFS_FSB_TO_BB(mp, got.br_startoff)); > + extlen = BBTOB(XFS_FSB_TO_BB(mp, got.br_blockcount)); > + if (eof) { > + /* > + * There might be a hole at the end of the > + * file, adjust to the file size. > + */ > + if (seekoff >= extoff) { > + *start = min_t(xfs_fileoff_t, filelen, > + (extoff + extlen)); > + } > + break; > + } > + > + /* A hole found */ > + if (seekoff < extoff) { > + *start = seekoff; > + break; > + } > + > + /* Fetch the next extent */ > + seekoff = extoff + extlen; > + if (++lastx < ifp->if_bytes / sizeof(xfs_bmbt_rec_t)) > + xfs_bmbt_get_all(xfs_iext_get_ext(ifp, lastx), > + &got); > + else > + eof = 1; > + } > + } > + > + return 0; > +} > diff --git a/fs/xfs/xfs_bmap.h b/fs/xfs/xfs_bmap.h > index 89ee672..964e29b 100644 > --- a/fs/xfs/xfs_bmap.h > +++ b/fs/xfs/xfs_bmap.h > @@ -196,6 +196,7 @@ int xfs_bunmapi(struct xfs_trans *tp, struct xfs_inode *ip, > int xfs_check_nostate_extents(struct xfs_ifork *ifp, xfs_extnum_t idx, > xfs_extnum_t num); > uint xfs_default_attroffset(struct xfs_inode *ip); > +int xfs_seek_data_hole(struct xfs_inode *ip, loff_t *start, u32 type); > > #ifdef __KERNEL__ > /* bmap to userspace formatter - copy to user & advance pointer */ > diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c > index 753ed9b..bf5471b 100644 > --- a/fs/xfs/xfs_file.c > +++ b/fs/xfs/xfs_file.c > @@ -1141,8 +1141,57 @@ xfs_vm_page_mkwrite( > return block_page_mkwrite(vma, vmf, xfs_get_blocks); > } > > +STATIC loff_t > +xfs_file_llseek( > + struct file *file, > + loff_t offset, > + int origin) > +{ > + struct inode *inode = file->f_mapping->host; > + int ret; > + > + if (origin != SEEK_DATA && origin != SEEK_HOLE) > + return generic_file_llseek(file, offset, origin); > + > + mutex_lock(&inode->i_mutex); > + switch (origin) { > + case SEEK_DATA: > + case SEEK_HOLE: > + if (offset >= i_size_read(inode)) { > + ret = -ENXIO; > + goto error; > + } > + > + ret = xfs_find_desired_extent(inode, &offset, origin); > + if (ret) > + goto error; > + } > + > + if (offset < 0 && !(file->f_mode & FMODE_UNSIGNED_OFFSET)) { > + ret = -EINVAL; > + goto error; > + } > + > + if (offset > inode->i_sb->s_maxbytes) { > + ret = -EINVAL; > + goto error; > + } > + > + if (offset != file->f_pos) { > + file->f_pos = offset; > + file->f_version = 0; > + } > + > + mutex_unlock(&inode->i_mutex); > + return offset; > + > +error: > + mutex_unlock(&inode->i_mutex); > + return ret; > +} > + > const struct file_operations xfs_file_operations = { > - .llseek = generic_file_llseek, > + .llseek = xfs_file_llseek, > .read = do_sync_read, > .write = do_sync_write, > .aio_read = xfs_file_aio_read, > diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c > index 23ce927..482c1ff 100644 > --- a/fs/xfs/xfs_iops.c > +++ b/fs/xfs/xfs_iops.c > @@ -1030,6 +1030,70 @@ xfs_vn_fiemap( > return 0; > } > > +int > +xfs_find_desired_extent( > + struct inode *inode, > + loff_t *start, > + u32 type) > +{ > + xfs_inode_t *ip = XFS_I(inode); > + xfs_mount_t *mp = ip->i_mount; > + struct xfs_ifork *ifp; > + int lock; > + int error; > + > + if (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS && > + ip->i_d.di_format != XFS_DINODE_FMT_BTREE && > + ip->i_d.di_format != XFS_DINODE_FMT_LOCAL) > + return XFS_ERROR(EINVAL); > + > + xfs_ilock(ip, XFS_IOLOCK_SHARED); > + > + /* > + * Flush the delay alloc blocks. Even after flushing the inode, > + * there can still be delalloc blocks on the inode beyond EOF > + * due to speculative preallocation. These are not removed until > + * the release function is called or the inode is inactivated. > + * Hence we cannot assert here that ip->i_delayed_blks == 0. > + */ > + if (ip->i_delayed_blks || ip->i_size > ip->i_d.di_size) { > + error = xfs_flush_pages(ip, 0, -1, 0, FI_REMAPF); > + if (error) > + goto out_unlock_iolock; > + } > + > + lock = xfs_ilock_map_shared(ip); > + > + if (XFS_FORCED_SHUTDOWN(mp)) { > + error = EIO; > + goto out_unlock_ilock; > + } > + > + XFS_STATS_INC(xs_blk_mapr); > + ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); > + > + ASSERT(ifp->if_ext_max == > + XFS_IFORK_SIZE(ip, XFS_DATA_FORK) / (uint)sizeof(xfs_bmbt_rec_t)); > + > + if (!(ifp->if_flags & XFS_IFEXTENTS)) { > + error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK); > + if (error) > + goto out_unlock_ilock; > + } > + > + error = xfs_seek_data_hole(ip, start, type); > + > +out_unlock_ilock: > + xfs_iunlock_map_shared(ip, lock); > +out_unlock_iolock: > + xfs_iunlock(ip, XFS_IOLOCK_SHARED); > + > + if (error) > + return -error; > + > + return 0; > +} > + > static const struct inode_operations xfs_inode_operations = { > .get_acl = xfs_get_acl, > .getattr = xfs_vn_getattr, > diff --git a/fs/xfs/xfs_iops.h b/fs/xfs/xfs_iops.h > index ef41c92..ea47abd 100644 > --- a/fs/xfs/xfs_iops.h > +++ b/fs/xfs/xfs_iops.h > @@ -27,4 +27,7 @@ extern ssize_t xfs_vn_listxattr(struct dentry *, char *data, size_t size); > > extern void xfs_setup_inode(struct xfs_inode *); > > +extern int xfs_find_desired_extent(struct inode *inode, loff_t *start, > + u32 type); > + > #endif /* __XFS_IOPS_H__ */ From jeff.liu@oracle.com Sat Nov 19 02:37:35 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJ8bZmx010423 for ; Sat, 19 Nov 2011 02:37:35 -0600 X-ASG-Debug-ID: 1321691853-774f038b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rcsinet15.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D4F8B1D1DD47; Sat, 19 Nov 2011 00:37:33 -0800 (PST) Received: from rcsinet15.oracle.com (rcsinet15.oracle.com [148.87.113.117]) by cuda.sgi.com with ESMTP id 6CoDUtGqBEBLtBat; Sat, 19 Nov 2011 00:37:33 -0800 (PST) Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by rcsinet15.oracle.com (Switch-3.4.4/Switch-3.4.4) with ESMTP id pAJ8bO35025503 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 19 Nov 2011 08:37:25 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id pAJ8bNm7024874 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 19 Nov 2011 08:37:24 GMT Received: from abhmt119.oracle.com (abhmt119.oracle.com [141.146.116.71]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id pAJ8bIxB024047; Sat, 19 Nov 2011 02:37:18 -0600 Received: from [192.168.1.104] (/221.223.118.169) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sat, 19 Nov 2011 00:37:17 -0800 Message-ID: <4EC76AB9.9030604@oracle.com> Date: Sat, 19 Nov 2011 16:37:13 +0800 From: Jeff Liu Reply-To: jeff.liu@oracle.com Organization: Oracle User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Thunderbird/3.1.11 MIME-Version: 1.0 To: xfs@oss.sgi.com CC: aelder@sgi.com, Christoph Hellwig , Dave Chinner , Chris Mason X-ASG-Orig-Subj: [PATCH] Introduce SEEK_DATA/SEEK_HOLE support to XFS V1 Subject: [PATCH] Introduce SEEK_DATA/SEEK_HOLE support to XFS V1 References: <4E887D7F.2010306@oracle.com> <20111114102444.GA27791@infradead.org> <4EC10DE8.6030607@oracle.com> <20111114125044.GA9802@infradead.org> <4EC768F5.4050904@oracle.com> In-Reply-To: <4EC768F5.4050904@oracle.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-CT-RefId: str=0001.0A090204.4EC76AC5.0082,ss=1,re=0.000,fgs=0 X-Barracuda-Connect: rcsinet15.oracle.com[148.87.113.117] X-Barracuda-Start-Time: 1321691853 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80674 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Jie Liu --- fs/xfs/xfs_bmap.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_bmap.h | 1 + fs/xfs/xfs_file.c | 51 ++++++++++++++++++++++++++++++++- fs/xfs/xfs_iops.c | 64 +++++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_iops.h | 3 ++ 5 files changed, 199 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index c68baeb..04c3930 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c @@ -6133,3 +6133,84 @@ next_block: return error; } + + +int +xfs_seek_data_hole( + struct xfs_inode *ip, + loff_t *start, + u32 type) +{ + xfs_mount_t *mp = ip->i_mount; + xfs_fileoff_t seekoff = *start; + xfs_fileoff_t filelen; + xfs_extnum_t lastx; + xfs_ifork_t *ifp; + struct xfs_bmbt_irec got; + struct xfs_bmbt_irec prev; + u64 extoff; + u64 extlen; + int eof; + + if (xfs_get_extsz_hint(ip) || + ip->i_d.di_flags & (XFS_DIFLAG_PREALLOC | XFS_DIFLAG_APPEND)) { + filelen = XFS_MAXIOFFSET(mp); + } else { + filelen = ip->i_size; + } + + ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); + xfs_bmap_search_extents(ip, XFS_BB_TO_FSBT(mp, BTOBB(*start)), + XFS_DATA_FORK, &eof, &lastx, &got, &prev); + + if (type == SEEK_DATA) { + extoff = BBTOB(XFS_FSB_TO_BB(mp, got.br_startoff)); + extlen = BBTOB(XFS_FSB_TO_BB(mp, got.br_blockcount)); + + if (eof) { + if (seekoff < extoff + extlen) + *start = seekoff; + else { + /* + * There is no more data region past the + * supplied offset. + */ + return XFS_ERROR(ENXIO); + } + } + + *start = seekoff < extoff ? extoff : seekoff; + } else { + for (;;) { + extoff = BBTOB(XFS_FSB_TO_BB(mp, got.br_startoff)); + extlen = BBTOB(XFS_FSB_TO_BB(mp, got.br_blockcount)); + if (eof) { + /* + * There might be a hole at the end of the + * file, adjust to the file size. + */ + if (seekoff >= extoff) { + *start = min_t(xfs_fileoff_t, filelen, + (extoff + extlen)); + } + break; + } + + /* A hole found */ + if (seekoff < extoff) { + *start = seekoff; + break; + } + + /* Fetch the next extent */ + seekoff = extoff + extlen; + if (++lastx < ifp->if_bytes / sizeof(xfs_bmbt_rec_t)) + xfs_bmbt_get_all(xfs_iext_get_ext(ifp, lastx), + &got); + else + eof = 1; + } + } + + return 0; +} diff --git a/fs/xfs/xfs_bmap.h b/fs/xfs/xfs_bmap.h index 89ee672..964e29b 100644 --- a/fs/xfs/xfs_bmap.h +++ b/fs/xfs/xfs_bmap.h @@ -196,6 +196,7 @@ int xfs_bunmapi(struct xfs_trans *tp, struct xfs_inode *ip, int xfs_check_nostate_extents(struct xfs_ifork *ifp, xfs_extnum_t idx, xfs_extnum_t num); uint xfs_default_attroffset(struct xfs_inode *ip); +int xfs_seek_data_hole(struct xfs_inode *ip, loff_t *start, u32 type); #ifdef __KERNEL__ /* bmap to userspace formatter - copy to user & advance pointer */ diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 753ed9b..bf5471b 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -1141,8 +1141,57 @@ xfs_vm_page_mkwrite( return block_page_mkwrite(vma, vmf, xfs_get_blocks); } +STATIC loff_t +xfs_file_llseek( + struct file *file, + loff_t offset, + int origin) +{ + struct inode *inode = file->f_mapping->host; + int ret; + + if (origin != SEEK_DATA && origin != SEEK_HOLE) + return generic_file_llseek(file, offset, origin); + + mutex_lock(&inode->i_mutex); + switch (origin) { + case SEEK_DATA: + case SEEK_HOLE: + if (offset >= i_size_read(inode)) { + ret = -ENXIO; + goto error; + } + + ret = xfs_find_desired_extent(inode, &offset, origin); + if (ret) + goto error; + } + + if (offset < 0 && !(file->f_mode & FMODE_UNSIGNED_OFFSET)) { + ret = -EINVAL; + goto error; + } + + if (offset > inode->i_sb->s_maxbytes) { + ret = -EINVAL; + goto error; + } + + if (offset != file->f_pos) { + file->f_pos = offset; + file->f_version = 0; + } + + mutex_unlock(&inode->i_mutex); + return offset; + +error: + mutex_unlock(&inode->i_mutex); + return ret; +} + const struct file_operations xfs_file_operations = { - .llseek = generic_file_llseek, + .llseek = xfs_file_llseek, .read = do_sync_read, .write = do_sync_write, .aio_read = xfs_file_aio_read, diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 23ce927..482c1ff 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -1030,6 +1030,70 @@ xfs_vn_fiemap( return 0; } +int +xfs_find_desired_extent( + struct inode *inode, + loff_t *start, + u32 type) +{ + xfs_inode_t *ip = XFS_I(inode); + xfs_mount_t *mp = ip->i_mount; + struct xfs_ifork *ifp; + int lock; + int error; + + if (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS && + ip->i_d.di_format != XFS_DINODE_FMT_BTREE && + ip->i_d.di_format != XFS_DINODE_FMT_LOCAL) + return XFS_ERROR(EINVAL); + + xfs_ilock(ip, XFS_IOLOCK_SHARED); + + /* + * Flush the delay alloc blocks. Even after flushing the inode, + * there can still be delalloc blocks on the inode beyond EOF + * due to speculative preallocation. These are not removed until + * the release function is called or the inode is inactivated. + * Hence we cannot assert here that ip->i_delayed_blks == 0. + */ + if (ip->i_delayed_blks || ip->i_size > ip->i_d.di_size) { + error = xfs_flush_pages(ip, 0, -1, 0, FI_REMAPF); + if (error) + goto out_unlock_iolock; + } + + lock = xfs_ilock_map_shared(ip); + + if (XFS_FORCED_SHUTDOWN(mp)) { + error = EIO; + goto out_unlock_ilock; + } + + XFS_STATS_INC(xs_blk_mapr); + ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); + + ASSERT(ifp->if_ext_max == + XFS_IFORK_SIZE(ip, XFS_DATA_FORK) / (uint)sizeof(xfs_bmbt_rec_t)); + + if (!(ifp->if_flags & XFS_IFEXTENTS)) { + error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK); + if (error) + goto out_unlock_ilock; + } + + error = xfs_seek_data_hole(ip, start, type); + +out_unlock_ilock: + xfs_iunlock_map_shared(ip, lock); +out_unlock_iolock: + xfs_iunlock(ip, XFS_IOLOCK_SHARED); + + if (error) + return -error; + + return 0; +} + static const struct inode_operations xfs_inode_operations = { .get_acl = xfs_get_acl, .getattr = xfs_vn_getattr, diff --git a/fs/xfs/xfs_iops.h b/fs/xfs/xfs_iops.h index ef41c92..ea47abd 100644 --- a/fs/xfs/xfs_iops.h +++ b/fs/xfs/xfs_iops.h @@ -27,4 +27,7 @@ extern ssize_t xfs_vn_listxattr(struct dentry *, char *data, size_t size); extern void xfs_setup_inode(struct xfs_inode *); +extern int xfs_find_desired_extent(struct inode *inode, loff_t *start, + u32 type); + #endif /* __XFS_IOPS_H__ */ -- 1.7.4.1 From guaneryu@gmail.com Sat Nov 19 07:56:35 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJDuY6R044228 for ; Sat, 19 Nov 2011 07:56:35 -0600 X-ASG-Debug-ID: 1321710992-10b8000b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ww0-f51.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A965F1D1E50A for ; Sat, 19 Nov 2011 05:56:32 -0800 (PST) Received: from mail-ww0-f51.google.com (mail-ww0-f51.google.com [74.125.82.51]) by cuda.sgi.com with ESMTP id kAiAG26QHiKfjYBa for ; Sat, 19 Nov 2011 05:56:32 -0800 (PST) Received: by wwe6 with SMTP id 6so5129877wwe.32 for ; Sat, 19 Nov 2011 05:56:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:reply-to:in-reply-to:references:from:date:message-id :subject:to:cc:content-type:content-transfer-encoding; bh=CZmtTSz4RATMhkgeZBSH//x5Bj1wNoTnxC/rqDn8ODI=; b=j17gCHSo6rIld06YM1ItAAc+kOTEiOL4XdkwcU/476GVA84aXPZYR4Ptn8we/J5a8r Sg8h1khcAjdIaK+HAp9YL9iEhCAyxCLgEIPBcy3FAUOmHKEu+Vs1HBQBjyOV1w9441zL sP/p3K1v/otzGbTAoGepOajg/kZekxtbaLPmk= Received: by 10.180.72.146 with SMTP id d18mr7484728wiv.12.1321710991192; Sat, 19 Nov 2011 05:56:31 -0800 (PST) MIME-Version: 1.0 Received: by 10.216.163.211 with HTTP; Sat, 19 Nov 2011 05:56:10 -0800 (PST) Reply-To: guaneryu@gmail.com In-Reply-To: <1321691055-1927-1-git-send-email-eguan@redhat.com> References: <1321691055-1927-1-git-send-email-eguan@redhat.com> From: Eryu Guan Date: Sat, 19 Nov 2011 21:56:10 +0800 Message-ID: X-ASG-Orig-Subj: Re: [PATCH] xfstests: 276 test time before epoch is correct when re-read in from disk Subject: Re: [PATCH] xfstests: 276 test time before epoch is correct when re-read in from disk To: Eryu Guan Cc: xfs@oss.sgi.com, Christoph Hellwig Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-ww0-f51.google.com[74.125.82.51] X-Barracuda-Start-Time: 1321710993 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80696 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Nov 19, 2011 at 4:24 PM, Eryu Guan wrote: > This is a regression test case for commit > > 4d7bf11d649c72621ca31b8ea12b9c94af380e63 > ext2/3/4: fix file date underflow on ext2 3 filesystems on 64 bit systems xfstests 258 tests exactly the same, sorry for the noise. Eryu Guan > > On 64bit systems, unpatched extX doesn't sign-extend time values read > in from disk. This results in times which should be before the epoch > jumping forward in time. =A0For example: > > At creation, inode information still in memory. > [root@cluster1 ~]# touch -t 196001010101 test.txt > [root@cluster1 ~]# ls -l test.txt > -rw-r--r-- 1 root root 0 Jan =A01 =A01960 test.txt > > After remount/reboot to force the values to be read in from disk: > [root@cluster1 ~]# ls -l test.txt > -rw-r--r-- 1 root root 0 Feb =A06 =A02096 test.txt > > When the time value was read in from disk, it wasn't sign extended so > became a large, positive time value. =A0This doesn't occur on 32bit > systems since the time is stored as 32bits on disk and thus doesn't > need to be extended in size. > > Cc: Christoph Hellwig > Signed-off-by: Eryu Guan > --- > =A0276 =A0 =A0 | =A0 74 +++++++++++++++++++++++++++++++++++++++++++++++++= ++++++++++++++ > =A0276.out | =A0 =A05 ++++ > =A0group =A0 | =A0 =A01 + > =A03 files changed, 80 insertions(+), 0 deletions(-) > =A0create mode 100755 276 > =A0create mode 100644 276.out > > diff --git a/276 b/276 > new file mode 100755 > index 0000000..7570977 > --- /dev/null > +++ b/276 > @@ -0,0 +1,74 @@ > +#! /bin/bash > +# FS QA Test No. 276 > +# > +# Test time before epoch is correct when re-read in from disk. > +# > +#----------------------------------------------------------------------- > +# Copyright (c) 2011 Red Hat, Inc. =A0All Rights Reserved. > +# > +# 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. > +# > +# This program is distributed in the hope that it would be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. =A0See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program; if not, write the Free Software Foundation, > +# Inc., =A051 Franklin St, Fifth Floor, Boston, MA =A002110-1301 =A0USA > +#----------------------------------------------------------------------- > +# > +# creator > +owner=3Deguan@redhat.com > + > +seq=3D`basename $0` > +echo "QA output created by $seq" > + > +status=3D1 =A0 =A0 =A0 # failure is the default! > +trap "_cleanup; exit \$status" 0 1 2 3 15 > + > +_cleanup() > +{ > + =A0 =A0 =A0 cd / > + =A0 =A0 =A0 rm -f $testfile > + =A0 =A0 =A0 _scratch_unmount > +} > + > +# get standard environment, filters and checks > +. ./common.rc > +. ./common.filter > + > +# real QA test starts here > + > +# Modify as appropriate. > +_supported_fs generic > +_supported_os Linux > + > +_require_scratch > +_scratch_mkfs &>/dev/null > +_scratch_mount > + > +testfile=3D$SCRATCH_MNT/testfile > + > +# set timestamp 1 second before epoch > +touch -d @-1 $testfile > +atime_1=3D`stat --format=3D%X $testfile` > +mtime_1=3D`stat --format=3D%Y $testfile` > +echo "atime after touch $atime_1" > +echo "mtime after touch $mtime_1" > + > +# remount fs to force re-read in timestamp from disk > +_scratch_remount > + > +atime_2=3D`stat --format=3D%X $testfile` > +mtime_2=3D`stat --format=3D%Y $testfile` > +echo "atime after remount $atime_2" > +echo "mtime after remount $mtime_2" > + > +if [ "$atime_1" =3D "$atime_2" -a "$mtime_1" =3D "$mtime_2" ];then > + =A0 =A0 =A0 status=3D0 > +fi > + > +exit > diff --git a/276.out b/276.out > new file mode 100644 > index 0000000..6e544ee > --- /dev/null > +++ b/276.out > @@ -0,0 +1,5 @@ > +QA output created by 276 > +atime after touch -1 > +mtime after touch -1 > +atime after remount -1 > +mtime after remount -1 > diff --git a/group b/group > index 08d999a..be4bd9b 100644 > --- a/group > +++ b/group > @@ -389,3 +389,4 @@ deprecated > =A0273 auto rw > =A0274 auto rw > =A0275 auto rw > +276 auto quick > -- > 1.7.7.1 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 11:44:35 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_35 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJHiYlX068767 for ; Sat, 19 Nov 2011 11:44:35 -0600 X-ASG-Debug-ID: 1321724670-1b9f00cb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E319C1DA1312 for ; Sat, 19 Nov 2011 09:44:30 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 275VyK0hEkfbbcmK for ; Sat, 19 Nov 2011 09:44:30 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRoxq-0008PO-B3 for xfs@oss.sgi.com; Sat, 19 Nov 2011 17:44:30 +0000 Date: Sat, 19 Nov 2011 12:44:30 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH v2] xfs: fix attr2 vs large data fork assert Subject: [PATCH v2] xfs: fix attr2 vs large data fork assert Message-ID: <20111119174430.GA32320@infradead.org> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201426.498870090@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111115201426.498870090@bombadil.infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321724670 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80709 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean With Dmitry fsstress updates I've seen very reproducible crashes in xfs_attr_shortform_remove because xfs_attr_shortform_bytesfit claims that the attributes would not fit inline into the inode after removing an attribute. It turns out that we were operating on an inode with lots of delalloc extents, and thus an if_bytes values for the data fork that is larger than biggest possible on-disk storage for it which utterly confuses the code near the end of xfs_attr_shortform_bytesfit. Fix this by always allowing the current attribute fork, like we already do for the attr1 format, given that delalloc conversion will take care for moving either the data or attribute area out of line if it doesn't fit at that point - or making the point moot by merging extents at this point. Also document the function better, and clean up some lose bits. Reviewed-by: Dave Chinner Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_attr_leaf.c | 64 +++++++++++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 25 deletions(-) Index: linux-2.6/fs/xfs/xfs_attr_leaf.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_attr_leaf.c 2011-11-17 08:29:53.874168153 +0100 +++ linux-2.6/fs/xfs/xfs_attr_leaf.c 2011-11-17 08:33:24.790833563 +0100 @@ -110,6 +110,7 @@ xfs_attr_namesp_match(int arg_flags, int /* * Query whether the requested number of additional bytes of extended * attribute space will be able to fit inline. + * * Returns zero if not, else the di_forkoff fork offset to be used in the * literal area for attribute data once the new bytes have been added. * @@ -122,7 +123,7 @@ xfs_attr_shortform_bytesfit(xfs_inode_t int offset; int minforkoff; /* lower limit on valid forkoff locations */ int maxforkoff; /* upper limit on valid forkoff locations */ - int dsize; + int dsize; xfs_mount_t *mp = dp->i_mount; offset = (XFS_LITINO(mp) - bytes) >> 3; /* rounded down */ @@ -136,47 +137,60 @@ xfs_attr_shortform_bytesfit(xfs_inode_t return (offset >= minforkoff) ? minforkoff : 0; } - if (!(mp->m_flags & XFS_MOUNT_ATTR2)) { - if (bytes <= XFS_IFORK_ASIZE(dp)) - return dp->i_d.di_forkoff; + /* + * If the requested numbers of bytes is smaller or equal to the + * current attribute fork size we can always proceed. + * + * Note that if_bytes in the data fork might actually be larger than + * the current data fork size is due to delalloc extents. In that + * case either the extent count will go down when they are converted + * to real extents, or the delalloc conversion will take care of the + * literal area rebalancing. + */ + if (bytes <= XFS_IFORK_ASIZE(dp)) + return dp->i_d.di_forkoff; + + /* + * For attr2 we can try to move the forkoff if there is space in the + * literal area, but for the old format we are done if there is no + * space in the fixes attribute fork. + */ + if (!(mp->m_flags & XFS_MOUNT_ATTR2)) return 0; - } dsize = dp->i_df.if_bytes; - + switch (dp->i_d.di_format) { case XFS_DINODE_FMT_EXTENTS: - /* + /* * If there is no attr fork and the data fork is extents, - * determine if creating the default attr fork will result - * in the extents form migrating to btree. If so, the - * minimum offset only needs to be the space required for + * determine if creating the default attr fork will result + * in the extents form migrating to btree. If so, the + * minimum offset only needs to be the space required for * the btree root. - */ + */ if (!dp->i_d.di_forkoff && dp->i_df.if_bytes > xfs_default_attroffset(dp)) dsize = XFS_BMDR_SPACE_CALC(MINDBTPTRS); break; - case XFS_DINODE_FMT_BTREE: /* - * If have data btree then keep forkoff if we have one, - * otherwise we are adding a new attr, so then we set - * minforkoff to where the btree root can finish so we have + * If we have a data btree then keep forkoff if we have one, + * otherwise we are adding a new attr, so then we set + * minforkoff to where the btree root can finish so we have * plenty of room for attrs */ if (dp->i_d.di_forkoff) { - if (offset < dp->i_d.di_forkoff) + if (offset < dp->i_d.di_forkoff) return 0; - else - return dp->i_d.di_forkoff; - } else - dsize = XFS_BMAP_BROOT_SPACE(dp->i_df.if_broot); + return dp->i_d.di_forkoff; + } + dsize = XFS_BMAP_BROOT_SPACE(dp->i_df.if_broot); break; } - - /* - * A data fork btree root must have space for at least + + /* + * A data fork btree root must have space for at least * MINDBTPTRS key/ptr pairs if the data fork is small or empty. */ minforkoff = MAX(dsize, XFS_BMDR_SPACE_CALC(MINDBTPTRS)); @@ -186,10 +200,10 @@ xfs_attr_shortform_bytesfit(xfs_inode_t maxforkoff = XFS_LITINO(mp) - XFS_BMDR_SPACE_CALC(MINABTPTRS); maxforkoff = maxforkoff >> 3; /* rounded down */ - if (offset >= minforkoff && offset < maxforkoff) - return offset; if (offset >= maxforkoff) return maxforkoff; + if (offset >= minforkoff) + return offset; return 0; } From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 11:51:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJHp4VM069715 for ; Sat, 19 Nov 2011 11:51:04 -0600 X-ASG-Debug-ID: 1321725062-6eed017a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6AC911D1ECE4; Sat, 19 Nov 2011 09:51:03 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id j5IXDfMcklhGntpA; Sat, 19 Nov 2011 09:51:03 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRp4A-0001hV-6q; Sat, 19 Nov 2011 17:51:02 +0000 Date: Sat, 19 Nov 2011 12:51:02 -0500 From: Christoph Hellwig To: Ben Myers Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [ANNOUNCE] xfsprogs v3.1.7 Subject: Re: [ANNOUNCE] xfsprogs v3.1.7 Message-ID: <20111119175102.GA3334@infradead.org> References: <20111117233139.GL29840@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111117233139.GL29840@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321725063 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0009 1.0000 -2.0149 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.91 X-Barracuda-Spam-Status: No, SCORE=-1.91 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 17, 2011 at 05:31:39PM -0600, Ben Myers wrote: > Version 3.1.7 of xfsprogs has been released. Can we please avoid totally uncoordinated and rushed release in the future? You personally had quetions about the lost+found nlink issues that still haven't been resolved, and there's tons of repair fixes that should have made it int othe next release. If we only have a tiny debian specific fixup we should have a Debian-specific branch with just that one liner. Real releases with actual changes need QA and coordination. From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 12:15:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJIFiC7072043 for ; Sat, 19 Nov 2011 12:15:44 -0600 X-ASG-Debug-ID: 1321726543-4a60001f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CBF1256F15A for ; Sat, 19 Nov 2011 10:15:43 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id LS7MSw7zqptc7EuC for ; Sat, 19 Nov 2011 10:15:43 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRpS3-0006an-7E; Sat, 19 Nov 2011 18:15:43 +0000 Message-Id: <20111119181336.964593075@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Sat, 19 Nov 2011 13:13:36 -0500 From: Christoph Hellwig To: stable@vger.kernel.org Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/9] XFS update for 3.0-stable Subject: [PATCH 0/9] XFS update for 3.0-stable X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321726543 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0009 1.0000 -2.0153 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is the series of XFS fixes from current mainline which is important enough for 3.0-stable. All but the first three would also be needed for 3.1-stable, but given the limited resources I plan to concentrate on 3.0-stable. If anyone wants to take care for 3.1 by building a kernel with the remaining patches and run QA on them you are more welcome to help out with that tree. Note that while the description of xfs: don't serialise direct IO reads on page cache checks doesn't mention that is is a regression fix we later noticed that a large part of the speedups wasn't in fact new, but fixed a performance regression introduced in Linux 2.6.38 with commit: xfs: introduce xfs_rw_lock() helpers for locking the inode From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 12:15:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJIFjDI072051 for ; Sat, 19 Nov 2011 12:15:45 -0600 X-ASG-Debug-ID: 1321726543-4a6300220000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6E38856F15A; Sat, 19 Nov 2011 10:15:44 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id nuik47FvtJ4vDqVa; Sat, 19 Nov 2011 10:15:44 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRpS3-0006by-LL; Sat, 19 Nov 2011 18:15:43 +0000 Message-Id: <20111119181543.605305176@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Sat, 19 Nov 2011 13:13:38 -0500 From: Christoph Hellwig To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Alex Elder X-ASG-Orig-Subj: [PATCH 2/9] [PATCH 2/9] xfs: fix xfs_mark_inode_dirty during umount Subject: [PATCH 2/9] [PATCH 2/9] xfs: fix xfs_mark_inode_dirty during umount References: <20111119181336.964593075@bombadil.infradead.org> Content-Disposition: inline; filename=0002-xfs-fix-xfs_mark_inode_dirty-during-umount.patch X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321726544 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean During umount we do not add a dirty inode to the lru and wait for it to become clean first, but force writeback of data and metadata with I_WILL_FREE set. Currently there is no way for XFS to detect that the inode has been redirtied for metadata operations, as we skip the mark_inode_dirty call during teardown. Fix this by setting i_update_core nanually in that case, so that the inode gets flushed during inode reclaim. Alternatively we could enable calling mark_inode_dirty for inodes in I_WILL_FREE state, and let the VFS dirty tracking handle this. I decided against this as we will get better I/O patterns from reclaim compared to the synchronous writeout in write_inode_now, and always marking the inode dirty in some way from xfs_mark_inode_dirty is a better safetly net in either case. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Alex Elder (cherry picked from commit da6742a5a4cc844a9982fdd936ddb537c0747856) Signed-off-by: Alex Elder --- fs/xfs/linux-2.6/xfs_iops.c | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c index d44d92c..a9b3e1e 100644 --- a/fs/xfs/linux-2.6/xfs_iops.c +++ b/fs/xfs/linux-2.6/xfs_iops.c @@ -69,9 +69,8 @@ xfs_synchronize_times( } /* - * If the linux inode is valid, mark it dirty. - * Used when committing a dirty inode into a transaction so that - * the inode will get written back by the linux code + * If the linux inode is valid, mark it dirty, else mark the dirty state + * in the XFS inode to make sure we pick it up when reclaiming the inode. */ void xfs_mark_inode_dirty_sync( @@ -81,6 +80,10 @@ xfs_mark_inode_dirty_sync( if (!(inode->i_state & (I_WILL_FREE|I_FREEING))) mark_inode_dirty_sync(inode); + else { + barrier(); + ip->i_update_core = 1; + } } void @@ -91,6 +94,11 @@ xfs_mark_inode_dirty( if (!(inode->i_state & (I_WILL_FREE|I_FREEING))) mark_inode_dirty(inode); + else { + barrier(); + ip->i_update_core = 1; + } + } /* -- 1.7.7 From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 12:15:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJIFjPo072054 for ; Sat, 19 Nov 2011 12:15:45 -0600 X-ASG-Debug-ID: 1321726543-5e1c00250000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2E76C1D1F11C; Sat, 19 Nov 2011 10:15:43 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Edvc48mU7vPuLiwd; Sat, 19 Nov 2011 10:15:43 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRpS3-0006bO-DT; Sat, 19 Nov 2011 18:15:43 +0000 Message-Id: <20111119181543.361506649@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Sat, 19 Nov 2011 13:13:37 -0500 From: Christoph Hellwig To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Ajeet Yadav , Alex Elder X-ASG-Orig-Subj: [PATCH 1/9] [PATCH 1/9] "xfs: fix error handling for synchronous writes" Subject: [PATCH 1/9] [PATCH 1/9] "xfs: fix error handling for synchronous writes" References: <20111119181336.964593075@bombadil.infradead.org> Content-Disposition: inline; filename=0001-xfs-fix-error-handling-for-synchronous-writes-revisi.patch revisited X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321726544 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfs: fix for hang during synchronous buffer write error If removed storage while synchronous buffer write underway, "xfslogd" hangs. Detailed log http://oss.sgi.com/archives/xfs/2011-07/msg00740.html Related work bfc60177f8ab509bc225becbb58f7e53a0e33e81 "xfs: fix error handling for synchronous writes" Given that xfs_bwrite actually does the shutdown already after waiting for the b_iodone completion and given that we actually found that calling xfs_force_shutdown from inside xfs_buf_iodone_callbacks was a major contributor the problem it better to drop this call. Signed-off-by: Ajeet Yadav Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder --- fs/xfs/xfs_buf_item.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c index a7342e8..7888a75 100644 --- a/fs/xfs/xfs_buf_item.c +++ b/fs/xfs/xfs_buf_item.c @@ -1023,7 +1023,6 @@ xfs_buf_iodone_callbacks( XFS_BUF_UNDELAYWRITE(bp); trace_xfs_buf_error_relse(bp, _RET_IP_); - xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR); do_callbacks: xfs_buf_do_callbacks(bp); -- 1.7.7 From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 12:15:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJIFjUQ072064 for ; Sat, 19 Nov 2011 12:15:45 -0600 X-ASG-Debug-ID: 1321726544-5e1500240000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A58DA1D1F14F; Sat, 19 Nov 2011 10:15:44 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id PnkGfFiFRFWknkUb; Sat, 19 Nov 2011 10:15:44 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRpS3-0006cW-TJ; Sat, 19 Nov 2011 18:15:44 +0000 Message-Id: <20111119181543.809288814@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Sat, 19 Nov 2011 13:13:39 -0500 From: Christoph Hellwig To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Alex Elder X-ASG-Orig-Subj: [PATCH 3/9] [PATCH 3/9] xfs: fix ->write_inode return values Subject: [PATCH 3/9] [PATCH 3/9] xfs: fix ->write_inode return values References: <20111119181336.964593075@bombadil.infradead.org> Content-Disposition: inline; filename=0003-xfs-fix-write_inode-return-values.patch X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321726544 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currently we always redirty an inode that was attempted to be written out synchronously but has been cleaned by an AIL pushed internall, which is rather bogus. Fix that by doing the i_update_core check early on and return 0 for it. Also include async calls for it, as doing any work for those is just as pointless. While we're at it also fix the sign for the EIO return in case of a filesystem shutdown, and fix the completely non-sensical locking around xfs_log_inode. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Alex Elder (cherry picked from commit 297db93bb74cf687510313eb235a7aec14d67e97) Signed-off-by: Alex Elder --- fs/xfs/linux-2.6/xfs_super.c | 34 +++++++++------------------------- 1 files changed, 9 insertions(+), 25 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 347cae9..28de70b 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -878,33 +878,17 @@ xfs_log_inode( struct xfs_trans *tp; int error; - xfs_iunlock(ip, XFS_ILOCK_SHARED); tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS); error = xfs_trans_reserve(tp, 0, XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0); - if (error) { xfs_trans_cancel(tp, 0); - /* we need to return with the lock hold shared */ - xfs_ilock(ip, XFS_ILOCK_SHARED); return error; } xfs_ilock(ip, XFS_ILOCK_EXCL); - - /* - * Note - it's possible that we might have pushed ourselves out of the - * way during trans_reserve which would flush the inode. But there's - * no guarantee that the inode buffer has actually gone out yet (it's - * delwri). Plus the buffer could be pinned anyway if it's part of - * an inode in another recent transaction. So we play it safe and - * fire off the transaction anyway. - */ - xfs_trans_ijoin(tp, ip); + xfs_trans_ijoin_ref(tp, ip, XFS_ILOCK_EXCL); xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); - error = xfs_trans_commit(tp, 0); - xfs_ilock_demote(ip, XFS_ILOCK_EXCL); - - return error; + return xfs_trans_commit(tp, 0); } STATIC int @@ -919,7 +903,9 @@ xfs_fs_write_inode( trace_xfs_write_inode(ip); if (XFS_FORCED_SHUTDOWN(mp)) - return XFS_ERROR(EIO); + return -XFS_ERROR(EIO); + if (!ip->i_update_core) + return 0; if (wbc->sync_mode == WB_SYNC_ALL) { /* @@ -930,12 +916,10 @@ xfs_fs_write_inode( * of synchronous log foces dramatically. */ xfs_ioend_wait(ip); - xfs_ilock(ip, XFS_ILOCK_SHARED); - if (ip->i_update_core) { - error = xfs_log_inode(ip); - if (error) - goto out_unlock; - } + error = xfs_log_inode(ip); + if (error) + goto out; + return 0; } else { /* * We make this non-blocking if the inode is contended, return -- 1.7.7 From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 12:15:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJIFkVd072076 for ; Sat, 19 Nov 2011 12:15:46 -0600 X-ASG-Debug-ID: 1321726544-5e1700250000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5E36E1D1F11C; Sat, 19 Nov 2011 10:15:44 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id NEoPce5KtjNacrNR; Sat, 19 Nov 2011 10:15:44 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRpS4-0006dh-Fh; Sat, 19 Nov 2011 18:15:44 +0000 Message-Id: <20111119181544.434721480@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Sat, 19 Nov 2011 13:13:41 -0500 From: Christoph Hellwig To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Alex Elder X-ASG-Orig-Subj: [PATCH 5/9] [PATCH 5/9] xfs: avoid direct I/O write vs buffered I/O race Subject: [PATCH 5/9] [PATCH 5/9] xfs: avoid direct I/O write vs buffered I/O race References: <20111119181336.964593075@bombadil.infradead.org> Content-Disposition: inline; filename=0005-xfs-avoid-direct-I-O-write-vs-buffered-I-O-race.patch X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321726545 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currently a buffered reader or writer can add pages to the pagecache while we are waiting for the iolock in xfs_file_dio_aio_write. Prevent this by re-checking mapping->nrpages after we got the iolock, and if nessecary upgrade the lock to exclusive mode. To simplify this a bit only take the ilock inside of xfs_file_aio_write_checks. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Alex Elder --- fs/xfs/linux-2.6/xfs_file.c | 17 ++++++++++++++--- 1 files changed, 14 insertions(+), 3 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_file.c b/fs/xfs/linux-2.6/xfs_file.c index 93cc02d..b679198 100644 --- a/fs/xfs/linux-2.6/xfs_file.c +++ b/fs/xfs/linux-2.6/xfs_file.c @@ -669,6 +669,7 @@ xfs_file_aio_write_checks( xfs_fsize_t new_size; int error = 0; + xfs_rw_ilock(ip, XFS_ILOCK_EXCL); error = generic_write_checks(file, pos, count, S_ISBLK(inode->i_mode)); if (error) { xfs_rw_iunlock(ip, XFS_ILOCK_EXCL | *iolock); @@ -760,14 +761,24 @@ xfs_file_dio_aio_write( *iolock = XFS_IOLOCK_EXCL; else *iolock = XFS_IOLOCK_SHARED; - xfs_rw_ilock(ip, XFS_ILOCK_EXCL | *iolock); + xfs_rw_ilock(ip, *iolock); ret = xfs_file_aio_write_checks(file, &pos, &count, iolock); if (ret) return ret; + /* + * Recheck if there are cached pages that need invalidate after we got + * the iolock to protect against other threads adding new pages while + * we were waiting for the iolock. + */ + if (mapping->nrpages && *iolock == XFS_IOLOCK_SHARED) { + xfs_rw_iunlock(ip, *iolock); + *iolock = XFS_IOLOCK_EXCL; + xfs_rw_ilock(ip, *iolock); + } + if (mapping->nrpages) { - WARN_ON(*iolock != XFS_IOLOCK_EXCL); ret = -xfs_flushinval_pages(ip, (pos & PAGE_CACHE_MASK), -1, FI_REMAPF_LOCKED); if (ret) @@ -812,7 +823,7 @@ xfs_file_buffered_aio_write( size_t count = ocount; *iolock = XFS_IOLOCK_EXCL; - xfs_rw_ilock(ip, XFS_ILOCK_EXCL | *iolock); + xfs_rw_ilock(ip, *iolock); ret = xfs_file_aio_write_checks(file, &pos, &count, iolock); if (ret) -- 1.7.7 From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 12:15:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJIFl3Z072101 for ; Sat, 19 Nov 2011 12:15:48 -0600 X-ASG-Debug-ID: 1321726545-4e2901dd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B360A16DB915; Sat, 19 Nov 2011 10:15:45 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id SirP7LtpE7nXmZox; Sat, 19 Nov 2011 10:15:45 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRpS4-0006d4-5R; Sat, 19 Nov 2011 18:15:44 +0000 Message-Id: <20111119181544.111984285@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Sat, 19 Nov 2011 13:13:40 -0500 From: Christoph Hellwig To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Dave Chinner , Alex Elder X-ASG-Orig-Subj: [PATCH 4/9] [PATCH 4/9] xfs: dont serialise direct IO reads on page cache Subject: [PATCH 4/9] [PATCH 4/9] xfs: dont serialise direct IO reads on page cache References: <20111119181336.964593075@bombadil.infradead.org> Content-Disposition: inline; filename=0004-xfs-don-t-serialise-direct-IO-reads-on-page-cache-ch.patch checks X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321726546 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80712 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean There is no need to grab the i_mutex of the IO lock in exclusive mode if we don't need to invalidate the page cache. Taking these locks on every direct IO effective serialises them as taking the IO lock in exclusive mode has to wait for all shared holders to drop the lock. That only happens when IO is complete, so effective it prevents dispatch of concurrent direct IO reads to the same inode. Fix this by taking the IO lock shared to check the page cache state, and only then drop it and take the IO lock exclusively if there is work to be done. Hence for the normal direct IO case, no exclusive locking will occur. Signed-off-by: Dave Chinner Tested-by: Joern Engel Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder --- fs/xfs/linux-2.6/xfs_file.c | 17 ++++++++++++++--- 1 files changed, 14 insertions(+), 3 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_file.c b/fs/xfs/linux-2.6/xfs_file.c index 7f782af2..93cc02d 100644 --- a/fs/xfs/linux-2.6/xfs_file.c +++ b/fs/xfs/linux-2.6/xfs_file.c @@ -309,7 +309,19 @@ xfs_file_aio_read( if (XFS_FORCED_SHUTDOWN(mp)) return -EIO; - if (unlikely(ioflags & IO_ISDIRECT)) { + /* + * Locking is a bit tricky here. If we take an exclusive lock + * for direct IO, we effectively serialise all new concurrent + * read IO to this file and block it behind IO that is currently in + * progress because IO in progress holds the IO lock shared. We only + * need to hold the lock exclusive to blow away the page cache, so + * only take lock exclusively if the page cache needs invalidation. + * This allows the normal direct IO case of no page cache pages to + * proceeed concurrently without serialisation. + */ + xfs_rw_ilock(ip, XFS_IOLOCK_SHARED); + if ((ioflags & IO_ISDIRECT) && inode->i_mapping->nrpages) { + xfs_rw_iunlock(ip, XFS_IOLOCK_SHARED); xfs_rw_ilock(ip, XFS_IOLOCK_EXCL); if (inode->i_mapping->nrpages) { @@ -322,8 +334,7 @@ xfs_file_aio_read( } } xfs_rw_ilock_demote(ip, XFS_IOLOCK_EXCL); - } else - xfs_rw_ilock(ip, XFS_IOLOCK_SHARED); + } trace_xfs_file_read(ip, size, iocb->ki_pos, ioflags); -- 1.7.7 From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 12:15:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJIFms5072107 for ; Sat, 19 Nov 2011 12:15:48 -0600 X-ASG-Debug-ID: 1321726546-4a5400270000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F215B56F162; Sat, 19 Nov 2011 10:15:46 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id UlmyFNM0SPr6j8HB; Sat, 19 Nov 2011 10:15:46 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRpS5-0006fu-FD; Sat, 19 Nov 2011 18:15:45 +0000 Message-Id: <20111119181545.413417685@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Sat, 19 Nov 2011 13:13:45 -0500 From: Christoph Hellwig To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Mitsuo Hayasaka , Alex Elder , Ben Myers X-ASG-Orig-Subj: [PATCH 9/9] [PATCH 9/9] xfs: use doalloc flag in xfs_qm_dqattach_one() Subject: [PATCH 9/9] [PATCH 9/9] xfs: use doalloc flag in xfs_qm_dqattach_one() References: <20111119181336.964593075@bombadil.infradead.org> Content-Disposition: inline; filename=0009-xfs-use-doalloc-flag-in-xfs_qm_dqattach_one.patch X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321726546 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The doalloc arg in xfs_qm_dqattach_one() is a flag that indicates whether a new area to handle quota information will be allocated if needed. Originally, it was passed to xfs_qm_dqget(), but has been removed by the following commit (probably by mistake): commit 8e9b6e7fa4544ea8a0e030c8987b918509c8ff47 Author: Christoph Hellwig Date: Sun Feb 8 21:51:42 2009 +0100 xfs: remove the unused XFS_QMOPT_DQLOCK flag As the result, xfs_qm_dqget() called from xfs_qm_dqattach_one() never allocates the new area even if it is needed. This patch gives the doalloc arg to xfs_qm_dqget() in xfs_qm_dqattach_one() to fix this problem. Signed-off-by: Mitsuo Hayasaka Cc: Alex Elder Cc: Christoph Hellwig Reviewed-by: Christoph Hellwig Signed-off-by: Ben Myers --- fs/xfs/quota/xfs_qm.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/fs/xfs/quota/xfs_qm.c b/fs/xfs/quota/xfs_qm.c index b94dace..e70c7fc 100644 --- a/fs/xfs/quota/xfs_qm.c +++ b/fs/xfs/quota/xfs_qm.c @@ -714,7 +714,8 @@ xfs_qm_dqattach_one( * disk and we didn't ask it to allocate; * ESRCH if quotas got turned off suddenly. */ - error = xfs_qm_dqget(ip->i_mount, ip, id, type, XFS_QMOPT_DOWARN, &dqp); + error = xfs_qm_dqget(ip->i_mount, ip, id, type, + doalloc | XFS_QMOPT_DOWARN, &dqp); if (error) return error; -- 1.7.7 From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 12:15:47 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJIFkKc072089 for ; Sat, 19 Nov 2011 12:15:47 -0600 X-ASG-Debug-ID: 1321726545-5e1000200000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E5FEE1D1F14F; Sat, 19 Nov 2011 10:15:45 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 6tBDD0A29HdQHwey; Sat, 19 Nov 2011 10:15:45 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRpS5-0006fL-9N; Sat, 19 Nov 2011 18:15:45 +0000 Message-Id: <20111119181545.235475776@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Sat, 19 Nov 2011 13:13:44 -0500 From: Christoph Hellwig To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Alex Elder , Carlos Maiolino X-ASG-Orig-Subj: [PATCH 8/9] [PATCH 8/9] xfs: Fix possible memory corruption in xfs_readlink Subject: [PATCH 8/9] [PATCH 8/9] xfs: Fix possible memory corruption in xfs_readlink References: <20111119181336.964593075@bombadil.infradead.org> Content-Disposition: inline; filename=0008-xfs-Fix-possible-memory-corruption-in-xfs_readlink.patch X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321726545 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Fixes a possible memory corruption when the link is larger than MAXPATHLEN and XFS_DEBUG is not enabled. This also remove the S_ISLNK assert, since the inode mode is checked previously in xfs_readlink_by_handle() and via VFS. Updated to address concerns raised by Ben Hutchings about the loose attention paid to 32- vs 64-bit values, and the lack of handling a potentially negative pathlen value: - Changed type of "pathlen" to be xfs_fsize_t, to match that of ip->i_d.di_size - Added checking for a negative pathlen to the too-long pathlen test, and generalized the message that gets reported in that case to reflect the change As a result, if a negative pathlen were encountered, this function would return EFSCORRUPTED (and would fail an assertion for a debug build)--just as would a too-long pathlen. Signed-off-by: Alex Elder Signed-off-by: Carlos Maiolino Reviewed-by: Christoph Hellwig --- fs/xfs/xfs_vnodeops.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-) diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 6197207..6cc4d41 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -535,7 +535,7 @@ xfs_readlink( char *link) { xfs_mount_t *mp = ip->i_mount; - int pathlen; + xfs_fsize_t pathlen; int error = 0; trace_xfs_readlink(ip); @@ -545,13 +545,19 @@ xfs_readlink( xfs_ilock(ip, XFS_ILOCK_SHARED); - ASSERT((ip->i_d.di_mode & S_IFMT) == S_IFLNK); - ASSERT(ip->i_d.di_size <= MAXPATHLEN); - pathlen = ip->i_d.di_size; if (!pathlen) goto out; + if (pathlen < 0 || pathlen > MAXPATHLEN) { + xfs_alert(mp, "%s: inode (%llu) bad symlink length (%lld)", + __func__, (unsigned long long) ip->i_ino, + (long long) pathlen); + ASSERT(0); + return XFS_ERROR(EFSCORRUPTED); + } + + if (ip->i_df.if_flags & XFS_IFINLINE) { memcpy(link, ip->i_df.if_u1.if_data, pathlen); link[pathlen] = '\0'; -- 1.7.7 From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 12:15:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJIFmh2072108 for ; Sat, 19 Nov 2011 12:15:48 -0600 X-ASG-Debug-ID: 1321726546-14f301070000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1727A56F164; Sat, 19 Nov 2011 10:15:46 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id pQSrDLU5vClszWDx; Sat, 19 Nov 2011 10:15:46 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRpS4-0006eE-OV; Sat, 19 Nov 2011 18:15:44 +0000 Message-Id: <20111119181544.706389934@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Sat, 19 Nov 2011 13:13:42 -0500 From: Christoph Hellwig To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Mitsuo Hayasaka , Alex Elder X-ASG-Orig-Subj: [PATCH 6/9] [PATCH 6/9] xfs: Return -EIO when xfs_vn_getattr() failed Subject: [PATCH 6/9] [PATCH 6/9] xfs: Return -EIO when xfs_vn_getattr() failed References: <20111119181336.964593075@bombadil.infradead.org> Content-Disposition: inline; filename=0006-xfs-Return-EIO-when-xfs_vn_getattr-failed.patch X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321726547 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean An attribute of inode can be fetched via xfs_vn_getattr() in XFS. Currently it returns EIO, not negative value, when it failed. As a result, the system call returns not negative value even though an error occured. The stat(2), ls and mv commands cannot handle this error and do not work correctly. This patch fixes this bug, and returns -EIO, not EIO when an error is detected in xfs_vn_getattr(). Signed-off-by: Mitsuo Hayasaka Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder --- fs/xfs/linux-2.6/xfs_iops.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c index a9b3e1e..f5b697b 100644 --- a/fs/xfs/linux-2.6/xfs_iops.c +++ b/fs/xfs/linux-2.6/xfs_iops.c @@ -464,7 +464,7 @@ xfs_vn_getattr( trace_xfs_getattr(ip); if (XFS_FORCED_SHUTDOWN(mp)) - return XFS_ERROR(EIO); + return -XFS_ERROR(EIO); stat->size = XFS_ISIZE(ip); stat->dev = inode->i_sb->s_dev; -- 1.7.7 From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 12:15:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJIFlZo072099 for ; Sat, 19 Nov 2011 12:15:48 -0600 X-ASG-Debug-ID: 1321726545-4e2501e60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8AA0A16DB913; Sat, 19 Nov 2011 10:15:45 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id jxZ43JMslxHV7teE; Sat, 19 Nov 2011 10:15:45 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRpS5-0006em-0t; Sat, 19 Nov 2011 18:15:45 +0000 Message-Id: <20111119181544.971499446@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Sat, 19 Nov 2011 13:13:43 -0500 From: Christoph Hellwig To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Alex Elder X-ASG-Orig-Subj: [PATCH 7/9] [PATCH 7/9] xfs: fix buffer flushing during unmount Subject: [PATCH 7/9] [PATCH 7/9] xfs: fix buffer flushing during unmount References: <20111119181336.964593075@bombadil.infradead.org> Content-Disposition: inline; filename=0007-xfs-fix-buffer-flushing-during-unmount.patch X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321726546 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80712 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The code to flush buffers in the umount code is a bit iffy: we first flush all delwri buffers out, but then might be able to queue up a new one when logging the sb counts. On a normal shutdown that one would get flushed out when doing the synchronous superblock write in xfs_unmountfs_writesb, but we skip that one if the filesystem has been shut down. Fix this by moving the delwri list flushing until just before unmounting the log, and while we're at it also remove the superflous delwri list and buffer lru flusing for the rt and log device that can never have cached or delwri buffers. Signed-off-by: Christoph Hellwig Reported-by: Amit Sahrawat Tested-by: Amit Sahrawat Signed-off-by: Alex Elder --- fs/xfs/linux-2.6/xfs_buf.h | 1 - fs/xfs/xfs_mount.c | 29 ++++++++++------------------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_buf.h b/fs/xfs/linux-2.6/xfs_buf.h index 50a7d5f..36d6ee4 100644 --- a/fs/xfs/linux-2.6/xfs_buf.h +++ b/fs/xfs/linux-2.6/xfs_buf.h @@ -346,7 +346,6 @@ extern struct list_head *xfs_get_buftarg_list(void); #define xfs_getsize_buftarg(buftarg) block_size((buftarg)->bt_bdev) #define xfs_readonly_buftarg(buftarg) bdev_read_only((buftarg)->bt_bdev) -#define xfs_binval(buftarg) xfs_flush_buftarg(buftarg, 1) #define XFS_bflush(buftarg) xfs_flush_buftarg(buftarg, 1) #endif /* __XFS_BUF_H__ */ diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index b49b823..9afdd49 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -44,9 +44,6 @@ #include "xfs_trace.h" -STATIC void xfs_unmountfs_wait(xfs_mount_t *); - - #ifdef HAVE_PERCPU_SB STATIC void xfs_icsb_balance_counter(xfs_mount_t *, xfs_sb_field_t, int); @@ -1507,11 +1504,6 @@ xfs_unmountfs( */ xfs_log_force(mp, XFS_LOG_SYNC); - xfs_binval(mp->m_ddev_targp); - if (mp->m_rtdev_targp) { - xfs_binval(mp->m_rtdev_targp); - } - /* * Unreserve any blocks we have so that when we unmount we don't account * the reserved free space as used. This is really only necessary for @@ -1537,7 +1529,16 @@ xfs_unmountfs( xfs_warn(mp, "Unable to update superblock counters. " "Freespace may not be correct on next mount."); xfs_unmountfs_writesb(mp); - xfs_unmountfs_wait(mp); /* wait for async bufs */ + + /* + * Make sure all buffers have been flushed and completed before + * unmounting the log. + */ + error = xfs_flush_buftarg(mp->m_ddev_targp, 1); + if (error) + xfs_warn(mp, "%d busy buffers during unmount.", error); + xfs_wait_buftarg(mp->m_ddev_targp); + xfs_log_unmount_write(mp); xfs_log_unmount(mp); xfs_uuid_unmount(mp); @@ -1548,16 +1549,6 @@ xfs_unmountfs( xfs_free_perag(mp); } -STATIC void -xfs_unmountfs_wait(xfs_mount_t *mp) -{ - if (mp->m_logdev_targp != mp->m_ddev_targp) - xfs_wait_buftarg(mp->m_logdev_targp); - if (mp->m_rtdev_targp) - xfs_wait_buftarg(mp->m_rtdev_targp); - xfs_wait_buftarg(mp->m_ddev_targp); -} - int xfs_fs_writable(xfs_mount_t *mp) { -- 1.7.7 From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 12:19:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJIJXYJ072445 for ; Sat, 19 Nov 2011 12:19:33 -0600 X-ASG-Debug-ID: 1321726771-4e2601e90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8BDBA16DB92E for ; Sat, 19 Nov 2011 10:19:31 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id w1xoJS7WRQcei0Vg for ; Sat, 19 Nov 2011 10:19:31 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRpVh-0006lO-Cf; Sat, 19 Nov 2011 18:19:29 +0000 Date: Sat, 19 Nov 2011 13:19:29 -0500 From: Christoph Hellwig To: Chandra Seetharaman Cc: XFS Mailing List X-ASG-Orig-Subj: Re: [PATCH] xfs: Remove the entries from the queue while waking them up. Subject: Re: [PATCH] xfs: Remove the entries from the queue while waking them up. Message-ID: <20111119181929.GA25739@infradead.org> References: <1321644054.2201.80.camel@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1321644054.2201.80.camel@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321726771 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80712 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Thanks a lot for tracking this issue down! Unfortunately I don't think the fix is entirely safe. If we remove the ticket from the list before the wakeup we have to assume no one else ever wakes up a process waiting for log space. In Linux that generally isn't a safe assumption - e.g. higher level code could have added itself to another waitqueue before calling into this code ( possibly even outside the XFS code) and now getting a wake up, or other bits of the kernel could have all kinds of reasons to wake this process up. Below is patch I hacked up on the airplane today - it makes sure we always wake other waiters on the log space queues first before adding a new process and should have the same effect. Can you test if this also fixes the 234 hang for you? --- From: Christoph Hellwig Subject: xfs: fix and cleanup logspace waiter lists Apply the scheme used in log_regrant_write_log_space to wake up any other threads waiting for log space before the newly added one to log_regrant_write_log_space as well, and factor the code into readable helpers. For each of the queues we have: - one helper to wake up all waiting threads, and return if we succeeded into doing that. These helpers will also be usable by xfs_log_move_tail once we remove the current opportunistic wakeups in it. - one helper to sleep on t_wait until enough log space is available, which is modelled after the Linux waitqueue model. and rewrite log_regrant_write_log_space and log_regrant_write_log_space around these helpers, including comments documenting what is going on. These two function now use one and the same algorithm for waiting on log space instead of subtly different ones before. Signed-off-by: Christoph Hellwig --- fs/xfs/linux-2.6/xfs_trace.h | 12 - fs/xfs/xfs_log.c | 329 +++++++++++++++++++++---------------------- 2 files changed, 170 insertions(+), 171 deletions(-) Index: linux-2.6/fs/xfs/xfs_log.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_log.c 2011-11-19 15:51:55.689999172 +0100 +++ linux-2.6/fs/xfs/xfs_log.c 2011-11-19 16:57:07.226659537 +0100 @@ -670,6 +670,52 @@ xfs_log_write( return error; } +STATIC bool +xlog_wake_writeq( + struct log *log, + int free_bytes) +{ + struct xlog_ticket *tic; + + list_for_each_entry(tic, &log->l_writeq, t_queue) { + ASSERT(tic->t_flags & XLOG_TIC_PERM_RESERV); + + if (free_bytes < tic->t_unit_res) + return false; + free_bytes -= tic->t_unit_res; + + trace_xfs_log_regrant_write_wake_up(log, tic); + wake_up(&tic->t_wait); + } + + return true; +} + +STATIC bool +xlog_wake_reserveq( + struct log *log, + int free_bytes) +{ + struct xlog_ticket *tic; + int need_bytes; + + list_for_each_entry(tic, &log->l_reserveq, t_queue) { + if (tic->t_flags & XLOG_TIC_PERM_RESERV) + need_bytes = tic->t_unit_res*tic->t_cnt; + else + need_bytes = tic->t_unit_res; + + if (free_bytes < need_bytes) + return false; + free_bytes -= tic->t_unit_res; + + trace_xfs_log_grant_wake_up(log, tic); + wake_up(&tic->t_wait); + } + + return true; +} + void xfs_log_move_tail(xfs_mount_t *mp, xfs_lsn_t tail_lsn) @@ -2492,11 +2538,42 @@ restart: return 0; } /* xlog_state_get_iclog_space */ +STATIC int +xlog_reserveq_wait( + struct log *log, + struct xlog_ticket *tic, + int need_bytes) +{ + list_add_tail(&tic->t_queue, &log->l_reserveq); + + do { + if (XLOG_FORCED_SHUTDOWN(log)) + goto shutdown; + xlog_grant_push_ail(log, need_bytes); + + XFS_STATS_INC(xs_sleep_logspace); + trace_xfs_log_grant_sleep(log, tic); + + xlog_wait(&tic->t_wait, &log->l_grant_reserve_lock); + trace_xfs_log_grant_wake(log, tic); + + spin_lock(&log->l_grant_reserve_lock); + if (XLOG_FORCED_SHUTDOWN(log)) + goto shutdown; + } while (xlog_space_left(log, &log->l_grant_reserve_head) < need_bytes); + + list_del_init(&tic->t_queue); + return 0; +shutdown: + list_del_init(&tic->t_queue); + return XFS_ERROR(EIO); +} + /* * Atomically get the log space required for a log ticket. * - * Once a ticket gets put onto the reserveq, it will only return after - * the needed reservation is satisfied. + * Once a ticket gets put onto the reserveq, it will only return after the + * needed reservation is satisfied. * * This function is structured so that it has a lock free fast path. This is * necessary because every new transaction reservation will come through this @@ -2504,113 +2581,94 @@ restart: * every pass. * * As tickets are only ever moved on and off the reserveq under the - * l_grant_reserve_lock, we only need to take that lock if we are going - * to add the ticket to the queue and sleep. We can avoid taking the lock if the - * ticket was never added to the reserveq because the t_queue list head will be - * empty and we hold the only reference to it so it can safely be checked - * unlocked. + * l_grant_reserve_lock, we only need to take that lock if we are going to add + * the ticket to the queue and sleep. We can avoid taking the lock if the ticket + * was never added to the reserveq because the t_queue list head will be empty + * and we hold the only reference to it so it can safely be checked unlocked. */ STATIC int -xlog_grant_log_space(xlog_t *log, - xlog_ticket_t *tic) +xlog_grant_log_space( + struct log *log, + struct xlog_ticket *tic) { - int free_bytes; - int need_bytes; + int free_bytes, need_bytes; + int error = 0; -#ifdef DEBUG - if (log->l_flags & XLOG_ACTIVE_RECOVERY) - panic("grant Recovery problem"); -#endif + ASSERT(!(log->l_flags & XLOG_ACTIVE_RECOVERY)); trace_xfs_log_grant_enter(log, tic); + /* + * If there are other waiters on the queue then give them a chance at + * logspace before us. Wake up the first waiters, if we do not wake + * up all the waiters then go to sleep waiting for more free space, + * otherwise try to get some space for this transaction. + */ need_bytes = tic->t_unit_res; if (tic->t_flags & XFS_LOG_PERM_RESERV) need_bytes *= tic->t_ocnt; - - /* something is already sleeping; insert new transaction at end */ - if (!list_empty_careful(&log->l_reserveq)) { - spin_lock(&log->l_grant_reserve_lock); - /* recheck the queue now we are locked */ - if (list_empty(&log->l_reserveq)) { - spin_unlock(&log->l_grant_reserve_lock); - goto redo; - } - list_add_tail(&tic->t_queue, &log->l_reserveq); - - trace_xfs_log_grant_sleep1(log, tic); - - /* - * Gotta check this before going to sleep, while we're - * holding the grant lock. - */ - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return; - - XFS_STATS_INC(xs_sleep_logspace); - xlog_wait(&tic->t_wait, &log->l_grant_reserve_lock); - - /* - * If we got an error, and the filesystem is shutting down, - * we'll catch it down below. So just continue... - */ - trace_xfs_log_grant_wake1(log, tic); - } - -redo: - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return_unlocked; - free_bytes = xlog_space_left(log, &log->l_grant_reserve_head); - if (free_bytes < need_bytes) { + if (!list_empty_careful(&log->l_reserveq)) { spin_lock(&log->l_grant_reserve_lock); - if (list_empty(&tic->t_queue)) - list_add_tail(&tic->t_queue, &log->l_reserveq); - - trace_xfs_log_grant_sleep2(log, tic); - - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return; - - xlog_grant_push_ail(log, need_bytes); - - XFS_STATS_INC(xs_sleep_logspace); - xlog_wait(&tic->t_wait, &log->l_grant_reserve_lock); - - trace_xfs_log_grant_wake2(log, tic); - goto redo; - } - - if (!list_empty(&tic->t_queue)) { + if (!xlog_wake_reserveq(log, free_bytes)) + error = xlog_reserveq_wait(log, tic, need_bytes); + spin_unlock(&log->l_grant_reserve_lock); + } else if (free_bytes < need_bytes) { spin_lock(&log->l_grant_reserve_lock); - list_del_init(&tic->t_queue); + error = xlog_reserveq_wait(log, tic, need_bytes); spin_unlock(&log->l_grant_reserve_lock); } - /* we've got enough space */ + if (error) + goto error0; + xlog_grant_add_space(log, &log->l_grant_reserve_head, need_bytes); xlog_grant_add_space(log, &log->l_grant_write_head, need_bytes); trace_xfs_log_grant_exit(log, tic); xlog_verify_grant_tail(log); return 0; -error_return_unlocked: - spin_lock(&log->l_grant_reserve_lock); -error_return: - list_del_init(&tic->t_queue); - spin_unlock(&log->l_grant_reserve_lock); - trace_xfs_log_grant_error(log, tic); - +error0: /* - * If we are failing, make sure the ticket doesn't have any - * current reservations. We don't want to add this back when - * the ticket/transaction gets cancelled. + * If we are failing, make sure the ticket doesn't have any current + * reservations. We don't want to add this back when the ticket/ + * transaction gets cancelled. */ tic->t_curr_res = 0; tic->t_cnt = 0; /* ungrant will give back unit_res * t_cnt. */ - return XFS_ERROR(EIO); -} /* xlog_grant_log_space */ + return error; +} + +STATIC int +xlog_writeq_wait( + struct log *log, + struct xlog_ticket *tic, + int need_bytes) +{ + list_add_tail(&tic->t_queue, &log->l_writeq); + + do { + if (XLOG_FORCED_SHUTDOWN(log)) + goto shutdown; + xlog_grant_push_ail(log, need_bytes); + + XFS_STATS_INC(xs_sleep_logspace); + trace_xfs_log_regrant_write_sleep(log, tic); + + xlog_wait(&tic->t_wait, &log->l_grant_write_lock); + trace_xfs_log_regrant_write_wake(log, tic); + + spin_lock(&log->l_grant_write_lock); + if (XLOG_FORCED_SHUTDOWN(log)) + goto shutdown; + } while (xlog_space_left(log, &log->l_grant_write_head) < need_bytes); + list_del_init(&tic->t_queue); + return 0; +shutdown: + list_del_init(&tic->t_queue); + return XFS_ERROR(EIO); +} /* * Replenish the byte reservation required by moving the grant write head. @@ -2619,10 +2677,12 @@ error_return: * free fast path. */ STATIC int -xlog_regrant_write_log_space(xlog_t *log, - xlog_ticket_t *tic) +xlog_regrant_write_log_space( + struct log *log, + struct xlog_ticket *tic) { - int free_bytes, need_bytes; + int free_bytes, need_bytes; + int error = 0; tic->t_curr_res = tic->t_unit_res; xlog_tic_reset_res(tic); @@ -2630,104 +2690,47 @@ xlog_regrant_write_log_space(xlog_t * if (tic->t_cnt > 0) return 0; -#ifdef DEBUG - if (log->l_flags & XLOG_ACTIVE_RECOVERY) - panic("regrant Recovery problem"); -#endif + ASSERT(!(log->l_flags & XLOG_ACTIVE_RECOVERY)); trace_xfs_log_regrant_write_enter(log, tic); - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return_unlocked; - /* If there are other waiters on the queue then give them a - * chance at logspace before us. Wake up the first waiters, - * if we do not wake up all the waiters then go to sleep waiting - * for more free space, otherwise try to get some space for - * this transaction. + /* + * If there are other waiters on the queue then give them a chance at + * logspace before us. Wake up the first waiters, if we do not wake + * up all the waiters then go to sleep waiting for more free space, + * otherwise try to get some space for this transaction. */ need_bytes = tic->t_unit_res; - if (!list_empty_careful(&log->l_writeq)) { - struct xlog_ticket *ntic; - - spin_lock(&log->l_grant_write_lock); - free_bytes = xlog_space_left(log, &log->l_grant_write_head); - list_for_each_entry(ntic, &log->l_writeq, t_queue) { - ASSERT(ntic->t_flags & XLOG_TIC_PERM_RESERV); - - if (free_bytes < ntic->t_unit_res) - break; - free_bytes -= ntic->t_unit_res; - wake_up(&ntic->t_wait); - } - - if (ntic != list_first_entry(&log->l_writeq, - struct xlog_ticket, t_queue)) { - if (list_empty(&tic->t_queue)) - list_add_tail(&tic->t_queue, &log->l_writeq); - trace_xfs_log_regrant_write_sleep1(log, tic); - - xlog_grant_push_ail(log, need_bytes); - - XFS_STATS_INC(xs_sleep_logspace); - xlog_wait(&tic->t_wait, &log->l_grant_write_lock); - trace_xfs_log_regrant_write_wake1(log, tic); - } else - spin_unlock(&log->l_grant_write_lock); - } - -redo: - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return_unlocked; - free_bytes = xlog_space_left(log, &log->l_grant_write_head); - if (free_bytes < need_bytes) { + if (!list_empty_careful(&log->l_writeq)) { spin_lock(&log->l_grant_write_lock); - if (list_empty(&tic->t_queue)) - list_add_tail(&tic->t_queue, &log->l_writeq); - - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return; - - xlog_grant_push_ail(log, need_bytes); - - XFS_STATS_INC(xs_sleep_logspace); - trace_xfs_log_regrant_write_sleep2(log, tic); - xlog_wait(&tic->t_wait, &log->l_grant_write_lock); - - trace_xfs_log_regrant_write_wake2(log, tic); - goto redo; - } - - if (!list_empty(&tic->t_queue)) { + if (!xlog_wake_writeq(log, free_bytes)) + error = xlog_writeq_wait(log, tic, need_bytes); + spin_unlock(&log->l_grant_write_lock); + } else if (free_bytes < need_bytes) { spin_lock(&log->l_grant_write_lock); - list_del_init(&tic->t_queue); + error = xlog_writeq_wait(log, tic, need_bytes); spin_unlock(&log->l_grant_write_lock); } - /* we've got enough space */ + if (error) + goto error0; + xlog_grant_add_space(log, &log->l_grant_write_head, need_bytes); trace_xfs_log_regrant_write_exit(log, tic); xlog_verify_grant_tail(log); return 0; - - error_return_unlocked: - spin_lock(&log->l_grant_write_lock); - error_return: - list_del_init(&tic->t_queue); - spin_unlock(&log->l_grant_write_lock); - trace_xfs_log_regrant_write_error(log, tic); - +error0: /* - * If we are failing, make sure the ticket doesn't have any - * current reservations. We don't want to add this back when - * the ticket/transaction gets cancelled. + * If we are failing, make sure the ticket doesn't have any current + * reservations. We don't want to add this back when the ticket/ + * transaction gets cancelled. */ tic->t_curr_res = 0; tic->t_cnt = 0; /* ungrant will give back unit_res * t_cnt. */ - return XFS_ERROR(EIO); -} /* xlog_regrant_write_log_space */ - + return error; +} /* The first cnt-1 times through here we don't need to * move the grant write head because the permanent Index: linux-2.6/fs/xfs/linux-2.6/xfs_trace.h =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_trace.h 2011-11-19 16:36:00.493329401 +0100 +++ linux-2.6/fs/xfs/linux-2.6/xfs_trace.h 2011-11-19 16:39:53.303332382 +0100 @@ -833,18 +833,14 @@ DEFINE_LOGGRANT_EVENT(xfs_log_umount_wri DEFINE_LOGGRANT_EVENT(xfs_log_grant_enter); DEFINE_LOGGRANT_EVENT(xfs_log_grant_exit); DEFINE_LOGGRANT_EVENT(xfs_log_grant_error); -DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep1); -DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake1); -DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep2); -DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake2); +DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep); +DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake); DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake_up); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_enter); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_exit); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_error); -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_sleep1); -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake1); -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_sleep2); -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake2); +DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_sleep); +DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake_up); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_reserve_enter); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_reserve_exit); From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 12:45:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJIjAji074699 for ; Sat, 19 Nov 2011 12:45:13 -0600 X-ASG-Debug-ID: 1321728308-5e1e00830000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0EFDA1DBE975 for ; Sat, 19 Nov 2011 10:45:08 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id cdwkGE4ZrM3TznMg for ; Sat, 19 Nov 2011 10:45:08 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRpuV-0003lw-IP; Sat, 19 Nov 2011 18:45:07 +0000 Date: Sat, 19 Nov 2011 13:45:07 -0500 From: Christoph Hellwig To: Arkadiusz Mi??kiewicz Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/3] xfsprogs: allow linking against libtcmalloc Subject: Re: [PATCH 3/3] xfsprogs: allow linking against libtcmalloc Message-ID: <20111119184507.GA11208@infradead.org> References: <20111114155742.285135418@bombadil.infradead.org> <20111114160217.591812422@bombadil.infradead.org> <201111180804.06413.arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201111180804.06413.arekm@maven.pl> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321728309 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0054 1.0000 -1.9855 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.89 X-Barracuda-Spam-Status: No, SCORE=-1.89 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80713 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Nov 18, 2011 at 08:04:06AM +0100, Arkadiusz Mi??kiewicz wrote: > On Monday 14 of November 2011, Christoph Hellwig wrote: > > Allow linking against the libtcmalloc library from Google's performance > > tools, which at least for repair reduces the memory usage dramatically. > > Should -fno-builtin-malloc be also used? The documentation suggests that it's not strictly required, but probably a good idea. I'll fold this into the next version, together with your autoconf updates from irc. From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 12:48:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJImWPi075053 for ; Sat, 19 Nov 2011 12:48:32 -0600 X-ASG-Debug-ID: 1321728511-752d02150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B1B4E1DBED8A for ; Sat, 19 Nov 2011 10:48:31 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id iiJKv07dhA4uzdZj for ; Sat, 19 Nov 2011 10:48:31 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRpxm-0003nh-AZ; Sat, 19 Nov 2011 18:48:30 +0000 Date: Sat, 19 Nov 2011 13:48:30 -0500 From: Christoph Hellwig To: Maarten Vergouwe Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS with project quota support in Kernel 2.6.28(.9) Subject: Re: XFS with project quota support in Kernel 2.6.28(.9) Message-ID: <20111119184830.GA14564@infradead.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321728511 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0003 1.0000 -2.0194 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80713 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 14, 2011 at 03:36:51PM +0100, Maarten Vergouwe wrote: > Hi > > I have problems in writes that hang for more than 7 seconds because of the > the kthreadd daemon keeping a mutex locked for too long. > Is there someone who might be able to help me with that? > I saw that a lot of changes were done on the XFS quota support in later > kernels, but the patch list is too long between my kernel and the changed > quota system. Did you manage to check if you can reproduce the issue with a recent kernel? From greg@kroah.com Sat Nov 19 13:06:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJJ6Vib076699 for ; Sat, 19 Nov 2011 13:06:31 -0600 X-ASG-Debug-ID: 1321729589-2ff702e70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from out2.smtp.messagingengine.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 47AD826527A for ; Sat, 19 Nov 2011 11:06:29 -0800 (PST) Received: from out2.smtp.messagingengine.com (out2.smtp.messagingengine.com [66.111.4.26]) by cuda.sgi.com with ESMTP id v6xyB1XOSbDZJOyO for ; Sat, 19 Nov 2011 11:06:29 -0800 (PST) Received: from compute2.internal (compute2.nyi.mail.srv.osa [10.202.2.42]) by gateway1.nyi.mail.srv.osa (Postfix) with ESMTP id 41872204E1 for ; Sat, 19 Nov 2011 14:06:29 -0500 (EST) Received: from frontend1.nyi.mail.srv.osa ([10.202.2.160]) by compute2.internal (MEProxy); Sat, 19 Nov 2011 14:06:29 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=date:from:to:cc:subject:message-id :references:mime-version:content-type:in-reply-to; s=smtpout; bh=iYckDcMG3R0JD8ZjiJSnfgC13uM=; b=uxcC7eoXmQGbl4wh9rmnvR4A2fOn prMHBboj4KKegalD04HI1Ic9Zj8N7zU+6OP4nP1mH9+oz/d0QjfltvJyVBnrX+9G o6bVAO6Rj5jZqsditufS0jc8PkO4Hje0rpLic/1MnHarhPFirysQevxStrQMiiWc RY/Am+WCLAwRMzs= X-Sasl-enc: jP/En56EfPRdJ1dj69Kk6O/ABcz/j2xBCZ8BiWiQNdNp 1321729588 Received: from localhost (c-76-121-69-168.hsd1.wa.comcast.net [76.121.69.168]) by mail.messagingengine.com (Postfix) with ESMTPSA id 650018E00CA; Sat, 19 Nov 2011 14:06:28 -0500 (EST) Date: Sat, 19 Nov 2011 10:59:19 -0800 From: Greg KH To: Christoph Hellwig Cc: stable@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/9] XFS update for 3.0-stable Subject: Re: [PATCH 0/9] XFS update for 3.0-stable Message-ID: <20111119185919.GA30186@kroah.com> References: <20111119181336.964593075@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111119181336.964593075@bombadil.infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: out2.smtp.messagingengine.com[66.111.4.26] X-Barracuda-Start-Time: 1321729590 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80715 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Nov 19, 2011 at 01:13:36PM -0500, Christoph Hellwig wrote: > This is the series of XFS fixes from current mainline which is important > enough for 3.0-stable. All but the first three would also be needed > for 3.1-stable, but given the limited resources I plan to concentrate > on 3.0-stable. If anyone wants to take care for 3.1 by building a kernel > with the remaining patches and run QA on them you are more welcome to > help out with that tree. > > Note that while the description of > > xfs: don't serialise direct IO reads on page cache checks > > doesn't mention that is is a regression fix we later noticed that a > large part of the speedups wasn't in fact new, but fixed a performance > regression introduced in Linux 2.6.38 with commit: > > xfs: introduce xfs_rw_lock() helpers for locking the inode Thanks for the series of patches, I'll queue them up after this latest 3.0 release happens on Monday. greg k-h From BATV+5d134c529cea2ce3cf11+3009+infradead.org+hch@bombadil.srs.infradead.org Sat Nov 19 13:11:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJJBfYZ077131 for ; Sat, 19 Nov 2011 13:11:42 -0600 X-ASG-Debug-ID: 1321729899-728301db0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4C49282731E; Sat, 19 Nov 2011 11:11:39 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id qvJbClRdp9YT5CAa; Sat, 19 Nov 2011 11:11:39 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RRqKA-0008DW-EB; Sat, 19 Nov 2011 19:11:38 +0000 Date: Sat, 19 Nov 2011 14:11:38 -0500 From: Christoph Hellwig To: Jeff Liu Cc: xfs@oss.sgi.com, Christoph Hellwig , Chris Mason , aelder@sgi.com X-ASG-Orig-Subj: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE support to XFS V1 Subject: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE support to XFS V1 Message-ID: <20111119191138.GA24444@infradead.org> References: <4E887D7F.2010306@oracle.com> <20111114102444.GA27791@infradead.org> <4EC10DE8.6030607@oracle.com> <20111114125044.GA9802@infradead.org> <4EC768F5.4050904@oracle.com> <4EC76AB9.9030604@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4EC76AB9.9030604@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321729900 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80716 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Nov 19, 2011 at 04:37:13PM +0800, Jeff Liu wrote: > > Signed-off-by: Jie Liu Thanks a lot Jeff. A few comments below: > +int > +xfs_seek_data_hole( > + struct xfs_inode *ip, > + loff_t *start, > + u32 type) > +{ > + xfs_mount_t *mp = ip->i_mount; please use struct xfs_mount *mp = ip->i_mount; for all new code. > + if (xfs_get_extsz_hint(ip) || > + ip->i_d.di_flags & (XFS_DIFLAG_PREALLOC | XFS_DIFLAG_APPEND)) { > + filelen = XFS_MAXIOFFSET(mp); > + } else { > + filelen = ip->i_size; > + } I don't understand this. XFS_MAXIOFFSET is the maximum possible file size in an XFS filesystem - using it with an extent size hint or the prealloc or appen only flags doesn't make sense to me. > + if (type == SEEK_DATA) { xfs_seek_data_hole shares almost no common code between the SEEK_DATA and SEEK_HOLE cases, which suggests it probably should be two different routines. > +STATIC loff_t > +xfs_file_llseek( > + struct file *file, > + loff_t offset, > + int origin) > +{ > + struct inode *inode = file->f_mapping->host; > + int ret; > + > + if (origin != SEEK_DATA && origin != SEEK_HOLE) > + return generic_file_llseek(file, offset, origin); > + > + mutex_lock(&inode->i_mutex); > + switch (origin) { > + case SEEK_DATA: > + case SEEK_HOLE: Having the if above and then the switch here seems like and odd style. I'd do either an if, or a switch statement for all possible variants, but not both. > + if (offset >= i_size_read(inode)) { > + ret = -ENXIO; > + goto error; > + } > + > + ret = xfs_find_desired_extent(inode, &offset, origin); > + if (ret) > + goto error; > + } > + > + if (offset < 0 && !(file->f_mode & FMODE_UNSIGNED_OFFSET)) { > + ret = -EINVAL; > + goto error; > + } I don't think this could ever happen on XFS. > + if (offset > inode->i_sb->s_maxbytes) { > + ret = -EINVAL; > + goto error; > + } This also shouldn't happen if the low-level code does the right thing. > + if (offset != file->f_pos) { > + file->f_pos = offset; > + file->f_version = 0; > + } XFS never uses f_version, no need to update it. > +int > +xfs_find_desired_extent( > + struct inode *inode, > + loff_t *start, > + u32 type) I think this would better be merged with the code currenly in xfs_file_llseek. Maybe move all the SEEK_DATA/SEEK_HOLE specific code from there to this function? Also please move this routine to be next to xfs_file_llseek in xfs_file.c, which also means that it can be marked static. > +{ > + xfs_inode_t *ip = XFS_I(inode); > + xfs_mount_t *mp = ip->i_mount; Just as above please use the struct versions for new code. > + /* > + * Flush the delay alloc blocks. Even after flushing the inode, > + * there can still be delalloc blocks on the inode beyond EOF > + * due to speculative preallocation. These are not removed until > + * the release function is called or the inode is inactivated. > + * Hence we cannot assert here that ip->i_delayed_blks == 0. > + */ > + if (ip->i_delayed_blks || ip->i_size > ip->i_d.di_size) { > + error = xfs_flush_pages(ip, 0, -1, 0, FI_REMAPF); > + if (error) > + goto out_unlock_iolock; > + } For the final version we should get rid of this flush and instead look for pages having dirty unwritten extents in the pagecache and adjust the result based on it. I'm fine with delaying this until all other issues are sorted out. From support@eyespyclassifieds.com Sat Nov 19 17:44:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.6 required=5.0 tests=BAYES_50,J_CHICKENPOX_61, J_CHICKENPOX_74,URIBL_WS_SURBL autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAJNiJkX098092 for ; Sat, 19 Nov 2011 17:44:19 -0600 X-ASG-Debug-ID: 1321746257-1305016c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from p3nlsmtp06.shr.prod.phx3.secureserver.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id BF2561D1F395 for ; Sat, 19 Nov 2011 15:44:17 -0800 (PST) Received: from p3nlsmtp06.shr.prod.phx3.secureserver.net (p3nlsmtp06.shr.prod.phx3.secureserver.net [72.167.234.230]) by cuda.sgi.com with SMTP id ImO13OCtDy6dxXx6 for ; Sat, 19 Nov 2011 15:44:17 -0800 (PST) Received: (qmail 5332 invoked from network); 19 Nov 2011 23:44:16 -0000 Received: from unknown (HELO P3NW3SH056.phx3.gdhosting.gdg) ([72.167.232.206]) (envelope-sender ) by p3nlsmtp06.shr.prod.phx3.secureserver.net (qmail-ldap-1.03) with SMTP for ; 19 Nov 2011 23:44:16 -0000 Received: from mail pickup service by P3NW3SH056.phx3.gdhosting.gdg with Microsoft SMTPSVC; Sat, 19 Nov 2011 16:44:15 -0700 From: To: "Friend" X-ASG-Orig-Subj: Hello,Get your Simple $1,950 Guaranteed Commissions Now!!! Subject: Hello,Get your Simple $1,950 Guaranteed Commissions Now!!! Date: Sat, 19 Nov 2011 16:44:15 -0700 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4862 Message-ID: X-OriginalArrivalTime: 19 Nov 2011 23:44:15.0745 (UTC) FILETIME=[25D01F10:01CCA715] X-Barracuda-Connect: p3nlsmtp06.shr.prod.phx3.secureserver.net[72.167.234.230] X-Barracuda-Start-Time: 1321746257 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4350 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.46 X-Barracuda-Spam-Status: No, SCORE=0.46 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME, PLING_PLING X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80732 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.46 PLING_PLING Subject has lots of exclamation marks X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello Friend, Get Larger ClickBank Affiliate Commissions in Just a Few Minutes! "These Message Sets, Just For ClickBank Affiliates, Creates Attentive and Receptive Readers Ready To Click and Buy and Puts Your Marketing On Autotrafficavalanche. In Just a Few Minutes They Are Ready To Generate More Sales For You Automatically!" Hurry Easy To : Get your Simple $1,950 Guaranteed Commissions Now!!! It's Easy To Make Money Everyday Even If You're Starting From Scratch With Zero Knowledge, Experience Or Budget!I'll Show You Exactly How. We've Start putting New 50 Members in YOUR TEAM for the Nov- 13- 20 -/2011 weekly commission Report... and GROWING everyday earn by $100 up to $300 or more. IMPORTANT: Nov -20 /2011 is the Cut-Off day to lock in your position then faster you act the higher commission you will earn!!! Go Here To Secure not less than $1,950 commission Now and it still growing as many people joining under you. if you secure your position right away: The $1,950 commission will Arrive Through your Paypal or Credit Card on Nov/30/2011 next week.Hurry'this limited time, 3 remaining Positions are available Now. You will access your $1,950 money in any ATM when you join early... If The Link Is Error Copy And Paste Into Your Browser To Get Commission... Cash Waiting Here: http://worldurl.webs.com/autotrafficavalanche.html , TYPE = Date & Time == New PAID Members ====== Country's M NOV.18 @ 11:19 PM = Shelly Marquez ===== United States M NOV.18 @ 11:19 PM == Rolldan Pacson ===== United States M NOV.18 @ 06:23 PM === Stephen Harris ===== Canada M NOV.18 @ 11:19 PM ==== Jackie Parkers ===== United States M NOV.18 @ 11:19 PM ===== Rowena Harison ===== United States M NOV.18 @ 06:23 PM ====== Geralden Roses ===== New Zealand M NOV.18 @ 08:26 AM ======= Renee Jenkinse ===== Australia P NOV.18 @ 02:31 PM ======== Elizabeth Rios ===== Singapore M NOV.18 @ 02:37 PM ========= Karen Schiller ===== United Kingdom M NOV.18 @ 04:21 PM ========== Analou Roddman ===== Germany P NOV.18 @ 09:38 PM =========== Karen Stephens ===== Sri Lanka P NOV.18 @ 10:45 PM ============ Josephen Coper ===== United States M NOV.18 @ 10:19 AM ============= Vecky Camptons ===== United States P NOV.18 @ 08:32 PM ============ Gaynell Bailey ===== South Africa M NOV.18 @ 09:40 PM =========== Barbara Thunder ===== Netherlands P NOV.18 @ 10:21 AM ========== James Williams ===== North Carolina P NOV.18 @ 11:08 PM ========= David Robinson ===== United States M NOV.18 @ 12:39 AM ======== Carolyn Smiths ===== Hungary M NOV.18 @ 02:30 AM ======= Andrew Stocton ===== New Zealand P NOV.18 @ 02:42 AM ====== Matthew Evander ===== Portugal M NOV.18 @ 08:18 AM ===== Steven Hopekin ===== United States P NOV.18 @ 02:38 AM ==== Jenny Hamilton ===== United States P NOV.18 @ 02:53 AM === Stefany Gibson ===== Italy P NOV.18 @ 02:38 AM == Amie Stephenson ===== United States P NOV.18 @ 02:53 AM = Roben Mcartney ===== United Kingdom Therefore, you have a GUARANTEED $1,950 CommissionS every week from now on!. Earn $39 Per Process!Each $39 x 50 = $1,950 Commission will be yours...! Be Sure to Copy the link below & Paste into your browser and press enter: To Secure your $1,950 commission! If The Link Is Error Copy And Paste Into Your Browser To See Commission... Cash Waiting Here: http://worldurl.webs.com/autotrafficavalanche.html Just one simple payment of $39 and you could have earn $1,950 Commission,And you recieved on November 30-2011 Directly to Your Paypal or Credit Card. You must UPGRADE right away or before others do.... Caring for Your Success, Rowena Regan! P.S.I Want to Get My Hands on This Set of Profit Pulling ClickBank Emails to Set My Affiliate Marketing on *FIRE* With These Proven Sales Tactics and Emails . . . Best regards Congratulations You have just signed up 50 new members under your name This is where you can type a brief description of your site. Email sent by: bestincome@gmail.com (Rowena Regan) Powered by Eye Spy Classifieds From david@fromorbit.com Sat Nov 19 18:30:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAK0UgsV100669 for ; Sat, 19 Nov 2011 18:30:42 -0600 X-ASG-Debug-ID: 1321749038-606703030000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail07.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DB1921628AB4 for ; Sat, 19 Nov 2011 16:30:39 -0800 (PST) Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id C17K0scYq7qaFYHj for ; Sat, 19 Nov 2011 16:30:39 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAElHyE55LGY5/2dsb2JhbABCqj2BBoFyAQEFJxMcIxAIAxguFCUDIRO8YhKKBQSUO4kDiRc Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail07.adl2.internode.on.net with ESMTP; 20 Nov 2011 11:00:35 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RRvIm-0008ID-1P; Sun, 20 Nov 2011 11:30:32 +1100 Date: Sun, 20 Nov 2011 11:30:31 +1100 From: Dave Chinner To: Jeff Liu Cc: xfs@oss.sgi.com, aelder@sgi.com, Christoph Hellwig , Chris Mason X-ASG-Orig-Subj: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE support to XFS V1 Subject: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE support to XFS V1 Message-ID: <20111120003031.GM7046@dastard> References: <4E887D7F.2010306@oracle.com> <20111114102444.GA27791@infradead.org> <4EC10DE8.6030607@oracle.com> <20111114125044.GA9802@infradead.org> <4EC768F5.4050904@oracle.com> <4EC76AB9.9030604@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4EC76AB9.9030604@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1321749040 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80735 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Nov 19, 2011 at 04:37:13PM +0800, Jeff Liu wrote: > > Signed-off-by: Jie Liu Christoph has commented on the code-related aspects of the patch, so I won't repeat that. I'll comment on structural/design issues instead. Firstly, the patch splits the functionality arbitrarily over three different files, and I don't think that is necessary. There really is no reason at all for xfs_bmap.c to know anything aout SEEK_HOLE/SEEK_DATA semantics - that file is for extent manipulation and search functions. SEEK semantics should be entirely encoded into the function that deals with the seeking. Secondly, xfs_find_desired_extent() and xfs_seek_hole_data() should be one function, and named something like xfs_file_seek_extent(). Finally, don't think using low level extent search functions like xfs_bmap_search_extents() is the right level to implement this functionality (see my comments about SEEK_HOLE/SEEK_DATA semantics in xfs-bmap.c above), especially as we already have functions for looking up holes and extents at given offsets. That is, to find the next hole at or after after a given offset, we already have xfs_bmap_first_unused(). Indeed, this function already has the exact semantics that SEEK_HOLE requires. Simply put: case SEEK_HOLE: fsb = XFS_B_TO_FSBT(mp, start_offset); error = xfs_bmap_first_unused(NULL, ip, 1, &fsb, XFS_DATA_FORK); if (error) return -error; if (fsb <= XFS_B_TO_FSBT(mp, start_offset)) return start_offset; return XFS_FSB_TO_B(mp, fsb); As to the data extent search, I'd prefer you to use xfs_bmapi_read() rather than xfs_bmap_search_extents() directly. I'd prefer that we return unwritten extents as holes rather than data from the initial implementation, and using the low level xfs_bmap_search_extents() makes that quite complex. However, we already have a function for handling that complexity: xfs_bmapi_read(). That is, xfs_bmapi_read() needs to be passed an array of two maps, one for the current offset, and one for the next extent type. This makes one call sufficient for most transitions. Done in a simple loop it will handle all conditions of hole->unwritten->hole.... until it finds a data extent of EOF. start_fsbno = XFS_B_TO_FSBT(mp, start_offset); while (1) { struct xfs_bmbt_irec maps[2]; int nmaps = 2; count_fsb = XFS_B_TO_FSB(mp, XFS_MAXIOFFSET(mp)); error = xfs_bmapi_read(ip, fsbno, count_fsb, &maps, &nmaps, XFS_BMAPI_ENTIRE); if (error) return -error; if (!nmaps) { /* no extents at given offset, must be beyond EOF */ return -ENXIO; } switch (map[0].br_startblock) { case DELAYSTARTBLOCK: /* landed in an in-memory data extent */ return map[0].br_startoff; default: /* landed in an allocated extent */ if (map[0].br_state == XFS_EXT_NORM) { /* a real data extent */ return map[0].br_startoff; } /* Fall through to hole handling for unwritten extents */ case HOLESTARTBLOCK: /* * landed in a hole. If the next extent is a data * extent, then return the start of it, otherwise * we need to move the start offset and map more * blocks. */ if (map[1].br_startblock == DELAYSTARTBLOCK || ((map[1].br_startblock != HOLESTARTBLOCK && map[1].br_state == XFS_EXT_NORM))) return map[1].br_startoff; start_fsbno = map[1].br_startoff + map[1].br_blockcount; break; } if (XFS_FSB_TO_B(mp, start_fsbno) > ip->i_size) { /* Beyond EOF now */ return -ENXIO; } } This can pretty much all be done in fs/xfs/xfs_file.c::xfs_file_seek_extent() because all the functions used by the above code are exported from xfs_bmap.c for external use - that solves the scattering problem and uses interfaces that we already know work in the intended manner.... ;) BTW: > +xfs_file_llseek( > + struct file *file, > + loff_t offset, > + int origin) > +{ > + struct inode *inode = file->f_mapping->host; > + int ret; > + > + if (origin != SEEK_DATA && origin != SEEK_HOLE) > + return generic_file_llseek(file, offset, origin); > + > + mutex_lock(&inode->i_mutex); > + switch (origin) { We don't need the i_mutex to be held here. We only need to hold the ilock in shared mode for this operation to protect against extent list modifications (like unwritten extent conversion and truncation). > +int > +xfs_find_desired_extent( > + struct inode *inode, > + loff_t *start, > + u32 type) > +{ > + xfs_inode_t *ip = XFS_I(inode); > + xfs_mount_t *mp = ip->i_mount; > + struct xfs_ifork *ifp; > + int lock; > + int error; > + > + if (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS && > + ip->i_d.di_format != XFS_DINODE_FMT_BTREE && > + ip->i_d.di_format != XFS_DINODE_FMT_LOCAL) > + return XFS_ERROR(EINVAL); > + > + xfs_ilock(ip, XFS_IOLOCK_SHARED); > + > + /* > + * Flush the delay alloc blocks. Even after flushing the inode, > + * there can still be delalloc blocks on the inode beyond EOF > + * due to speculative preallocation. These are not removed until > + * the release function is called or the inode is inactivated. > + * Hence we cannot assert here that ip->i_delayed_blks == 0. > + */ > + if (ip->i_delayed_blks || ip->i_size > ip->i_d.di_size) { > + error = xfs_flush_pages(ip, 0, -1, 0, FI_REMAPF); > + if (error) > + goto out_unlock_iolock; > + } i.e. this IOLOCK and flush is completely unnecessary because we'll find delayed allocation extents in the extent lookup and can handle them just like real allocated extents.... > + lock = xfs_ilock_map_shared(ip); i.e. this is the only lock we need to take. Cheers, Dave. -- Dave Chinner david@fromorbit.com From service.winner12@postmail-online.com Sat Nov 19 20:07:48 2011 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAK27kfE108467 for ; Sat, 19 Nov 2011 20:07:47 -0600 X-ASG-Debug-ID: 1321754862-1b14026e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mo-p00-ob.rzone.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EA53E56F25F for ; Sat, 19 Nov 2011 18:07:43 -0800 (PST) Received: from mo-p00-ob.rzone.de (mo-p00-ob.rzone.de [81.169.146.160]) by cuda.sgi.com with ESMTP id GTaLEnHF7LZamkHU for ; Sat, 19 Nov 2011 18:07:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; t=1321754862; l=784093; s=domk; d=postmail-online.com; h=Content-Type:MIME-Version:Subject:Reply-To:From:Date:X-RZG-CLASS-ID: X-RZG-AUTH; bh=Hhg5qYSJacBKR9pa62xOeYHnyGE=; b=L2PStd/vBy71lNwKXQ1gyScC2C5w1cvTv41QCpc9ZKqI0vC4Z3h4jcxrYVi045U4L5j POfCCwpHnixjF533j5/HaK5LRPRySbzrg++idw0aoUGy5djmx6jC3cxeOleFdATv/jEn4 eY1lqu27UoE76LgtRG7QrZtKexOo1h7oLjQ= X-RZG-AUTH: :P2kWY0mrfrEJ5AIEBVqqlormIW8PTi4UTeyvQaAyd1VueCELZYMQ4SEstvEo7jKZs0LWBWzK7qsqyqjylveq X-RZG-CLASS-ID: mo00 Received: from patina.store (com4.strato.de [81.169.145.237]) by smtp.strato.de (cohen mo26) (RZmta 26.10 AUTH) with (RC4-MD5 encrypted) ESMTPA id t04858nAK0hJWV ; Sun, 20 Nov 2011 03:00:35 +0100 (MET) Date: Sun, 20 Nov 2011 02:00:35 +0000 (GMT) From: service Biil Gates Reply-To: service Biil Gates Message-ID: <1045412049.78172.1321754436012.JavaMail.open-xchange@com4.strato.de> X-ASG-Orig-Subj: =?UTF-8?Q?CONFIRMATION_D'ENVOI----------NOTIFICATION_DE_VOTRE______?= =?UTF-8?Q?_____________________________?= =?UTF-8?Q?__________GAIN_BILL_GATES=E2=80=8F=E2=80=8F=E2=80=8F=E2=80=8F?= Subject: =?UTF-8?Q?CONFIRMATION_D'ENVOI----------NOTIFICATION_DE_VOTRE______?= =?UTF-8?Q?_____________________________?= =?UTF-8?Q?__________GAIN_BILL_GATES=E2=80=8F=E2=80=8F=E2=80=8F=E2=80=8F?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_78170_495942728.1321754435942" X-Priority: 3 Importance: Medium X-Mailer: Open-Xchange Mailer v6.20.0-Rev30 X-Barracuda-Connect: mo-p00-ob.rzone.de[81.169.146.160] X-Barracuda-Start-Time: 1321754865 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 To: undisclosed-recipients:; X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean ------=_Part_78170_495942728.1321754435942 Content-Type: multipart/alternative; boundary="----=_Part_78171_925395489.1321754435942" ------=_Part_78171_925395489.1321754435942 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable =C2=A0 Monsieur / Madame, =C2=A0 Nous vous contactons pour vous inform=C3=A9 que vous avez=C2=A0 gagner au t= irage au sort=C2=A0 organis=C3=A9 par notre compagnie MICROSOFT CORPORATION. Vous trouverez sur le document en fichier joint des renseignements d=C3=A9t= aill=C3=A9s sur le gain. Pour entr=C3=A9 en possession du gain, veuillez adresser un mail de reconna= issance de gain au Directeur de la Banque : =C2=A0 Mr Olivier Nubel E -mail: scstandardcharteredbank297@gmail.com =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 T=C3=A9l: (0033) 645 091 962 =C2=A0 Veuillez directement r=C3=A9pondre a l'adresse Mr Olivier Nubel. Recevez to= utes les f=C3=A9licitations du groupe MICROSOFT CORPORATION. =C2=A0 Mme. ISABELLE CHEVALIER Responsable de la Campagne MICROSOFT CORPORATION. =C2=A0 ------=_Part_78171_925395489.1321754435942 MIME-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit

 

Monsieur / Madame,
 
Nous vous contactons pour vous informé que vous avez  gagner au tirage au sort  organisé par notre compagnie MICROSOFT CORPORATION.
Vous trouverez sur le document en fichier joint des renseignements détaillés sur le gain.
Pour entré en possession du gain, veuillez adresser un mail de reconnaissance de gain au Directeur de la Banque :
 
Mr Olivier Nubel
E -mail: scstandardcharteredbank297@gmail.com
       Tél: (0033) 645 091 962
 
Veuillez directement répondre a l'adresse Mr Olivier Nubel. Recevez toutes les félicitations du groupe MICROSOFT CORPORATION.
 
Mme. ISABELLE CHEVALIER
Responsable de la Campagne
MICROSOFT CORPORATION.


 

------=_Part_78171_925395489.1321754435942-- ------=_Part_78170_495942728.1321754435942 Content-Type: image/jpeg; name="NOTIFICATION MICROSOFT.jpg" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="NOTIFICATION MICROSOFT.jpg" /9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDABsSFBcUERsXFhceHBsgKEIrKCUlKFE6PTBCYFVlZF9V XVtqeJmBanGQc1tdhbWGkJ6jq62rZ4C8ybqmx5moq6T/2wBDARweHigjKE4rK06kbl1upKSkpKSk pKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKT/wAARCA20CbEDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDpGZVG WYAe5qGS8iXgEsfaqDMzHLMSfc0mK5JV5dEdKorqWXvnP3VC8d+aiaeVjkyN+BxUdFYucnuzVQit kFFFFSUFLSUtABRRRTAKKKKYhaKKKACiiimAtFFFMQUUUUALRRRTAKWkpaYgooooAKWkpaYgooop gLRRRQAUtJS0xBRRRQAtFFFMQtFFFABS0lLTEFFFFAC0UUUxBS0lLQAUUUUxBS0lLQAUUUUxC0UU UAFLSUtABRRRTELRRRQAUUUUCClpKWmAUtJS0AFFFFAgooopgFLSUtABRRRQAUtJS0CCiiigAooo pgFLSUtAgooooAKKKKACiiigAooooAWiiigAooopgFFFFABRRRQIKWkooAWikpaACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKSg BaSiigAooooAKKKKAEooooAKKKKACkpaSgAooooAKKKKACkpaSgAooooASiiigQUUUUAJRRRQAUU UUgEooooASiiigApKWkoAKSlpKACkpaSgApKWkoAKSlpKACiiigBKSlpKBBSUtJQAUlLSUgCkpaS gBKKKKAEooooEJSUtJQAUlLSUAFJS0lIBKKKKAEpKWkoEJRRRQAlFFFACUlLSUgCkpaSgQlFFFAC UlLSUAFJS0lIQUlLSUAJRRRQAlFFFAhKKKKQCUUUUCEooooASkpaSkAUlLSUCCgEqQykgjkEdqKM UAWYtRu4ukxYZzhuc/1q3FrbDAlhB56ocYH0rLxSYp3aGpNHRw6lazD/AFoQ9cPx+vSrSkMoZSCD yCO9clipIJpbdt0UhQ98dD+FUp9y1UfU6qisa31lwQLhAw/vLwfy/wD1VqQ3MM4/dSK3fGefyq00 y1JMloooplBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGRijFOxRivOsd9xuKMU7FGKLBcbijFOxRi iwXG4op2KMUWAbRTsUYp2AbRTsUYosAlFLijFFgEopcUUAFFFFMQUUUUALRRRTAKWkpaYgooooAK WkpaYgooopgLRRRQAUtJS0xBRRRQAtFFFMQtFFFABS0lLTEFFFFAC0UUUxBS0lLQAUUUUxBS0lLQ AUUUUxC0UUUAFLSUtABRRRTELRRRQAUUUUCClpKWmAUtJS0AFFFFAgooopgFLSUtABRRRQAUtJS0 CCiiigAooopgFLSUtAgooooAKKKKACiiigAooooAWiiigAooopgFFFFABRRRQIKKKKACiiigApaS igBaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopKAF pKKKACiiigAooooAKKKKACiiigBKKKKACiiigApKWkoAKKKKACiiigApKWkoAKKKKAEooooEFFFF ACUUUUAFFFFIBKKKKAEooooAKSlpKACkpaSgApKWkoAKSlpKACkpaSgAooooASkpaSgQUlLSUAFJ S0lIApKWkoASiiigBKKKKBCUlLSUAFJS0lABSUtJSASiiigBKSlpKBCUUUUAJRRRQAlJS0lIApKW koEJRRRQAlJS0lABSUtJSEFJS0lACUUtJQAlFLSYoEJRS4NJg0gEopcGjBoAbRTsGjBoAZRT8GjB oFYZijAp+DRg0WCwzAowKfg0YNFgsMwKMCn4NGDRYLDMCjAp+DRg0WCwzAoGVIKkgjkEdqfg0YNF gsXrTVXjG2cGRezDqP8AGtaGaOdN8TBl6VzeDT4ZJIX3xsVbpVKTRak1udLRVSzvkucIw2yY6dj9 Kt1oap3CiiigAooooAKKKKACiiigAooooAy8UYp2KMVx2O243FGKdijFFguNxRinYoxRYLjcUYp2 KMUWC43FGKdijFFguNxRinYoxRYLjcUYp2KMUWC43FGKdijFFguNxRinYoxRYLjcUYp2KMUWC43F LilxRiiwXEopcUYosK4lFLijFFgEpaMUUAFFFFMBaKKKBBS0lLTAKKKKAFooopiFooooAKWkpaYg ooooAWiiimIKWkpaACiiimIKWkpaACiiimIWiiigApaSloAKKKKYhaKKKACiiigQUtJS0wClpKWg AooooEFFFFMApaSloAKKKKAClpKWgQUUUUAFFFFMApaSloEFFFFABRRRQAUUUUAFFFFAC0UUUAFF FFMAooooAKKKKBBRRRQAUUUUAFFFFABS0lLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFJS0lABRRRQAUUUUAFFFFABRRRQAUUUUAJRRRQAUUUUAFJS0lABRRR QAUUUUAFJS0lABRRRQAlFFFAgooooASiiigAooopAJRRRQAlFFFABSUtJQAUlLSUAFJS0lABSUtJ QAUlLSUAFFFFACUlLSUCCkpaSgApKWkpAFJS0lACUUUUAJRRRQISkpaSgApKWkoAKSlpKQCUUUUA JSUtJQISiiigBKKKKAEpKWkoAKSlxSYPpSEJRS49qMe1ADaSn49qMe1ADKMU/HtRj2oAZikxUmPa jHtQBHtFG0VJj2ox7UAR7RRtFSY9qMe1AWI9oo2ipMe1GPagLEe0UbRUmPajHtQFiPaKNoqTHtRj 2oCxHtFG0VJj2ox7UBYj2ijaKkx7UY9qAsR7RRtFSY9qMe1AWI9oo2ipMe1GPagLEe0UbRUmPajH tQFiPaKNoqTHtRj2oCxHtFG0VJj2ox7UBYYBtIIJBHIIrTsL3fiKY/N0Vj39j71n49qMe1NaDWh0 FFVrO48+PDH94Oo9ferNWaBRRRQAUUUUAFFFFABRRRQBn4oxTsUYrmsdVxuKMU7FGKLBcbijFOxR iiwXG4oxTsUYosFxuKMU7FGKLBcbijFOxRiiwXG4oxTsUYosFxuKMU7FGKLBcbijFOxRiiwXG4ox TsUYosFxuKMU7FGKLBcbijFOxRiiwXG4oxTsUYosFxuKMU7FGKLBcbijFOxRiiwXG4oxTsUYosFx uKMU7FGKLBcbilpcUYosFxKKXFGKLAFFLiimISloooAKKKKAFooopiClpKWgAooopiClpKWgAooo piFooooAKWkpaACiiimIWiiigAooooEFLSUtMApaSloAKKKKBBRRRTAKWkpaACiiigApaSloEFFF FABRRRTAKWkpaBBRRRQAUUUUAFFFFABRRRQAtFFFABRRRTAKKKKACiiigQUUUUAFFFFABRRRQAUt JS0AFFFJnnFAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUAF FFFABRRRQAUUUUAFFFFABRRRQAlFFFABRRRQAUlLSUAFFFFABRRRQAUlLSUAFFFFACUUUUCCiiig BKKKKACiiikAlFFFACUUUUAFJS0lABSUtJQAUlLSUAFJS0lABSUtJQAUUUUAJSUtJQIKSlpKACkp aSkAUlLSUAJRRRQAlFFFAhKSlpKACkpaSgApKWigBtFLijAoAbRTsCjApAMxRin4FGBQBHtNG01J gUYFAEe00bTUmBRgUAR7TRtNSYFGBQBHtNG01JgUYFAEe00bTUmBRgUAR7TRtNSYFGBQBHtNG01J gUYFAEe00bTUmBRgUAR7TRtNSYFGBQBHtNG01JgUYFAEe00bTUmBRgUAR7TRtNSYFGBQBHtNG01J gUYFAEe00bTUmBRgUAR7TRtNSYFGBQBHtNG01JgUYFAEe00bTUmBRgUAR7TRtNSYFGBQBHtNG01J gUYFAEe00bTUmBRgUAFu5hlV+3ceorXBBGQcg1kYFadqSbdM+mKpDRLRRRTKCiiigAooooAKKKKA KmKMU7FGKxsb3G4oxTsUYosFxuKMU7FGKLBcbijFOxRiiwXG4oxTsUYosFxuKMU7FGKLBcbijFOx RiiwXG4oxTsUYosFxuKMU7FGKLBcbijFOxRiiwXG4oxTsUYosFxuKMU7FGKLBcbijFOxRiiwXG4o xTsUYosFxuKMU7FGKLBcbijFOxRiiwXG4oxTsUYosFxuKMU7FGKLBcbijFOxRiiwXG4oxTsUYosF xuKMU7FGKLBcbijFOxRiiwXG4oxTsUYosFxuKMU7FGKLBcbRTsUYoC4lFLijFACUUuKMUxBRRRQA UtJS0AFFFFMQtFFFABRRRQIKWkpaYBS0lLQAUUUUCCiiimAUtJS0AFFFFABS0lLQIKKKKACiiimA UtJS0CCiiigAooooAKKKKACiiigBaKKKACiiimAUUUUAFFFFAgooooAKKKKACiiigApaSloAKafv j6H+lOpP4h9KAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApKWkoA KKKKACiiigAooooAKKKKACiiigBKKKKACiiigApKWkoAKKKKACiiigApKWkoAKKKKAEooooEFFFF ACUUUUAFFFFIBKKKKAEooooAKSlpKACkpaSgApKWkoAKSlpKACkpaSgAooooASkpaSgQUlLRQAlJ S4oxSASkp2KMUANpMU/FGKAGYNJg1JijFAEeDRg1JijFAEeDRg1JijFAEeDRg1JijFAEeDRg1Jij FAEeDRg1JijFAEeDRg1JijFAEeDRg1JijFAEeDRg1JijFAEeDRg1JijFAEeDRg1JijFAEeDRg1Ji jFAEeDRg1JijFAEeDRg1JijFAEeDRg1JijFAEeDRg1JijFAEeDRg1JijFAEeDRg1JijFAEeDRg1J ijFAEeDRg1JijFAEeDRg1JijFAEeDRg1JijFAEeDRg1JijFAEeDRg1JijFAEeDRg1JijFAEeDRg1 JijFAEeDRg1JijFAEeDV+2/1C/j/ADqpirlv/qVpoaJKKKKYwooooAKKKKACiiigCvijFOxRis7G lxuKMU7FGKLBcbijFOxRiiwXG4oxTsUYosFxuKMU7FGKLBcbijFOxRiiwXG4oxTsUYosFxuKMU7F GKLBcbijFOxRiiwXG4oxTsUYosFxuKMU7FGKLBcbijFOxRiiwXG4oxTsUYosFxuKMU7FGKLBcbij FOxRiiwXG4oxTsUYosFxuKMU7FGKLBcbijFOxRiiwXG4oxTsUYosFxuKMU7FGKLBcbijFOxRiiwX G4oxTsUYosFxuKMU7FGKLBcbijFOxRiiwXG4oxTsUYosFxuKMU7FGKLBcbijFOxRiiwXG4oxTsUY osFxuKMU7FGKdguJRS4oxRYLiUUuKMUBcSilxRigBKWjFGKAClpKWgAooooEFFFFMApaSloAKKKK AClpKWgQUUUUAFFFFMApaSloEFFFFABRRRQAUUUUAFFFFAC0UUUAFFFFMAooooAKKKKBBRRRQAUU UUAFFFFABS0lLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FJS0lABRRRQAUUUUAFFFFABRRRQAUUUUAJRRRQAUUUUAFJS0lABRRRQAUUUUAFJS0lABRRRQAlFF FAgooooASiiigAooopAJRRRQAlFFFABSUtJQAUlLRigBKSlxRigBKSnYoxQA2inYoxQAzFGKfijF ADMe1GPan4oxQAzHtRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qfij FADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qf ijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9 qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtR t9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNv tRt9qfijFADNvtRt9qfijFADNvtRt9qfijFADNvtVtF2oF9KjiTncegqamAUUUUDCiiigAooooAK KKKAIsUYp1FSUNxRinUUANxRinUUANxRinUUANxRinUUANxRinUUANxRinUUANxRinUUANxRinUU ANxRinUUANxRinUUANxRinUUANxRinUUANxRinUUANxRinVR1PVINM8vz0kbzM42AHpj1PvQFy5i jFYv/CU2P/PK4/75X/Gj/hKbH/nlcf8AfK/40WC5tYoxWL/wlNj/AM8rj/vlf8a1rS5jvLZLiHOx xkZGCPaiwXJMUYp1FADcUYp1FADcUYqhqOs22nTrDMkrMy7soARjJHc+1VP+Epsf+eVx/wB8r/jR YLm1ijFYv/CU2P8AzyuP++V/xo/4Smx/55XH/fK/40WC5tYoxTYJVngjmQELIoYA9cEZqSgBuKMV i/8ACU2P/PK4/wC+V/xo/wCEpsf+eVx/3yv+NFgubWKMVi/8JTY/88rj/vlf8aP+Epsf+eVx/wB8 r/jRYLm1ijFYv/CU2P8AzyuP++V/xo/4Smx/55XH/fK/40WC5tYoxWZZa9aXt0lvFHMHfOCyjHAz 6+1atAXG4oxTqKAG4oxTqrXeoWllj7TOqE9F6n64HOOOtAXJ8UYrm7rxU2cWluAM/elPUfQf41Tm 8SajJjY0cOOuxM5/PNOwXOwxRiuLXxBqasCbgMAc7TGuD7cCrsPiudc+faxv6bGK4/PNFgudPijF ULHW7G9bYjmOQnAWQYJ+nbv061o0guNxRinVHPKsEEkzglY1LEDrgDNADsUYrF/4Smx/55XH/fK/ 40f8JTY/88rj/vlf8aLBc2sUYrF/4Smx/wCeVx/3yv8AjR/wlNj/AM8rj/vlf8aLBc2sUVi/8JTY /wDPK4/75X/Gj/hKbH/nlcf98r/jRYLm3RVCPXNNlcIt0oJ/vKVH5kYrQoC4lFLRQAlFLRQAlLRR QAUU2SRIULyuqIOrMcAVh3nii3jDLaRtM/ZmG1enX1/DimBvUVx8nie/dCqrDGT/ABKpyPzJFQf8 JBqn/P1/5DX/AAosK529LXJL4qvAw3wwFc8gAgkfXNa9l4hsbohXY274/wCWn3c98H/HFAGtRRRQ AUUUUAFFFFABRRWbf67ZWMoiZmlfncIsHb7Hnr7UAadFcnN4ruSwMNtEi46OSxz9Riq7+JdRaVXV o0UYyipw31zz+tMR2lFcpD4suQx862idccBCVOfqc1ah8WQNnz7WRPTYwbP54oA6GiqlrqdleHEF yjMTgKeGPfoeat0DCiiigQUUUUAFFVb7UrSwXNxKA2MhByx69vw69KwbvxXJvxZ26hB3l5J/AHjv 3NAHUUVxU3iTUpGBSRIhjG1EBH15zRD4k1KNiXkSUYxtdAB9eMUAdrS1y1p4rkEmLy3Uoe8XBH4E 89u4resdStL9c28oLYyUPDDp2/Hr0oAt0UUUAFFFFABRUF9dx2Nq9zKGKJjIUc8nH9ayf+Ersf8A nlc/98r/AI0AbtFYX/CV2P8Azyuf++V/xo/4Sux/55XP/fK/40AbtFYX/CV2P/PK5/75X/Gj/hK7 H/nlc/8AfK/40AbtFYX/AAldj/zyuf8Avlf8aP8AhK7H/nlc/wDfK/40AbtFYX/CV2P/ADyuf++V /wAanvvEFpY3T20scxdMZKqMcjPr70Aa1FYX/CV2P/PK5/75X/Gj/hK7H/nlc/8AfK/40AbtFYX/ AAldj/zyuf8Avlf8aP8AhK7H/nlc/wDfK/40AbtFYX/CV2P/ADyuf++V/wAaP+Ersf8Anlc/98r/ AI0AbtFYX/CV2P8Azyuf++V/xo/4Sux/55XP/fK/40AbtFYX/CV2P/PK5/75X/Grem63balO0MKS qyruJcADGQOx96ANKiiigAooooAKKKKACiiigAoqC7vbayTfczLGD0z1P0HU9awLzxZ0Flb/AFab +WAfpzmgDpqK4ybxPqMigJ5URznciZP05zUP/CQ6p/z9f+Q1/wAKAO5ork4fFlyGJmtonXHAQlTn 6nNbFr4h065O0ymFicASjH456frQBqUUUUAFFFFABRRUVxcw2sRlnlWNB3Y9fYep9qAJaK5y98VR qCtlCXbJG+ThfqB1Pf0rPm8T6jIoCeVEc53ImT9Oc0AdnRXDr4i1RWBNwGAOSpjXB9uBVuLxZdhw ZbeFk7hcqfzyf5UAdbRWbY67Y3zbEkMchOAkvBPTp279OtaVABRRRQAUUVHPKsEEkzglY1LEDrgD NAElFYX/AAldj/zyuf8Avlf8aP8AhK7H/nlc/wDfK/40AbtFYX/CV2P/ADyuf++V/wAaP+Ersf8A nlc/98r/AI0AbtFYX/CV2P8Azyuf++V/xo/4Sux/55XP/fK/40AbtFZsGvabOVUXIRmGcOCuPYnp +taCsrqHRgysMgg5BFADqKKKACiiigAorGn8S2UE8kLxTlo2KkhRjIOPWo/+Ersf+eVz/wB8r/jQ Bu0Vhf8ACV2P/PK5/wC+V/xo/wCErsf+eVz/AN8r/jQBu0Vhf8JXY/8APK5/75X/ABo/4Sux/wCe Vz/3yv8AjQBu0VSttX0+6bZFdIWyAA2VJJ9M4z+FXaACiiigAooooAKKKazKil3YKqjJJOABQA6k rGvfE1nblkhDXDjuvC5z6/4A1kN4pv2UgJApIwGCnI9+TQB2FFcP/wAJDqn/AD9f+Q1/wqwvim/V QCkDEDBYqcn34NAHYUVi2XiazuCqTBrdz3blc59f8QK2VZXQOjBlYZBByCKAFooooAKKKKACisaf xLZQTyQvFOWjYqSFGMg49aZ/wlVj/wA8rj/vlf8AGgDborE/4Sqx/wCeVx/3yv8AjSf8JVY/88rj /vlf8aANyisP/hKrH/nlcf8AfK/40f8ACVWP/PK4/wC+V/xoA3KSsqHxHpsikvI8Rzja6HP14zWl DNFOpaGVJFBxlGBGfwoAfRRRQAUUUUAFJS0lABRRWRc+IrK3uJIWSZmjbaSqjGe/U0Aa1FYv/CUW P/PK4/75X/Gj/hKLH/nlcf8AfK/40AbVFZdlr1re3SW8Ucwd84LAY4GfX2rUoEJRS4oxQAlFVtRv otOgWaZXZWbb8gBOcE+vtWd/wlFj/wA8rj/vlf8AGgDZorG/4Six/wCeVx/3yv8AjR/wlFj/AM8r j/vlf8aANmjFY3/CUWP/ADyuP++V/wAaP+Eosf8Anlcf98r/AI0AbOKTFY//AAlFj/zyuP8Avlf8 aP8AhKLH/nlcf98r/jQBsYoxWP8A8JRY/wDPK4/75X/Gj/hKLH/nlcf98r/jQBsYoxWP/wAJRY/8 8rj/AL5X/GtGa+ih04XzK5iKq2ABuwcY/nQBPijFY/8AwlFj/wA8rj/vlf8AGj/hKLH/AJ5XH/fK /wCNAGxijFY//CUWP/PK4/75X/Gj/hKLH/nlcf8AfK/40AbGKMVj/wDCUWP/ADyuP++V/wAaP+Eo sf8Anlcf98r/AI0AbGKMVU03U4NS8zyEkXy8Z3gDrn0PtV7FIBmKMU/FGKAGYoxT8Vl3mv2NsGCP 58g6LHyOnr0x9M0AaOKMVyzeKLwsdsMAXPAIJIH1zVb+3tT/AOfn/wAhr/hTA7LFGK5OPxLfogVl hkI/iZTk/kQK0rPxNbyBVuo2ifuyjcvTr6/hzQBtYoxRG6SoHidXQ9GU5Bp+KQDMUYp+KMUAMxRi n4rO1HWLbTp1hmSVmZd3yAEYyR6+1AF7FGKx/wDhKLH/AJ5XH/fK/wCNH/CUWP8AzyuP++V/xpgb GKMVj/8ACUWP/PK4/wC+V/xrTsbuK/thPDnaSRg4yCPXFAEuKMU/FGKQDMUYp+KxP+Eosf8Anlcf 98r/AI0AbGKMVj/8JRY/88rj/vlf8aP+Eosf+eVx/wB8r/jTA2MUYp+KMUgGYoxT8UYoAZijFPxR igBmKMU/FGKAGYoxT8UYoAZijFPxRigBmKMU/FGKAGYoxT8UYoAZijFPxRigBmKMU/FGKAGYoxT8 UYoAZijFPxRigBmKMU/FGKAGYoxT8UYoAZijFPxRigBmKMU/FGKAGYoxT8UYoAZijFPxRigBmKVU 3Gnhc08AAYFMAAwMCloooGFFFFABRRRQAUUUUAFFFFADcUYoopDDFGKKKADFGKKKADFGKKKADFGK KKADFGKKKADFGKKKADFGKKKADFGKKKADFGKKKADFGKKKADFGKKKADFGKKKADFGKKKADFc14y/wCX P/gf/stdLXNeMv8Alz/4H/7LQBzVFFFMQV1vhK5MtjJbsSTC2RwMAN2/MH865KtbwxcLBqyq2MSq Y8k4weo/lj8aAO0xRiiikMMUYoqrqtybPTp5wSGVcKQM4Y8A8+5FAHF6vP8AadUuZcqQXIBXoQOA fyFU6KKYgooooA9B0z/kGWn/AFxT/wBBFWcVW0z/AJBlp/1xT/0EVZpDPNaKKKYgooooAKKKKANL w5/yG7f/AIF/6Ca7jFcR4b/5Ddv/AMC/9BNdvSGGKMUVQ1nUl0y08wKHlc7UUnv6n2H+FAFXXdaW wUwQENcsPqIx6n39v8nkp5pLiZppnLyOcljTGZnYs7FmY5JJySaSmIKKKKACiiigArW0rXbixKxy kzQZGQTllHT5f8PbtWTRQB6JaXMd5bJcQk7HGRkYI9RTNT/5Bl3/ANcX/wDQTVbw3/yBLf8A4F/6 Eas6n/yDLv8A64v/AOgmkM8+ooopiCiiigAooooAKvaZqtxpz/u23RFsvGejf4H/AOtVGigD0Oyu 4b63WeBsqeoPVT6H3qfFcJouoNp98jliIXO2Udsev4df/wBdd3SGGKMUUUAGKr395FYWzTzZ2ggY XGST6ZqdmVFLOwVVGSScACuF1nUm1O78wApEg2opPb1Puf8ACgBupancajMWkYrHn5YgflX/ABPv VKiimIKKKKACiiigDY0bXZLE+Vcl5bfHAzlk9MZ7e3+T2KsrqGRgysMgg5BFebVveGdV+zyiynZj HIwEZ6hWPb6H/PU0DOsooopAFIzKilnYKqjJJOABS1zPirU23HT4sbcAynHOeoH8jQBV1vXJLxzD auyW4yCRwZPr7e35+2LRRTEFFFFABRRRQAV0XhzWLqS9SznczI4OGY/MpAJ69/xrna0/Df8AyHLf /gX/AKCaAO4ooooAKxdd1wWG62gGbgqDu4ITP9fb3q3rOprplp5gAeVztRSe/qfYf4VwjMzsWdiz Mckk5JNAD55pLiZppnLyOcljUdFFABRRRQAU6KSSFxJE7I46MpwR+NNooA7LQtcF/ttpxi5Ck7uA Hx/X29q2q80VmRg6MVZTkEHBBrudD1NdStOc+fEAJMjqfX8cGgDSooooAzPEn/IDuf8AgP8A6EK4 au58Sf8AIDuf+A/+hCuGoAKKKKACiiigAooooAK0/En/ACHLn/gP/oIrMrT8Sf8AIcuf+A/+gigD MooooAKKKKACiiigAooooAK3PCH/ACFJf+uJ/wDQlrDrc8If8hSX/rif/QloA7CiiigAooooAKKK KACsvWdaj0weWEL3DLuUY+Udsn9enp2qzqd/HptoZ5AW52qo/ib09q4KeaS4maaZy8jnJY0ALcXM 11KZZ5Wkc92PT2HoPaoqKKACiiigAooooA1NM127sCEZjPABjy2PT0we3Tp0rsrO5jvLaO4hJ2OM jIwR6ivOa7nw3/yA7b/gX/oRoA06KKhvLmOztpLiYnYgycDJPoKAK2r6nHpdusjJ5js2FTdjPqfp /wDWrir2+uL+YyXEhbkkLn5V9gO1F/eSX9288pPzH5VJztXsKr0AFFFFABRRRQAV0eh+IXDi31CT KnASU/w+ze3v+ftzlFAHplFc94X1XzUFhN99FJjYn7w9PqP5D2roaACquqf8gu7/AOuL/wDoJq1V XVP+QXd/9cX/APQTQB57RRRQAUUUUAFFFFABV3TNUuNNmDRsWjz80RPyt/gfeqVFAHoOmX8epWgn jBXnayn+FvT3q3XA6PqL6beCT5jE3EiA/eH+I/z1rvFZXUOjBlYZBByCKAHUUUUAee6p/wAhS7/6 7P8A+hGqtWtU/wCQpd/9dn/9CNVaACiiigAooooAK1NM127sCEZjPABjy2PT0we3Tp0rLooA9Fsr yG+t1ngbKnqD1U+h96nrhdD1NtNu+ceRKQJMjoPX8Mmu6oAKKKKAIrm4jtbeSeU4SNcn39vrXF6x rM2oylVLR2w4WPP3vdvU/wAqdr+q/wBo3ASFm+zR/dB43H+9j/P61lUAFFFFABRRRQAVqaRrc+nM sbkyW2TlO4z3H+HTr9ay6KAPSIJo7iFZoXDxuMhhT64vw7qv2C48mX/UTMASTjYfX0x6/wD1q7Sg AooooA891P8A5Cd3/wBdn/8AQjVarOp/8hO7/wCuz/8AoRqtQAUUUUAFFFFABUtvcTWsokgkaNx3 U9fY+o9qiooA7XRdZXUt0bx+XOi5IHIYdyPTnt/OtSvOoJpLeZZoXKSIchhXd6ZeLf2Mc4xuIw4H Zh1/z6YoAtUUtFACUUtFADGZUUs7BVUZJJwAK87nlaeeSZwA0jFiB0yTmu412VodHuXUAkrt59CQ D/OuEoAKKKKAJ7Gf7Newz5YBHBO3qRnkflXoOK83r0DTbj7Vp8ExbezINxxjLDg/rmgCxijFOooA wvFv/IMj/wCuw/8AQWrkq67xd/yDI/8ArsP/AEFq5GgAooooAKKKKACiiigAooooAK63UP8AkUl/ 64xfzWuSrrtQ/wCRRT/rjF/NaAORooooAKKKKACiiigDpPB3/L5/wD/2aukxXOeDf+Xz/gH/ALNX S0ANxSMVRSzsFVRkknAAp9ct4m1Yuz6fDjYpHmN1yeuB9P5/qAQazrsl0zwWrFLbG0nGDJ/gPb8/ SsWiigAooooAKKKKALmm6ncadMGjYtHn5oyflb/A+9dlpt9HqNqJ4wV52sp/hPp71wNXtI1FtOvB J8xibiRAfvD/ABH+etAHdYoxSRSJNEksZyjqGU+oNPoAbiuS8W/8hOP/AK4j/wBCauvrkfF3/ITj /wCuI/8AQmoAw6KKKACt/wAJ3YjuZLRycSjcnPGR149x39qwKms7hrW6inXOY2DYBxkdxn36UAeh YoxSRSJNEksZyjqGU+oNPoAbivN69KrzWgAooooA9IxRinUUANxRinUUANxRinUUANxRinUUANxR inUUANxRinUUANxRinUUANxRinUUANxRinUUANxRinUUANxRinUUANxRinUUANxRinUUANxRinUU ANxRinUUANxRinUUANxRinUYoAbinBfWlxiloAKKKKACiiigAooooAKKKKACiiigAooooASilooA SilpKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACua8Z/ 8uf/AAP/ANlrpa5rxn/y5/8AA/8A2WgDmaKKKACnRSPDKksZw6MGU+hFNooA9IglWeCOZAQsihgD 1wRmn1keF7r7RpYjZsvCxQ5bJx1H0Hb8K16ACue8X3Wy3htVPMjb2w3YdMj0JP6V0NcR4kuRc6vI FIKxARggEdOv6k0AZdFFFABRRRQB6Fpf/IMtP+uKf+girNVtL/5Blp/1xT/0EVZoA89/s2+/58rj /v03+FNlsruFDJLazIg6s0ZAH416JWZ4k/5Adx/wH/0IUAcPRRRQAVZ/s2+/58rj/v03+FVq9LoA 47w/ZXcOsQSS2syIN2WaMgD5T3rsaKKACuE1zUTqN6WX/Ux5WMZPIz1+p/wrqvENyLbSJjkbpB5a gg856/pmuFoAKKKKACnRRyTOI4kZ3PRVGSfwq/oulvqdwV3bIY8GRh156Ae5xXaWtrBZw+VbxiNM 5wOcn60AcN/ZWoeV5n2Obbu242HOfp1x71UZWRirqVZTggjBBr0qq1/p9tqEQjuE3YztYHBU+xoA 89orR1fSJtMddx8yFvuyAY59COxrOoA7jw3/AMgO3/4F/wChGrWqf8gy7/64v/6Caq+G/wDkB2// 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 596M+9MzRmiwD8+9GfemZozRYB+fejPvTM0ZosA/PvRn3pmaM0WAfn3oz702iiwDs+9GabS0ALmj NJS0gDNLSUtAwooooAWiiikAtFFFABS0lLQAUUUUgFooooAKKKKQBS0lLQAUUUUALRRRQMKKKKQB S0lLQAUUUUAFFFFABRRRQAUtJS0AFFFFIAooooAKKKKACiiigAooooAWiimn74Hsf6UAOooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEpaKKACiiigAooooAKKKKACiiigAooopA FFFFACUUUUAFFFFABRRRQAUUUUAFFFFIAooooAKKKKACiiigAooopAFFFFAwooooAKKKKQBRRRQA UlLSUgCiiigAooopAFFFFABRRRSAKKKKACiiikAUUUUAFJS0lIAooopDCiiigAooopAFFFFFwCii ii4BRRRSuAUUUUXAKKKKLgFFFFFwCiiii4BRRRRcAoooouAUUUUXAKKKKLgFFFFFwCiiii4BRRRR cAoooouAUUUUXAKKKKLgFFFFFwCiiii4BRRRRcAoooouAUUUUXAKKKKLgFFFFFwCiiii4BRRRRcA pR1pKVauGsgHUUUV0khRRRQAUUUUAFFFFAGfk0ZNMyKMiumxA/JoyaZkUZFFgH5NGTTMijIosA/J oyaZkUZFFgH5NGTTMijIosA/JoyaZkUZFFgH5NGTTMijIosA/JoyaZkUZFFgH5NGTTMijIosA/Jo yaZkUZFFgH5NGTTMijIosA/JoyaZkUZFFgH5NGTTMijIosA/JoyaZkUZFFgH5NGTTMijIosA/Joy aZkUZFFgH5NGTTMijIosA/JoyaZkUZFFgH5NGTTMijIosA/JoyaZkUZFFgH5NGTTMijIosA/Joya ZkUZFFgH5NGTTM0UWAfk0ZNMpaLAOyaMmm0tAC5NGTSUtAC5opKWkMKWkpaAClpKWkAUtJS0AFLS UtIApaSloAKWkpaQwooooAWiiikAtFFFABS0lLQAUUUUgFooooAKKKKQBS0lLQAUUUUALRRRQMKK KKQBS0lLQAUUUUAFFFFABRRRQAUtJS0AFFFFIAooooAKKKKACiiigAooooAWmn/WL9D/AEp1JgZz 3oAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooopAFFFFACUUUUAFFFFABRRRQAUUUUAFFFFIAooooAKKKKACiiigAooopAFFFFAwooooAK KKKQBRRRQAUlLSUgCiiigAooopAFFFFABRRRSAKKKKACiiikAUUUUAFJS0lIAooopDCiiigAooop AFFFFIAooopAFJS0lABRRRSAKKKKQBRRRQAUUUUrjCiiii4BRRSUXAWikopXAWikoouAtFJRRcBa KSii4C0UlFFwFopKKLgLRSUUXAWikoouAtFJRRcBaKSii4C0UlFFwFopKKLgLRSUUXAWikoouAtF JRRcBaKSii4C0UlFFwFp44FIo7mnV10oWV2SwooorYQUUUUAFFFFABRRRQBkbjRuNR596M+9dtjM k3Gjcajz70Z96LASbjRuNR596M+9FgJNxo3Go8+9GfeiwEm40bjUefejPvRYCTcaNxqPPvRn3osB JuNG41Hn3oz70WAk3Gjcajz70Z96LASbjRuNR596M+9FgJNxo3Go8+9GfeiwEm40bjUefejPvRYC TcaNxqPPvRn3osBJuNG41Hn3oz70WAk3Gjcajz70Z96LASbjRuNR596M+9FgJNxo3Go8+9GfeiwE m40bjTM+9GaLAP3GjcaZS0WAduNGabS0WAXNLmm0tIBc0UlLQAtFFFIYtLSUtABS0lLSAKWkpaQB S0lLQAUtJS0hhS0lLQAUtJS0gClpKWgApaSlpAFLSUtABS0lLSGFFFFAC0UUUgFooooAKWkpaACi iikAtFFFABRRRSAKWkpaACiiigBaKKKBhRRRSAKWkpaACiiigAooooAKKKKAClpKWgAooopAFFFF ABRRRQAUUUUAFFFFAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRSAKKKKAEooooAKKKKACiiigAooooAKKKKQBRRRQAUUUUAFFF FABRRRSAKKKKBhRRRQAUUUUgCiiigApKWkpAFFFFABRRRSAKKKKACiiikAUUUUAFFFFIAooooAKS lpKQBRRRSGFFFFABRRRSAKKKKQBRRRSAKSlpKACiiikAUUUUgCiiikMKKKKQCUUUUAFFFFIAooop AFFFFIAooooAKKKKVwCikoouMWikopXAWikoouAtFJRRzALRSUUcwC0UlFHMAtFJRRzALRSUUcwC 0UlFHMAtFJRRzALRSUUcwC0UlKAT0pq7dkIKeq45NAUCnV206NtZEthRRRXQIKKKKACiiigAoooo AKKKKAMHcKNwqPJoya9Gxjck3CjcKjyaMmiwXJNwo3Co8mjJosFyTcKNwqPJoyaLBck3CjcKjyaM miwXJNwo3Co8mjJosFyTcKNwqPJoyaLBck3CjcKjyaMmiwXJNwo3Co8mjJosFyTcKNwqPJoyaLBc k3CjcKjyaXNFgH7hRuFMpaLAOzRmm0tAC5ozSUtIYUtJS0ALRRRSAWiiigBaKKKQxaWkpaQBS0lL QAUtJS0gFooopDFpaSloAKWkpaQBS0lLSAKWkpaAClpKWkMKWkpaAClpKWkAUtJS0AFLSUtIApaS loAKWkpaQwooooAWiiikAtFFFABS0lLQAUUUUgFooooAKKKKQBS0lLQAUUUUALRRRQMKKKKQBS0l LQAUUUUAFFFFABRRRQAUtJS0AFFFFIAooooAKKKKACiiigApaKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKQBRRRQAlFFFAB RRRQAUUUUAFFFFABRRRSAKKKKACiiigAooooAKKKKQBRRRQMKKKKACiiikAUUUUAFJS0lIAooooA KKKKQBRRRQAUUUUgCiiigAooopAFFFFABSUtJSAKKKKQwooooAKKKKQBRRRSAKKKKQBSUtJQAUUU UgCiiikAUUUUhhRRRSASiiigAooopAFFFFIAooopAFFFFIAooooASiiikMKKKKQBRRRSAKKKKQBR RSUALRSUUrgLRSUUXAWikopXAWikoouAtFIOelOCE+1XGMpfCgEoAJ6CpAgHvTq6oYVv4mTzDAnr T6KK64QjBWRNwoooqwCiiigAooooAKKKKACiiigAooooA5rIoyKSVHifbIhVvQ03Neruc4/IoyKZ mjNFguPyKMimZozRYLj8ijIpmaM0WC4/IoyKZS0WAdkUZptFADs0UlFIYtFFFAC0UUUgFooooAWi iikMWiiigBaWkpaQBS0lLQMKWkpaQC0UUUgFooooAWiiikMWlpKWkAUtJS0AFLSUtIBaKKKQxaWk paAClpKWkAUtJS0gClpKWgApaSlpDClpKWgApaSlpAFLSUtABS0lLSAKWkpaAClpKWkMKKKKAFoo opALRRRQAUtJS0AFFFFIBaKKKACiiikAUtJS0AFFFFAC0UUUDCiiikAUtJS0AFFFFABRRRQAUUUU AFLSUtABRRRSAKKKKACiiloASloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBKKWigBKKWikAlFLRQAlFLRR YBKKWiiwCUUtFFgEopaSiwBRRRRYAooopWAKKKKLAFFFFFgCiiiiwBRRRS5QCkpaMUcrGJRS4oxR ysBKKXFGKOVgJRS4oxS5WAlFLijFHIwEopcUYpcjASilxRijkYCUUuBRgUcjC4lJTsCjApezYXG0 U7AowKPZsLjaKdgUYFHs2FxtFOwKMCl7NhcbRTsCjAo9kwuNop2BRgUvZMLjaSn4FGBR7KQXGUU/ AowKXsZBcZRT9oo2ij2MguMop+0UbR6UvYyHcZRT9o9KNo9KPYyC5HRUm0elG0elL2EguR0VJtHp RtHpR7CQXI6Kk2j0pNo9KXsJBcZRT9o9KNo9KPq8guMop+0elG0elL6vILjKKftHpRtHpR9XkFyO ipNo9KNo9KX1aYXI6Kk2j0o2j0o+rT7hcjoqTavpRtX0pfVp90HMR0VJsX0o2L6UfVZ90PmI6Spd i+lGxfSl9Vn3QcxFRUuxfSjao7UfVZ90HMRUVNgegpapYR9WLmIdp9DS7GqWirWEh1YcxGI/U04I o7U6itY0KcdkK7E6UtFFbCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAayq6lXUMp6g jIqrLpltJ0UoSc5U1coqlJx2YmkzHk0eQY8uZW9dwI/xqq9jdR43Qsc/3fm/lXRUVssRNbkuCOWI Kkgggjgg0V07KrqVdQynqCMioXsbaTG6FRj+7x/KtFiV1RPsznqWtp9KtmORvT2U/wCNRvo6E/JM yj/aGf8ACrVeDFyMyaWtP+x/+m//AI5/9eov7Jn/AL8f5n/Cq9tB9Q5WUaKvf2TP/fj/ADP+FL/Z M/8Afj/M/wCFHtYdw5WUaKvf2VP/AH4/zP8AhR/ZU/8Afj/M/wCFHtYdw5WUqKvf2VP/AH4/zP8A hR/Zc/8Afj/M/wCFL2sO4crKVFXf7Ln/AL8f5n/Cl/suf+/H+Z/wo9pDuHKylRV3+y5/78f5n/Cj +zJ/70f5n/Cl7SHcfKynRVz+zJv70f5n/Cl/syb+9H+Z/wAKPaQ7hZlOirn9mzf3o/zP+FH9mzf3 o/zP+FL2ke4WZUpat/2bN/ej/M/4Uf2bN/ej/M/4Ue0j3CzKlLVv+zpv7yfmf8KP7Om/vJ+Z/wAK XtI9x2ZUpatf2dN/eT8z/hS/2fN/eT8z/hR7SPcLMq0Va/s+X+8n5n/Cj+z5f7yfmf8ACl7SPcLM rUVa+wS/3k/M/wCFH2CX+8n5mjnj3CzK1FWvsEv95PzNH2GX+8n5mlzx7hZlalqx9hl/vJ+ZpfsU v95PzNHPHuOzK1LVj7FJ/eT8zR9ik/vJ+Zpc8e4WZXpasfYpP7yfmaPscn95fzo549wsQUVY+xye q/nR9kk9V/Olzx7hYgpam+ySeq/nS/ZJPVfzo5kFiClqb7LJ6r+dH2V/VaXMh2IaWpvsr+q0fZX9 Vo5kFiGlqX7M/qtL9mf1WlzILENLUv2Z/VaPs7+q0cyCxFS1L9nf1Wj7O/qtLmQWIqWpPs7+q0vk N6ijmQEVLUnkN6ijyG9RS5kBHS1J5Leoo8lvUUXQyOlp/kt6ijyW9RRdAMpaf5Teoo8pvUUroBlF P8pvUUeU3qKLoBtFP8tvUUeWfUUroBtFO8s+oo8s+1F0A2lp3ln2o2H2ouA2inbD7UbD7UrgJRS7 D7Uuw+1FwG0U7YfajaaLjG0tLtNG00AJRS7TS7TQAlFLtNG00gEopdpoxQAlLRijFABRRijFABRS 4oxQAlFLijFIBKWiloASjFLRQAlLRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUlABTTIoOKZI5zgVH9aaQFkEHpS1WViCKsDkUNALRRRSAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACimlgvWlBzQAtJS0lAEEn3zTafL96mVaAB1qyOlVh1FWR0qWAtFF FIAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApCcCikY/LQBAzljTo3wcHpTKKuwFguAOo pgl4qKilYAJyc0UUVQB3qdHBHWoKKlgWaWoYn5wamqQCiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikoJA70A LRTC496N/tQA+io959BRvPpQBJRUe8+lLv8AUUAPopodT3paAFopKWgAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACkpaikfBwKAElJBGKjyfWlZi3Wkq0gCiiigAooooAK KKKACiiigB0f3qsVXi+/VipYBRRRSAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACisL/AISux/55XP8A 3yv+NH/CV2P/ADyuf++V/wAaAN2iqVlq1lfELBMPMIB2Nw309/wzV2gAoorA1fX5ba9W1sUjmYcN kFvmz90Y7/4+1AG/RUFkbo26teCMTHkrGDhfbqcmlvLmOztpLiYnYgycDJPoKAJqK4y58TahK2Yi kCgnAVQSR7k/0xWv4Z1K5v1uBcuHMZUq20A8544+lAG5RRRQAUUUUAFFFFABRRWbLrVtFK8bJKSj FTgDt+NJtLcuFOU/hVzSoqvZ3cd7EZIwwAbb8w/z61Ypp3JlFxdmFFULnV7a3mMR3uy9dgBAPp1p 1nqcN7KY41kBC7vmA/x96nmV7GnsaijzW0LtFMkljiXdI6oM4yxxVWXVbKIsDMGIHRQTn6HpTbS3 JjCUvhVy7RVSyv471n8pGAQfMW469P5GrdCd9hSi4u0goqveXkNnGHlJ5OAo6ms1vEA3HbbEjPBL 4/pScktzSFCpUV4o2qKrWd/BeA+Ux3AZKsMEVZpp32M5RcXZoKKKKZIUUVUvdRhsmRZAzFhnC4OP 1pN23KjFydoluiqFrq1vdTrCiSBmzgsBjpn1q/QmnsOcJQdpKwUUVl3OuQRMUiQykHGc4U/Q0Npb hCnKo7RRqUVk2+uwu2JozEOzA7h+NaqsGUMpBBGQR3oUk9hzpTp6SQtFVry/gswPNY7iMhVGSazl 8QDcN1sQM8kPn+lJyS3KhQqTV4o2qKr2d5DeRl4ieDgqeoqxVJ3MpRcXZhRRVO91KCydUkDszDOF HQUm0txxjKbtFFyiq1tfRXEBm2tFEDjdJgA/rTZNTso2w1wpOM/Llv5UXQ/ZzvaxboqjZ6nFeTeX EjggbiXwOP8AOKvUJp7ClCUHaSCiop54raPzJnCLnGazJdfiGPKgdvXcQv8AjSckty4UZ1PhRsUV lWmtC4uFiNuyljgFW3f5FatNNPYVSnKm7SQUUVn3GsW1vO0TLIxU4JUAj+dDaW4oQlN2irmhRUNp cLdQCZFZVJON2Ofypt5dx2UQkkDEFtvyj/PpRdWuLklzcttSxRWX/b1r/wA85vyH+NH9vWv/ADzm /If40uePc1+r1f5TUopFJKgkFSR0Paobq7htE3TNjPQDkmquYqLbsieiseTxBGG/d27MMdWbb/jU 1hqwvJ/K8hkJGQQdwH19Knni3Y2eGqxjzNaGlRTJZBFE8jZIRSxx7Vnf29a/885vyH+NNyS3IhSn P4Vc1KKy/wC3rX/nnN+Q/wAavWlwt1AJkVlUk43Y5/KhST2CdKcFeSsTUUVDd3MdpAZZM4BAwOp+ lMhJt2RNRWfb6vBczrDHHLuY8ZA/xrQpJp7FThKDtJBRVO81O2tG2OSz91QZIqi3iAbjttiRngl8 f0pOcUXDD1Jq6RtUVU0++F9GzCJkKnBzyPwP+etW6ad9UZyi4vle4UUUUyQooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikpCwH1oAWml/Tmm8s acE9aAGksaUJTwMUtADNgpQo9KdRQAmB6UYHpS0lACbR6UbRTqSgBpSm7Svc1LRQBHvI6jNODA9D QVBphQigRJS1GHI+9+dPBBGRQMWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA qu5y3FT1XcYY00AlFFFUAUUUUAFFFFABRRRQAUUUUwFBIOanU7hmq9OjbaaloCxRSDmlqQCiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigDzOuubwpZFSEmnDY4JIIB+mK5Gusn8V2whbyIZTLj5d4AXPvg0Acx KklrdPHuxJC5G5T0IPUGvQbOVp7OCZwA0kasQOmSM1xFjp93q92XAO12LSTFflB6n8eeldyqx20A UYSKJcDJ4VQPU0ANu5IkgYTTiBXBUPvCkEjsT3rB0x9AsbjzIbpnlb5VaVT8v0O0AfWsa8vLjWtQ jDELvYJGmflTJx/+s1rX/hmK3095oZ3MsS7m342sAOcYHH6/1oA6VWV1DowZWGQQcgisDxZcwSWC RRzxvIsw3IrgkYDdRWf4VvJItQFrkmKYH5c8BgM5/TH/AOqma9pU9rLLeSPGY5pjtCk5GcnnigBn hr7Kupb7to1VELIZGAAbIx179a7KGSCfdLA8cn8JdCD07ZH1/WuD03T5dSnaGFkVlXcS5IGMgdh7 11+g6fLptm8MzIzNIWBQkjGAO49qANKiiigAqFru2SbyWuIllyBsLgNk9OKmrgp9J1IXbRtbyyOW 5kAJVie+7/H8aAO9oqK1SSO1hjlbfIqKGbOckDk5qWgBGYKpZiAAMkntXHgPcTOSQXIZyT3wCTXT arIY9OnZcZK7efc4/rWJokCT3jCTJAjbjPXPH8jWNTVpHo4T3KcqhN4el23MkRIAdc89SR6fma0d Wv8A7HCFjI85+gPYetYMLtY34JPMT4bbzkdDjP405Fm1O+5+85yxA4Uev4VKk1Gy3NqlCMqvtJfD Yr7CIhIc4LYHvjr/ADH51t+HIyIppOMMwUfh/wDrqjrCxwzx20TEpCgGCehJJP55FbGjQ+Tp0eVw z5c89c9P0xTgveFial6F+5Fq9lNfPEsQACAksx45xx69qxb61+xzCIyB22gtjsfSutrlNUk83UZ2 xjDbfy4/pTqJLUzwVSUnydEbHh+MpZM5UAu5IPqBx/PNaEsgiieRskIpY49qh0+LyLGGPBB25Ibq CeT/ADqr4gkKWSoGALuAR6gc/wA8VfwxOVr2te3dmHNLNfXIZjukchVHQD0ArYuNIt4tPkKgmVEL eYSecc9M49qoaHCJdQUtjEal8EZz2/rn8K3dSkEenzs2cFCvHvx/Ws4JNNs7MRUcakacNDndMleG /hKH7zBSPUHiurrktORnv4Aoyd4P4Dk11tVS2MsdbnQUUUVqcA13WNGdzhVBJPtXKyPNqN73LSNh Qedo/wABWj4gu/u2qH/afB/If1/KnaBZgL9rfqcqg46dz/SsZe9LlPRopUaTqvd7GRZsFvIGYgAS KST25rsK4+6RY7qZEGFV2AHtmuuR1kRXQ5VgCD7UUuqDHa8sjJ1+8eMLbRkrvXLn1Hp/Oqujael2 XlmBManAGcZP/wBaqd/IZr2Z9wYFyAR3A4H6V0elQiHT4QMZZd5OMZzz/wDW/CkvelqXUfsKCUd2 YWr2sdpebIhhGUMB6dv6Vq6NcE6YzSt8sJIzyflAz/Ws7XpA+obRnKIFP8/61c0qGRtFnULzLv2c 9eMfzFEdJuwVfew8efyMd2ku7ksfmklbgZ7noOa3W0S3+ylFBM23iQkjn6elYEEnkzxy4zsYNj1w a3rnWrcWxMDEysMAbcbT6ntxShy63LxCq3iqexlaROYNQj64c7Dgdc9P1xXU1yNgpa+twoJPmKeP rXXVdLY58clzpkV1OttbvM3IUZx6nsK5iNJtRve5aRssRztH+Aqzrd4Z7gwL/q4jjvy3f8ulaWjW X2a38yRMTSdcjkDsP6//AKqT9+VuhUP9npc7+JiahYNLZwWluoAVs7mIAGAevuc+lY19YmyEYeVW dwSVX+H0rq65rXZN+olcY8tQv17/ANaKkUlcWDqzlLl6blvw5Gds0pUYJChv5j+VbDusaM7nCqCS faqWiReVpyEggyEsQfyH6AVF4gm2WaxBsGRuRjqB/wDXxVL3YGVRe1xDXmY95dzX9wCwPXCIOcf/ AF617XQ4I1zcEysR0BwB/WsWzmeCbfEm6UjansTxnHfvUstzqELh5ZJ0JORuyAfw6Vkmt3qd9SE3 aFN8qNyPS7eG6jnhyhTOVzkHgjv9avVnaRqDXiMkpHmpjpxkev8An1FSalqCWUeBhpWHyr/U+1bp xSujzJwqSqcktWQazqHkJ5EL4mb7xH8I/of8+lYEsbwuUkUqwAJB7ZGa09HsPtTm5uQWQHI3fxnu T61ntm7vDtAUzScAnpk1hK71Z6dBRp3hHpuzp9NjEenwKucFA3Pvz/WsvxHLl4YQTwCxHY54H8j+ dbtcxrUhk1GQbgwQBRjtxyPzzWtTSNjiwq563M/UtafpNvdWcczvIGbOQpGOpHpVn+wbX/npN+Y/ wrLg1a8hCKHDIgwFZRjH863NNvlvoScbZEwHHb6ipjyPQ0r/AFineV9Ce6nW2t3mbkKM49T2Fcuz z6jeDcd0jnA9FH+ArS8Rzf6mAN6uwx+A/rWdZXE0DOLZCZnGAwGSB1OB+X5Upu7saYWny0+dbs2b fRLWNf3uZmPckqPwAqe206G1uTNDlQVKlCcjt0/KsA3V/bSDfLOjYyBIT/I1v6Ze/bbfc2BIpwwH 6f5+tVFxbtYwrwrRjzOV0xmty+VpzgEgyEKCPzP6A1k6RYRX3m+azjZjG0jvn/CrfiOQ7YYgwwSW K/yP86zLe+ubVCkMm1SckbQefxqZNc2pvQhL2HuaNmz/AGDa/wDPSb8x/hV+1gS1gWFCSq5wW69c 1Q0zVjdS+TMoWQ8qVBwfatNmCqWYgADJJ7VpHl3RxVnVT5KjGyyJDG0kjBUUZJNcxezzX8kk2CYo +g6BQTgfif8APSp9RvH1K4SC3UlAflH94+tP1W3jsbKG3Rcs7bmc9SQP/r1E3zeh14emqTV/if4I j0GMPqG45yiFh/L+ta2rXxs7ceXjzXOFz29TVXw5GRFNJxhmCj8P/wBdZ+szedqMmGyqYQcdMdf1 zST5YBKCq4mz2Qyxs5NQuGG8gAbmcjP+TW4mjWSqAYy5/vMxyfyrFguLs23kWiSAA5cxgkkn37cC iHUry2kOZGYg4ZZcn/64pRcVujWrCrNvlla3Q6Cys0so2jRiyltw3dRwP8Ks1HBKk8KSocqwyKkr dbaHkybcm5bhRRRTJCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooqNiW6dKABm7ChVpVX1p1AABiloooAKKKKACiiigAooooAKKKKACiiigApKWigBh X0pnKnI/KpqaRmgQKwanVEQR0609W3fWgY6iiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK SgBGO1c1XJyeakmPQVHVIAooopgFFFFABRRRigAopQjHtSEEcGi4BRRRQAUUUUAWE+6KdTIzlafU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFAHmddDrHhyO0szcWkkj+Xy6vyceowO3+elc9XplAHG+H9Ze zlW2nObZ2wCT/qye/wBPX8/r1Gqf8gu7/wCuL/8AoJrj9e04adfFY1IgkG6POTj1Gfb+WK3vDd+l 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 oOF/z610VlbLY2gTkkDc5GTk45xTj70uYir+6oeze7J9ib/M2jfjG7HOPTNVNVghks5nkVQypw+B kY5Az9f51iwaveQjG8SDHSQZ/XrTLzU7m7XY5Cp3VBgGm6iaFDCVIzTuR2Clr63Cgk+Yp4+tauvX kkZFsnyq67mI6kcjH6UaNpskUv2iddpA+RT157//AFq1JLeGVt0kMbnGMsoNKMXyjrV4e2T3SOb0 6+SxZn8gyOwxnfjA+mKbqN8b6VX2FAq4C7s/j/n0rpPsdr/z7Q/9+xXL3WJL2URAEFyECAYIzgYx UyTirG1CpTqzc0tTT0O8AKWiQHklmk3frj8hWZff8f1x/wBdG/nXU29rDbqojjUELt3bRk/U1j65 ZSeebmNSyMPmxztIH8sCqlF8pnQrQdZtaXNTTIkhsIQg+8oYn1J5rG1/Z9vG3Gdg3Y9eev4YqO01 a4tYBCgjZQTjcDx+RptrbT6ldb33MpbMkh/z19qTkpJJFU6MqVSVSb0NzR1K6ZCGBBwTz9TV2moi xoqIMKoAA9qdWyVlY8ycuaTl3CiiimSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFMduwoARju4HSnKuKRB3p9ABRSUUALRSUtABSUUUALSUUUAFLSUtABR RRQAUUUUAFFFJQAtJRRQAEZFRMCDxwalpGGRTECNuHoadUJypz+dSqQRkUhi0UUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFIxwCaWmv8AdNAEBYseaSiirAKKKKACiiigAHJqwqgDpUUQGamqWAUjKCKd SEgdaQFY9aKVzluKSrAKKKKYD43xxU1VqljfPBqGBLRRRSAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArM1rV/7K8n 9x5vm7v49uMY9j61p0UAcz/wl3/Tj/5F/wDsaP8AhLv+nH/yL/8AY101FAHM/wDCXf8ATj/5F/8A saP+Eu/6cf8AyL/9jXTUUAcw3ixXUo+nhlYYIMuQR/3zVb+3bH/oCW3/AI7/APE12FFAHML4sVFC Jp4VVGABLgAf980v/CXf9OP/AJF/+xrpqKAOZ/4S7/px/wDIv/2NI3ixXUo+nhlYYIMuQR/3zXT0 UAcpD4lgt93kaVHFu67HC5/Jal/4S7/px/8AIv8A9jXTUUAcz/wl3/Tj/wCRf/sahbxHbPN5zaTE 0uQd5YFsjpztrrKKAMzRdX/tXzv3HleVt/j3Zzn2HpWnRRQAUUUUAFFFFABRRRQAUUUUAFFFFAEU lvDK26SGNzjGWUGnoiRqFRQqjoFGBTqKB3drBRRRQIKKKKACiiigAooooARlDKVYAgjBB71Gltbx sGSCNWHQqgBqWigabWiCkZQylWAIIwQe9LRQIg+x2v8Az7Q/9+xU9FFA229zM1iK8uFWG3izH95m 3AZPp1/Gm6NpzWxeW4QCXOFHBwPWtWip5Ve5t7eSp+zWwUUUVRgFFFFABRRRQBHLDFNjzYkfHTco OKIoYoc+VEiZ67VAzUlFA7u1gooooEFFFFABULWlszFmt4iScklBzU1FA02thkcUcS7Y0VBnOFGK fRRQJu4VFJbwytukhjc4xllBqWigabWwyOKOJdsaKgznCjFPoooE3cikt4ZW3SQxucYyyg0R28MT bo4Y0OMZVQKloosPmdrXCiiigQUUUUAFFFFAELWlszFmt4iScklBzUqqFUKoAAGAB2paKBtt7hRR RQIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAGs2B TVGaQnc1SAYGKACiiigQUUUUAFMeVE6mknfZGSDzWduJ5J5oZcY3LjXY/hGaZ57n2qAGnCpuaqCJ fNf+9SiZx3zUQpaVw5UWFuP7wqZXDdDVKgEqcqcYp3JcC9S1FDIXXnrUlUZC0UUUAJRRRQAUUUUC CiiigBrDNNQ7WwehqSo3XNMCSlpkbZXB6inUhi0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU2ThTTqhmb tQgI6KKKsAooooAKKKKAJIR3qaq8ZIbirFSwCopjxipKgkbLUIBtFFFUAUUUUAFOi+/TaFO05oYF qio0kDcd6kqACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK a5wPenVExy30oAVBT6RRgUtAgopKKYBQaKDQBVvX+ULVMVLdtmXHpUS1m2dMFoPFPFNFPFQ2WKKX FIKWlzCCjFLQOtJMRPCMLQZgGwelAOF/CoG5rVvlRyyepcVgRwaWqIdkPynj0qVLpf4himpJiuWa KjE0Z/iFL5qf3hVDuPoqF7qJf4qrvfDoi0XE2XSQOvFIDnoazDLJK4DN+Aq9B92i4k7k1B5FFFMo iB2OD2PWpqjcZBFOibcgNIB9FFFAwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEqOVe9OZwtRvIGXApoBlFFFUA UUUUAFFFKBuOKAHwjvU1NRdq4pagBshwtQe9SStk4qPtVIAooopgFFFFABRRRQAdDxU8bblqCpof u0mBJRRRUgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACMcDNRqKd J0A9aRaaEx9JRRQAUUUUAFNY4BPpTulVb6UxwMQaTdkVFXdinK67ySwpnnoOnNUQSxyTmpkWuWUz 0FTSRZE5PRacJGNRqtSKKwlNg0kKGb1pefU04LTttZOTIbRHz6mlQEuOTT9tOiXLn2rSi3KREpWQ 6diI8A8k4qFiwPBqWXmVV9BmmFa6KruzgZGXYU0ykdRmnlajZax5mhAZUPUYoyrdDUTLUTDHStI1 GTctED0ppqp5rp0Oact0P4xWylcm5dgHzE+laEYwAKoWhV1BB6mtFK1iaRH0UUVRoNNNjO2Qr680 41G/DK3vQBYopKWkMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACmscKTTqZIMoaAICcnJoooqwCiiigAooooAUAk8VMi gCkiXAzUlS2AVHI+3pT6rsdzUIBCcmikpaoAooooAKKKKACiiigAqeMYWoVGWqwOBSYC0UUVIBRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQAx+Xx6UVj6prTadqSxNEH hZAxwcMDkj8eB0/Wrt3qdnZSCO5m2OV3AbSePwHtTEXM0uahmmigUNNKkak4y7ADP40sM0U6loZU kUHGUYEZ/CgCXNJmijFACGs3Vn4VK0yOKw9Rk33JHYVnN2RtQjeRXQVYQVEgqdeOtcUj0GSKKlUV EHUdSKkWVP7wrJpmEmSAU7FCkHoaeBWTujNsbinwLwT6mkfpUp/dwE+grqwy6mU3oV1+Z3b3xSkU sK4iXPU80pFXLVnOQsKjYVORUbCs2iWV2FQuKssKhcUkSys4qJx2qdxTEXdKvp1raLIZo6emG/3R WmnSqdgv7st6mrwFdcdjeK0Ckp1NqihKZKMoaie+s0Yq13ArKcEGQAg1A2r2BuPs3n/vd/l7djfe zjGcetAGhGdyA0+skajJHq9tYKi7JFZmY9ehxj8q1qQwooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACimO+0cU1CWbNAEtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUj/dN Opr8qaAK9FFFWAUUUUAJTkGWxSVLD3pMCQDApaKKkBKruMNirNQTdaaAZRRRVAFFFFABRRRQAUUU Dk0ASRDPNTU1BtFOqGAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FJRQelAHHeK/+QlH/wBcR/6E1ReIZWnntJnADSWqMQOmSSal8V/8hGP/AK4j/wBCas+9ZngsizEn yMZJ7B3AoA0vFd0z3y2yyEpGoLJ2DH+fGKZ4WuWi1LyAMpOpB9iASD/P86SaMal4oaMqApl2sCeo UYP5hTSPAtj4ojhtyyosyY55AOMj6ckUAZ8d7dwoEiupkQdFWQgCnf2jff8AP7cf9/W/xq/4g0qD TPI8h5G8zdneQemPQe9W5vDEdtazzyXTSeXEzKFTbyBnnk8UAR6Tq19Ml0slwXEVq7plRkEYwc45 /GsptRu3Ys0uSf8AZH+FamiWsf8AY9/ebm8zy5IsZ4xtB/Osm1tHug5R0Xbj72ec/hRy3HzcuzHr qd2pH70Eem0c1sWV4G0qa9uIwxjfaFXjPTHX3NYl3aNarGWYEvngDgYqxcr9n0mCHcW81/OHGAPl A/rR7Ndg9q31H2+tTpcBpQjxE/MmwcDPb3+pra1yZdPtkkiSMyO+NremDk9fp+dc21lKtit58pjY 4wM5HJHP5VqeJy2Lbcc/f/pRyKwud3LImlXQhqKFRJ3XnH39tUV8SXoGPLgP1U/41PYCe78NT2sa 72EmEHA4yrH+tY72k8d2LVkxMWChcjqenPTvUOlF7ofO2aJ8SXhx+6g4/wBk/wCNaWn6zLfW1wbl Y0WLacoD05z3PpWHeaRd2NqJ7lVQF9gXdk9M544xxTkiaDRpZXIK3JUJjsQT1/I0ckYqyQm2yz/w kl2LgPsj8oceXjtn19ccentWvq2ota2EVzbBHEjDG4HGCCfauWa0mWzW7K4iZygPv/h1/I1pXcnm eF7XL7mWbaeckfewPyxUygrqwjQXVZH0R71RGZkO1lwdoO4f0Iqxp9w93YxzyBQzZyF6cEisK0lz oF9Fj7ro2c9ckD+lbGh/8giD/gX/AKEaynFJP1EyhqWrXFteyQokZVcYJBz0B9afp2om9LJIoWRR njoR/TtVDVozLrUka4BdkUZ9wKhsGe21FFYEHf5bDP4f5+lU6cXDzE0rEl1qFytzKqyBVViAAo7V b0eeWfzjI24jaBwB1zWdLC0+oyxIQC0jdenU1s6JYS28h8wqQ5BG0+mf8a0tG1hNKxpapdtpmlb4 /wDWMQiHGQCe/wCQNctbaleW1z9oSd2ckFtzEh8dj61q+LpVM1tCAdyqWJ7YJwP/AEE1BeaE1to0 d6XIlABljbsCeMccEZGQfetC1sbHiySSPS08t2TdKFbacZBVuD7VT0T/AJFm/wD+2n/oAqbxjNtt beDb99y+c9MDH/s36VF4QYyQXcD4aLKnaQMcgg/yFAzmatagzJqtyysVZZ3IIOCDuNXrGGJ/FDQt Ehi82UbCo24AbHFUNT/5Cd3/ANdn/wDQjQB0HmLL4psZEOUeEsp9QQ1dFXJaXL52s6W23GLcrjPo HH9K62gBaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBrIDSRjGadSLnnNADqKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACkPQ0tJQBWPWkp7qVNNq0AUUUUAFSw96iqaH7tJg SUUUVIBUcoyuakpkv3DQBBRRRVgFFFFABRRRQAU+JcnNIqEmp1GBgUmwFoooqQCiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBKD0NFB6UAch4njaXU41QZIt934AsT+gr Drp9Rh+0eIreHdt8y2dM4zjIcVzFAG5p3/I3N/12l/k1L4tZk1aFkYqywqQQcEHc1Jp3/I3t/wBd pf5NR4v/AOQpF/1xH/oTUAWvGf8Ay5/8D/8AZa3NU/5Bd3/1xf8A9BNYfjP/AJc/+B/+y1uap/yD Lv8A64v/AOgmgDlbJyNAnQMRl3Jx/uiqen3UdqX3hjuxjaPrU1mf+JXOPdv/AEEVnYOM4OB3q/hs 0RbmumaOruJIrZ1zhgSM/hRqn/HlYf8AXP8AotM1D/j0s/8Ac/oKZqP/AC6/9e6f1qpvVkwWi+Z0 iWiyaetpNyNiqSp7juPyrH8TMft0S5O0RAgds5P+FdAhrn9UIufEEUMigoGjjwOMg4J/mac9hQ3L 3hOTdbzw7fuOGznrkY/9lqnfceLE/wCu0X8lqbwjIoluYyfnYKwHsM5/mKg1HnxUv/XWL+S1n0NO pq+LjnSoiP8AnsP/AEFqyLtQPDdi28ZLsNmevLc/59a1/FoxpUI/6bD/ANBasO//AOQJpf8A21/9 CFQyi+8saeFTb5O8KrcjGcuD/Ws//mXP+3v/ANkroZrWGbw2rOmStoGB9wuRXN7X/sLdu/d/asY9 9tSoiI7V2Fpexg/K0asR7h1x/M10eh/8giD/AIF/6Ea5SRGjYK3UgN+BGR/Ouk0e6WPTIUMbkjdy B/tGoqxbWgpbGdff8jGP+usf8hTdZ/caosqcsQr89Mjj+lJeOX14OqHPmJhT+FGuiQXieaoUmMYA 9Mmmou69AIfNWDVZJHB2rI+cde9dHoVwb7Mvl7Any4zmuYuYZG1CaGNWkfzGACjJOCe1dT4Wglg0 +RZonjYykgOpBxgetXyrcLGZ4qjaXWLeKMZd4lVR6ksa6uXy/Kfzdvl7Tu3dMd8+1czrKuPFNmWf cC0RUYxtG7p785P41jap/wAhS7/67P8A+hGqKNnxlIhltYgfnVWYj2OMfyNN8HTbbq4g2/fQPnPT Bx/7N+lHiZI5NdtY5W2RsiBmzjALHJzSeH2gh8RXEcbDy2DpFg5BAYEc/QUAR6f/AMjc/wD12l/k 1Zmp/wDITu/+uz/+hGtPT/8Akbn/AOu0v8mqGOJp/EVzCpAaRp1BPTJVhQA3w4xOt2oJJADAZ7fK 1dvXD+G/+Q5b/wDAv/QTXcUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABSUtMRskigB9FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAEUp4xUVOkGGptUgCiiimAVLC e1RU5G2mhgWKKYrhulPqACmSDKGlJAPNLQBWoqZowelRMMGqTASiinIhY0wEVSxqZUApVUKKdUtg JS0UUgCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlooA5 +4/5Gyz/AOuJ/wDZ65q+jWK+uI4xhElZVHoATXU3NvN/wk1rOI2MQjZS4GQDhuvp1FYvieJo9Ydi RiRVYY9MY/oaAJo/9D8XnzOd0xxt/wBscf8AoQo1h0vPE0cL7XiV44jtPUZ5B98kim+LLfytUEoD YmQEk9MjjA/AD86h8Pwtd61G8gMmwmVyW5yOh9/mxQBpeM/+XP8A4H/7LW3qpxpd3/1xf+RrE8Z/ 8uf/AAP/ANlq74puJINMAibb5j7G4BypByKAOcs/+QdP/wAC/lTtG/5bf8B/rUFnK3kzxYG3y2b3 zU+j/wDLX8P61vF6xMZrSQutdIf+Bf0pup/8edj/ANc/6LUeqSs9x5ZAxH0/ECluZBPpkL7Spiby xz1+Xr+lTJ3cggrKJ0UdygtFuZCEQoGOT0zXPajcldYlnh4ZGwCyg4IGM8/So21CZrBbQ42g8t1J HYf59qmhtBqOqXKLKFG5nDAbs/N/9elKXNsVGPLuWPCvGpSf9cT/ADFLfc+K0/67RfyWodIj8jX0 izu2O65xjOARUt4f+KrT/rtF/wCy1PQrqavi8/8AEtiH/TYf+gtWTeRKfDFhMSdySOoHbBLH/wBl FW/F13lo7PZ0xJuz9RjFU1m+1eG5Iduz7G6vnOd+4sPw61l5lGrNck+ERJESv7pYzke4U/1rF/5l r/t8/wDZKiOoyHSVsCDtWTcGBxx/dx355q3cRonhS2ZRgvOWb3PzD+QFLWP3jKurRLG9qyk5ktY2 OfXGP6V0mgBf7HgyP73/AKEaxtdVf7P0tgo3GDBOOSML/ia2fD+P7Gt/+Bf+hGonUcYcw0k3Yxb/ AB/wlC46ebF/JaNfP2vWUhQYYBY+emSc/wBRUWsyGHXpJVALIyMM9MgCo9OEt7q8ckjMzb/MZsZ6 c/h2FVzPl5vILK9ixYjd4mbJ6yyf+zV2a8AVwb3T2eszXEYUukr4DDjkkV0XhvUbnUGujcOGCldq hQAuc8foOtVHoxMy/F//ACFIv+uI/wDQmp3im1toWt57ZRm4LuzBiQ3Q5/U9KseMo/8Aj1lCf3lZ 8fTAJ/P9awJryae3hglbcsGdhPUA44+nFWIueJP+Q5c/8B/9BFHhv/kOW/8AwL/0E1Zt8XXi51uF WVTLIpDKCCACBx+Aqrrqrba3MIFEQQqVCDbtO0HjFAFrT/8Akbn/AOu0v8mpLD/kbX/67S/yasVm Z2LOxZmOSSckmtqxOPFrn/ptL/JqAGaNEsPidYlJKpJIoz1wA1dnXO29pcHxULnym8nBbf2+5j88 9q6OgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApiLgk0+koAWiii gAooooAKKKKACiiigAooooAKKKKACiikJxQBFN1FR0+VgTxTKtAFFFFABRRRQAAkVOjBhUFSwjqa TAc67iD6U6loqQExTSgOafRQBEsWOtSAYoppkUHFAD6KZ5i+tAkUnFAD6KKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlooAiYYk+tMltLadg81vFIwGMu gJx+NSS9jThTEVtR0631GERzqflOVdeGX6VHpuk2um7zAGZ36u5BOPT6VepaQzN1nSF1VYszGJoy cHbuBB68fgKq+JYhcQRxb9u1t3TPY/41t1gavJunIHargrvUiTsjFisjGJMSbiyFemOtS2Fs9vv3 lTuxjH41MKeDXSoJamDk3oUrqwlnuGkVkAOOpPp9KngsXWwlt3ZdznIIPHbH8qsing0ezje5LnK1 jFh0y5km2MhQA/Mx6D6etaGi2Vxa3bPNHtUoRncDzkelX1apFao9kkX7VsoS2l3/AG6LqJP3e5ct kdMAHj86dNpt5JrqXaw5hEiMW3DoMZ4zntWkhyQKvj5Y/wAKxq2ijSm2zA17TLy9vVlt4d6CMKTu A5yfU0/RtIuI7W+gu4hGJ1VVJIbnnnAPbINby8AUua891nax0WOHXRtQa5EBtnUk43EfKP8AgQ4r oda0+WbS4LW0QyGJlHLAHAUj2rWJpCamVZtp9gSMbU7G5n0S0t4o90sezcu4DGFIP61b0iCW20yG GZdsi7sjIP8AET2q6TTSaxlUbjylJanNaxpd7c6lNNDDuRsYO4DsB61c0jS2sGeSZkaRvlG3OAP8 /wAq1SaZ1NP205RUC1BJ3MOfw9d3F1NKkkAV3LDLHPJ+la3h/Sp9M8/z3jbzNuNhJ6Z9R71owLxU 1elC/KrmD3K2o2UeoWb28h255VsZKn1rCsvCriYNezIY1IOyPPzexPGO3/1q6eiqEZdnokdvqc1+ 8pkd2ZkXGAmc5789cU6+0OzvrsXM28MAAVUgBsevGfbrWlRQBl/8I/pf/Pr/AORG/wAasyWttGzT LbxLKcneEAbJ681aqC45Kr70CJIBiMVJTVGFAp1AwooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iimu20ZoAdRUKszPntUpOBmgBaKgMhzxR5rU7ASMTninCmRuW60+kAtFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABUcpwtPqOb7ooQEVFFFWAUUUUwClG09aSgUgFYAHjmp0+7USRknnpUw4qWAtF FJSAKQsB1NNWTLYqJ/vGnYAZyxpKKKqwBUkSg81HSqxU5oYFmimqwYU6oAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAa4ypFNjOQKfUY+VyvryKYiSigU UhjZW2xlvQVzF0++YmuhviRbtjP4ViJZyysSqHB7mtqdkZTKgzTuQOa049LOPnf8Fqwmmwr1TP1r R1EZ8rZihgO9PDCtv7DDj/VLUUmlwt0XH0oVRB7NmYrVIrVJLpssfMbbh6Gqu4qcOpVverUkzNxa L9oN8grQb+Fap6cmV3VbP3/pXBipWidVFDs0ZpuaM15PMdNhSaQmkzSE0rjSFJpjGkJppNItICaR OTTSalgXJFaUo3khy0RbiGBUlNUYFOr1locgUUUUAFFFFACGq4/eTn0FTSNtQmo7ZcAsepoET0UU UDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAQ00jeOeKfSHkEUAIoA6VHI+eKRCRkHrTD3qkAU5 ELU2nrJtGMU2BKqhadUQlHcU5XB6VADqWkpaACiiigAooooAKKKKACiiigAooooAKKKKAEqBmJ4q eoJFw2aaAbRRRVAFFFFABT4lyc0ypYelJgSUtFJUgLSUtIeRQBF8ofNEoH3hTduX21LsBXBpgQUV KYwATUNMBaKKKYDo22n61PVapYSSOaloCWiiikAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUVzMviS4h1R4J EhECTFGba2QobGevXFdNQAUUVS1e/GnWLTgBnJCopzgsf8k/hQBdorH8P6rPqf2jz0jXy9uNgI65 9SfStigAooooAKKKKACiiigAooooAKKKydfg1GeKEac7DDHeEfYT6c+nXv3FAGtRUcAkWCMTMGlC gOw6FscmpKACiiigAooooAKKKKACiiigAooooAKKKyNO1O41DU7iJFiFpCSN45Ldhznvgnp/jQBr 0UUUAFFczpniS4ub+GC4SFI5G2kqrZyenf1xXTUAFFFZmu6qdMt0Maq00jYUNnGB1P8AL86ANOis 3QdQl1KzeaZUVlkKgICBjAPc+9aVABRRRQAUUUUAFFZ3iCSSHR55InZHG3DKcEfMO9Hh+SSbR4JJ XZ3O7LMck/Me9AGjRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAVHKMDcO1SUhoARTkAinVEh2sUP4VLQAhAIwRTdgp9FArDQoFLilooHYSjFLRQAw qDVe5so51ww57EVbpKadiXFMrwQCCLaOcd6jLfrVwjNUZoHjcsnzD0rmxEXNGlOyFzRuqMODx0Pp QTXnOLR0WuPLUhamZpCaRSiOJphNJmkwTTSKSsHerluvNUwQGGefpWhbrhc4rrw8He5jVkrWJqWk pa7jnCiiigApKWmu21SaAIZzvcIPqamQbVAqGBdzFz3qxQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUlLSE4FAEcuB9ai6045PNNqkAUUUUwCnxKc5pgGTVhBgUmA6iiipAKKKKACiiigAo oooAKKKKACiikoAWkzSM4UVDuJagCemSrkU8dKD0oArUlKepoqwCiiigAqWHpUVSw9DSYDpG2rTY snJNLMMrSxjC1IDqKWmscKaAGHarZ7mpKrE5NOVyvenYCZuhqvUrSArxUVNAFFFFMAqSJsHFR0qj J4pMCzRSUtSAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR 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 GPJOcjqP54/CgDXooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAI5FyMjqKcjblBp1 RH922f4TQBLRSdaWgAooooAKKKKACkpaKAEpCuadRQBWlt1fkjn1qA27r91sj0NX6QqDUSpxkNSa M/ZIOqCk2P8A3K0Ngo2Csvq8SvaSKHlSHoAKUWzH7zflV7YKUKKpUYoTqSZBFbqnQVOBgUtLWqSW xIlLRRTAKKKKACq0rea4QdBUk8m0bR940kMe0ZPWgCRF2rinUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUhNJuHrQA6kJFAORxTSo3bqAGSNxgCo6kYguOOKbIMNiqQDaKKUHHamBJEvGalqJ JM8GpahgFFFFABRRRQAUUUUAFFFFABRRRQAlQu2T1qRzhTUFNAGacnLU2hTg5qgLVFNRtwp1QBBK uDmmVYdQw5quRg1SAKKKKYBUkfQCo6ki+9SYEpGaKWipAKa5+U06mS/cNAFeiloqwCiiigAooooA AM8VNGm0e9Rx/eFT1LAWiiikAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBzOh/wDIz6h/20/9DFWfFVh9osxd RrmSD72ByU/Lt1/OjStPurfXby5li2wyb9rbgc5YEcZ9K2pY0mieKQZR1KsPUGgDl9UvpNYg0+0i jxJP+8bjgHJXjrxwx+mK6eCJYII4UJKxqFBPXAGKw9B0Wax1CaadRtQFYmIB3ZP3uvHA/WugoA5n wZ/y+f8AAP8A2ajxF+412wuZPlhG3Ldfutk8fQirPhjT7qw+0/aovL37dvzA5xnPQ+9aGq6bHqdt 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 UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUhOBmgBaQn AqLzTu9qd5gxTsBG77jxTc0rHJpKaAcHYDAqRG3DBqGnxHDUNAS4AFQO25qlkBIwKiwfSkgEopdp xSVQBnvU8bblqvU0P3TSYEtFFFSAUUUUAFFFFABRRRQAUUUUAMl5Q1Xqy4ypqueDVIApUXccUgqV WVBQwHqoUYFBYCkJyuVqAk55pJAPMhbIplKg3GkYYOKYBQBmipo1GM0NgRiNjUyrjmlpam4BRRRQ AUyXlafSUAVqKmeME8UwxHtVXAZRSspXrSUwCiijtTAdH96p6jhHepKhgLRRRSAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACs1dKY6z/aMtyXIBCRhcBRjHXJ9T6cmtKigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKgvoHurOWBJfKMi7d23dgd+PpxU9FAEFjapZWcVuhyI 1xn1Pc/nU9FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFNZQwwadRQBEGMZw 3I9akBBGRQRkc1EUZDlDx6UATUVGsqng8GpKACiiigAooooAKKKKACiiigAooooAKKKazqvU0ALU UkwXheTTGkaQ4UYFPihA5PWgBkcZc7mNWAAOlFLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB TJGAGDT6ZIm4Z70AQfpRQQR1oqwCiiigBKfGpLZoiAJ5qcDFJsApAQelKRkUAADAqQIpjzioqnkT cOOtQkYNUgCnxHBxTKKYFmlqKJs8GpagAooooAKKKKACiiigAooooASopgBipqimGQDTQDEGWodC ppFOGqxwRTYEUR6qaa0ZWpGQ5JFMLN900gCJSTmlaMk5p8YwvNKGBOBRcCMRHvTs7SFxT6MUgClp Ka0gWgB1GR61C0hPtTM07AWaWq6yEU/zh6UWAlpKj84elIZT2osA+TBXmoKCSepoqkAUAE9KdGAW xU4UCk2A2Ndq80+iipAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKAGPGrdRzUeJI/u8ip6KAIlmH8QwakDA9CDSMit1FRGD0N AE9FV9sq9GzR5ko6qKALFFV/Pf8AuUee/wDzzoAsUVX86TslJumb2oAsE4pjTIvfP0qLynb7zGnr Ao60AMMzv9wYHrQsBY5Y5qcIB2p1ADVQKOKdRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAU12AHWkLgHFRM2400gGkknmiiiqAKKKKAJIRyamqOIYFSVLAKKazADmovMPalYCVjgGq/rTj ISMUyqSAWiiiqAVDhs1YFVqsL90VDAdRRRSAKKKKACiiigAoopOlAC1HLnbxT8g96ZIwAxQBD709 ZSOoplFXYCdW3ChnA+tQhyBgUlKwDvMNOj+9mo6AcHNDQFmmNIBTTIGXHQ1HQkA8yselMzRRTsAl LRRQAUUUUAFFFFABRRRTAVDhs1YqtVhOVFQwHUUUUgCiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaKAEwPS jA9KWigBMD0opaKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAIJM5 plTuu6ozGapMBlFSCI96cIgKLgQ4pUGWqxtHpSBQDmlcBQMClopCQOppAIwBByKr96leQYwKiqkA UUUUwCiiimAVOnCjNQUpJPU1LQFilqujEHrxU9SwFoopKACkZwvWkdgCKjm6g0wHGYelNd9y8HFM op2AASDkUrMWOTTakC/u80wGUUUUAFFFFABRRRQAZooooAKKKKACiiigAooooAKKKKACiiimAqru OKsAYFV1Yqc1YByKhgLRRRSAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooASoWVixqekoArEYOK KsFQaiMZz7VSYDKKDRTAKKKKACiigAnpQALywqyKZGmOT1qSpbAKSimSPgYFIBjt+89qUjfk9qFR W781IqhRincCvRUrRgck1E2M8dKdwJFRG71JgAYqGIfNU24ZxmpYDGRV61EevFPmB3Z7UwdeapAF OK/u93enrGrdDT9oxik2BXoqRkVepqM47VS1AKKKKACiiigAooooAKKKKACiiigAooooAKnjOVqC nI200mgJ6WkByM0tSAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSE460ALTHfaKY8nZaZtbqRTSA NxPOaNzetJ1OKkEWRyaYEdFOKMD0o2H0p3AbRShCelGxvSi4CU+NlXrTdp9KcsZPWlcCYHIzQeKh MhHA7U1nJ60rASmQDoajds0Iu7NNpoBUyW4qcsBioFbbSE5NDQEs3b0qL6Uu4kYptCQDgxH40n86 KKdgFLEjBpKKSgCSLO72qXcM4zUAYgYFJz+NKwD5eG9qZSsxPWkoWgBRT3XCA0yncAooooAKKKKA CiiigAooooAKKKKACiinRruNDAlizt5p9IBgUtQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVBeXlvYxCW 5k2IW2g4J5/D6UAT0UyKRJokljOUdQyn1Bp9ABRVS81OzsWVLmcIzDIGCTj8Kt0AFFFFABRRRQAU UVW1C7WxspbllLhB90dyTgfzoAs0VS0nUV1O0M4jMZDFSpOeevX8RUP9r/8AE8/szyP+2m//AGd3 TH9aANOiqGsaj/Zlqs/lebucJjdt7E+h9KtWs32i1hn27fMRXxnOMjNAEtFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRVXUrz7BYyXPl+Zsx8ucZyQOv40AWqKq6befb7GO 58vy9+flznGCR1/CrVABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUV ma1q/wDZXk/uPN83d/HtxjHsfWgDTooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiszW tX/sryf3Hm+bu/j24xj2PrWnQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRWXrGsDT2SCKIzXMg+VecDPA+vPYVJpc+oytKuoW6QlQpTZ0Oc5 5yfQUAaFFY+p6zJBeCxsoPPujjr0U9fx49xikfV7uy0559QtQJhN5aohwCMA5zk+/SgDZoqtp92t 9ZRXKqUDj7p7EHB/lVmgAooqlq2orploJzGZCWChQcc9ev4GgC7RVbT7tb6yiuVUoHH3T2IOD/Kr NABRRRQAUVmWOr/a9UuLLyNnk7vn35zhsdMVp0AFFFFABRTWZUUu7BVUZJJwAKztJv7rUZZZjAsd l0jJzvY/yx1/+vg0AadFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFRXU32e1mn27vLRnxnGcDNVdH1H+07Vp/K8ra5TG7d2B9B60AX6KKKACiiigAooqK5uIr WBp522RrjJwTjJx2oAloqtZ31tfKzW0okCnDcEEfgas0AFFFUm1ewW7+ym4Hnbgm0KT8x7ZxigC7 RVbULtbGyluWUuEH3R3JOB/Oo9J1FdTtDOIzGQxUqTnnr1/EUAXaKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooqnf6paaf gXEuHKllQDJP+H40AXKKwv8AhK7H/nlc/wDfK/41sW1xFdQLPA2+Ns4OCM4OO9AEtIRmlooAYI1B zTsUtMlkSGJ5ZDhEUsx9AKAF2jOcU6ueXW9TvPMl06wVoI+CX5J/Uc4xwM10NACUUGmLLk4xQA+i lpCcCgApG+6aYZR2pjOzU7ANp6orDrzTKF68UwLCKFFNaMZzmnZA6mmy525FSBEwAPBzSUUVYBRR RQAUUUUAFJUFzeQWrRrM5VpDhAFLEn8B7iluruCzjElw+xSdoOCefw+lAE9FQ21zDdxebBIHTOMj 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 QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQBzOh/8AIz6h/wBtP/QxXTVEltBHK0scEaSNnc6oATn1NS0AFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFcz/AMzv/n/nlXTVF9mg8/z/ACI/O/56bBu6Y6/SgCWiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooASmSJkZqSmv900AV6KKKsAooooAKKKKABTg5oJJ6 0UUALuOMGkp6rlCaZSQBRRRTAKKVQSamEYFDYEFGKsbF9KXaPSlcDEubCYanHfWhQPjEquxAcdOw /wA4FaVTPGCOKhoQBRRRTAKKKKLgKCQOKSnsuIwaZSACSRzRRRTAKKKKYBRRRSAKKKKACiiimBJC MnNTUyMYWn1DAKKKKQBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUVl6rrUdi32eJDNdsPlRRkAnpn/A fpmqoj8STlnM0FtzgRkA/j0P86AN6isWzn1i31CG1vxHLFKzYmUei5wMYx07j1rXlkSGJ5ZDhEUs x9AKAH0Vz76xe6lO9vpEQCKfmnfsMjnB6d/U47U5ofEkQ3i6gm2kHywAN3t90fzoA3qKxtM10TzC 0vojb3ROMEEKfQc8g/574rTvJWgs55kALRxswB6ZAzQBNRXN2era3fRGW2s7Z0DbSenP4t71JJrO p2DI+pWKLC5xmM8g/mR0zxxmgDoKKitriO6t454jlJFyPb2+tZGs6veWeow2lrFE5lVSN4OSxJGO o9KANyisFrzxEiljp8GAMnByfyDVa0vW47+Z7eSI29wpOI2Oc469hyPSgDUopksiQxPLIcIilmPo BWE+sXupTvb6REAin5p37DI5wenf1OO1AHQUVgtD4kiG8XUE20g+WABu9vuj+dS6ZronmFpfRG3u icYIIU+g55B/z3xQBs0VDeStBZzzIAWjjZgD0yBmsGz1bW76Iy21nbOgbaT05/FvegDpKK5+TWdT sGR9SsUWFzjMZ5B/MjpnjjNbdtcR3VvHPEcpIuR7e31oAloorA1vX5bC8FvbJGxVcuXBOCeg7dv5 0Ab9FRW1xHdW8c8Ryki5Ht7fWodSkvY4FNhCksu7BVzgbcHnqPagC3RXPXOpa9awNPPZWyRrjJzn GTjs1FtqWvXUCzwWVs8bZwc4zg47tQB0NFZP2jWvsG/7HD9q83GzIxsx1+91z71S0vWdU1GcBLeB olZRKwyCqk9eW9jQB0dFRXNxFawNPO2yNcZOCcZOO1YaanqmrORpkS28KtgyyYPr/wDW4AOPWgDo aKwJF8R2o87zYboLnMaqORj6A/kat6VrUd832eVDDdqPmRhgEjrj/A/rigDUoqG8laCznmQAtHGz AHpkDNYmj+I5Lu8Fvdxxp5nCMnAz6HJ7/wCetAHQ0UVm69qEum2aTQqjM0gUhwSMYJ7H2oA0qKqx Sz3GmxzReWs8kSuNwJXJAPrnFQ6RqQ1CFw6GO4iO2VCCMH/IPHagDQooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKSlooAhePuKjqyelVj1qkAUUUUwCiiigAqVdjcY5q KnRjL0mBOAAMUxgi8mlMig4pkwzgikgIycnpgUDminJxk+lUBKi4FOpiSbjT6gBaKazBRzSg5GaA FqF4+9OMgDYpskgI4NNAR0UUY71QACAeamUI3Qc1DUkQxkmkwJSARio32KOmTThIpOKikGGqUA2i iirAKKcqFqeIvelcCKintGR0pmD6U7gFA605UJqVYwKTYEOw+lPWP1qWlpXAQDFLRRSAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACoby4W0tJbhsYjUtgnGT2GffpU1ZniT/kB3P/Af/QhQBR8LWvm+dqU4 3TSOQrFcfUj6k4/A10NZnhv/AJAdt/wL/wBCNadABXPeK7iSQ22nwnLzNll6Z5woz0xnP5Cuhrmd c/5GfT/+2f8A6GaAN2ws47C0SCID5R8zAY3N3NWaKKAMHxXbE20V7ECssDAF1IBCnofXg4x9TVx7 kXnh2W4BGXtmLYBADbTkfnmk8Sf8gO5/4D/6EKq6d/yKD/8AXGX+bUAHhD/kFy/9dj/6CtaGtNGu kXRlxt8sgZGfmPT9cVz2gw6tJZubC6iii8wgq4yd2Bz90+1PSOW61b7HrtzJkYMaDCpIc8dPXkdM 9sg8UAX/AAirLpTkqQGmJBI6jAH9DVXXP+Rn0/8A7Z/+hmujijSGJIoxhEUKo9AK5jxHI0XiCzkR DIyKjBB1YhzxQB1Vcxq6iHxVZvHlWkMZYgnn5tv8hirLa1qcg2Q6NKkjEAM+4qPrwP51JpGlXAum 1HUmzdHhVGPl4xk44zj/ADnoAQeK7iSQ22nwnLzNll6Z5woz0xnP5Ctiws47C0SCID5R8zAY3N3N YWuf8jPp/wD2z/8AQzXTUAFYPiu2Jtor2IFZYGALqQCFPQ+vBxj6mt6szxJ/yA7n/gP/AKEKAFe5 F54dluARl7Zi2AQA205H55qp4Q/5Bcv/AF2P/oK0ad/yKD/9cZf5tWdoMOrSWbmwuooovMIKuMnd gc/dPtQB0OtNGukXRlxt8sgZGfmPT9cVQ8Iqy6U5KkBpiQSOowB/Q1QSOW61b7HrtzJkYMaDCpIc 8dPXkdM9sg8V1EUaQxJFGMIihVHoBQASyJDE8shwiKWY+gFczpFp/bB1K6n3KJ8xoS2dpzu+pxhf Sr/iq8NvpwhRsPO209c7R1/oPxqbSrixs9NggN5AGVcsDMpwx5I4PqTQBV8KXJNtLZSkrLAxIRgA Qp6j14Oc/UVvVybXMVh4n86CWJ4LgjeVcEAN1ye3IzXWUAZniT/kB3P/AAH/ANCFHhv/AJAdt/wL /wBCNHiT/kB3P/Af/QhR4b/5Adt/wL/0I0Aadcz4M/5fP+Af+zV01cz4M/5fP+Af+zUAHiBpNR1i 30yJ8KuC3sTySexwvP4muighjt4VhhQJGgwFFc7/AMzv/n/nlXTUAFc34mjezvLXU7cYcNtY9ASO mccnIyD7CukrC8X/APILi/67D/0FqANG/kSbRriWM5R7dmU+oKmuYsdLF9oMssSj7RFMxBwSWXaP l4/T/wCvXQf8yx/25f8AslVfCH/ILl/67H/0FaALmh6iNRsgzf66PCyDI5OOv0P+NU/F/wDyC4v+ uw/9Baq2opJomsrqEQzb3DESALnGcFh9T1HP6Cp/FciTaNBLGco8qsp9QVagDV0v/kF2n/XFP/QR WXeA2Hia2uQx2Xg8tgME54H5fdP51qaX/wAgu0/64p/6CKzPFvy2EEq8SJMNrjqvB6H8B+VAG7RR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUANY4U5quetTTHC1DV IAooopgFFFFABQDjpRRQAUZOMUUUWAKkjX5D70I46EVLUtgV1JU1IZR6U52C9qgJ3HNNAOd91CuR 9KbUir+7+tAEfrRQetAyDQAYPpUrJ+7HtSo+7gin0mwK2D6UZPSpXfnaKFj7mncCLBNBJPWrG0Yw KZ5XvRcCKlUEmpPJHY05EC/Wi4CqMDFLS0VIBSYHpS0UAJS0UUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFRzxLPBJC5IWRSpI64IxUlFAHMaBeDTLmfTbwpEAxYOxIG7j17EDIPH6109Ut R0q01EAzoQ4GBIpwwH+fX1rOXw9cxDZBq88UQJ2oAeB+DCgDaeaOOSON3AeUkIvc4GTWP4rsmuLF bhMlrckkD+6ev5YH4ZqbTtChsrgXTzST3AzlmOBk98euPUmtagDP0jVI9RtlYsizgHfGDyMd8enT 860Kx73w7azy+dbu1rKMbTGBtBHfHr9CKhbw9cyjZPq88sRI3IQeR+LGgCDXrpdVuLfTbF0lYtuZ wflBx6/TJNbF5EsGiTwoSVjtmUE9cBcUun6Za6cm2BMsc5kbBY+2fTpxVieJZ4JIXJCyKVJHXBGK AMbwh/yC5f8Arsf/AEFan8Racb+y3R/66HLKME7hjkfU4H5Vb03T4tNgaGFnZWbcS5BOcAdh7Vbo AzdB1E6jYhpGBnjO2TGBn0OPf+eay9c/5GfT/wDtn/6Ga1rbR7a0vnu7cvGXBBjGNmD7YyOeev6U t1pUF1fw3kjyCSHbtCkYODnnigC/RRRQBh+K7JrixW4TJa3JJA/unr+WB+GauaRqkeo2ysWRZwDv jB5GO+PTp+daFY974dtZ5fOt3a1lGNpjA2gjvj1+hFAGxXNa9dLqtxb6bYukrFtzOD8oOPX6ZJqd vD1zKNk+rzyxEjchB5H4sa0tP0y105NsCZY5zI2Cx9s+nTigBLyJYNEnhQkrHbMoJ64C4rP8If8A ILl/67H/ANBWtmeJZ4JIXJCyKVJHXBGKg03T4tNgaGFnZWbcS5BOcAdh7UAVPEWnG/st0f8Arocs owTuGOR9TgflUmg6idRsQ0jAzxnbJjAz6HHv/PNaVZ9to9taXz3duXjLggxjGzB9sZHPPX9KAMi5 Uaz4m+zvl7a3BDAEjp1/8ewOO351qf8ACPaX/wA+v/kRv8afpmj22mNI8JdmcAEvgkD2wP8AOBWh QBzmuaHaQaa81pCUkjIY4LNle/U8dc59q1tHvDfabFMxBkxtfBH3h/LPXHvVqWNJonikGUdSrD1B qrpmmRaYsiQySsrkEh2BAPtgf5wKAIfEn/IDuf8AgP8A6EKPDf8AyA7b/gX/AKEauX1pHfWr20pY I+MlTzwc/wBKLG0jsbVLaIsUTOCx55Of60AT1zPgz/l8/wCAf+zVt6lp8WpQLDMzqqtuBQgHOCO4 96oweGrKCeOZJZy0bBgCwxkHPpQBX8UW8kM1tqcQ3GFgGB5Awcg/TOQefStfT76G/t1lidSxUF0B yUPof1qwyq6lHUMrDBBGQRWPceHIWnM9ncSWkpbPydBxzjGCPzoA2GZUUu7BVUZJJwAK5rUWXXtY htLdg0EAJeQHHGRuwe/YDjr7VZPh2WYqt3qk88QOdhz1/En+VatlY29hCI7eMLwAWx8ze5PegBNU /wCQXd/9cX/9BNZnhD/kFy/9dj/6CtbM8SzwSQuSFkUqSOuCMVBpunxabA0MLOys24lyCc4A7D2o AlvLaO8tpLeYHY4wcHBHoa4i8kuLS2fSbgA+VMJAwbOODwPY5z+dd7WdqWjWupSpLMZFdV25RgMj 8QfegCfS/wDkF2n/AFxT/wBBFZfirdMtnZIBunm4YngEcf8As36VtQRLBBHChJWNQoJ64AxWJZbN Y1178Lm2tlCRErjc3rz6ZJ7H7tAG3PNHbwtNM4SNBksaba3UF5D51vIJEzjI4wfpReW0d5bSW8wO xxg4OCPQ1Hp9hDp1v5EG4qWLEsckn/OKALVFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIWA60tQyjnPagCTevrURl OeKZRVWAlSXPBqQEVWozjvRYCzS1W3H1p6y460rATUU0ODS0gFooooAKKKSgCOY9qhpznLE02qQC 0UUUwCiiigAooooAKKKKAHRj5smnmXB4qKilYCSQhhkVH3oopgSxuDwRUlQR4zk9qeZOeBxUsBXc L25qEnNSS4I3Co6aAkjwoJNAl556VHRRYB0nXcKljyVqCrCfdFJgOooopAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUARz wpcQtDKCUcYYBiMj6iktreK1gWCBdka5wMk4yc96looAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACo5vu1J UMx7UICOiiirAKKKKACiiigApQx9aSiiwDhIw75p4l9RUVFFgJxIp70juNvFQ0UrAFFFFMAooooA KKKKACiigAnpQAUU7y2puKLgFFFFABRQAT0qZYxjmlcCJRk4qdVAFKFA6ClpNgNKgiomjI57VPSE ZFFwK1FDDBxRVAJUiPt4NMooAsKwbpTqqgkdKnjbcKloB1LSUtIAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiikoAWikpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACoJfvVNVdzljTQCUUUVQBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAOQZNTBQKhi+/U9SwFpMD0paKQEbRg0zyjmp6KdwGKgWnUtFIAoopjOFoAdRUSvucVNQBDMO c1FVogEc1A67T7VSYDaKKKYBTo22t9abRQBZpajjcEYNPqAFooooAKKKKACiiigAooooAKKKKACi iigAopKa0ijvQA+kqJpSelM3HrmnYCxTXOFNReY3rSFietFgHRk7qnqGH71TUMAooopAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQA2RsLUFOkbc1NqkAUUUUwCiii gAooooAKKKKACiiigAooooAKKKKACiiigAoopyxk0XAIx81T0ioFpalsBaKKKQBRRRQAUUUUAJUU w5FS0yVcjNNARL94VZqvGMtVihgFIQD1paKQEMic5FR1ZqOSPuKaYEVFFFUAVIkuODUdFFgJvNWh JNxxioafG4U81NgJ6KaGB706kAUUUUAFFFFABRRSHgUALTWcL1qNpewqMnJp2Ae77ulMooqrAFLs OM0KcHmplIYYpMBEQEZpfLX0p3QUAg9KkBFQL0p1FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAJUcknYU9zhSar9aaAKKKKoAooooAKKKKACiiigAooooAKKKKAC iiigAoooAJoAUAsakEXrTo02in1NwGBFFOpaKQBRRRQAUUUUAFFFFABRRRQAlBIA5prttXIqFnLU JASIy7sAYqWqo61ZByM02gFooopAFJS0UAMaMN7U3yhipaKLgVmBU80lWGUMOaiMRAqkwGUUUlMB c05ZCOtNp6x5FJgPEoNPBzUBjYU6NyDtNICaiiikAU1jhc0tRStztpoCM9c0UUVQCp97mpigIqCp o3yMGkwGCM7qlUccjmlpakBMZFAUDpRRQABgelLSBQDmloAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigBCMjFQMhBqxUMx5ApoCOiiiqAKKKKACiiigAooooAKKKKAC iiigAooooAOtTRpgZNNiXvU1S2AUUUUgCikqF3bPpQBNQSB1qOJs8U9lDdaAHUUgGBS0AFFFFABR RRQAhGRg1WPU1Zqu33jTQCVPH9wVBU6fdFNgPoooqQCiiigAooooAKSlooAhaL+7UbDHWrVRyrkZ FNMCJfvVYFVh61KkmeDTYElMMYLZqSipAKSlooAYHO7aahbO7mrBAJzTXTcPemgIKKVlK9aSqAKA MmilUgGhgTIeME80+q+ecjrSiVhU2AnpCcDmkVtwpetIApaQDAxS0AFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZdhr9nf3K28ayo 7Ald6jBx24JrUrz21hlEEl7C2GtnQ9BxknB59wPzrvba4jureOeI5SRcj29vrQBLWdqWs2umypFM JGdl3YRQcD8SPer7MqKXdgqqMkk4AFcPqM8l+bnUDkRmRYUDL/DyeD2PyjOP7x9aAO2glWeCOZAQ sihgD1wRmpKq6X/yC7T/AK4p/wCgin3d7bWSb7mZYwemep+g6nrQBPRWF/wldj/zyuf++V/xrXtb qC8h863kEiZxkcYP0oAmoqre6ha2Gz7VL5e/O35Sc469B71Wv9esrGURMzSvzuEWDt9jz19qANOi qWnaraaiCIHIcDJjYYYD/Pp61bZlRS7sFVRkknAAoAdRWNN4n06NgE82UYzuRMD6c4q7p2p22pIz W5bKY3KwwVznHt2oApW2r3M2vSWDWwWJSwzg7gB0Y+x/qPx2aq/2ha/bvsXm/wCkf3Np9M9cY6VY ZlRS7sFVRkknAAoAdRWNN4n06NgE82UYzuRMD6c4q/YahbahEZLd92MblIwVPuKALVFVb3ULWw2f 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 ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU1mVFLuwVVGSScACgB1FRwzxTqXhlSR QcEowIz+FSUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRUK3ds 83krcRNLkjYHBbI68VNQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAJS BucGnUlABiloooAKKKKACiiigAooooAKKKKACiiigAooooAKQjNLRQA3aPSkMak0+igBAoFLRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUVgTatfX91Ja6TEoWNsNOxBGM9R2x19cinxpr9vPC888VxCZFV1RRkKTgnoOn+eKANyi qmp38em2hnkBbnaqj+JvT2rKil1/UR58DRWkLDKKwB3DnnoT/L2oA6Ciucj1bUNMu1g1dQ0Tk4lU D8xjqPbGefwroVZXUOjBlYZBByCKAHUVzdh4gvbwSRpaxy3HHlqmVAGDliSegO3uOtJeXGv6Wq3E 80U8WcMFQED0zwDQB0tFVdOvY9Qs0uIxtzwy5yVPpWSdWvtTu5LfSVRIlHM8g6e/tnoBgn+gB0FR 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 AJaKKKACiqGmarBqfm+Qki+XjO8Adc+hPpRdarBa38NnIkhkm27SoGBk455oAv0UUUAFFFFABRRR QAUUUUAFFFNZlRS7sFVRkknAAoAdRUUNzBcbvInjl29djhsflUtABRRUM13bQMEmuIo2IyA7gHH4 0ATUUVn6frFpqE8kMG/cgzllwGGcZH6dcdaANCiiigAooooAKKKKACiiigAooooAKKKKACiiigAo qpqOo2+mwiSdj8xwqLyzfSq2l6tLfTiOSxe3VozIjsxIYZHTgetAGpRRRQAUUUUAFFQ3N3b2i7ri ZIxgkbjgnHXA71S/4SHS/wDn6/8AIbf4UAadFRwzxTqXhlSRQcEowIz+FSUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFZ+n6xaahPJDBv3IM5ZcBhnGR+nXHWtCgAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiqGp6rBpnleekjeZnGwA9MepHrV+gAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACimSyJDE8shwiKWY+gFU9K1B9RSSX7M0UIbEbM2d/rx2/z 6UAX6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooqhqeqwaZ5XnpI3mZxsAPTHqR60AX6KhvLmOztpLiYnYgycDJPoKj0+/h1G38+DcFDFSGGCD /nFAFqiiigAooqha6rBdX81nGkgkh3biwGDg445oAv0UUUAFFFFABRVC11WC6v5rONJBJDu3FgMH BxxzV+gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigDj/DGn2t/9p+1ReZs27fmIxnOeh9q3f8AhHtL/wCfX/yI3+NYXhjULWw+0/ap fL37dvyk5xnPQe9bv/CQ6X/z9f8AkNv8KANCKNIYkijGERQqj0ApJp4oFDzSpGpOAXYAZ/GoNUvV sLGS4ONwGEB7sen+fQGsXSdKGqRjUNSmecuTtTcQMZI5/HoBigDfhu7adikNxFIwGSEcE4/Cpq5/ U/DsKQm40/fFNENwUMTuxzx3z6fT8au6BqL6jZFpdvnRttbB68cHHbP9DQBp1BLe2kLmOW6hRx1V pACPwrmb5Zn8Wuludsj4UN/dBjwT1HIGT+Fasvhuxkgdf3hmbJ89nJbOc5I6H/P1oA2KK5rwrcTx 3Nxp02cRgsATnYQcEfr+nvU3iS8maaDTLdtjXGN7HuCcAZ9Ouf8A9dAGs1/ZIxR7uBWU4IMgBB/O sLxn/wAuf/A//ZavW/hrT4ogsqNO/dmYj8gD0rC1+yk08w2wYtbAs0LM2WGdu4H8Rnp3oA7WqWqQ W08KLeXJhgDDK7wiueuCT9O1P1O7+w2E1zjJRflGO54H4ZNYukaMt+jX+plpnn5VSSvHqcY/Dtj9 ADft5IJIh9meN41+UeWQQMduKlrmNWshoUkN/pzGMFtjIzEg8dPpwc8+mK6OCVZ4I5kBCyKGAPXB GaAJK5nXP+Rn0/8A7Z/+hmumrmdc/wCRn0//ALZ/+hmgDpqimuYLfb588cW7pvcLn86p67fvp+nN LH/rXYIhxkAnv+QNUdM8PQPb+dqKtNPL85DMw259e+fXP/6wDcikjmQSROroejKcg/jT65a8T/hH NShmtmb7NPnzIyc8A84+gIxz611NABRRWLrt1JO6aTZlTPPxId2Ni9f1Gfw7cigDL1aZtWS6u1J+ yWgCxHbjczEAn/Pt71t+G/8AkB23/Av/AEI1DrNtHZ+GpbeEHYgUDJyT84yam8N/8gO2/wCBf+hG gDTooooAqarcmz02ecEhlXCkAHDHgHn3IrkrHzdJubG8clIpwd2Qfu5weByeMMPqK1fEkhvb600y JjksGkwA23PQ+vAyfoaua/Yq+hmOJSBbgMig9lGO/tmgDXorO0G8N7pcTu26RPkc89R9epxg/jWZ 4qje3urPUYxkowU56ZB3Lx19fyoA6SimRSJNEksZyjqGU+oNc9dAap4oSAjfBbLlgGBBxyePqQpH tQB0lFcz4z/5c/8Agf8A7LVl9FfVIvtF9cTJLJlkjB+WIHoMEdemen9aANO6060vJUluIFkeP7pP 8j6j2NGqf8gu7/64v/6Caw/Gf/Ln/wAD/wDZa3NU/wCQXd/9cX/9BNAGZ4Q/5Bcv/XY/+grW7WF4 Q/5Bcv8A12P/AKCtbtAFbUIJbm0eGCYwyMVxICQVGRnp7Zrl9a0VdPsxcPcPPM82CxGAQQT7nOR1 zXY1heL/APkFxf8AXYf+gtQBp6X/AMgu0/64p/6CKg12/fT9OaWP/WuwRDjIBPf8gan0v/kF2n/X FP8A0EVS8UW7T6QzLnMTCTAGcjof55/CgCLRNHg+yLc3aJcTzjfucbsA4Pfv7+9V9f04WO3U9P8A 3DxsN4QAAds4/Qjvn61o6BfQ3WnQRq6iWJAjR55GOM/Tp+dVfFN9Clg9oHVppGAKg8qBg5P6fnQB pJ5Gq6ahlQNFMoZlDdD1xkeh/lVf/hHtL/59f/Ijf40eG/8AkB23/Av/AEI1p0Act4isNN0+zUQ2 +2eVsKd7HAHU88eg/Gt7S7JbCxjtxjcBlyO7Hr/n0ArGQHVPFRfy/wBzZ/KScjlScdO+7n6CukoA 5s2dvfeKryK5j3oIgwGSOcJ6fWtH/hHtL/59f/Ijf41n3EWpxeILu6sbUSAqq5k4UjC9ORnpTv7f vLKfy9Vstino0f07ZJB6jvxQBvRRpDEkUYwiKFUegFPqOCaO4hWaFw8bjIYVJQAU1mVFLuwVVGSS cACs7xJ/yA7n/gP/AKEKy9CsH1Kyi+2E/Y4SwjiGV3sSSWJ9s44/xyAdDDd207FIbiKRgMkI4Jx+ FTVzWt6HDa232uwV43iIJVWJ49R3yOO/QVraLff2hp0crHMi/JJ/vD/Hg/jQBbmnigUPNKkak4Bd gBn8aSG5guN3kTxy7euxw2PyrL/sBLi8kub+Z59zNsj3HCrk4GevcdMfjWdr2nJpJt73T8wkNtID E89Qefxz/wDroA6qiorWb7Rawz7dvmIr4znGRmuTtRcSeIL6G2YxvK0iGUf8s135J/THbkjmgDsa KzbDRorC8a5jmldnUq/mEEkkg5z+H61pUAYXi/8A5BcX/XYf+gtT7DQtNmsLeWS2y7xKzHe3JIHv TPF//ILi/wCuw/8AQWqGz8S2UFnBC8U5aONVJCjGQMetAFeON9D8QxW8Ls0E+0bS3JB4546g5P8A +uunnhjuIWhmQPG4wVNc7pMser6wb26ljV4+Ibfvjkg89ccn6+nFbmqf8gu7/wCuL/8AoJoAktbW Czh8m3jEaZzgc5P1rn/+Z3/z/wA8qs+EP+QXL/12P/oK1W/5nf8Az/zyoAs+L/8AkFxf9dh/6C1a el/8gu0/64p/6CKzPF//ACC4v+uw/wDQWrT0v/kF2n/XFP8A0EUAWqpavfjTrFpwAzkhUU5wWP8A kn8Ku1zPiX/SdYsbN+IzjkdfmbB/lQBLpmjm/T7bqztO0q5RC5+VTznj+Q4H8tZtLsHUqbKDBGDi MA/mKt1BLe2kLmOW6hRx1VpACPwoAq2WjW1hetc2xZQyFDGTkDkdD17frWjUMN3bTsUhuIpGAyQj gnH4VU1bTZNSMMf2hooFz5ir/HyMDHTsee1AFhb+ydgiXcDMxwAJAST+dWaxp/DdgbRkhjKzbcLI XP3vU9vrxUXhK8kntJYJCW8gjaxP8Jzx+GP19qALHiS8uLGwSW2k2OZQpOAeMH1+lXdOZn061d2L M0KEknJJwK53xLpUFrEbyN5DJNN8wYjAzk8cVf0XRLaFbW/V5TKYw2CRtyy89vegDcqD7baeb5X2 qHzN23Z5gzn0x61h6zJcanqq6TAxjiUBpTj2zk+3THTn8KuN4b00w7BG6tgDzA53fX0/SgDXprMq KXdgqqMkk4AFYXhu8mWafTLht7W+djDsAcEZ9OmP/wBVU8f2z4jkgvJcRQM4SMHG4A4wPc9T9PyA OkivbSZxHFdQu56KsgJP4VPWPceGtPliKxI0D9mVifzBPStigAoornNZkuNT1VdJgYxxKA0px7Zy fbpjpz+FAG59ttPN8r7VD5m7bs8wZz6Y9anrIbw3pph2CN1bAHmBzu+vp+lV/Dd5Ms0+mXDb2t87 GHYA4Iz6dMf/AKqAF8U31zZrbrbSmMShw2AMnp37dT0reri/EGlQaZ9n8h5G8zdneQemPQD1rotN 0S202dpoXlZmXaQ5BGMg9h7UAaVVdU/5Bd3/ANcX/wDQTVqquqf8gu7/AOuL/wDoJoAwPDel2V9Y PLcw73EpUHcw4wPQ+9TavoEEFs13Yb4pIQH2huMDknJ5B79e1TeEP+QXL/12P/oK1Pr2pW1tZTwG RWnkQoIweRkY59ODnnrQBLoV++oacssn+tRijnGASO/5EVdmnigUPNKkak4BdgBn8az/AA5ZyWem BZgVeRjIVIwV6AD9M/jUX9gJcXklzfzPPuZtke44VcnAz17jpj8aANSG5guN3kTxy7euxw2PyqWu V17Tk0k297p+YSG2kBieeoPP45//AF10trN9otYZ9u3zEV8ZzjIzQBLRXM+DP+Xz/gH/ALNW5qn/ ACC7v/ri/wD6CaALVczrn/Iz6f8A9s//AEM1Z8If8guX/rsf/QVqtrn/ACM+n/8AbP8A9DNAHTUU UUAFcLdefetd6rGXCxzLtbGCB259RhenrXSeJbwWulugbEk3yKOOnf8ADHH4in6VpyQ6ILZ9ymdC ZOMEFhz16EDj8KALWn3IvLGG4BGXUFsAgBu4/PNWa57wpcSRm50+Y4eFsqvXHOGGemM4/M10NAHM +DP+Xz/gH/s1Guf8jPp//bP/ANDNHgz/AJfP+Af+zUa5/wAjPp//AGz/APQzQB01RTXMFvt8+eOL d03uFz+dU9dv30/Tmlj/ANa7BEOMgE9/yBqjpnh6B7fztRVpp5fnIZmG3Pr3z65//WAbkUkcyCSJ 1dD0ZTkH8afXLXif8I5qUM1szfZp8+ZGTngHnH0BGOfWtbxJ/wAgO5/4D/6EKANCWSOFDJK6og6s xwB+NNhuYLjd5E8cu3rscNj8q5/Q9MGoafE94zmBCRHCrEK3Jyx565JHbpVfXNO/sieG9sGaJS2M ZzsbHv1BGf8AJoA62iorWb7Rawz7dvmIr4znGRmpaACquqf8gu7/AOuL/wDoJq1VXVP+QXd/9cX/ APQTQBx+iXD2N9BcHAhlYxMSQBjjP0xlTXdVyWnWZvfC9yiLukSYug56hV9OpxkfjW34fvWvtMR3 yZIz5bE9yO/5EfjmgDQZlRS7sFVRkknAArgtTnN5cS3pjIWWTahyBwoHBHrgr+v4dP4mujFYC2jD Ga5bYoXOccZ+vYY96xtfslsLHT7cY3AOXI7sduf8+gFAHY1VtdOtLOV5beBY3k+8R/Ieg9hVquZ0 P/kZ9Q/7af8AoYoA6aoJb20hcxy3UKOOqtIAR+FZHiTUJ0kh0+0LpPMQdytjgnAAP1+n61Nb+GtP iiCyo0792ZiPyAPSgDVikjmQSROroejKcg/jT6qadYR6fHLHCT5byFwD/DkAY9+lczai4k8QX0Ns xjeVpEMo/wCWa78k/pjtyRzQB2NNZlRS7sFVRkknAArOs9Ig026kvFuJGyjCQzMD3Bznj0NZFukn iW+naad0tIiNsa8HnO3jkZ65P+QAdCt/ZOwRLuBmY4AEgJJ/OrNY9x4a0+WIrEjQP2ZWJ/ME9Kr+ H7y4hu5NJuyCYgfLYnB47DPUY5Ht7dADoKrLf2TsES7gZmOABICSfzrn9Wd9Q8Qpp083lWysMY4y SufzOcD/ADnTl8OaY6FVhaMn+JXOR+eRQBrVHNPFAoeaVI1JwC7ADP41Tup10jRwSwZooxGmRjc2 MDjP4/TNZWk6UNUjGoalM85cnam4gYyRz+PQDFAG/Dd207FIbiKRgMkI4Jx+FTVz+p+HYUhNxp++ KaIbgoYndjnjvn0+n41Z0e8OsaVLHcECTBicqRkgj72O3f8AKgChr/7zxFYRP80Z2fIeRy5zx74r pq4vUdKgtdYtbON5DHNs3FiMjLEccVvQ+H7SG1uLZZJik+3cSwyNpyMcUAVzfXJ8VrZmU/Z1OQgA H/LPPXqea3q4v+yoP+Ej/s7fJ5P97I3fc3enrXU6bp8WmwNDCzsrNuJcgnOAOw9qALdUtXvxp1i0 4AZyQqKc4LH/ACT+FXa5nxL/AKTrFjZvxGccjr8zYP8AKgCXTNHN+n23VnadpVyiFz8qnnPH8hwP 5azaXYOpU2UGCMHEYB/MVbooAqadYR6fHLHCT5byFwD/AA5AGPfpVlmVFLuwVVGSScAChmVFLuwV VGSScACuXt0k8S307TTulpERtjXg8528cjPXJ/yADoVv7J2CJdwMzHAAkBJP51ZrHuPDWnyxFYka B+zKxP5gnpVfw/eXEN3JpN2QTED5bE4PHYZ6jHI9vboAdBRXM+M/+XP/AIH/AOy1ZfRX1SL7RfXE ySyZZIwfliB6DBHXpnp/WgDdqOaeKBQ80qRqTgF2AGfxrnfGf/Ln/wAD/wDZau22kLer9r1UGWeU AhMsoiXsoH8/8kgGrDPFOpeGVJFBwSjAjP4VJXJ6lat4f1CC7s9/kMcMpPvkrnHQjpnJ49q37/UY 7XTGvEYMGUGLP8RPTjj6/TNAFmaeKBQ80qRqTgF2AGfxpsN3bTsUhuIpGAyQjgnH4VgaTpQ1SMah qUzzlydqbiBjJHP49AMVLqfh2FITcafvimiG4KGJ3Y54759Pp+NAHQUVmaBqL6jZFpdvnRttbB68 cHHbP9DWLfNMvi1/swzM2FT/AGSY8Z6HgZz+FAHW0yWSOFDJK6og6sxwB+NZlrocdveRXhuZpZ1+ +0hzu+Uj6j8zSXWiC+1B57u4doAR5cIJwOBn6Zwen50AaMN3bTsUhuIpGAyQjgnH4VNXNa7o1vZ2 Qu7JTC8LAkhzyCccZ7g4/WtK2A1rQoxcll81cOVIySrdencigCob65PitbMyn7OpyEAA/wCWeevU 81vVxf8AZUH/AAkf9nb5PJ/vZG77m709a6nTdPi02BoYWdlZtxLkE5wB2HtQAtrp1pZyvLbwLG8n 3iP5D0HsKtVzOh/8jPqH/bT/ANDFT+INQm+1QabZy+XLIw3uDgjJ4GRyPU/hQBsS3tpC5jluoUcd VaQAj8KkikjmQSROroejKcg/jWVb+GtPiiCyo0792ZiPyAPSsy6gm8NXiT2rtLbS8Mr98dieme4P 1/EA6umsyopd2CqoySTgAVW1FlfSbp0YMrQOQQcgjaa57w7YNqFo6Tu62iSZ2I2PMb5chvYYH59a AOmhu7adikNxFIwGSEcE4/Cpq5bX9GisoFvLENF5bDcAx454YEnOc4rd0i6e80yCeQfOy4b3IOM/ jjNAFyiisfxJfzWtvFBbbhNcMVBUZIHfHvyP1oA0pru2gYJNcRRsRkB3AOPxqRWV1DowZWGQQcgi sey8NWUVuq3SedN1ZgzAD2GD0qnbl9C11LJJGe1uNuFPJBPAPbByPyoA6aqzX9kjFHu4FZTggyAE H86w/E9xJJfW+nmYRW8gVnb6sRk+wxmr/wDwjmmeVs8lt23G/ec59fTP4UAa1YOl31zc+ILuCWUt FEJAi4AA+cDt1/GrbaJBJpkVhJJIY4nLqy4B6nrx71z2naVBdaxdWcjyCOHftKkZOGA54oA7SioL G0jsbVLaIsUTOCx55Of61PQBzPjP/lz/AOB/+y101cz4z/5c/wDgf/stbmp3f2GwmucZKL8ox3PA /DJoAmmnigUPNKkak4BdgBn8aIZ4p1LwypIoOCUYEZ/Cuf0jRlv0a/1MtM8/KqSV49TjH4dsfozV rIaFJDf6cxjBbYyMxIPHT6cHPPpigDp6KjglWeCOZAQsihgD1wRmpKACoprmC32+fPHFu6b3C5/O ue8Z/wDLn/wP/wBlq/FokNwPP1IPNcSDLKXIWPqdq4PQZ9T0oA1IpI5kEkTq6HoynIP40+uSt0l0 PxClsjM0MzKMEj5lPAJ9wf5e9aHi/wD5BcX/AF2H/oLUAbtFVdL/AOQXaf8AXFP/AEEVh+M/+XP/ AIH/AOy0AdNRRXGeHLNr5poHJFtlXlwcFiM4Xr0OSfw7UAdZFe2kziOK6hdz0VZASfwqSWSOFDJK 6og6sxwB+Nc5rui29la/bbLdC0TLkBz69R3zkjvVjT7eTXLSK41Ni0anCRJ8qvjgs2Oc5+nT3oA2 YbmC43eRPHLt67HDY/Kpa5TXNNTSGhvrBmi+fbjdnBxxjPbg5ye9blzqHk6N9v2YJiV1XrgtjHpx k0AO1SC2nhRby5MMAYZXeEVz1wSfp2qxbyQSRD7M8bxr8o8sggY7cVgaRoy36Nf6mWmeflVJK8ep xj8O2P0Zq1kNCkhv9OYxgtsZGYkHjp9ODnn0xQB09FUryVZ9EnmQELJbMwB64K5rn/D9rNf2j2/m yQ2quWkKHBkJUAL06DHP1HFAHW1HNPFAoeaVI1JwC7ADP41mGOLw7pVw0blwW3Rh8Z3EAAds9M/S qOk6UNUjGoalM85cnam4gYyRz+PQDFAG/Dd207FIbiKRgMkI4Jx+FTVz+p+HYUhNxp++KaIbgoYn djnjvn0+n41d0DUX1GyLS7fOjba2D144OO2f6GgDToorM8Sf8gO5/wCA/wDoQoA06KzPDf8AyA7b /gX/AKEaq+L/APkFxf8AXYf+gtQBu0VV0v8A5Bdp/wBcU/8AQRXM2cU1x4ivYYZGiDu/mSIcMqh8 8e5IA/GgDqfttp5vlfaofM3bdnmDOfTHrU9YV74atDZMtqjLOq5Vi2d5A6HJxz+FJ4SvJJ7SWCQl vII2sT/Cc8fhj9fagDeooqrqn/ILu/8Ari//AKCaALDMqKXdgqqMkk4AFRw3dtOxSG4ikYDJCOCc fhXM+HdPGoWzC5ybWKQkICRvcgDnB7AD86XXNNTSGhvrBmi+fbjdnBxxjPbg5ye9AHTzTxQKHmlS NScAuwAz+NEM8U6l4ZUkUHBKMCM/hWVbaeNWhivNUy7OuUhUlURT0Iwc5PXr39qy9St/+Ef1K3ub Nm8qTOULdQDyvTpgj1oA62o5p4oFDzSpGpOAXYAZ/GoNUvVsLGS4ONwGEB7sen+fQGsXSdKGqRjU NSmecuTtTcQMZI5/HoBigDfhu7adikNxFIwGSEcE4/Cpq5/U/DsKQm40/fFNENwUMTuxzx3z6fT8 au6BqL6jZFpdvnRttbB68cHHbP8AQ0AadQS3tpC5jluoUcdVaQAj8K5m+WZ/FrpbnbI+FDf3QY8E 9RyBk/hWrL4bsZIHX94ZmyfPZyWznOSOh/z9aANiiua8K3E8dzcadNnEYLAE52EHBH6/p71N4kvJ mmg0y3bY1xjex7gnAGfTrn/9dAGs1/ZIxR7uBWU4IMgBB/OsLxn/AMuf/A//AGWr1v4a0+KILKjT v3ZmI/IA9KwtfspNPMNsGLWwLNCzNlhnbuB/EZ6d6AOxnhjuIWhmQPG4wVNNtbWCzh8m3jEaZzgc 5P1qPVP+QXd/9cX/APQTWZ4Q/wCQXL/12P8A6CtAG1LJHChkldUQdWY4A/GmQ3dtOxSG4ikYDJCO CcfhWddaIL7UHnu7h2gBHlwgnA4GfpnB6fnVHXdGt7OyF3ZKYXhYEkOeQTjjPcHH60AdLXM6H/yM +of9tP8A0MVtaRdPeaZBPIPnZcN7kHGfxxmsXQ/+Rn1D/tp/6GKAOmooooAZLJHChkldUQdWY4A/ GmQ3dtOxSG4ikYDJCOCcfhXNW8T+JdRmknlZLaHhEXggHOPUZ45P+Rp3Hh2yMRNojQTr8yOsjfe7 ZznjPpzQBR0P/kZ9Q/7af+hiumrlfDhkbxBeGZQspVy6joG3jIqTXP8AkZ9P/wC2f/oZoA6aiiuZ /wCZ3/z/AM8qAOmooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKAOU8JW0Fx9r8+COXbsxvQNj73rXQ/wBm2P8Az5W3/fpf8KyPCVtPb/a/Pgki 3bMb0K5+9610NAGF4v8A+QXF/wBdh/6C1aWksr6VaFWDDyVGQc8gYNSX1ql7Zy27nAkXGfQ9j+dc /Zahd6EptL+1drdGISVBxzk8Hoc/mOfpQB09cz4M/wCXz/gH/s1OutYuNWie00u0kO9cO744Bzke gyO5PrWvpFgNOsVgJDOSWdhnBY/5A/CgDG/5nf8Az/zyrpq577NP/wAJj5/kSeT/AM9Nh2/6vHX6 10NAHM6H/wAjPqH/AG0/9DFH/M7/AOf+eVS6PbTx+Ir6WSCRI28za7IQDlx0NP8AEWnXMs8F9ZKW lhHIGMjByCB37/pxQBvVzPjP/lz/AOB/+y1Yg8TxELFPazi5ztZEUH5umBk5/CszWbTUrxoryW3c tKCFijQsYlHTJ9Tk/wCeAAavi5WbSkIUkLMCSB0GCP6ioLPRr2WzgkTWJ41eNWCDOFBHT71bWoWi 31lLbMxQOPvDsQcj+Vc/Zalc6D/oV/bs0Ksdjp6dTj+8MkfTP4UAWZvDlzOoSbVpZFByA6kjP4tW 3aw/Z7WGDdu8tFTOMZwMVitr1xfbodKs5Hcr/rHwAh57dOg4ya36ACuZ1z/kZ9P/AO2f/oZrpq57 WLaeTxFYyxwSPGvl7nVCQMOepoAj8ZqxW0cKdoLgnHAJxj+R/KrH9hX3/Qbuf/Hv/iqvazp/9pWR hD7HVt6E9M4PX25rIstcl0xFs9StpAY1wrKBkgcDjoRweQe340ASzeGp7jb5+qyS7em9C2Pzauhr Dg1m51GdEsLNxAJF3zPj7uRuHpnn1JxW5QBHOZFgkMKhpQpKKehbHArmbG21yynmnSyiklmOWZ2X PXJxhhjP9BXVUUActq9xrT6dKt5ZwxwHG5lIyORj+I98VY8Ny6j5FtH9nj+w/N+8z83U+/rx0rQ8 QRyTaPPHEjO524VRkn5h2o8PxyQ6PBHKjI43ZVhgj5j2oA0aazKil3YKqjJJOABTqzfED3C6Y6W0 TyPKfLOxckKepxj8PxoAwLR9QvNVn1KythNhiFMmFCjGB3GTt471ptceIXUo+nWrKwwQSCCP++qu 6DZmy0uJHXbI/wA7jnqfr0OMD8K0aAOV8NGSw1WawuFCPIoOOp3AZAyOOhJrf1W2N5ps8ABLMuVA IGWHIHPuBWV4ktLj7ZaX1rC8zxkAgDcBg5HA59a3Yn8yJJNrJuUHawwRnsR60AYmh6kqaBI8hBa1 BGGflh1X6eg+lO8K27JZSXcjlnuWySTngEjn3zn9KztSsL9dSube2jkNveOrMxXK9c8kDgAk/hXV RRpDEkUYwiKFUegFAHOeM/8Alz/4H/7LXTVz3i22nuPsnkQSS7d+diFsfd9K6GgDmfGf/Ln/AMD/ APZa3NU/5Bd3/wBcX/8AQTWR4ttp7j7J5EEku3fnYhbH3fStjUVZ9OukRSzNC4AAyScGgDL8If8A ILl/67H/ANBWt2sbwrBLBp0iTRPGxmJAdSDjA9a2aACsLxf/AMguL/rsP/QWrWvp5La1eaKBp3XG I16nnHoa5vWLu+1O1WD+ybmLa4fO1m7Ef3R60AdDpf8AyC7T/rin/oIq1XPWur31vawwf2Nct5aK mfmGcDH92ty6eSO1mkiXfIqMVXGckDgYoAzLjw1p88pkUSQ56rGwAz9CDiqesafZ6TosqwoxkmZY /MY5J53c+g47e1TL4ptlG2e2njlBIZAAcH8SP5U2O3u9bvo7i+tzbW1ufkideXPGc5HI4H8vU0Aa mkW/2bS7aLDAhAWDdQTyR+ZpNYvDY6bLMpAkxtTJH3j/ADx1x7VdrA16GfUNRtbNIZvIVsySAELz 15IxkD+eKAJ/DFj9l04SsP3lxhz7L/D/AI/jWxTVVUUIihVUYAAwAKdQAVS1mGOfSrkSoG2Rs657 MAcGs9vEIsppLe+t5gyMQjgD94uSA2Dj07cdelVb3ULvXVFpYWrrbuwDyuOOMHk9Bj8zx9KALvhK R30kqxyI5WVfYYB/mTW1VXTrKPT7NLeM7scs2MFj61aoAzPEn/IDuf8AgP8A6EKPDf8AyA7b/gX/ AKEaPEn/ACA7n/gP/oQrJ0i/m0vTonmgkmtJMt5if8sjkjH0JAPbqetAG9qzKmlXZZgo8lhknHJG BWZ4WYQaLNNLlYxIz7iD90KMn36H8qrX2oz66BZadA4iYjzXcdO4zjOBxn1P89uPT0i0k2CNgGIp ux3I5OM+pzigDFtDqevPJOt21nboxCCM9+OOCM8dz68VX17SFsrNLl7mW4uHkCs7ngjB/HsO9LpO pvofm2l9bSKC28YHOenc4I46inaxJe6varNFaTJAjgRptJMmQTuIHYAD/vo80AdDpf8AyC7T/rin /oIrD0P/AJGfUP8Atp/6GK3dOVk061R1KssKAgjBBwKx9Htp4/EV9LJBIkbeZtdkIBy46GgDoaKK KAMLxf8A8guL/rsP/QWrT0v/AJBdp/1xT/0EVQ8VQSz6dGkMTyMJgSEUk4wfSq9rq99b2sMH9jXL eWipn5hnAx/doAZ4qs4YIor2BfKn80AsnGepz9cjrWpPK0/h+SZwA0lqWIHTJTNZT2up67PGbyM2 tmpJC9D19Dzn3Ix/Xbv4/wDiV3EUSf8ALFlVFH+ycACgDM8If8guX/rsf/QVqt/zO/8An/nlV3wr BLBp0iTRPGxmJAdSDjA9ar/Zp/8AhMfP8iTyf+emw7f9Xjr9aAJPF/8AyC4v+uw/9BatPS/+QXaf 9cU/9BFUPFUEs+nRpDE8jCYEhFJOMH0rQ05WTTrVHUqywoCCMEHAoAs1zXidWttRstQCl1UgFcYG VORz75P5V0tVdRso9Qs3t5DtzyrYyVPrQBYVldQ6MGVhkEHIIqlc6NYXU7Tzwb5Gxk72GcDHY1kW 91qGgKLa6tvOtU582MHCgn1+ueDjr1xVhvFNsw2wW08kpICoQBk/gT/KgCp4ejSHxFexRjCIsiqP QBxVvWNQu5NQTS9PYJIw+d+hGRnHtxzkc+lM0G0uxqtxfT2zQxzq5AY8glgcY6+vaodZS403XF1S OIyxEAk44HG0gnt7H374oAtf8I7JN8t7qdzPGOQucYPryT71W8Gf8vn/AAD/ANmqz/bT6n/o2nW8 wL/K8zDAiB78HrjPcdO9R+Erae3+1+fBJFu2Y3oVz971oAk8X/8AILi/67D/ANBatPS/+QXaf9cU /wDQRVfX7CTUNP8ALhI8xGDgH+LAIx7daq6Lf3p+z2U+myxqq7TMQQAAOOCPYDrQBl29lPc+Ib6K O5ktHDO+5Qckbh7jg5BrT/sK+/6Ddz/49/8AFUzWdPu7fUF1WwBkkBG+Pbk9McDuMde/9BfFlsYc tbSiXB+UEFc9uf8A61AFnStEbT7yS5e6M7OpU5TBJJBznJ9Ki1Xw+Lmf7VZyCCfOSOQC2euR0NXN LuL26aWW6tjbxEKIkbr3yT39O1UW16SxuZor+1l8vzH8qRVxuUHjg4B4759PrQBUGq6po9wkWpL5 0J4DcEkDjIPc9OvP0zXTRSJNEksZyjqGU+oNczqN3N4gENvY2sghD5aWRcANj1HAGD9f69Jaw/Z7 WGDdu8tFTOMZwMUAS1x9vZT3PiG+ijuZLRwzvuUHJG4e44OQa7Cuf1nT7u31BdVsAZJARvj25PTH A7jHXv8A0AH/ANhX3/Qbuf8Ax7/4qptK0RtPvJLl7ozs6lTlMEkkHOcn0qsviy2MOWtpRLg/KCCu e3P/ANatDS7i9umllurY28RCiJG698k9/TtQBk+M/wDlz/4H/wCy101YvifTpr63jlg+ZoNxKAcs Djp78dKn0vUbu7l8q50+S3wmTIwIBPHABH9aANOquqf8gu7/AOuL/wDoJq1VbUVZ9OukRSzNC4AA yScGgDmtB0S21KzeaZ5VZZCoCEAYwD3HvW3ZaDYWbrIqNJIrblaRs4/AcfpUPhWCWDTpEmieNjMS A6kHGB61s0AMlkSGJ5ZDhEUsx9AK5y0Op688k63bWdujEIIz3444Izx3PrxXQ3UP2i1mg3bfMRkz jOMjFcvpOpvofm2l9bSKC28YHOenc4I46igBNe0hbKzS5e5luLh5ArO54Iwfx7DvXSaX/wAgu0/6 4p/6CK57WJL3V7VZorSZIEcCNNpJkyCdxA7AAf8AfR5rotOVk061R1KssKAgjBBwKAMLwZ/y+f8A AP8A2atzVP8AkF3f/XF//QTXOKZ/DurSSGBjZyNgbSSNpORg/wB4e/v65q5danNrFrNBYW0yxbGL ykc8DO0AHqeB17nigCTwh/yC5f8Arsf/AEFara5/yM+n/wDbP/0M1d8KwSwadIk0TxsZiQHUg4wP Wq+sW08niKxljgkeNfL3OqEgYc9TQB0NFFRzyNFBJIiGRkUsEHViB0oA5jXXl1LWUtbWPz/s68px tz1bnPToOo5q99q8R/8APhbf99D/AOKpvhmznWW6vbuNkmkbA3qVPPLHHoTj8jW/QBxrtd6frcF/ fQRwea/IXlcYwxwCecHP1rsqzPEVm95pbrGrPJGwdVXvjg/oTT9DklfTIknheGSIeWQ6lcgdCM+2 PxzQBk+DP+Xz/gH/ALNRrn/Iz6f/ANs//QzUvhK2nt/tfnwSRbtmN6Fc/e9aNYtp5PEVjLHBI8a+ XudUJAw56mgCPxmrFbRwp2guCccAnGP5H8qsf2Fff9Bu5/8AHv8A4qr2s6f/AGlZGEPsdW3oT0zg 9fbmsiy1yXTEWz1K2kBjXCsoGSBwOOhHB5B7fjQBLN4anuNvn6rJLt6b0LY/NqveJP8AkB3P/Af/ AEIVWg1m51GdEsLNxAJF3zPj7uRuHpnn1JxVvxBHJNo88cSM7nbhVGSfmHagBvhv/kB23/Av/QjV Xxf/AMguL/rsP/QWq54fjkh0eCOVGRxuyrDBHzHtVfxVBLPp0aQxPIwmBIRSTjB9KAL+l/8AILtP +uKf+girVZrTNY+HVkYmOSO2UDK8htoA4+uKdoclzPpqTXcheSQlhlAuF7dOvTOfegDQqrqn/ILu /wDri/8A6CatVW1FWfTrpEUszQuAAMknBoAy/CH/ACC5f+ux/wDQVqG1/wCJV4mktgAlvdDcoJAA PJGPxyAPerXhWCWDTpEmieNjMSA6kHGB607xJZvcWSzQBzcQMGTYCW5IzjH4HPtQBRtVOseJJLls GC0OEwQQcE7eR6nLd/Sk8Z/8uf8AwP8A9lrU8P2TWOmIj5Ekh8xgexPb8gPxzVDxbbT3H2TyIJJd u/OxC2Pu+lAHQ1zOh/8AIz6h/wBtP/QxXTVz2j208fiK+lkgkSNvM2uyEA5cdDQBCzKnjbLMFGQM k45MeBXT1h+INMnnkjv7QkzwAfJjOQDkEe/t3/myPxPHEPLvrSaKdcblUe3XBII+lAG/XM6H/wAj PqH/AG0/9DFbOk3kt/bNPLAYAW+RTnlcA5z36msvR7aePxFfSyQSJG3mbXZCAcuOhoA19U/5Bd3/ ANcX/wDQTWX4PZTp0yBhuExJGeQCBj+R/Kt6uYMV54evppLe3M9nKCxCg/KB0yecYz17j9ADp65n /md/8/8APKp5PE8co8uxtJpZ2ztVh7dcAkn6VNoOmT20k15e4+0zE8A9BnJ6ccnH5UAO1nQo9RPn RsIrgDlscP6Z/wAf51mSXms6IyC6IuIM4DE5B7n5uuevX+laF5rM2nahMlzbSPaFl2SquMfLyB2P Pv61T1HVn1i1Npp9pM+9gJGZfu85HQ8cjqfT8gB/iS5jvNCt7iEnY8wIyMEcNkVsaSyvpVoVYMPJ UZBzyBg1BBpQGhjTpnDEqQWAOAxOQffB/PFZVlqF3oSm0v7V2t0YhJUHHOTwehz+Y5+lAHT1zPgz /l8/4B/7NTrrWLjVontNLtJDvXDu+OAc5HoMjuT61r6RYDTrFYCQzklnYZwWP+QPwoAxtc/5GfT/ APtn/wChmumrntYtp5PEVjLHBI8a+XudUJAw56muhoA5n/md/wDP/PKumrnNUtLyz1tNUtoTcqxG UUEkfLg9Pbv/AJOxpt3LeQNJNavbMG2hHzkjA55A9f0oAt1zXidWttRstQCl1UgFcYGVORz75P5V 0tVdRso9Qs3t5DtzyrYyVPrQBYVldQ6MGVhkEHIIp1cxa3mo6En2e7tDJaoeJEH3QT69PXg4PNWW 8U2zDbBbTySkgKhAGT+BP8qANTVP+QXd/wDXF/8A0E1l+D2U6dMgYbhMSRnkAgY/kfyrR0qe7uYJ JruEwlpDsjIwVXAx79c9f5VimK88PX00lvbmezlBYhQflA6ZPOMZ69x+gB09cz/zO/8An/nlU8ni eOUeXY2k0s7Z2qw9uuAST9Km0HTJ7aSa8vcfaZieAegzk9OOTj8qAKXjP/lz/wCB/wDstdNXPeLb ae4+yeRBJLt352IWx930roaAOZ8Z/wDLn/wP/wBlrpq5nxn/AMuf/A//AGWrP9tPpn+jajbzEp8q TKMiUDvyeuMdz17UAJ4wZRp0KFhuMwIGeSADn+Y/OoNeVk8NWKOpVlMYIIwQdhpoS48R6hHK8Rjs IjldwxuGeRnuTjt0/n0F9ape2ctu5wJFxn0PY/nQBHpLK+lWhVgw8lRkHPIGDVuuYstQu9CU2l/a u1ujEJKg45yeD0OfzHP0p91rFxq0T2ml2kh3rh3fHAOcj0GR3J9aAG+DP+Xz/gH/ALNR/wAzv/n/ AJ5Vs6RYDTrFYCQzklnYZwWP+QPwrL+zT/8ACY+f5Enk/wDPTYdv+rx1+tAHQ1zS3N9rt9LHaXJt rSI/fTgnrg9jz6dB9evS1yNjcSeHL6aK5gdoJDgOFwWx0I5wevIz3oAl1fRPs+nS3dxeTXM8eApY 8YJAxzk9z3rW8N/8gO2/4F/6EazNSu7rWrGT7LazJbJhg20kynIGAB2HJ79B0rV8PxyQ6PBHKjI4 3ZVhgj5j2oAyv+Z3/wA/88q6auc1S0vLPW01S2hNyrEZRQSR8uD09u/+Tsabdy3kDSTWr2zBtoR8 5IwOeQPX9KAMTQ/+Rn1D/tp/6GKRmVPG2WYKMgZJxyY8CptHtp4/EV9LJBIkbeZtdkIBy46Gp/EO nTTmK+s+bi35wBksAcjHuDnjvmgDarC8X/8AILi/67D/ANBamx+J44h5d9aTRTrjcqj264JBH0qD yLzxBeQT3Fv5FlHyA3VhwTjoTnjnp/UA0/8AmWP+3L/2SqvhD/kFy/8AXY/+grWpqKs+nXSIpZmh cAAZJODWf4Vglg06RJonjYzEgOpBxgetAE3iT/kB3P8AwH/0IUeG/wDkB23/AAL/ANCNO8QRyTaP PHEjO524VRkn5h2o8PxyQ6PBHKjI43ZVhgj5j2oA0a5bxJDJJrtmqs0fmKiLIB0O49PcZFdTWT4g 0p9St0aJsTQ5KqejZxkfXigCD+wr7/oN3P8A49/8VSR+HZReQ3M2ovM0TKw3oSSAc4yWqK28TGBf J1K2lWdAASqgFvcg4x2/+tVux1S71K6iaG0aKzDNvkY/fGCBj8euM/4gE+r6RDqiLuPlzL92QDPH oR3FYrnW9CiVmkWa2XH+2o7Ac4IHT2rU1PVLjTr4E2zy2ZjXcyr9xtxHXp0xwfbpVO819b60ltrC 0nklkUqcpnCngngn1oA2NMv49StBPGCvO1lP8LenvWJof/Iz6h/20/8AQxWpoFhJp+n+XMR5jsXI H8OQBj36VlyQXuka3Ldw2rXcU+4/IDkZOccZwQcfX+QB01FQWM8lzapNLA0DtnMbdRzj0FT0Acz4 z/5c/wDgf/stWvFys2lIQpIWYEkDoMEf1FReLbae4+yeRBJLt352IWx930rY1C0W+spbZmKBx94d iDkfyoAxbPRr2WzgkTWJ41eNWCDOFBHT71Pm8OXM6hJtWlkUHIDqSM/i1VrLUrnQf9Cv7dmhVjsd PTqcf3hkj6Z/CrTa9cX26HSrOR3K/wCsfACHnt06DjJoA2rWH7Pawwbt3loqZxjOBipaKKAOZ8Z/ 8uf/AAP/ANlrpq57xbbT3H2TyIJJdu/OxC2Pu+ldDQBzOuf8jPp//bP/ANDNWfF//ILi/wCuw/8A QWqPWLaeTxFYyxwSPGvl7nVCQMOeprR1yxa/014o1DSghkyccj/62R+NAE2l/wDILtP+uKf+gisP xn/y5/8AA/8A2WmaZr39nW/2O/gmDxcLgfNjrggkfh7VBrUeo6j5Ny1nMgO5VhClioGOT7kk9h0F AHYVzPgz/l8/4B/7NXTVz3hK2nt/tfnwSRbtmN6Fc/e9aAL3iT/kB3P/AAH/ANCFHhv/AJAdt/wL /wBCNO8QRyTaPPHEjO524VRkn5h2o8PxyQ6PBHKjI43ZVhgj5j2oAp+L/wDkFxf9dh/6C1V9aVm8 L2JCkhRGSQOg2Ef1FXPFUEs+nRpDE8jCYEhFJOMH0qwLL7XoMVnKWiLQoDxypAB6fUUAZtno17LZ wSJrE8avGrBBnCgjp96nzeHLmdQk2rSyKDkB1JGfxaq1lqVzoP8AoV/bs0Ksdjp6dTj+8MkfTP4V abXri+3Q6VZyO5X/AFj4AQ89unQcZNAGhdQ/Z9Cmg3bvLtWTOMZwuKo+EP8AkFy/9dj/AOgrWpqK s+nXSIpZmhcAAZJODWf4Vglg06RJonjYzEgOpBxgetAEfi//AJBcX/XYf+gtWlpLK+lWhVgw8lRk HPIGDUl9ape2ctu5wJFxn0PY/nXP2WoXehKbS/tXa3RiElQcc5PB6HP5jn6UAdPXM+DP+Xz/AIB/ 7NTrrWLjVontNLtJDvXDu+OAc5HoMjuT61r6RYDTrFYCQzklnYZwWP8AkD8KALtZniT/AJAdz/wH /wBCFadVtQtheWM1uQMupC5JADdj+eKAKvhv/kB23/Av/QjVXxf/AMguL/rsP/QWqhpeqyaKHs9Q glCglkwOR9MnBHB5Hv1zS6xJe6varNFaTJAjgRptJMmQTuIHYAD/AL6PNAHQ6X/yC7T/AK4p/wCg isPQ/wDkZ9Q/7af+hit3TlZNOtUdSrLCgIIwQcCsfR7aePxFfSyQSJG3mbXZCAcuOhoA6GuZ8Gf8 vn/AP/Zq6aue8JW09v8Aa/Pgki3bMb0K5+960AdDVXVP+QXd/wDXF/8A0E1aqtqKs+nXSIpZmhcA AZJODQBl+EP+QXL/ANdj/wCgrR4v/wCQXF/12H/oLVJ4Vglg06RJonjYzEgOpBxgetHiqCWfTo0h ieRhMCQiknGD6UAX9L/5Bdp/1xT/ANBFYfjP/lz/AOB/+y1u6crJp1qjqVZYUBBGCDgVj+Lbae4+ yeRBJLt352IWx930oAk8X/8AILi/67D/ANBatLSWV9KtCrBh5KjIOeQMGpL61S9s5bdzgSLjPoex /OufstQu9CU2l/au1ujEJKg45yeD0OfzHP0oA6euZ8Gf8vn/AAD/ANmp11rFxq0T2ml2kh3rh3fH AOcj0GR3J9a19IsBp1isBIZySzsM4LH/ACB+FAGN/wAzv/n/AJ5V01c99mn/AOEx8/yJPJ/56bDt /wBXjr9a6GgDmdD/AORn1D/tp/6GKP8Amd/8/wDPKpdHtp4/EV9LJBIkbeZtdkIBy46Gn+ItOuZZ 4L6yUtLCOQMZGDkEDv3/AE4oA3q5nxn/AMuf/A//AGWrEHieIhYp7WcXOdrIig/N0wMnP4Vmazaa leNFeS27lpQQsUaFjEo6ZPqcn/PAAOn1T/kF3f8A1xf/ANBNZnhD/kFy/wDXY/8AoK1qairPp10i KWZoXAAGSTg1n+FYJYNOkSaJ42MxIDqQcYHrQBTW5vtdvpY7S5NtaRH76cE9cHsefToPr1j1fRPs +nS3dxeTXM8eApY8YJAxzk9z3qKxuJPDl9NFcwO0EhwHC4LY6Ec4PXkZ71Y1K7utasZPstrMlsmG DbSTKcgYAHYcnv0HSgDT8N/8gO2/4F/6EazND/5GfUP+2n/oYrV8PxyQ6PBHKjI43ZVhgj5j2rP0 e2nj8RX0skEiRt5m12QgHLjoaAOhqrqn/ILu/wDri/8A6CatUUAYXhD/AJBcv/XY/wDoK1u1ykSX fhy9lcwtJYu2Cw5+XPBz2PPfAPP1q/8A24+oKYdLt5fOYgGSRRsjB7nBPp/+vpQBV0P/AJGfUP8A tp/6GKNc/wCRn0//ALZ/+hmjw7YT2es3CyRSCNUZFkZCA3zDp9cVP4n0+eYwXlojNLFw2wndjOQQ PY56etAG/XM/8zv/AJ/55VNB4oWWFUWzlluyPuIPlJ746npz0/xqtY2l6viZJ7mKQ7ss77TtUlOm eeATjr2oA6miiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAzPEn/IDuf8AgP8A6EKPDf8AyA7b/gX/AKEavXNvFdQNBOu+NsZGSM4Oe1FtbxWsCwQLsjXO BknGTnvQBLRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAZ+t2dxf2P2e3dELMC+/oVHboe+KuxRpDEkUYwiKFUegFPooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooA5nxn/wAuf/A//Za6aqt7p9rf7PtUXmbM7fmIxnr0PtVqgAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKwvE+oXVh9m+yy+Xv3bvlBzjGOo9 63aACiiigAorO1e/e3Rbe1+e9m4iQDOPVj6Dr1/oam0y1ltLQRz3Dzyk7mZmJwfQZ7UAW6KKKACi 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 JCogVFixlQgAXB54xWL/AGVq92wS+1ECHBBEPBYHqDwB09c/StqCJYII4UJKxqFBPXAGKAOd8Gf8 vn/AP/Zq6aszRdI/srzv3/m+bt/g24xn3PrWnQAUUUUActqaQW/iqKS6CvDMoLBlGBkFRnPbIzW/ /Ztj/wA+Vt/36X/Cm6np0OpW/lS8MOUcDlT/AIe1ZcOm67aqYrfUIvKB+XfycduqnH0zQBrx2llD Mpjt4I5cEqVQBsdDj8/1p88NveRtDMiSqDgqedpx+hwf1qlpelSWkv2m5upLi4KbCWOQBwcDPPX/ APVUN7pV8b+S9sL0RPIRlGGFwFxz1z+XegDP1zQ4rKA31k7ReWwJTceOQAVPXOa3NGuZLzS4J5iD IwIJAxnBIz+lZr6NqN/tXU79TGjAhYl6+vYc/n1rbghjt4VhhQJGgwFFAHO6H/yM+of9tP8A0MV0 1Y9/oKXF4Lu1uGtJTncUHU+vUYPr61o2MEltapDLO07rnMjdTzn1NAE9FFFAHMWDLZeLLmOZhmYs FIPGWIYdfy+tdPWZq+iw6mVkMjRTKu0MORjOeR+f51VisNeIEUupRrFt2llG5sY9cA5980AUdWuI 5/FNqIznynjjY9s7s/1xVrxjDutbefd9xymMdcjP/sv61OfDkKXdrNBL5awbcqUyXIbOSc9TWtPD HcQtDMgeNxgqaAKlta6bdW8c8VnbFJFyP3S8e31qRrDT0GWtLVRkDJjUcngdqyU0TU7CVv7Nv1WJ snbJ2/DBBOAOanttIvJbhLjUr5pDG4dY4z8uRjB6Y9eg/GgDaooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACs3WJ NShMMmnxiRVDGVCAc9Me/r0rSooAwW1zUCpCaLOGxwSGIB+m2jTtMvJ9SOoapgOh/dx5BA9PXAHb vnn671FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAEF5Z299EIrmPegbcBkjn8PrU9FFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAVtRVn066RFLM0LgAD JJwaz/CsEsGnSJNE8bGYkB1IOMD1rZooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAGSyRwoZJXVEHVm OAPxqtZ6pZX0pitpt7hdxG1hx+I96xvEjNcatZWDsRCxUnaecs2PpwBx9TW5b2FpbMrwQJGyrsyo wSOOvr0HWgCzRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRVDWNR/sy1WfyvN3 OExu29ifQ+lWbOVp7OCZwA0kasQOmSM0ATUUUUAFFFFAEc08UCh5pUjUnALsAM/jTlZXUOjBlYZB ByCKxPF//ILi/wCuw/8AQWrT0v8A5Bdp/wBcU/8AQRQBaooooAKKKKACiiigAqJ7mCOVYpJ40kbG 1GcAnPoKlrmdc/5GfT/+2f8A6GaAOmooqnqcF1c2/wBntnjjWT5ZHfJIXvgdz/n6AD7W+trxpFtp RIYjhsA4HXv36HpVmoLKzhsbdYIFwo6k9WPqfep6ACiiigAooooAKimuYLfb588cW7pvcLn86lrm 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 Wrdlrljdwh2nSF8DckjYwfYnrV6GCKBSkMSRqTkhFAGfwqnNommzMGe0QEDHyEoPyGKAMHxCbfUN Shj09RNcMMO0fIbpjnpwM5P+HGv4k09r6xDxKWmhO5QOpB6j+R/D3q9a2FpZjFvAkZxjcBliOvXr VmgDG0fXLSe0jjnnEU6KA3mt97GBnJ9fz61DrmtQtbvZ2T+dNN8hMfIAP8yc44rSudI0+6bfLaoW ySSuVJJ9cYz+NPs9OtLHP2aBUJ6t1P0yeccdKAItFsf7P06OJhiRvnk/3j/hwPwrI0P/AJGfUP8A tp/6GK6aoktoI5WljgjSRs7nVACc+poAlrmfBn/L5/wD/wBmrpqihtoLfd5EEcW7rsQLn8qAJaKK KAMLxf8A8guL/rsP/QWqTR9Vt1s4ba6lSCeONeHOAVwNpB6dCPfrxUfi/wD5BcX/AF2H/oLVat9O tL7S7P7TArkQphuh+70yOcc9KAM3xBqC35j02wJmdmBYxt8p9vf1PYY/LYbTY20j+zyRt8sLuC4+ YfxY+vNPs9OtLHP2aBUJ6t1P0yeccdKtUAczoOopp3madqG6F1f5S5yBnHHsO+enJ/HUvdcsbSEu s6TPg7UjbOT7kdKs3VhaXgxcQJIcY3EYYDr161Db6Np9tKJYrZQ46FiWx7jJ6+9AFDwxZyATajcg +bcH5cjGVPJP4n27e9U9YdtM8SxXxBZHAY/L2xtIHqcc/iK6qori2huojFPEsiHsw6e49D70AVJt a06KATfakcEZCocseM4x2/HFYvhwyN4gvDMoWUq5dR0DbxkVt2+jafbSiWK2UOOhYlse4yevvVpL aCOVpY4I0kbO51QAnPqaAMfxf/yC4v8ArsP/AEFq09L/AOQXaf8AXFP/AEEVNNBFOoSaJJFByA6g jP405VVFCIoVVGAAMACgB1FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFAGZ/ZH/ABPP7T8//tns/wBnb1z/AErToooAKzNa0j+1fJ/f+V5W 7+DdnOPceladFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWZ/ZH/E8/tPz/ APtns/2dvXP9K06KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAoaxp39p2qweb 5W1w+du7sR6j1q1aw/Z7WGDdu8tFTOMZwMVLRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZmi6v/av nfuPK8rb/HuznPsPStOuZ8Gf8vn/AAD/ANmrobi5htYjLPKsaDux6+w9T7UAS0VnRa7pkrhFu1BP 95So/MjFaNABRTJZI4UMkrqiDqzHAH41QXX9LdgouhknAyjAfmRQBpUVCbu2DIhuIg0gBQbxlgem PWnTTxQKHmlSNScAuwAz+NAElFNVldQ6MGVhkEHIIpk1zBb7fPnji3dN7hc/nQBLRRVa6v7SzGbi dIzjO0nLEdOnWgCzRVO01WxvH8u3uFZ/7pBUn6A9elXKAMzRdX/tXzv3HleVt/j3Zzn2HpRfav8A ZNUt7LyN/nbfn34xlsdMVmeDP+Xz/gH/ALNRrn/Iz6f/ANs//QzQB01FFUrnV9PtW2S3SBskELli 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 oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDC8MafdWH2 n7VF5e/bt+YHOM56H3qtc2t/pWsyX1pA08MrfMF+YnPJHHI5HX6V01FAHPzvqeswSRGyNrb7SSHP zuwGVAyOmcdux5q14bs7ixsHiuY9jmUsBkHjA9PpWtRQBg6zpN298uoacwEwA3LnBJHGRnjp1Ht3 zSxaxqkoEa6PIJSv3mJVc468jp7ZrdooA466tZLXxBYieYzTyNHJI3bcXxge3A/zxXS6tZf2hYSW 4KhzgozDOCP5en41i65/yM+n/wDbP/0M101AHMadd6ppUJtJdMlnVDlSoPGeSMgEHrUep6Xq2oeV cywqZzlSiMoCKMY6nqSWPU9q6uigBksaTRPFIMo6lWHqDXOLbanoNw/2SJru0dgduMn8h0OBjPTp 9K6aigDB/tPWLthFbaabYkHc82cD3GQOn4/Stm1SSO1hjlbfIqKGbOckDk5qWigDC8MafdWH2n7V F5e/bt+YHOM56H3o1XT7q412zuYot0Mezc24DGGJPGfSt2igCpqdhHqVoYJCV53Kw/hb196xbW61 jSR9lmsXuo0HyMmTx25APHHQjNdLRQBhwXGsahOh+zCztlkVm35DsARlfx+g9M1uUUUAFZ2taUmq W4XdsmjyY2PTnqD7HFaNFAHPQajrNiiw3WnSXJCja6HJxz1IyCa0NJuL+6M0t5b+RGceUhGD1Oc9 89PStGigDn9R0y7s746lpeWZiWliznPc/UH0656ey/2zqroqJpEgmOBuYNtz9MDA/Hit+igCnpiX iwu1+ymWR94VTkIMD5fwwao69pVxczQ3tk2biHACHHODkEZ7gnv/APr2qKAKGmS6jL5v9o28cOMb NhznrnufaqGqaZeJqialp2JJcjcjEDHGO/Yjj1/pvUUAVNNkvZIGN/CkUu7AVDkbcDnqfesWfT77 RrtrnSlMsDj5oj82PbHU9eCOfX36WigDBOr6rMVjt9IeNyesuduPyGPzrV0+O4itES7kEk+WLMDk HJJqzRQAUyWNJonikGUdSrD1Bp9FAHNJa6noU8hs4zdWbEEr1PX0HOfcDH9LMWp6pd3MUcemvbx7 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 nJxnPU10lFAGdrWlJqluF3bJo8mNj056g+xxWbbanrFmvkXWmy3LIAA65yfqQCD2ro6KAMexl1a9 uopriJbW1RmPlnIZ8ggZ+n4etbFFFABWF4n0+6v/ALN9li8zZu3fMBjOMdT7Vu0UAFFFFAGFpWn3 Vvrt5cyxbYZN+1twOcsCOM+lHifT7q/+zfZYvM2bt3zAYzjHU+1btFABWFqun3VxrtncxRboY9m5 twGMMSeM+lbtFAEc8SzwSQuSFkUqSOuCMVz1pa63pJlgtIIriEtuDMQM+/UH0/KulooAqanYR6la GCQledysP4W9fesW1utY0kfZZrF7qNB8jJk8duQDxx0IzXS0UAYcFxrGoTofsws7ZZFZt+Q7AEZX 8foPTNXdbt5brSpoIF3yNtwMgZwwPer9FAFDRLeW10qGCddki7sjIOMsT2o1u3lutKmggXfI23Ay BnDA96v0UAUNEt5bXSoYJ12SLuyMg4yxPaoPElncX1gkVtHvcShiMgcYPr9a1qKAKtrb/wDErhtp 1/5YrG65/wBnBGRWGttqeg3D/ZImu7R2B24yfyHQ4GM9On0rpqKAMH+09Yu2EVtpptiQdzzZwPcZ A6fj9K2bVJI7WGOVt8iooZs5yQOTmpaKAOeuNN1Cx1Z73TVWYTbiyuQMZOSOo4zyMf8A69qxe5e1 RryNY5zncq9Bzx3PbFT0UAFZ2taUmqW4XdsmjyY2PTnqD7HFaNFAHOW2p6xZr5F1pstyyAAOucn6 kAg9qt2MurXt1FNcRLa2qMx8s5DPkEDP0/D1rYooArahaLfWUtszFA4+8OxByP5VkaXHrdh5dobe J7ZZMF9wyFJ5I5HueRmugooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCJ7aCSVZZII3kXG12QEjHoaloooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKAIpraC42+fBHLt6b0DY/OpaKKACiiigAooooAKrNYWTsXe0gZmOSTGCSfy qzRQAyKOOFBHEiog6KowB+FPoooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAjmginUJNEkig5AdQRn8aZFZWkLiSK1hRx0ZYwCPxqeigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAqOaCKdQk0SSKDkB1BGfxqSigBqqqKERQqqMAAYAFOoooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAoopKAA1G1OLU3OaAGgUvelpKAHqadmos4pd1AEg oqPdTg2aAH0UgpaAEpaSigBaKKKACiiigAooooAKie2gklWWSCN5FxtdkBIx6GpaKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiio55o7eF ppnCRoMljQBJRWAms6jf7m0ywUxoxBaVuvp3HP59at6Zf30t21rf2ghcKXDr90gY4HXPX1oA1KKz L7V/smqW9l5G/wA7b8+/GMtjpitOgAorM/tf/ief2Z5H/bTf/s7umP61Z1K8+wWMlz5fmbMfLnGc kDr+NAFqmSyJDE8shwiKWY+gFZI18PaxPFZyy3EqlxDHltqhtuSce3pUF9rFzLp7AaZLtlhcO2SR Gcspz8vbGe1AGvZX0F/G8luxZFbbuIxk4B/rVmuR0HUrmzs3jh06W5UyFi6ZwDgccA+n61097eQ2 Nu087YUdAOrH0HvQBPRWAmr6rekyadp6mAdGl/i5PIOQO3QZxS2uvyx3f2XVbcWzk8OMhfQde3Xn OP50Ab1FRXU32e1mn27vLRnxnGcDNVdH1H+07Vp/K8ra5TG7d2B9B60AX6Kq6lefYLGS58vzNmPl zjOSB1/GmWl+11pX21IDuKswiBySQTxnHfHpQA651K2trmO2kc+dIVCoFPOTjOelW64vUb6efWLW 4ksZIpI9m2Fs5fDE8cd+nSul0y+nvfN8+xktdmMb8/NnPqB6frQBfooqOeaO3haaZwkaDJY0ASVn eIJJIdHnkidkcbcMpwR8w71nprep38rf2bYK0S5G6Tv+OQAcEcVFqmo3MmmXNpqFr9nn2qVYH5ZM MuQPcAjoT36UAavh+SSbR4JJXZ3O7LMck/Me9aNZnhv/AJAdt/wL/wBCNRX+ueVeCysoPtNwcrw2 Arenvjv0x6+gBsUVgPq+q2REmo6eogPVov4eRyTkjv0OM1twTR3EKzQuHjcZDCgCSo55VggkmcEr GpYgdcAZqSsfXr6eCKW3jsZJY5ITumXOEzkc8duvWgDN06yk8QmW7v7h/LViqIhxtPHTOQBjH1/n 0trD9ntYYN27y0VM4xnAxXLaDqVzZ2bxw6dLcqZCxdM4BwOOAfT9a3tV1RdOESiB5pZiQiL3Ix/j 6UAaFFc+2pa7DD9om0+LyVAZscNt+m4kflxWrpl/HqVoJ4wV52sp/hb096ALdFZmkav/AGjLNE8H kSRY+QvknrnjA6f1rToAKKzdJ1VtUaZktjHDGcB2bJY/TGOnXnuKh1HXUgna0s4WubkcYUZAOD6c kj0/WgDYorn5tS121US3GnxeUD82zk479GOPritTTNRh1K382Lhhw6E8qf8AD3oAuUVma1q/9leT +483zd38e3GMex9aivNdMLyLbWM1wsLFZJACFUjrzg/0oATWrfVpry3awlKxAc4faA2erDuOnr0P Hrs1ma1q/wDZXk/uPN83d/HtxjHsfWrl7eQ2Nu087YUdAOrH0HvQBPRWBFqusXqCax06MQnjMj5y fbkcVe0m+urozRXlt5E0OM4zhsk8j2465OaANGis7V9Xh0tF3DzJm+7GDjj1J7CqTajrqjzjpieT kHYOX2nt1zn8PwoA3qKp6ZqMOpW/mxcMOHQnlT/h71Bfav8AZNUt7LyN/nbfn34xlsdMUAadFY41 0y3EQgsZntncJ9oYFV5bGRx0/KtigCtqLMmnXToxVlhcgg4IODWf4Vnln06R5pXkYTEAuxJxgetX 9U/5Bd3/ANcX/wDQTWZ4Q/5Bcv8A12P/AKCtAG7RWXqmtx2EyW8cRuLhiMxqcYz07Hk+lVJNT1u1 Hm3WnRmEZ3eWeRx14JwPfFAG/RUFleQ31us8DZU9Qeqn0PvU9ABRTWZUUu7BVUZJJwAKwW168vLk xaTaCVFOC7g4Poe23oep5oA19RZk066dGKssLkEHBBwaz/Cs8s+nSPNK8jCYgF2JOMD1qC41K9S1 uLfU7MQmWFwkqH5M7ThTyeeD39OKf4Q/5Bcv/XY/+grQBtswRSxzgDJwCT+QrHt7ObUtRGoXiyRQ xN/o8D8EY/iI7cjP/wBYczaprcdhMlvHEbi4YjManGM9Ox5PpVSTU9btR5t1p0ZhGd3lnkcdeCcD 3xQBv0VUhv47nT2u7UGXCkhB97cB9361Fo+qLqkDyCMRsjbSm/ccY4PT6/lQBoUVHPKsEEkzglY1 LEDrgDNVNI1CTUrdp2t/JTdhfmzu9T0HH/16AL9FYc+uyTXbWml2wuZAP9YW+Xjr+Hvkc/q1davr OZV1ayEUTkASR8hevXk56dOv1oA3q57wlcz3H2vz55JduzG9y2Pvetb6srqHRgysMgg5BFc34M/5 fP8AgH/s1AHTUVmanrUNhKIEjae5bGI07Z6An19qpNqHiFYfNOnRbcA4Cktz/s7s/pQB0FFZ2kav DqiNtHlzL96MnPHqD3FO1jUf7MtVn8rzdzhMbtvYn0PpQBforGbWZ7pVTTLUTzeWryEt8kZOPlzx k9fT+dQLr15Z3Ii1a0ESMcB0BwPU993UdDxQB0FFFYNt4mjmhlZrcrIpVY4lfc0jHPA49v1oA3qK wLjU9btszS6dGIA2SFO4hevJB9O+MVqaZfx6laCeMFedrKf4W9PegC3RVPU9Rh02382XljwiA8sf 8Pesz+09bmi+0W+nRiBl3KGOWI/ME/lQBv0Vn6XqseoB0KGG4jJDxMeR7/56UzWtX/sryf3Hm+bu /j24xj2PrQBp0Vi3GqajLvk02xWSCNmHmMc78d1AIyOvTOaNN8QRSpIl/ttp4slgcgED0B5z7f5A BtUVgz6lrZDTQaaBBn5Q6kyY6cqDn9P8avaRqseqQuyoY5EOHQnOM9Dnv0oA0KKztX1eHS0XcPMm b7sYOOPUnsKpNqOuqPOOmJ5OQdg5fae3XOfw/CgDeoqnpmow6lb+bFww4dCeVP8Ah71X1DWVsdRh tHiBWQKTIX2hQSR6dsUAalFYUuqarODPYafm2C5BmHzNxnIGen0zU+ia0mp7onj8udFyQOQw7ken Pb+dAGjc3EVrA087bI1xk4Jxk47Ulpcx3lus8JJjYkAkYzgkZ/SsTxJfT+Rc2n2GTyfl/wBI529Q fT1461HoOpXMdrbWq6dK8Rbb54ztwWOT07Z9e1AHS0UUUAFFYup66YLj7JYQ/abjvgEhT6YHU4z9 KZ/aesWv72+05TAPvGE5K+/U8Yz6fWgCPR7meTxFfRSTyPGvmbUZyQMOOgroa5jQWV/Et86MGVhI QQcgjeK19V1RdOESiB5pZiQiL3Ix/j6UAaFFc+2pa7DD9om0+LyVAZscNt+m4kflxWrpl/HqVoJ4 wV52sp/hb096ALdFZmtav/ZXk/uPN83d/HtxjHsfWoZtT1C4kI0qzEsSEgyy4CuckfLyMjjr/KgD ZorF0fXTeXH2S6h8q45xgHBIzkYPQ4/rV7U9Rh02382XljwiA8sf8PegC5RWCuo65cqJrbTohC4y m9ucfmP5Vo6TeS3tszzwGCVG2Mpz1wDnB6daALtZ3iCSSHR55InZHG3DKcEfMO9aNZniT/kB3P8A wH/0IUAO8PySTaPBJK7O53ZZjkn5j3rRrM8N/wDIDtv+Bf8AoRqK/wBc8q8FlZQfabg5XhsBW9Pf Hfpj19ADYorAfV9VsiJNR09RAerRfw8jknJHfocZrbgmjuIVmhcPG4yGFAElFFUNY1H+zLVZ/K83 c4TG7b2J9D6UAX6KxTq19doDplksmFUu7uNoJGSo5GSMj/Cmabr5ed7fU0W1lHIJBUdOhz0P+fqA btFYc+p6pKWl0+xD2yjh5AQz98gZBx6cf4VY0fWBqDPBLEYbmMfMvODjg/TnsaANSioL28hsbdp5 2wo6AdWPoPesdNX1W9Jk07T1MA6NL/FyeQcgdugzigDforBtdflju/suq24tnJ4cZC+g69uvOcfz rZupvs9rNPt3eWjPjOM4GaAJaKwofEL3Vv8A6NZs90zFUjVtwGMfMx4wPm/TqKhk13UbCdF1KyRU cceWeevODkg/T6UAdHRTIpEmiSWM5R1DKfUGsjU9dMFx9ksIftNx3wCQp9MDqcZ+lAG1XPaPczye Ir6KSeR418zajOSBhx0FSf2nrFr+9vtOUwD7xhOSvv1PGM+n1qroLK/iW+dGDKwkIIOQRvFAHT0V T1PUYdNt/Nl5Y8IgPLH/AA96zP7T1uaL7Rb6dGIGXcoY5Yj8wT+VAG/RWfpeqx6gHQoYbiMkPEx5 Hv8A56VoUAFFFY9/rnlXgsrKD7TcHK8NgK3p7479MevoAbFFYD6vqtkRJqOnqID1aL+Hkck5I79D jNbcE0dxCs0Lh43GQwoAkorFHiKMXtxbyW7DymKrsbc0h3BcAcc8569qguNX1m2QXM2nxpbFhwfv AHseeD7kdaAOhqpf6lbacqm5cqWBKqFJLY7fqOtGmX8epWgnjBXnayn+FvT3rlvEF9Pe/Z/PsZLX Zuxvz82ceoHp+tAHaVjW1vqy69JLLKTZktgb8qV7AL2PTt2PPrPpupXN5O0c2nS2yhdwd84JyOOQ PX9KT+1/+J5/Znkf9tN/+zu6Y/rQBp0VBe3kNjbtPO2FHQDqx9B71jxarrF6gmsdOjEJ4zI+cn25 HFAG/RWXpWsC8kNtcxG2u1H3GyN3HbP8vT1qXWNR/sy1WfyvN3OExu29ifQ+lAF+iseXXTsQW1jN cylEd1QHCbhkDOOv4Vp2s32i1hn27fMRXxnOMjNAEtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFJ S0AFFFFABRRRQAUlFNY0ALuoLVHmlzxQA7fSFs02igBDQKWigApaSigAooooAQ05aSjNAEgNLUWa kU0AKaKWkoAWikpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACqWs20l5pc8EIBkYAgE4zgg4/SrtRzzR28ZkmcIgIBY 9Bk4H86AOa0PXIrKAWN6jReWxAfaeOSSGHXOa6S3uYbqISwSrIh7qensfQ+1R3VhaXgxcQJIcY3E YYDr161zmlIbDxO1nBOXhJKt05wpOD7g8fnQBNrn/Iz6f/2z/wDQzXTVzHiQm21uyu3U+UoU8Yyd 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 AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACoL60jvrV7aUsEfGSp54Of6VPRQBgr4euYhsg1eeKIE7UAPA/BhV/TdJtdN3mAMzv 1dyCcen0q/RQBU1HTrfUoRHOp+U5V14ZfpWXF4bkCCGXUpmtu8SjaPX1I689K36KAM6LRrWHUEvY zIHRQqpuG0ALt9M9PerV9aR31q9tKWCPjJU88HP9KnooAgsbSOxtUtoixRM4LHnk5/rU9FFAGNP4 ZsJpmkBlj3HOxCAo+nFas8MdxC0MyB43GCpqSigDB/4RtoGJstRnt1YDcOpJ+oIqxYaDbWsonmZr m43bt79Aeecev1zWtRQAVh3PhuNrn7RZXL2j5JIUZAz6YIx3/OtyigDHi8PQ+VMLi4mnmmUK8pPO AQeM59B1z0rRsbSOxtUtoixRM4LHnk5/rU9FAFTUdOt9ShEc6n5TlXXhl+lR6ZpUGmeb5DyN5mM7 yD0z6AetX6KACo54Y7iFoZkDxuMFTUlFAGE3hwxSs1jfzWqP1UZPr3BHH1qymhW/2aaOaWWWWYKJ JmOXOMHAz0HFalFAEFjaR2NqltEWKJnBY88nP9aparoVvqTebuMM+Mb1GQfqO9alFAGCfDssxVbv VJ54gc7Dnr+JP8q2ba3itYFggXZGucDJOMnPepaKACo54lngkhckLIpUkdcEYqSigCppunxabA0M LOys24lyCc4A7D2qvq+iw6mVkMjRTKu0MORjOeR+f51p0UAY9toRW4jnvL6a7aJt0YYkBT+Z9vTp VnTNKg0zzfIeRvMxneQemfQD1q/RQAyWNJonikGUdSrD1Bqlpmj22mNI8JdmcAEvgkD2wP8AOBWh RQAVmanodrqL+axaKbbjcmOfTI74rTooAwT4dlmKrd6pPPEDnYc9fxJ/lWxa2sFnD5NvGI0znA5y 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 +Q8jeZjO8g9M+gHrVi9s4b63aCdcqehHVT6j3qeigDN03RLbTZ2mheVmZdpDkEYyD2HtT/7Kg/tX +0d8nnf3cjb93b6elX6KAI54Y7iFoZkDxuMFTWIvhuSB3NnqU0CNjgDk/UgjPftW/RQBl6bocFlN 9oeR57nJPmMccnOePx75qzqWnxalAsMzOqq24FCAc4I7j3q3RQBHBEsEEcKElY1CgnrgDFVtT0u3 1NYxOXUxklWQ4PPUfyq7RQAyKNIYkijGERQqj0Ap9FFABRRRQAUUUUAFFFFABRSUtABRRRQAUlLR QAU0mlNMY0AIWoFMwc04UALSUUUALSUtJQAUUUUAFFFFABRRRQAUUUUAFJmjNNJ5oAMZqRBSIKlG KAFpKKBQAUtFFABRRRQAUUlLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRTJZI4UMkrqiDqzHAH41Ct/ZOwRLuBmY4AEgJJ/ OgCzRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFMlkSGJ5ZDhEUsx9AKAH0VBZ3lvf RGW2k3oG2k4I5/H61PQAUUUUAFFFFABRRRQAUUUUAFFFVYNQtbi6ktopd00edy7SMYODzj1oAtUV HNPFAoeaVI1JwC7ADP41JQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU1mVFLuwVVGSScACoLO+ tr5Wa2lEgU4bggj8DQBZoqrPqFrb3UdtLLtmkxtXaTnJwOcetWqACiiigAooooAKKKKACiiigAoq kuqW76l9hjDySAEsyjKpjsT/AJ5NXaACiqsGoWtxdSW0Uu6aPO5dpGMHB5x61aoAKKKKACiiigAo oooAKKazKil3YKqjJJOABUFnfW18rNbSiQKcNwQR+BoAs0UUUAFFFFABRRRQAUUUUAFFFFABRRVK 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 KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCGa0tp2DzW8UjAYBdATj8adDBFApSGJI1 JyQigDP4VJRQAVHNBFOoSaJJFByA6gjP41JRQBHDBFApSGJI1JyQigDP4VJRRQAUUUUAFFFIaAFq Ga0tp2DzW8UjAYBdATj8alzRmgBFVUUIihVUYAAwAKdSZozQAtFJS0AFFFFABRRRQAUUUUAVlsLJ GDpaQKynIIjAIP5VZoooAKKKKACiiigApksccyGOVFdD1VhkH8KfRQBFDbQW+7yII4t3XYgXP5VL RRQAUUUUARTW0Fxt8+COXb03oGx+dENtBb7vIgji3ddiBc/lUtFABRRRQAUUUUAFFFFABRRRQBBL ZWkzmSW1hdz1ZowSfxqeiigAooooAKa6q6lHUMrDBBGQRTqSgCCOytIXEkVrCjjoyxgEfjU1BpKA HClpop1ADWVXUo6hlYYIIyCKiisrSFxJFawo46MsYBH41PRQAUyWOOZDHKiuh6qwyD+FPooAgisr SFxJFawo46MsYBH41PRRQAUUUUAVmsLJ2LvaQMzHJJjBJP5VOqqihEUKqjAAGABTqKACoJbK0mcy S2sLuerNGCT+NT0UANVVRQiKFVRgADAAp1FFABRRRQAVWawsnYu9pAzMckmMEk/lVmigAooooAKK KKACiiigAooooAayq6lHUMrDBBGQRUC2FkjB0tIFZTkERgEH8qs0UAFQzWltOwea3ikYDALoCcfj U1FADIo44UEcSKiDoqjAH4U+iigAooooAhmtLadg81vFIwGAXQE4/GnxRxwoI4kVEHRVGAPwp9FA BUM1pbTsHmt4pGAwC6AnH41NRQBHDBFApSGJI1JyQigDP4VJRRQAU1lV1KOoZWGCCMginUUAQRWV pC4kitYUcdGWMAj8anoooAKKKKACiiigAooooAayq6lHUMrDBBGQRUcNpbQMXht4o2IwSiAHH4VN RQAUUUUAQS2VpM5kltYXc9WaMEn8akijjhQRxIqIOiqMAfhT6KAGSxxzIY5UV0PVWGQfwpkNpbQM Xht4o2IwSiAHH4VNRQAUUUUAFFFFAEEtlaTOZJbWF3PVmjBJ/GpVVUUIihVUYAAwAKdRQAUUUUAF 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 yCnZDOWxwCAAT9c1HZWl5qmrjUL6EwRwn93GwIPHI9+Cc5/yN6PNSUALRSCloAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikoo AWiiigAoopKAFopKWgAooooAKKKKACiiigAooooAKKKKACiikoAWikpaACiiigBCaoanNEios1lL dqxJASIOFI9c9OtXmplAGP4etJ7Zbh5YjDFKwaOItkqOf8QPXitmiigBKKKWgAopKXFABSUGgUAL RRRQAUUlJQA6im5pd1AAaM0ZzSGgB6049KiDYp+8GgBhoU807iigB2eKjanZpKAEApaKKADNGKKK ACgGiigA70d6SloADRRRQAUmaWkoAWg0UhoAaTUgPy0yloATvTu1JRQAUtJRQAUUUUAFFLSUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtFABQaKKAAUYoooAKKKKAEpaKKAEFOpKKA CiikoAKctNpy0ASLTqQUtACUtFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUVi6nrTpcfYNOj866b5dw6If6kc+w/OoxpGqzFpLjV3jcnpFnbj8xj8qAN6isW ztdVstQhjku2ubR2bcxGSDt4znJAyOx/nW1QAUlBpKAFxSYoBpc0AJS1n6tqsWlqhkjd2kDbAuMZ GOp7da0KACisa50i5m12O+W5CxKVOMncAOqj2P8AU/js0AFFFFABRRRQAUUUUAFJS0lABRRRQAUU UUAFFFFABRRRQAtFFFADJZI4ULyuqIOrMcAfjSqyugZGDKwyCDkEVlXljPql8q3KGKygOQN/Mx/A 8D9effjVVVRAqKFVRgADAAoAWiquo6hFpsCzTK7KzbcIATnBPc+1S2032i1im27fMQPjOcZGaAJa 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 gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaKAEFLRSGgApCaaTSA0AD OaYMsaftzTlXFAAq8U1hUlBFACL0paKWgAooooAKSlooAKKKKACiiigBMUUtJQAUmaWm0AO7UUdq SgAopaSgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooATFLiiigAozSUUA OpabS5oAWkNGaKAAUtFJQAhpKU0lABRRRQAUUUUALSUUUAFFFFACg06mCnCgAopaKACikpaACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKSgBaKKKACiiigBKD0o PFNzQA00tLikzQAg+9UlNAp1AC0UUUAFFJRQAMOKiPWpaYwoAEpxHFMBxTi1ADelJmhjSAUAKDUi 0wCpBQAUxutSVG/WgAzRSUtACUZpaSgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigApKWkoAKKKKACiiigApaSigAooooAKWkpaACkpaSgAooooAKKKKACiiigAooooAKKKKACikoo AWiiigAooooAKKKKACiiigAopKWgAoopKAFpKKKACiiigAooooAKWkooAWkoooAKKKKACg0UlABT l5pAtSKuKAFApaKWgBKKWkoAKKKKAFooooASloppNADJOtMApXOaRaAFpQMimmlB4oAQ9amTpUPU 1MnSgB1FFFABRRRQAUUUUAFJilooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKpatftptoLgQGYbgpAOMA984PsPxq7UF9ape2ctu5wJFxn0PY/n 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 UAFFFFABRRRQAUUUUAFFFFABRUYniaZoRKhlUZKBhuA+n4ipKACiiigAooooAKSiigAIppp9NIoA BRRRQAUUUUAFFFFABRTZZEhQvK6og6sxwBSqyuoZGDKwyCDkEUALRRRQAUUUUAFFFFABRRRQAUUU UAFFFFACUCijNAC0hpN1L1oAQGnUmKBQAUVWvNQtLLH2mdUJ6L1P1wOccVJbXEV1As0Db42zg4Iz zjvQBNSUUUAFFFFABRRRQAUUUUAFRkc0faYPP8jzo/N/557hu6Z6fSpMUAMUUpFPApcUARbDTttP qJLmCSRoo5o3kXO5FYEjHqKAHU4Uw0FlRCzsFVRkknAAoAcTQDTEkSaMPE6uh6MpyDThQA8UUClo ASlpKWgAooooAKKKKACiiigAooooAKKjmnigUPNKkak4BdgBn8akoAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKAEooooAWmEU6msaAFA4ptG7ijNAAaSlNIKAFooooASimTTRQKGmlSNScZdgBn8 acrK6hkYMrDIIOQRQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABSUtJQAUUUUAFFFFABRRRQAUUUUAFLSUtACUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRUT3EEcqxPNGsjfdVmAJ+gp8kiRIXkdUQdWY4AoAdRSKyuoZWDKRkEHIIpaACii igApKWkoAKKKKAClpKWgApKWkoAKKKKACiiigAooooAKKKiurmK0i82diqA4JCk4/KgCWimxyLLG kiHKOAyn1Bp1ABRRRQAZpKKWgApCaWkoAVeTQ4pUHND0ANWplqJBUoHFADqKSloAKKKKACiiigAp KKWgAooooAKKKKACiio4Z4p1LwypIoOCUYEZ/CgCSiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDj9FivtV87/AImlzF5W 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 tJWLrd/c2F9bOsuLZ/voFBJweevsR3oA2jxRnNHWsa+vbltbhsLWYRrgGQ7Rn1PUHt0+tAGyaQGs 3WNUaxEcUCCS4lPyr1wPoOee1V4tJ1S4HmXGpyQyN/BHnA49iBn6UAb6imv1rn4NQvtFu1ttUYyw OPllHzY989T15B59PfU1SHUJTH9gnjixnfvGc9Mdj70AQ6Jqjam8/wC5ESxhcDdkknP+ArWFcX4f i1GXz/7PuI4cbd+8Zz1x2PvXR6pPc2ehtKJR9pRUDOACC2QCcY+vagDRpa52xvtV1KzRLRoxIqnz biRcYbdwoGMZxjsevatBrybTdI8/UCJJ1JGFIG87jjH4YP0oA0qK5y1t9X1aH7RPfPaITmNY1xkH 6Ecemc/4uhvbzR7+O01Cbz7eX7kp6rz1JP6jJxxQB0NFFFACUtYutarcRXEdhp67rp8EsMHb7Y9e /PQfpFFo2qqgc6vIJhyFyzLntyT0/CgDforlf7Y1JdWt7OZwhWRYpQFGJPm+9yMjII/nWp4kvLix sEltpNjmUKTgHjB9fpQBrUVBYSPNYW8shy7xKzH1JArJ8T6hdWH2b7LL5e/du+UHOMY6j3oA2Z4l ngkhckLIpUkdcEYqjo2kLpSygTGVpCMnbtAA6cfia0qwvDGoXV/9p+1S+Zs27flAxnOeg9qAN2iu euNQvtS1Z9PsH+zxx7lkcgZwDgn/AAx/+p0mk6tbjzbbVZJpFz8kmcHj3JGfrQBv0VV1G9j0+ze4 kG7HCrnBY+lY1rb6vq0P2ie+e0QnMaxrjIP0I49M5/xAOjornob280e/jtNQm8+3l+5Keq89ST+o yccV0NABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQBx/hjT7W/wDtP2qLzNm3b8xGM5z0PtW7/wAI9pf/AD6/+RG/xrC8Maha2H2n7VL5e/bt +UnOM56D3rd/4SHS/wDn6/8AIbf4UAWdU/5Bd3/1xf8A9BNZnhD/AJBcv/XY/wDoK1rSql9YOsb4 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 wZ/y+f8AAP8A2agA1DTr/T9SbUNO3Sq7FmUDJ5PII7j6f0zViy8SxyTCC9hNvJkKWz8obvnPK8/W rsGtWck00EsqwSxOykSHAIBxkHp+FY/ii4s7vyI7YrPdFsBovm+Xn5cjqc9v8eQCXxlI4itYgfkZ mYj3GMfzNTLceIUUImnWqqowACAAP++qNW02efQbWNIg09uq7l6tgLggfp9cVNpWvWtzbotzMsU6 r8/mEANjuD059KAMzU7TXNT8rz7KNfLzjY6jrj1Y+ldXWbLrlks8cEUomleRUwnQZPXPT8ql1bUV 0y0E5jMhLBQoOOevX8DQBdoqtp92t9ZRXKqUDj7p7EHB/lVmgAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCr/AGbY/wDPlbf9+l/wo/s2x/58rb/v 0v8AhVqigBqqqKERQqqMAAYAFVbvSrG8fzLi3Vn/ALwJUn6kdelXKKAKsOnWcEDQR20Yjb7wK53c 5Gc9fxqeKOOFBHEiog6KowB+FPooAi+zQef5/kR+d/z02Dd0x1+lS0UUARzQRTqEmiSRQcgOoIz+ NUV0DS0YMLUZByMuxH5E1pUUANVVRQiKFVRgADAAqC6sLS8GLiBJDjG4jDAdevWrNFAGfDommwsW S0QkjHzkuPyOa0KKKACiiigDOl0LTJXLtaKCf7rFR+QOKo+K444dIhjiRUQTDCqMAcN2rfqhrGnf 2narB5vlbXD527uxHqPWgCXS/wDkF2n/AFxT/wBBFNu9Ksbx/MuLdWf+8CVJ+pHXpU9rD9ntYYN2 7y0VM4xnAxUtAFWHTrOCBoI7aMRt94Fc7ucjOev41PFHHCgjiRUQdFUYA/Cn0UARfZoPP8/yI/O/ 56bBu6Y6/SpaKKACobm0t7tdtxCkgwQNwyRnrg9qmooAzotC0yJw62ikj+8xYfkTitGiigClc6Rp 902+W1QtkklcqST64xn8afZ6daWOfs0CoT1bqfpk8446VaooAKhS2gjlaWOGNJGzudVAJz6mpqSg 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 AwAKdRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUlAATSUGkFAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSU AFFFFABRRRQAUUUUAFFFFABRRRmgBCcUwtmlbmgLQA2pY+lJspyjAoAdRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAhphpxNMoAXNFGKKADFApCaQGgBCcUmaUjJpQlADo6fSKMU6gBCaYTTiKawoAFPNPPSo161J QBHjmkxzUhFN20AA4pwNRsCKFzQA9xxTAKcRxTRxQAvWkJxSjimkZoAcOeaOtIOKXpQAdKKOtFAB RRRQAlKKKKAHBqRjmm5oFABiilooAKSlooASnKaaaBQBKKRhSKacaAIiKBSvTRQA6kpaSgAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooASiiigApaSloA KSlpKACiiigAooooAKKKKADFGcUhakwTQA7OaMUnSjdQAuaBSdaU0ABNNA5petPVaAHqKdSCloAK SlpKACmSU+mSUAR4p6rTc1InSgAC06lpKAClpKWgAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKAEIpKdSGgBKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKSlpKACiiigAooooAKKKKACiiigApjNUlRMOaAFXmpQKZGKkoAKKSloAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKSlooAibrQKeRTDQA4UhpM0ZoAMUlLmkzmgBU61JUa8GpM0AFFAooAWkIozRQAzGDTx0pO9L QAmaXIprCmjrQA5qRRSgZpQKAFPSoyOakpCOKAGt0oXFNzzSZ5oAeRzQ3SlXpTT1oAQUtFFABRRR QAUUUUAJijFLQaACikooAWiikoADSikpRQA8ClpAaXNADHFMA5qRjmm0AFJS0lABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAlFFFABS0lLQAUlLSUAF FFFABRRRQAUUUUAIFyalCjFMBp26gBGWo9pqYHNLtoAhFBp7LTDQA5RUoGKiU1KDmgAooooAKKWk NABTJadmo5DQAypU6VHUidKAH0UUUAFLSUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAlLRRQAUhpaSgBKKQ0CgBaKM0lAC0UUUAFFFLQAlFBpKAFopKWgAooooAKKKKAC iiigApKWkoAKKKKACilpKACigCg0AGaKSlxQAGm0pOKbnNAD1p9NWnUAFFJRQAtFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSU ALRRRQAUUUUAIajNSU1qAGU0040UAM5pyClpaACgE0UUAOBpu45oooAXJozRSUAKDzTxUdPWgAam YOalpKAEXpTqKKACkpaSgBjjHSmqKewoAoAcBTWHpS0tAEBODRmnsuTSbKAEzSbqcUpu2gAzTqAt FABRRS0AFJRRQAUtJRQAppKKKAHZpCTSUUAGaWkooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiikoAWiiigAooooAKKKKACiiigAooooAKKKKAEooooAKWkooAWkoooAKKKKACiiigAooooAS lzSEUAUAPWpBTVFPoAa1QnrU56VCRzQA2pUNRnihW5oAnooB4oJxQAU1jxSFqYWoAXdTWOaSloAO 1SR9KYBUi0AOopaSgBaKKSgBaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAQimGpKaRQAzNOBpMUoFAC0UlFABS0UUAFJS0lABS0lLQAUUUUAJRRRQAUUUUAFLS UUAFFFFABRRQaADNJSgUGgBKQtQTTSM0AGd1OVaSNalAoAAKDS0lABS0lLQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lAB RRRQAtFFIaACmmgmmk0AFJS0UAFFFFABRRRQAUUUUAFFFFAAKeKZSg0APpaZmlBoAdRSUtABRSU0 mgB1GKQGlzQAYoxSZpQaADFFFJmgBcU0inUjUANzTe9BooAKWkpaAEooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBKKKKAFooooAKKKKACiiigAooooAKKKKACi iigBKKKKACiiigAooooAKKKKACiiigAooooAWlAptOWgCQUtIKKAFqNxin0EZoAgAyalCACgJigt QAxmxQGyKawzRjjFAClhTaNppQtACYpdpqRVp+KAIlU5qUdKMUtABSUtJQAtFFJQAtFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRXM2Wtazf7/strbSbMbu2M9Ore1TS6vq9iPMv tOQxY6xnGDx1OTigDoKKgsryG+t1ngbKnqD1U+h96noAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooqodSthfrYhybgnBUKePl3Zz06fzoAt0UUUAFFFFABRRRQAUUUUAFFFFABSUtFAB SUtFACYopaaTQA1jzQDTGPNOWgB9FAooAKSiigApaSloAKKKKACikooAWikoyKAFopuRRmgB1JRm kzQAtFJRQAtNY0tNIoABzTwKRVrN1+DUZooRpzsMMd4R9hPpz6de/cUAaoGKWo4BIsEYmYNKFAdh 0LY5NSUAJRRRQAtJS0lAC0UUUAFFFFABRRRQAUVz3i25nt/snkTyRbt+djlc/d9K6GgAooooAKKK KACiiigAooooAKKKKACiiigAoqpDqVtcXj2kTlpYwxf5SAuCBjn69qt0AFFFFABRRRQAUUUUAFFF VtRZk066dGKssLkEHBBwaALNFY3hWeWfTpHmleRhMQC7EnGB61s0AFJS0lAC0lR3NxFawNPO+yNc ZOCcZOO1NtLmO8t1nhJMbEgEjGcEjP6UAT01jTqjagBKKWkoAKWiigApKKKACiiigAoFFFAC0lFF ABRRRQAUA0UhoAeDTs1EKcDQApNNPNBrA8U3E9uLXyZpIt2/OxiM/d9KAN7NLmgiigBCaAaMUAUA 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 sTYG6Pt+OSCcA8VvRSJNEksZyjqGU+oNZ3iZVbRJyVBKlSCR0O4D+pqnaXDWvg7zUzuCsoIOCCXI zn2zmgCSfXZJrtrTS7YXMgH+sLfLx1/D3yOf1autX1nMq6tZCKJyAJI+QvXryc9OnX61Q0TWLHTb MxvFMZnbLsqrj2AOemP5mn6xr1lf6fJbpDL5hIKl1GAQfr6Z/OgDqFZXUOjBlYZBByCKw7bxKtxH IRZuZQQEijbcznBPp0GOTz1q54dZn0S2LMWOGGSc8BiBWR4NjQy3UpHzqqqD7HOf5CgCa41nV7Ao 99YxCJiR8p6n65OK2Y71J9ON5bo0gKFlTGCSO31yMU3WI0l0m6VxkCJm/EDI/UVneEP+QXL/ANdj /wCgrQBkajfTz6xa3EljJFJHs2wtnL4Ynjjv06V0mnahLdLM9zZvZrGAcyE4I5z1A6YrJ1z/AJGf T/8Atn/6Ga6C8iaeznhQgNJGygnpkjFAGOdcu72aSLSbMSiM8ySHAI+nGPbn8PSay1DU/t0dtqFk sYl+7Ih4GATjqQTx0yKytF1T+xnlsb6JkG/JIGSp4HPqMc8frmumtL22vU320yyAdcdR9R1HSgCe iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oA5nwZ/y+f8AAP8A2aumqhpmlQaZ5vkPI3mYzvIPTPoB61foAK5bQW/svWbmwndRvwFY/wARH3fp kE/pXU1Q1LSbXUthnDK6dHQgHHp9KAL9cxIy6t4piNuwMdsAS4OQQpz/ADOP1qx/wjk7IsMuqzPA MAx4OMDt97H6Vq2Gn22nxGO3TbnG5iclj7mgDF8ZRuYrWUD5FZlJ9zjH8jW/bXEd1bxzxHKSLke3 t9abe2cN9btBOuVPQjqp9R71jp4bkj3Rx6lMluzHdGoxkHsecZxxnFAFPVriOfxTaiM58p442PbO 7P8AXFdDqn/ILu/+uL/+gmqo0CzWW2kVpVNsAEG4YOGLZPHqTWhPEs8EkLkhZFKkjrgjFAGN4Q/5 Bcv/AF2P/oK1u1U03T4tNgaGFnZWbcS5BOcAdh7VboAKKKKAMDxhb77KGcBiYnwcdACOp/ED861r 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 fWkd9avbSlgj4yVPPBz/AEosbSOxtUtoixRM4LHnk5/rQBleFbyOXTxa5AlhJ+XPJUnOf1x/+utp mVFLuwVVGSScACsnUPD8N1cfaYJWtpiwYsoyCfXHGD05zUS+HDLKrX1/NdInRTkenck8fSgDaikS aJJYzlHUMp9Qa5zwZ/y+f8A/9mro4o0hiSKMYRFCqPQCqemaVBpnm+Q8jeZjO8g9M+gHrQBLqn/I Lu/+uL/+gmszwh/yC5f+ux/9BWtmeJZ4JIXJCyKVJHXBGKg03T4tNgaGFnZWbcS5BOcAdh7UAYev MqeJbF3YKqiMkk4AG810ksiQxPLIcIilmPoBVfUdOt9ShEc6n5TlXXhl+lQWeiW1nBcwxvKVuF2u WIyBgjjj3oAtzW1rfRL5sUcyFflYgHg9we31FcxJAuleJYIrOYhJGQMuc7Qx5U/z59vrWgPDssJZ bTVJ4Iic7Bnr+BH8quadotvYzG4LvNcMOZJDnnuR9fxoA0qKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooASi looAaaBS0UAYeladdW+u3lzLFthk37W3A5ywI4z6VtGn0xhzQAUtNpaAFopKWgBDTcc040goAcBT qQUtACUtFJQAtFJRmgBaSikbpQAZpCaSjFADhTqizTwaAHUUmaWgAoopKAFooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACmk 06o260AKTTaKWgBiwRLK0wiQSsMFwo3EfX8KcaWkoAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAopKKAFpKWigBKUUlFADgafUVOU80AK1MzUh6VEetADqTPNAo70A FFLSUABpKWigBKepptFADmamZ5paMUAKKNu6kpMkUAVdTs7ueBBZTCKVZAxJJAIweOOvbis9ZPES qAbKBiBjJYZP/j1bqmn0AYFlol1LeLe6nMHdQCqKeh9+3Ht3/Xb8qpKKAGCPFBWpKaaAIyKSlIpB QAtFBNFABRRRQAUUUUAFFLTaAFoozRQAUlLmmk0AOopnNOoAWkozRQAUUUUAFFFFABRQKDQAUUCg mgAopBQaAFzRmm0UALmkzRg05VoAUDigcVIBxTWWgBymnVGtSUAJS0lLQAUlLRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFZu sW+oymGTTpxG0YYspb7+cYGMYPfrWlRQBgtc+JGUgWUCkjAYMMj35apdL0aWC9e+v5hNcknaVJwM jGe30x0H8tmigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAqG6uoLOHzriQRpnGTzk/Spqq6hYQ6jb+RPuChgwKnBB/zmgCaCaO4hWaFw8bjIYVJU NnbR2dtHbwg7EGBk5J9TU1ABRRRQAUUUUAFFFFABRRRQAUVjadqlxd63c2kgRYoQ4G0cnDAAn/Pe tmgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApDS0hoAY aUUEUUALSUZpaAENAoNFADqWmg0tABRS01qAFJpuaQGhqAHA0pqJTzUo6UAJijFLRQA0ikp9BFAD QaXNNbimg0AS5ozTQaDQA7NFRg1IDQAtFFJQAtFJS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVG3WpKjbrQAlFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUUUUALRRRQAlFFFABQvWigdaAJOop jCnrQRQBHRSkUgoAWkpaSgAooooAKKKKACilpKACkNLmgDNACpUgpqjFOoAWkopaACkNFFACFaiY YqemsuaAIRTqCMUUAFFFFACUUUtACDrTqQjikzQAUZoNN5oACcmnBaVVqQLQAwJQRipKRhQBDS0G koAWiiigAooooAKWkpM0ABpBTgM07bigBlKBmhqfF0oAbsp2yn4ooAZspwXFOooASgilpCaAADFF AOaWgBBS0lLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFVNVu2sdPmuUUMyAYB6ZJA/rVuoby2jvLaS3mB2OMHBwR6GgDn9O0l9YtR d6hdzPvYmNVb7vOD1HHI6D0/LS0zSG027Zorl3tmU/u2PRuOfQ9D6Vkx2es6Izm1AuIM5KgZB7D5 euenT+laeja7HqJ8mRRFcAcLnh/XH+H86AKusXM8fiKxijnkSNvL3IrkA5c9RXQ1zOuf8jPp/wD2 z/8AQzXTUAc99pn/AOEx8jz5PJ/557zt/wBXnp9a0PEEkkOjzyROyONuGU4I+Yd6yv8Amd/8/wDP KtPxJ/yA7n/gP/oQoArWhubrwruSeX7QVZg4JLkhicevOMVL4ZvGu9N2yOXliYqxZ9zEHkE/nj8K k8N/8gO2/wCBf+hGs/TgdO8TXFpgiK4BZAEAH94fgPmHFAGh4ivHs9Ldo2ZJJGCKy9s8n9AadZRX UOiYEkkl20RcGQkkORwPm6Y4FZ+oI2peJYLXGYrVQ8gZQR2J+oPyitfUb2PT7N7iQbscKucFj6UA ZSeHHuiZdTvJJZj/AM8zwvJ45HT2wMVXtZJ9E1xLAyPJaSkBA3OATwRzxzkH15OOlTW7eIL+IXMc 8NvG/wB1GXt6jgnB9zWfdWktn4gsY5rp7li0bB3zkDf05J9P1oA6DxBJJDo88kTsjjbhlOCPmHes vTLa71nT0W6upUtlJBHVpTknO49hkDv93tWl4k/5Adz/AMB/9CFHhv8A5Adt/wAC/wDQjQBiaha3 Hh25jnspnMDnkN0yOzY4PU4/H0zW/dRSanYQtbXUlrv2yBl64I6HBHr+lUfF/wDyC4v+uw/9BatP S/8AkF2n/XFP/QRQByunWM8+sXVvHfSRSR790y5y+GA5579etdFPJLpGiM7SG6liH33z8xLcZ5PT P6Vl6H/yM+of9tP/AEMV0F5bR3ltJbzA7HGDg4I9DQBz+naS+sWou9Qu5n3sTGqt93nB6jjkdB6f lpaZpDabds0Vy72zKf3bHo3HPoeh9KyY7PWdEZzagXEGclQMg9h8vXPTp/StPRtdj1E+TIoiuAOF zw/rj/D+dAGvUc4kaCQQsFlKkIx6BscGpKKAMnQINRgimGouxyw2B33kevPp079jWtRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAJikIp1IaAIzSg0MKbQBJSGkBp1ADa UGjFLigAzSdaDSjigBp4puc05uaaBzQA5Vp9AooAWkpaKACkpaSgBrDNIEp/SigBAMU1qfSEZoAh JpytSlKAlAD1OadTQMU6gApKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACo261JUbdaAEoopaAEooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigBKKKKAFooooASiiigApaSjNADwadUYNOU0ADCmVKaiPWg BaSlpKACiiigApaSjNACmmk0hNJQAtSRikVc08DFAC0tFFACUtJS0AJS0UlABS0lFADHptSEZph4 NACUUUUAJRS0lAC5ppoPFHWgAHNSKlIq1J0oAAMUtJRQAtIaKKAI2FNxT2NMzQAUUUUAFFLSUAKK aRzS5xQOaAHoKcelMBxTwc0ARMKfH0pxXNAGKAHUUUlAC0UUUAJTGNPqN6AFQ81JUKdalHSgBaKS loAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACqmqXbWNhJcqocoV+U9wWAP86t0UAZMXiPTHQM0zRk/wshyPyyKzNJR9Q8QvqMEPlWys c54ySuPzOcn/ADnoGsLJ2LvaQMzHJJjBJP5VZoA5vxXbyxzW2oQhsx8M3BCEHKnH1J/Sra+JtPNs JXLiTHMQUkg/Xp+tbNQRWVpC4kitYUcdGWMAj8aAOZsWmfxaj3A2yPliv90GPIHQcgYH4VteJP8A kB3P/Af/AEIVp0UAZnhv/kB23/Av/QjVTxRE0QtdQiUF7eQZ+XOR1GT6ZH/j1b1FAGH4ZhLxz6jK gEtzIxBGMbc847jnP5CpPFNvJPpJMYz5TiRh3xgj+ua2KKAMDTfENjHpsSTMySxIE2BSd2B2PTn3 /wDr1m3VxJd+ILG4dSiSNGYlbqE34Gfrgnv1rqvsVp5vm/ZYfM3bt/ljOfXPrU9AGZ4k/wCQHc/8 B/8AQhR4b/5Adt/wL/0I1p0UAYXi/wD5BcX/AF2H/oLVp6X/AMgu0/64p/6CKtUUAcoZX0PX57i6 iZorjeVZPQnP59iP8nZn1ZRox1KCMlcjCvwSN+09PxrSooAyYvEemOgZpmjJ/hZDkflkVmaSj6h4 hfUYIfKtlY5zxklcfmc5P+c9A1hZOxd7SBmY5JMYJJ/KrNABUc8jRQSSIhkZFLBB1YgdKkooAydA 1SfU4pmniVNjABkBAOe3Pcf1Fa1FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAJik2inUUAN21GxIqamkZoAhDNmpATilC07FADOc0tKRSUAFGKTNGaAFzQSaBQaA FBpaaKdQAtFFJQAUUtJQAUUUtACUUtFABRRSUAFFFLQAwnmnA00jmlAoAdRSUUALRSUtABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFMbrT6jbrQAlFLSUALSUUuKA EooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiikoAWikooAWiiigAooooASiiigAoooo AKWkoFAARSqaDSUASdqYw5pQaU9KAGUUlLmgApCaXNNK5oAC1ApAhzUgSgACg04IKUDFOoAQDFFL RQAUUUUAFFFFABSUtFABRRRQAlRP1qao2HNADKWg0lACmmk06kxzQAgBNSqgoVeKdQAdKKWkoAKK KKACilooAYy1Fg5qek280AR4NIM1KRxUdADec0c0d6U0AFLSUtACUobFHam96AJwciikTpTqACkp aKACiiigBD0qJqlqNxQA0GpV6VCvWpVoAdS0gNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFQ3E/k7fl3Z98VNVO//wCWf4/0qoK7 szDETcKblHcPt3/TP/x6j7d/0z/8eqpRW/s4nl/W63f8i39u/wCmf/j1H27/AKZ/+PVUoo9nEPrd bv8AkW/t3/TP/wAeo+3f9M//AB6qlFHs4h9brd/yLf27/pn/AOPUfbv+mf8A49VSij2cQ+t1u/5F v7d/0z/8eo+3f9M//HqqUUeziH1ut3/It/bv+mf/AI9R9u/6Z/8Aj1VKKPZxD63W7/kW/t3/AEz/ APHqPt3/AEz/APHqqUUeziH1ut3/ACLf27/pn/49R9u/6Z/+PVUoo9nEPrdbv+Rb+3f9M/8Ax6j7 d/0z/wDHqqUUeziH1ut3/It/bv8Apn/49R9u/wCmf/j1VKKPZxD63W7/AJFv7d/0z/8AHqPt3/TP /wAeqpRR7OIfW63f8i39u/6Z/wDj1H27/pn/AOPVUoo9nEPrdbv+Rb+3f9M//HqPt3/TP/x6qlFH s4h9brd/yLf27/pn/wCPUfbv+mf/AI9VSij2cQ+t1u/5Fv7d/wBM/wDx6j7d/wBM/wDx6qlFHs4h 9brd/wAi39u/6Z/+PUfbv+mf/j1VKKPZxD63W7/kW/t3/TP/AMeo+3f9M/8Ax6qlFHs4h9brd/yL f27/AKZ/+PUfbv8Apn/49VSij2cQ+t1u/wCRb+3f9M//AB6j7d/0z/8AHqqUUeziH1ut3/It/bv+ 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 AGcsdvAjcSSDk+3cZ78Dj19QDoaKx7I61BfRx3rRzwSdZEA+Q4J7Aeg6j0rYoAKKKxrbV7mbXpLB rYLEpYZwdwA6MfY/1H4gGzRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRSUAIaBS0UAIwqIjFTUxxQBHmnh+KYBzS0APzmlWhORTgKAInHNNqUrTGWgBuaWm4 pcUABpyrmmd6ljoAY4xSLUj1EDQA7rUqjiogamXpQAGk3UpFM2nNAAWpu4mn7aAtADcU0cGpsVGy 4oAdu4ppemA0hFAEgegyUwCgrQA8PmnA1FjFGaAJ80VCGqRTQA+iikNAC0lFITigBaWmg0tAC0Ul LQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVT1a8Fjp0027a+3anTO49OvX1/CgDnri8t5fFBmu5Nk Fs20bgc5X02/7XPP/wBatS81nSbu0lt2uhiRSuTExwexxjt1qDwzptu+m+fcQRStKxKll3YUcY56 c5rW/s2x/wCfK2/79L/hQBi+D7wsk1m7Z2fOg56d/wAM4/M1o+JP+QHc/wDAf/QhWXqKro2v291C oit5QA4AwuOjcD2wfrWp4k/5Adz/AMB/9CFAB4b/AOQHbf8AAv8A0I1l6Kqt4oviVBKmQgkdDvA/ qa1PDf8AyA7b/gX/AKEazND/AORn1D/tp/6GKAOkZVdSjqGVhggjIIrm/Bn/AC+f8A/9mrpq5nwZ /wAvn/AP/ZqAIryO80TV5L+NPNglYsxA4wTkqfQ5xg//AFxWrp/iCzvXWI7oZWwAr9CfQH/HFXba +t7mSSOOQeZGzKyE/MMHGcenvXP+Lbezi8uSMKl07ZZV43Lz8xHrnv35644ANbxJ/wAgO5/4D/6E KPDf/IDtv+Bf+hGoNW8z/hFf3u7zPKi3buucrnPvU/hv/kB23/Av/QjQBp1znjKVhBbQgDa7MxPf IAA/9CNdHWD4utjLYx3Cgkwtg8jAVu/5gfnQBtQRLBBHChJWNQoJ64AxWf4mVW0SclQSpUgkdDuA /qan0nUY9StFkVh5igCROm1v8PSs3xTfoLV7KL55DhpcDOxcjGfQk4/yRQBc8N/8gO2/4F/6EazP Bn/L5/wD/wBmrT8N/wDIDtv+Bf8AoRrH8NTpYalc2M7KGdtgbPBZSRj8cn8vegDodU/5Bd3/ANcX /wDQTWZ4Q/5Bcv8A12P/AKCtW9dvI4NPniyGmkjKrGD82CDk49AMnPtVTwh/yC5f+ux/9BWgDMF5 KviW6uFs2uZEZlVI8jbj5c8Z7fzrT/t2+/6Alz/49/8AE1VmkGjeJnnkjKW1wD82CeuCSP8AgXX2 7dK6NZ4nh85ZUaLBO8MCuB15oA57w/FcnW7q5mtZYVlV2G9SACWBxkiulqtbX1vdTSxwSCTygpZl OV5zwD36VZoAq6p/yC7v/ri//oJrM8If8guX/rsf/QVrT1T/AJBd3/1xf/0E1meEP+QXL/12P/oK 0AZOj6hNHeXV3HYPdSynJ8vOEySSOh6/0rW/t2+/6Alz/wCPf/E1T02dNF1u5tbhPJgmb5GPQDJ2 nPpgnn/69dK08SQ+c0qLFgHeWAXB6c0AYXhK2nt/tfnwSRbtmN6Fc/e9aoRm88M3km6LzreTA3Yw H6457Hrx/wDWNdTaXkN4JGgbesblCw6EgA8e3NNsr63v4RJbyBuASufmX2I7UAV9P1qz1B/LiZkl 5wkgwSPbt/8AqrRrj/EdvbQajCLAbLg/eji42njbgDoT/h689hQAVy0kaS+NQrjIDBvxEeR+orqa 5n/md/8AP/PKgDpq4zR9QmjvLq7jsHupZTk+XnCZJJHQ9f6V2dctps6aLrdza3CeTBM3yMegGTtO fTBPP/16ALn9u33/AEBLn/x7/wCJqPwlbT2/2vz4JIt2zG9CufvetbrTxJD5zSosWAd5YBcHpzTL S8hvBI0Db1jcoWHQkAHj25oAwNc/5GfT/wDtn/6Ga6C8laCznmQAtHGzAHpkDNc/rn/Iz6f/ANs/ /QzXRyxpNE8UgyjqVYeoNAHI6BfTWUEpg02W5Lt80iE44HA6H1P51oXWr31xazQf2Ncr5iMmfmOM jH92ofDt6unST6ffYgbduBfgZxyCenQDH/6q6OaeKBQ80qRqTgF2AGfxoAyvCsEsGnSJNE8bGYkB 1IOMD1rP0aNH8U3jMMmNpWX2O7H8ia6O0uY7y3WeEkxsSASMZwSM/pXP6H/yM+of9tP/AEMUAdBe StBZzzIAWjjZgD0yBmuU0C+msoJTBpstyXb5pEJxwOB0PqfzrrpY0mieKQZR1KsPUGub8O3q6dJP p99iBt24F+BnHIJ6dAMf/qoAmutXvri1mg/sa5XzEZM/McZGP7tWPCsEsGnSJNE8bGYkB1IOMD1r VmnigUPNKkak4BdgBn8abaXMd5brPCSY2JAJGM4JGf0oA57RVVvFF8SoJUyEEjod4H9TXSsqupR1 DKwwQRkEVzeh/wDIz6h/20/9DFdNQBzPgz/l8/4B/wCzUlgq3viy5kmUZhLFQBxlSFHX8/rS+DP+ Xz/gH/s1RysdG8TNPJvW2nJJbAOQeT+Tfjj9QDqqz9elaHRrl1AJK7efRiAf51cWeJ4fOWVGiwTv DArgdearXix6lpU6w4mV1YJg4BYHjn6j6UAYOjajcWdgscGkzTKzFjIpbDHp6H0A/CpdS1G+v7GS 2/se5j34+bDHGCD02+1TeGdRjS3/ALPuGEU0TEKrfLuyenPfJPH/ANetq5u7e0XdcTJGMEjccE46 4HegDJtNPlufCy2bAwysDw6kYIckZFZ+m6vPow+xX9s+xSSuBhlHPTswz3z69a6KS/hisFvX3LCy q3TkBsf41L+4u4P+Wc8LfRlOD/jQBFYahbahEZLd92MblIwVPuKsNXKaUkUfikpYMzW43ZKkkY2+ vcbsfpXWGgDE8UytHpW0AYkkVTn05P8ASrmjRLDpNqqkkGMNz6nk/wA6h8SWxuNKk2gloiJAAcdO v6E0zw9qEd3YxwEgTQqFK9MgcAj9Px/CgC3qqq+l3QZQw8pjgjuBkVneEv8AkGSf9dj/AOgrU+v3 y29lJbp888yEBAM4XHLH0GM/5zUHhL/kGSf9dj/6CtAGaLuVfEdzcLZtcyIzKqx5GMfLnjPb+daX 9t33/QFuP/Hv/iaqzSDR/EjzyRlLa4B+bGeuCSP+Bfp26V0SzRPD5yyo0WCd4YbcDrzQBz+gxXJ1 q5uZraWFZVdvnUgAlgcZIrpKr297b3U0scEgk8oKWZeV5zwD36VYoAp6taC90+WHbufbuTpncOnX 8vxqp4YuvP0wRscvCxQ5bJx1H0Hb8K165aef+wtTvUQMkc8W6IKFOG7H2AO4YoAsWX/E08RTXLAN DbDbGQQRnOB9f4j+VReIgbjWrK1dj5TBRx1G5sH+QrT8PWv2XSo8nLS/vTzwMgY/TFUPFFvJHJBq MJO6IhTxnbg5U9PXPX2oA6GsvxLGr6PKzDJRlZfY5A/kTVyyvbe+hEkEgbjJX+JfqO1ZPiTUI3t/ sFuRLNIwDBecYPTjvkDj/wCtQBe0CRpdHtmc5IUr+AJA/QVl6L/yMt//ANtP/QxW3ptr9isIbfOS i8n3PJ/DJrB02aO08S3puXEIcuAX4HLAj9KAOnrmfB8amW6kI+dVVQfY5z/IV0kciSoHidXQ9GU5 BrnfB3/L3/wD/wBmoA1tdlaHSLllAJK7efQkA/zrE0fULizsVjg0uaZSxYyKThj+R9MfhXQalb/a tPnhC72ZDtGcZbqP1xWV4b1CNLf7BcERTRsQobjOT0575J4/+vQBDqOoX19ZSW39k3Ee/HzYY4wQ em32rU0GOSHSIElRkcbsqwwR8xq1cXVvaruuJkjGCRuPJx6DvT4JVngjmQELIoYA9cEZoAfmub8Y f8un/A//AGWujrnPGP8Ay5/8D/8AZaALfiqRk0oKpwHkCt7jBP8AMCrmjxLDpVqqkkGMNz6nk/zq PXrNr3TXVMmSM+YoHcjt+RP44qDw7qMU9lFbvKPPjG3a2ASB0x68fyoA1JI1ljeOQZRwVYeoNYPg +V/KuoyfkVlYD3Oc/wAhWpqmpQ6fbuzOpmK/JH1JPY49KpeGLNreyad8hpyCAf7o6fzP4YoAra0f +KlsP+2f/oZrpga5fXyIdesp5MrEoQlsccMSa6K3uIJ8+RNHLt67GDY/KgCxXOeMpWWC2hAG12Zi e+QAB/6Ea6KsLxdbGWxjuFBJhbB5GArd/wAwPzoA2oIlggjhQkrGoUE9cAYrP8TKraJOSoJUqQSO h3Af1NT6TqMepWiyKw8xQBInTa3+HpWb4pv0Fq9lF88hw0uBnYuRjPoScf5IoAueG/8AkB23/Av/ AEI1meDP+Xz/AIB/7NWn4b/5Adt/wL/0I1j+Gp0sNSubGdlDO2wNngspIx+OT+XvQB0Oqf8AILu/ +uL/APoJrM8If8guX/rsf/QVq3rt5HBp88WQ00kZVYwfmwQcnHoBk59qqeEP+QXL/wBdj/6CtAFb XP8AkZ9P/wC2f/oZrpq5nXP+Rn0//tn/AOhmumoAK5S8jvNE1eS/jTzYJWLMQOME5Kn0OcYP/wBc V1dVra+t7mSSOOQeZGzKyE/MMHGcenvQBS0/xBZ3rrEd0MrYAV+hPoD/AI4qj4ykcRWsQPyMzMR7 jGP5movFtvZxeXJGFS6dssq8bl5+Yj1z3789ccTa5ZS3GhWtw28zW8alw2c4IG7PfIIH60Ab8ESw QRwoSVjUKCeuAMVX1iNJdJulcZAiZvxAyP1FR6PqUV/aR4lDThR5inAbIxk49P8AGq/iHU4baylt 1dWnlUpsHO0Eck+nB4oAb4Skd9JKsciOVlX2GAf5k1S0VVbxRfEqCVMhBI6HeB/U1q+H7JrHTER8 iSQ+YwPYnt+QH45rL0P/AJGfUP8Atp/6GKAOkZVdSjqGVhggjIIrm/Bn/L5/wD/2aumrmfBn/L5/ wD/2agA8Z/8ALn/wP/2WumrmvGasVtHCnaC4JxwCcY/kfyret721useRcRyEru2qwyB7jqKAJ6q6 p/yC7v8A64v/AOgmrVVdU/5Bd3/1xf8A9BNAGZ4Q/wCQXL/12P8A6CtZOj380d5dXcdg91LKcny8 4TJJI6Hr/Stbwh/yC5f+ux/9BWqemzpout3NrcJ5MEzfIx6AZO059ME8/wD16ALn9uX3/QEuf/Hv /iaj8JW09v8Aa/Pgki3bMb0K5+961utPEkPnNKixYB3lgFwenNR2l5DeCRoG3rG5Qt2JAB49uaAO XjN54avJN0XnW8mBuxgN1xz2PXj/AOsa3LHWbPUH8uJmSTnCOME/Tt/+qrdlfW9/CJLeQNwCVz8y +xHauY8R29tBqMIsBsuD96OLjaeNuAOhP+H4gHVAUtBooA5OM3nhy7k3RebbvgbsYDdcc9j14/8A rGtyw1mzv38uJmSTnCOME/TtVizvYL6ESQSBuMlf4l+o7VzfiGC3g1CEWI2XB+8kXG08bcAdD/8A WoAseMP+XT/gf/stdHWB4viYwW0wI2qxUjvkjP8A7Ka17O9hu7NblXULty/P3D3B+lAGJrX/ACMl h/2z/wDQzW3qX/INuv8Ari//AKCa57ULlbrxHaPHzGroqv2fDcke2cj8K6HUv+Qbdf8AXF//AEE0 AZvhP/kGyf8AXY/+grUFsBpniZ4ANkNyMqCwA55HH1BAHvU/hP8A5Bsn/XY/+grR4mgIhhvohiW3 cfNxwM8Z9ecfmaAE8TXDmOGwhwXuGGRkZxkYH4nv7VrQRRWdqsakLFEvU4HA6k/zrG02Qarrkl8p YRQIFRWwDyCPy+939Kv69v8A7HufL3bsDO3rjIz+GM0AVG8QGSVlsrGa5RerDI/QA8fWsnXp76fy GvLZYEO4xAHnBx1569Owra8MyQtpSpGV8xCfMA65JOCfwx+XtWV4ou47maBYSHSMH94pypJxkA+w x+dAHV1zfhBVLXTbRuAQA45AOf8AAV0lc54P/wCXv/gH/s1AGzqiq2mXQZQR5THBHcDIrP8ACf8A yDZP+ux/ktaOp/8AINuv+uL/AMjWd4T/AOQdJ/12P8loAr61/wAjNp//AGz/APQzXRXkrW9nPMgB aONmAPTIGa53xAwh1+xnkysShCWwccOSa6AS2t9FJEkscyFdrhHB4P06UActoF9NZQSmDTZbku3z SITjgcDofU/nWhdavfXFrNB/Y1wvmIyZ+Y4yMf3ah8O3q6dJPp99iBt24F+BnHIJ6dAMf/qro5p4 oFDTSpGpOAXYAZ/GgDF8P2cp0S6tpkeFpWdRvQggFQM4NZ1leXfh6Z7a7gLQM2QRxzxkqe/GOPp0 rpY76GWwa9Tc0KqzdOSFz/hUkM1vewFonSaJhg9xyOhH49DQBX07VbTUQfIchwMmNhhgP8+nrV6u RuIoIfFMCaeT/rF8xY+inPzAe2Ov4/SuuoAKKKz4dYtJtSawTf5qkjJX5SR1H8/yoA0KKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlooASiiigBaQjNLRQBC wxTTUzDNNZeKACM8U8HNQ5xQr4NAExOBTetNL5FNDbaAJNtBWkV808HNAERSnqMU7FHSgBjiowpq fGaMUAQYIqVOlKVzQBigB1JRRQAGkyaWg8UAFI/3aTdTuooAgUHNOIp4XFKRmgCKjNPZaiNAD85F NxQDS5oATFPU0yjNAE24UBhUWc0YNAEpYVGx5owaAtACrT9wFAWmuhNADwc0tMjUqOafQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA 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 fbahEI7hN2M7WBwVPsatUUAYa+FrBWBLzsAclSwwfbgVr21tDaxCKCNY0HZR19z6n3qWigDGm8Ma dIwKebEMY2o+R9ec1ZsNGsrBg8UZaUAjzHOTz+n5Cr9FADGFNp70ygDIm8N6fIwK+bEMYwj8frmr NjpFnYsHijLSgEeY5yef0/Sr1FADJ4Y7iFopkDowwQayv+EasPN35m25zs3DH06Zx+NbFFAFP+yr HzIXEADQgCPDEYwcjvzzVqWNZYnjcZRwVYeoNOooAhtLSCyiMdumxCdxGSefx+lPnhjuIWimQOjD BBp9FAENpaQWURjt02ITuIyTz+P0qVlV1KsoZWGCCMgilooAx5PDVg7llM0YP8KsMD8wTVptG09o UiNuNiElQGI5PXnPPQVeooAKrWdhbWO/7NFs343fMTnH1PvVmigBssayxPG4yjgqw9Qais7SCzjM dumxC24jJPP4/SpzQKAG3NrBeQ+TcRiRM5weMH602y0+1sN/2WLy9+N3zE5x06n3qwtLQBT1HSrT UQPPQhwMCRThgP8APr61Si8L6ejhmaaQD+FnGD+QBrapKAI/s0P2drcRKsLKVKKNowevSsqXwvp7 uWVpowf4VcYH5gmtqigCnYaXaafk28WHKhWcnJP+H4VcpKWgAqqmnWkd412kCids5b69TjoD71ao oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKQilooAjKZppSpaMUAQ4xSEZqXbRtoAiHFPVqGWkAxQBKKKQU6gBKWmE80oNADqTNGaaaA FzS5plKKAHUhpaKAGY5p46UYooAKKKWgBjVCwNWCKTbQBCB60HFSMtRlaAAGilVKfsoAizinxnNB Sm/coAlIoFNVs08UALS0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAlBoooA bikpzU2gApaSigBaSlpKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAAUhpaaT zQAnWnKvNKozTwMUAAopaKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACikpaAEopaKAGPTKe9MoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAA0Cg0Cg CRaWkWloAKKKWgApKDTc0APopKWgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlooASloooAKSikoAWjFFLQAlLRRQA0jmlApa KAEoxS0UAJikA5p1FABRRSGgAzTS1MZqTNAEganZqvup6nNAEtLSCloAaxpoINLJ0qNaAJRinU1a WgBDTHXNSYoxQBEqkVKKKWgAopKWgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigBCKYakpjCgBtLSYpaACijNFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFJQAtFFFABRSUtABRR SUABpuCTS04UAKgxT6QUtACUUUUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFACUUtJQAtNY06mNQA0nNJRRQAUUUUAFFFFABRS0UAJRS0UAJRRRQAUUUUAFGK KM0ABNIDS4pMUASqaWmrT6ACkJxQTio2agBWemg0mM0vSgCQGnVEhyaloAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBKWi igApKWkoAWkpaSgBaSiigAooooAWkJxRmmsaAAuKPMFRNSYoAm3igsDUVFAAetAooFACEU5DzQaF HNAEwNFIvSloAa/SoxUknSogeKAJA2KcHBqAHNPTrQBLRRRQAUtJS0AFFFFABRRRQAUUUUAFFFFA BRRSZoAWikpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigApCKWigBhFIRT6QigBlLS4pKACiiigAooooAKK KKACiiigAooooAKSlpKAFooooASloooASiiigBKctNNKlAEgooFLQAlLSUtABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAlMan01hQBGKWjFFABRRRQA UUUUALRSUUALRSUUAFFFFABRRRQAUnSikNABupQc03aTT0WgB6inHigUjdKAGs1M6mjvSigBelJ1 oakXrQA9Fwc1JSDpRQAtJS0UAFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLRQAlLRSUALSGig9KAI2am5obrSC gBD1p46UhFJmgBcUmKM0tACUtJRQAGgGijFAEitS76ioNAD2bIpuOKbmlzQAIKcn3qb0pVODQBMa KaDmnUAFLRRQAUUUUAFFFFABRRRQAUUUUAIaSnUmKAAUtJRQAtFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUANNNpzU0UAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUALRRRQAUUlLQAUlKaaaADrTlFI g5qSgApaKKAEpaKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigApCKWigCNhim096ZQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQAUKvNAHNSgcUAAWl xRRQAtIelLTW6UARmkoGc0poASnKKZ3qRaAHjpRRSN0oAaz4oD81A7c0isc0AWwc0tRxnIqSgAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKAEpaSigBGNM30OajNAEoagtUYooAU80gpaSgBaTFLSUAFLSUUALSUUUAApaQUtACU tJS0AJilApDRnigBcZpKF96O9AChsVIrVC3WnA4oAmpaYrU6gApaQ0UALRRRQAUUUUAFMLc0+oWB 3UASg5paYpxTs0ALSUUUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR 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 avJElFJS1RkFFFFABSHpS0lADMc05aMUtAC0lFLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV57qn/IUu/+uz/+hGvQ q891T/kKXf8A12f/ANCNAHoVFFRXU32e1mn27vLRnxnGcDNAFLU9btNOJjYmScD/AFa9vTJ7fz56 VmL4uUsA9kQueSJMkD6YrEsYH1PVEjkf5pnLO3T3P49a6+40SwmtTCttHGQuFdV5BxgEnqfxoAm0 7UbfUoTJAx+U4ZG4ZfrWT4k1WDyLnTtknnfL82Bt6hvX0rF0C6e11aAqMiVhEw9QT/jg/hW94k0+ 1+w3N75X+kfL8+4+oHTOOlAGFoOoRabePNMrsrRlQEAJzkHufauzsbuO+tUuYgwR84DDng4/pXH+ G7O3vr94rmPegiLAZI5yPT612VtbxWsCwQLsjXOBknGTnvQBLXH+L/8AkKRf9cR/6E1dhXH+L/8A kKRf9cR/6E1AGXbzS2FzFcREbgNykqcEHgjn8R+BrvrO5jvLaO4hJ2OMjIwR6iufh0z+0fC9t5Yz PFvMfOAfmOR+OKq+F9T+zXH2SU/upm+Xjo5wB+B/w96AM3VP+Qpd/wDXZ/8A0I1308SzwSQuSFkU qSOuCMVwOqf8hS7/AOuz/wDoRr0KgDm7a51TSLX7F/ZrTFN2ySPLLgk9cD1+nFW/D2nPplpNLdYj dzlgWGFUZ6n8T39K2aZLGk0TxSDKOpVh6g0AZ1r4gsbq7+zoXVicKzjCsfbnv71qVhWXhmG1vVuG naRUbciFcYOeMnPOPwrdoAK5jVp3udQdF3MEbYi479Dj6munri0do3V0OGUgg+9ZVXsjvwMbuUux 1djZx2UOxOWP3mPVjUohjExmCASEYLAckcdfyFYNzpeoSKZ5XEj4zt3Et9B2/AUuj6jJHOlvKxaN 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 H4//AFzP8xWhq3/IOl/D+YpxXuMVabWJj8ipoU3MkJzj74/kf6Vr1h6H/wAfj/8AXM/zFbgqqfwn PjElVdiG8/49J/8Arm38qwdOiSa9jjlXchzkZx2Nb15/x5z/APXNv5VzUXmeYPJ37+2zOf0qam6O jBpunJJ2OjGlWJ/5Yf8Aj7f41bJS2tiQDsiToPQCuaB1Lt9r/wDHq6K9/wCPG4/65t/Kqi072RhW hJOKlK9yC11a3up1hRJAzZwWAx0z61aup0tYGmcEquMhevXFc5o3/ITh/wCBf+gmtrWf+QZN/wAB /wDQhRGTcWx1qMIVowWzt+YtnqcN7KY41kBC7vmA/wAfem3WrW9rO0LpIWXGSoGOmfWszw9/x/P/ ANcz/MVDrP8AyE5v+A/+gip53y3NVhoOs4dLG1Nq1rCiFizM6htijkAjPParP2iMWwuGbZGVDZbs DWRZaOtxbpNcyyZdQQARwO3PPbFM11zEsFmudiIDk9+w/kfzquZpXZn7GnKahB69SebX41ciKEyK P4i23P6VJba5BKwSVDEScZzlR9TUeiWELW32iZFkLkhQwyAB7euaq65aRW0sbwqFEgOVHqO/6/pU 3mlzGip0JT9klr3OgZgoLMQABkk9qy7jXYUbEMZlHdido/Co4pZbjw/KFzujGzIOMqMH+XFZlhNB BcB7iLzUwRjrg+uO9OU3pYVHDR95y1t0Ne21xJp0ieApvIUENnkn8K1qz4Y9Nu3V7cRh423DYNp4 IPTuK0KuN+py1uS/uqwUUUVRiFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABXnuqf8hS7/wCuz/8AoRrvpp4oFDzSpGpOAXYAZ/GuYutI sbi6mn/tm2XzHZ8fKcZOf71AGx/wkOl/8/X/AJDb/Cni7t9Ws7qGzmDsYypJUgAsCB1Fc/8A2FY/ 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 Kl0RhzFMDz0cYwPrTaalzIinUpzpeyqO1ipfz/a7wtHll4VBjk/5NbBtMaabYKCQnQHq3X+dR2ml xW8gkdjI46ZGAPw9av04xerZNevF8saeyOb064Ftdq7EhDw2Bnj/APXir+r3kbQCGKQMWOW24Ix9 frUt5pUdxL5iP5ZP3vlyCfWoIdFOczyjHon+J/wqOWSXKburQnJVW7NdB2hwEK87D73yqfbv/T8q 1abHGkUYSNQqrwAKdWsVZWOGtU9pNyIrz/jzn/65t/Kuf0+VIbyOSQ7VGcnGexro5o/NhePON6lc +mRWV/Yf/Tx/45/9eomm2mjpw1SnGEozdrlxdUsx/wAtv/HT/hVmSRbnTpWhJcPGwXAPPBHSssaH n/l5/wDHP/r1rWNv9ltkh3btuecY75qlzPczqKjFJ03d/wBeRzemzpb30UsmQgJyQOmQRWvrN7bt YtEkqyO5GAhBxgg80y70IO7PbyBSTnYw46+o6D8KcmhxrBIhl3SPjDlfujPYZqFGSTR0zq0JyjUb 1RT8Pf8AH8//AFzP8xUOs/8AITm/4D/6CK19O0v7DO0vnb8rtxtx3Hv7Uy90f7VdPP5+zdjjZnGB j1o5Hy2BV6ft3O+li7Y/8eNv/wBc1/lWR4iicTxTY+Qrtz6EEn+v6VtQR+TBHFnOxQufXApLm3ju oTFKuVP5g+oq5RvGxyUqqp1efoUdBuEktBBkB4yeM9QTnP61R1+4SW4SJCD5QO4g9z2/SnzaBKHP kyoU7b8gj8qktdBAbddSBgD91O/1NR7zXLY6k6Eajq83yJ9IC2mmCSZtqu275hjGcAf0596SbR7S 6Blt32buhQ7l688f/Xq5d2ouLRrdSIwQAMDpgjt+FYzaDc7jtliIzwSSP6U2raWuZU5qTc+fldzP DPbXGY5BvRuGU5B+ntXY1k2OirA6yzyb3U5Cr0B/r2rWp04tbixdWNRrl6BRRRWhxhRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBU1LT4 tSgWGZnVVbcChAOcEdx71m/8IpY/89bn/vpf8K3aKAML/hFLH/nrc/8AfS/4Uf8ACKWP/PW5/wC+ l/wrdooAwv8AhFLH/nrc/wDfS/4Uf8IpY/8APW5/76X/AArdooAwv+EUsf8Anrc/99L/AIUf8IpY /wDPW5/76X/Ct2igDC/4RSx/563P/fS/4Uf8IpY/89bn/vpf8K3aKAML/hFLH/nrc/8AfS/4Uf8A CKWP/PW5/wC+l/wrdooAwv8AhFLH/nrc/wDfS/4Uf8IpY/8APW5/76X/AArdooAwv+EUsf8Anrc/ 99L/AIUf8IpY/wDPW5/76X/Ct2igDC/4RSx/563P/fS/4Uf8IpY/89bn/vpf8K3aKAML/hFLH/nr c/8AfS/4VrWNpHY2qW0RYomcFjzyc/1qeigAooooAKKKKACiiigAooooAKKKKACiiigBKWkpaAEo oooAaetJSnrSUAFFJS0AFJRRQAUUUUALRRRQAlKKSigBTTTSM1IpyaAHhakApF6U6gBksaTRPFIM o6lWHqDVez0yzsWZ7aAIzDBOSTj8at0UAFRzxLPBJC5IWRSpI64IxUlFAGF/wilj/wA9bn/vpf8A Cj/hFLH/AJ63P/fS/wCFbtFAGF/wilj/AM9bn/vpf8KP+EUsf+etz/30v+FbtFAGF/wilj/z1uf+ +l/wo/4RSx/563P/AH0v+FbtFAGF/wAIpY/89bn/AL6X/Cj/AIRSx/563P8A30v+FbtFAGF/wilj /wA9bn/vpf8ACj/hFLH/AJ63P/fS/wCFbtFAGF/wilj/AM9bn/vpf8KP+EUsf+etz/30v+FbtFAG F/wilj/z1uf++l/wo/4RSx/563P/AH0v+FbtFAGF/wAIpY/89bn/AL6X/Cj/AIRSx/563P8A30v+ FbtFAGF/wilj/wA9bn/vpf8ACj/hFLH/AJ63P/fS/wCFbtFAGF/wilj/AM9bn/vpf8KP+EUsf+et z/30v+FbtFAFTTdPi02BoYWdlZtxLkE5wB2HtVuiigAooooAKKKKACiiigAooooAKKKKACiiigBK WiigBrCozUpphFADaKKDQAUUUUAFLSUUABpKQmheaAFMSyKVdQynqCMilit4YjujiRDjGVUCpFFL QO7tYWikpaBBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB TJY0mieKQZR1KsPUGn0UAVLPTLOxZntoAjMME5JOPxq3RRQBHPEs8EkLkhZFKkjrgjFY3/CKWP8A z1uf++l/wrdooAwv+EUsf+etz/30v+FH/CKWP/PW5/76X/Ct2igDC/4RSx/563P/AH0v+FH/AAil j/z1uf8Avpf8K3aKAML/AIRSx/563P8A30v+FH/CKWP/AD1uf++l/wAK3aKAML/hFLH/AJ63P/fS /wCFH/CKWP8Az1uf++l/wrdooAwv+EUsf+etz/30v+FH/CKWP/PW5/76X/Ct2igDC/4RSx/563P/ AH0v+FH/AAilj/z1uf8Avpf8K3aKAML/AIRSx/563P8A30v+FH/CKWP/AD1uf++l/wAK3aKAML/h FLH/AJ63P/fS/wCFH/CKWP8Az1uf++l/wrdooAwv+EUsf+etz/30v+FH/CKWP/PW4/76X/Ct2igA prCnUhoAhYUlPamUALRSUUALRSZozQAtJRmk3UALRSZozQAuaM0maTNADqKSloAKDRRQAlLRiigA ooooAKKKKAFpppTTc0APWpVqJKmWgBaKKKACiiigAooooAKKKKACiiigBKWiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigBKWiigBKDRQaAGHrRSHrSigAopaSgApKWigBKKKWgAooooASlPSkzSbqAEIzTlWheakAoA BRRS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQAU1hTqRhQBGaKGpM0ALRSZozQAtJmkzSUALtzT1 WnIOKdigAFFFLQAlLRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAlBo oNAEbmmU56aKACikJooAKKUA08LQBHg0uw1KFp1AEPlmjyzU9FAEOyjZUtFAEBGKM1I4qE5zQA6k oFLQAtJRRQAUUUUAFFFFAAabinUqigByCpBSKKdQAUUUUAFFFFABRRRQAUUUUAFFFFACUUmaM0AO opKWgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigApppSaaaAEooooAKKKKACiiigBe1NozSigApjGnmm4yaAG80Kpz UqrS7aABRxTqSloASloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaKAEoNLRQBE61GVNWCKTaKAK+0 0bTVjaKNtAEQU04LT9tLigAAwKWiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACkNLSUAMYVGQamIpNtAEIU09VqQLS4oAQKKXFLRQAlLSUtABRRRQAUUUUAN YZpgSpKKAGFOKjIxU9RuKAGCjFIDzSk0AFKaaDS0AJS0UjUAHepUqIVMg4oAdS0UlAC0UUUAFFFF ABRRRQAUUUUAFFFFADWFR5walqNxQA4MDT6rqSDU6nIoAKWkpaACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopKKAGk0lK1NFAC 0UUUAFFFFABRRRQAlGaazc03JoAeWpAeaQDNPVaAHqadTQKdQAlFLRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRSUtABSUtFABRRRQAUUlFAC0lLRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUUUAFFLRQAUUUUAFFFFABRRRQAUUUlAC 01hmlpaAK5XmkNTMtRMDQAgNOzTMGnBTQAE0nWnbDTlTFACKtSqMCkAp1ABSUtJQAtFFFABRRRQA UUUUAFFFFABRRRQAgHNDdKDUbNQA1hzTlbFMJzSUATB80+q6Z3VPQAtFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUtFFADGpBStT aAHUlFFABRSikPWgAopjHmkOaAFK5NOEdC1IKAGhKcBilpKAFpKWigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigApKWigBKKKWgAooooAKSlooASloooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igBKKWigAppFOooAYFp2BQaiYkUASEgUA5qHcakjoAkooooAKKKKACiiigAooooAKKKSgBaKKSgB aKSjtQAHmmMlMZiDUiHIoAhIxQKldaYq80AKo5qWkAp1ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFQXl5b2MQluZNiFtoOCefw+lT1HNBFOoSaJJFByA 6gjP40AUP+Eh0v8A5+v/ACG3+FH/AAkOl/8AP1/5Db/CoPEFlaQ6PPJFawo424ZYwCPmHejw/ZWk 2jwSS2sLud2WaMEn5j3oA07O8t76Iy20m9A20nBHP4/Wp6jhgigUpDEkak5IRQBn8KZd3ttZJvuZ ljB6Z6n6DqetAE9FZ0Wu6ZK4RbtQT/eUqPzIxWjQAUVF9pg8/wAjz4/O/wCee8bumen0qWgAoqJL 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 RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUARTW0Fxt8+COXb03oGx+dJDaW0DF4beKNiMEogBx+FTUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSN0paQ9KAI+9LSd6WgA70Ud6 CaAGMaFNKRmlVaAHqadSAYpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKimtoLjb58Ecu3pvQNj8 6looAaqqihEUKqjAAGABTqKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBK KWkoAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKAOZsta1m/wB/2W1tpNmN3bGenVvapX1vU7CVf7SsFWJsDdH2/HJBOAeKi8Gf 8vn/AAD/ANmq94pkhXSXSQr5jsPLB65BGSPwzz7+9AGrFIk0SSxnKOoZT6g0+qGh28ltpNvFKMOF JI9MknH15qLVtXaymW1gtnnuXXcoA4xz6cnp0/WgDUorn5tV1myUTXlhF5AOG2Nz7c5OPyras7mO 8to7iEnY4yMjBHqKAJqKx7nX47XU5LSWHCRrkyb+vy7sYx17dagudU1lEkuYtPVLZeR5o+cD1Izn 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 p0YhONvmHk8deSMj3xQBv0Vl6PrA1BngliMNzGPmXnBxwfpz2NS6xqP9mWqz+V5u5wmN23sT6H0o Av0VitrF3dIg0uz819oaRnPyLkA7QcjJGf06VHY6/Kb77FqNuIZS20FM4B4wCOevrnuPrQBvVUst Str9pBbOXEYBZtpA5zxz9Kj1O+nsvK8ixkut+c7M/LjHoD6/pXNeH76ey+0eRYyXW/bnZn5cZ9Af X9KAO0oqOCRpYI5HQxs6hih6qSOlSUAFFZNxrkcGsJp5gY5ZVL7uhbpx6citagAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlooASl oooASlpKWgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigDi/D9jPe/aPIvpLXZtzsz82c+hHp+tXrrRdQtZUvorn7bLDztlUk4H YAk57+ntzR4M/wCXz/gH/s1bt7fW9hCZLiQLwSFz8zewHegCDRtTXU7TzCAkqHa6g9/Uex/xpdQ1 Oz007pz+9dRhUGWYA/y5PX3rN8H28iW9xOwwkrAL74zk/Tn9DVfTvLufFd01ztdkZ/L3eqkAYHcg D9M0AS32vR31lPFbWE0yFCJGZeI+ODxn69ulT+EP+QXL/wBdj/6CtXtbuI7fSbgyH76GNR3JIx/9 f8Ko+EP+QXL/ANdj/wCgrQBTkjSXxqFcZAYN+IjyP1FdTXM/8zv/AJ/55V01AHLeHo0h8RXsUYwi LIqj0AcU/wAZ/wDLn/wP/wBlo0P/AJGfUP8Atp/6GKPGf/Ln/wAD/wDZaAJZ5JfEF69pC/l2MDfv XUgmQ54x7ccfn6Ct2CGO3hWGFAkaDAUVgatYXGnXbarpxPUtMnXr1PuPX06/TX0zUYdSt/Ni4YcO hPKn/D3oAzrf5/F91v8Am8uEbM87eF6enU/ma3awRutvGDZAYXUPGD90Af8A2B/OtqeVYIWlcHYg y2Ow7n8OtAGTqvh2G9d54H8mZuSMfKx/oTxz+lZsGpajoky2t6hkt1O0HH8I/ut36jg/Tiupikjm QSROroejKcg/jWT4qaAaUUlYeYWBiGeSQef0J/OgC7fyJNo1xLGco9uzKfUFTWd4Q/5Bcv8A12P/ AKCtXPD8bxaLbK4wSpb8CSR+hrG06UaFrU1nNgQTEYkbPA52nOPfB9/pQB1VFNVldQ6MGVhkEHII ps00cAUyuF3sEXPdj0FAGN4v/wCQXF/12H/oLVDZ6Ney2cEiaxPGrxqwQZwoI6feqbxf/wAguL/r sP8A0Fq09L/5Bdp/1xT/ANBFAHPxG78MzYljSa0mbmRV+bjPf174PHp3rqFZXUOjBlYZBByCK53x VeQzxRWUDebP5oJVOcdRj65PSt6ziaCzghcgtHGqkjpkDFAGRcfJ4vtdny+ZCd+ON3DdfXoPyFbt YJ3XPjBcAKLWHnJ+8CP/ALMflW9QAUUUUAZHii4aDSGVc5lYR5BxgdT/ACx+NT6FbrbaRbqMEuvm EgYyW5/wH4VB4ot2n0hmXOYmEmAM5HQ/zz+FS6BeR3emQqhAeFRG655GOAfxxn/9VAEuswxz6Vci VA2yNnXPZgDg1n+EP+QXL/12P/oK1b1+8jtNMmVyC8ymNFzyc8E/hnP/AOuqnhD/AJBcv/XY/wDo K0AVfDG691O7v5iDIBwMZwW9CemAMfQ109ctoLf2XrNzYTuo34Csf4iPu/TIJ/SupoA5i/VbLxZb SQqMzFSwI4yxKnp+f1q14v8A+QXF/wBdh/6C1VZGXVvFMRt2BjtgCXByCFOf5nH61a8X/wDILi/6 7D/0FqANHR40i0m1VBgGJW/EjJ/U1heMo0EtrKB87Kyk+wxj+Zrf0v8A5Bdp/wBcU/8AQRWH4z/5 c/8Agf8A7LQB01cz4M/5fP8AgH/s1dNXMeDGUNdoWG4hCBnkgZz/ADH50AdPRRRQBzOuf8jPp/8A 2z/9DNdNXM65/wAjPp//AGz/APQzXTUAUtauGtdKuJUzuC7QQcEEnGc+2c1z+iaxY6bZmN4pjM7Z dlVcewBz0x/M10Or2/2nS7mLDElCVC9SRyB+YrP8K3kcuni1yBLCT8ueSpOc/rj/APXQBR1jXrK/ 0+S3SGXzCQVLqMAg/X0z+damiXHleHYp5SzCNHJ7nCk8fkK1GZUUu7BVUZJJwAKSKRJokljOUdQy n1BoAxf+Ersf+eVz/wB8r/jWlpuoRalA00Kuqq20hwAc4B7H3q3RQBy3iGNJvEVlFIMo6xqw9QXN dTXM65/yM+n/APbP/wBDNdNQByuiQx/8JPdgIAIjIUA4C/Nj+RNdQyq6lHUMrDBBGQRXN6H/AMjP qH/bT/0MV01AHM+DP+Xz/gH/ALNWpf6xY6bIyPlpWILJGuT06nt0A9+lZfgz/l8/4B/7NTPCfl3F 7dXE21rnhlJ68k7iB+X5+9ACaxrK6jp8iQ2MphyMzuOEbPtkdOOvetfw3/yA7b/gX/oRqLxTcRxa S8TH55mAUfQgk/Tj9RUvhv8A5Adt/wAC/wDQjQBmaH/yM+of9tP/AEMUeM/+XP8A4H/7LRof/Iz6 h/20/wDQxR4z/wCXP/gf/stAHTUUUUAcnrl3EfEMa3Su1vbgZRcHccbuh45yAfYVfPiqx/55XH/f K/41W1Vk07xPb3jhvLkUFmPQcFTjjsMHFdIrK6BkYMrDIIOQRQByVhdR3PikTW4aOOXOVIxn5Oc4 9xmn6v8AaNN1xdSEYeJiMc8fdwQfQ9f85rpmmjE4g3jzSpfb3xnGf1qMSQzNLDlXKfLIh9xnkehF AFWz1qxvCqJLskbokgweuMehP0NaBrnfEWl2cVo11EqwSAgbV4D54xjse/HvWnoc0k+kwSTOXcgg sepwSP6UAZfgzrd/8A/9mrpq5jwayh7tSw3EIQM8kDOf5iuooASuZ1v/AJGfT/8Atn/6Ga6aua1v /kZ9P/7Z/wDoZoAm8YXDJaQW4yBKxYkHsvbHfqD+FJbeI9NtbeOCKG5CRrgfKvPv1607xhb77KGc BiYnwcdACOp/ED861rC8jv7RJ4iPmHzKDna3cUAcpruqwahLby2qSRyRZy7AA9sYIPbn867So5po 4AplcLvYIue7HoKkoAKKKKAMnxLZzXmm7YF3tG4cqOpABHHvzVLR/EVslpHb3eYmiUKGCkqwGAOn Of8AD8K35Zo4TGJHC+Y2xc929P0qve6XZ3wbzoF3t/y0UYbOMde/40AWYpI5kEkTq6HoynIP41zn /M7/AOf+eVM8LO8WqXVok3mQKrEY6MQwAYfhRduLLxgk8/yxvjDZHQrtz7DOfyoA6muZ0P8A5GfU P+2n/oYrpGZUUu7BVUZJJwAK5fw5Ks/iC8mQELIrsAeuC4NAF3xf/wAguL/rsP8A0FquQ2qXugQ2 7nAkt0GfQ4GD+dU/F/8AyC4v+uw/9BatPS/+QXaf9cU/9BFAGZ4TndrOW0kDB7d+hGMA9vrkGodU A1TxDb2BU+VAN0hwecgE9D06DPqaScx6N4l89zst7lCWYqTgnk49TkA/8CqfwxA7rcajKqh7lyVw Ogyc49s9vagDYuZIYYGluCoiTDEt0GDx+OcVkN4osyxSGGeV84QBQA57d88/Sq/jKRxFaxA/IzMx HuMY/ma37aOGK3jS2CiEL8m3kY9ff60Actp8rT+LEle3NszFiYyOQdh9h16/jWj4v/5BcX/XYf8A oLVRtriO58ZebEcoWYA+uEIz9OKveL/+QXF/12H/AKC1AGjo8aRaTaqgwDErfiRk/qawvGUaCW1l A+dlZSfYYx/M1v6X/wAgu0/64p/6CKw/Gf8Ay5/8D/8AZaAOmrmfBn/L5/wD/wBmrpq5jwYyhrtC w3EIQM8kDOf5j86AOnooooAjMETTLMYkMqjAcqNwH1/E1JVV9RtI7xbR51E7Ywv16DPQH2q1QAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA 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 UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA 0jNMYYqWkIzQBCxzSLUpWgLQAiin0YpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigBKWkooAWkpaKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooASloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooqOaeKBQ80qRqTgF2AGfxoAkopqsrqHRgysMgg5BFQLf2TsES7gZmOABICSfzoAs0UUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVR1LUPsHl/uvM3 5/ixjGPb3pN21ZUIOb5Y7l6iqOm6h9v8z915ezH8Wc5z7e1XqE76oJwcHyy3CiiimSFFFFABRRRQ AUUVjz655M8kX2bOxiud/XB+lJyS3NKdKdR2ijYoqOCTzoI5cY3qGx6ZFSUyGrOwUUVHPJ5MEkuM 7FLY9cCgEruxJRWPBrnnTxxfZsb2C539Mn6VsUlJPYupSnTdpIKKKKZmFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFZd7rH2W6eDyN+3HO/GcjPpSbS3Lp05VHaKNSioLK4+1Wq T7dm7PGc4wcVl/8ACQf9Ov8A5E/+tSckty40Kk21FbG3RRRVGIUUUUAFFFFABRRRQAUUUUAFFYn/ AAkH/Tr/AORP/rVt1Kknsa1KU6duZBRRTXdI1LOwVR1LHAqjIdRWbJrdmjYXzJBjqq/44p9vrFpO 20sYj28wYB/Gp5l3NnQqJX5WX6KKinnito/MmcIucZqjJJt2RLRWY2u2gYgLKwB6hRz+tXre5huV 3QyBx3x1H1FJST2LlSnBXkiWiori5itUDzPtUnAOCefwqt/a9j/z3/8AHG/wobSFGnOSuk2XqKo/ 2vY/89//ABxv8Kkh1G0nlEUUu526DaR/SjmXcbpVEruL+4tUUUUzMKKqy6lZxY3XCHP935v5U1NU snYKLgAn+8CB+Zpcy7mnsp2vysuUU1HSRQyMGU9CpyKdTMwooooAKKKKACiiigAooooAKKKKACii igAoorNv9XS0n8lYjIwHzc4x+lJtLcuFOVR2ijSoqvZXaXluJUBHOGB7Gsz/AISD/p1/8if/AFqT kkXGhUk2ktjboooqjEKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDz5b/UHYIl3dMzHAAkYkn86s f8T3/qI/+P1TsJEhv7eWQ4RJVZj6AEV2X/CQ6X/z9f8AkNv8KAJNE8/+yoftXmed827zM7vvHGc+ 1X6ZFIk0SSxnKOoZT6g1xsHiLUFnjM1wWiDAuojXJXPI6UAdrRXF6hqurTDzW862t3YGPapUdOPm 78VYtfFM8dtItwglmA/dsFwCec7v06D/ABoA6yiuHuNS1mCZJZ5Z4mwQoZNqn/gOMHr6V0ugai+o 2RaXb50bbWwevHBx2z/Q0AadFYOvXOp/bEtdPD7WjBYouTliRye3Trx3rGujrenbJbia5QFvlJl3 DPoeSPwNAHb1geJdKu76WKW2/eBV2mPdjHfIzx/+ofhP4e1Z9RieOcr58eOgxuX1+uevbkVT8Sap e2N+kVtNsQxBiNqnnJ9R7UAaehWU1hpyxTvlyxbbnITPb/PrXHaX/wAhS0/67J/6EK7PRLiW60qG edt8jbsnAGcMR2rjNL/5Clp/12T/ANCFAHoVFY/iTUbnT7eL7MuDIxBkxnbjt6ZP9DR4b1G51C3l +0rkxsAJMY3Z7emR/UUAbFFFFABSMwVSzEAAZJPalrkr68kvZt78KPuqOiiolLlOihQdZ76I6b7Z a/8APzD/AN/BU9YS6CWiDLdKSVyMLwfxz0961NOge2so4ZMblJzg+5oi290FWFOKvCVyzULXdsrF WuIgQcEFxxXPalqMl3KyqxEAOAoP3vc06HRbuVAxCR56Bzz+lT7Rt+6jZYWMY3qSsdIrBlDKQQRk Ed6bJLHEu6R1QZxljisu187S9MuS6AuknHoc4AP0rIiV768VZJQHkbl2/wA/kKbnb1JhhVJt391H Upc28jBUnjZj0CuCalrBm0CRUJimEjD+Ertz+tWtbtJ7ryfIj37d2eQMZx60+aVtUQ6VJySjPRmR LqV5LjdcOMf3fl/lXV1xVbmjWNza3TPNHtUoQDuB5yPSs6cnc7MXShypppW/E2ag+2Wv/PzD/wB/ BWdq1lc3t6giH7tU+8xwoOT/AID9Kil0B1jYxzh3A4UrjP45rRyl0RyQpUrJznqzdormtFu3gu1i LfupDgg889sfpWj4h/48U/66D+RoU7xuEsM41VTb3NSmPLGjKruqljhQTjP0rlLOSdJSltnzJF2D HUfT06dakvrC5tf3kxDhjy4bOSc+vNT7TS6Rr9TSlyykdVRWBoN46zi1YkowJUf3T1/LrVjXb54Q tvEWR2G4sDjj0qudctzF4aSq+zNJ7m3jYq88asOoZwDWT4k/5d/+Bf0rPstPnvdxiACr1ZuBn0pl 3HPbsLafOIySo7c9x7cVnKbcdjspYeMKqtK7Rp+G/wDl4/4D/WtusTw3/wAvH/Af60/VrK5vb1BE P3ap95jhQcn/AAH6VcXaBz14Kddpu3/DGj9stf8An5h/7+Cp6wpdAdY2Mc4dwOFK4z+Oar6LdvBd rEW/dSHBB557Y/SjnadmhPDwlFypyvY6GWaKHHmyomem5gM0RTRTZ8qVHx12sDisjxJ/y7/8C/pW VAZpFNtCCTKwyB3xn9Of0pOpZ2Kp4VTpqdzq47iGVtsc0bnGcKwNSMwVSzEAAZJPasbRrK4tbxmm iKhoyAcg9x6VnahfPeTscsIs/KhPT3+tPnsrslYVTqcsXp3OmjuIZW2xzRucZwrA1yt9/wAf1x/1 0b+dWV0m8WAXCgBgNwQE7x/9eqLu0js7nLMSSfes5ybWqOzDUowk3GVzrbH/AI8bf/rmv8qnqtau senQu5wqwqSfbFc7eXk99NznaT8sa8gen1NauXKkcNOg6s30SOk+2Wv/AD8w/wDfwUX3/Hjcf9c2 /lWGmh3bKCTGh/us3I/IVowRvDoUkcilXWOQEH8aSk3uhzpU4NOEr6mFY/8AH9b/APXRf511kksc S7pHVBnGWOK4+KQxSpIuCUYMM+1XbywvFia7uSCSfmG7JHb6enSs4SstDtxFFVJrmdjpqK5nR7t4 LxIySY5DtK54yehx+VdDdb/ss3l537G27eucdq2jLmVzzq1B0pqLe4ss0UOPNlRM9NzAZoimimz5 UqPjrtYHFYdvoUzrmaQRHsoG4/jVW/spNPmT58g8o44OR/Koc5LVo3jh6UnyxnqdVUH2y1/5+Yf+ /gqPS7k3dmsjkFwSrYGOf/1Yrlacp2SaJo4bnlKMnax2Ms0UOPNlRM9NzAZqDUZ2i0+SaBwDgFWG D1IrBFpe37NcrEWDsedwH5ZPSnXtlcKonaIiMRoCSRx8oHTr1pObtsaRw0FJJyV/60JdMvLmfU4/ Nmdg2crnA+6e3SuirjYYZJ5RFEu526DOK6DS4pLCwlNwhUqxfAIPGB/hSpyY8ZSjdNPXsaLMFUsx AAGST2qNLm3kYKk8bMegVwTXNyzT6reKowCThFzwoqW/0h7SDzllEig/NxjH60+d7pELCxVozlZs 6SopLiGJtsk0aHGcMwFZmhXskxeCZi5UblY8nHfJ/EVV8Q/8fyf9cx/M03P3bozjhv3vs5M3lmid DIkqMi9WDAgfjRFNFNnypUfHXawOK5WBZ7lFtYVLAMXwPoBz27frWnp6y6XBdS3ERGApABHPJHWk pt9C6mFUE7S16I2XdI1LOwVR1LHApkdxDK22OaNzjOFYGubjSfVr35mGSMk9lX2FPv8ATpNP2SrJ uUnhh8pDUc73S0H9VgnySl7x01FZuiXj3VuySks8ZA3HuD0/Hg1m6xfPPcvCpZYkO0rn7xB61Tmk rmUMNKVR0+xvpc28jBUnjZj0CuCa5zWf+QnN/wAB/wDQRSwaTdT2/nKFAIyqscFqqTPI8pMxJk6H d1445rKcm1qjuw9GMJtxlc6TRv8AkGQ/8C/9CNcxXT6N/wAgyH/gX/oRrmKJ7IMN/Eqev+Z2Uksc S7pHVBnGWOKI5Y5V3RurjOMqc1gNY32oqbtyuWHyqxxx2x7VRhlltZwyEo6nkcjOD0NW6jXQ544S Mk0pao7CmSSxxLukdUGcZY4ptvMJ7eOVcYdQcA5x7VhW+jXNxmSd/K3c/N8zE+9W2+iOenTi788r WN2O4hlbbHNG5xnCsDUtcxqOmPYqr7xIjHGcYwfpWtot29zbMsrbpIzjPcjtn9aUZ3dmXUw6jD2k HdGjRXL6z/yE5v8AgP8A6CKdaQ3l/biCNgsEYI5JAJJzz6ml7TW1i/qnuKblozo0ljdmVHVipwwB zj60+uOljltZyjgpIhB4PTuORXS6VdNd2Yd/vqdrHGMmiM7uxNfDezipJ3Ry1drXFV0OuXvkQ/Z0 P7yQfNx0WopuybOvF03UlCK8/wBDUqhrFvJdW8UUS5YyD6AYPJrI0nTxeSF5MiJDz/tH0rpq0T51 qcU4qhUXK7tGPDoEQQedK5fvswAPzrM1Gz+xXJjDblI3Ke+PeuqZgqlmIAAySe1ctqt0t3eF0+4o 2qcYyKipGKWh1YWrVqTd3obeiztPYKG6xnZn1A6fzrC1G5N3dvJkFQdqYGPlzxW/pNsbWyVWyHc7 2B7Z7fliuYdGjdkcYZSQR70p35UVhlF1ZtGymgg22WlInIyBxtB9D/jWdaTPYXoZgQUYq6j07iug h1O1kgEjTIhxllJ5Bx0965meTzp5JcY3sWx6ZNKaSs4lYd1KnNGpsdRqNn9ugWLzNmG3Zxnsf8az v+Ef/wCnr/yH/wDXrUsf+PG3/wCua/yqetXFS1Z58a9Sl7sWczqOmCxiV/PDlmwF24/Hr/nNTeH7 cvcNOV+WMYB5+8f/AK2fzqHWrgz3zKGykXyjr17/AK/yrb0u3FtZRrghmG5sjHJ/zj8Kzik5aHbV qSjQXM9WWJZEhjaSRgqKMkmufuLm51a58mAFY+y54x6tVrxDcELHbq33vmYc9O39fyosCunaS90w /eScgEdeyj+v0qpO7t0MqMPZ0/aWvJ7CxaVZWyqbyUF2HRn2rn271JLYaUYgd6Rh/uuJeuOuMnFZ un2randSPO7EAZZhjJPYf59KNVsfsTIqSFomyVDHkHjP9Km+l7aGvK3U5HUfMDpPpciTW8wkhY8O v3W9iPzresrtLy3EqAjnDA9jVRreNtBC7cAQ+YPZsZ/z9ap+HZCLmWPjDJuP4H/69Uvddu5nUSq0 3J7x/E36ie5t42KvPGrDqGcA1m67fPCFt4iyOw3FgccelZdlp897uMQAVerNwM+lOU9bIzpYZOHP N2R1dFcjdxz27C2nziMkqO3Pce3Fafhv/l4/4D/WhTu7WCpheSnz81zborl9Z/5Cc3/Af/QRT7WC 9v7VYo2CwR5HLYBOc8+vWj2mtrD+qLkU3K1zokljdmVHVipwwBzj60+uNdJLeYqwKSIfxBrQYX2r xhhjy4xjk43MBz+Jz9KSqX6FTwajZ82hvxyxyrujdXGcZU5p9cb+8t5iASkiEglTyD0PIrq7Kf7V aRzYwWHI9+hqoT5tDKvh/ZJSTumSSSxxLukdUGcZY4psdxDK22OaNzjOFYGsK30a5uMyTv5W7n5v mYn3qLUdMexVX3iRGOM4xg/Spc5b2LWHpN8nPqdPWbf6Ql3P5yymNiPm4zn9aXRbt7m2ZZW3SRnG e5HbP61kaz/yE5v+A/8AoIpykuW4UKU1VcU7NHQWVolnbiJCTzlie5rkq6fRv+QZD/wL/wBCNcxU VNkdOEvzzTd9f8ztaKKK3PJCmSSxxLukdUGcZY4qpq18bO3Hl481zhc9vU1gQW9zfzHbmRuNzsen 1NZynZ2R1UcNzx55OyOojuIZW2xzRucZwrA1LXPxaRc29xDKdjqsi52EkgZ69K0tWvjZ248vHmuc Lnt6mmpaXYp0VzKNN3uWpZoocebKiZ6bmAzSR3EMrbY5o3OM4Vga5i2trjUJztJZsZZ3J4+ppb3T 57LaZQCrdGXkZ9Kn2j3sb/VIX5XPU6uisrRdQe5Bt5cs6LkP6j396zNZ/wCQnN/wH/0EU3OyujGG Fcqjpt2sdRTEljdmVHVipwwBzj61ztrBe39qsUbBYI8jlsAnOefXrVJ0kt5irApIh/EGk6nWxrHB ptx5tTsqZHLHKu6N1cZxlTmsBhfavGGGPLjGOTjcwHP4nP0rP/eW8xAJSRCQSp5B6HkUOpboEMHz XTlqdlRUFlP9qtI5sYLDke/Q1PWu5wtOLswooooEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAecWsP2i6hg3bfMdUzjOMnFdD/wAIj/0/f+Qv/sq52CVo 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 0cZW2VgMsOS2P/11OjV3uae/GooxSUSx4b/5eP8AgP8AWqWs/wDITm/4D/6CKu+G/wDl4/4D/WqW s/8AITm/4D/6CKb+BEQ/3qXp/kbWjf8AIMh/4F/6Ea5iun0b/kGQ/wDAv/QjXMUT2QYb+JU9f8zt aKpatdvZ2m+MDezbQT24PP6VQ0rU7ia7WGZhIHBwcAbcDPatnJJ2PPjQnKDqLZEXiJj9sjXJwI8g fiaueHVH2ORsDJkwT+Ap2t2L3MayxAF4wcgDlh/9b096x7C+ksXYoAytjcp71k/dndnbFe2w/LHd HV1zviH/AI/k/wCuY/manTW5J7iGKOIRhnUMSdxxkdKsa3YvcxrLEAXjByAOWH/1vT3qpPmjoYUY uhVXtNLjfDqj7HI2BkyYJ/AVPrSg6ZKSASCpHtyKwtPv3sZGKqHRh8y9M+nNSajqb3yqmwRopzjO cn61KmuWxvLDzdfn6biaN/yE4f8AgX/oJo1n/kJzf8B/9BFX9BsmTN1KuMjEefTuf8+9UNZ/5Cc3 /Af/AEEUmrQNYzUsS7dF+ptaN/yDIf8AgX/oRrF1n/kJzf8AAf8A0EVtaN/yDIf+Bf8AoRrF1n/k Jzf8B/8AQRVT+BGGH/3ifz/M2tG/5BkP/Av/AEI1i6z/AMhOb/gP/oIra0b/AJBkP/Av/QjWLrP/ ACE5v+A/+giifwIMP/vE/n+ZtaN/yDIf+Bf+hGr1UdG/5BkP/Av/AEI1erSOyOKt/El6sKKKKoyC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKoanqsGmeV56SN 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 KdRWpxNtqxE9tbyMWeCNmPUsgJp6IkahUUKo6BRgU6igG21Yie2t5GLPBGzHqWQE09ESNQqKFUdA owKdRQDbasU30uydixtwCf7pIH5CpzbwmMRmGMoDkLtGB+FS0UrIpzk92RxQxQ58qJEz12qBmke2 t5GLPBGzHqWQE1LRTsTzO97jURI1CooVR0CjAqL7Ha/8+0P/AH7FT0UWBSa2YyWNJo2jkUMjDBBq K2sre1YtDEFLDBOSf51YopWQ1KSVk9AqtNp9pO26SBSck5Hy5+uOtWaKGrhGTjqnYrQ6faQNujgU HIOT82PpnpVmiihKwSk5at3K02n2k7bpIFJyTkfLn6460kOnWcDh44AGHQkk4/OrVFFkP2k7Wu7B UT21vIxZ4I2Y9SyAmpaKZKbWw1ESNQqKFUdAowKY9tbyMWeCNmPUsgJqWigE2ncaiJGoVFCqOgUY FMe2t5GLPBGzHqWQE1LRQCbTuNREjUKihVHQKMCnUUUCCiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAqJ7m3jYq88asOoZwDUtVtSjSWxmDqG2oWHsQODSexUEnJJjvtl r/z8w/8AfwU77Tb7PM8+PZnG7eMZ9M1ylmoa8gVgCDIoIPfmuseGOSEwsgMZGNuOMVEZOR016MaL SuM+2Wv/AD8w/wDfwVPXH3MXkzyKAdiuygnvg/8A6q2NE1AOq2kmdwHyN1yPSlGpd2ZVXCcsOeDu aks0UOPNlRM9NzAZpq3dszBVuIiScABxzUrKGUqwBBGCD3rP0iGOP7TsQArOyA4528cZq23c54xi 4tvoXHubeNirzxqw6hnANN+2Wv8Az8w/9/BUGtKDpkpIBIKke3IrC0qNJtQiSRQykkkHvgE1MpNO xvSoRnTc29jpPtlr/wA/MP8A38FOS5t5GCpPGzHoFcE1G9nZ7SGt4QDxnaB1461QXT1s9Xt3iB8p 93XnBweP8+hpttGUYU5J6u5sVDPdQWw/fSqhxnGefy61U1bUfsaiOPmZhkEjhR61R0S0FzJJcTqJ FBwN3OWPUn/Pehy1sioUPc9pPRfmaS6tYswAnGSccqR/SraOkihkYMp6FTkU2aGOdCkqB19CK5uO WbSb50B3BThlPRh2+lDk47jp0Y1U+TRrudM7pGpZ2CqOpY4FRfbLX/n5h/7+CnW86XMCzR52sOMi ub1hQupzBQAMg8fQUSlZXQqFFVJOEtGjo1u7ZmCrcREk4ADjmpqz9DjRNPR1UBnJLH1wSK0KpO6u ZVIqMnFdAqD7Za/8/MP/AH8FT1keIo0+zRy7RvD7d3tg8UpOyuOjBTmovqaH2y1/5+Yf+/gpzXNu mN88a7hkZcDI9awdARHvm3qG2oSMjODkc1r6pbxz2UhdfmjUspHUECkpNq5rUowhUUGydLm3kYKk 8bMegVwTUtcX88bA8qwwQeh9Qa6jTb5b6EnG2RMBx2+opQnzaMqvhfZLmjqid7m3jYq88asOoZwD RHcQyttjmjc4zhWBqPUo0lsZg6htqFh7EDg0aeiJYw7FC7kUnAxk4HNVd3sYcseTm6jvtlr/AM/M P/fwUfbLX/n5h/7+CsrxIo3W7YGSGBP5UzQLeGZpzLGrlQoG4ZxnP+FTzPm5TdUIey9q2/60Nj7Z a/8APzD/AN/BTo7iGVtsc0bnGcKwNRyWVmy7GgiG44GFCk9+CPpVHT7I2WqumSyNESrEe44+tVdp mShTlFtN3NeiiiqMApksiQxtJIwVFGSTSTypBC8rnCqMmqOnq16/224AxkiJOCFGev1yOtJvoaRh dOT2NKiiimZhRRRQAUUVXuvNcpDEWQOTvkUfdUenueP1oY4q7sJNqFpA22SdQckYHzY+uOlSW9zD cruhkDjvjqPqKozaLatAViUrIBw248nHf/61YunOyX8BU4O8D8DwazcmnqdkKFOpBuDd0dbVee9t rc4lmVTnBXqR+Ap100ojCwg73YKGxkL6k/h+uKqto1oyEN5hcnJkL/Mefy/SqbfQ54RhvN/cWbe8 t7rPkyhiOo6H8jUkkiRLukYKucZPQfU9q5Fg9tckAjfE/UeoNdgyhlKsAQRgg96UJORriKEaTTTu mLRWWJjpt8tu7k2soypcn92fQH06fTI/HUqk7mE4ONuzCiioridLaBppM7VHOBTJSbdkS1Wlv7WJ xG0wLk42rljn0wKxhPc6xdLCTshHLKpx8ue/qelbltaw2sYSJAOOT3b6moUnLY3nSjS+N69l/mTU UVWvblrdFESeZNIdqJ6n1+gq27GEYuTshZL23juFgeUCViAFwT16VYrkbNi1/AzEkmVSSe/NddUQ lzHRiKKpNJMie5t42KvPGrDqGcA037Za/wDPzD/38FY0mnXGoyPdxyxlJGO3dkHAOB29qb/YN1/z 0h/M/wCFLml0RoqFFL3p6nQI6SKGRgynoVORTqhs4BbWscPGVXnB79/1qatEccrJuwVXe9t0ZwXL FBl9iltv1wOOlUteuzFAsCEZlB3HPIH/ANf/ABqXQ4wmnIwzl2LH88f0qObWyN/ZJU/aS6l5HSRQ yMGU9CpyKdXO2N0bDUXt958gyFTu7c4B/wAa0tZuza2u2NiskhwCOw7n/PrQpq1xzw8lNRXXYsm7 hDsgYuy/eCIWx9cDjpTre5huV3QyBx3x1H1FZ/h1R9jkbAyZME/gKzryR7HV5XgYg7snPfPJB9ua XO0k2WsPGU5U09UdNSMwVSzEAAZJPaow7zW6yQYBcBhvHQH6e1YeuRzxtGZrkyhySFC7QuPbPvVS lZXMqVL2kuVuxuQTxXCs0LhwrbSR61LWX4e/48X/AOuh/kK1KcXdXIqwUJuK6BRRWRr92Y41t42I Zxlsf3fT8f6USdlcKVN1JKKLxvrfDEOWVerIjMo79QMVLDNHOgeJw6+oNVdFUDTIiAASWJ9+TWLB cNp2oSBGJjVyrA85UH+dQ52s2bxw6m5RjuvxOooprusaM7nCqCSfaufnv7nU5xbW/wC7RiQBnBIx 3P58fzqpSSMqVGVTyS6m1Pe21ucSzKpzgr1I/AVOpDKCM4IzyMVXs7KCzXES/N3duWP40t7cG3g3 IoaR2CRqe7Gnd7slxi2owFuLy3tcedKFJ6DqfyFFveW91nyZQxHUdD+RrJ/sGV1LvcgynJIwSCfr /wDWrLDS2txlSUljbHHY1m5yW6OuGGpVE1CV2djRUcEnnQRy4xvUNj0yKkrU4WrOwUUUUCCiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKgvv+PG4/65 t/Kp6gvv+PG4/wCubfypPYqHxI5ex/4/rf8A66L/ADrr65Cx/wCP63/66L/OuvrOlsd2P+JGVDaJ eW95E5I/0pypHY1hyxyW1wyNlXjbqOPxFdHpf/L3/wBfL/0o1WwF5AWRR56j5TnGfak4XV0OniPZ 1HGWzDSr8XkAV2HnqPmGMZ96NL/5e/8Ar5f+lc7DLJaXAkUbZEPRh+BBrf0WTzoJ5cY3zs2PTIFO Er2TFiKHs1KUdmP1n/kGTf8AAf8A0IVh6S6R6jEzsFUZyWOB0Nbms/8AIMm/4D/6EKw9JRJNRiV1 DKc5DDI6GlP40XhrfV5X8/yNS71KOW5t7eBtwMy72HThun/161SoJBIBIOR7VmXunxx3FvcQRhMT KHC8DGQAf8+talaRvd3OOrycseQ5PUpDJqE7NjIcrx7cf0rd0RFXTYyBgsST7nOP6CsLUozHqE6t jJctx78/1re0VgdMiAIJBYH25NZQ+Jnbiv4EbeX5F6uc19FW/BAwWQE+55H9BXR1zviBgb5QCCRG Afbk1dT4TnwX8UteHJCYpo+MKwYfj/8AqrP1n/kJzf8AAf8A0EVoeHIyIppOMMwUfh/+us/Wf+Qn N/wH/wBBFQ/gR1U7fWpW7f5G1o3/ACDIf+Bf+hGr1UdG/wCQZD/wL/0I1erWOyPOrfxJerCsvxD/ AMeKf9dB/I1oedH5/kbv3m3fjHbOKz/EP/Hin/XQfyNKfwsrDpqrEo+Hv+P5/wDrmf5itu+/48bj /rm38qxPD3/H8/8A1zP8xW3ff8eNx/1zb+VTD4TfFfx18jOutPF1psE0efNSFeOu4Y6fWse2uJLW YSxNhh+RHoa6mx/48bf/AK5r/KsvW9P63UCe8gH88fz/AP10pR05kaUK65nSnsX5biO60uaWJsqY 2+oOOhqWx/48bf8A65r/ACrmLa7e2SZFAKSoVYfgcH9a6ex/48bf/rmv8qqEuZmOIo+yjbpcy/En /Lv/AMC/pTPD80UPn+bKiZ243MBnrT/En/Lv/wAC/pTPD8MU3n+bEj4243KDjrUf8vDdW+qa/wBa lkagl3qltFCSY1LEnGMnaf5VqbRuDYGQMA1ljT0tNUtpYQRGxYEZzg7T/OtNnRMb2C7jgZOMn0rS N9bnJW5Lx9ntb/MzdeuJ4IYxCxRXJ3MvUY6DPbv+VGg3E88MgmYuqEbWbqc9Rnv2/OtJ0SRSrqGU 9QwyKERI1CooVR0CjAp8r5r3F7WPsuS2vcyfEU5WOKBWGGJZhnnjp+HX8qv6bGI9PgVc4KBuffn+ tY3iH/j+T/rmP5mtux/48bf/AK5r/KpjrNmtVcuHgkT1l+If+PFP+ug/kafqP9peev2L/V7efu9c n1/CsvUf7S8hftv+r3cfd64Pp+NE5aNWDD0vfjLmXpfU3rH/AI8bf/rmv8qnrBg/tnyI/K/1e0bf udMcVoab9u/efbvbZ933z0/CnGV9LGdWjy3lzL7y9RRRVnOZ2p6mtoDEgJmI44wF9Dz1rI0q4tra 4Ek6vuHAYHgZ46fn/hXSTQxzoUlQOvoRXM6nZfYrjauTGwypP6/5+lYzunc9HCunKLp7NnUqwZQy kEEZBHeqmoahHYqMqXdvur0B/GjSHZ9NhLHJwR+AJAq06JIpV1DKeoYZFa6taHFaMJ2lqkctaXES Xnn3SvId2/KkDnr0+v0rqIpEmjWSNgyMMgiud1fT1s3V4gfKfPXnB9P8+hrS0B2awIJyFcgew4P9 TWULp8rO3FKNSmqsSPxFGDbRSc5V9o/Ef/Wq5pc5uLCJ2YM4G1uc9PX3xiq3iH/jxT/roP5Gjw9/ x4v/ANdD/IVX2zJq+GT7M1K5/wAQXBe4WAN8sYyRz94//Wx+ddBXL6z/AMhOb/gP/oIoqP3QwUU6 uvRFnSpJ7W0lmSzMiE5aTzNvAHp+daNhqkN42zBjlxnaTnP0NGjf8gyH/gX/AKEa5+Ui2v3MYGIp TtB9jxU3cUjbkjXnNNarqdVPKkELyucKoyaq2UDySte3Me2Z+EUnPlr6ex/zxzVXWbsRXcUcsQli VfM2Zxlskc+3tTP+Eg/6df8AyJ/9aqclfUwhQqOF4Lcy7H/j+t/+ui/zrp7+c29nLKMgheCB0J4H 61ysEnkzxy4zsYNj1wa6m1lS+s1keIbXzlG+YcH/AOtU09mjoxqtKMmtDnoNTu4FREkARei7BitK y1wSSCO6VUyeHXoPr/jV2TTLKRstbqDjHy5X+VYup6W1n+8iJeHuT1U+9K046gpUK75bWZ0tFU9I dn02EscnBH4AkCrlbJ3Vzzpx5ZOPY5nW3ZtSkBOQoAHsMZ/qa2NG/wCQZD/wL/0I1j62jLqUhIwG AI9xjH9DWxo3/IMh/wCBf+hGsofGz0MRb6tC3l+Rz19/x/XH/XRv51pa1vmsbS5OBkcgerAH+hrN vv8Aj+uP+ujfzrp4oA1jHBOgI8tVZT9KUVe6NK01T9nL+tij4ddTayoD8wfJHsQMfyNZus/8hOb/ AID/AOgitSLSHtpmktbsx5GPmjDHFYdwxnu5CrNKWchSerc8USuopMKHLKtKpF6WOi0b/kGQ/wDA v/QjVLxJ/wAu/wDwL+latnALa1jh4yq84Pfv+tZXiT/l3/4F/SrlpA5aDUsTdd3+pP4e/wCPF/8A rof5CtSsvw9/x4v/ANdD/IVqVUPhRliP4sgrA8RRkXMUnGGTaPwP/wBet+orm3juoTFKuVP5g+oo krqwqFT2c1JlXRHVtNjAOSpIPsc5/qK5++/4/rj/AK6N/OtuHTnsfMkjvTHF95x5YJ2j3/8ArVhR RyXNwqLlnkbqefxNYzvZJnoYfl55zi9DR1S4I0+zt1b70asw56Y4/r+VN0Xz42klhtTMcBd2/bj1 HPXtSa8ix3USIMKsIAHtk1f8Pf8AHi//AF0P8hTSvMUmo4e6W46y1iG6kEToYnY/Lk5B/H1rRKgk EgEg5HtXLauipqUwUYGQfxIBNdLbSGW2ikbALoGOPcVcJN3TOXEUoxUZw2ZLXM6gputYkjh5LMF6 HggAH8sGtrULpoVEMHzXMnCKBnHuaTTdPSyjycNKw+Zv6D2okubQKMvYp1Hu9i1FGIokjXJCKFGf an0xJEkLhGDbG2tjsfSn1ocrvfUKKKKBBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFVtSkSKxmLsF3IVHuSOBVmontreRizwRsx6lkBNJ7FQaUk2cp ZsFvIGYgASKST25rrt6bPM3DZjO7PGPXNRfY7X/n2h/79infZrfZ5fkR7M527BjPriohFxOivWjW aexS0ieKRrpUcEmZnA9VOOa0qg+x2v8Az7Q/9+xU9XFNLUxqSjKV4mTrOmtP/pEAzIBhlA+8PX60 7w9/x4v/ANdD/IVqVFBBFbqywoEDNuIHrU8vvXNPbt0vZsq626Lp0ilgGbG0E8nkdKxNJdI9RiZ2 CqM5LHA6Gule2t5GLPBGzHqWQE037Ha/8+0P/fsUpRbdzSlXjCm4W3J6Kjihihz5USJnrtUDNSVo cjt0MzWNPa7VZYVzMvGM4ytVdEvEtzJbTkR/NkFuMHuD6dK3ahntYLkfvolc4xnHP59ahx1ujohX XJ7Oew6aaOBC8rhF9Sa5t45tVvpZIU4JHJ4CjoM1trpNirAiAZBzyxP9atoiRqFRQqjoFGBQ4uW4 6daNG7hq/MZbwJbQLDHnao4ya5rVnSTUZWRgynGCpyOgrqHRJFKuoZT1DDIqL7Ha/wDPtD/37FEo 3VkKhWVOTnLVsp6Rd26afGjzxoykghmA7k9/rUt1q1rbr8riV8cBDn8zU/2O1/59of8Av2KPsdr/ AM+0P/fsUWklYTlSlNyaZR0NpJjc3MhBMjgfTH9ORTfEUifZo4tw3l9232wea1I4o4l2xoqDOcKM VH9jtf8An2h/79ijlfLYarR9r7Row9AdEvm3sF3IQMnGTkcVtalIkVjMXYLuQqPckcCnfY7X/n2h /wC/YpzW1u+N8EbbRgZQHA9KIxaVh1asalRTI9NkSWxhKMG2oFPsQORVmoktreNgyQRqw6FUANS1 S2OebTk2jnNX01rZ2niGYWOTgfcPp9K3LH/jxt/+ua/yqSWNJo2jkUMjDBBpURY0VEGFUAAe1So2 d0bVK7qQUZboxPEbozQKGBZd24A8jp1pugXEMLTiWRULBSNxxnGf8a2Psdr/AM+0P/fsUfY7X/n2 h/79ilyvm5jRV4ey9lZ/1qNk1CzjXLXEZGcfKd38qzIL19Q1aIbT5CEsFxnHBwx984+lav2O1/59 of8Av2KdHbwxNujhjQ4xlVAptNmcZ04J2TuUtZvpbSONYcBpCfm64xjt+NGjX0t3HIs2C0ZHzdM5 z2/Crs8EVzH5cyB1znFEEEVtH5cKBFznFFnzXvoLnp+y5eX3u5m+ILcvAlwoGYzhuOx/+v8Azq7p cnm6dA2MYXb+XH9KsOiyIyOMqwII9qz7YNpjtDKSbYndHKc/KSQNp9PrwP6FrSuUpc9Lk6rY0qy/ EP8Ax4p/10H8jWpTJIo5V2yIrjOcMM1UldWMqU+Sal2I7H/jxt/+ua/yqekVQqhVAAAwAO1LTREn dthWTrF/c2k8axABCA2SucnJyP5VrVHNDHOhSVA6+hFKSbWhdKUYyvJXRW03UEvY8HCyqPmX+o9q qalH/aV5HbwHPk58x+y5xx9eOn/16trpNirAiAZBzyxP9atoiRqFRQqjoFGBU2bVma+0hCfPTM7V rmawt4UtgFQjbuxnbjGB/OnaZqi3n7uUBJuwHRh7VfdEkUq6hlPUMMiqf9kWP/PD/wAfb/GhqV7o IzpOnyzWvch1j/SzHZQ/NNuDt6KMHr+f+eKv2sC21ukK8hRjPqe5p0cUcS7Y0VBnOFGKJZEhjaSR gqKMkmmlZ3ZnKblFQjsZXiOTEEMWPvMWz9B/9er+nwNbWUUT/eAyfYk5x+tVoLd7y9F7PGY1QbY4 2HJ68n06/wCe+lSS15i6k7QVJdN/UKx9fs3kC3MYLbFw49B6/wA62KKqSurGdKo6clJGfocgfTkU ZyjFT+ef61lQ2v27VpcDdCJGZmHTGT3963BY26szIhjLdfLdlB/AGpYYY4ECRIEX0AqOW9kzdV1F ylDdkVxY2104eaPcwGAdxHH4VF/ZFj/zw/8AH2/xq9RV8q7GCqzSspM4+1RZLqFHGVZ1BHtmtzU2 m0+0iWyXZEpO443Y9Ov1NXltLZWDLbxAg5BCDipqiMLI6auKU5J20XQw7LXCAEuwTz/rFH8x/hVm 5mGpxfZrXJRiN8pUhVA5x9enFXPsdr/z7Q/9+xU9NRdrNmcqtPm5oRsyOCJIIUiQYVRgVJRRVnO3 d3Zla9aGWBZ0AzEDuGOSP/rf41LocgfTkUZyjFT+ef61oVXeyt3ZyUKlxh9jFd31weetRy63Rv7V On7OXQwrKD7fqjyAfug5kbcM8Z6fj/jXS01ESNQqKFUdAowKjubWG6ULMpYKcgbiP5URjyoKtVVZ K+iRm6nqPmA2ln+9ZxhmUbuPQev+fwfpWlG2cTzkGQD5VB+7x3960o4o4l2xoqDOcKMU+jl1uwda 0OSCsuvmFYXiKRGkhjVgXQEsPTOMVtuiSKVdQynqGGRUX2O1/wCfaH/v2Kck2rE0Kkac+dmf4dkT 7NJFuG8Pu2+2BzWvUH2O1/59of8Av2KmVQqhVAAAwAO1EU0rCrTjOTkuotIzBVLMQABkk9qWoJ7S C4dXmj3lOmScfl0qjNWvqZWpXr3rmzs1Mi5+ZgM55/lnv/k3NL00WQZ5GDSsMcdAKvIiRqFRQqjo FGBTqhR1uzeVb3PZwVl+Zm63ZvdW6vECzxknaO4PX8eBUXh2QG2lj5yr7j+I/wDrVr1XaytzKZQh RyMFkYrn64NDj710Ea37p05GJewNea1JHFzkgMRztAABP4Vs3VzDp1suR0G1EB5OP89alhgigB8t ApY5Y9SfqeppZYYpsebEj46blBxQo2u+o51lNxT+FHMDUbkXEk6uFkk6kKOnpzTm1a+ZSDOcEY4U D+ldF9jtf+faH/v2KPsdr/z7Q/8AfsVHJLudH1ql/J+QzTFddPh3tuZhuJznOTn+tWqRVCqFUAAD AA7UtapWRwSlzSbCiiimSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABSMoZSrAEEYIPelooAKKKKACiiigAooooAKKKKACiiigAp CoJBIBIOR7UtFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR Uc08UCh5pUjUnALsAM/jSxSRzIJInV0PRlOQfxoAfRTWZUUu7BVUZJJwAKSKSOZBJE6uh6MpyD+N AD6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKAOU0y71zU/N8i9jXy8Z3oo659FPpVq4bxBYRG5knhuI0+8ir29TwDgexqLwZ/y+f8A AP8A2auhubiO1t5J5ThI1yff2+tAFfStSj1O281AEcHDx7slfT86u1zng6GRIbmZkIjkKhGP8WM5 /nWlrWqppduG275pMiNT046k+wzQBo0VgbfEc8X2hZYYdy5EO0ZHtyDyfc9+1W9H1Zr2SW2uYxHd wk7lX7pAOOPp/n2ANSiqGr6nHpdusjJ5js2FTdjPqfp/9as+NfEd0PO82G1DYxGyjgY+hP5mgDfo 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 RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBxfh+xnvftHkX0lrs252Z+bOfQj0/Wp7yyayv4Tq8s15 ZHIWQsflJ9RnP5Hn8MVP4M/5fP8AgH/s1bmo2UeoWb28h255VsZKn1oAmgWJIVECosWMqEAC4PPG K5fVrh/+EoU/ZjcGAKEjTILcbs8Z6E5/Crvhq+ceZpt0+JoWIQMcnA6qPpj1/QVDre7Ttet9SERM RADt1yeQe/XbjH0+tAFj+3b7/oCXP/j3/wATVOxW7ufEyXstlNAjZzuU4HyY64FdJb3MN1EJYJVk Q91PT2PofaootQtZ7r7PBKsr7C5KEEAZA6+vNAGFeqt94vit5lBjjAAGOoC7+c+5/KunrmNbV9O1 6DUlV/KYrvYAHnoQP+A/1rore5huohLBKsiHup6ex9D7UAJeStBZzzIAWjjZgD0yBmuU0C+msoJT BpstyXb5pEJxwOB0Pqfzrqlktr+GVEdZojmN9p4ORyMj2Pauf8O3q6dJPp99iBt24F+BnHIJ6dAM f/qoAmutXvri1mg/sa5XzEZM/McZGP7tT+GLaSPS5YrmBk3SnKSJjIKjse1a008UCh5pUjUnALsA M/jTbS5jvLdZ4STGxIBIxnBIz+lAGFoBNhq95prkhc7o9zjt049SpB/Cna+7X2qWmlocpuDybWGf /rELk/jS6+v2HUrPVEUgBtkpUDkfT1I3D8B0p3h8G8vr3VGY4djGgOAQvB5H02/rQBJ4pfyNGEUa qEd1jwB0A54/75FVNP1W6tbGGGHRp3RVGGBbDZ5J+7361p+ILVrvSpEjjMkiEOgHXIPP14zUPh7U 4bmyit2dVniUJsPG4AcEevA5oAzNYu77U7VYP7JuYtrh87WbsR/dHrXRacrJp1qjqVZYUBBGCDgU l7qFrYozTyqGC7ggI3N9BSanfx6baGeQFudqqP4m9PagChr+pvFtsbJ/9LlYKcdVB9+xPH/1uKu6 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 TP16DPtWp4k/5Adz/wAB/wDQhQAeG/8AkB23/Av/AEI1l3Sv4f1cXMSubKc/OqgAA88fh1HT09a1 PDf/ACA7b/gX/oRq1f2cd/aPBKB8w+ViM7W7GgDB8YsrrZOjBlYOQQcgj5a6evPr5riILYT4/wBF ZgvGOuPzHGR9a9BoAKKz9P1i01CeSGDfuQZyy4DDOMj9OuOtaFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFAFWy0+1sN/2WLy9+N3zE5x06n3q1RRQBVfT7WS8W7aLE64w6sQfxwe fSpp4Y7iFoZkDxuMFTUlFAGG3hawZiQ86gnIUMMD25FaNjptpYLi3iAbGC55Y9O/4dOlW6KAI54Y 7iFoZkDxuMFTWTL4X093LK00YP8ACrjA/ME1tUUAVrGxgsIPJt1IXOSScknAGf0qPUdKtNRAM6EO BgSKcMB/n19au0UAYsXhfT0cMzTSAfws4wfyANa8UccKCOJFRB0VRgD8KfRQBDdWsF5D5NxGJEzn B4wfrS21vFawLBAuyNc4GScZOe9S0UAFZd74fsbyYzMHidiSxjONx9wQa1KKAMm08O6fbPvKNOe3 mkED8MY/Orl7p9rf7PtUXmbM7fmIxnr0PtVqigDM/wCEe0v/AJ9f/Ijf406LQtNhlSWO2w6MGU72 4I/GtGigAooooAqXmmWd8yvcwB2UYByQcfhU1tbxWsCwQLsjXOBknGTnvUtFAGff6NZX7NJLGVlI A8xDg8fp7ciq9v4a0+CUSMJJsdFkYEZ+gAzWxRQA1VVFCIoVVGAAMACq9/p9tqEQjuE3YztYHBU+ xq1RQBj2/hrT4JRIwkmx0WRgRn6ADNXoNPtbe6kuYots0mdzbic5OTxn1q1RQAVnromnJOJ0tgsi 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 0qeigAqqmn2sd413HFsmbO5lYgHPqM4/zmrVFAFX+z7X7d9t8r/SP7+4+mOmcdKtUUUAFFFFAGZe 6DYXjtIyNHIzbmaNsZ/A8fpUEXhfT0cMzTSAfws4wfyANbVFAEcEMdvCsMKBI0GAopZY0mieKQZR 1KsPUGn0UAQWdnb2MRito9iFtxGSefx+lT0UUAUzpdkZ5ZvJxJKpVyrMAwIwcgHH+c1LZ2dvYxGK 2j2IW3EZJ5/H6VPRQAVHPDHcQtDMgeNxgqakooAgs7O3sYjFbR7ELbiMk8/j9Kdc28V1A0E6742x kZIzg57VLRQBFbW8VrAsEC7I1zgZJxk57028s7e+iEVzHvQNuAyRz+H1qeigDOi0LTYZUljtsOjB lO9uCPxrRoooAzL3QbC8dpGRo5GbczRtjP4Hj9Kgi8L6ejhmaaQD+FnGD+QBraooAjghjt4VhhQJ GgwFFJc28V1A0E6742xkZIzg57VLRQBFbW8VrAsEC7I1zgZJxk571LRRQBSutIsLybzp7cNIRgsG Iz+Rq7RRQBVtdOtLOV5beBY3k+8R/Ieg9hVqiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoqOWaKHHmyomem5gM0z7 Za/8/MP/AH8FK6KUZPZE9FQfbLX/AJ+Yf+/go+2Wv/PzD/38FF0HJLsT0VB9stf+fmH/AL+Cj7Za /wDPzD/38FF0HJLsT0VB9stf+fmH/v4KPtlr/wA/MP8A38FF0HJLsT0VB9stf+fmH/v4KPtlr/z8 w/8AfwUXQckuxPRUH2y1/wCfmH/v4KPtlr/z8w/9/BRdByS7E9FQfbLX/n5h/wC/go+2Wv8Az8w/ 9/BRdByS7E9FQfbLX/n5h/7+Cj7Za/8APzD/AN/BRdByS7E9FQfbLX/n5h/7+Cj7Za/8/MP/AH8F F0HJLsT0VB9stf8An5h/7+Cj7Za/8/MP/fwUXQckuxPRUH2y1/5+Yf8Av4KPtlr/AM/MP/fwUXQc kuxPRUH2y1/5+Yf+/go+2Wv/AD8w/wDfwUXQckuxPRUH2y1/5+Yf+/go+2Wv/PzD/wB/BRdByS7E 9FQfbLX/AJ+Yf+/go+2Wv/PzD/38FF0HJLsT0VB9stf+fmH/AL+Cj7Za/wDPzD/38FF0HJLsT0VB 9stf+fmH/v4KPtlr/wA/MP8A38FF0HJLsT0VB9stf+fmH/v4KPtlr/z8w/8AfwUXQckuxPRUH2y1 /wCfmH/v4KPtlr/z8w/9/BRdByS7E9FQfbLX/n5h/wC/go+2Wv8Az8w/9/BRdByS7E9FQfbLX/n5 h/7+Cj7Za/8APzD/AN/BRdByS7E9FQfbLX/n5h/7+Cj7Za/8/MP/AH8FF0HJLsT0VB9stf8An5h/ 7+Cj7Za/8/MP/fwUXQckuxPRUH2y1/5+Yf8Av4KPtlr/AM/MP/fwUXQckuxPRUH2y1/5+Yf+/go+ 2Wv/AD8w/wDfwUXQckuxPRUH2y1/5+Yf+/go+2Wv/PzD/wB/BRdByS7E9FQfbLX/AJ+Yf+/go+2W v/PzD/38FF0HJLsT0VB9stf+fmH/AL+Cj7Za/wDPzD/38FF0HJLsT0VB9stf+fmH/v4KPtlr/wA/ MP8A38FF0HJLsT0VB9stf+fmH/v4KPtlr/z8w/8AfwUXQckuxPRUH2y1/wCfmH/v4KPtlr/z8w/9 /BRdByS7E9FQfbLX/n5h/wC/go+2Wv8Az8w/9/BRdByS7E9FQfbLX/n5h/7+Cj7Za/8APzD/AN/B RdByS7E9FQfbLX/n5h/7+Cj7Za/8/MP/AH8FF0HJLsT0VB9stf8An5h/7+Cj7Za/8/MP/fwUXQck uxPRUH2y1/5+Yf8Av4KPtlr/AM/MP/fwUXQckuxPRUH2y1/5+Yf+/go+2Wv/AD8w/wDfwUXQckux PRUH2y1/5+Yf+/go+2Wv/PzD/wB/BRdByS7E9FQfbLX/AJ+Yf+/go+2Wv/PzD/38FF0HJLsT0VB9 stf+fmH/AL+Cj7Za/wDPzD/38FF0HJLsT0VB9stf+fmH/v4KPtlr/wA/MP8A38FF0HJLsT0VB9st f+fmH/v4KPtlr/z8w/8AfwUXQckuxPRUH2y1/wCfmH/v4KPtlr/z8w/9/BRdByS7E9FQfbLX/n5h /wC/go+2Wv8Az8w/9/BRdByS7E9FQfbLX/n5h/7+Cj7Za/8APzD/AN/BRdByS7E9FQfbLX/n5h/7 +Cj7Za/8/MP/AH8FF0HJLsT0VB9stf8An5h/7+Cj7Za/8/MP/fwUXQckuxPRUH2y1/5+Yf8Av4KP tlr/AM/MP/fwUXQckuxPRUH2y1/5+Yf+/go+2Wv/AD8w/wDfwUXQckuxPRUH2y1/5+Yf+/go+2Wv /PzD/wB/BRdByS7E9FQfbLX/AJ+Yf+/go+2Wv/PzD/38FF0HJLsT0VB9stf+fmH/AL+Cj7Za/wDP zD/38FF0HJLsT0VB9stf+fmH/v4KPtlr/wA/MP8A38FF0HJLsT0VB9stf+fmH/v4KPtlr/z8w/8A fwUXQckuxPRUH2y1/wCfmH/v4KPtlr/z8w/9/BRdByS7E9FQfbLX/n5h/wC/go+2Wv8Az8w/9/BR dByS7E9FQfbLX/n5h/7+Cj7Za/8APzD/AN/BRdByS7E9FQfbLX/n5h/7+Cj7Za/8/MP/AH8FF0HJ LsT0VB9stf8An5h/7+Cj7Za/8/MP/fwUXQckuxPRUH2y1/5+Yf8Av4KPtlr/AM/MP/fwUXQckuxP RUH2y1/5+Yf+/go+2Wv/AD8w/wDfwUXQckuxPRUH2y1/5+Yf+/go+2Wv/PzD/wB/BRdByS7E9FQf bLX/AJ+Yf+/go+2Wv/PzD/38FF0HJLsT0VB9stf+fmH/AL+Cj7Za/wDPzD/38FF0HJLsT0VB9stf +fmH/v4KPtlr/wA/MP8A38FF0HJLsT0VB9stf+fmH/v4KPtlr/z8w/8AfwUXQckuxPRUH2y1/wCf mH/v4KPtlr/z8w/9/BRdByS7E9FQfbLX/n5h/wC/go+2Wv8Az8w/9/BRdByS7E9FQfbLX/n5h/7+ Cj7Za/8APzD/AN/BRdByS7E9FQfbLX/n5h/7+Cj7Za/8/MP/AH8FF0HJLsT0VB9stf8An5h/7+Cj 7Za/8/MP/fwUXQckuxPRUH2y1/5+Yf8Av4KPtlr/AM/MP/fwUXQckuxPRUH2y1/5+Yf+/go+2Wv/ AD8w/wDfwUXQckuxPRUH2y1/5+Yf+/go+2Wv/PzD/wB/BRdByS7E9FQfbLX/AJ+Yf+/go+2Wv/Pz D/38FF0HJLsT0VB9stf+fmH/AL+Cj7Za/wDPzD/38FF0HJLsT0VB9stf+fmH/v4KPtlr/wA/MP8A 38FF0HJLsT0VB9stf+fmH/v4KPtlr/z8w/8AfwUXQckuxPRUH2y1/wCfmH/v4KPtlr/z8w/9/BRd ByS7E9FQfbLX/n5h/wC/go+2Wv8Az8w/9/BRdByS7E9FQfbLX/n5h/7+Cj7Za/8APzD/AN/BRdBy S7E9FQfbLX/n5h/7+Cj7Za/8/MP/AH8FF0HJLsT0VB9stf8An5h/7+Cj7Za/8/MP/fwUXQckuxPR UH2y1/5+Yf8Av4KPtlr/AM/MP/fwUXQckuxPRUH2y1/5+Yf+/go+2Wv/AD8w/wDfwUXQckuxPRUH 2y1/5+Yf+/go+2Wv/PzD/wB/BRdByS7E9FQfbLX/AJ+Yf+/go+2Wv/PzD/38FF0HJLsT0VB9stf+ fmH/AL+Cj7Za/wDPzD/38FF0HJLsT0VB9stf+fmH/v4KPtlr/wA/MP8A38FF0HJLsT0VB9stf+fm H/v4KPtlr/z8w/8AfwUXQckuxPRUH2y1/wCfmH/v4KPtlr/z8w/9/BRdByS7E9FQfbLX/n5h/wC/ go+2Wv8Az8w/9/BRdByS7E9FQfbLX/n5h/7+Cj7Za/8APzD/AN/BRdByS7E9FQfbLX/n5h/7+Cj7 Za/8/MP/AH8FF0HJLsT0VB9stf8An5h/7+Cj7Za/8/MP/fwUXQckuxPRUH2y1/5+Yf8Av4KPtlr/ AM/MP/fwUXQckuxPRUH2y1/5+Yf+/go+2Wv/AD8w/wDfwUXQckuxPRUH2y1/5+Yf+/go+2Wv/PzD /wB/BRdByS7E9FQfbLX/AJ+Yf+/go+2Wv/PzD/38FF0HJLsT0VB9stf+fmH/AL+Cj7Za/wDPzD/3 8FF0HJLsT0VB9stf+fmH/v4KPtlr/wA/MP8A38FF0HJLsT0VB9stf+fmH/v4KPtlr/z8w/8AfwUX QckuxPRUH2y1/wCfmH/v4KPtlr/z8w/9/BRdByS7E9FQfbLX/n5h/wC/go+2Wv8Az8w/9/BRdByS 7E9FQfbLX/n5h/7+Cj7Za/8APzD/AN/BRdByS7E9FQfbLX/n5h/7+Cj7Za/8/MP/AH8FF0HJLsT0 VB9stf8An5h/7+Cj7Za/8/MP/fwUXQckuxPRUH2y1/5+Yf8Av4KPtlr/AM/MP/fwUXQckuxPRUH2 y1/5+Yf+/go+2Wv/AD8w/wDfwUXQckuxPRUH2y1/5+Yf+/go+2Wv/PzD/wB/BRdByS7E9FQfbLX/ AJ+Yf+/go+2Wv/PzD/38FF0HJLsT0VB9stf+fmH/AL+Cj7Za/wDPzD/38FF0HJLsT0VB9stf+fmH /v4KPtlr/wA/MP8A38FF0HJLsT0VB9stf+fmH/v4KPtlr/z8w/8AfwUXQckuxPRUH2y1/wCfmH/v 4KPtlr/z8w/9/BRdByS7E9FQfbLX/n5h/wC/go+2Wv8Az8w/9/BRdByS7E9FQfbLX/n5h/7+Cj7Z a/8APzD/AN/BRdByS7E9FQfbLX/n5h/7+Cj7Za/8/MP/AH8FF0HJLsT0VB9stf8An5h/7+Cj7Za/ 8/MP/fwUXQckuxPRUH2y1/5+Yf8Av4KPtlr/AM/MP/fwUXQckuxPRUH2y1/5+Yf+/go+2Wv/AD8w /wDfwUXQckuxPRUH2y1/5+Yf+/go+2Wv/PzD/wB/BRdByS7E9FQfbLX/AJ+Yf+/go+2Wv/PzD/38 FF0HJLsT0VB9stf+fmH/AL+Cj7Za/wDPzD/38FF0HJLsT0VB9stf+fmH/v4KPtlr/wA/MP8A38FF 0HJLsT0VB9stf+fmH/v4KPtlr/z8w/8AfwUXQckuxPRUH2y1/wCfmH/v4KPtlr/z8w/9/BRdByS7 E9FQfbLX/n5h/wC/go+2Wv8Az8w/9/BRdByS7E9FQfbLX/n5h/7+Cj7Za/8APzD/AN/BRdByS7E9 FQfbLX/n5h/7+Cj7Za/8/MP/AH8FF0HJLsT0VHFNFNnypUfHXawOKkpiaa3CiiigQUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAYniT/l3/4F/SsWtrxJ/wAu/wDwL+lY tc1T4j28J/BX9dQoooqDpCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigDa8N/8vH/Af61t1ieG/wDl4/4D/Wtuumn8J4mL/jP+ugUUUVZzBRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBieJP8Al3/4F/SsWtrxJ/y7/wDAv6Vi 1zVPiPbwn8Ff11CiiioOkKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKlt7aW6cpCm5gMkZA4/Goq0/D3/AB/P/wBcz/MU4q7sZ1ZuEHJdCpcWNzaoHmj2qTgHcDz+ FOh067niEsUW5G6HcB/WtfxD/wAeKf8AXQfyNTaN/wAgyH/gX/oRrTkXNY5Hipqiqlle5gz6fdW8 fmSwlUzgnIOPyqtXX3kAubWSHjLLxk9+361y9hALi8iiOCC3IJ6gcn9KmcLOyNKGI9pByl0JV0m+ ZQRAcEZ5YD+tQ3NpPa7fPj2bs45Bzj6V19YniT/l3/4F/SqlTSVzGhi51Kii0jPh067niEsUW5G6 HcB/Wn/2Rff88P8Ax9f8a2tG/wCQZD/wL/0I0l1q1vaztC6SFlxkqBjpn1p8kbXYPE1nNwgk7GM+ kXqAnydwAz8rA1SZSrFWBBBwQe1dbZ3kN5GXiJ4OCp6is3XrMvJFNGBvdhGR0ye3+fpSlBWuiqWK k58lRWMiCCW5k8uFC7Yzir66FdlQS0SkjoWPH6VuWlulrbrEgHA5OPvHuapTa5bxz7FVpFBIZ1x+ nrT5Ipe8Q8TVqSapLQx7vT7m05kTKf315H/1vxqrXYo8dxCGUh43H4EVzGp2gs7sopBRhuX2GelT OFtUbYfEuo+WW4qaXeyIrpDlWAIO4dPzp39kX3/PD/x9f8a6Gx/48bf/AK5r/Ks6fXPJnki+zZ2M Vzv64P0qnCKWplHE1pyagk7f13KEukXsZbEQcAZyrDn6DrVaC1nnlaKOMl1GSpOMfnXT2d7DeqTE TlfvKwwR/nFRXrw2Nwt46H5lMbbepPBH8j+lDprdBHFVLuElqYv9kX3/ADw/8fX/ABo/si+/54f+ Pr/jWza6tb3U6wokgZs4LAY6Z9atXU6WsDTOCVXGQvXrihQi1e5MsVXjJRcVf+vM5p9LvY0Z3hwq gkncOn51UrdudatpbaWNUlBdCoyB3H1rO0iAz6hH1wh3nB6Y6friocVeyOqnVnyOVRWsL/ZF9/zw /wDH1/xqrNDJBKYpV2uvUZzXZVh+IoDuiuBnGNh56dx/WqlTSV0YUMXKpPllYx0RpHVEGWYgAe9X P7Ivv+eH/j6/41BY/wDH9b/9dF/nXX0oQUtzTE4iVJpROKqxb2NzdIXhj3KDgncBz+NXNdszFP8A aUA2SHB9m/8Ar/41d8Pf8eL/APXQ/wAhSUPesyqmItS9pEyE067eWSJYsvHjcNw4z070/wDsi+/5 4f8Aj6/41oPfxWOp3fmq537MbQOy/wD16t2epw3spjjWQELu+YD/AB96pQjtcxniKyXMo6WX5epi f2Rff88P/H1/xpk2nXcERlli2ovU7gf610d5dx2UQkkDEFtvyj/PpWVqGrW91ZyQokgZsYLAY6g+ tEoRXUKWIrVGvd0/rzMeiiisj0AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooA2vDf/Lx/wH+tbdYnhv8A5eP+A/1rbrpp/CeJi/4z/roFFFFWcwUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAYniT/AJd/+Bf0rFra8Sf8u/8AwL+l Ytc1T4j28J/BX9dQoooqDpCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACtPw9/x/P/ANcz/MVmVp+Hv+P5/wDrmf5iqh8SMMR/CkXvEP8Ax4p/10H8jU2jf8gyH/gX /oRqHxD/AMeKf9dB/I1No3/IMh/4F/6Ea2Xxnmy/3ZepbjkEillzgMV59iR/SqdpZGHUrqcg7X+4 SRznk/rTNKmBub2HgETM4565OOn4frWlVL3tTKV6TcV1/wCHGCQGVo+cqoY/jn/CsfxJ/wAu/wDw L+lWNKnFxeX0owQWXBA6gZA/Sq/iT/l3/wCBf0qZO8Lm9CHJiFH+ti7o3/IMh/4F/wChGqmoaTcX V5JMjxhWxgMTnoB6Vb0b/kGQ/wDAv/QjUN7rH2W6eDyN+3HO/GcjPpQ7cquKLqKtL2e+v5k+m6eL BZP3hkLkZOMdP/10t1IhvrSAgMSxfnthTjj/AD0rNm1+RkIihEbH+Itux+lVtNnLatFLM5LMxBJ9 SCBS51okaLD1HzVKm9n+R0N5IYbSaQMFKoSCfXHH61yFdhcxmW2ljXALoVGfcVx9TV3RpgLcsjoP D0ga0eMsSUfOPQEf45qHxJ/y7/8AAv6VY0BGWwJIwGcke44H9DVbxIw3W65GQGJH5VT/AIZnC31v Tz/I1bH/AI8bf/rmv8qzp9D86eSX7TjexbGzpk/WtGx/48bf/rmv8qyZ9buIbqSPy4yiOV6HJAP1 py5bLmMqSqucvZmlp9gljGwVi7sfmbpn04ql4imAiih4JLbzz0xx0/H9K11YMoZSCCMgjvXIXiSJ dSJKzO6tjc3U+h/KlN8sbIvCp1KrnJ6osaN/yE4f+Bf+gmtrWf8AkGTf8B/9CFYujf8AITh/4F/6 Ca2tZ/5Bk3/Af/QhSh8DNMR/vEPl+ZzFbvh6DbDJORy52rkdh6H/AD0rCrr7OAW1rHDxlV5we/f9 ammru5rjZ8tPl7lZ7w/2zHbDldhB6jDdfx4A/OpdTg+0WMqAZYDcvGTken8vxpTp9q1x57Rky7t2 4sev51Zraz1uec5xTi4dPzOQsf8Aj+t/+ui/zrqbm4S28syEBXfaWJ6cH/CueMAt9aSIYAEy4APQ Egj9K0/EP/Hin/XQfyNZw91M7cQlVqQXRl+4gS5gaGTO1hzg1T0SJ4LeaJxhlmIP5CnaPeG7ttr/ AOsjwp68jsav1orP3jik5U06TOX1n/kJzf8AAf8A0EVN4e/4/n/65n+YqHWf+QnN/wAB/wDQRU3h 7/j+f/rmf5isV8Z6c/8Advki94h/48U/66D+Rrnq6HxD/wAeKf8AXQfyNc9RU+IMF/CCiiiszrCi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDa8N/8vH/AAH+ tbdYnhv/AJeP+A/1rbrpp/CeJi/4z/roFFFFWcwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAYniT/l3/AOBf0rFra8Sf8u//AAL+lYtc1T4j28J/BX9dQoooqDpCiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACtPw9/wAfz/8AXM/zFZla NjaxmFZhqS27sCCucEc/UelVHcxr29m0+poeIf8AjxT/AK6D+RqbRv8AkGQ/8C/9CNUJLOOVdsms q4znDNn/ANmoS0SNQqa0FUdArYH/AKFWt3zXscDjF0lTv1vsyK2nMGvP1w8rIcDrk8fritnUJfIs ZpMkHbgFeoJ4H86x2022ZizapESTkk45/wDHqkks45V2yayrjOcM2f8A2akm0mi6kac5RlfbyY7w 3/y8f8B/rR4k/wCXf/gX9KZFYxQ58rWETPXaQM/+PUS2MU2PN1hHx03EHH/j1LXl5R3h7f2t/wAH 2saGjf8AIMh/4F/6EaxdZ/5Cc3/Af/QRVtLRI1CprQVR0Ctgf+hUx9Ot5GLPqsbMepYgn/0KiV3F IKThCrKd9/JmVQrFWDKSCDkEdq0/7Ltf+gnD+n+NH9l2v/QTh/T/ABqORnV9Yp/0n/ka+n3yXkCn KiXHzID09/pRLplnNI0jwgsxySGIz+RrJXTbZWDLqkQIOQRjj/x6rab0UKNbjIH94KT+ZNbJ3XvI 8+VNRlelK3yf+RoySQ20WXZY0UYHb8BXLX1ybu6eU5wThQew7VfksIZW3SatG5xjLEH/ANmpn9l2 v/QTh/T/ABqJ80jagqVLVu79Gbdj/wAeNv8A9c1/lXL33/H9cf8AXRv51prbBVCrrYAAwAH6f+PV E2m2zMWbVIiScknHP/j1ErtWCg4U5OTe/kzR0S4M9kFYjdEdvXt2/wAPwql4htysiXKgYYbW479v 0/lSRWMUOfK1hEz12kDP/j1LJZxyrtk1lXGc4Zs/+zU3dxsxRUIVeeL09GVNG/5CcP8AwL/0E1ta z/yDJv8AgP8A6EKzU063jYMmqxqw6FSAf/Qqe9okilX1oMp6hmyP/QqUbqLQ6rhOrGd9vJlPSIDP qEfXCHecHpjp+uK3dVuDbWLsrYdvlXr1P/1s1mR2EMTbo9WjQ4xlSB/7NTpLOOVdsmsq4znDNn/2 anG6Vgq8lSopN6LyZm/bLr/n5m/7+Gt/RLk3Fnh2LOjEElsk9wf6fhWb/Zdr/wBBOH9P8akisYoc +VrCJnrtIGf/AB6lHmTKrOlUjZafJ/5FnVYD9vsrgZx5ioeenOR/Wl8Q/wDHin/XQfyNVmtEfG/W g205GWzg+v3qJLOOVdsmsq4znDNn/wBmpu+uhnFRTi3LbyZnWNybS6SUZwDhgO4711qsGUMpBBGQ R3rnv7Ltf+gnD+n+NSpaJGoVNaCqOgVsD/0KiF4jxCp1WmnZ+jKms/8AITm/4D/6CKm8Pf8AH8// AFzP8xTn063kYs+qxsx6liCf/QqWOwhibdHq0aHGMqQP/Zqmz5rmrnB0vZ36W2Zb8Q/8eKf9dB/I 1z1bElnHKu2TWVcZzhmz/wCzVWurC3hgaRL6OVhjCLjJ5+tE027jw8oU4qF/wZQooorM7AooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA2vDf/AC8f8B/rW3WJ 4b/5eP8AgP8AWtuumn8J4mL/AIz/AK6BRRRVnMFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFAGJ4k/5d/+Bf0rFra8Sf8ALv8A8C/pWLXNU+I9vCfwV/XUKKKKg6QooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA2vDf/Lx/wH+t bdYnhv8A5eP+A/1rbrpp/CeJi/4z/roFFFFWcwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAYniT/AJd/+Bf0rFra8Sf8u/8AwL+lYtc1T4j28J/BX9dQoooqDpCiiigD R0jTheM0kufKU44OMn0+mK05dSsbFjCi8g/MsSjAP6U+1/0XR1ZOSsJcbvXGa5itW+RKx58Y/WZy cnojp9tjq0RbAYgYJ6Mv+fyrnbu3NrcvCzBip6jv3pIriaAMIpGTcMHacZpQZbqdFeQu7EKC7E4y amUlL1N6VKVJvX3SKiuk2W2jWfmbd79N2OWJ7Z7DiiCW21i3ZZIsMvBHUrnoQfwp+z6X1I+t6cyj 7vc5uirccDW2rRwtyVmUZ9RkYNdDerAgW6nBIgBKjrycfrSULl1MQoNJK9zloI/OnjizjewXPpk1 q6rYQWdinlKdxkALMck8GrKavby3cARX+YFeVGQSRj+X8quXl3HZRCSQMQW2/KP8+lWoxs9TmqV6 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 pyhVcrNp9hJdQtobAwR208aSIwj3Lwc+5PvTfDf/AC8f8B/rTNR1aOS3NvaqVU/KWxgbfao9Eu4L XzvPk2btuOCc4z6UXXMtQdOXsJe7q/n1IdZ/5Cc3/Af/AEEVd8N/8vH/AAH+tZ+pzRz38ksTbkbG DjHYVPo19FaSSLNkLIB83XGM9vxpJrnua1ISeG5UtbIj1n/kJzf8B/8AQRW1o3/IMh/4F/6Eaoan cadPDI8RDXDAAHaR3H9KTSdUjt4fIuMhQSVYDIA9D+P86pNKe5jUjOpQSSd1/kZ1j/x/W/8A10X+ dbfiH/jxT/roP5GoJr7Trd2ntY/MuGydxBwCe/P9KbrN9bXVqqQybmDgkbSOMH1pKyi1cqTlUqwl ytId4b/5eP8AgP8AWqWs/wDITm/4D/6CKm0S7gtfO8+TZu244JzjPpVbU5o57+SWJtyNjBxjsKTa 5Ei4Rl9ZlK2lv8jb0ModOQJjIYhuO+f8MVnNLpCsVaznBBwQSeP/AB6oNM1BrFyGBeJuqg9D61oN caNM4mkAD9SNjdevIHBqk00jKVOVOpJtNp9iPUb+H7CbRYJ4jtUKJFxwCPf2rGrT1TVRdxrFCrKm csW4J9uO1ZlZzd2dWHg4w1VgoooqTcKKKKANrw3/AMvH/Af61t1ieG/+Xj/gP9a266afwniYv+M/ 66BRRRVnMFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGJ4k/5d/8A gX9Kxa2vEn/Lv/wL+lYtc1T4j28J/BX9dQoooqDpCiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigArY0a+trW1ZJpNrFyQNpPGB6Vj0U4y5Xczq01Ujyslu nWS6mdDlWdiD7ZqKiikWlZWCiiigYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAWtMmjgv45ZW2oucnGexqzrd3BdeT5Em/buzwRjOPWsyinzO1jJ0ouoqnVBRRRSNQooooAK KKKACt3SdUgS2SCdyjqcAtyCO3PbFYVFOMnF3RlVpRqx5ZG6ljpSTCT7SjAHOxpVK1Bq+pxXMQgg LEbss3QH2x/npWTRVOelkZxw/vKUm3YKKKKg6QooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooA2vDf/AC8f8B/rW3WJ4b/5eP8AgP8AWtuumn8J4mL/AIz/AK6BRRRVnMFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGJ4k/5d/+Bf0rFra8Sf8ALv8A8C/pWLXN U+I9vCfwV/XUKKKKg6QooooAKKkt4TPcRxLnLsBkDOPeuile20e2XbHktwAMbmPqT/nrVRjfUwq1 vZtRSu2Znh7/AI/n/wCuZ/mKPEP/AB/J/wBcx/M1o6ddW17O8yxeXcBcNz1Gf16DtWf4gIF/GSAw EY4Pfk1bVoHNCTlibtWdi/qU8dxo80kRLJkAHBGfmHrXOVcvr4XEaQQxCKCM/Kvc+5q9oumxvELm YB92QqEZA7ZNJ+/LQ0p2w1JuXcxaK6KPWIJ7r7OYyY3O0Oed31Hoaoa1YJbMs8IxG5wV7Kfb9aTh pdMuFduShONmzMord0ezhS0+2OhlcgkDGcYPYevFPj1hHn+z3VuYQwwd5z19QR0oUNNWKWIfM1CN 7HP0Vd1U2bzK9mwwRhlVSoB9f8+laljaQWNj9ouIwZAN5LDlfQDPQ/1pKN3YqddRgpNavoc9RXRW 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 ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGrpEVg8Be6MfmB+N744wO2asaxqURtzBbyBmY4Yr0A+ v+e9YVFXz2Vkc7w6lU55O4VsaNfW1rask0m1i5IG0njA9Kx6KmMuV3NKtNVI8rJbp1kupnQ5VnYg +2aioopFpWVgooooGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABW7pmo2kFhHFLLtdc5G0nu fasKinGTi7oyq0o1Y8sgooopGoUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF WtMmjgv45ZW2oucnGexqrRQnZ3FKKlFxfU09bu4LryfIk37d2eCMZx61mUUU27u5NOmqcVFBRRRS LCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKANrw3/y8f8B/ rW3WJ4b/AOXj/gP9a266afwniYv+M/66BRRRVnMFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFAGJ4k/wCXf/gX9Kxa2vEn/Lv/AMC/pWLXNU+I9vCfwV/XUKKKKg6Qoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA2vDf/Lx/wAB /rW3WJ4b/wCXj/gP9a266afwniYv+M/66BRRRVnMFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFAGJ4k/5d/wDgX9Kxa6fUtP8At/l/vfL2Z/hznOPf2ql/wj//AE9f+Q// AK9YTg27o9TD4inCmoyepi0Vtf8ACP8A/T1/5D/+vR/wj/8A09f+Q/8A69T7ORv9bo9/zMWitr/h H/8Ap6/8h/8A16P+Ef8A+nr/AMh//Xo9nIPrdHv+Zi0Vtf8ACP8A/T1/5D/+vR/wj/8A09f+Q/8A 69Hs5B9bo9/zMWitr/hH/wDp6/8AIf8A9ej/AIR//p6/8h//AF6PZyD63R7/AJmLRW1/wj//AE9f +Q//AK9H/CP/APT1/wCQ/wD69Hs5B9bo9/zMWitr/hH/APp6/wDIf/16P+Ef/wCnr/yH/wDXo9nI PrdHv+Zi0Vtf8I//ANPX/kP/AOvR/wAI/wD9PX/kP/69Hs5B9bo9/wAzFora/wCEf/6ev/If/wBe j/hH/wDp6/8AIf8A9ej2cg+t0e/5mLRW1/wj/wD09f8AkP8A+vR/wj//AE9f+Q//AK9Hs5B9bo9/ zMWitr/hH/8Ap6/8h/8A16P+Ef8A+nr/AMh//Xo9nIPrdHv+Zi0Vtf8ACP8A/T1/5D/+vR/wj/8A 09f+Q/8A69Hs5B9bo9/zMWitr/hH/wDp6/8AIf8A9ej/AIR//p6/8h//AF6PZyD63R7/AJmLRW1/ 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 +vR/wj//AE9f+Q//AK9Hs5B9bo9/zMWitr/hH/8Ap6/8h/8A16P+Ef8A+nr/AMh//Xo9nIPrdHv+ Zi0Vtf8ACP8A/T1/5D/+vR/wj/8A09f+Q/8A69Hs5B9bo9/zMWitr/hH/wDp6/8AIf8A9ej/AIR/ /p6/8h//AF6PZyD63R7/AJmLRW1/wj//AE9f+Q//AK9H/CP/APT1/wCQ/wD69Hs5B9bo9/zMWitr /hH/APp6/wDIf/16P+Ef/wCnr/yH/wDXo9nIPrdHv+Zi0Vtf8I//ANPX/kP/AOvR/wAI/wD9PX/k P/69Hs5B9bo9/wAzFora/wCEf/6ev/If/wBej/hH/wDp6/8AIf8A9ej2cg+t0e/5mLRW1/wj/wD0 9f8AkP8A+vR/wj//AE9f+Q//AK9Hs5B9bo9/zMWitr/hH/8Ap6/8h/8A16P+Ef8A+nr/AMh//Xo9 nIPrdHv+Zi0Vtf8ACP8A/T1/5D/+vR/wj/8A09f+Q/8A69Hs5B9bo9/zMWitr/hH/wDp6/8AIf8A 9ej/AIR//p6/8h//AF6PZyD63R7/AJmLRW1/wj//AE9f+Q//AK9H/CP/APT1/wCQ/wD69Hs5B9bo 9/zMWitr/hH/APp6/wDIf/16P+Ef/wCnr/yH/wDXo9nIPrdHv+Zi0Vtf8I//ANPX/kP/AOvR/wAI /wD9PX/kP/69Hs5B9bo9/wAzFora/wCEf/6ev/If/wBej/hH/wDp6/8AIf8A9ej2cg+t0e/5h4b/ AOXj/gP9a26o6bp/2DzP3vmb8fw4xjPv71ereCsrM8vETU6jlHYKKKKowCiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK 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 XlvYxCW5k2IW2g4J5/D6VVi13TZpUijucu7BVGxuSfwrN8ZSsILaEAbXZmJ75AAH/oRrmoJWgnjm QAtGwYA9Mg5oA9IoorI8Sag1jYhImKzTHapHUAdT/Ifj7UATXut2FkWR5t8i9UjG49cY9AfYmq8P ifTpGIfzYhjO50yPpxmuMooA9KVldQ6MGVhkEHIIqhLrumwyvFJc4dGKsNjcEfhWX4MZit2hY7QU IGeATnP8h+VYWqf8hS7/AOuz/wDoRoA7iy1C1v8Af9ll8zZjd8pGM9Oo9qL3ULWw2fapfL352/KT nHXoPeuY8J3Ji1JoCTtnUjAA+8OQfyz+dW/Gf/Ln/wAD/wDZaANyy1C1v9/2WXzNmN3ykYz06j2q CXXdNhleKS5w6MVYbG4I/CsrwZ/y+f8AAP8A2asPVP8AkKXf/XZ//QjQB1//AAkOl/8AP1/5Db/C pLbWbC6nWCCffI2cDYwzgZ7iuCrT8N/8hy2/4F/6CaAO5ooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvPdU/wCQpd/9dn/9CNehV57qn/IUu/8Ars// AKEaAOstdLsrrSIFktow0kKZdVAbOBzn1ria6c+Ire20qKCDe9wsCqGC4VWxjv6fTFc1FG80qRRj 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 guX/AK7H/wBBWsHXb9NQ1FpY/wDVIoRDjBIHf8ya3/CKsulOSpAaYkEjqMAf0NAGR4rlWTV9gBzF GqnPryf6isareqzG41O5kLhwZCFYYwVHA/QCl1K1S2a2KHia3SXHoSOf1GfxoA7PRZVm0i1dQQBG F59V4P8AKuY8U3EkurPEx+SFQFH1AJP15/QVteEpHfSSrHIjlZV9hgH+ZNcxqzM+q3ZZix85hknP AOBQBp+F9LS6ke6nUNFGdqowBDNjnP0yPz9q6W9sbe/hMdxGG4IDY+ZfcHtVDQXjtvDqTleFV5H2 jk4J/XAqL/hK7H/nlc/98r/jQA/w/p02m3F5FLyp2FHA4YfN+vtXL6p/yFLv/rs//oRrsNN1u21K doYUlVlXcS4AGMgdj71x+qf8hS7/AOuz/wDoRoAhglaCeOZAC0bBgD0yDmt/xdIk0VhLGco6uyn1 B21iXtsbZ4hg7ZIUkUkjnI5/XNTXd19o0uyjY5eFpEOWycfKR9B2/CgDY8Gf8vn/AAD/ANmrD1T/ AJCl3/12f/0I1ueDP+Xz/gH/ALNWHqn/ACFLv/rs/wD6EaAOw06wsn061d7SBmaFCSYwSTge1W4r K0hcSRWsKOOjLGAR+NcEt/eooRLudVUYAEhAA/Otrwrd3M+oyJNcSyKISQHckZyPWgDqqKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArz3VP+Qpd/wDX Z/8A0I16FXnuqf8AIUu/+uz/APoRoAq1v+EIIZLyWVz+9iUeWM+uQTjv/wDXp+tWZk0Kwu0AzFCi vwM7SBjn2Pb3rI0u9awvo7gZ2g4cDup6/wCfUCgDrvEn/IDuf+A/+hCuLtYftF1DBu2+Y6pnGcZO K7PxEyvoM7owZWCEEHII3CuR0v8A5Clp/wBdk/8AQhQBuf8ACI/9P3/kL/7KtfR9O/sy1aDzfN3O Xzt29gPU+lX6oa3cS2ulTTwNskXbg4BxlgO9AGRrHht2lM+nquG5aHOMH/Z7Y9v/ANVc3LHJC5jl RkcdVYYI/Cu60nVYNRhUK4E4UGSPGMHvj2/xFV/FMcLaS7yBfMRh5ZPXJIyB+GePb2oA5zQLj7Pr FuSW2u3lkL3zwM+2cH8Kd4k/5Dlz/wAB/wDQRUGjxvLq1qqDJEqt+AOT+gqfxJ/yHLn/AID/AOgi gDMq7pOnSaldrGqny1IMj9Nq/wCPpW9omjWF1pUM88G+Rt2TvYZwxHY1uW9tDaxCKCJY0HZR19z6 n3oA5bxgrDUYXKnaYQAccEgnP8x+dWPBn/L5/wAA/wDZqd4yjcxWsoHyKzKT7nGP5Gs7wzeC11NU cnZOPL6nG7scfp+NAHa15nXda/eR2mmTK5BeZTGi55OeCfwzn/8AXXEwRNPPHChAaRgoJ6ZJxQBt +JY3hsNLikGHSIqw9CAtL4Yt1u7TUbdsYkVVyRnB+bBx7dam8Z/8uf8AwP8A9lo8Gf8AL5/wD/2a gDmmVkYo6lWU4IIwQas6X/yFLT/rsn/oQq14kthbavIVACygSAAk9ev6g1V0v/kKWn/XZP8A0IUA dvqdhHqVoYJCV53Kw/hb1964290a+siS8JdACfMj+ZcDrn0/Gt64117HXZre4O61+UDA5j+UHPuO f89K3VZXUOjBlYZBByCKAPNa63SL5x4ZmkL7Ht1dFdjnnGV6/UDHtWDryxJq9wkCosakABAAAdoz 0981Zhm8rwpOm3Pm3QTOenAb+lAGXAI2njEzFYiwDsOoXPJrU8S3dre3UU9rP5nybGGwjGDkdfXP 6Vj0UAdP4NmJW5gLjAKuq8Z7gn9BWX4k/wCQ5c/8B/8AQRUvhWbytYVNufNRkznp/F/SovEn/Icu f+A/+gigCTStDbU7OSdLgRsrFQpXIJwD1zx19Kzbm3ktbiSCUYeNsH39/pXVeEP+QXL/ANdj/wCg rXP69NHcavcSQuHQkAMOhwoB/lQBrfaTc+DZAxJaIrGSQB0ZcfoRWJpf/IUtP+uyf+hCtS1Vl8H3 ZKkBpgQSOoyg/oay9L/5Clp/12T/ANCFAHoVZniT/kB3P/Af/QhWnWZ4k/5Adz/wH/0IUAchptn9 vvo7bzPL35+bGcYBPT8K3P8AhEf+n7/yF/8AZVmeG/8AkOW3/Av/AEE13NAFXTbP7BYx23meZsz8 2MZySen41aoooA4/xf8A8hSL/riP/Qmq14M/5fP+Af8As1VfF/8AyFIv+uI/9CarXgz/AJfP+Af+ zUAaXiZlXRJwWALFQAT1O4H+hrk9HjeXVrVUGSJVb8Acn9BWn4p1KO5eO1t5FkiT52ZTkFu3PsP5 +1Q+FbdpdVEoyFhUsTjgkjAGe3Un8KAIfEn/ACHLn/gP/oIqXR9C/tO1af7T5W1ymNm7sD6j1qLx J/yHLn/gP/oIrc8If8guX/rsf/QVoANN8OfYL6O5+1+Zsz8vl4zkEdc+9btFFABXmdemV5nQB6ZT WZUUu7BVUZJJwAKdVDXJvI0e6fbuymzGcfe+X+tAHCSyPNK8shy7sWY+pNbGuXNlPYWUVtdea9uu wjy2XIwOef8Ad6e9YtFAG54Qk26lJGXwHiOFz94gjt3OM/rXYVwOhzeRrFq+3dl9mM4+98v9a76g DM8Sf8gO5/4D/wChCuV0GVYdZtnYEgtt49WBA/nXYa1btdaVcRJncV3AAZJIOcY98YrgVZkYOjFW U5BBwQaAPS6KrWF5Hf2iTxEfMPmUHO1u4rO1DWgupW1javljMqzMMEYzgr9f5UAZ/jKVTPbQgHci sxPbBIA/9BNV/Dd5Y2n2n7ayjzFVRlC2RzkcDp0qHxLMZtZmG8MsYCLjHHHI/MmsugArvbqb7RoU 0+3b5lqz4znGVzXBV12nTCbwnMN5Zo4ZEbOeODgfkRQBzel/8hS0/wCuyf8AoQpl9b/Zb2eDDARu Qu7qRng/lT9L/wCQpaf9dk/9CFaviXT531Qy28E0okRSxVCwB6Y4HoBQBTsrf/iR6jclf7katn/a BIx/3zR4b/5Dlt/wL/0E1qSWrWng6RJIzHI5DuD1yXGPpxisvw3/AMhy2/4F/wCgmgCz4v8A+QpF /wBcR/6E1Ydbni//AJCkX/XEf+hNR4Y0+1v/ALT9qi8zZt2/MRjOc9D7UAY8EMlxMsMKF5HOAorv I400rSSqDeLeIt6biBk+uMmn2thaWYxbwJGcY3AZYjr161U8SzCHRphvKtIQi4zzzyPyBoA4etrx NeWV9LBLayb3ClXOGHHbr9TWLRQB0Xg2VRPcwkHc6qwPbAJB/wDQhWPqn/IUu/8Ars//AKEateGp jDrMI3hVkBRs4544H5gUvieN01qVmGBIqsvuMAfzBoA2tO/5FB/+uMv82rkK6LwnqMcJeylYL5jb oye7dCM/gMf/AKqk8Z/8uf8AwP8A9loAq+EP+QpL/wBcT/6EtZuqf8hS7/67P/6Ea0vCH/IUl/64 n/0JazdU/wCQpd/9dn/9CNAGrr1vnRtMuQFG2JY2Pc5UEfhwfzrAruDbG88NRwAEs1shUAgZYAED n3Arh6AOm8Gf8vn/AAD/ANmrD1T/AJCl3/12f/0I1ueDP+Xz/gH/ALNWHqn/ACFLv/rs/wD6EaAN e18L/aLWGf7Zt8xFfHlZxkZ9a09H0L+zLpp/tPm7kKY2be4PqfSr2l/8gu0/64p/6CKtUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV57qn/IUu/+ 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 n/L5/wAA/wDZq1NS0S21KdZpnlVlXaAhAGMk9x70/TNKg0zzfIeRvMxneQemfQD1oAv1znjKVhBb QgDa7MxPfIAA/wDQjXR1m6loltqU6zTPKrKu0BCAMZJ7j3oAwfCEe7UpJCmQkRw2Pukkd+xxn9a6 PWolm0i6RiQBGW49V5H8qbpmlQaZ5vkPI3mYzvIPTPoB61foA84tZvs91DPt3eW6vjOM4Oa6rxVY faLMXUa5kg+9gclPy7dfzo/4RSx/563P/fS/4VtRJ5cSR7mfaoG5jknHcn1oA82qWa5nuNvnzyS7 em9y2Pzrrb3wzZ3BZ4S1u57Lyuc+n+BFRW/hS1TBnnklIbOFAUEeh6n9aAM7wh/yFJf+uJ/9CWs3 VP8AkKXf/XZ//QjXe29tDaxCKCJY0HZR19z6n3rLn8NWU88kzyzhpGLEBhjJOfSgC/pf/ILtP+uK f+giuL1u1+x6pPGBhC29MLgYPPHsOn4V3UESwQRwoSVjUKCeuAMVS1LRrXUpUlmMiuq7cowGR+IP vQBleDP+Xz/gH/s1Yeqf8hS7/wCuz/8AoRrs9M0qDTPN8h5G8zGd5B6Z9APWqs/hqynnkmeWcNIx YgMMZJz6UAcZWn4b/wCQ5bf8C/8AQTW5/wAIpY/89bn/AL6X/Cp7Hw/aWN0lzFJMXTOAzDHIx6e9 AGtRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRWfc61YW45mErYyFi+bP49P1qt/wk1l/z yuP++V/xrZUKkldRFdGzRVOz1SzvSFhmG8jOxuD/APX/AAq2zKilmIVQMkk4AFZyi4uzQxaKRWV1 DKQykZBByCKWpAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKrXd/a2e PtEyoT0HU/kOccU0nJ2QFmio4Zo54llicOjDIIqSk1bRgFFFZc2v2UN00DCXKttZgvAPfvnj6VcI Sn8KuFzUoqlq1/8A2fZmYJvdjtUds+/txWBJ4kvnQqohjJ/iVTkfmSK1pYedRXjsJtI6yivP5ZpZ 2DTSPIwGMuxJxTK6lgP734E856HRXN+H9VuJLoWtxI0quDsLckEc9fTr+lLc+JnW6xbRI0AOMtkF vXHp/n6VzPC1OdxQ+ZHR0VHBKs8EcqghXUMM9cEZqSuZqxQUVgeI9TkhZbW3kKNjdIynkegz2/8A 1U3wzfzzTy280jyjbvDO2SMEAj9R+VdP1aXs/aCvrY6GiiiuYYUVzWr65cR3rw2jhEiO0naCWPfq O3StzT7n7ZYxXGMFxyPccH8Mitp0JwipvqJO5ZrNm12xhujA7vlSQzBThSO3r27Crd7I0VlPIhw6 Rsyn0IFcHW2Fw8at3IUnY9DoqCy3/YoPN3eZ5a7t3XOOc+9T1yNWdihGZUUsxCqBkknAAqg2t6cr FTcjIOOFYj88VS8VzslrDAMgSMSSD2Hb9f0rma7sPhI1Ic0mQ5WOu/4SGw87y90m3/nps+Xp+f6V NHrWnSOEW6UE/wB4FR+ZGK4uiuh4Gn0bFzM7q5u0jsJbmKSNgqEq2cqT2H58VwzMzsWYlmJySTkk 1o2cjHQtRjJ+RTGwHuW5/kKzavDUlT5l5g3cKKv2WjXt4u9UEaEZDScA/Tv369KsSeG75ELKYZCP 4VY5P5gCtXXpp2chWZlRyNFIsiHDoQyn0IrW8TXckl8bbJEcQHy54JIzn9cf/rqPT9GuZb1UuIHS JG/eFhgEeg9c4xketU9R/wCQjdf9dn/mam8J1VbWyDoV60tM1q4s3VJGaW3HBQ8kD2Pt6dKzaK1n CM1aSFex6ErK6hlIZSMgg5BFLWD4XvN8L2bnmP5k/wB0nn9f5+1b1eDVpunNxZqncKKKKzGFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVS1PUotOjVpFZnfOxR3x6nsOlVGLk7R3Au0V yc/iO9kyIhHCM5BC5OPQ54/Sn2XiO4jbF0omQnqAFYf0P+ea6Xgqtrk8yOpopsciyxrIhyjgMp9Q aqaxdNZ6dJLGyrJwEz6k9vfGT+Fc0YuUlFFF2qdxqljbNtluUDZIIXLEEeuOlce19dupVrqdlIwQ ZCQRUFejDAL7TI5jsv7d03/n5/8AHG/wq5BcRXMYkgkWRD3B6fX0NcDVzR53g1O3KH77hGHYgnFF TBRUW4sFI7eiuL1y7kudRlVidkTFEXPAxwT+OK6bRZpJ9Kgklcu5BBY9Tgkf0rlq4d04Kbe5Sd2X qKKK5hlW71C0smVbiYIzDIGCTj8KsqyuoZSGUjIIOQRXBXc7XN1LO2cuxOCc4HYfhXXaCzNo9uWJ JwRyewYgV2V8MqUFK+pKd2aFFFFcZRz2peIJre9kht0iZIztJcEknv6fT8KyrzV728J3ylEIxsj+ UY7/AF/GqbMzsWYlmJySTkk0le9ToU4WstTJtsKmtbu4tH328rRk9cdD9R0NMMMqxCUxuI2OA5U4 J+v4UytWlJWYjutPuftljFcYwXHI9xwfwyKs1S0eB7fS4I5BhwCSPTJJx9eau18/USU2lsbIKKKq anerYWbTNy33UGM5bt+FTGLk7ICLU9Xg09ccSzZx5YbkfX0rDk8R3skbJshXcCNyhgR7jnrWXNNJ PK0srl3Y5JNMr2aWEpwWquzNyZr6Bd3LarGjTyMsm7eGbOfl9+/AqprE7z6ncFz9xyijsADipPD/ APyGbf8A4F/6CaoySNLI0jnLuSzH1Jq1BKs2uy/UXQ6rwvv/ALMO/djzDsz0xgdPbOf1rXrP0FWX R7cMCDgnkdixIrQrx67vUl6mi2IL2f7NZzTZUFEJG7oT2H51wddf4klWPSXUg5kZVGPXOf6Vy1lG st7BG4yjyKrD1BNehgly03ImW5q+II2istNjcYdIyrD0IC1iVveLJVM9vFg7lUsfTBOP6GqWg2cN 7fNHOpZFjLYBxk5A/rWtGfLQU5ef5ie5QjjeVwkaM7noqjJNIysjFWBVgcEEYINegRxpEgSNFRB0 VRgCmT28VzGY541kQ9iOn09DWH1/X4dB8pyGjpJ501zGSpt4XcNtyM7SAP1z+FUK7W4tobTSLmKC MInlOcD1wa4quihV9q5SQmrHdad/yDrX/rin8hVmq2nf8g61/wCuKfyFQ65P5GlTkFcuNgB754OP fGa8jl5qnKurL6HJX9wbu9mnycO2RkYOO36Yrb8KW42z3JAyT5a88juf6flXO13dhbi0soYMDKLg 4ORnv+ua9PGSUKagupEdWWKpavefYbB5Qf3h+VP94/4cn8Ku1yvii582+W3AwIRyfUnB/LGP1rz8 PT9pUSexbdkY1dl4f/5A1v8A8C/9CNcbXZeH/wDkDW//AAL/ANCNehjv4a9f8yI7i68zLo9wVJBw BwexYA1xqqzsFUFmJwABkk11XilmXTUAJAaUA4PUYJ/pXOad/wAhG1/67J/MUsH7tFsJbnd0UUV5 JoZXiDTpb6CNoBuljJwuQMg9fx4H61zd3pt3ZxiS4h2ITtB3A8/gfau5rA8WSsILeLA2sxY+uQMf 1Nd+Frzuqa2JkupzscbSyLGgy7kKo9SatPpN+kixm1kJboQMj8SOBTtDjWTV7dXGQCW/EAkfqK7W ujEYmVKSikSlc5q4tDpnh2SOYDzriRc7R93vgnv0P4n8axrSJZ7uGJiQryKpx1wTiuh8VyqLSCLB 3NJuHpgDH9RWLo0XnarbLu24fdnHpz/SqoSbpOb63YPex29FFFeMaBXAXMvn3Ms23b5jlsZzjJzX eySLFG0jnCICzH0Arz6vSwC+JkTOv0KGJ9EiV40ZXLFgVBDHcev5D8q53VtObTrrYCWjYZRiO3of cf4V1GiRNDpNurEEld3HoTkfzqj4rjU2UMhHzrJtB9iDn+QqKNVrENdG2DWhjaHP5GqwElsOdhA7 54GfbOK7WuE07/kI2v8A12T+Yru6McvfTHEKKKK4CgooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooARmVFLMQqgZJJwAKoNrenKxU3IyDjh WI/PFReJZ3h0whDjzHCMe+ME/wBK5Gu7D4WNWPNJkuVjrP8AhJLHzNmJsZxv2jH165x+FTrrenMw UXIyTjlWA/PFcZRXS8DTfcnmZ6DHIkqB43V0PRlOQadXPeEmYrdLk7QVIGeAef8AAVt3VxHaW7zy k7EGTgZNebVpclRwWpad1cLm5htIvNnkCJnGT61jv4nhEihLaRo/4mJAI+g5z+dYmo38uoT+ZJwo 4RAeFH+PvVWvQpYKKXv7kOXY7Sw1e0vn8uNmSTnCOME/TtV+vPVZkYMpKsDkEHBBrvLSVp7SGVgA zxqxx0yRmubFYdUrOOzKi7k1FFQ3c621rLO2MIpOCcZPYfjXIld2RRieItVlil+yW7lCADI6kg56 gD9DV3w9eSXdiRM4eSNtue5GOCf159q5KSRpZGkc5dyWY+pNdB4SVgt02DtJUA44J5/xFenXoxhQ t1RCd2dDXLeKmY38S5O0RAgZ4Byf8BXU1xniD/kM3H/Af/QRXPgler8hy2M+itvw9psF5HNJcw70 BCodxHPfofcVQ1aw/s+8MIfejDcp749/fivTVaLm6fVEW0ubHhW7DRSWjE7lO9cnt3Htz/OpvFX/ ACDo/wDrsP5Gsnw3K0erIoAxIrKc+mM/0rQ8WSsILeLA2sxY+uQMf1NcU4WxSt11Kv7pzdXbXSL6 6VXjgIRiPmchRj19SPpTtBVW1i3DAEZJ5HcKSK7StcTiXSfLFCSucZcaHfwbj5PmKuPmjOc/Qdf0 qXw9YvcXyTlMwwnJJOPm7Ae+cGuuqvfsyWFyykqwiYgg4IODXN9cnOPI1qyuU4Suz0FWXR7cMCDg nkdixIrjK7rTv+Qda/8AXFP5Ct8e/cS8yY7lmormXyLaWbbu8tC2M4zgZqWqeryrDpdyzAkGMrx6 ngfzrzIK8kjQ4iu30iJYdLtlUkgxhufU8n+dcRXfwRLBBHEpJVFCjPXAGK9LHv3YoiJJSMyopZiF UDJJOABS1V1NlXTbosQB5TDk9yMCvMirtIs4auv0PT4YLKGcxIZ3XcX6nBzjGenB7VyFd5ZRtFZQ RuMOkaqw9CBXq46TUEl1M4k9VTp1mboXJt080HIYcc+uOhPvVqivKUmtmaBRRRSAK5HxFefab8xK f3cGVH+93/w/Cuj1S6FnYSy7tr4wnTO49Ov5/hXD16OBp3bmyJPoT2NpJe3SQRg8n5iBnaO5q7ru mx6e8IhJKOpGWOSSDzn8CPyra8O2f2awErD95Phj/u9v8fxq3f2EGoRCOcHg5Vl4K/Sqni7Vv7qD l0OX0RWWS5uFB3QW7sjY4Vscfpms6uqv7KLTdCuUttwLY3OT8zfMByfTBxXMQRNPPHEpAZ2CjPTJ OK6aNRVOaa2/yJatodzZRtFZQRuMOkaqw9CBU9FFeI3d3NTD8VyKLKGMn52k3AewBz/MVi6JEs2r W6sSAG3ceoGR/KtLxbIpktowfnUMxHscY/kaq+GovM1VW3Y8tGbGOvb+terS93DN+TM38QviaVZN U2gHMcYU59eT/Wp/CcWbmebd9xAuMdcnP/stZ+tyrNq1wyggBtvPqBg/yrY8JxYtp5t333C4x0wM /wDs1FX3MNbyQL4jeoqCe7trbPnzxxkDdgtyR7Dqagh1iwnlWKO4BdjgAqRk/iK8xQk1dI0uT3sb S2U8aDLvGyqPUkVwdeh155XoYB6SREzttGl87SrZtu3CbcZ9OP6VleLJ/wDUW4b1dlx+AP8A6FWj 4f8A+QNb/wDAv/QjXN65P5+qzkFsIdgB7Y4OPbOaihC+Il5XBvQTRYGuNUgAyAjbyQM4A5/+t+Nd tXOeFLc7p7kg4A8teeD3P9Pzro6zxs+apbsOOxDdzrbWss7Ywik4Jxk9h+NcJJI0sjSOcu5LMfUm ui8VXYWKO0Uncx3tg9uw9+f5VgWkDXN1FAucuwGQM4Hc/hXVg4clNzfUmT1sRV2Xh/8A5A1v/wAC /wDQjXG12Xh//kDW/wDwL/0I08d/DXr/AJhHcz/FrMFtVydpLEjPBPH+JrN8P/8AIZt/+Bf+gmrf iuRjewxk/Ise4D3JOf5Cm+Ff+QjJ/wBcT/MUoe7hfkwfxHVUUUV5JoFcv4rkY3sMZPyLHuA9yTn+ QrqK47xHIz6vKrHIQKq+wxn+ZNdmCV6pMtibwsqtqTkgErESMjocgf1rq65zwkqlrpsDcAoBxyBz /gK6OpxjvVYR2OZ8WS5uYIdv3ELZz1ycf+y1S0KS3gv/AD7mTy1jQkH1J4xjv1NO8RT+dqrgFSIw EBH5nPvkms2vSpU70FF9UQ3qdVceJLSPcIUkmIxg42qfxPP6VQk8T3RcmOCFU7Bsk/nkViUUo4Sl HpcfMzr7u/Wfw/LdLGQJIyu0noSdprkK3bvzYPCtsh+XzH5HBypLMP6Gse0WNruFZseWZFD5OBjP PNThoqEZNd2DO5tovItood27y0C5xjOBisTxXcr5cNqOXJ8w+w5A/Pn8qsXniK0jiP2YmaQjj5SA D75/pXLzTSTytLK5d2OSTXPhcPJz556Dk+hPpUbSanbKgyRIrfgDk/oK7mua8K2haWS7YDao2Lkd +59uP510tZ42fNUsug47BRRRXEUFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAlFFFACFsDJ6Uuc1Rvp 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 4JzXoYBe82RI6PwqqiwlbA3GUgnHJGB/ia26y/DcSx6SjAnMjMxz65x/StSuXEO9WRS2OE1H/kI3 X/XZ/wCZpbTT7u9Vmt4S6qcE5AGfxquzM7FmJZickk5JNdj4f/5A1v8A8C/9CNerXqOjTTXoQldm VD4YmOfOuY09NgLZ/PFaFr4esoGV5N8zADhz8ufXH9DmtaivMliqsupfKjnvFrMFtVydpLEjPBPH +Jrna2fFX/IRj/64j+ZrGr1MKrUomctwqa0tZbydYYVyx6nsB6n2qGui8LXUIWS2KokpO4N3kH/1 v896utN04OUUCV2bVnbLaWsdunIQYz6nufzqeiivBbbd2ahRRRSAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigBKjmkESFj2qTNZl/PufYDwKicuVF048zsV5HLuWPemg45FJmjNclz0UrKxcgvSmA/SriXE bjg1j0ZI71pGbRjKgnqboYHuKWsWJ5DIAGNabylAB3rT2qSuzkqRUGT0tVRcnuKelwrHBOKI14yM 7onopAc0VsMWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAK5zxaylrVcjcAxIzyBx/ga6OuU8UsrakgBBKxAHB6HJP8A WurBq9VEy2IfDkbPq8TKMhAzN7DGP5kV2Ncv4UjY3s0gHyLHtJ9yRj+RrqKrGu9UI7FbUf8AkHXX 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 JondBRRRWQwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKSigmgCG6lEURbvWMzFiT61rSlLlWjB5FZMqGNyr DGKxqpnVhpRCkpKK5zsFzRmkzUtvEZZAKaV2TOXKi3YxBFMrfhQ7lmJzT7hwiiNe1V81lWlzOyPJ qScmPLU0mm5pCayRmSx3LwsMncp6+1aEciyKGU5BrIJ/KpdOlZbgxg5Q/pXXQqN6MuLNaikpa7Cw ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAK4zxB/yGbj/AID/AOgiuzrhNR/5CN1/12f+ZrvwK99vyJlsbXhJWC3TYO0lQDjg nn/EV0NY3hX/AJB0n/XY/wAhWzWGJd6shx2Cqd/pltfgecpDgYDqcED/AD61corGMnF3TGYFx4Yi K/6PcOrAHiQAgnt0xj9awLq3ktLh4JQN6HBwciu+rmvFkSie3lydzKVPpgHP9TXfhcROU+STuRJF bw1L5eqqu3PmIy5z07/0roNW1FdOtd4AaRjhFJ7+p9h/hXN+HlZtYhIBIUMTgdBtI/rV/wAWspa1 XI3AMSM8gcf4GqrU1PExT7f5gnoYDMzsWYlmJySTkk0lFaNlod7dN80ZgQHlpBg/gOp/l713ynGC vJ2IM6uq8K/8g6T/AK7H+QrmbmLyLmWHdu8tyucYzg4rpvCv/IOk/wCux/kK5cY70blR3IvFkuLa CHb99y2c9MDH/s1YFnbPeXKW8ZUO+cFunAz/AErX8WS5uYIdv3ELZz1ycf8AstQ+F41fUyzDJSMs vscgfyJpUX7PDc3qD1ZVvdJvLJS8sYMYIG9Dkf41Sr0JlV1KsAykYIIyCK4bU4oYdQnityfLVsDP Y9x+BzTw2IdW6ktQkrGvpFwZNBvYCSTFG5HHABB/qDXP1o2SsNE1FsHaTGAccE7v/ris9VZ2CqCz E4AAySa1pRSlNrv+gmd3ZRtFZQRuMOkaqw9CBU9FFeG3d3NQrjfELM2sTAkkKFAyeg2g/wBa7KuD v2V7+5ZSGUysQQcgjJruwK99vyJkbfhJWC3TYO0lQDjgnn/EV0NZHheNk0wswwHkLL7jAH8wa16w xLvVkOOwVxGsy+dqty23bh9uM+nH9K7JLiGSRo0mjaRfvKGBI+orhJ5WnnklYAM7FjjpknNdOBj7 zbJkdJ4UjUWU0gHztJtJ9gBj+ZrcrN8PKq6PCQACxYnA6ncR/Srs9xFbRmSeRY0Hcnr9PU1y125V ZW7lLYlrh9XlabVLlmABEhXj0HA/lXUWes2d5cGCJnD5wu5eG69Py74rkr2RZb2eRDlHkZlPqCa6 8HTlGb5l0JkzofCkaiymkA+dpNpPsAMfzNblZfhuJY9JRgTmRmY59c4/pWpXHiHerIpbBRRRWIwr G8Vf8g6P/rsP5GtmszxHGr6RKzDJQqy+xzj+RNbUHarH1E9jlbKRYr2CRzhEkVmPoAa72vPK1pPE F01kkCAK4Xa0uSWPuPQ+/wDKvRxVCVVpxIi7FzxFqq7TZW7ndnErKeMf3f8AH8vWs/w5IyavEqnA cMre4xn+YFZtb3hixZpTeyKQqjEee56E/h0/H2qpwhRoOP8AVw3Zl6rI0mp3LOckSMv4A4H6Ct7w qqiwlbA3GUgnHJGB/ia5hmZ2LMSzE5JJySa7PQ42j0i3VxgkFvwJJH6Goxfu0VEI7l+q2o/8g66/ 64v/ACNWazvEH/IGuP8AgP8A6EK8ymrzS8y3scbXReKCIbS0to1AjySPUbQAP51z8cbSyLGgy7kK o9Sa3/F3/Lp/wP8A9lr2KutaC9SFszN0FVbWLcMARknkdwpIrtK4OxumsruO4VQxQ9D3BGD/ADrS /wCEmvf+eVv/AN8t/jWOKw86s049hxaR1VFcdJr+ou5ZZVjB/hVBgfnk10ejXjXunpK7AyAlXwMc j/62K4quGnSjzSKTuXq4TUf+Qjdf9dn/AJmu7ridbiWHVrhVJILbufUjJ/nW+AfvteRMimqs7BVB ZicAAZJNd7bReRbRQ7t3loFzjGcDFcl4ftxcapGSAViBkIJ9On6kV2VPHTvJRCKM3xBcG30uQAkN KRGCB69f0Brj1VnYKoLMTgADJJrofFrMFtVydpLEjPBPH+JrO8P24uNUjJAKxAyEE+nT9SK2w1qd DnFLVnVWFuLSyhgwMouDg5Ge/wCuasUUV5TbbuzQ88rfaRU8IIrHBc7V9zvJ/kDWLdwNbXUsDZyj EZIxkdj+Na+oQyQeGbSOVCjiXJU9Rncf617VZqXJ6oyRh1r3fiK7nDJCFgQ915bp6/4CsiitpU4z aclewXFZmdizEsxOSSckmprS7ktPNaIlXkj2BgcFeQc/p+tOstPub5sQRErnBc8KPx/Hp1rZvNCa DSmjtyZpfMDuehYAEYA/H/PArOpVpxahLqCTOdoq3FpV/MxVbSUEDPzrtH5mtKHwxMc+dcxp6bAW z+eKqVenDdhZmFW7YwPJ4XuwBty5cE9CBtJx+RqVfCyhhuvCVzyBHgkfnWytpEtj9jXIj8spxjOC ME/WuSvioNJRfUpRZwlSy3VxOoWaeWRQc4dyRmpL3T7mxbE8RC5wHHKn8fw6darV3JxlqtSAra8K swv5VydpiJIzwTkf4msuOzupUDx20zoejKhINdN4f0yWxSSS4CiWTAC8EqB7+/8AQVz4qpFU2r6l RWpzeo/8hG6/67P/ADNdL4ZiaPS9xIxJIWGPTgf0qS50Oyubrz3DqScsqnAY+/19q0VVUUKoCqBg ADAArir4iM6ahEpKzFrjNdsvsV+2xcRSfOmBwPUfh/LFdnRWNCs6MrjauY/hm0aCyad8hpyCAf7o 6fzP4YrYoorOpN1JOT6glYKKKKgYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUAFV7yYRRH1NTscDNY17P5sp weBVwjdmc5WQxJmjfeDzmr37q9j6gPWXnmlV2Q5U4NbzpqSMoTcHdEs0EkLcgketRZq3HqBxtlUM KeWs5eSNprilh30O+GM7lFeTWlaoIIPMbqelJDZRMdyvkCpLqF3wExtHbNYyjyoKtb2i0KzsWJJp uaVopV5KH8KZzXK4Nas5GmLmkJozSZqRCO2Fq9psGxPMI5NU7eIzzgdhWyqhVAHQV2UIWV2aRQ6i iiukoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACuAuZfPuZZtu3zHLYznGTmu2vL2G0jcvJGJFQssZcAt9K4WvTwEX7zZEjs PDkappETKMFyzN7nOP5AVp1y1jr62VpHbralgg6mTqScnt71qJqKajo13Iq7HWNwybs4+U4P0/8A r1z1qFTncmtGxport4mh+1eWsJMO4DzS2OO5xit2vPK67SdUtHsIkkmjikjQKyu2OnHfr0rXE4ZQ inBCjLuatcd4huVuNTYJ0iHl59SCc/qcfhWnq2vxIjwWZ8x2BUyAkBe3Hqff6da5qtMHQlF88gk+ hu+E4s3M8277iBcY65Of/Zao67cG41SY5O2M+WoI6Y6/rmtywR9I0KSWUjeQZApU8EgAA/jiuUrS j79WVTpsJ6Kxu+FbbdPLcsOEG1cr3PXB9QP5101Z+hW4t9LhGBukHmMQeuen6YrQrzsRPnqNlpWR wmo/8hG6/wCuz/zNb/hSRTZTRg/Osm4j2IGP5GsLVY2j1O5VxgmRm/AnI/Q1r+Ef+Xv/AIB/7NXo 4hJ4e/oQtyn4ll8zVWXbjy0Vc569/wCtWfCqxq11M+AUVRuJwADkn+QrO1uVZtWuGUEANt59QMH+ VUq0VLnoKG2iFfW50mr69GI3gsmLORgyqcBee3r35rm6K0dF0xr+4DSKfs6H5znGT6D/AD0/CnGE MPBsNWyzPE9p4YiGSDcShnBweCCR/wCgqazdO/5CNr/12T+YrovFX/IOj/67D+RrllZkYMpKsDkE HBBqMO/aU2+9xvRnoVFcK2o3zMWN3PknPDkD8qhlmlnYNNI8jAYy7EnFcqwEush8x37MqKWYhVAy STgAV57W9o07PomoQHJEcbEEnsVPH6frWDW+Fp+zc4sUnc6ey1Oy07S4Inn8yQJuKoMnk5x6ZGfX tWZqGu3N4rRoBDEwwVXkke5/wx1rLorWOGhGTk9WK7HwzSQSrLE5R1OQRTKtw6dPLYy3m0iOMccZ Lc849hzz7flUrZOLbsI3V8ReRZww28GXSNVLOeMjrwOo/Gsi6u7i7ffcStIR0z0H0HQVDTo43lcJ GjO56KoyTUQpQp6pDu2T6YrNqVqFBJ81TwOwOTVaun0PRmtX+03QxMMhEB+72ycd/wDP0wdThMGo 3EewIBISFHQA8j9CKinWjOo4xBqyLdnrtxZ2kdvFFEQhPLAnIJz6/WnyeJL50KqIYyf4lU5H5kis iiqdCm3doLs29L1y7e/ijuZPMjkOzGwAgnoeMd66iuL0K3NxqkIwdsZ8xiD0x0/XFdpXm4yMIzSi i47BUc8SzwSRMSFdSpx1wRipKK407FHAXED207wyDDocH39/pUddtqGl22obTMGV16Ohwcen0qhB 4ZtkwZ5pJSDnA+UEeh6n9a9eGNg43luZ8rMfSdLk1GXJykCn53/oPf8AlXUXcMcGkXEUSBEWFwAP oatRxpEgSNFRB0VRgCmzxLPBJExIV1KnHXBGK4auIdSab2RSVjgK720iaC0hiYgskaqcdMgYrCtv DLrdZuZUaAHOFyC3pn0/z9a6OtcZWjOyiwirBWfrys2j3AUEnAPA7BgTWhSMqupVgGUjBBGQRXHC XLJS7FHE6PA8+p24QfccOx7AA5rc8U25kso5wCTE2DzwAf8A64Fa0NvDBnyYY493XYoGfyqRlV1K sAykYIIyCK6p4rmqqaWxKjpY89orr7jw/YTNuVXiOST5bcH8DnH4UyPw3Yo4ZjNIB/CzDB/IA12f XaVupPKzk67PQrZrXTI1eMpIxLOD1yen04xT4NJsLeQSRW6hx0JJbH0z3q7XJicSqq5YrQpRsFct 4isJ/wC0DOkbyJKF5Vc4PAx/L866misKNV0pcyG1cyfDthJZ2ryTArJMQdp7AdM+/J/StaiioqTc 5OTGlYr3tnDfQeVOpK5yMHBBxjP602wsINPiMcAPJyzNyW+tWqKXPLl5b6AFFFFSBBJZ2srl5LaF 3PVmQEmlureO7t3glB2OMHBwamoquZ6a7Ac7/wAIt/0+/wDkL/69Xrfw/YQtuZXlOQR5jcD8BjP4 1qUVrLE1ZaOQrIRVVFCqAqgYAAwAKWiisBhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFJS0h6UAUtQuPKj2g8msgmnXUzSXTq4wwPA9aizXTTSsc099R2aM02i rJFzToxvamVfsIMncRwOTUTnyq5UY3ZbhXyYOerUm8+tEr7m9hTK+drVXUlzHoQikiUTMOOopWSK YdNpqGlBpQqyiDimRTQMhqBvQVpIwddr/hUK2pNxyPlrrhFVLNHPKFmTWMHlR7j1NWqAMDFFdyVt Bi0UUUwCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACqGt3RtNNkdW2yP8AIh56n6d8ZNX6zdftJLvTisQLPGwcKBkt1GP1/StKNvaL m2E9jjqKtxaVfzMVW0lBAz867R+ZrRt/DM7rmedIiQCAo3H8en9a9uVenDdmdmYdb/hu2aayvlPy pMBGG684OePxFPXwsoYbrwlc8gR4JH51tWlrFZwLDCuFHU9yfU+9ceIxUJQ5YMpROFkjaKRo3GHQ lWHoRTa6/VtGjvz5sbCKcDrjh/TP+NYr+Hr9ZFQLG4PVw/A+uef0rop4qnNXbsxOLMqtTQdON7dC SRT5ERyTjhj/AHf8f/r1esvDIVt15KGAP3I+h+p/P/Gt+ONIkCRoqIOiqMAVhXxcbcsBqPcoeIP+ QNcf8B/9CFcpYW5u72GDBw7YODg47/pmu7ZVdSrAMpGCCMgiq1pp9pZMzW8IRmGCcknH41z0cSqV NxtqNq7LVFFFcZRyPiSB49UaRh8koBU/QAEfXj9RWn4YtJILWSeQFfOI2gjsM8/jn9K15YYp1CzR pIoOcOoIzUldU8S5UlTsTbW5xOtQNb6pODkh23gkYyDz/wDW/CqsUMs7FYY3kYDOEUk4ru5reGfH nQxybem9QcfnUiqqKFUBVAwABgAVvHHWilbUXKctYeHbifD3J8iPrt6sen5f54rpoYY4IliiQIij AAqSiuSrXnVfvFJWKerWhvdPlhUAvjcmR3H8s9PxripI3icpIjI46qwwRXoNRywxTqFmjSRQc4dQ RmtcPiXSXK1dCcbnAU6ON5XCRozueiqMk13K2NojBltYFYHIIjAINWK6Hj10iLlMvTNMkt9IltZX AeYMTgZ2ZGPxrm5tLvoZWjNtK+043IhYH6Gu4ormp4qcJN9xuJx0GgX82CY1iBGQZG/TAyc1uWOg WlthpR9ok9XHy/l/jmtWilUxVSel7egKKRHPEs8EkTEhXUqcdcEYrm5PDF0HIjnhZOxbIP5YNdRR UUq86Xwjauc/B4YQYNxcs3HKxjGD9TnI/Ctm1tLe0TZbxLGD1x1P1PU1PRSnWnU+JgkkFVruwtbz H2iFXI6HofzHOOas0Vmm4u6GY3/CM2X/AD1uP++l/wAKmj0DTkQK0TSEfxM5yfywK06K1deq/tMV kRQW8VtGI4I1jQdgOv19TUtFFZNt6sYUUUUgCiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigApKWigDO1PTxcLvj4kHQ1ib2VzHKNrj1711dVLywhugdy4b1q4ysQ43 MLNFTTaXcwk+W24elVzHOn34zWqmjJwZNAm9/wAa1wPIhC9z1qtYRrGnmPwF65pXuUkckNXBjKrt ZG9KHcdmlpoOelLXkvQ6h1ApBTh0qQGscCr0IYRru61Vt08yXJ6LV7GK9XDU3GN2YSd2FLSUtdRI UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUUtFACYppjU9VFPooAjMSFCuODVV9NhYcZFXaKTSY GTJp8sXMTZ9jTEmIbZKNrfzrZqC5tUnQ5GG7GsKlCMloWpFQfnSk9AOp4qJd8MnlSfgatWqb3Lkf KOlcdOg3OzLctCxBH5cYHfvUtJS16a0MQooopgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABSUtFACUUUtAEM8CzAZ6jvT40CIFHanUtKyASlpKWmAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFRSXEMTbZJVU+hNSVyWvXLtqLqjEB QBwaAOm+22v/AD3j/wC+qPttr/z3j/76riPOk/vt+dHnSf32/OgDvI5ElXdGwYeoNPrK8OOX07LE n5jWm7BELE4AGTQAyS5gibbJKin0Jpn221/57x/99VyOo3slzeO6sQvReaq+dJ/fb86AO4+22v8A z3j/AO+qkE8Rj8wSLs/vZ4rg/Ok/vt+db927Wvh+NNx3OeuaANn7ba/894/++qcl1BI21JkZvQGu G86T++351qeHRJLf5ZiQg55oA6uikpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACkpa57WdZeKU29scEfeegDca4hT70qD6mhJ4pDhJFY+gNcQ93cPndM5+ prU8OGWW9LM7FUXoTxQB1FFY83iG3ilaMxuSpxkGkj8RQSSBFifLHA5oA2aKaDkA9KdQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABTJZE hieWQ4RFLMfQCn1V1T/kF3f/AFxf/wBBNAFb/hIdL/5+v/Ibf4VNbavp902yK6QtkABsqST6Zxn8 KpeH7K0m0eCSW1hdzuyzRgk/Me9TX2gWN2vyRi3kA4aIYHfqOh/n70AalZ0uu6bDK8Ulzh0Yqw2N wR+FZ/hq/lWWTTLtvniyI8kZGOCuc847fjRr1tAuqaZtgjHmzHzMIPn+Zevr1NAG1HeW8tmbtJMw BS27B6Drx17VT/4SHS/+fr/yG3+FT38ccOkXUcSKiCF8KowBwe1UfD9laTaPBJLawu53ZZowSfmP egC9aarY3j+Xb3Cs/wDdIKk/QHr0q5XMeJ9PgtI4by1UQP5m0hOOcZBHpjHb1robOVp7OCZwA0ka sQOmSM0AUv8AhIdL/wCfr/yG3+FOi13TZpUijucu7BVGxuSfwrN8K2ltPp0jzW8UjCYgF0BOMD1r aWwskYOlpArKcgiMAg/lQBZrOvdbsLIsjzb5F6pGNx64x6A+xNV/E2oyWNokcDFZJiRvHZR1x6Hk frUui6PFYQI8iBrlhlmYAlDjoPTr+NAEMXijT3cKyzRg/wATIMD8iTV641SytooZZptqTLujO1jk ceg9xU9xbQ3URiniWRD2YdPceh96a1latFHE9vG6RLtQOobaPx+lAFP/AISHS/8An6/8ht/hR/wk Ol/8/X/kNv8ACs/XLS2i1HS0jt4kV5sOFQAMMr19a2f7Nsf+fK2/79L/AIUAPvLy3sYhLcybELbQ cE8/h9Kp/wDCQ6X/AM/X/kNv8Kq+L/8AkFxf9dh/6C1af9m2P/Plbf8Afpf8KAH2l7bXqb7aZZAO uOo+o6jpVe51mwtZ2gnn2SLjI2McZGewrDmhXSPE1stp8sc20bMnADHaR156Z/8A1Vb8XQRLYpMI kErTAFwo3EbT3/AUAbNneW99EZbaTegbaTgjn8frTri5htYjLPKsaDux6+w9T7UsMEUClIYkjUnJ CKAM/hXMWqv4j1Z5Jy32SD7qDjgngdepxyfb6UAaMvijT0cqqzSAfxKgwfzINW9P1e01E7IGYSBS xRlwQM4+np3q5FHHCgjiRUQdFUYA/Co0sraO6a5jhVJmUqzLxkE55HrnvQBXudZsLWdoJ59ki4yN jHGRnsKj/wCEh0v/AJ+v/Ibf4VSigin8W3qTRJIohBAdQRnCeta39m2P/Plbf9+l/wAKAJ4pEmiS WM5R1DKfUGn01VVFCIoVVGAAMACnUAFFFVdTu/sNhNc4yUX5RjueB+GTQAXmo2ljj7TOqE9F6n64 HOOOtZn/AAldj/zyuf8Avlf8ag0DThfbtT1D9+8jHYHAIPbOP0A7Y+ldJQBUsNSttRVjbOWKgFlK kFc9v0PSkvNUsrGURXM2xyu4Dax4/Ae1PtrG3tZpZIIxH5oUMqjC8Z5A7daydQjjm8WWccqK6GE5 VhkH7/agC5/wkOl/8/X/AJDb/Cr1tcRXUCzwNvjbODgjODjvUX9m2P8Az5W3/fpf8KnijjhQRxIq IOiqMAfhQBWs9Usr6UxW029wu4jaw4/Ee9XK4Wzt5INPGrQMfMgn2svbbgfj1OCPeu0s7mO8to7i EnY4yMjBHqKAEuLy3tpYYppNrzNtjGCcnj0+oqSWRIYnlkOERSzH0ArF8Qf8hTSP+u3/ALMlaeqf 8gu7/wCuL/8AoJoArf8ACQ6X/wA/X/kNv8KkttZsLqdYIJ98jZwNjDOBnuKqeH7K0m0eCSW1hdzu yzRgk/Me9acVlaQuJIrWFHHRljAI/GgBl7qFrYbPtUvl787flJzjr0HvVb/hIdL/AOfr/wAht/hV TxEqvqOko6hlaYggjIIytabaXYOpU2UGCMHEYB/MUATW9zDdRCWCVZEPdT09j6H2qWuW01Tp3imS zhP7mTIK88DbuHfqOmfrXU0AVb3ULWw2fapfL352/KTnHXoPerCsrqHRgysMgg5BFc3dwtret3MI bMVtEypkELvxjn0O78wtX/DN4brTFRyN8B8vqM7exx+n4UAa9QWd5b30RltpN6BtpOCOfx+tT1he EP8AkFy/9dj/AOgrQBu0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF 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 E/yegA+1eI/+fC2/76H/AMVWzAZGgjMyhZSoLqOgbHIqSigDB8JKr6TMjqGVpmBBGQRtWobDzND1 g2L7mtblh5bt69unfPB/A8Cp/CH/ACC5f+ux/wDQVq5rmnDUbIqv+ujy0ZwOTjp9D/hQBT8Qf8hT SP8Art/7Mlaeqf8AILu/+uL/APoJrmPt73lzpUU4K3FvPscHOTyuCc9+Dn6V0+qf8gu7/wCuL/8A oJoAwNIuNaTTols7OGSAZ2sxGTyc/wAQ75rX02bVpJ2F/axRRbchkOTuyOPvH3pPDf8AyA7b/gX/ AKEa06AOf8TyNFeaZIiGRkkLBB1YgrxSTeJLiHasumtbl+FaZmwPfG3JA9qk8Qf8hTSP+u3/ALMl bFzbx3VvJBKMpIuD7e/1oAoaPpzQM97cTi4uZxzIpyu3tj16D+lW9QuRZ2M1wSMopK5BILdh+eKx fD9xLY3smj3WNwJZCCTzjOB7Ec9u/rTvFUhnls9OjK75XDHOeM/KvPpyfyoAseF7Z4rF7mYHzblt 5Zicle2c/ifxqrATp3iuWJiRFdgsNzgDJ5z+YIH1qb/hFLH/AJ63P/fS/wCFUdY0KLTbMXdpJMXj cZLMPlHqMAc5xQB1dYXhD/kFy/8AXY/+grWtY3SXtnFcIMCRc49D3H51k+EP+QXL/wBdj/6CtAG7 RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lAGN4om2WaRj+Nq5etnxPNvvFjB4Vf1rGoAdGhkJA7 DNNrR0iDetxIRwsZFZx6/jQBpW159m0mWNT88jYH0rN96Ks6dam7u0jA+U8n6UAQSRtHt3dSM02r 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 2kWMHriN8n6nGT1qpqU2g6lOs017KrKu0BEIGMk91962/wCzbH/nytv+/S/4Uf2bY/8APlbf9+l/ woA5n7L4c/5/7n/vk/8AxNa1jq2j2NqltFdsUTOCyNnk59PetD+zbH/nytv+/S/4Uf2bY/8APlbf 9+l/woAy9N1HRdNgaGG8dlZtxLoxOcAdl9qt/wDCQ6X/AM/X/kNv8Ks/2bY/8+Vt/wB+l/wo/s2x /wCfK2/79L/hQBiTS+H5dQW9F06SKwchEYKzA5yRtq9PrekzwSQvdkLIpUkRtnBGPSrv9m2P/Plb f9+l/wAKP7Nsf+fK2/79L/hQBzP2Xw5/z/3P/fJ/+JqexOgWN0lzFfTF0zgMpxyMf3fet/8As2x/ 58rb/v0v+FH9m2P/AD5W3/fpf8KAMu81HRbye2mkvHDW7bkCo2Ccg8/L7Vb/AOEh0v8A5+v/ACG3 +FWf7Nsf+fK2/wC/S/4Uf2bY/wDPlbf9+l/woAyNQu9D1CWKWS9kjki+68SMD+e3t/WlF7oY1RtR N25mIwAUbaOMZ6en861v7Nsf+fK2/wC/S/4Uf2bY/wDPlbf9+l/woArf8JDpf/P1/wCQ2/wqOfW9 Jngkhe7IWRSpIjbOCMelXf7Nsf8Anytv+/S/4Uf2bY/8+Vt/36X/AAoAzNP1PR9Pt/IivpHTcSPM Vjj2Hy9P8azPsvhz/n/uf++T/wDE1039m2P/AD5W3/fpf8KP7Nsf+fK2/wC/S/4UAc7BF4egnjmS /nLRsGAKnGQc/wB2upikSaJJYzlHUMp9Qag/s2x/58rb/v0v+FWFVUUIihVUYAAwAKAHUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFIeBS1DdyCK1kkPRVzQBx2qy+dqEr9s4qnTnYs7MepPWkC7iF9TQB0WjwFN FnkP/LQGudPU/Wuzji8nSNg/551xjfeP1oASuk0a2+yabLduMOykj2FYunWxu7xIgOOp+ldJrji2 0oxrwDhRQBybks7Me5JoUFmC+pxTatabF51/EmOCc0AauuEQada247gE1g9a1fEku+/CDoi1k9qA Nrw5BvM8nohArIlUrIynscV1PhuHy7AsRy5zWXr2ntBcGeNcxvycdjQBl27+XOjnoGya7mKVJIVd WBBHrXBjH4U9ZpFTaJGC+maAN3VdceK48u0YYXq3qapf2/ff31/Ksz6/rV7TdMmvZBwRGDyf8KAN BNQuptLnmnbgjavHU1g10HiHZa2UNrH8oznHtXP0Aanh2HzdQDEcIM11cgzGw9RWH4WhxFJN6nFb 1AHASqUlZT2Y0RtskV/Qg1r6/pzRTtcRrlH5OOxrF96AO8tZkmt43VgQVFZmu6msEJgibMjcEjtX NxzzRrhJGUH0NRkknLHJPc0AWLeaCLBkgEpHqcVpw64Y490dnGFXgkVmWdlNeShI0OO57V0c2jou ltBEPn+9n1NAFH/hJZP+eC/nU1lrjXl0kMkKBW7muekRonKOCrDrmkVirBgSCOhFAHazabaTcPCv 4cVyurWkdneNHG2V649KcusXypt89qpyO8jl3bcx6k0ANrRjidtElbHyhxVS1tpbqYRxqSTxx0Fd fDYRx6f9lOCCuCff1oA4qtPw9MkOoAOcbxtFVL6zks5mjkUgZ4PrVcZB46+tAHfs6qpYsAAOua5T XNR+2TCOM/u0/WqDXM7psaVivpmoqACuk8PWpgtZLpxyw4+lUNI0iS6dZJQViBzz3rf1J1tdMkKg ABcAUAchdSebcySf3mJqONS8ioO5pKuaNF52pQjrg5P0oA7CJRDbKOyrXEXknnXcsn95s13EyloH Ve6kCuEmRo5mRwQQeaAH2qh7qJT0LAV3UZUKoBHArgK2vDYklvCzMSqL3oA6iikpaACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKqajqNvpsIknY/McKi8s3 0oAt0Vhf29dt80Wj3LxnlW5+Ydj92tHS9Qj1K18+NGTDbWDeuAePbmgC5RWTfeILSxuntpY5i6Yy VUY5GfX3qD/hK7H/AJ5XP/fK/wCNAG7RUH2uP7B9sw3l+V5uMc4xn86yf+Ersf8Anlc/98r/AI0A btFZdl4gsbyYQqXidiAokGNx9iCas6lqEWmwLNMrsrNtAQAnOCe59qALdFMikSaJJYzlHUMp9Qaf QAUVnjV7dpruNElb7KrNI4X5eOoHv1/I1S/4Sux/55XP/fK/40AbtFFY9x4itllMNpFJdzdhGOCe /P054BoA2KKwT4ilhKtd6XPBETjec9fxA/nWv9rj+wfbMN5flebjHOMZ/OgCeisL/hK7H/nlc/8A fK/41PY+ILS+uktoo5g75wWUY4GfX2oA1qKKKACis7UNas9Pfy5WZ5eMpGMkD37f/rqk2v3qKXfR Z1VRkkkgAf8AfNAG9RVTTdQi1KBpoVdVVtpDgA5wD2PvRqOo2+mwiSdj8xwqLyzfSgC3RWCviG5l G+DSJ5YiTtcE8j8FNWNP8QWd66xHdDK2AFfoT6A/44oA1qKKzNP1201C48iJZEfaSPMAGfYc9f8A CgDTooooAKKzrDWbXULp4IBJlFLbmUAEAgcc571NqWoRabAs0yuys20BACc4J7n2oAt0VWsL2K/t luIc7SSCGxkEeuP881ZoAKKq6hfw6db+fPuKlgoCjJJ/zmn2N3HfWqXMQYI+cBhzwcf0oAnoqpJq EUepRWBV/NlXcCANuOff2NW6ACiqmpahFpsCzTK7KzbQEAJzgnufardABRWZp+u2moXHkRLIj7SR 5gAz7Dnr/hWnQAUVUvNQis57aGRXLXDbUKgYByBzz71HqeqwaZ5XnpI3mZxsAPTHqR60AX6KzdN1 u21KdoYUlVlXcS4AGMgdj71curqCzh864kEaZxk85P0oAmorC/4SKSb5rLTLmeMcFsYwfTgH2qaw 11bm7WzmtJbe4YnCtyAMZ5zg/pQBr0UVnSazaxamLBxIJSwXdtG3JGR3z39KANGiiqGp6rBpnlee kjeZnGwA9MepHrQBforC/wCErsf+eVz/AN8r/jR/wldj/wA8rn/vlf8AGgDdorGn8S2UE8kLxTlo 2KkhRjIOPWtKxu4761S5iDBHzgMOeDj+lAE9FZmp65a6c/lMGlm252pjj0ye2aqN4huYhvn0ieKI EbnJPA/FRQBvUVS07VbTUQRA5DgZMbDDAf59PWrM8qwQSTOCVjUsQOuAM0ASUVn6ZrFtqbSJCHVk AJD4BI9sH/ORWhQAUVUk1CKPUorAq/myruBAG3HPv7GrdABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVFcQrcQtE+drcHFS0UAZ X/CP2P8Adf8A76pU0GyRw4DZBz1rUooAY0atGUP3SMVm/wDCP2Oc4fn/AGq1aKAKdlpltYszQqcn uTmnXtjDeoFm3YHTBxVqigDK/wCEfsfR/wDvqprXSLW0mEsQbcPU1fooAzrjRbS4maWQMWbrg1F/ wj1l6P8A99VrUUARW8CW0KxR5CqMDNOeNZFKuoYHqDT6KAMe58PWsrFkJQmoB4ZTPM5x9K3JJFjX c5Cj1qJL23cgLKpz0oApW2gWcJBILn3rSSNY12ooUDsKdS0AUr3S7e9dXm3EqMDBqt/wj1j6P/31 WtSUAQ2lpFZw+VECF681NS0UANZFdSrAEHqDWXdaBazsWTKE+nStaigDnv8AhGVzxOcfSrEHh21j IMjM9ak08UA3SuFHvSR3MMrbUkBPpQA6KGOFNsaBR7Cn4paKAKl3p9tdj97GM+o4NZsnhqEkmOVl +vNbtJQBz3/CMn/n4/8AHamh8NwL/rZGf6cVt0tAEFtaQ2ybYUCj271NilooAhuLWG5TZMgYe/as mbw3AzExyFPY81uUUAc+vhlc/NOcfSr1rolpbkEqXb/a5rSpKAAKAMAYA9Khu7SO7hMUudp64NT0 UAZX/CPWPo//AH1U1ppNtZy+ZEGDYxyav0UAJiql1plrdHMsfzeo4q5RQBk/8I9Y+j/99VcstPgs QwhBGeuTVqigBKWiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACub1cpF4msprofuNo2tjABBPU57Egn2/XpKq3+n22oRCO4TdjO1gcFT7GgCwrK6h0YMrDII OQRQFVSxCgFjkkDqen9BXNNbavoSl7aUXNqoyVI4Uf7vUckng9ua3NMv49StBPGCvO1lP8LenvQB m2n/ACN97/1xH8krdrmJ472TxRdiwmSKXy1JZxkbcLx0PtVr7L4j/wCf+2/75H/xNAGnqn/ILu/+ uL/+gmq3hv8A5Adt/wAC/wDQjVnVP+QXd/8AXF//AEE1z+l3Osw6XH9ks4pLdQxVjyx5OeN2eue1 AE/i+1iFtFdBAsvmbSQANwI7+uNorSubeW/0HypQ3nvCpI4UlwAce3IrM09E1u987UJcywZH2Qpt VeevJ5Hr79eMZ6SgDH8L3X2jSxGxy8LFDlsnHUfQdvwq/qFyLOxmuCRlFJXIJBbsPzxWLATp3iuW JiRFdgsNzgDJ5z+YIH1qTxROZTbabE2JJ3BOSQMZwM+oz/KgB/hO2EWmtOQN07E5BP3RwB+efzpL T/kb73/riP5JW1FGkMSRRjCIoVR6AVi2n/I33v8A1xH8koATxVeSRwxWcBPmTn5gp+Yr0xjryT+m K0dJ06PTbRY1UeYwBkfrub/D0rF15lTxLYu7BVURkknAA3munoAayq6lHUMrDBBGQRVbUVVNJukR QqrA4AAwANpq3VXVP+QXd/8AXF//AEE0AVvDf/IDtv8AgX/oRrTrltIt9afToms7yGOA52qwGRyc /wAJ75rX02HVo52N/dRSxbcBUGDuyOfuj3oA0qpaxeGx02WZSBJjamSPvH+eOuPartYXi/8A5BcX /XYf+gtQAnhnTgsP9oXClriUkqzZJCnvz3PPPp9TW9VTSWV9KtCrBh5KjIOeQMGrdAEYWKBXcKka kl3OABnuT/jXNaRb/wBuajNf3gZo42ASM8r3wufQenfPPvv6p/yC7v8A64v/AOgmsvweynTpkDDc JiSM8gEDH8j+VAG9WL4osUuLA3Kp++hwcgZJXuPoM5/A1tVU1ZlTSrsswUeSwyTjkjAoAi0O+a/0 1JZGDSglXwMcj/62D+NcrYpJaW0WrQgt5U5R1/2cD24zkjPuK3vCKsulOSpAaYkEjqMAf0NV/D1q l7oF1bucCSUjPocLg/nQB0MUiTRJLGco6hlPqDWX4mvDa6YyIRvnPl9Rnb3OP0/Gm+GbmR7aWznB 820bYcnPHOBnPbBH0xUA/wCJp4nbJLQWQ4wDjcP65z9dtAEHh+2Nnr00BBDLbAsCQcMdhI49yate L/8AkFxf9dh/6C1Fp/yN97/1xH8ko8X/APILi/67D/0FqAGaKW0zVbjSpM+W58yEnvx9OeB9Mqa6 CsLxJDJCYNUt+JbdgG56rnjv0yce+6tG5v0i0lr5eAYg6Bh3I+UHHuRQBga47alqssAOYbOF3JVh 1C5J/PaMe1bHhv8A5Adt/wAC/wDQjVHTLUxeHLy5kLGa5id2LZzjBx9e5z71e8N/8gO2/wCBf+hG gCrd/wDI32X/AFxP8nrdrCu/+Rvsv+uJ/k9btAGF4v8A+QXF/wBdh/6C1btYXi//AJBcX/XYf+gt W7QBw9pZMdHbUbfIuLafORz8oAPT2PP0zXXadex6hZpcRjbnhlzkqfSszwh/yC5f+ux/9BWq6qfD +tBRhbG6OBkg7ce56YJ/I9zQBY8Qf8hTSP8Art/7Mlaeqf8AILu/+uL/APoJrM8Qf8hTSP8Art/7 Mlaeqf8AILu/+uL/APoJoAreG/8AkB23/Av/AEI1kBG17X3EhLWduTwrcYHHBH948/TvxWv4b/5A dt/wL/0I1l+DGUNdoWG4hCBnkgZz/MfnQB0qqqKERQqqMAAYAFI0cbOkjIpdM7WI5XPXB7U+igCO eVYIJJnBKxqWIHXAGa5FLKWbRJ9TJb7SZvNDKBkgHBIx05JJ/wB0VqeK7rFtFZI4EkzAsCQBtHqT 05xz7GrkE2mRaetmby1aMR+W2JFXdxyeD35oAs6fci8sYbgEZdQWwCAG7j881ZrnPCcwja6sS6MU bepTJDdiQfTgfnXR0AYXiD/kKaR/12/9mSt2sLxB/wAhTSP+u3/syVu0AYXiD/kKaR/12/8AZkrQ 1i8NjpssykCTG1MkfeP88dce1Z/iD/kKaR/12/8AZko8X/8AILi/67D/ANBagA8N6ciQLqE+57mb JBccqM9fqeuff892qmksr6VaFWDDyVGQc8gYNW6AOY8QxNpmpQalaKFZid3y/Lu9/qCfyJrbv5Em 0a4ljOUe3ZlPqCprN8YMo06FCw3GYEDPJABz/MfnVxlZPDRR1KstnggjBB2UAc9DA1jYWGsW6ksr MJhnqNxHpxkcZ+lddbXEd1bxzxHKSLke3t9aztAjSbw9DFIMo6urD1BY1S0tn0fV30yZh5ExLwsS M57ZPHXGPqBigCa7/wCRvsv+uJ/k9btYV3/yN9l/1xP8nrdoAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACkpaSgCnq0vlafM3fbgVntEZ9NhtIUO/gliMbe9XNVt7i6WOOJFKBwzEtirwUm LB44xQBRiupJFk8kL5cOVLN/ERTDqE/9mG62KGBPy+tRx2l5DbT2yKuGJIfPrT2s55NPhtyqqVYb ue1ADxdXbEs0SpH5e4E+tQWUt3Fpr3RaMh8uAQc1oXkMklk8MX3iuBmqrW1xJpa2+wI/AwG7ZoAY 2oXIhtpjGoWUgFe/NTvelrl4Yio8sZZm7e1R3VnMz2vlKrJF1BOKalnNDeTSeUkqSkHk8igBJNSu Fs4p/KALnBU9+at2sty88izRhUH3SO9R3NrLPJb7tpSNstV6gDK15wUghP8Ay0kGfpTZonuruB4E 2rAOWPGfapp7e4l1KKYxr5UYwMtz9avyAmNgvUggUAZkV/eSxkpCp2SbCexFTx3clx5pgChYzjLd zT9Ptmt7JY5PvkZbHrUFva3FtbywIFO5mIfPTNABHqnmQRbFzNKxUL6Y71It1MNQW1IVht3EjtVb 7A1tPbtBtdowdylsd85p+nb5ru6uSO+xaAEW+vJDOscKM0bYBHep47uSeUxxKBsA3k+vpTtOtntk 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 3tjPXo3tQBf8MzxNpMEIlQyqGJQMNwG49vxFZl6s+h64b5VLW07HccZ4Jyw9j3H/AOuls9W0SxlM ttZ3KOV2k9ePxb2q23ijT3Uo8E7KwwQUUgj86AL9vrOn3EQkW6jT1WRgpB+hqRNTspLlLaO5SSVx lQnzDv3HHaudlvvD0rl20+YE/wB35R+QbFTWusaHZnMFjKrA5DFAWHbqWzQAJFHrniKZpMyWsC7R 6HHGMg9ySR9K1P8AhHtL/wCfX/yI3+NZtnrmj2KsttaTxhjluASfxLVY/wCErsf+eVz/AN8r/jQB T1K2j0PVLS9tocW/3WAJbnnPU9cHjntXU1zd5r2k30Qiuba5dA24DAHP4N71LF4n06GJIo4LkIih VG0cAf8AAqAHeIP+QppH/Xb/ANmSt2ubuNe0m5lhlmtrlnhbdGcAYPHo3sKn/wCErsf+eVz/AN8r /jQBHr1zA2qaZtnjPlTHzMOPk+Zevp0Na15BFqmnyQpMDHKOJEIYZB/XkVzst94fmleWSxuS7sWY 56k/8Cq5beI9LtYFggt7lI1zgYBxk57tQBDo+qNpQNhqaPEqnMZKdBznp1GehGa25dV0+JC7XkJA /uuGP5Dmsi58QaTdrtuLOWQYIG5FJGeuDniqi3nh1GDDT58g5GTkfkWoAnYt4k1OIrG6WUA5Lr94 8ZGR3PHfoM1u6p/yC7v/AK4v/wCgmsqLxNpsKCOK2mRB0VUUAfhmiXxPp00TxSQXJR1KsNo5B/4F QBc8N/8AIDtv+Bf+hGjXtM/tGz/djM8XMfOAfUfjiqNt4j0u1gWCC3uUjXOBgHGTnu1Sf8JXY/8A PK5/75X/ABoAz9Nv31DX7CWT/WpEyOcYBID8/kRXW1zC6xoiXv2xbOdZ8k7gAOSMHjditzTdQi1K BpoVdVVtpDgA5wD2PvQBbooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlooASilooASj tS0UAJRS0UAJRS0UAJRS0UAJRS0UAJRS0UAV5bWKWTzGB3YxkGpY41iQIgwo6Cn0UAJRS0UAIaBS 0UAJS0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/Z ------=_Part_78170_495942728.1321754435942-- From BATV+d6e99f471a51b5d12582+3010+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 20 01:23:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAK7NcXj134382 for ; Sun, 20 Nov 2011 01:23:40 -0600 X-ASG-Debug-ID: 1321773814-72e301f00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D42FA1D1EEAA for ; Sat, 19 Nov 2011 23:23:35 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id wAGmgyZOOtbq471U for ; Sat, 19 Nov 2011 23:23:35 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RS1kU-000788-H1 for xfs@oss.sgi.com; Sun, 20 Nov 2011 07:23:34 +0000 Date: Sun, 20 Nov 2011 02:23:34 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs: force buffer writeback before blocking on the ilock in inode reclaim Subject: [PATCH] xfs: force buffer writeback before blocking on the ilock in inode reclaim Message-ID: <20111120072334.GA27386@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321773815 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80763 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean If we are doing synchronous inode reclaim we block the VM from making progress in memory reclaim. So if we encouter a flush locked inode make sure we force out all delayed buffers ASAP to speed up the wait for it to be unlocked. Without this we can get hangs of up to 30 seconds during workloads hitting synchronous inode reclaim. Reported-by: Simon Kirby Tested-by: Simon Kirby Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/xfs_sync.c 2011-11-19 20:14:52.110141228 +0100 +++ xfs/fs/xfs/xfs_sync.c 2011-11-19 20:40:17.381878121 +0100 @@ -762,7 +762,8 @@ xfs_reclaim_inode( struct xfs_perag *pag, int sync_mode) { - int error; + struct xfs_mount *mp = ip->i_mount; + int error; restart: error = 0; @@ -770,12 +771,25 @@ restart: if (!xfs_iflock_nowait(ip)) { if (!(sync_mode & SYNC_WAIT)) goto out; + + /* + * If we only have a single dirty inode in a cluster there is + * a fair chance that the AIL push may have pushed it into + * the buffer, but xfsbufd won't touch it until 30 seconds + * from now, and thus we will lock up here. + * + * Wakeup xfsbufd now, and force it to write back even + * recently dirtied buffers. + */ + set_bit(XBT_FORCE_FLUSH, &mp->m_ddev_targp->bt_flags); + wake_up_process(mp->m_ddev_targp->bt_task); + xfs_iflock(ip); } if (is_bad_inode(VFS_I(ip))) goto reclaim; - if (XFS_FORCED_SHUTDOWN(ip->i_mount)) { + if (XFS_FORCED_SHUTDOWN(mp)) { xfs_iunpin_wait(ip); goto reclaim; } @@ -829,8 +843,8 @@ restart: * is permanent then the next sync reclaim will reclaim the inode and * pass on the error. */ - if (error && error != EAGAIN && !XFS_FORCED_SHUTDOWN(ip->i_mount)) { - xfs_warn(ip->i_mount, + if (error && error != EAGAIN && !XFS_FORCED_SHUTDOWN(mp)) { + xfs_warn(mp, "inode 0x%llx background reclaim flush failed with %d", (long long)ip->i_ino, error); } @@ -860,7 +874,7 @@ reclaim: */ spin_lock(&pag->pag_ici_lock); if (!radix_tree_delete(&pag->pag_ici_root, - XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino))) + XFS_INO_TO_AGINO(mp, ip->i_ino))) ASSERT(0); __xfs_inode_clear_reclaim(pag, ip); spin_unlock(&pag->pag_ici_lock); From BATV+d6e99f471a51b5d12582+3010+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 20 01:59:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAK7xKDp136870 for ; Sun, 20 Nov 2011 01:59:20 -0600 X-ASG-Debug-ID: 1321775959-38a1019a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DD1D4265546 for ; Sat, 19 Nov 2011 23:59:19 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id CwunWIVj7q8NFywY for ; Sat, 19 Nov 2011 23:59:19 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RS2J4-000532-Q0; Sun, 20 Nov 2011 07:59:18 +0000 Date: Sun, 20 Nov 2011 02:59:18 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Simon Kirby X-ASG-Orig-Subj: Re: [PATCH] xfs: force buffer writeback before blocking on the ilock in inode reclaim Subject: Re: [PATCH] xfs: force buffer writeback before blocking on the ilock in inode reclaim Message-ID: <20111120075918.GA19393@infradead.org> References: <20111120072334.GA27386@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111120072334.GA27386@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321775959 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80765 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I should probably keep Simon on Cc for this one.. On Sun, Nov 20, 2011 at 02:23:34AM -0500, Christoph Hellwig wrote: > If we are doing synchronous inode reclaim we block the VM from making > progress in memory reclaim. So if we encouter a flush locked inode > make sure we force out all delayed buffers ASAP to speed up the wait > for it to be unlocked. Without this we can get hangs of up to 30 > seconds during workloads hitting synchronous inode reclaim. > > Reported-by: Simon Kirby > Tested-by: Simon Kirby > Signed-off-by: Christoph Hellwig > > Index: xfs/fs/xfs/xfs_sync.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_sync.c 2011-11-19 20:14:52.110141228 +0100 > +++ xfs/fs/xfs/xfs_sync.c 2011-11-19 20:40:17.381878121 +0100 > @@ -762,7 +762,8 @@ xfs_reclaim_inode( > struct xfs_perag *pag, > int sync_mode) > { > - int error; > + struct xfs_mount *mp = ip->i_mount; > + int error; > > restart: > error = 0; > @@ -770,12 +771,25 @@ restart: > if (!xfs_iflock_nowait(ip)) { > if (!(sync_mode & SYNC_WAIT)) > goto out; > + > + /* > + * If we only have a single dirty inode in a cluster there is > + * a fair chance that the AIL push may have pushed it into > + * the buffer, but xfsbufd won't touch it until 30 seconds > + * from now, and thus we will lock up here. > + * > + * Wakeup xfsbufd now, and force it to write back even > + * recently dirtied buffers. > + */ > + set_bit(XBT_FORCE_FLUSH, &mp->m_ddev_targp->bt_flags); > + wake_up_process(mp->m_ddev_targp->bt_task); > + > xfs_iflock(ip); > } > > if (is_bad_inode(VFS_I(ip))) > goto reclaim; > - if (XFS_FORCED_SHUTDOWN(ip->i_mount)) { > + if (XFS_FORCED_SHUTDOWN(mp)) { > xfs_iunpin_wait(ip); > goto reclaim; > } > @@ -829,8 +843,8 @@ restart: > * is permanent then the next sync reclaim will reclaim the inode and > * pass on the error. > */ > - if (error && error != EAGAIN && !XFS_FORCED_SHUTDOWN(ip->i_mount)) { > - xfs_warn(ip->i_mount, > + if (error && error != EAGAIN && !XFS_FORCED_SHUTDOWN(mp)) { > + xfs_warn(mp, > "inode 0x%llx background reclaim flush failed with %d", > (long long)ip->i_ino, error); > } > @@ -860,7 +874,7 @@ reclaim: > */ > spin_lock(&pag->pag_ici_lock); > if (!radix_tree_delete(&pag->pag_ici_root, > - XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino))) > + XFS_INO_TO_AGINO(mp, ip->i_ino))) > ASSERT(0); > __xfs_inode_clear_reclaim(pag, ip); > spin_unlock(&pag->pag_ici_lock); > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From david@fromorbit.com Sun Nov 20 02:22:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAK8MgFl138132 for ; Sun, 20 Nov 2011 02:22:42 -0600 X-ASG-Debug-ID: 1321777358-5b1d00f30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B86161DBE77A for ; Sun, 20 Nov 2011 00:22:39 -0800 (PST) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id s0POrQFarEqkVADb for ; Sun, 20 Nov 2011 00:22:39 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av4EADy3yE55LGY5/2dsb2JhbABDqj6BBoFyAQEEAScTHCMFCwgDDgcCAS4UJQMTDhOIA7UmEooFBJQ7kho Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail04.adl6.internode.on.net with ESMTP; 20 Nov 2011 18:52:37 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RS2fb-0002AP-Fr; Sun, 20 Nov 2011 19:22:35 +1100 Date: Sun, 20 Nov 2011 19:22:35 +1100 From: Dave Chinner To: Christoph Hellwig Cc: Chandra Seetharaman , XFS Mailing List X-ASG-Orig-Subj: Re: [PATCH] xfs: Remove the entries from the queue while waking them up. Subject: Re: [PATCH] xfs: Remove the entries from the queue while waking them up. Message-ID: <20111120082235.GN7046@dastard> References: <1321644054.2201.80.camel@chandra-lucid.austin.ibm.com> <20111119181929.GA25739@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111119181929.GA25739@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1321777360 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80767 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Nov 19, 2011 at 01:19:29PM -0500, Christoph Hellwig wrote: > Thanks a lot for tracking this issue down! > > Unfortunately I don't think the fix is entirely safe. If we remove > the ticket from the list before the wakeup we have to assume no one > else ever wakes up a process waiting for log space. In Linux that > generally isn't a safe assumption - e.g. higher level code could have > added itself to another waitqueue before calling into this code ( But doing that would be a bug in the higher level code, yes? You are only supposed to add yourself to a wait queue just before changing the task state and sleeping, not just before execute something that is likely to block and sleep and use waitqueues itself (like a filesystem transaction) .... > possibly even outside the XFS code) and now getting a wake up, or > other bits of the kernel could have all kinds of reasons to wake > this process up. Signals are the only ones I can think of that are likely to occur while waiting on a private wait queue. However, that is likely to occur, so I agree that the waiting context needs to do the queue removal, not the waker. > Below is patch I hacked up on the airplane today - it makes sure > we always wake other waiters on the log space queues first before > adding a new process and should have the same effect. Can you > test if this also fixes the 234 hang for you? A few comments.... > > --- > From: Christoph Hellwig > Subject: xfs: fix and cleanup logspace waiter lists > > Apply the scheme used in log_regrant_write_log_space to wake up any > other threads waiting for log space before the newly added one to > log_regrant_write_log_space as well, and factor the code into > readable helpers. For each of the queues we have: > > - one helper to wake up all waiting threads, and return if we > succeeded into doing that. These helpers will also be usable > by xfs_log_move_tail once we remove the current opportunistic > wakeups in it. > - one helper to sleep on t_wait until enough log space is available, > which is modelled after the Linux waitqueue model. > > and rewrite log_regrant_write_log_space and log_regrant_write_log_space > around these helpers, including comments documenting what is going on. > These two function now use one and the same algorithm for waiting > on log space instead of subtly different ones before. > > Signed-off-by: Christoph Hellwig > > --- > fs/xfs/linux-2.6/xfs_trace.h | 12 - > fs/xfs/xfs_log.c | 329 +++++++++++++++++++++---------------------- > 2 files changed, 170 insertions(+), 171 deletions(-) > > Index: linux-2.6/fs/xfs/xfs_log.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_log.c 2011-11-19 15:51:55.689999172 +0100 > +++ linux-2.6/fs/xfs/xfs_log.c 2011-11-19 16:57:07.226659537 +0100 > @@ -670,6 +670,52 @@ xfs_log_write( > return error; > } > > +STATIC bool > +xlog_wake_writeq( > + struct log *log, > + int free_bytes) > +{ > + struct xlog_ticket *tic; > + > + list_for_each_entry(tic, &log->l_writeq, t_queue) { > + ASSERT(tic->t_flags & XLOG_TIC_PERM_RESERV); > + > + if (free_bytes < tic->t_unit_res) > + return false; > + free_bytes -= tic->t_unit_res; > + > + trace_xfs_log_regrant_write_wake_up(log, tic); > + wake_up(&tic->t_wait); > + } > + > + return true; > +} > + > +STATIC bool > +xlog_wake_reserveq( > + struct log *log, > + int free_bytes) > +{ > + struct xlog_ticket *tic; > + int need_bytes; > + > + list_for_each_entry(tic, &log->l_reserveq, t_queue) { > + if (tic->t_flags & XLOG_TIC_PERM_RESERV) > + need_bytes = tic->t_unit_res*tic->t_cnt; > + else > + need_bytes = tic->t_unit_res; > + > + if (free_bytes < need_bytes) > + return false; > + free_bytes -= tic->t_unit_res; > + > + trace_xfs_log_grant_wake_up(log, tic); > + wake_up(&tic->t_wait); > + } > + > + return true; > +} Be nice to factor these into a single function - they do exactly the same thing except for the queue they walk and the need_bytes calculation. > + > void > xfs_log_move_tail(xfs_mount_t *mp, > xfs_lsn_t tail_lsn) Also, wouldn't it be a good idea to use these helpers in xfs_log_move_tail() and remove the code duplication from there as well? i.e. the four places we do this open coded wakeup walk could be replaced with a single implementation.... > @@ -2492,11 +2538,42 @@ restart: > return 0; > } /* xlog_state_get_iclog_space */ > > +STATIC int > +xlog_reserveq_wait( > + struct log *log, > + struct xlog_ticket *tic, > + int need_bytes) > +{ > + list_add_tail(&tic->t_queue, &log->l_reserveq); > + > + do { > + if (XLOG_FORCED_SHUTDOWN(log)) > + goto shutdown; > + xlog_grant_push_ail(log, need_bytes); > + > + XFS_STATS_INC(xs_sleep_logspace); > + trace_xfs_log_grant_sleep(log, tic); > + > + xlog_wait(&tic->t_wait, &log->l_grant_reserve_lock); > + trace_xfs_log_grant_wake(log, tic); > + > + spin_lock(&log->l_grant_reserve_lock); > + if (XLOG_FORCED_SHUTDOWN(log)) > + goto shutdown; > + } while (xlog_space_left(log, &log->l_grant_reserve_head) < need_bytes); > + > + list_del_init(&tic->t_queue); > + return 0; > +shutdown: > + list_del_init(&tic->t_queue); > + return XFS_ERROR(EIO); > +} Same with this function and xlog_writeq_wait - they are identical code just operating on a different grant head. If we had struct xlog_grant_head { spinlock_t lock; struct list_head queue; atomic64_t head; }; Rather than the current open-coded definitions, then this could all share the same code rather than continuing to duplicate it. If we've got to restructure the code to fix the bug, it makes sense to me to remove the code duplication as well... > + > /* > * Atomically get the log space required for a log ticket. > * > - * Once a ticket gets put onto the reserveq, it will only return after > - * the needed reservation is satisfied. > + * Once a ticket gets put onto the reserveq, it will only return after the > + * needed reservation is satisfied. > * > * This function is structured so that it has a lock free fast path. This is > * necessary because every new transaction reservation will come through this > @@ -2504,113 +2581,94 @@ restart: > * every pass. > * > * As tickets are only ever moved on and off the reserveq under the > - * l_grant_reserve_lock, we only need to take that lock if we are going > - * to add the ticket to the queue and sleep. We can avoid taking the lock if the > - * ticket was never added to the reserveq because the t_queue list head will be > - * empty and we hold the only reference to it so it can safely be checked > - * unlocked. > + * l_grant_reserve_lock, we only need to take that lock if we are going to add > + * the ticket to the queue and sleep. We can avoid taking the lock if the ticket > + * was never added to the reserveq because the t_queue list head will be empty > + * and we hold the only reference to it so it can safely be checked unlocked. > */ > STATIC int > -xlog_grant_log_space(xlog_t *log, > - xlog_ticket_t *tic) > +xlog_grant_log_space( > + struct log *log, > + struct xlog_ticket *tic) > { > - int free_bytes; > - int need_bytes; > + int free_bytes, need_bytes; > + int error = 0; > > -#ifdef DEBUG > - if (log->l_flags & XLOG_ACTIVE_RECOVERY) > - panic("grant Recovery problem"); > -#endif > + ASSERT(!(log->l_flags & XLOG_ACTIVE_RECOVERY)); > > trace_xfs_log_grant_enter(log, tic); > > + /* > + * If there are other waiters on the queue then give them a chance at > + * logspace before us. Wake up the first waiters, if we do not wake > + * up all the waiters then go to sleep waiting for more free space, > + * otherwise try to get some space for this transaction. > + */ > need_bytes = tic->t_unit_res; > if (tic->t_flags & XFS_LOG_PERM_RESERV) > need_bytes *= tic->t_ocnt; ..... > free_bytes = xlog_space_left(log, &log->l_grant_reserve_head); > - if (free_bytes < need_bytes) { > + if (!list_empty_careful(&log->l_reserveq)) { > spin_lock(&log->l_grant_reserve_lock); ..... > + if (!xlog_wake_reserveq(log, free_bytes)) > + error = xlog_reserveq_wait(log, tic, need_bytes); > + spin_unlock(&log->l_grant_reserve_lock); > + } else if (free_bytes < need_bytes) { > spin_lock(&log->l_grant_reserve_lock); > - list_del_init(&tic->t_queue); > + error = xlog_reserveq_wait(log, tic, need_bytes); > spin_unlock(&log->l_grant_reserve_lock); > } I don't think this logic is quite correct. When we have a waiter on the queue, we try to wake all the waiters before sleeping if that did not succeed. If we woke everyone, we allow this process to continue. The problem is that we don't check to see if there is space remaining for this process to continue after doing all the wakeups. i.e. if need_bytes = 10000 and free_bytes = 50000, and the waiters on the queue total 45000 bytes, then we fall through with free_bytes = 5000 and need_bytes = 10000. In that case, we should have gone to sleep because we are 5000 bytes short of our required space but we don't and potentially deadlock due to oversubscribing the log space. IOWs, xlog_wake_reserveq() needs to return the amount of remaining free space after the wakeups so we can then run the if (free_bytes < need_bytes) check unconditionally.... ..... > */ > STATIC int > -xlog_regrant_write_log_space(xlog_t *log, > - xlog_ticket_t *tic) > +xlog_regrant_write_log_space( > + struct log *log, > + struct xlog_ticket *tic) Ditto for the write grant head manipulations. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Nov 20 02:33:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAK8Xojt139078 for ; Sun, 20 Nov 2011 02:33:50 -0600 X-ASG-Debug-ID: 1321778028-61ba00a40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B2C482659C2 for ; Sun, 20 Nov 2011 00:33:48 -0800 (PST) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id aMcYLFQmHQwa9ZrH for ; Sun, 20 Nov 2011 00:33:48 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAMe6yE55LGY5/2dsb2JhbAA7CKo+gQaBcgEBBScTHCMQCAMOCi4UJQMhE70qEoZUgzEElDuSGg Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail04.adl6.internode.on.net with ESMTP; 20 Nov 2011 19:03:47 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RS2qP-0002BS-Sb; Sun, 20 Nov 2011 19:33:45 +1100 Date: Sun, 20 Nov 2011 19:33:45 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: force buffer writeback before blocking on the ilock in inode reclaim Subject: Re: [PATCH] xfs: force buffer writeback before blocking on the ilock in inode reclaim Message-ID: <20111120083345.GO7046@dastard> References: <20111120072334.GA27386@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111120072334.GA27386@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1321778029 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80767 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Nov 20, 2011 at 02:23:34AM -0500, Christoph Hellwig wrote: > If we are doing synchronous inode reclaim we block the VM from making > progress in memory reclaim. So if we encouter a flush locked inode > make sure we force out all delayed buffers ASAP to speed up the wait > for it to be unlocked. Without this we can get hangs of up to 30 > seconds during workloads hitting synchronous inode reclaim. I don't think we need to push out all delayed buffers - that's an awfully big sledge hammer to get a single buffer moving. Indeed, we already have a mechanism for dealing with this problem - xfs_buf_delwri_promote() - when we hit it during AIL flushing. IOWs, we only need to promote the buffer the inode sits in and kick xfsbufd. that is, something like: bp = xfs_incore(ip->i_mount->m_ddev_targp, iip->ili_format.ilf_blkno, iip->ili_format.ilf_len, XBF_TRYLOCK); if (bp && XFS_BUF_ISDELAYWRITE(bp)) { xfs_buf_delwri_promote(bp); wake_up_process(mp->m_ddev_targp->bt_task); } if (bp) xfs_buf_relse(bp); Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+d6e99f471a51b5d12582+3010+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 20 05:43:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAKBhqge152829 for ; Sun, 20 Nov 2011 05:43:53 -0600 X-ASG-Debug-ID: 1321789427-45f500ad0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3BCBA16293CF for ; Sun, 20 Nov 2011 03:43:48 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id FDfQdCtbJo6XBsrr for ; Sun, 20 Nov 2011 03:43:48 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RS5oE-0003tf-DA; Sun, 20 Nov 2011 11:43:42 +0000 Date: Sun, 20 Nov 2011 06:43:42 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , Chandra Seetharaman , XFS Mailing List X-ASG-Orig-Subj: Re: [PATCH] xfs: Remove the entries from the queue while waking them up. Subject: Re: [PATCH] xfs: Remove the entries from the queue while waking them up. Message-ID: <20111120114342.GA11278@infradead.org> References: <1321644054.2201.80.camel@chandra-lucid.austin.ibm.com> <20111119181929.GA25739@infradead.org> <20111120082235.GN7046@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111120082235.GN7046@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321789429 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80780 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Nov 20, 2011 at 07:22:35PM +1100, Dave Chinner wrote: > Be nice to factor these into a single function - they do exactly the > same thing except for the queue they walk and the need_bytes > calculation. I thought about it, and I think we can do it as a broader refactoring of the two list/lock/head tuples for the reserve/grant queues. But I'd rather do a simple minimal patch that can easily be backported first. > > > + > > void > > xfs_log_move_tail(xfs_mount_t *mp, > > xfs_lsn_t tail_lsn) > > Also, wouldn't it be a good idea to use these helpers in > xfs_log_move_tail() and remove the code duplication from there as > well? i.e. the four places we do this open coded wakeup walk could > be replaced with a single implementation.... Yes, I even hinted at that in the changelog. To make it not ugly it requires removing the opportunistic wakers. Fortunately I already have patches for that, which I plan to sumit for 3.3. We an easily do that factoring as part of that patchset. > Same with this function and xlog_writeq_wait - they are identical > code just operating on a different grant head. If we had > > struct xlog_grant_head { > spinlock_t lock; > struct list_head queue; > atomic64_t head; > }; > > Rather than the current open-coded definitions, then this could all > share the same code rather than continuing to duplicate it. If we've > got to restructure the code to fix the bug, it makes sense to me to > remove the code duplication as well... I agree. But let's fix the issue first and to the cleanups later. > ..... > > free_bytes = xlog_space_left(log, &log->l_grant_reserve_head); > > + if (!list_empty_careful(&log->l_reserveq)) { > > spin_lock(&log->l_grant_reserve_lock); > ..... > > + if (!xlog_wake_reserveq(log, free_bytes)) > > + error = xlog_reserveq_wait(log, tic, need_bytes); > > + spin_unlock(&log->l_grant_reserve_lock); > > + } else if (free_bytes < need_bytes) { > > spin_lock(&log->l_grant_reserve_lock); > > - list_del_init(&tic->t_queue); > > + error = xlog_reserveq_wait(log, tic, need_bytes); > > spin_unlock(&log->l_grant_reserve_lock); > > } > > I don't think this logic is quite correct. When we have a waiter on > the queue, we try to wake all the waiters before sleeping if that > did not succeed. If we woke everyone, we allow this process to > continue. The problem is that we don't check to see if there is > space remaining for this process to continue after doing all the > wakeups. > > i.e. if need_bytes = 10000 and free_bytes = 50000, and the waiters > on the queue total 45000 bytes, then we fall through with free_bytes > = 5000 and need_bytes = 10000. In that case, we should have gone to > sleep because we are 5000 bytes short of our required space but we > don't and potentially deadlock due to oversubscribing the log space. > > IOWs, xlog_wake_reserveq() needs to return the amount of remaining > free space after the wakeups so we can then run the if (free_bytes < > need_bytes) check unconditionally.... Indeed. I think the better way to do it is to make the free_bytes in xlog_wake_reserveq a pointer, so that the caller sees the update and then do: free_bytes = xlog_space_left(log, &log->l_grant_reserve_head); if (!list_empty_careful(&log->l_reserveq)) { spin_lock(&log->l_grant_reserve_lock); if (!xlog_wake_reserveq(log, &free_bytes) || free_bytes < need_bytes) error = xlog_reserveq_wait(log, tic, need_bytes); spin_unlock(&log->l_grant_reserve_lock); } else if (free_bytes < need_bytes) { spin_lock(&log->l_grant_reserve_lock); list_del_init(&tic->t_queue); error = xlog_reserveq_wait(log, tic, need_bytes); spin_unlock(&log->l_grant_reserve_lock); } From BATV+d6e99f471a51b5d12582+3010+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 20 05:46:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAKBkAMJ152944 for ; Sun, 20 Nov 2011 05:46:11 -0600 X-ASG-Debug-ID: 1321789569-6da200c30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 324A01D1DB6F for ; Sun, 20 Nov 2011 03:46:09 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id YdTyVaVHSlcAZNl1 for ; Sun, 20 Nov 2011 03:46:09 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RS5qb-0004lb-6l; Sun, 20 Nov 2011 11:46:09 +0000 Date: Sun, 20 Nov 2011 06:46:09 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: force buffer writeback before blocking on the ilock in inode reclaim Subject: Re: [PATCH] xfs: force buffer writeback before blocking on the ilock in inode reclaim Message-ID: <20111120114609.GA14997@infradead.org> References: <20111120072334.GA27386@infradead.org> <20111120083345.GO7046@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111120083345.GO7046@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321789570 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80779 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Nov 20, 2011 at 07:33:45PM +1100, Dave Chinner wrote: > On Sun, Nov 20, 2011 at 02:23:34AM -0500, Christoph Hellwig wrote: > > If we are doing synchronous inode reclaim we block the VM from making > > progress in memory reclaim. So if we encouter a flush locked inode > > make sure we force out all delayed buffers ASAP to speed up the wait > > for it to be unlocked. Without this we can get hangs of up to 30 > > seconds during workloads hitting synchronous inode reclaim. > > I don't think we need to push out all delayed buffers - that's an > awfully big sledge hammer to get a single buffer moving. Indeed, we > already have a mechanism for dealing with this problem - > xfs_buf_delwri_promote() - when we hit it during AIL flushing. > > IOWs, we only need to promote the buffer the inode sits in and kick > xfsbufd. that is, something like: > > bp = xfs_incore(ip->i_mount->m_ddev_targp, iip->ili_format.ilf_blkno, > iip->ili_format.ilf_len, XBF_TRYLOCK); > if (bp && XFS_BUF_ISDELAYWRITE(bp)) { > xfs_buf_delwri_promote(bp); > wake_up_process(mp->m_ddev_targp->bt_task); > } > if (bp) > xfs_buf_relse(bp); Yes, we could try a variant of that. Note that a buffer in synchronous reclaim isn't guaranteed to actually have a log item, but we can get the same information from ip->i_imap. From chingimleong@yahoo.com.sg Sun Nov 20 07:14:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAKDENhM156927 for ; Sun, 20 Nov 2011 07:14:23 -0600 X-ASG-Debug-ID: 1321794861-6db002380000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from nm29.bullet.mail.sp2.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 5CDDD1D14433 for ; Sun, 20 Nov 2011 05:14:21 -0800 (PST) Received: from nm29.bullet.mail.sp2.yahoo.com (nm29.bullet.mail.sp2.yahoo.com [98.139.91.99]) by cuda.sgi.com with SMTP id hGJUhzROK77qlWeB for ; Sun, 20 Nov 2011 05:14:21 -0800 (PST) Received: from [98.139.91.63] by nm29.bullet.mail.sp2.yahoo.com with NNFMP; 20 Nov 2011 13:14:21 -0000 Received: from [98.139.91.53] by tm3.bullet.mail.sp2.yahoo.com with NNFMP; 20 Nov 2011 13:14:21 -0000 Received: from [127.0.0.1] by omp1053.mail.sp2.yahoo.com with NNFMP; 20 Nov 2011 13:14:21 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 565711.70492.bm@omp1053.mail.sp2.yahoo.com Received: (qmail 68400 invoked by uid 60001); 20 Nov 2011 13:14:19 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com.sg; s=s1024; t=1321794859; bh=Ik0VHTZ3+Q5fjAfeq5xNv1WMgn9Gd2Ol6b/j8p8dI6o=; h=X-YMail-OSG:Received:X-Mailer:Message-ID:Date:From:Subject:To:MIME-Version:Content-Type; b=Q3tdGEFS/YPnMA4mgGfuawS/2erScIpC1z2icgpEwadAJTuyHsHx3l1EUAJhwboai+FXRoqR+oWOU9MciZne70FI7BZQItfqwNJCsP2wEQEKmvLXTRH2uYY0S8ifGuGSThi5FXbh+ArWE8U7zERgjPt+o12dYi0muFS2Kvc3F8s= DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com.sg; h=X-YMail-OSG:Received:X-Mailer:Message-ID:Date:From:Subject:To:MIME-Version:Content-Type; b=GflWzI824sohDf80YOFcD/ugOVeWoS0DBjFf8paWXPERpjlNfF5nErBcozAV8W/vxb7JUNHWxCb3BIbukLxeoed7RkkTqQcjCpcPzg/J+w48D2j59nAA816YFo5Bxi1kca4vRYT46DiG36W5PutIpY4awFmKuOXMlJM87nrAoeI=; X-YMail-OSG: T28oaDgVM1lBOPiB.YHAFp5WKiVm0a1uj7Er4NabzqDEwYu 7ijxDTAYW Received: from [218.186.10.226] by web190714.mail.sg3.yahoo.com via HTTP; Sun, 20 Nov 2011 21:14:18 SGT X-Mailer: YahooMailClassic/15.0.4 YahooMailWebService/0.8.115.325013 Message-ID: <1321794858.60631.YahooMailClassic@web190714.mail.sg3.yahoo.com> Date: Sun, 20 Nov 2011 21:14:18 +0800 (SGT) From: Gim Leong Chin X-ASG-Orig-Subj: Interrupted xfsdump Resume Behaviour for Regular Dump File Subject: Interrupted xfsdump Resume Behaviour for Regular Dump File To: xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="1346750579-758882200-1321794858=:60631" X-Barracuda-Connect: nm29.bullet.mail.sp2.yahoo.com[98.139.91.99] X-Barracuda-Start-Time: 1321794862 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0567 1.0000 -1.6581 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.66 X-Barracuda-Spam-Status: No, SCORE=-1.66 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80785 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --1346750579-758882200-1321794858=:60631 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi,=0A=0AI have observed this since some time back. I have just done an ex= periment.=0A=0A1) Using xfsdump 3.0.6, I first did a full dump to regular f= ile and restore, checked that every thing is correct.=0A=0A2) I then did th= e same dump again, but interrupted it. Then I resumed the dump. I noted t= hat the resumed dump file is the exact same size as the full dump file.=0A= =0A3) First I did a cumulative restore, with the interrupted dump file, fol= lowed by the resumed dump file. I checked that the restore is correct.=0A= =0A4) I then did a non-cumulative restore, using only resumed dump file. T= he resume is successful, and I checked that the restore is correct.=0A=0ATh= e logs are attached.=0A=0AThe conclusion is that the so-called resume of an= interrupted dump session to regular file produces a full dump file, that i= s sufficient by itself to do the full restore.=0A=0AAre my observations of = the behaviour of xfsdump correct?=0A=0A=0AEverything was done on openSUSE 1= 1.4 x86_64.=0A=0A=0AGL --1346750579-758882200-1321794858=:60631 Content-Type: application/octet-stream; name="xfsdump3.0.6_interruptissue" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="xfsdump3.0.6_interruptissue" b3B0aW11czovdG1wICMgL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42 L3hmc2R1bXAvZHVtcC94ZnNkdW1wIC1mIC90bXAvbW50MS9mdWxsZHVtcCAv dG1wL21udDIKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1 bXAvZHVtcC94ZnNkdW1wOiB1c2luZyBmaWxlIGR1bXAgKGRyaXZlX3NpbXBs ZSkgc3RyYXRlZ3kKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hm c2R1bXAvZHVtcC94ZnNkdW1wOiB2ZXJzaW9uIDMuMC42IChkdW1wIGZvcm1h dCAzLjApIC0gUnVubmluZyBzaW5nbGUtdGhyZWFkZWQKCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PSBkdW1wIGxhYmVsIGRpYWxvZyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KCnBsZWFzZSBlbnRlciBsYWJlbCBm b3IgdGhpcyBkdW1wIHNlc3Npb24gKHRpbWVvdXQgaW4gMzAwIHNlYykKIC0+ IHRtcG1udDJmdWxsCnNlc3Npb24gbGFiZWwgZW50ZXJlZDogInRtcG1udDJm dWxsIgoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBlbmQg ZGlhbG9nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKL2hv bWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvZHVtcC94ZnNk dW1wOiBsZXZlbCAwIGR1bXAgb2Ygb3B0aW11czovdG1wL21udDIKL2hvbWUv Y2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvZHVtcC94ZnNkdW1w OiBkdW1wIGRhdGU6IFN1biBOb3YgMjAgMTc6NDE6MTkgMjAxMQovaG9tZS9j aGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6 IHNlc3Npb24gaWQ6IDI2MTM1MGMyLTU0YjMtNDFhZC1hYjE4LTg2ZTJhY2M4 M2ZjNgovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9k dW1wL3hmc2R1bXA6IHNlc3Npb24gbGFiZWw6ICJ0bXBtbnQyZnVsbCIKL2hv bWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvZHVtcC94ZnNk dW1wOiBpbm8gbWFwIHBoYXNlIDE6IGNvbnN0cnVjdGluZyBpbml0aWFsIGR1 bXAgbGlzdAovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVt cC9kdW1wL3hmc2R1bXA6IGlubyBtYXAgcGhhc2UgMjogc2tpcHBpbmcgKG5v IHBydW5pbmcgbmVjZXNzYXJ5KQovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAt My4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6IGlubyBtYXAgcGhhc2UgMzog c2tpcHBpbmcgKG9ubHkgb25lIGR1bXAgc3RyZWFtKQovaG9tZS9jaGluZ2wv WEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6IGlubyBt YXAgY29uc3RydWN0aW9uIGNvbXBsZXRlCi9ob21lL2NoaW5nbC9YRlMveGZz ZHVtcC0zLjAuNi94ZnNkdW1wL2R1bXAveGZzZHVtcDogZXN0aW1hdGVkIGR1 bXAgc2l6ZTogMzAzODIyMjE0NCBieXRlcwoKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09IG1lZGlhIGxhYmVsIGRpYWxvZyA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQoKcGxlYXNlIGVudGVyIGxhYmVsIGZvciBtZWRp YSBpbiBkcml2ZSAwICh0aW1lb3V0IGluIDMwMCBzZWMpCiAtPiByZWd1bGFy ZmlsZTEKbWVkaWEgbGFiZWwgZW50ZXJlZDogInJlZ3VsYXJmaWxlMSIKCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZW5kIGRpYWxvZyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi9ob21lL2NoaW5n bC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL2R1bXAveGZzZHVtcDogY3Jl YXRpbmcgZHVtcCBzZXNzaW9uIG1lZGlhIGZpbGUgMCAobWVkaWEgMCwgZmls ZSAwKQovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9k dW1wL3hmc2R1bXA6IGR1bXBpbmcgaW5vIG1hcAovaG9tZS9jaGluZ2wvWEZT L3hmc2R1bXAtMy4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6IGR1bXBpbmcg ZGlyZWN0b3JpZXMKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hm c2R1bXAvZHVtcC94ZnNkdW1wOiBkdW1waW5nIG5vbi1kaXJlY3RvcnkgZmls ZXMKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvZHVt cC94ZnNkdW1wOiBlbmRpbmcgbWVkaWEgZmlsZQovaG9tZS9jaGluZ2wvWEZT L3hmc2R1bXAtMy4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6IG1lZGlhIGZp bGUgc2l6ZSAzMDI4NTcyMDY0IGJ5dGVzCi9ob21lL2NoaW5nbC9YRlMveGZz ZHVtcC0zLjAuNi94ZnNkdW1wL2R1bXAveGZzZHVtcDogZHVtcCBzaXplIChu b24tZGlyIGZpbGVzKSA6IDMwMjYzOTI0NDAgYnl0ZXMKL2hvbWUvY2hpbmds L1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvZHVtcC94ZnNkdW1wOiBkdW1w IGNvbXBsZXRlOiAxMDYgc2Vjb25kcyBlbGFwc2VkCi9ob21lL2NoaW5nbC9Y RlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL2R1bXAveGZzZHVtcDogRHVtcCBT dGF0dXM6IFNVQ0NFU1MKb3B0aW11czovdG1wICMgCm9wdGltdXM6L3RtcCAj IApvcHRpbXVzOi90bXAgIyAvaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4w LjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmUgLWYgL3RtcC9tbnQxL2Z1 bGxkdW1wIC90bXAvbW50MwovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4w LjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmU6IHVzaW5nIGZpbGUgZHVt cCAoZHJpdmVfc2ltcGxlKSBzdHJhdGVneQovaG9tZS9jaGluZ2wvWEZTL3hm c2R1bXAtMy4wLjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmU6IHZlcnNp b24gMy4wLjYgKGR1bXAgZm9ybWF0IDMuMCkgLSBSdW5uaW5nIHNpbmdsZS10 aHJlYWRlZAovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVt cC9yZXN0b3JlL3hmc3Jlc3RvcmU6IHNlYXJjaGluZyBtZWRpYSBmb3IgZHVt cAovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9yZXN0 b3JlL3hmc3Jlc3RvcmU6IGV4YW1pbmluZyBtZWRpYSBmaWxlIDAKL2hvbWUv Y2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNy ZXN0b3JlOiBkdW1wIGRlc2NyaXB0aW9uOiAKL2hvbWUvY2hpbmdsL1hGUy94 ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBob3N0 bmFtZTogb3B0aW11cwovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYv eGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmU6IG1vdW50IHBvaW50OiAvdG1w L21udDIKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAv cmVzdG9yZS94ZnNyZXN0b3JlOiB2b2x1bWU6IC9kZXYvc2RiMgovaG9tZS9j aGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jl c3RvcmU6IHNlc3Npb24gdGltZTogU3VuIE5vdiAyMCAxNzo0MToxOSAyMDEx Ci9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3Rv cmUveGZzcmVzdG9yZTogbGV2ZWw6IDAKL2hvbWUvY2hpbmdsL1hGUy94ZnNk dW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBzZXNzaW9u IGxhYmVsOiAidG1wbW50MmZ1bGwiCi9ob21lL2NoaW5nbC9YRlMveGZzZHVt cC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9yZTogbWVkaWEgbGFi ZWw6ICJyZWd1bGFyZmlsZTEiCi9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0z LjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9yZTogZmlsZSBzeXN0ZW0g aWQ6IDNlZmJhMDRkLTVhNWUtNDAyYS04ODJjLTAzOWU2NjhkNTYzMwovaG9t ZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9yZXN0b3JlL3hm c3Jlc3RvcmU6IHNlc3Npb24gaWQ6IDI2MTM1MGMyLTU0YjMtNDFhZC1hYjE4 LTg2ZTJhY2M4M2ZjNgovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYv eGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmU6IG1lZGlhIGlkOiA4ODk2YTE2 MS03NjNmLTRiMzUtOTI1OS01MjdmZDJhYmFmZmMKL2hvbWUvY2hpbmdsL1hG Uy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiB1 c2luZyBvbmxpbmUgc2Vzc2lvbiBpbnZlbnRvcnkKL2hvbWUvY2hpbmdsL1hG Uy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBz ZWFyY2hpbmcgbWVkaWEgZm9yIGRpcmVjdG9yeSBkdW1wCi9ob21lL2NoaW5n bC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9y ZTogcmVhZGluZyBkaXJlY3RvcmllcwovaG9tZS9jaGluZ2wvWEZTL3hmc2R1 bXAtMy4wLjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmU6IDEwMTUgZGly ZWN0b3JpZXMgYW5kIDY1MjAgZW50cmllcyBwcm9jZXNzZWQKL2hvbWUvY2hp bmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0 b3JlOiBkaXJlY3RvcnkgcG9zdC1wcm9jZXNzaW5nCi9ob21lL2NoaW5nbC9Y RlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9yZTog cmVzdG9yaW5nIG5vbi1kaXJlY3RvcnkgZmlsZXMKL2hvbWUvY2hpbmdsL1hG Uy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBy ZXN0b3JlIGNvbXBsZXRlOiAxMTYgc2Vjb25kcyBlbGFwc2VkCi9ob21lL2No aW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVz dG9yZTogUmVzdG9yZSBTdGF0dXM6IFNVQ0NFU1MKb3B0aW11czovdG1wICMg CgoKb3B0aW11czovdG1wL21udDMgIyBybSAtcmYgY2hpbmdsLwoKCgpvcHRp bXVzOi90bXAgIyAvaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZz ZHVtcC9kdW1wL3hmc2R1bXAgLWYgL3RtcC9tbnQxL2ludGVycmR1bXAgL3Rt cC9tbnQyCi9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1w L2R1bXAveGZzZHVtcDogdXNpbmcgZmlsZSBkdW1wIChkcml2ZV9zaW1wbGUp IHN0cmF0ZWd5Ci9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNk dW1wL2R1bXAveGZzZHVtcDogdmVyc2lvbiAzLjAuNiAoZHVtcCBmb3JtYXQg My4wKSAtIFJ1bm5pbmcgc2luZ2xlLXRocmVhZGVkCgogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0gZHVtcCBsYWJlbCBkaWFsb2cgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CgpwbGVhc2UgZW50ZXIgbGFiZWwgZm9y IHRoaXMgZHVtcCBzZXNzaW9uICh0aW1lb3V0IGluIDMwMCBzZWMpCiAtPiB0 bXBtbnQyaW50ZXJyCnNlc3Npb24gbGFiZWwgZW50ZXJlZDogInRtcG1udDJp bnRlcnIiCgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGVu ZCBkaWFsb2cgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgov aG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9kdW1wL3hm c2R1bXA6IGxldmVsIDAgZHVtcCBvZiBvcHRpbXVzOi90bXAvbW50MgovaG9t ZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9kdW1wL3hmc2R1 bXA6IGR1bXAgZGF0ZTogU3VuIE5vdiAyMCAxODoxMDo0MyAyMDExCi9ob21l L2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL2R1bXAveGZzZHVt cDogc2Vzc2lvbiBpZDogYTJiMmU5NjYtOTM3OC00NzRkLWJlYTEtMzkwNzM2 NDcxYzNlCi9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1w L2R1bXAveGZzZHVtcDogc2Vzc2lvbiBsYWJlbDogInRtcG1udDJpbnRlcnIi Ci9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL2R1bXAv eGZzZHVtcDogaW5vIG1hcCBwaGFzZSAxOiBjb25zdHJ1Y3RpbmcgaW5pdGlh bCBkdW1wIGxpc3QKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hm c2R1bXAvZHVtcC94ZnNkdW1wOiBpbm8gbWFwIHBoYXNlIDI6IHNraXBwaW5n IChubyBwcnVuaW5nIG5lY2Vzc2FyeSkKL2hvbWUvY2hpbmdsL1hGUy94ZnNk dW1wLTMuMC42L3hmc2R1bXAvZHVtcC94ZnNkdW1wOiBpbm8gbWFwIHBoYXNl IDM6IHNraXBwaW5nIChvbmx5IG9uZSBkdW1wIHN0cmVhbSkKL2hvbWUvY2hp bmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvZHVtcC94ZnNkdW1wOiBp bm8gbWFwIGNvbnN0cnVjdGlvbiBjb21wbGV0ZQovaG9tZS9jaGluZ2wvWEZT L3hmc2R1bXAtMy4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6IGVzdGltYXRl ZCBkdW1wIHNpemU6IDMwMzgyMjIxNDQgYnl0ZXMKCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PSBtZWRpYSBsYWJlbCBkaWFsb2cgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KCnBsZWFzZSBlbnRlciBsYWJlbCBmb3Ig bWVkaWEgaW4gZHJpdmUgMCAodGltZW91dCBpbiAzMDAgc2VjKQoKIC0+IGlu dGVycnJlZ3VsYXJmaWxlCm1lZGlhIGxhYmVsIGVudGVyZWQ6ICJpbnRlcnJy ZWd1bGFyZmlsZSIKCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gZW5kIGRpYWxvZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KCi9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL2R1 bXAveGZzZHVtcDogY3JlYXRpbmcgZHVtcCBzZXNzaW9uIG1lZGlhIGZpbGUg MCAobWVkaWEgMCwgZmlsZSAwKQovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAt My4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6IGR1bXBpbmcgaW5vIG1hcAov aG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9kdW1wL3hm c2R1bXA6IGR1bXBpbmcgZGlyZWN0b3JpZXMKL2hvbWUvY2hpbmdsL1hGUy94 ZnNkdW1wLTMuMC42L3hmc2R1bXAvZHVtcC94ZnNkdW1wOiBkdW1waW5nIG5v bi1kaXJlY3RvcnkgZmlsZXMKXkMvaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAt My4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6IGR1bXAgc2l6ZSAobm9uLWRp ciBmaWxlcykgOiAxNDU2ODk1NTQ0IGJ5dGVzCi9ob21lL2NoaW5nbC9YRlMv eGZzZHVtcC0zLjAuNi94ZnNkdW1wL2R1bXAveGZzZHVtcDogTk9URTogZHVt cCBpbnRlcnJ1cHRlZDogNTcgc2Vjb25kcyBlbGFwc2VkOiBtYXkgcmVzdW1l IGxhdGVyIHVzaW5nIC1SIG9wdGlvbgovaG9tZS9jaGluZ2wvWEZTL3hmc2R1 bXAtMy4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6IER1bXAgU3RhdHVzOiBJ TlRFUlJVUFQKb3B0aW11czovdG1wICMgCm9wdGltdXM6L3RtcCAjIApvcHRp bXVzOi90bXAgIyAvaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZz ZHVtcC9kdW1wL3hmc2R1bXAgLVIgLWYgL3RtcC9tbnQxL2ludGVycmR1bXBf cmVzdW1lIC90bXAvbW50MgovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4w LjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6IHVzaW5nIGZpbGUgZHVtcCAoZHJp dmVfc2ltcGxlKSBzdHJhdGVneQovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAt My4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6IHZlcnNpb24gMy4wLjYgKGR1 bXAgZm9ybWF0IDMuMCkgLSBSdW5uaW5nIHNpbmdsZS10aHJlYWRlZAoKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09IGR1bXAgbGFiZWwgZGlhbG9n ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKcGxlYXNlIGVudGVy IGxhYmVsIGZvciB0aGlzIGR1bXAgc2Vzc2lvbiAodGltZW91dCBpbiAzMDAg c2VjKQogLT4gdG1wbW50MmludGVycl9yZXN1bWUKc2Vzc2lvbiBsYWJlbCBl bnRlcmVkOiAidG1wbW50MmludGVycl9yZXN1bWUiCgogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tIGVuZCBkaWFsb2cgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovaG9tZS9jaGluZ2wvWEZTL3hmc2R1 bXAtMy4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6IHJlc3VtaW5nIGxldmVs IDAgZHVtcCBvZiBvcHRpbXVzOi90bXAvbW50MiBiZWd1biBTdW4gTm92IDIw IDE4OjEwOjQzIDIwMTEKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42 L3hmc2R1bXAvZHVtcC94ZnNkdW1wOiBkdW1wIGRhdGU6IFN1biBOb3YgMjAg MTg6MTM6MjAgMjAxMQovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYv eGZzZHVtcC9kdW1wL3hmc2R1bXA6IHNlc3Npb24gaWQ6IDk4YzYwYjU2LWQ4 MTQtNGFmOC1iMGE3LWUxZmEzNjk0NDc1YQovaG9tZS9jaGluZ2wvWEZTL3hm c2R1bXAtMy4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6IHNlc3Npb24gbGFi ZWw6ICJ0bXBtbnQyaW50ZXJyX3Jlc3VtZSIKL2hvbWUvY2hpbmdsL1hGUy94 ZnNkdW1wLTMuMC42L3hmc2R1bXAvZHVtcC94ZnNkdW1wOiBpbm8gbWFwIHBo YXNlIDE6IGNvbnN0cnVjdGluZyBpbml0aWFsIGR1bXAgbGlzdAovaG9tZS9j aGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6 IGlubyBtYXAgcGhhc2UgMjogc2tpcHBpbmcgKG5vIHBydW5pbmcgbmVjZXNz YXJ5KQovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9k dW1wL3hmc2R1bXA6IGlubyBtYXAgcGhhc2UgMzogc2tpcHBpbmcgKG9ubHkg b25lIGR1bXAgc3RyZWFtKQovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4w LjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6IGlubyBtYXAgY29uc3RydWN0aW9u IGNvbXBsZXRlCi9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNk dW1wL2R1bXAveGZzZHVtcDogZXN0aW1hdGVkIGR1bXAgc2l6ZTogMzAzODIy MjE0NCBieXRlcwoKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09IG1l ZGlhIGxhYmVsIGRpYWxvZyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQoKcGxlYXNlIGVudGVyIGxhYmVsIGZvciBtZWRpYSBpbiBkcml2ZSAwICh0 aW1lb3V0IGluIDMwMCBzZWMpCiAtPiBpbnRlcnJyZWd1bGFyZmlsZV9yZXN1 bWUKbWVkaWEgbGFiZWwgZW50ZXJlZDogImludGVycnJlZ3VsYXJmaWxlX3Jl c3VtZSIKCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZW5k IGRpYWxvZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi9o b21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL2R1bXAveGZz ZHVtcDogY3JlYXRpbmcgZHVtcCBzZXNzaW9uIG1lZGlhIGZpbGUgMCAobWVk aWEgMCwgZmlsZSAwKQovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYv eGZzZHVtcC9kdW1wL3hmc2R1bXA6IGR1bXBpbmcgaW5vIG1hcAovaG9tZS9j aGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6 IGR1bXBpbmcgZGlyZWN0b3JpZXMKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1w LTMuMC42L3hmc2R1bXAvZHVtcC94ZnNkdW1wOiBkdW1waW5nIG5vbi1kaXJl Y3RvcnkgZmlsZXMKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hm c2R1bXAvZHVtcC94ZnNkdW1wOiBlbmRpbmcgbWVkaWEgZmlsZQovaG9tZS9j aGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9kdW1wL3hmc2R1bXA6 IG1lZGlhIGZpbGUgc2l6ZSAzMDI4NTcyMDY0IGJ5dGVzCi9ob21lL2NoaW5n bC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL2R1bXAveGZzZHVtcDogZHVt cCBzaXplIChub24tZGlyIGZpbGVzKSA6IDMwMjYzOTI0NDAgYnl0ZXMKL2hv bWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvZHVtcC94ZnNk dW1wOiBkdW1wIGNvbXBsZXRlOiA5OCBzZWNvbmRzIGVsYXBzZWQKL2hvbWUv Y2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvZHVtcC94ZnNkdW1w OiBEdW1wIFN0YXR1czogU1VDQ0VTUwpvcHRpbXVzOi90bXAgIyAKb3B0aW11 czovdG1wICMgL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1 bXAvcmVzdG9yZS94ZnNyZXN0b3JlIC1yIC1mIC90bXAvbW50MS9pbnRlcnJk dW1wIC90bXAvbW50MwovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYv eGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmU6IHVzaW5nIGZpbGUgZHVtcCAo ZHJpdmVfc2ltcGxlKSBzdHJhdGVneQovaG9tZS9jaGluZ2wvWEZTL3hmc2R1 bXAtMy4wLjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmU6IHZlcnNpb24g My4wLjYgKGR1bXAgZm9ybWF0IDMuMCkgLSBSdW5uaW5nIHNpbmdsZS10aHJl YWRlZAovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9y ZXN0b3JlL3hmc3Jlc3RvcmU6IHNlYXJjaGluZyBtZWRpYSBmb3IgZHVtcAov aG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9yZXN0b3Jl L3hmc3Jlc3RvcmU6IGV4YW1pbmluZyBtZWRpYSBmaWxlIDAKL2hvbWUvY2hp bmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0 b3JlOiBkdW1wIGRlc2NyaXB0aW9uOiAKL2hvbWUvY2hpbmdsL1hGUy94ZnNk dW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBob3N0bmFt ZTogb3B0aW11cwovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZz ZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmU6IG1vdW50IHBvaW50OiAvdG1wL21u dDIKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVz dG9yZS94ZnNyZXN0b3JlOiB2b2x1bWU6IC9kZXYvc2RiMgovaG9tZS9jaGlu Z2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3Rv cmU6IHNlc3Npb24gdGltZTogU3VuIE5vdiAyMCAxODoxMDo0MyAyMDExCi9o b21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUv eGZzcmVzdG9yZTogbGV2ZWw6IDAKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1w LTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBzZXNzaW9uIGxh YmVsOiAidG1wbW50MmludGVyciIKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1w LTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBtZWRpYSBsYWJl bDogImludGVycnJlZ3VsYXJmaWxlIgovaG9tZS9jaGluZ2wvWEZTL3hmc2R1 bXAtMy4wLjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmU6IGZpbGUgc3lz dGVtIGlkOiAzZWZiYTA0ZC01YTVlLTQwMmEtODgyYy0wMzllNjY4ZDU2MzMK L2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9y ZS94ZnNyZXN0b3JlOiBzZXNzaW9uIGlkOiBhMmIyZTk2Ni05Mzc4LTQ3NGQt YmVhMS0zOTA3MzY0NzFjM2UKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMu MC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBtZWRpYSBpZDogYjkx NzlkZWItMThkOS00ZDQ5LWEyNjMtMWIzZWM2YThiMjMwCi9ob21lL2NoaW5n bC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9y ZTogdXNpbmcgb25saW5lIHNlc3Npb24gaW52ZW50b3J5Ci9ob21lL2NoaW5n bC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9y ZTogc2VhcmNoaW5nIG1lZGlhIGZvciBkaXJlY3RvcnkgZHVtcAovaG9tZS9j aGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jl c3RvcmU6IHJlYWRpbmcgZGlyZWN0b3JpZXMKL2hvbWUvY2hpbmdsL1hGUy94 ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiAxMDE1 IGRpcmVjdG9yaWVzIGFuZCA2NTIwIGVudHJpZXMgcHJvY2Vzc2VkCi9ob21l L2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZz cmVzdG9yZTogZGlyZWN0b3J5IHBvc3QtcHJvY2Vzc2luZwovaG9tZS9jaGlu Z2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3Rv cmU6IHJlc3RvcmluZyBub24tZGlyZWN0b3J5IGZpbGVzCi9ob21lL2NoaW5n bC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9y ZTogYXR0ZW1wdCB0byByZWFkIDE1ODUxNTIwIGJ5dGVzIGZhaWxlZDogZW5k IG9mIHJlY29yZGVkIGRhdGEKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMu MC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiByZXN0b3JlIGNvbXBs ZXRlOiA0OSBzZWNvbmRzIGVsYXBzZWQKL2hvbWUvY2hpbmdsL1hGUy94ZnNk dW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBSZXN0b3Jl IFN0YXR1czogU1VDQ0VTUwpvcHRpbXVzOi90bXAgIyAKb3B0aW11czovdG1w ICMgL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVz dG9yZS94ZnNyZXN0b3JlIC1yIC1mIC90bXAvbW50MS9pbnRlcnJkdW1wX3Jl c3VtZSAvdG1wL21udDMKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42 L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiB1c2luZyBmaWxlIGR1bXAg KGRyaXZlX3NpbXBsZSkgc3RyYXRlZ3kKL2hvbWUvY2hpbmdsL1hGUy94ZnNk dW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiB2ZXJzaW9u IDMuMC42IChkdW1wIGZvcm1hdCAzLjApIC0gUnVubmluZyBzaW5nbGUtdGhy ZWFkZWQKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAv cmVzdG9yZS94ZnNyZXN0b3JlOiBzZWFyY2hpbmcgbWVkaWEgZm9yIGR1bXAK L2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9y ZS94ZnNyZXN0b3JlOiBleGFtaW5pbmcgbWVkaWEgZmlsZSAwCi9ob21lL2No aW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVz dG9yZTogZHVtcCBkZXNjcmlwdGlvbjogCi9ob21lL2NoaW5nbC9YRlMveGZz ZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9yZTogaG9zdG5h bWU6IG9wdGltdXMKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hm c2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBtb3VudCBwb2ludDogL3RtcC9t bnQyCi9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jl c3RvcmUveGZzcmVzdG9yZTogdm9sdW1lOiAvZGV2L3NkYjIKL2hvbWUvY2hp bmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0 b3JlOiBzZXNzaW9uIHRpbWU6IFN1biBOb3YgMjAgMTg6MTM6MjAgMjAxMQov aG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9yZXN0b3Jl L3hmc3Jlc3RvcmU6IGxldmVsOiAwIHJlc3VtZWQKL2hvbWUvY2hpbmdsL1hG Uy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBz ZXNzaW9uIGxhYmVsOiAidG1wbW50MmludGVycl9yZXN1bWUiCi9ob21lL2No aW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVz dG9yZTogbWVkaWEgbGFiZWw6ICJpbnRlcnJyZWd1bGFyZmlsZV9yZXN1bWUi Ci9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3Rv cmUveGZzcmVzdG9yZTogZmlsZSBzeXN0ZW0gaWQ6IDNlZmJhMDRkLTVhNWUt NDAyYS04ODJjLTAzOWU2NjhkNTYzMwovaG9tZS9jaGluZ2wvWEZTL3hmc2R1 bXAtMy4wLjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmU6IHNlc3Npb24g aWQ6IDk4YzYwYjU2LWQ4MTQtNGFmOC1iMGE3LWUxZmEzNjk0NDc1YQovaG9t ZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9yZXN0b3JlL3hm c3Jlc3RvcmU6IG1lZGlhIGlkOiA4ZGM3ODdiMy1lMjFmLTQ0YTktODJkMC0y ZThjYWU0OGE0NTcKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hm c2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiB1c2luZyBvbmxpbmUgc2Vzc2lv biBpbnZlbnRvcnkKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hm c2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBzZWFyY2hpbmcgbWVkaWEgZm9y IGRpcmVjdG9yeSBkdW1wCi9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAu Ni94ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9yZTogcmVhZGluZyBkaXJlY3Rv cmllcwovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9y ZXN0b3JlL3hmc3Jlc3RvcmU6IDEwMTUgZGlyZWN0b3JpZXMgYW5kIDY1MjAg ZW50cmllcyBwcm9jZXNzZWQKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMu MC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBkaXJlY3RvcnkgcG9z dC1wcm9jZXNzaW5nCi9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94 ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9yZTogcmVzdG9yaW5nIG5vbi1kaXJl Y3RvcnkgZmlsZXMKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hm c2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiByZXN0b3JlIGNvbXBsZXRlOiAx MjMgc2Vjb25kcyBlbGFwc2VkCi9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0z LjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9yZTogUmVzdG9yZSBTdGF0 dXM6IFNVQ0NFU1MKb3B0aW11czovdG1wICMgCgoKCm9wdGltdXM6L3RtcC9t bnQxICMgZGYgLWgKRmlsZXN5c3RlbSAgICAgICAgICAgIFNpemUgIFVzZWQg QXZhaWwgVXNlJSBNb3VudGVkIG9uCnJvb3RmcyAgICAgICAgICAgICAgICAx MDFHICAgNDFHICAgNjBHICA0MSUgLwpkZXZ0bXBmcyAgICAgICAgICAgICAg OTk4TSAgNTAwSyAgOTk3TSAgIDElIC9kZXYKdG1wZnMgICAgICAgICAgICAg ICAgMTAwNE0gIDg3MksgMTAwNE0gICAxJSAvZGV2L3NobQovZGV2L3NkYTIg ICAgICAgICAgICAgMTAxRyAgIDQxRyAgIDYwRyAgNDElIC8KL2Rldi9zZGEz ICAgICAgICAgICAgIDgyNEcgIDU5MkcgIDIzMkcgIDcyJSAvaG9tZQovZGV2 L3NkYjMgICAgICAgICAgICAgODAwRyAgMi45RyAgNzk3RyAgIDElIC90bXAv bW50MwovZGV2L3NkYjIgICAgICAgICAgICAgMTAwRyAgMi45RyAgIDk4RyAg IDMlIC90bXAvbW50MgovZGV2L3NkYjEgICAgICAgICAgICAgIDMyRyAgNy4x RyAgIDI1RyAgMjIlIC90bXAvbW50MQpvcHRpbXVzOi90bXAvbW50MSAjIGRp ZmYgLXIgL3RtcC9tbnQzL2NoaW5nbC8gL3RtcC9tbnQyL2NoaW5nbC8Kb3B0 aW11czovdG1wL21udDEgIwoKCm9wdGltdXM6L3RtcC9tbnQzICMgcm0gLXJm IGNoaW5nbC8KCgpvcHRpbXVzOi90bXAgIyAvaG9tZS9jaGluZ2wvWEZTL3hm c2R1bXAtMy4wLjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmUgIC1mIC90 bXAvbW50MS9pbnRlcnJkdW1wX3Jlc3VtZSAvdG1wL21udDMKL2hvbWUvY2hp bmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0 b3JlOiB1c2luZyBmaWxlIGR1bXAgKGRyaXZlX3NpbXBsZSkgc3RyYXRlZ3kK L2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9y ZS94ZnNyZXN0b3JlOiB2ZXJzaW9uIDMuMC42IChkdW1wIGZvcm1hdCAzLjAp IC0gUnVubmluZyBzaW5nbGUtdGhyZWFkZWQKL2hvbWUvY2hpbmdsL1hGUy94 ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBzZWFy Y2hpbmcgbWVkaWEgZm9yIGR1bXAKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1w LTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBleGFtaW5pbmcg bWVkaWEgZmlsZSAwCi9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94 ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9yZTogZHVtcCBkZXNjcmlwdGlvbjog Ci9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3Rv cmUveGZzcmVzdG9yZTogaG9zdG5hbWU6IG9wdGltdXMKL2hvbWUvY2hpbmds L1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3Jl OiBtb3VudCBwb2ludDogL3RtcC9tbnQyCi9ob21lL2NoaW5nbC9YRlMveGZz ZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9yZTogdm9sdW1l OiAvZGV2L3NkYjIKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hm c2R1bXAvcmVzdG9yZS94ZnNyZXN0b3JlOiBzZXNzaW9uIHRpbWU6IFN1biBO b3YgMjAgMTg6MTM6MjAgMjAxMQovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAt My4wLjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmU6IGxldmVsOiAwIHJl c3VtZWQKL2hvbWUvY2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAv cmVzdG9yZS94ZnNyZXN0b3JlOiBzZXNzaW9uIGxhYmVsOiAidG1wbW50Mmlu dGVycl9yZXN1bWUiCi9ob21lL2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94 ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9yZTogbWVkaWEgbGFiZWw6ICJpbnRl cnJyZWd1bGFyZmlsZV9yZXN1bWUiCi9ob21lL2NoaW5nbC9YRlMveGZzZHVt cC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9yZTogZmlsZSBzeXN0 ZW0gaWQ6IDNlZmJhMDRkLTVhNWUtNDAyYS04ODJjLTAzOWU2NjhkNTYzMwov aG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4wLjYveGZzZHVtcC9yZXN0b3Jl L3hmc3Jlc3RvcmU6IHNlc3Npb24gaWQ6IDk4YzYwYjU2LWQ4MTQtNGFmOC1i MGE3LWUxZmEzNjk0NDc1YQovaG9tZS9jaGluZ2wvWEZTL3hmc2R1bXAtMy4w LjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmU6IG1lZGlhIGlkOiA4ZGM3 ODdiMy1lMjFmLTQ0YTktODJkMC0yZThjYWU0OGE0NTcKL2hvbWUvY2hpbmds L1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3Jl OiB1c2luZyBvbmxpbmUgc2Vzc2lvbiBpbnZlbnRvcnkKL2hvbWUvY2hpbmds L1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3Jl OiBzZWFyY2hpbmcgbWVkaWEgZm9yIGRpcmVjdG9yeSBkdW1wCi9ob21lL2No aW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVz dG9yZTogcmVhZGluZyBkaXJlY3RvcmllcwovaG9tZS9jaGluZ2wvWEZTL3hm c2R1bXAtMy4wLjYveGZzZHVtcC9yZXN0b3JlL3hmc3Jlc3RvcmU6IDEwMTUg ZGlyZWN0b3JpZXMgYW5kIDY1MjAgZW50cmllcyBwcm9jZXNzZWQKL2hvbWUv Y2hpbmdsL1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNy ZXN0b3JlOiBkaXJlY3RvcnkgcG9zdC1wcm9jZXNzaW5nCi9ob21lL2NoaW5n bC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZzcmVzdG9y ZTogcmVzdG9yaW5nIG5vbi1kaXJlY3RvcnkgZmlsZXMKL2hvbWUvY2hpbmds L1hGUy94ZnNkdW1wLTMuMC42L3hmc2R1bXAvcmVzdG9yZS94ZnNyZXN0b3Jl OiByZXN0b3JlIGNvbXBsZXRlOiAxMDQgc2Vjb25kcyBlbGFwc2VkCi9ob21l L2NoaW5nbC9YRlMveGZzZHVtcC0zLjAuNi94ZnNkdW1wL3Jlc3RvcmUveGZz cmVzdG9yZTogUmVzdG9yZSBTdGF0dXM6IFNVQ0NFU1MKb3B0aW11czovdG1w ICMgCm9wdGltdXM6L3RtcCAjIAoKCm9wdGltdXM6L3RtcC9tbnQxICMgZGYg LWgKRmlsZXN5c3RlbSAgICAgICAgICAgIFNpemUgIFVzZWQgQXZhaWwgVXNl JSBNb3VudGVkIG9uCnJvb3RmcyAgICAgICAgICAgICAgICAxMDFHICAgNDFH ICAgNjBHICA0MSUgLwpkZXZ0bXBmcyAgICAgICAgICAgICAgOTk4TSAgNTAw SyAgOTk3TSAgIDElIC9kZXYKdG1wZnMgICAgICAgICAgICAgICAgMTAwNE0g IDg3MksgMTAwNE0gICAxJSAvZGV2L3NobQovZGV2L3NkYTIgICAgICAgICAg ICAgMTAxRyAgIDQxRyAgIDYwRyAgNDElIC8KL2Rldi9zZGEzICAgICAgICAg ICAgIDgyNEcgIDU5MkcgIDIzMkcgIDcyJSAvaG9tZQovZGV2L3NkYjMgICAg ICAgICAgICAgODAwRyAgMi45RyAgNzk3RyAgIDElIC90bXAvbW50MwovZGV2 L3NkYjIgICAgICAgICAgICAgMTAwRyAgMi45RyAgIDk4RyAgIDMlIC90bXAv bW50MgovZGV2L3NkYjEgICAgICAgICAgICAgIDMyRyAgNy4xRyAgIDI1RyAg MjIlIC90bXAvbW50MQpvcHRpbXVzOi90bXAvbW50MSAjIGRpZmYgLXIgL3Rt cC9tbnQzL2NoaW5nbC8gL3RtcC9tbnQyL2NoaW5nbC8Kb3B0aW11czovdG1w L21udDEgIwoKb3B0aW11czovdG1wL21udDEgIyBsbAp0b3RhbCA3MzM5ODI0 Ci1ydy1yLS1yLS0gMSByb290IHJvb3QgMzAyODU3MjA2NCBOb3YgMjAgMTc6 NDMgZnVsbGR1bXAKLXJ3LXItLXItLSAxIHJvb3Qgcm9vdCAxNDU4ODMxMzYw IE5vdiAyMCAxODoxMSBpbnRlcnJkdW1wCi1ydy1yLS1yLS0gMSByb290IHJv b3QgMzAyODU3MjA2NCBOb3YgMjAgMTg6MTQgaW50ZXJyZHVtcF9yZXN1bWUK b3B0aW11czovdG1wL21udDEgIwo= --1346750579-758882200-1321794858=:60631-- From jeff.liu@oracle.com Sun Nov 20 07:15:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAKDFPKR157024 for ; Sun, 20 Nov 2011 07:15:25 -0600 X-ASG-Debug-ID: 1321794923-53b502350000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rcsinet15.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 394931629464; Sun, 20 Nov 2011 05:15:23 -0800 (PST) Received: from rcsinet15.oracle.com (rcsinet15.oracle.com [148.87.113.117]) by cuda.sgi.com with ESMTP id kHS3Myq8peqGqcGy; Sun, 20 Nov 2011 05:15:23 -0800 (PST) Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by rcsinet15.oracle.com (Switch-3.4.4/Switch-3.4.4) with ESMTP id pAKDFGwj006952 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 20 Nov 2011 13:15:16 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id pAKDFFZi014127 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 20 Nov 2011 13:15:15 GMT Received: from abhmt116.oracle.com (abhmt116.oracle.com [141.146.116.68]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id pAKDF9Ve006894; Sun, 20 Nov 2011 07:15:09 -0600 Received: from [192.168.1.104] (/123.119.97.166) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 20 Nov 2011 05:15:09 -0800 Message-ID: <4EC8FD55.6060902@oracle.com> Date: Sun, 20 Nov 2011 21:15:01 +0800 From: Jeff Liu Reply-To: jeff.liu@oracle.com Organization: Oracle User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Thunderbird/3.1.11 MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com, Chris Mason , aelder@sgi.com X-ASG-Orig-Subj: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE support to XFS V1 Subject: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE support to XFS V1 References: <4E887D7F.2010306@oracle.com> <20111114102444.GA27791@infradead.org> <4EC10DE8.6030607@oracle.com> <20111114125044.GA9802@infradead.org> <4EC768F5.4050904@oracle.com> <4EC76AB9.9030604@oracle.com> <20111119191138.GA24444@infradead.org> In-Reply-To: <20111119191138.GA24444@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-CT-RefId: str=0001.0A090204.4EC8FD65.0057,ss=1,re=0.000,fgs=0 X-Barracuda-Connect: rcsinet15.oracle.com[148.87.113.117] X-Barracuda-Start-Time: 1321794924 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80786 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Christoph, Thanks for your quick response! On 11/20/2011 03:11 AM, Christoph Hellwig wrote: > On Sat, Nov 19, 2011 at 04:37:13PM +0800, Jeff Liu wrote: >> >> Signed-off-by: Jie Liu > > Thanks a lot Jeff. A few comments below: > >> +int >> +xfs_seek_data_hole( >> + struct xfs_inode *ip, >> + loff_t *start, >> + u32 type) >> +{ >> + xfs_mount_t *mp = ip->i_mount; > > please use > > struct xfs_mount *mp = ip->i_mount; > > for all new code. > >> + if (xfs_get_extsz_hint(ip) || >> + ip->i_d.di_flags & (XFS_DIFLAG_PREALLOC | XFS_DIFLAG_APPEND)) { >> + filelen = XFS_MAXIOFFSET(mp); >> + } else { >> + filelen = ip->i_size; >> + } > > I don't understand this. XFS_MAXIOFFSET is the maximum possible file > size in an XFS filesystem - using it with an extent size hint or > the prealloc or appen only flags doesn't make sense to me. Sorry, I forgot why I using it to retrieve the file size before. :( but it definitely don't needed here. > >> + if (type == SEEK_DATA) { > > xfs_seek_data_hole shares almost no common code between the SEEK_DATA > and SEEK_HOLE cases, which suggests it probably should be two different > routines. Yes, it's better to split SEEK_DATA/SEEK_HOLE into two different functions. > > >> +STATIC loff_t >> +xfs_file_llseek( >> + struct file *file, >> + loff_t offset, >> + int origin) >> +{ >> + struct inode *inode = file->f_mapping->host; >> + int ret; >> + >> + if (origin != SEEK_DATA && origin != SEEK_HOLE) >> + return generic_file_llseek(file, offset, origin); >> + >> + mutex_lock(&inode->i_mutex); >> + switch (origin) { >> + case SEEK_DATA: >> + case SEEK_HOLE: > > Having the if above and then the switch here seems like and odd style. > I'd do either an if, or a switch statement for all possible variants, > but not both. I'll fix it with switch statement then. :-) > >> + if (offset >= i_size_read(inode)) { >> + ret = -ENXIO; >> + goto error; >> + } >> + >> + ret = xfs_find_desired_extent(inode, &offset, origin); >> + if (ret) >> + goto error; >> + } >> + >> + if (offset < 0 && !(file->f_mode & FMODE_UNSIGNED_OFFSET)) { >> + ret = -EINVAL; >> + goto error; >> + } > > I don't think this could ever happen on XFS. > >> + if (offset > inode->i_sb->s_maxbytes) { >> + ret = -EINVAL; >> + goto error; >> + } > > This also shouldn't happen if the low-level code does the right > thing. > >> + if (offset != file->f_pos) { >> + file->f_pos = offset; >> + file->f_version = 0; >> + } > > XFS never uses f_version, no need to update it. Thanks for pointing out my mistakes for above three issues, I have not think carefully about them, just copy && paste the code block from btrfs instead, they will be fixed in the next post. > >> +int >> +xfs_find_desired_extent( >> + struct inode *inode, >> + loff_t *start, >> + u32 type) > > I think this would better be merged with the code currenly in > xfs_file_llseek. Maybe move all the SEEK_DATA/SEEK_HOLE specific > code from there to this function? > > Also please move this routine to be next to xfs_file_llseek in xfs_file.c, > which also means that it can be marked static. ok, I'll merge both find_desired_extent() and seek_data_hole() to a single routine and place it there. > >> +{ >> + xfs_inode_t *ip = XFS_I(inode); >> + xfs_mount_t *mp = ip->i_mount; > > Just as above please use the struct versions for new code. > >> + /* >> + * Flush the delay alloc blocks. Even after flushing the inode, >> + * there can still be delalloc blocks on the inode beyond EOF >> + * due to speculative preallocation. These are not removed until >> + * the release function is called or the inode is inactivated. >> + * Hence we cannot assert here that ip->i_delayed_blks == 0. >> + */ >> + if (ip->i_delayed_blks || ip->i_size > ip->i_d.di_size) { >> + error = xfs_flush_pages(ip, 0, -1, 0, FI_REMAPF); >> + if (error) >> + goto out_unlock_iolock; >> + } > > For the final version we should get rid of this flush and instead look > for pages having dirty unwritten extents in the pagecache and adjust > the result based on it. I'm fine with delaying this until all other > issues are sorted out. Per Dave's comments, we would get ride of pages flush if using xfs_bmapi_read() to retrieve the delayed extents info from the initial implementation. Thanks, -Jeff > From jeff.liu@oracle.com Sun Nov 20 07:59:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAKDxsUt158977 for ; Sun, 20 Nov 2011 07:59:54 -0600 X-ASG-Debug-ID: 1321797591-53b103190000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rcsinet15.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2502E16294F1; Sun, 20 Nov 2011 05:59:51 -0800 (PST) Received: from rcsinet15.oracle.com (rcsinet15.oracle.com [148.87.113.117]) by cuda.sgi.com with ESMTP id ztnyXkoPwsz4fP63; Sun, 20 Nov 2011 05:59:51 -0800 (PST) Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by rcsinet15.oracle.com (Switch-3.4.4/Switch-3.4.4) with ESMTP id pAKDxgwA004972 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 20 Nov 2011 13:59:43 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id pAKDxf1R016679 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 20 Nov 2011 13:59:42 GMT Received: from abhmt113.oracle.com (abhmt113.oracle.com [141.146.116.65]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id pAKDxZXK007080; Sun, 20 Nov 2011 07:59:36 -0600 Received: from [192.168.1.104] (/123.119.97.166) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 20 Nov 2011 05:59:35 -0800 Message-ID: <4EC907C3.7020901@oracle.com> Date: Sun, 20 Nov 2011 21:59:31 +0800 From: Jeff Liu Reply-To: jeff.liu@oracle.com Organization: Oracle User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Thunderbird/3.1.11 MIME-Version: 1.0 To: Dave Chinner CC: Christoph Hellwig , aelder@sgi.com, Chris Mason , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE support to XFS V1 Subject: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE support to XFS V1 References: <4E887D7F.2010306@oracle.com> <20111114102444.GA27791@infradead.org> <4EC10DE8.6030607@oracle.com> <20111114125044.GA9802@infradead.org> <4EC768F5.4050904@oracle.com> <4EC76AB9.9030604@oracle.com> <20111120003031.GM7046@dastard> In-Reply-To: <20111120003031.GM7046@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090203.4EC907CF.017F,ss=1,re=0.000,fgs=0 X-Barracuda-Connect: rcsinet15.oracle.com[148.87.113.117] X-Barracuda-Start-Time: 1321797593 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80788 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Dave, Thanks for your further comments! On 11/20/2011 08:30 AM, Dave Chinner wrote: > On Sat, Nov 19, 2011 at 04:37:13PM +0800, Jeff Liu wrote: >> >> Signed-off-by: Jie Liu > > Christoph has commented on the code-related aspects of the patch, so > I won't repeat that. I'll comment on structural/design issues > instead. > > Firstly, the patch splits the functionality arbitrarily over three > different files, and I don't think that is necessary. There really > is no reason at all for xfs_bmap.c to know anything aout > SEEK_HOLE/SEEK_DATA semantics - that file is for extent manipulation > and search functions. SEEK semantics should be entirely encoded into > the function that deals with the seeking. Yes, I should merge and isolate those functions in xfs_file.c. > > Secondly, xfs_find_desired_extent() and xfs_seek_hole_data() should > be one function, and named something like xfs_file_seek_extent(). Definitely! and sorry for my poor english, xfs_file_seek_extent() is distinct in this case. > > Finally, don't think using low level extent search functions like > xfs_bmap_search_extents() is the right level to implement this > functionality (see my comments about SEEK_HOLE/SEEK_DATA semantics > in xfs-bmap.c above), especially as we already have functions for > looking up holes and extents at given offsets. > > That is, to find the next hole at or after after a given offset, we > already have xfs_bmap_first_unused(). Indeed, this function already > has the exact semantics that SEEK_HOLE requires. Simply put: > > case SEEK_HOLE: > fsb = XFS_B_TO_FSBT(mp, start_offset); > error = xfs_bmap_first_unused(NULL, ip, 1, &fsb, > XFS_DATA_FORK); > if (error) > return -error; > > if (fsb <= XFS_B_TO_FSBT(mp, start_offset)) > return start_offset; > return XFS_FSB_TO_B(mp, fsb); Thanks for pointing it out, I even don't know XFS has this convenient routine at that time. :( > > > As to the data extent search, I'd prefer you to use xfs_bmapi_read() > rather than xfs_bmap_search_extents() directly. I'd prefer that we > return unwritten extents as holes rather than data from the initial > implementation, and using the low level xfs_bmap_search_extents() > makes that quite complex. However, we already have a function for > handling that complexity: xfs_bmapi_read(). > > That is, xfs_bmapi_read() needs to be passed an array of two maps, > one for the current offset, and one for the next extent type. This > makes one call sufficient for most transitions. Done in a simple > loop it will handle all conditions of hole->unwritten->hole.... > until it finds a data extent of EOF. > > > start_fsbno = XFS_B_TO_FSBT(mp, start_offset); > while (1) { > struct xfs_bmbt_irec maps[2]; > int nmaps = 2; > > count_fsb = XFS_B_TO_FSB(mp, XFS_MAXIOFFSET(mp)); > error = xfs_bmapi_read(ip, fsbno, count_fsb, > &maps, &nmaps, XFS_BMAPI_ENTIRE); > > if (error) > return -error; > if (!nmaps) { > /* no extents at given offset, must be beyond EOF */ > return -ENXIO; > } > > switch (map[0].br_startblock) { > case DELAYSTARTBLOCK: > /* landed in an in-memory data extent */ > return map[0].br_startoff; > > default: > /* landed in an allocated extent */ > if (map[0].br_state == XFS_EXT_NORM) { > /* a real data extent */ > return map[0].br_startoff; > } > /* Fall through to hole handling for unwritten extents */ > > case HOLESTARTBLOCK: > /* > * landed in a hole. If the next extent is a data > * extent, then return the start of it, otherwise > * we need to move the start offset and map more > * blocks. > */ > if (map[1].br_startblock == DELAYSTARTBLOCK || > ((map[1].br_startblock != HOLESTARTBLOCK && > map[1].br_state == XFS_EXT_NORM))) > return map[1].br_startoff; > > start_fsbno = map[1].br_startoff + map[1].br_blockcount; > break; > } > > if (XFS_FSB_TO_B(mp, start_fsbno) > ip->i_size) { > /* Beyond EOF now */ > return -ENXIO; > } > } > > This can pretty much all be done in > fs/xfs/xfs_file.c::xfs_file_seek_extent() because all the functions > used by the above code are exported from xfs_bmap.c for external use > - that solves the scattering problem and uses interfaces that we > already know work in the intended manner.... ;) Thanks again for the detailed info! At first, I have spent a few hours to think it over using xfs_bmap_search_extents() or xfs_bmapi_read(). Indeed, it will be more complex to deal with the unwritten extents later if using xfs_bmap_search_extents(). This change will reflected in my next post. > > BTW: > >> +xfs_file_llseek( >> + struct file *file, >> + loff_t offset, >> + int origin) >> +{ >> + struct inode *inode = file->f_mapping->host; >> + int ret; >> + >> + if (origin != SEEK_DATA && origin != SEEK_HOLE) >> + return generic_file_llseek(file, offset, origin); >> + >> + mutex_lock(&inode->i_mutex); >> + switch (origin) { > > We don't need the i_mutex to be held here. We only need to hold the > ilock in shared mode for this operation to protect against extent > list modifications (like unwritten extent conversion and > truncation). looks we only need to hold the ilock in shared mode in xfs_file_seek_extent(). > >> +int >> +xfs_find_desired_extent( >> + struct inode *inode, >> + loff_t *start, >> + u32 type) >> +{ >> + xfs_inode_t *ip = XFS_I(inode); >> + xfs_mount_t *mp = ip->i_mount; >> + struct xfs_ifork *ifp; >> + int lock; >> + int error; >> + >> + if (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS && >> + ip->i_d.di_format != XFS_DINODE_FMT_BTREE && >> + ip->i_d.di_format != XFS_DINODE_FMT_LOCAL) >> + return XFS_ERROR(EINVAL); >> + >> + xfs_ilock(ip, XFS_IOLOCK_SHARED); >> + >> + /* >> + * Flush the delay alloc blocks. Even after flushing the inode, >> + * there can still be delalloc blocks on the inode beyond EOF >> + * due to speculative preallocation. These are not removed until >> + * the release function is called or the inode is inactivated. >> + * Hence we cannot assert here that ip->i_delayed_blks == 0. >> + */ >> + if (ip->i_delayed_blks || ip->i_size > ip->i_d.di_size) { >> + error = xfs_flush_pages(ip, 0, -1, 0, FI_REMAPF); >> + if (error) >> + goto out_unlock_iolock; >> + } > > i.e. this IOLOCK and flush is completely unnecessary because we'll > find delayed allocation extents in the extent lookup and can handle > them just like real allocated extents.... > >> + lock = xfs_ilock_map_shared(ip); > > i.e. this is the only lock we need to take. Yes, if we get rid of the the flush pages here, xfs_ilock() can be removed safely. Thanks, -Jeff > > Cheers, > > Dave. From BATV+d6e99f471a51b5d12582+3010+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 20 09:30:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAKFUOwD163345 for ; Sun, 20 Nov 2011 09:30:24 -0600 X-ASG-Debug-ID: 1321803019-3c8601210000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1761018F0853; Sun, 20 Nov 2011 07:30:19 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id wP4aJBC3mCBrpaA6; Sun, 20 Nov 2011 07:30:19 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RS9LR-00065d-69; Sun, 20 Nov 2011 15:30:13 +0000 Date: Sun, 20 Nov 2011 10:30:13 -0500 From: Christoph Hellwig To: Jeff Liu Cc: Dave Chinner , Christoph Hellwig , aelder@sgi.com, Chris Mason , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE support to XFS V1 Subject: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE support to XFS V1 Message-ID: <20111120153013.GA19199@infradead.org> References: <4E887D7F.2010306@oracle.com> <20111114102444.GA27791@infradead.org> <4EC10DE8.6030607@oracle.com> <20111114125044.GA9802@infradead.org> <4EC768F5.4050904@oracle.com> <4EC76AB9.9030604@oracle.com> <20111120003031.GM7046@dastard> <4EC907C3.7020901@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4EC907C3.7020901@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321803020 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80795 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Nov 20, 2011 at 09:59:31PM +0800, Jeff Liu wrote: > > fsb = XFS_B_TO_FSBT(mp, start_offset); > > error = xfs_bmap_first_unused(NULL, ip, 1, &fsb, > > XFS_DATA_FORK); > > if (error) > > return -error; > > > > if (fsb <= XFS_B_TO_FSBT(mp, start_offset)) > > return start_offset; > > return XFS_FSB_TO_B(mp, fsb); > > Thanks for pointing it out, I even don't know XFS has this convenient routine at that time. :( I didn't remember it either, but Dave has been working the dir code which makes use of this funtion lately :) Btw, the documentation for the function doesn't mention that it starts searching for the hole only after the passed in block number, which is something that could be improved. From BATV+d6e99f471a51b5d12582+3010+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 20 09:32:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAKFWh2r163469 for ; Sun, 20 Nov 2011 09:32:43 -0600 X-ASG-Debug-ID: 1321803162-42fe00cd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 015121D14512 for ; Sun, 20 Nov 2011 07:32:42 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 54LDBkiGeEecmEx8 for ; Sun, 20 Nov 2011 07:32:42 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RS9Np-00067Z-7g; Sun, 20 Nov 2011 15:32:41 +0000 Date: Sun, 20 Nov 2011 10:32:41 -0500 From: Christoph Hellwig To: Simon Kirby Cc: Christoph Hellwig , linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS read hangs in 3.1-rc10 Subject: Re: XFS read hangs in 3.1-rc10 Message-ID: <20111120153241.GA23511@infradead.org> References: <20111020224214.GC22772@hostway.ca> <20111021132240.GA24136@infradead.org> <20111021202857.GB30100@hostway.ca> <20111024082219.GA19941@infradead.org> <20111025200748.GA25043@hostway.ca> <20111026112521.GA10432@infradead.org> <20111104210324.GB14983@infradead.org> <20111116195643.GF24411@hostway.ca> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111116195643.GF24411@hostway.ca> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321803163 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80795 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 16, 2011 at 11:56:43AM -0800, Simon Kirby wrote: > Sorry for the delay in testing. > > Yes, everything looks fine even with the xfs_log_force line from your > patch commented out. So, the changes in xfs_reclaim_inode() are just the > set_bit(XBT_FORCE_FLUSH) and wake_up_process(), relative to 3.1. Dave pointed out that we can do better than the big hammer, and the patch below should fix your issue, too. Can you test it? --- From: Christoph Hellwig Subject: xfs: force buffer writeback before blocking on the ilock in inode reclaim If we are doing synchronous inode reclaim we block the VM from making progress in memory reclaim. So if we encouter a flush locked inode promote it in the delwri list and wake up xfsbufd to write it out now. Without this we can get hangs of up to 30 seconds during workloads hitting synchronous inode reclaim. The scheme is copied from what we do for dquot reclaims. Reported-by: Simon Kirby Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/xfs_sync.c 2011-11-20 12:48:36.664765032 +0100 +++ xfs/fs/xfs/xfs_sync.c 2011-11-20 13:51:55.594184465 +0100 @@ -770,6 +770,17 @@ restart: if (!xfs_iflock_nowait(ip)) { if (!(sync_mode & SYNC_WAIT)) goto out; + + /* + * If we only have a single dirty inode in a cluster there is + * a fair chance that the AIL push may have pushed it into + * the buffer, but xfsbufd won't touch it until 30 seconds + * from now, and thus we will lock up here. + * + * Promote the inode buffer to the front of the delwri list + * and wake up xfsbufd now. + */ + xfs_promote_inode(ip); xfs_iflock(ip); } Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2011-11-20 13:50:51.457865253 +0100 +++ xfs/fs/xfs/xfs_inode.c 2011-11-20 13:52:30.420662460 +0100 @@ -2835,6 +2835,27 @@ corrupt_out: return XFS_ERROR(EFSCORRUPTED); } +void +xfs_promote_inode( + struct xfs_inode *ip) +{ + struct xfs_buf *bp; + + ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)); + + bp = xfs_incore(ip->i_mount->m_ddev_targp, ip->i_imap.im_blkno, + ip->i_imap.im_len, XBF_TRYLOCK); + if (!bp) + return; + + if (XFS_BUF_ISDELAYWRITE(bp)) { + xfs_buf_delwri_promote(bp); + wake_up_process(ip->i_mount->m_ddev_targp->bt_task); + } + + xfs_buf_relse(bp); +} + /* * Return a pointer to the extent record at file index idx. */ Index: xfs/fs/xfs/xfs_inode.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode.h 2011-11-20 13:50:51.487865091 +0100 +++ xfs/fs/xfs/xfs_inode.h 2011-11-20 13:51:39.224273148 +0100 @@ -498,6 +498,7 @@ int xfs_iunlink(struct xfs_trans *, xfs void xfs_iext_realloc(xfs_inode_t *, int, int); void xfs_iunpin_wait(xfs_inode_t *); int xfs_iflush(xfs_inode_t *, uint); +void xfs_promote_inode(struct xfs_inode *); void xfs_lock_inodes(xfs_inode_t **, int, uint); void xfs_lock_two_inodes(xfs_inode_t *, xfs_inode_t *, uint); From BATV+d6e99f471a51b5d12582+3010+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 20 09:35:34 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAKFZXmr163617 for ; Sun, 20 Nov 2011 09:35:34 -0600 X-ASG-Debug-ID: 1321803332-0c1200a00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3B49A26611B for ; Sun, 20 Nov 2011 07:35:32 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id dDgKRH4tGgCr9DRA for ; Sun, 20 Nov 2011 07:35:32 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RS9Qa-00070k-9D for xfs@oss.sgi.com; Sun, 20 Nov 2011 15:35:32 +0000 Date: Sun, 20 Nov 2011 10:35:32 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs: validate acl count Subject: [PATCH] xfs: validate acl count Message-ID: <20111120153532.GA26918@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321803333 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80795 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This prevents in-memory corruption and possible panics if the on-disk ACL is badly corrupted. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_acl.c =================================================================== --- xfs.orig/fs/xfs/xfs_acl.c 2011-11-20 12:49:11.181244706 +0100 +++ xfs/fs/xfs/xfs_acl.c 2011-11-20 12:49:50.637697619 +0100 @@ -42,6 +42,8 @@ xfs_acl_from_disk(struct xfs_acl *aclp) int count, i; count = be32_to_cpu(aclp->acl_cnt); + if (count > XFS_ACL_MAX_ENTRIES) + return ERR_PTR(-EFSCORRUPTED); acl = posix_acl_alloc(count, GFP_KERNEL); if (!acl) From mikeyk@instagram.com Sun Nov 20 10:34:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAKGY8ih166839 for ; Sun, 20 Nov 2011 10:34:08 -0600 X-ASG-Debug-ID: 1321806846-7afe01ee0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-iy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7CED61628540 for ; Sun, 20 Nov 2011 08:34:06 -0800 (PST) Received: from mail-iy0-f181.google.com (mail-iy0-f181.google.com [209.85.210.181]) by cuda.sgi.com with ESMTP id TgyTycyCXAU2dZQ1 for ; Sun, 20 Nov 2011 08:34:06 -0800 (PST) Received: by iaen33 with SMTP id n33so7352021iae.26 for ; Sun, 20 Nov 2011 08:34:06 -0800 (PST) Received: by 10.50.203.70 with SMTP id ko6mr11140294igc.19.1321806845911; Sun, 20 Nov 2011 08:34:05 -0800 (PST) Received: from [172.16.1.4] (c-98-234-236-69.hsd1.ca.comcast.net. [98.234.236.69]) by mx.google.com with ESMTPS id g16sm33881805ibs.8.2011.11.20.08.34.04 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 20 Nov 2011 08:34:05 -0800 (PST) From: Mike Krieger Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable X-ASG-Orig-Subj: XFS / xfssyncd lock-ups on 2.6.38-8 Subject: XFS / xfssyncd lock-ups on 2.6.38-8 Date: Sun, 20 Nov 2011 08:34:02 -0800 Message-Id: To: xfs@oss.sgi.com Mime-Version: 1.0 (Apple Message framework v1251.1) X-Mailer: Apple Mail (2.1251.1) X-Barracuda-Connect: mail-iy0-f181.google.com[209.85.210.181] X-Barracuda-Start-Time: 1321806847 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80796 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We're running a dozen Amazon AWS instances (on Ubuntu Natty Narwhal, = kernel 2.6.38-8). We've recent brought up several machines based on some = previous snapshots (EBS snapshots, rather than LVM), and they've been = locking up under load. The dmesg output is below; does this issue look = familiar, or perhaps fixed in a later kernel? Or could it be indicative = of some data corruption in the snapshot process?=20 The drive is being used for Postgres write-ahead-logs, so it's a = write-heavy, read-light drive. When the array (4 drives in RAID0) = freezes up, nothing seems to fix it short of a hard restart of the = machine=97we've tried things like stopping Postgres, issuing a 'drop = cache' to the kernel, and trying to kill the locked process, to no = avail. Would appreciate any thoughts/pointers to fixes or workarounds if this = is a known issue. Thanks, Mike =3D=3D=3D=3D (The /dev/md126 array that is locking up is an XFS RAID0 across 4 = volumes) The errors look like this: [558307.361854] INFO: task xfssyncd/md126:1029 blocked for more than 120 = seconds. [558307.361867] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" = disables this message. [558307.361874] xfssyncd/md126 D ffff881116f13b00 0 1029 2 = 0x00000000 [558307.361879] ffff881088989d00 0000000000000246 ffff881088989fd8 = ffff881088988000 [558307.361884] 0000000000013b00 ffff8810866c3120 ffff881088989fd8 = 0000000000013b00 [558307.361889] ffff881089b84440 ffff8810866c2d80 ffffffff815dc13e = ffff88108916e400 [558307.361894] Call Trace: [558307.361904] [] ? = _raw_spin_unlock_irqrestore+0x1e/0x30 [558307.361932] [] xlog_grant_log_space+0x4a8/0x500 = [xfs] [558307.361937] [] ? default_wake_function+0x0/0x20 [558307.361951] [] xfs_log_reserve+0xff/0x140 [xfs] [558307.361967] [] xfs_trans_reserve+0x9c/0x200 [xfs] [558307.361980] [] xfs_fs_log_dummy+0x43/0x90 [xfs] [558307.361995] [] xfs_sync_worker+0x81/0x90 [xfs] [558307.362009] [] xfssyncd+0x183/0x230 [xfs] [558307.362025] [] ? xfssyncd+0x0/0x230 [xfs] [558307.362030] [] kthread+0x96/0xa0 [558307.362035] [] kernel_thread_helper+0x4/0x10 [558307.362038] [] ? int_ret_from_sys_call+0x7/0x1b [558307.362041] [] ? retint_restore_args+0x5/0x6 [558307.362045] [] ? kernel_thread_helper+0x0/0x10 From BATV+d6e99f471a51b5d12582+3010+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 20 12:32:26 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAKIWPsS172217 for ; Sun, 20 Nov 2011 12:32:26 -0600 X-ASG-Debug-ID: 1321813944-42f503700000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3AE4B1D1FB3A for ; Sun, 20 Nov 2011 10:32:24 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id S1JDz4HynNjiQFjA for ; Sun, 20 Nov 2011 10:32:24 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RSCBj-00056F-S6; Sun, 20 Nov 2011 18:32:23 +0000 Date: Sun, 20 Nov 2011 13:32:23 -0500 From: Christoph Hellwig To: Mike Krieger Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS / xfssyncd lock-ups on 2.6.38-8 Subject: Re: XFS / xfssyncd lock-ups on 2.6.38-8 Message-ID: <20111120183223.GA19572@infradead.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321813945 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80805 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Nov 20, 2011 at 08:34:02AM -0800, Mike Krieger wrote: > Would appreciate any thoughts/pointers to fixes or workarounds if this is a known issue. This was fixed by: xfs: force the log if we encounter pinned buffers in .iop_pushbuf in Linux 3.1. I've also backported it to the 3.0-stable issues. I would recommend to upgrade to the latest Linux 3.0-stable release, as I'll plan to backport all important XFS fixes to it. From BATV+d6e99f471a51b5d12582+3010+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 20 13:10:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAKJAqnu173985 for ; Sun, 20 Nov 2011 13:10:53 -0600 X-ASG-Debug-ID: 1321816250-256700a60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1A1C916291F9 for ; Sun, 20 Nov 2011 11:10:50 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id N0kesKfWZFvghhvS for ; Sun, 20 Nov 2011 11:10:50 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RSCmw-0004uU-5a; Sun, 20 Nov 2011 19:10:50 +0000 Date: Sun, 20 Nov 2011 14:10:50 -0500 From: Christoph Hellwig To: Peter Kimball Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: inode64 readiness testing Subject: Re: inode64 readiness testing Message-ID: <20111120191050.GB11957@infradead.org> References: <501A7AEB-6708-4181-AAE2-D145DC23B938@yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <501A7AEB-6708-4181-AAE2-D145DC23B938@yahoo.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321816252 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80808 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Nov 18, 2011 at 12:33:16PM -0500, Peter Kimball wrote: > I created a blank 1GB disk image, created an XFS filesystem on that image, and mounted it on a loopback device using the ino64 flag. > > I wrote a bunch of data to the filesystem (lots of small files), approximately 600MB. > > At this point, I think I have a filesystem in which inodes use 64-bit addresses, even if the actual address value would fit in 32 bits. I would expect any program that can't handle 64-bit addresses to barf when trying to access any data on the filesystem. You will never not see 64-bit inodes on a filesystem that small ever. Try to create a (sparse) 10TB loop image, and create some deep directories in it. This should create some larger inodes number for you if you had it mounted with the inode64 flag. You can verify that by checking that the inode number returned from the stat systsem call or from ls -i is larger than 32 bits. From BATV+d6e99f471a51b5d12582+3010+infradead.org+hch@bombadil.srs.infradead.org Sun Nov 20 13:49:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAKJndKF175963 for ; Sun, 20 Nov 2011 13:49:40 -0600 X-ASG-Debug-ID: 1321818574-3f8d00b80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 976C1265EA0 for ; Sun, 20 Nov 2011 11:49:34 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id p9CaWywC5Qzk9AmK for ; Sun, 20 Nov 2011 11:49:34 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RSDOK-0002lt-Sx; Sun, 20 Nov 2011 19:49:28 +0000 Date: Sun, 20 Nov 2011 14:49:28 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , Chandra Seetharaman , XFS Mailing List X-ASG-Orig-Subj: [PATCH v2] xfs: fix and cleanup logspace waiter lists Subject: [PATCH v2] xfs: fix and cleanup logspace waiter lists Message-ID: <20111120194928.GA10591@infradead.org> References: <1321644054.2201.80.camel@chandra-lucid.austin.ibm.com> <20111119181929.GA25739@infradead.org> <20111120082235.GN7046@dastard> <20111120114342.GA11278@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111120114342.GA11278@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321818574 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80809 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Apply the scheme used in log_regrant_write_log_space to wake up any other threads waiting for log space before the newly added one to log_regrant_write_log_space as well, and factor the code into readable helpers. For each of the queues we have add two helpers: - one to try to wake up all waiting threads. This helper will also be usable by xfs_log_move_tail once we remove the current opportunistic wakeups in it. - one to sleep on t_wait until enough log space is available, loosely modelled after Linux waitqueues. And use them to reimplement the guts of log_regrant_write_log_space and log_regrant_write_log_space. These two function now use one and the same algorithm for waiting on log space instead of subtly different ones before, with an option to completely unify them in the near future. Also move the filesystem shutdown handling to the common caller given that we had to touch it anyway. Based on hard debugging and an earlier patch from Chandra Seetharaman . Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_log.c | 348 ++++++++++++++++++++++++++--------------------------- fs/xfs/xfs_trace.h | 12 - 2 files changed, 177 insertions(+), 183 deletions(-) Index: xfs/fs/xfs/xfs_log.c =================================================================== --- xfs.orig/fs/xfs/xfs_log.c 2011-11-20 16:29:49.356194023 +0100 +++ xfs/fs/xfs/xfs_log.c 2011-11-20 16:46:33.440754431 +0100 @@ -150,6 +150,117 @@ xlog_grant_add_space( } while (head_val != old); } +STATIC bool +xlog_reserveq_wake( + struct log *log, + int *free_bytes) +{ + struct xlog_ticket *tic; + int need_bytes; + + list_for_each_entry(tic, &log->l_reserveq, t_queue) { + if (tic->t_flags & XLOG_TIC_PERM_RESERV) + need_bytes = tic->t_unit_res * tic->t_cnt; + else + need_bytes = tic->t_unit_res; + + if (*free_bytes < need_bytes) + return false; + *free_bytes -= need_bytes; + + trace_xfs_log_grant_wake_up(log, tic); + wake_up(&tic->t_wait); + } + + return true; +} + +STATIC bool +xlog_writeq_wake( + struct log *log, + int *free_bytes) +{ + struct xlog_ticket *tic; + int need_bytes; + + list_for_each_entry(tic, &log->l_writeq, t_queue) { + ASSERT(tic->t_flags & XLOG_TIC_PERM_RESERV); + + need_bytes = tic->t_unit_res; + + if (*free_bytes < need_bytes) + return false; + *free_bytes -= need_bytes; + + trace_xfs_log_regrant_write_wake_up(log, tic); + wake_up(&tic->t_wait); + } + + return true; +} + +STATIC int +xlog_reserveq_wait( + struct log *log, + struct xlog_ticket *tic, + int need_bytes) +{ + list_add_tail(&tic->t_queue, &log->l_reserveq); + + do { + if (XLOG_FORCED_SHUTDOWN(log)) + goto shutdown; + xlog_grant_push_ail(log, need_bytes); + + XFS_STATS_INC(xs_sleep_logspace); + trace_xfs_log_grant_sleep(log, tic); + + xlog_wait(&tic->t_wait, &log->l_grant_reserve_lock); + trace_xfs_log_grant_wake(log, tic); + + spin_lock(&log->l_grant_reserve_lock); + if (XLOG_FORCED_SHUTDOWN(log)) + goto shutdown; + } while (xlog_space_left(log, &log->l_grant_reserve_head) < need_bytes); + + list_del_init(&tic->t_queue); + return 0; +shutdown: + list_del_init(&tic->t_queue); + return XFS_ERROR(EIO); +} + +STATIC int +xlog_writeq_wait( + struct log *log, + struct xlog_ticket *tic, + int need_bytes) +{ + list_add_tail(&tic->t_queue, &log->l_writeq); + + do { + if (XLOG_FORCED_SHUTDOWN(log)) + goto shutdown; + xlog_grant_push_ail(log, need_bytes); + + XFS_STATS_INC(xs_sleep_logspace); + trace_xfs_log_regrant_write_sleep(log, tic); + + xlog_wait(&tic->t_wait, &log->l_grant_write_lock); + trace_xfs_log_regrant_write_wake(log, tic); + + spin_lock(&log->l_grant_write_lock); + if (XLOG_FORCED_SHUTDOWN(log)) + goto shutdown; + } while (xlog_space_left(log, &log->l_grant_write_head) < need_bytes); + + list_del_init(&tic->t_queue); + return 0; +shutdown: + list_del_init(&tic->t_queue); + return XFS_ERROR(EIO); +} + static void xlog_tic_reset_res(xlog_ticket_t *tic) { @@ -350,8 +461,19 @@ xfs_log_reserve( retval = xlog_grant_log_space(log, internal_ticket); } + if (unlikely(retval)) { + /* + * If we are failing, make sure the ticket doesn't have any + * current reservations. We don't want to add this back + * when the ticket/ transaction gets cancelled. + */ + internal_ticket->t_curr_res = 0; + /* ungrant will give back unit_res * t_cnt. */ + internal_ticket->t_cnt = 0; + } + return retval; -} /* xfs_log_reserve */ +} /* @@ -2481,8 +2603,8 @@ restart: /* * Atomically get the log space required for a log ticket. * - * Once a ticket gets put onto the reserveq, it will only return after - * the needed reservation is satisfied. + * Once a ticket gets put onto the reserveq, it will only return after the + * needed reservation is satisfied. * * This function is structured so that it has a lock free fast path. This is * necessary because every new transaction reservation will come through this @@ -2490,113 +2612,53 @@ restart: * every pass. * * As tickets are only ever moved on and off the reserveq under the - * l_grant_reserve_lock, we only need to take that lock if we are going - * to add the ticket to the queue and sleep. We can avoid taking the lock if the - * ticket was never added to the reserveq because the t_queue list head will be - * empty and we hold the only reference to it so it can safely be checked - * unlocked. + * l_grant_reserve_lock, we only need to take that lock if we are going to add + * the ticket to the queue and sleep. We can avoid taking the lock if the ticket + * was never added to the reserveq because the t_queue list head will be empty + * and we hold the only reference to it so it can safely be checked unlocked. */ STATIC int -xlog_grant_log_space(xlog_t *log, - xlog_ticket_t *tic) +xlog_grant_log_space( + struct log *log, + struct xlog_ticket *tic) { - int free_bytes; - int need_bytes; + int free_bytes, need_bytes; + int error = 0; -#ifdef DEBUG - if (log->l_flags & XLOG_ACTIVE_RECOVERY) - panic("grant Recovery problem"); -#endif + ASSERT(!(log->l_flags & XLOG_ACTIVE_RECOVERY)); trace_xfs_log_grant_enter(log, tic); + /* + * If there are other waiters on the queue then give them a chance at + * logspace before us. Wake up the first waiters, if we do not wake + * up all the waiters then go to sleep waiting for more free space, + * otherwise try to get some space for this transaction. + */ need_bytes = tic->t_unit_res; if (tic->t_flags & XFS_LOG_PERM_RESERV) need_bytes *= tic->t_ocnt; - - /* something is already sleeping; insert new transaction at end */ - if (!list_empty_careful(&log->l_reserveq)) { - spin_lock(&log->l_grant_reserve_lock); - /* recheck the queue now we are locked */ - if (list_empty(&log->l_reserveq)) { - spin_unlock(&log->l_grant_reserve_lock); - goto redo; - } - list_add_tail(&tic->t_queue, &log->l_reserveq); - - trace_xfs_log_grant_sleep1(log, tic); - - /* - * Gotta check this before going to sleep, while we're - * holding the grant lock. - */ - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return; - - XFS_STATS_INC(xs_sleep_logspace); - xlog_wait(&tic->t_wait, &log->l_grant_reserve_lock); - - /* - * If we got an error, and the filesystem is shutting down, - * we'll catch it down below. So just continue... - */ - trace_xfs_log_grant_wake1(log, tic); - } - -redo: - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return_unlocked; - free_bytes = xlog_space_left(log, &log->l_grant_reserve_head); - if (free_bytes < need_bytes) { + if (!list_empty_careful(&log->l_reserveq)) { spin_lock(&log->l_grant_reserve_lock); - if (list_empty(&tic->t_queue)) - list_add_tail(&tic->t_queue, &log->l_reserveq); - - trace_xfs_log_grant_sleep2(log, tic); - - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return; - - xlog_grant_push_ail(log, need_bytes); - - XFS_STATS_INC(xs_sleep_logspace); - xlog_wait(&tic->t_wait, &log->l_grant_reserve_lock); - - trace_xfs_log_grant_wake2(log, tic); - goto redo; - } - - if (!list_empty(&tic->t_queue)) { + if (!xlog_reserveq_wake(log, &free_bytes) || + free_bytes < need_bytes) + error = xlog_reserveq_wait(log, tic, need_bytes); + spin_unlock(&log->l_grant_reserve_lock); + } else if (free_bytes < need_bytes) { spin_lock(&log->l_grant_reserve_lock); - list_del_init(&tic->t_queue); + error = xlog_reserveq_wait(log, tic, need_bytes); spin_unlock(&log->l_grant_reserve_lock); } + if (error) + return error; - /* we've got enough space */ xlog_grant_add_space(log, &log->l_grant_reserve_head, need_bytes); xlog_grant_add_space(log, &log->l_grant_write_head, need_bytes); trace_xfs_log_grant_exit(log, tic); xlog_verify_grant_tail(log); return 0; - -error_return_unlocked: - spin_lock(&log->l_grant_reserve_lock); -error_return: - list_del_init(&tic->t_queue); - spin_unlock(&log->l_grant_reserve_lock); - trace_xfs_log_grant_error(log, tic); - - /* - * If we are failing, make sure the ticket doesn't have any - * current reservations. We don't want to add this back when - * the ticket/transaction gets cancelled. - */ - tic->t_curr_res = 0; - tic->t_cnt = 0; /* ungrant will give back unit_res * t_cnt. */ - return XFS_ERROR(EIO); -} /* xlog_grant_log_space */ - +} /* * Replenish the byte reservation required by moving the grant write head. @@ -2605,10 +2667,12 @@ error_return: * free fast path. */ STATIC int -xlog_regrant_write_log_space(xlog_t *log, - xlog_ticket_t *tic) +xlog_regrant_write_log_space( + struct log *log, + struct xlog_ticket *tic) { - int free_bytes, need_bytes; + int free_bytes, need_bytes; + int error = 0; tic->t_curr_res = tic->t_unit_res; xlog_tic_reset_res(tic); @@ -2616,104 +2680,38 @@ xlog_regrant_write_log_space(xlog_t * if (tic->t_cnt > 0) return 0; -#ifdef DEBUG - if (log->l_flags & XLOG_ACTIVE_RECOVERY) - panic("regrant Recovery problem"); -#endif + ASSERT(!(log->l_flags & XLOG_ACTIVE_RECOVERY)); trace_xfs_log_regrant_write_enter(log, tic); - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return_unlocked; - /* If there are other waiters on the queue then give them a - * chance at logspace before us. Wake up the first waiters, - * if we do not wake up all the waiters then go to sleep waiting - * for more free space, otherwise try to get some space for - * this transaction. + /* + * If there are other waiters on the queue then give them a chance at + * logspace before us. Wake up the first waiters, if we do not wake + * up all the waiters then go to sleep waiting for more free space, + * otherwise try to get some space for this transaction. */ need_bytes = tic->t_unit_res; - if (!list_empty_careful(&log->l_writeq)) { - struct xlog_ticket *ntic; - - spin_lock(&log->l_grant_write_lock); - free_bytes = xlog_space_left(log, &log->l_grant_write_head); - list_for_each_entry(ntic, &log->l_writeq, t_queue) { - ASSERT(ntic->t_flags & XLOG_TIC_PERM_RESERV); - - if (free_bytes < ntic->t_unit_res) - break; - free_bytes -= ntic->t_unit_res; - wake_up(&ntic->t_wait); - } - - if (ntic != list_first_entry(&log->l_writeq, - struct xlog_ticket, t_queue)) { - if (list_empty(&tic->t_queue)) - list_add_tail(&tic->t_queue, &log->l_writeq); - trace_xfs_log_regrant_write_sleep1(log, tic); - - xlog_grant_push_ail(log, need_bytes); - - XFS_STATS_INC(xs_sleep_logspace); - xlog_wait(&tic->t_wait, &log->l_grant_write_lock); - trace_xfs_log_regrant_write_wake1(log, tic); - } else - spin_unlock(&log->l_grant_write_lock); - } - -redo: - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return_unlocked; - free_bytes = xlog_space_left(log, &log->l_grant_write_head); - if (free_bytes < need_bytes) { + if (!list_empty_careful(&log->l_writeq)) { spin_lock(&log->l_grant_write_lock); - if (list_empty(&tic->t_queue)) - list_add_tail(&tic->t_queue, &log->l_writeq); - - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return; - - xlog_grant_push_ail(log, need_bytes); - - XFS_STATS_INC(xs_sleep_logspace); - trace_xfs_log_regrant_write_sleep2(log, tic); - xlog_wait(&tic->t_wait, &log->l_grant_write_lock); - - trace_xfs_log_regrant_write_wake2(log, tic); - goto redo; - } - - if (!list_empty(&tic->t_queue)) { + if (!xlog_writeq_wake(log, &free_bytes) || + free_bytes < need_bytes) + error = xlog_writeq_wait(log, tic, need_bytes); + spin_unlock(&log->l_grant_write_lock); + } else if (free_bytes < need_bytes) { spin_lock(&log->l_grant_write_lock); - list_del_init(&tic->t_queue); + error = xlog_writeq_wait(log, tic, need_bytes); spin_unlock(&log->l_grant_write_lock); } - /* we've got enough space */ + if (error) + return error; + xlog_grant_add_space(log, &log->l_grant_write_head, need_bytes); trace_xfs_log_regrant_write_exit(log, tic); xlog_verify_grant_tail(log); return 0; - - - error_return_unlocked: - spin_lock(&log->l_grant_write_lock); - error_return: - list_del_init(&tic->t_queue); - spin_unlock(&log->l_grant_write_lock); - trace_xfs_log_regrant_write_error(log, tic); - - /* - * If we are failing, make sure the ticket doesn't have any - * current reservations. We don't want to add this back when - * the ticket/transaction gets cancelled. - */ - tic->t_curr_res = 0; - tic->t_cnt = 0; /* ungrant will give back unit_res * t_cnt. */ - return XFS_ERROR(EIO); -} /* xlog_regrant_write_log_space */ - +} /* The first cnt-1 times through here we don't need to * move the grant write head because the permanent Index: xfs/fs/xfs/xfs_trace.h =================================================================== --- xfs.orig/fs/xfs/xfs_trace.h 2011-11-20 16:29:49.362860654 +0100 +++ xfs/fs/xfs/xfs_trace.h 2011-11-20 16:34:23.954706395 +0100 @@ -834,18 +834,14 @@ DEFINE_LOGGRANT_EVENT(xfs_log_umount_wri DEFINE_LOGGRANT_EVENT(xfs_log_grant_enter); DEFINE_LOGGRANT_EVENT(xfs_log_grant_exit); DEFINE_LOGGRANT_EVENT(xfs_log_grant_error); -DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep1); -DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake1); -DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep2); -DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake2); +DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep); +DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake); DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake_up); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_enter); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_exit); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_error); -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_sleep1); -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake1); -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_sleep2); -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake2); +DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_sleep); +DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake_up); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_reserve_enter); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_reserve_exit); From david@fromorbit.com Sun Nov 20 16:34:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAKMYPOe185634 for ; Sun, 20 Nov 2011 16:34:25 -0600 X-ASG-Debug-ID: 1321828462-426f00190000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 327371629A42 for ; Sun, 20 Nov 2011 14:34:22 -0800 (PST) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id f10yAwvqCDjYbT1X for ; Sun, 20 Nov 2011 14:34:22 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EACN9yU55LGY5/2dsb2JhbABDqj6BBoFyAQEFOhwjEAgDDgouFCUDIRO6ThKJImMElDuJA4kX Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail06.adl6.internode.on.net with ESMTP; 21 Nov 2011 09:04:20 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RSFxq-0006pu-Op; Mon, 21 Nov 2011 09:34:18 +1100 Date: Mon, 21 Nov 2011 09:34:18 +1100 From: Dave Chinner To: Christoph Hellwig Cc: Jeff Liu , aelder@sgi.com, Chris Mason , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE support to XFS V1 Subject: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE support to XFS V1 Message-ID: <20111120223418.GD2386@dastard> References: <4E887D7F.2010306@oracle.com> <20111114102444.GA27791@infradead.org> <4EC10DE8.6030607@oracle.com> <20111114125044.GA9802@infradead.org> <4EC768F5.4050904@oracle.com> <4EC76AB9.9030604@oracle.com> <20111120003031.GM7046@dastard> <4EC907C3.7020901@oracle.com> <20111120153013.GA19199@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111120153013.GA19199@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1321828464 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80819 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Nov 20, 2011 at 10:30:13AM -0500, Christoph Hellwig wrote: > On Sun, Nov 20, 2011 at 09:59:31PM +0800, Jeff Liu wrote: > > > fsb = XFS_B_TO_FSBT(mp, start_offset); > > > error = xfs_bmap_first_unused(NULL, ip, 1, &fsb, > > > XFS_DATA_FORK); > > > if (error) > > > return -error; > > > > > > if (fsb <= XFS_B_TO_FSBT(mp, start_offset)) > > > return start_offset; > > > return XFS_FSB_TO_B(mp, fsb); > > > > Thanks for pointing it out, I even don't know XFS has this convenient routine at that time. :( > > I didn't remember it either, but Dave has been working the dir code > which makes use of this funtion lately :) > > Btw, the documentation for the function doesn't mention that it starts > searching for the hole only after the passed in block number, which > is something that could be improved. Definitely. A bit of code archeology shows that the location of the hole was originally the return value of the function, then it got moved to a function parameter so that the return value could be used for error status (1995). Then the parameter go changed to be used as the first block to start searching from when the dir2 code was introduced in 1999. So it's been wrong for quite some time ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Nov 20 18:46:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAL0kDpd191666 for ; Sun, 20 Nov 2011 18:46:13 -0600 X-ASG-Debug-ID: 1321836370-1c4e006e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1A67156F38F for ; Sun, 20 Nov 2011 16:46:11 -0800 (PST) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id IGEBkIiT1FNv0TSd for ; Sun, 20 Nov 2011 16:46:11 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAJWcyU55LGY5/2dsb2JhbABDqj6BBoFyAQEFOhwjEAgDDgouFCUDIRO6aRKJImMElDuSGg Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail06.adl6.internode.on.net with ESMTP; 21 Nov 2011 11:16:10 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RSI1Q-000714-8N; Mon, 21 Nov 2011 11:46:08 +1100 Date: Mon, 21 Nov 2011 11:46:08 +1100 From: Dave Chinner To: Christoph Hellwig Cc: stable@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/9] XFS update for 3.0-stable Subject: Re: [PATCH 0/9] XFS update for 3.0-stable Message-ID: <20111121004608.GE2386@dastard> References: <20111119181336.964593075@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111119181336.964593075@bombadil.infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1321836372 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0272 1.0000 -1.8448 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.84 X-Barracuda-Spam-Status: No, SCORE=-1.84 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80828 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Nov 19, 2011 at 01:13:36PM -0500, Christoph Hellwig wrote: > This is the series of XFS fixes from current mainline which is important > enough for 3.0-stable. All but the first three would also be needed > for 3.1-stable, but given the limited resources I plan to concentrate > on 3.0-stable. If anyone wants to take care for 3.1 by building a kernel > with the remaining patches and run QA on them you are more welcome to > help out with that tree. > > Note that while the description of > > xfs: don't serialise direct IO reads on page cache checks > > doesn't mention that is is a regression fix we later noticed that a > large part of the speedups wasn't in fact new, but fixed a performance > regression introduced in Linux 2.6.38 with commit: > > xfs: introduce xfs_rw_lock() helpers for locking the inode The series of patches for 3.0 looks good. It passes my tests here. Cheers, Dave. -- Dave Chinner david@fromorbit.com From seto.hidetoshi@jp.fujitsu.com Sun Nov 20 19:47:35 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAL1lYRR194220 for ; Sun, 20 Nov 2011 19:47:35 -0600 X-ASG-Debug-ID: 1321840052-745c02310000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fgwmail6.fujitsu.co.jp (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B1D3B162980C for ; Sun, 20 Nov 2011 17:47:32 -0800 (PST) Received: from fgwmail6.fujitsu.co.jp (fgwmail6.fujitsu.co.jp [192.51.44.36]) by cuda.sgi.com with ESMTP id yEhW9QolsktABgTV for ; Sun, 20 Nov 2011 17:47:32 -0800 (PST) Received: from m3.gw.fujitsu.co.jp (unknown [10.0.50.73]) by fgwmail6.fujitsu.co.jp (Postfix) with ESMTP id 3D7443EE0B6 for ; Mon, 21 Nov 2011 10:47:29 +0900 (JST) Received: from smail (m3 [127.0.0.1]) by outgoing.m3.gw.fujitsu.co.jp (Postfix) with ESMTP id 1CF5A45DEB3 for ; Mon, 21 Nov 2011 10:47:29 +0900 (JST) Received: from s3.gw.fujitsu.co.jp (s3.gw.fujitsu.co.jp [10.0.50.93]) by m3.gw.fujitsu.co.jp (Postfix) with ESMTP id 0347B45DEB2 for ; Mon, 21 Nov 2011 10:47:29 +0900 (JST) Received: from s3.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s3.gw.fujitsu.co.jp (Postfix) with ESMTP id EAA841DB803E for ; Mon, 21 Nov 2011 10:47:28 +0900 (JST) Received: from ml14.s.css.fujitsu.com (ml14.s.css.fujitsu.com [10.240.81.134]) by s3.gw.fujitsu.co.jp (Postfix) with ESMTP id B59C41DB803B for ; Mon, 21 Nov 2011 10:47:28 +0900 (JST) Received: from ml14.css.fujitsu.com (ml14 [127.0.0.1]) by ml14.s.css.fujitsu.com (Postfix) with ESMTP id 8520E9F72E0; Mon, 21 Nov 2011 10:47:28 +0900 (JST) Received: from [127.0.0.1] (unknown [10.124.101.101]) by ml14.s.css.fujitsu.com (Postfix) with ESMTP id CF1F79F732A; Mon, 21 Nov 2011 10:47:27 +0900 (JST) X-SecurityPolicyCheck-FJ: OK by FujitsuOutboundMailChecker v1.3.1 Received: from FMVDA2A041[10.124.101.101] by FMVDA2A041 (FujitsuOutboundMailChecker v1.3.1/9992[10.124.101.101]); Mon, 21 Nov 2011 10:47:24 +0900 (JST) Message-ID: <4EC9AD92.6020000@jp.fujitsu.com> Date: Mon, 21 Nov 2011 10:46:58 +0900 From: Hidetoshi Seto User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: Li Zefan CC: Christoph Hellwig , xfs@oss.sgi.com, "linux-btrfs@vger.kernel.org" X-ASG-Orig-Subj: Re: [PATCH] 254: disable space cache Subject: Re: [PATCH] 254: disable space cache References: <4EC61AC3.6010806@cn.fujitsu.com> In-Reply-To: <4EC61AC3.6010806@cn.fujitsu.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: fgwmail6.fujitsu.co.jp[192.51.44.36] X-Barracuda-Start-Time: 1321840053 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0041 1.0000 -1.9943 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.99 X-Barracuda-Spam-Status: No, SCORE=-1.99 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80833 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean (2011/11/18 17:43), Li Zefan wrote: > I can't pass 254, and below is the output: > > 254 3s ... - output mismatch (see 254.out.bad) > ... > ID 256 top level 5 path snap > -ID 257 top level 5 path subvol > +ID 258 top level 5 path subvol > > When space cache is enabled (and now mkfs.btrfs always enables it), > there will be some space cache inodes in the root tree, and they > consume some IDs, and that's why "subvol" has the ID 258 but not 257. > > Just disable space cache for this test case. > > Signed-off-by: Li Zefan > --- > 254 | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/254 b/254 > index 5216120..1cd4832 100755 > --- a/254 > +++ b/254 > @@ -48,7 +48,7 @@ _supported_os Linux > _require_scratch > > _scratch_mkfs > /dev/null 2>&1 > -_scratch_mount > +_scratch_mount -o nospace_cache > > # First test basic snapshotting > echo "Creating file foo in root dir" I got following error on fedora 16 with your patch: @@ -1,40 +1,36 @@ QA output created by 254 +mount: wrong fs type, bad option, bad superblock on /dev/sdc2, + missing codepage or helper program, or other error + In some cases useful info is found in syslog - try + dmesg | tail or so + Creating file foo in root dir List root dir foo Creating snapshot of root dir -Create a snapshot of 'SCRATCH_MNT' in 'SCRATCH_MNT/snap' +ERROR: '/mnt2' is not a subvolume List root dir after snapshot foo -snap List snapshot dir -foo +ls: cannot access /mnt2/snap: No such file or directory : : And in dmesg: [246554.739092] btrfs: unrecognized mount option 'nospace_cache' Thanks, H.Seto From lizf@cn.fujitsu.com Sun Nov 20 20:40:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAL2ehP0196854 for ; Sun, 20 Nov 2011 20:40:43 -0600 X-ASG-Debug-ID: 1321843217-7bc603a20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 79FA056F66E for ; Sun, 20 Nov 2011 18:40:22 -0800 (PST) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id jbNyE4ACiszZeAut for ; Sun, 20 Nov 2011 18:40:22 -0800 (PST) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id 5C24E170119; Mon, 21 Nov 2011 10:40:12 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pAL2eBhc010288; Mon, 21 Nov 2011 10:40:11 +0800 Received: from [10.167.225.230] ([10.167.225.230]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011112110400024-156749 ; Mon, 21 Nov 2011 10:40:00 +0800 Message-ID: <4EC9BA7C.20907@cn.fujitsu.com> Date: Mon, 21 Nov 2011 10:42:04 +0800 From: Li Zefan User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: Hidetoshi Seto CC: Christoph Hellwig , xfs@oss.sgi.com, "linux-btrfs@vger.kernel.org" X-ASG-Orig-Subj: Re: [PATCH] 254: disable space cache Subject: Re: [PATCH] 254: disable space cache References: <4EC61AC3.6010806@cn.fujitsu.com> <4EC9AD92.6020000@jp.fujitsu.com> In-Reply-To: <4EC9AD92.6020000@jp.fujitsu.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-21 10:40:00, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-21 10:40:00, Serialize complete at 2011-11-21 10:40:00 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1321843242 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0015 1.0000 -2.0110 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80836 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hidetoshi Seto wrote: > (2011/11/18 17:43), Li Zefan wrote: >> I can't pass 254, and below is the output: >> >> 254 3s ... - output mismatch (see 254.out.bad) >> ... >> ID 256 top level 5 path snap >> -ID 257 top level 5 path subvol >> +ID 258 top level 5 path subvol >> >> When space cache is enabled (and now mkfs.btrfs always enables it), >> there will be some space cache inodes in the root tree, and they >> consume some IDs, and that's why "subvol" has the ID 258 but not 257. >> >> Just disable space cache for this test case. >> >> Signed-off-by: Li Zefan >> --- >> 254 | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/254 b/254 >> index 5216120..1cd4832 100755 >> --- a/254 >> +++ b/254 >> @@ -48,7 +48,7 @@ _supported_os Linux >> _require_scratch >> >> _scratch_mkfs > /dev/null 2>&1 >> -_scratch_mount >> +_scratch_mount -o nospace_cache >> >> # First test basic snapshotting >> echo "Creating file foo in root dir" > > I got following error on fedora 16 with your patch: > This is an alternative fix: ======================== [PATCH] 254: avoid output mismatch due to space cache I can't pass 254, and below is the output: 254 3s ... - output mismatch (see 254.out.bad) ... ID 256 top level 5 path snap -ID 257 top level 5 path subvol +ID 258 top level 5 path subvol When space cache is enabled (and now mkfs.btrfs always enables it), there will be some space cache inodes in the root tree, and they consume some IDs, and that's why "subvol" has the ID 258 but not 257. Just list subvolume names, don't assume what ID numbers those subvolumes will have. Signed-off-by: Li Zefan --- 254 | 2 +- 254.out | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/254 b/254 index 5216120..7b74a02 100755 --- a/254 +++ b/254 @@ -95,7 +95,7 @@ ls $SCRATCH_MNT # Test listing the subvolumes echo "Listing subvolumes" -btrfs subvolume list $SCRATCH_MNT | _filter_scratch +btrfs subvolume list $SCRATCH_MNT | awk '{ print $NF }' # Delete the snapshot btrfs subvolume delete $SCRATCH_MNT/snap | _filter_scratch diff --git a/254.out b/254.out index 582357a..d4b5346 100644 --- a/254.out +++ b/254.out @@ -31,8 +31,8 @@ List root dir snap subvol Listing subvolumes -ID 256 top level 5 path snap -ID 257 top level 5 path subvol +snap +subvol Delete subvolume 'SCRATCH_MNT/snap' List root dir subvol -- 1.7.3.1 From BATV+cfb9ea256cd8deeb0873+3011+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 21 00:43:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAL6hAPB240581 for ; Mon, 21 Nov 2011 00:43:11 -0600 X-ASG-Debug-ID: 1321857786-0a1b00d70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1E55F2669D0 for ; Sun, 20 Nov 2011 22:43:06 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id b79ubpNWTNyhuxSU for ; Sun, 20 Nov 2011 22:43:06 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RSNam-0002mN-Kj; Mon, 21 Nov 2011 06:43:00 +0000 Date: Mon, 21 Nov 2011 01:43:00 -0500 From: Christoph Hellwig To: Li Zefan Cc: Hidetoshi Seto , Christoph Hellwig , xfs@oss.sgi.com, "linux-btrfs@vger.kernel.org" X-ASG-Orig-Subj: Re: [PATCH] 254: disable space cache Subject: Re: [PATCH] 254: disable space cache Message-ID: <20111121064300.GA10644@infradead.org> References: <4EC61AC3.6010806@cn.fujitsu.com> <4EC9AD92.6020000@jp.fujitsu.com> <4EC9BA7C.20907@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4EC9BA7C.20907@cn.fujitsu.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321857787 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80852 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 21, 2011 at 10:42:04AM +0800, Li Zefan wrote: > This is an alternative fix: I have already applied your previous one. Can you rediff it ontop of the current xfstests-dev tree? From BATV+cfb9ea256cd8deeb0873+3011+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 21 04:46:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALAkRi3253559 for ; Mon, 21 Nov 2011 04:46:27 -0600 X-ASG-Debug-ID: 1321872386-6dd302500000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D2514162ACF7 for ; Mon, 21 Nov 2011 02:46:26 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id sdAxFXwsKi54keKr for ; Mon, 21 Nov 2011 02:46:26 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RSROL-0004hH-47; Mon, 21 Nov 2011 10:46:25 +0000 Date: Mon, 21 Nov 2011 05:46:25 -0500 From: Christoph Hellwig To: Wanlong Gao Cc: Christoph Hellwig , linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfstests/071 FAIL with XFS Assertion Subject: Re: xfstests/071 FAIL with XFS Assertion Message-ID: <20111121104625.GA17921@infradead.org> References: <4EBCC112.3020108@cn.fujitsu.com> <20111113115223.GA19435@infradead.org> <4EC05F9C.7030106@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4EC05F9C.7030106@cn.fujitsu.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321872386 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80868 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 14, 2011 at 08:23:56AM +0800, Wanlong Gao wrote: > On 11/13/2011 07:52 PM, Christoph Hellwig wrote: > > > On Fri, Nov 11, 2011 at 02:30:42PM +0800, Wanlong Gao wrote: > >> v3.1.0-10325-g3155521 > > > > Hmm, this a is a test not run in the auto group. Do you have tested > > it on older kernels where it works, aka do you know if this is a > > regresion? > > > > No, have not. I'll do it later. I can't reproduce it on any of my test setups. It actually fails on the 32-bit setups because the large offset writes succeed but the testcase doesn't expect it, but it doesn't crash the system. From dave@fromorbit.com Mon Nov 21 05:31:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_55, J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALBVfUG255437 for ; Mon, 21 Nov 2011 05:31:42 -0600 X-ASG-Debug-ID: 1321875098-5db003890000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5FE7B56FA3C for ; Mon, 21 Nov 2011 03:31:39 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id bKMmrMMlz6aT1SkF for ; Mon, 21 Nov 2011 03:31:39 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAPk1yk55LGY5/2dsb2JhbABDqjeBBoFyAQEFVh4FEAgYMTkDGxm7Q4NZhj4EnT6JFw Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Nov 2011 22:01:35 +1030 Received: from disappointment ([192.168.1.1]) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1RSS60-00080m-Ue; Mon, 21 Nov 2011 22:31:32 +1100 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1RSS5z-00083L-Uo; Mon, 21 Nov 2011 22:31:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: [PATCH 2/8] xfstests: rename USE_BIG_LOOPFS to be more generic Subject: [PATCH 2/8] xfstests: rename USE_BIG_LOOPFS to be more generic Date: Mon, 21 Nov 2011 22:31:22 +1100 Message-Id: <1321875088-30801-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1321875088-30801-1-git-send-email-david@fromorbit.com> References: <1321875088-30801-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1321875100 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_SA210e, MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80871 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner USE_BIG_LOOPFS is really misnamed - it can be used on real devices just as easily as loop devices. It really means we are testing a large scratch device and that we should enable the special filesystem filling and checking options that enable xfstests to be run sanely on large XFS filesystems. Signed-off-by: Dave Chinner --- 004 | 2 +- 015 | 2 +- 030 | 2 +- 031 | 2 +- 032 | 2 +- 033 | 4 ++-- 041 | 2 +- 049 | 2 +- 083 | 2 +- 092 | 2 +- 148 | 2 +- 149 | 2 +- common | 2 +- common.rc | 12 ++++++------ setup | 5 +++-- 15 files changed, 23 insertions(+), 22 deletions(-) diff --git a/004 b/004 index 9f28e17..23729da 100755 --- a/004 +++ b/004 @@ -64,7 +64,7 @@ _supported_os IRIX Linux _need_to_be_root _require_scratch -_require_nobigloopfs +_require_no_large_scratch_dev rm -f $seq.full diff --git a/015 b/015 index 4206b93..a99f1ed 100755 --- a/015 +++ b/015 @@ -52,7 +52,7 @@ _supported_fs generic _supported_os IRIX Linux _require_scratch -_require_nobigloopfs +_require_no_large_scratch_dev _scratch_mkfs_sized `expr 50 \* 1024 \* 1024` >/dev/null 2>&1 \ || _fail "mkfs failed" diff --git a/030 b/030 index 74147d4..cd040a9 100755 --- a/030 +++ b/030 @@ -63,8 +63,8 @@ _check_ag() _supported_fs xfs _supported_os IRIX Linux -_require_nobigloopfs _require_scratch +_require_no_large_scratch_dev DSIZE="-dsize=100m,agcount=6" diff --git a/031 b/031 index b062277..fb6f15b 100755 --- a/031 +++ b/031 @@ -97,8 +97,8 @@ EOF _supported_fs xfs _supported_os IRIX Linux -_require_nobigloopfs _require_scratch +_require_no_large_scratch_dev # sanity test - default + one root directory entry # Note: must do this proto/mkfs now for later inode size calcs diff --git a/032 b/032 index 4261ca2..d093b45 100755 --- a/032 +++ b/032 @@ -41,8 +41,8 @@ rm -f $seq.full _supported_fs xfs _supported_os Linux -_require_nobigloopfs _require_scratch +_require_no_large_scratch_dev echo "Silence is golden." for fs in `echo /sbin/mkfs.* | sed -e 's/.sbin.mkfs.//g'` diff --git a/033 b/033 index 9651f26..68a688e 100755 --- a/033 +++ b/033 @@ -76,9 +76,9 @@ _filter_bad_ids() # real QA test starts here _supported_fs xfs _supported_os IRIX Linux - -_require_nobigloopfs + _require_scratch +_require_no_large_scratch_dev # devzero blows away 512byte blocks, so make 512byte inodes (at least) _scratch_mkfs_xfs | _filter_mkfs 2>$tmp.mkfs diff --git a/041 b/041 index 2800811..28dcb33 100755 --- a/041 +++ b/041 @@ -50,7 +50,7 @@ _supported_fs xfs _supported_os IRIX Linux _require_scratch -_require_nobigloopfs +_require_no_large_scratch_dev umount $SCRATCH_DEV 2>/dev/null _fill() diff --git a/049 b/049 index c6c4faa..e37b2d3 100755 --- a/049 +++ b/049 @@ -60,9 +60,9 @@ _log() echo "--- $*" >> $seq.full } -_require_nobigloopfs _require_nonexternal _require_scratch +_require_no_large_scratch_dev _require_loop _require_ext2 diff --git a/083 b/083 index e0670b9..7a73f30 100755 --- a/083 +++ b/083 @@ -58,7 +58,7 @@ _supported_fs generic _supported_os IRIX Linux _require_scratch -_require_nobigloopfs +_require_no_large_scratch_dev rm -f $seq.full diff --git a/092 b/092 index 429fa80..02ccc71 100755 --- a/092 +++ b/092 @@ -48,7 +48,7 @@ _cleanup() _supported_fs xfs _supported_os IRIX Linux _require_scratch -_require_nobigloopfs +_require_no_large_scratch_dev MOUNT_OPTIONS="$MOUNT_OPTIONS -o inode64" _scratch_mkfs_xfs | _filter_mkfs 2>/dev/null diff --git a/148 b/148 index 76cbf37..7bb1722 100755 --- a/148 +++ b/148 @@ -66,8 +66,8 @@ _check_ag() _supported_fs xfs _supported_os IRIX Linux -_require_nobigloopfs _require_scratch +_require_no_large_scratch_dev DSIZE="-dsize=100m" diff --git a/149 b/149 index 5131a45..193e6d7 100755 --- a/149 +++ b/149 @@ -100,8 +100,8 @@ EOF _supported_fs xfs _supported_os IRIX Linux -_require_nobigloopfs _require_scratch +_require_no_large_scratch_dev # sanity test - default + one root directory entry # Note: must do this proto/mkfs now for later inode size calcs diff --git a/common b/common index 7d13078..da86cd9 100644 --- a/common +++ b/common @@ -239,7 +239,7 @@ s/ .*//p ;; --large-fs) - export USE_BIG_LOOPFS=yes + export LARGE_SCRATCH_DEV=yes xpand=false ;; diff --git a/common.rc b/common.rc index cab0b64..fdeef1c 100644 --- a/common.rc +++ b/common.rc @@ -310,7 +310,7 @@ _scratch_mkfs_xfs() cat $tmp_dir.mkfsstd rm -f $tmp_dir.mkfserr $tmp_dir.mkfsstd - if [ "$USE_BIG_LOOPFS" = yes ]; then + if [ "$LARGE_SCRATCH_DEV" = yes ]; then [ -z "$RETAIN_AG_BYTES" ] && RETAIN_AG_BYTES=0 ./tools/ag-wipe -q -r $RETAIN_AG_BYTES $SCRATCH_DEV fi @@ -432,7 +432,7 @@ _scratch_xfs_repair() SCRATCH_OPTIONS="-l$SCRATCH_LOGDEV" [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_RTDEV" ] && \ SCRATCH_OPTIONS=$SCRATCH_OPTIONS" -r$SCRATCH_RTDEV" - [ "$USE_BIG_LOOPFS" = yes ] && SCRATCH_OPTIONS=$SCRATCH_OPTIONS" -t" + [ "$LARGE_SCRATCH_DEV" = yes ] && SCRATCH_OPTIONS=$SCRATCH_OPTIONS" -t" $XFS_REPAIR_PROG $SCRATCH_OPTIONS $* $SCRATCH_DEV } @@ -821,9 +821,9 @@ _require_ext2() # this test requires that (large) loopback device files are not in use # -_require_nobigloopfs() +_require_no_large_scratch_dev() { - [ "$USE_BIG_LOOPFS" = yes ] && \ + [ "$LARGE_SCRATCH_DEV" = yes ] && \ _notrun "Large filesystem testing in progress, skipped this test" } @@ -1164,7 +1164,7 @@ _check_xfs_filesystem() [ "$FSTYP" != xfs ] && return 0 testoption="" - [ "$USE_BIG_LOOPFS" = yes ] && testoption=-t + [ "$LARGE_SCRATCH_DEV" = yes ] && testoption=-t type=`_fs_type $device` ok=1 @@ -1203,7 +1203,7 @@ _check_xfs_filesystem() ok=0 fi # repair doesn't scale massively at this stage, optionally skip it for now - [ "$USE_BIG_LOOPFS" = yes ] || \ + [ "$LARGE_SCRATCH_DEV" = yes ] || \ $XFS_REPAIR_PROG -n $extra_log_options $extra_rt_options $device >$tmp.repair 2>&1 if [ $? -ne 0 ] then diff --git a/setup b/setup index 62798cc..5225951 100755 --- a/setup +++ b/setup @@ -23,7 +23,7 @@ fi [ "$USE_EXTERNAL" = yes ] || USE_EXTERNAL=no [ "$USE_LBD_PATCH" = yes ] || USE_LBD_PATCH=no -[ "$USE_BIG_LOOPFS" = yes ] || USE_BIG_LOOPFS=no +[ "$LARGE_SCRATCH_DEV" = yes ] || LARGE_SCRATCH_DEV=no [ "$USE_ATTR_SECURE" = yes ] || USE_ATTR_SECURE=no [ -z "$FSTYP" ] && FSTYP="xfs" @@ -31,5 +31,6 @@ cat <; Mon, 21 Nov 2011 05:31:45 -0600 X-ASG-Debug-ID: 1321875098-5db003890001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 925B456F9F2 for ; Mon, 21 Nov 2011 03:31:43 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id PEmNSiYqntYk9Yfx for ; Mon, 21 Nov 2011 03:31:43 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAPk1yk55LGY5/2dsb2JhbABDqjeBBoFyAQEFViMQCBgxOQMbGbtDhwKDFQSmVQ Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Nov 2011 22:01:43 +1030 Received: from disappointment ([192.168.1.1]) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1RSS6A-000811-Av; Mon, 21 Nov 2011 22:31:42 +1100 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1RSS5z-00083J-Qb; Mon, 21 Nov 2011 22:31:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: [PATCH 1/8] xfstests: add --largefs check option Subject: [PATCH 1/8] xfstests: add --largefs check option Date: Mon, 21 Nov 2011 22:31:21 +1100 Message-Id: <1321875088-30801-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1321875088-30801-1-git-send-email-david@fromorbit.com> References: <1321875088-30801-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1321875104 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80871 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner Make it easier to check large filesystems quickly by adding a --large-fs option to check to turn on shortcuts for large scratch device filesystem testing. Also, reject invalid command line options with a usage message. Signed-off-by: Dave Chinner --- common | 63 +++++++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 39 insertions(+), 24 deletions(-) diff --git a/common b/common index 0723224..7d13078 100644 --- a/common +++ b/common @@ -27,6 +27,35 @@ _setenvironment() export MSGVERB } +usage() +{ + echo "Usage: $0 [options] [testlist]"' + +common options + -v verbose + +check options + -xfs test XFS (default) + -udf test UDF + -nfs test NFS + -l line mode diff + -xdiff graphical mode diff + -udiff show unified diff (default) + -n show me, do not run tests + -q quick [deprecated] + -T output timestamps + -r randomize test order + --large-fs optimise scratch device for large filesystems + +testlist options + -g group[,group...] include tests from these groups + -x group[,group...] exclude tests from these groups + NNN include test NNN + NNN-NNN include test range (eg. 012-021) +' + exit 0 +} + here=`pwd` rm -f $here/$iam.out _setenvironment @@ -117,30 +146,7 @@ s/ .*//p in -\? | -h | --help) # usage - echo "Usage: $0 [options] [testlist]"' - -common options - -v verbose - -check options - -xfs test XFS (default) - -udf test UDF - -nfs test NFS - -l line mode diff - -xdiff graphical mode diff - -udiff show unified diff (default) - -n show me, do not run tests - -q quick [deprecated] - -T output timestamps - -r randomize test order - -testlist options - -g group[,group...] include tests from these groups - -x group[,group...] exclude tests from these groups - NNN include test NNN - NNN-NNN include test range (eg. 012-021) -' - exit 0 + usage ;; -udf) # -udf ... set FSTYP to udf @@ -232,6 +238,15 @@ testlist options fi ;; + --large-fs) + export USE_BIG_LOOPFS=yes + xpand=false + ;; + + -*) + usage + ;; + *) start=$r end=$r -- 1.7.5.4 From dave@fromorbit.com Mon Nov 21 05:31:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALBVkOx255462 for ; Mon, 21 Nov 2011 05:31:46 -0600 X-ASG-Debug-ID: 1321875098-5db003890002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C7FB256FA3C for ; Mon, 21 Nov 2011 03:31:44 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id tEjVKFSlpUIpKcJi for ; Mon, 21 Nov 2011 03:31:44 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAPk1yk55LGY5/2dsb2JhbABDqjeBBoFyAQEFViMQCBgxOQMbGbtDhwKDFQSdPokX Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Nov 2011 22:01:43 +1030 Received: from disappointment ([192.168.1.1]) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1RSS6A-000812-GQ; Mon, 21 Nov 2011 22:31:42 +1100 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1RSS60-00083N-2W; Mon, 21 Nov 2011 22:31:32 +1100 From: Dave Chinner To: xfs@oss.sgi.com Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: [PATCH 3/8] xfstests: rename RETAIN_AG_BYTES Subject: [PATCH 3/8] xfstests: rename RETAIN_AG_BYTES Date: Mon, 21 Nov 2011 22:31:23 +1100 Message-Id: <1321875088-30801-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1321875088-30801-1-git-send-email-david@fromorbit.com> References: <1321875088-30801-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1321875105 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0007 1.0000 -2.0167 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80871 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner Rename the $RETAIN_AG_BYTES variable to be more generic so that it reflects the fact that it is designed to retain a certain amount of extra free space above the default amount in the filesystem when doing large scratch device testing. Signed-off-by: Dave Chinner --- common.rc | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common.rc b/common.rc index fdeef1c..455886d 100644 --- a/common.rc +++ b/common.rc @@ -311,8 +311,8 @@ _scratch_mkfs_xfs() rm -f $tmp_dir.mkfserr $tmp_dir.mkfsstd if [ "$LARGE_SCRATCH_DEV" = yes ]; then - [ -z "$RETAIN_AG_BYTES" ] && RETAIN_AG_BYTES=0 - ./tools/ag-wipe -q -r $RETAIN_AG_BYTES $SCRATCH_DEV + [ -z "$SCRATCH_DEV_EMPTY_SPACE" ] && SCRATCH_DEV_EMPTY_SPACE=0 + ./tools/ag-wipe -q -r $SCRATCH_DEV_EMPTY_SPACE $SCRATCH_DEV fi return $mkfs_status -- 1.7.5.4 From dave@fromorbit.com Mon Nov 21 05:31:47 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALBVlDw255477 for ; Mon, 21 Nov 2011 05:31:47 -0600 X-ASG-Debug-ID: 1321875104-713302ee0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 525EF162AF86 for ; Mon, 21 Nov 2011 03:31:44 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id oW7nF5wCYwdUZ9ht for ; Mon, 21 Nov 2011 03:31:44 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhoFAPk1yk55LGY5/2dsb2JhbABDqA2CKoEGgk8jGIECA7t3g1mGPgSmVQ Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Nov 2011 22:01:43 +1030 Received: from disappointment ([192.168.1.1]) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1RSS60-00080l-FL; Mon, 21 Nov 2011 22:31:32 +1100 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1RSS5z-00083H-M0; Mon, 21 Nov 2011 22:31:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: [RFC][PATCH 0/8] xfstests: rework large filesystem testing Subject: [RFC][PATCH 0/8] xfstests: rework large filesystem testing Date: Mon, 21 Nov 2011 22:31:20 +1100 Message-Id: <1321875088-30801-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.4 X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1321875106 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80870 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This series changes the way xfstests configures large filesystems for testing. The assumption is that a sparse device is being used for the large filesystem, be it a loop device or a thin provisioned LUN. The key to make this work is marking large amounts of the filesystem as used without having to actually write data to the filesystem. In the case of XFS, it always used to use a special xfs_db hack to modify the free space in the AG headers to make them appear full. This meant that xfs_check needed special options to avoid checking free space as this way of marking space free is really a corrupted filesystem state. Before we can use xfs_repair on such filesystems, we need to change the way we mark blocks free. So, change the method of marking space free to use preallocation. For XFS, we can simply preallocate as much space as we need to consume on a single file, essentially giving use a free "that's a frickin' huge file" test. This is slower than the old xfs_db method, but leaves the filesystem in a consistent state. It also means the free space is not in the last AG - instead the free space will usually be located in the same AG as the log. This means that we can now use an unmodified xfs_repair binary to check the consistency of the filesystem. We still need to avoid free-space checking with xfs_check because of it's memory consumption, but we at least will now get that checked by xfs_repair. There are numerous other cleanups and ease-of use modifications such as command line parameters for executing large filesystem testing rather than having to know about magic environment variables. Further, the same preallocation technique can be used for testing on ext4. The last patch of the series (not well tested yet) enables the preallocation space filling technique for ext4 filesystems. ext4, however, still has serious issues with this - either we take the mkfs.ext4 time hit to initialise all the block groups, or we take it during the preallocation. IOWs, the "don't do work at mkfs but do it after mount" hack^Wtradeoff simply does not work for testing large filesystems in this manner. While it is possible to run large filesystem tests on ext4 using this mechanism, it is extremely painful to do so. Indeed, test runtime on ext4 is abysmal compared to XFS. XFS takes about 15-20s to mkfs a 20TB filesystem and preallocate a 19.8TB file, and about 2m to check it. ext4 took somewhere in the order of 5 minutes to do the same operation on a loopback fs on a SATA drive, while e2fsck -f takes 20 minutes to run. e.g: test 223 runs mkfs 4 times: $ sudo ./check --large-fs 223 FSTYP -- ext4 PLATFORM -- Linux/x86_64 test-2 3.2.0-rc2-dgc+ MKFS_OPTIONS -- /dev/loop0 MOUNT_OPTIONS -- -o acl,user_xattr /dev/loop0 /mnt/scratch/scratch 223 143s ... 1567s Ran: 223 Passed all 1 tests $ sudo time e2fsck -f /dev/loop0 e2fsck 1.42-WIP (16-Oct-2011) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/loop0: 54/335544320 files (0.0% non-contiguous), 5368709120/5368709120 blocks 1131.16user 4.36system 19:12.59elapsed 98%CPU (0avgtext+0avgdata 6153616maxresident)k 0inputs+0outputs (3major+933709minor)pagefaults 0swaps compared to XFS: $ sudo ./check --large-fs 223 FSTYP -- xfs (non-debug) PLATFORM -- Linux/x86_64 test-2 3.2.0-rc2-dgc+ MKFS_OPTIONS -- -f -bsize=4096 /dev/loop0 MOUNT_OPTIONS -- /dev/loop0 /mnt/scratch/scratch 223 1567s ... 144s Ran: 223 Passed all 1 tests dave@test-2:~/src/xfstests-dev$ sudo time xfs_repair /dev/loop0 Phase 1 - find and verify superblock... Not enough RAM available for repair to enable prefetching. This will be _slow_. You need at least 3261MB RAM to run with prefetching enabled. Phase 2 - using internal log ...... Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify and correct link counts... done 0.00user 0.26system 2:23.09elapsed 0%CPU (0avgtext+0avgdata 11200maxresident)k 0inputs+0outputs (5major+951minor)pagefaults 0swaps This is why I haven't really tested it all that much - I'm not even really sure it is working properly yet because execution of a single test can take half an hour for a 20TB filesystem. I encourage the ext4 developers to work towards fixing these problems to help speed up large filesystem testing cycles. FWIW, I haven't yet written the btrfs code to enable this form of large filesystem testing - that's the next patch I'm going to write. I'm not sure what to expect from that. Comments, flames, suggestions all welcome.... From dave@fromorbit.com Mon Nov 21 05:31:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALBVm0P255486 for ; Mon, 21 Nov 2011 05:31:48 -0600 X-ASG-Debug-ID: 1321875098-5db003890003-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2003256FA41 for ; Mon, 21 Nov 2011 03:31:46 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id iwNSAvpRWBwal0eG for ; Mon, 21 Nov 2011 03:31:46 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAPk1yk55LGY5/2dsb2JhbABDqjeBBoFyAQEFViMQCBgxOQMbGbtDihcEplU Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Nov 2011 22:01:45 +1030 Received: from disappointment ([192.168.1.1]) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1RSS61-00080o-FY; Mon, 21 Nov 2011 22:31:33 +1100 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1RSS60-00083Q-70; Mon, 21 Nov 2011 22:31:32 +1100 From: Dave Chinner To: xfs@oss.sgi.com Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: [PATCH 4/8] xfstests: use preallocation for ag-wiper Subject: [PATCH 4/8] xfstests: use preallocation for ag-wiper Date: Mon, 21 Nov 2011 22:31:24 +1100 Message-Id: <1321875088-30801-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1321875088-30801-1-git-send-email-david@fromorbit.com> References: <1321875088-30801-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1321875107 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80871 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner To enable sane testing of large scale filesystems, the --large-fs test option uses xfs_db magic to mark AGs full without doing any IO. This leaves only a small amount of free space left in the filesystem to stress the high AGs of the filesystem rather than the low AGs. This method requires us to have special filesystem check options to avoid free space checking in xfs_check, and we cannot current run xfs_repair on such a filesystem at all. As it is, free space checking on xfs_check does not scale, so we still need to avoid this checking regardless of how we fill the filesystem. We can acheive exactly the same fill behaviour by preallocating a single large file in the filesystem immediately after creating it. This is a filesystem independent manner of filling the filesystem, and allows us to do large filesystem testing on more than just XFS. Further, this preallocation method effectively adds a new "very large file" test. It also enables us to run an unmodified xfs_repair or filesystem specific fsck program to check the filesystem for sanity, so we can now do full sanity checking of such large filesystems. Signed-off-by: Dave Chinner --- common.rc | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 53 insertions(+), 5 deletions(-) diff --git a/common.rc b/common.rc index 455886d..34467ec 100644 --- a/common.rc +++ b/common.rc @@ -276,6 +276,47 @@ _scratch_mkfs_options() echo $SCRATCH_OPTIONS $MKFS_OPTIONS $* $SCRATCH_DEV } + +_setup_large_xfs_fs() +{ + fs_size=$1 + local tmp_dir=/tmp/ + + [ "$LARGE_SCRATCH_DEV" != yes ] && return 0 + [ -z "$SCRATCH_DEV_EMPTY_SPACE" ] && SCRATCH_DEV_EMPTY_SPACE=0 + [ $SCRATCH_DEV_EMPTY_SPACE -ge $fs_size ] && return 0 + + # calculate the size of the file we need to allocate. + # Default free space in the FS is 50GB, but you can specify more via + # SCRATCH_DEV_EMPTY_SPACE + file_size=$(($fs_size - 50*1024*1024*1024)) + file_size=$(($file_size - $SCRATCH_DEV_EMPTY_SPACE)) + + # mount the filesystem, create the file, unmount it + _scratch_mount 2>&1 >$tmp_dir/mnt.err + local status=$? + if [ $status -ne 0 ]; then + echo "mount failed" + cat $tmp_dir/mnt.err >&2 + rm -f $tmp_dir/mnt.err + return $status + fi + rm -f $tmp_dir/mnt.err + + xfs_io -F -f \ + -c "truncate $file_size" \ + -c "falloc -k 0 $file_size" \ + $SCRATCH_MNT/.use_space 2>&1 > /dev/null + status=$? + umount $SCRATCH_MNT + if [ $status -ne 0 ]; then + echo "large file prealloc failed" + cat $tmp_dir/mnt.err >&2 + return $status + fi + return 0 +} + _scratch_mkfs_xfs() { # extra mkfs options can be added by tests @@ -305,16 +346,23 @@ _scratch_mkfs_xfs() mkfs_status=$? fi + if [ $mkfs_status -eq 0 -a "$LARGE_SCRATCH_DEV" = yes ]; then + # manually parse the mkfs output to get the fs size in bytes + local fs_size + fs_size=`cat $tmp_dir.mkfsstd | perl -ne ' + if (/^data\s+=\s+bsize=(\d+)\s+blocks=(\d+)/) { + my $size = $1 * $2; + print STDOUT "$size\n"; + }'` + _setup_large_xfs_fs $fs_size + mkfs_status=$? + fi + # output stored mkfs output cat $tmp_dir.mkfserr >&2 cat $tmp_dir.mkfsstd rm -f $tmp_dir.mkfserr $tmp_dir.mkfsstd - if [ "$LARGE_SCRATCH_DEV" = yes ]; then - [ -z "$SCRATCH_DEV_EMPTY_SPACE" ] && SCRATCH_DEV_EMPTY_SPACE=0 - ./tools/ag-wipe -q -r $SCRATCH_DEV_EMPTY_SPACE $SCRATCH_DEV - fi - return $mkfs_status } -- 1.7.5.4 From dave@fromorbit.com Mon Nov 21 05:31:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALBVnwm255507 for ; Mon, 21 Nov 2011 05:31:49 -0600 X-ASG-Debug-ID: 1321875106-2a7e03010000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 47BD01D1B4E4 for ; Mon, 21 Nov 2011 03:31:47 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id AZ8y25oFLZwz5NBo for ; Mon, 21 Nov 2011 03:31:47 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAPk1yk55LGY5/2dsb2JhbABDqjeBBoFyAQEFVh4FEAgYMTkDGxm7Q4cCgxUEnT6JFw Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Nov 2011 22:01:46 +1030 Received: from disappointment ([192.168.1.1]) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1RSS62-00080t-89; Mon, 21 Nov 2011 22:31:34 +1100 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1RSS60-00083V-IV; Mon, 21 Nov 2011 22:31:32 +1100 From: Dave Chinner To: xfs@oss.sgi.com Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: [PATCH 6/8] xfstest: enable xfs_repair for large filesystem testing Subject: [PATCH 6/8] xfstest: enable xfs_repair for large filesystem testing Date: Mon, 21 Nov 2011 22:31:26 +1100 Message-Id: <1321875088-30801-7-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1321875088-30801-1-git-send-email-david@fromorbit.com> References: <1321875088-30801-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1321875108 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0163 1.0000 -1.9150 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.91 X-Barracuda-Spam-Status: No, SCORE=-1.91 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80871 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner Now that large filesystem testing does not play free space games to fill the space without IO, we can enable xfs_repair when running in this mode. xfs_repair has had it's scalability problems solved, too, so this is a safe thing to do. Signed-off-by: Dave Chinner --- common.rc | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) diff --git a/common.rc b/common.rc index 34467ec..12bd349 100644 --- a/common.rc +++ b/common.rc @@ -1200,12 +1200,12 @@ _check_xfs_filesystem() extra_mount_options="" device=$1 if [ "$2" != "none" ]; then - extra_log_options="-l$2" + extra_log_options="-l$2" extra_mount_options="-ologdev=$2" fi if [ "$3" != "none" ]; then - extra_rt_options="-r$3" + extra_rt_options="-r$3" extra_mount_options=$extra_mount_options" -ortdev=$3" fi extra_mount_options=$extra_mount_options" $MOUNT_OPTIONS" @@ -1250,8 +1250,7 @@ _check_xfs_filesystem() ok=0 fi - # repair doesn't scale massively at this stage, optionally skip it for now - [ "$LARGE_SCRATCH_DEV" = yes ] || \ + $XFS_REPAIR_PROG -n $extra_log_options $extra_rt_options $device >$tmp.repair 2>&1 if [ $? -ne 0 ] then -- 1.7.5.4 From dave@fromorbit.com Mon Nov 21 05:31:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_55 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALBVmf8255484 for ; Mon, 21 Nov 2011 05:31:48 -0600 X-ASG-Debug-ID: 1321875104-713302ee0001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3DECE162AF89 for ; Mon, 21 Nov 2011 03:31:46 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id Dp31e7svMWpzftUO for ; Mon, 21 Nov 2011 03:31:46 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAPk1yk55LGY5/2dsb2JhbABDqjeBBoFyAQEFViMQCBgxOQMbGbtDhwKDFQSmVQ Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Nov 2011 22:01:45 +1030 Received: from disappointment ([192.168.1.1]) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1RSS6B-00080q-CB; Mon, 21 Nov 2011 22:31:43 +1100 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1RSS60-00083S-C2; Mon, 21 Nov 2011 22:31:32 +1100 From: Dave Chinner To: xfs@oss.sgi.com Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: [PATCH 5/8] xfstests: use command line option for setting extra space Subject: [PATCH 5/8] xfstests: use command line option for setting extra space Date: Mon, 21 Nov 2011 22:31:25 +1100 Message-Id: <1321875088-30801-6-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1321875088-30801-1-git-send-email-david@fromorbit.com> References: <1321875088-30801-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1321875107 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0204 1.0000 -1.8886 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.89 X-Barracuda-Spam-Status: No, SCORE=-1.89 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80870 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner Allow the extra free space to leave in large scratch filesystems to be specified by a command line option rather than just via an environment variable. Signed-off-by: Dave Chinner --- common | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/common b/common index da86cd9..78ac654 100644 --- a/common +++ b/common @@ -247,6 +247,11 @@ s/ .*//p usage ;; + --extra-space=*) + export SCRATCH_DEV_EMPTY_SPACE=${r#*=} + xpand=false + ;; + *) start=$r end=$r -- 1.7.5.4 From dave@fromorbit.com Mon Nov 21 05:31:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALBVnxs255508 for ; Mon, 21 Nov 2011 05:31:49 -0600 X-ASG-Debug-ID: 1321875098-5db003890004-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 695E056FA43 for ; Mon, 21 Nov 2011 03:31:47 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id wRFDn9gXejCb4Z8M for ; Mon, 21 Nov 2011 03:31:47 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAPk1yk55LGY5/2dsb2JhbABDqjeBBoFyAQEFViMQCBgxOQMbGbtDg1mGPgSmVQ Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Nov 2011 22:01:46 +1030 Received: from disappointment ([192.168.1.1]) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1RSS67-00080w-DZ; Mon, 21 Nov 2011 22:31:39 +1100 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1RSS61-00083a-2m; Mon, 21 Nov 2011 22:31:33 +1100 From: Dave Chinner To: xfs@oss.sgi.com Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: [PATCH 8/8] xfstests: enable large fs testing on ext4 Subject: [PATCH 8/8] xfstests: enable large fs testing on ext4 Date: Mon, 21 Nov 2011 22:31:28 +1100 Message-Id: <1321875088-30801-9-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1321875088-30801-1-git-send-email-david@fromorbit.com> References: <1321875088-30801-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1321875108 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80871 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner Now that setting up large filesystem testing on sparse loopback devices uses a generic method for filling the filesystem, extent support to ext4 filesystems. ext4 is slightly more complex to fill as it does not support files larger than 16TB. Hence a slightly more complex method of using multiple smaller files to fill the space is necessary. Signed-off-by: Dave Chinner --- common.rc | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 90 insertions(+), 0 deletions(-) diff --git a/common.rc b/common.rc index 9b9041f..7bb8f50 100644 --- a/common.rc +++ b/common.rc @@ -366,6 +366,93 @@ _scratch_mkfs_xfs() return $mkfs_status } +_setup_large_ext4_fs() +{ + fs_size=$1 + local tmp_dir=/tmp/ + + [ "$LARGE_SCRATCH_DEV" != yes ] && return 0 + [ -z "$SCRATCH_DEV_EMPTY_SPACE" ] && SCRATCH_DEV_EMPTY_SPACE=0 + [ $SCRATCH_DEV_EMPTY_SPACE -ge $fs_size ] && return 0 + + # Default free space in the FS is 50GB, but you can specify more via + # SCRATCH_DEV_EMPTY_SPACE + space_to_consume=$(($fs_size - 50*1024*1024*1024 - $SCRATCH_DEV_EMPTY_SPACE)) + + # mount the filesystem and create 16TB - 4KB files until we consume + # all the necessary space. + _scratch_mount 2>&1 >$tmp_dir/mnt.err + local status=$? + if [ $status -ne 0 ]; then + echo "mount failed" + cat $tmp_dir/mnt.err >&2 + rm -f $tmp_dir/mnt.err + return $status + fi + rm -f $tmp_dir/mnt.err + + file_size=$((16*1024*1024*1024*1024 - 4096)) + nfiles=0 + while [ $space_to_consume -gt $file_size ]; do + + xfs_io -F -f \ + -c "truncate $file_size" \ + -c "falloc -k 0 $file_size" \ + $SCRATCH_MNT/.use_space.$nfiles 2>&1 + status=$? + if [ $status -ne 0 ]; then + break; + fi + + space_to_consume=$(( $space_to_consume - $file_size )) + nfiles=$(($nfiles + 1)) + done + + # consume the remaining space. + if [ $space_to_consume -gt 0 ]; then + xfs_io -F -f \ + -c "truncate $space_to_consume" \ + -c "falloc -k 0 $space_to_consume" \ + $SCRATCH_MNT/.use_space.$nfiles 2>&1 + status=$? + fi + + umount $SCRATCH_MNT + if [ $status -ne 0 ]; then + echo "large file prealloc failed" + cat $tmp_dir/mnt.err >&2 + return $status + fi + return 0 +} +_scratch_mkfs_ext4() +{ + local tmp_dir=/tmp/ + + /sbin/mkfs -t $FSTYP -- $MKFS_OPTIONS $* $SCRATCH_DEV \ + 2>$tmp_dir.mkfserr 1>$tmp_dir.mkfsstd + local mkfs_status=$? + + if [ $mkfs_status -eq 0 -a "$LARGE_SCRATCH_DEV" = yes ]; then + # manually parse the mkfs output to get the fs size in bytes + fs_size=`cat $tmp_dir.mkfsstd | awk ' \ + /^Block size/ { split($2, a, "="); bs = a[2] ; } \ + / inodes, / { blks = $3 } \ + /reserved for the super user/ { resv = $1 } \ + END { fssize = bs * blks - resv; print fssize }'` + + _setup_large_ext4_fs $fs_size + mkfs_status=$? + fi + + # output stored mkfs output + cat $tmp_dir.mkfserr >&2 + cat $tmp_dir.mkfsstd + rm -f $tmp_dir.mkfserr $tmp_dir.mkfsstd + + return $mkfs_status +} + _scratch_mkfs() { case $FSTYP in @@ -381,6 +468,9 @@ _scratch_mkfs() btrfs) $MKFS_BTRFS_PROG $MKFS_OPTIONS $* $SCRATCH_DEV > /dev/null ;; + ext4) + _scratch_mkfs_ext4 $* + ;; *) /sbin/mkfs -t $FSTYP -- $MKFS_OPTIONS $* $SCRATCH_DEV ;; -- 1.7.5.4 From dave@fromorbit.com Mon Nov 21 05:31:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_62, J_CHICKENPOX_72 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALBVvnY255563 for ; Mon, 21 Nov 2011 05:31:57 -0600 X-ASG-Debug-ID: 1321875115-712f02f00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D8076162AF8E for ; Mon, 21 Nov 2011 03:31:56 -0800 (PST) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 6Qi1u7ppI8zAesZ0 for ; Mon, 21 Nov 2011 03:31:56 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAPk1yk55LGY5/2dsb2JhbABDqjeBBoFyAQEFViMQCBgxOQMbGbtDhwKDFQSmVQ Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Nov 2011 22:01:55 +1030 Received: from disappointment ([192.168.1.1]) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1RSS6C-00080v-23; Mon, 21 Nov 2011 22:31:44 +1100 Received: from dave by disappointment with local (Exim 4.76) (envelope-from ) id 1RSS60-00083X-Qc; Mon, 21 Nov 2011 22:31:32 +1100 From: Dave Chinner To: xfs@oss.sgi.com Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: [PATCH 7/8] xfstests: always us test option when checking large scratch device Subject: [PATCH 7/8] xfstests: always us test option when checking large scratch device Date: Mon, 21 Nov 2011 22:31:27 +1100 Message-Id: <1321875088-30801-8-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1321875088-30801-1-git-send-email-david@fromorbit.com> References: <1321875088-30801-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1321875116 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80870 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner Some tests call _check_scratch_device directly and when using a large filesystem this needs to run with a -t option to avoid consuming large amounts of memory. Make this happen in all cases that the scratch device is checked. Signed-off-by: Dave Chinner --- 017 | 7 ++----- common.rc | 2 ++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/017 b/017 index 9ca0e72..0a3ede3 100755 --- a/017 +++ b/017 @@ -48,9 +48,6 @@ _supported_os Linux _require_scratch -checkopts="" -[ "$USE_BIG_LOOPFS" = yes ] && checkopts=-t - echo "*** init FS" rm -f $seq.full @@ -81,8 +78,8 @@ do echo "" >>$seq.full echo "*** XFS_CHECK ***" >>$seq.full echo "" >>$seq.full - _scratch_xfs_check $checkopts >>$seq.full 2>&1 \ - || _fail "xfs_check $checkopts failed" + _scratch_xfs_check >>$seq.full 2>&1 \ + || _fail "xfs_check failed" _scratch_mount -o remount,rw \ || _fail "remount rw failed" done diff --git a/common.rc b/common.rc index 12bd349..9b9041f 100644 --- a/common.rc +++ b/common.rc @@ -470,6 +470,8 @@ _scratch_xfs_check() SCRATCH_OPTIONS="" [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \ SCRATCH_OPTIONS="-l $SCRATCH_LOGDEV" + [ "$LARGE_SCRATCH_DEV" = yes ] && \ + SCRATCH_OPTIONS=$SCRATCH_OPTIONS" -t" $XFS_CHECK_PROG $SCRATCH_OPTIONS $* $SCRATCH_DEV } -- 1.7.5.4 From BATV+cfb9ea256cd8deeb0873+3011+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 21 05:59:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_111 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALBxSDY257246 for ; Mon, 21 Nov 2011 05:59:28 -0600 X-ASG-Debug-ID: 1321876765-6dcf03870000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 896E7162B070 for ; Mon, 21 Nov 2011 03:59:26 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id zaRiCMr9RR5ket8O for ; Mon, 21 Nov 2011 03:59:26 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RSSWz-0003Bk-4R; Mon, 21 Nov 2011 11:59:25 +0000 Date: Mon, 21 Nov 2011 06:59:25 -0500 From: Christoph Hellwig To: Arkadiusz Mi??kiewicz Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/3 v2] xfsprogs: allow linking against libtcmalloc Subject: [PATCH 3/3 v2] xfsprogs: allow linking against libtcmalloc Message-ID: <20111121115925.GA12209@infradead.org> References: <20111114155742.285135418@bombadil.infradead.org> <20111114160217.591812422@bombadil.infradead.org> <201111180804.06413.arekm@maven.pl> <20111119184507.GA11208@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111119184507.GA11208@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321876766 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80872 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Allow linking against the libtcmalloc library from Google's performance tools, which at least for repair reduces the memory usage dramatically. Note that the current version of the autoconf-foo mostly comes from Arek, mine was much inferior to it. Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/configure.in =================================================================== --- xfsprogs-dev.orig/configure.in 2011-11-14 13:54:28.000000000 +0000 +++ xfsprogs-dev/configure.in 2011-11-20 19:21:26.000000000 +0000 @@ -31,6 +31,26 @@ AC_ARG_ENABLE(editline, AC_SUBST(libeditline) AC_SUBST(enable_editline) +AC_ARG_ENABLE(tcmalloc, +[ --enable-tcmalloc=[yes/no] Enable tcmalloc [default=no]],, + enable_tcmalloc=check) + +if test x$enable_tcmalloc != xno; then + saved_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -fno-builtin-malloc" + AC_CHECK_LIB([tcmalloc_minimal], [malloc], [libtcmalloc="-ltcmalloc_minimal"], + [AC_CHECK_LIB([tcmalloc], [malloc], [libtcmalloc="-ltcmalloc"], [ + if test x$enable_tcmalloc = xyes; then + AC_MSG_ERROR([libtcmalloc_minimal or libtcmalloc library not found], 1) + fi] + )] + ) + if test x$libtcmalloc = x; then + CPPFLAGS="$saved_CPPFLAGS" + fi +fi +AC_SUBST(libtcmalloc) + AC_ARG_ENABLE(termcap, [ --enable-termcap=[yes/no] Enable terminal capabilities library [default=no]], test $enable_termcap = yes && libtermcap="-ltermcap",) Index: xfsprogs-dev/include/builddefs.in =================================================================== --- xfsprogs-dev.orig/include/builddefs.in 2011-11-14 13:54:28.000000000 +0000 +++ xfsprogs-dev/include/builddefs.in 2011-11-14 13:57:55.000000000 +0000 @@ -22,7 +22,7 @@ _BUILDDEFS_INCLUDED_ = 1 DEBUG = @debug_build@ OPTIMIZER = @opt_build@ -MALLOCLIB = @malloc_lib@ +MALLOCLIB = @malloc_lib@ @libtcmalloc@ LOADERFLAGS = @LDFLAGS@ LTLDFLAGS = @LDFLAGS@ CFLAGS = @CFLAGS@ From tytso@mit.edu Mon Nov 21 06:10:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALCAnja257859 for ; Mon, 21 Nov 2011 06:10:49 -0600 X-ASG-Debug-ID: 1321877448-3269035d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from dmz-mailsec-scanner-7.mit.edu (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 659A21D22F29 for ; Mon, 21 Nov 2011 04:10:48 -0800 (PST) Received: from dmz-mailsec-scanner-7.mit.edu (DMZ-MAILSEC-SCANNER-7.MIT.EDU [18.7.68.36]) by cuda.sgi.com with ESMTP id LEhYxdDhGSoCJzpz for ; Mon, 21 Nov 2011 04:10:48 -0800 (PST) X-AuditID: 12074424-b7ef76d0000008dc-35-4eca3fc65276 Received: from mailhub-auth-3.mit.edu ( [18.9.21.43]) by dmz-mailsec-scanner-7.mit.edu (Symantec Messaging Gateway) with SMTP id D3.2D.02268.6CF3ACE4; Mon, 21 Nov 2011 07:10:46 -0500 (EST) Received: from outgoing.mit.edu (OUTGOING-AUTH.MIT.EDU [18.7.22.103]) by mailhub-auth-3.mit.edu (8.13.8/8.9.2) with ESMTP id pALCAjjx014817; Mon, 21 Nov 2011 07:10:45 -0500 Received: from [10.0.42.109] (c-98-216-98-217.hsd1.ma.comcast.net [98.216.98.217]) (authenticated bits=0) (User authenticated as tytso@ATHENA.MIT.EDU) by outgoing.mit.edu (8.13.6/8.12.4) with ESMTP id pALCAhH6009543 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Mon, 21 Nov 2011 07:10:44 -0500 (EST) X-ASG-Orig-Subj: Re: [RFC][PATCH 0/8] xfstests: rework large filesystem testing Subject: Re: [RFC][PATCH 0/8] xfstests: rework large filesystem testing Mime-Version: 1.0 (Apple Message framework v1251.1) Content-Type: text/plain; charset=us-ascii From: Theodore Tso In-Reply-To: <1321875088-30801-1-git-send-email-david@fromorbit.com> Date: Mon, 21 Nov 2011 07:10:45 -0500 Cc: Theodore Tso , xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org Content-Transfer-Encoding: 7bit Message-Id: References: <1321875088-30801-1-git-send-email-david@fromorbit.com> To: Dave Chinner X-Mailer: Apple Mail (2.1251.1) X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmplleLIzCtJLcpLzFFi42IR4hTV1j1mf8rP4OgafYstx+4xWsycd4fN Ys/ekywWi/puMTqweJxaJOGx+sJWRo/Pm+QCmKO4bFJSczLLUov07RK4Mna/72Yp2Mpb8Xh1 D2sD41muLkZODgkBE4mOGQtZIGwxiQv31rN1MXJxCAnsY5T49aObHcLZwChx60Y/VOY0k8S+ /feZQVqEBdwljvWfYgWxeQWMJdbcegc2illAS+LGv5dMIDabgJLEnU/7weKcAi4S56YsZgex WQRUJQ4vOc0MUV8qMfvIN0YIW15i+9s5QHEOoJlWEh2P00HCQgLOEv2HJ4CViAioSUyatIMZ 4mp5iZavd9gmMArOQnLFLCRXzEIydQEj8ypG2ZTcKt3cxMyc4tRk3eLkxLy81CJdc73czBK9 1JTSTYyg0GZ3UdnB2HxI6RCjAAejEg/vx9Un/YRYE8uKK3MPMUpyMCmJ8pbbnfIT4kvKT6nM SCzOiC8qzUktPsQowcGsJMK7Rgsox5uSWFmVWpQPk5LmYFES57XZ6eAnJJCeWJKanZpakFoE k5Xh4FCS4G2zBGoULEpNT61Iy8wpQUgzcXCCDOcBGq5qDzK8uCAxtzgzHSJ/ilFRSpzXBCQh AJLIKM2D64WlnleM4kCvCPOqgVTxANMWXPcroMFMQIOnrT0BMrgkESEl1cCoKF9cWPvKdZfs kTm/j0xOEW0/vIBpzXkPeUWpbTlBbfosVlaaS+1mu+S1XBXwrPwk9iJK7P4z8wVlh3w2fA3z W778ZsSOzfPYbn94nx0QLurqMO/L5TV+NcuOMwof0m5NjPjjYPE55Puv331Re1ii3Cdpaa5Q eSrdsmXjo8WbHj7kr7epO7ZAiaU4I9FQi7moOBEA89MhtBgDAAA= X-Barracuda-Connect: DMZ-MAILSEC-SCANNER-7.MIT.EDU[18.7.68.36] X-Barracuda-Start-Time: 1321877448 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80873 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Nov 21, 2011, at 6:31 AM, Dave Chinner wrote: > ext4, however, still has serious issues with this - either we take > the mkfs.ext4 time hit to initialise all the block groups, or we > take it during the preallocation. IOWs, the "don't do work at mkfs > but do it after mount" hack^Wtradeoff simply does not work for > testing large filesystems in this manner. While it is possible to > run large filesystem tests on ext4 using this mechanism, it is > extremely painful to do so. For testing, we can disable the "do it after the mount " aspect of ext4 by using the mount option "noinit_itable". We basically only need to zero the inode table to make sure e2fsck doesn't confuse old inode tables as new ones in the event that the block group descriptors get compromised and we can't trust them to determine the high watermark of inodes used per block group, something which is only a concern in the case of kernel bugs or hardware failures (or power failures in no journal mode). (We could also compare the inode crime with the fs mkfs time in the superblock, but ext4 gets used on desktops and on things like android tablets where I've learned through bitter experience that we can't trust the system clock to be correct.) In any case it's safe to turn of the inode table initialization for testing purposes. In the long term, once we get checksums into the inode table block, we won't need to zero out the inode tables at all. As far as xfstests are concerned, if there's a convenient way to add mount options automatically (on a per file system basis) when --large-fs is specified, we should be able to make this work for ext4 file systems. Regards, -- Ted From pengxihan@gmail.com Mon Nov 21 07:00:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALD0xhv261030 for ; Mon, 21 Nov 2011 07:00:59 -0600 X-ASG-Debug-ID: 1321880458-653f02400000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-yw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0AC091D23342 for ; Mon, 21 Nov 2011 05:00:58 -0800 (PST) Received: from mail-yw0-f53.google.com (mail-yw0-f53.google.com [209.85.213.53]) by cuda.sgi.com with ESMTP id ZZgXquEa01STmcrE for ; Mon, 21 Nov 2011 05:00:58 -0800 (PST) Received: by ywp18 with SMTP id 18so6171644ywp.26 for ; Mon, 21 Nov 2011 05:00:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=QJbDR3W+liXnCKFwtTaj3qTPlAtsBIJ7080XXLJ5UEA=; b=wALPm5HJolydv85/dN8TbbWTvWrDILhMlIql1woyjI8pj7o6QxVMKnmwpSbL2+hKCW 8QQuNh3WnFFW3/5m7BZv/zmdczDaQ8uNF1zLf19F+59bw0cm4yjhQbIFfaKBHB45U0b2 ocxm6mgUu1AmfYerC6AW6p3pRueZgdMllIFwk= MIME-Version: 1.0 Received: by 10.50.17.199 with SMTP id q7mr14280272igd.20.1321880458047; Mon, 21 Nov 2011 05:00:58 -0800 (PST) Received: by 10.50.209.65 with HTTP; Mon, 21 Nov 2011 05:00:57 -0800 (PST) Date: Mon, 21 Nov 2011 21:00:57 +0800 Message-ID: X-ASG-Orig-Subj: stale NFS file handle problem on XFS inode64 Subject: stale NFS file handle problem on XFS inode64 From: hank peng To: linux-xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-yw0-f53.google.com[209.85.213.53] X-Barracuda-Start-Time: 1321880459 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0408 1.0000 -1.7576 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.76 X-Barracuda-Spam-Status: No, SCORE=-1.76 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80877 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi: I have a 4TB XFS filesystem mounted with "inode64" option, and I exported it using NFS v3, on NFS client, I entered a subdirectory and got "stale NFS file handle" error. ls -il showed that its inode number exceed 32 bit limit. NFS server: kernel version is 2.6.35.6 NFS client: kernel version is 2.6.18 Any ideas on how to deal with this problem? -- The simplest is not all best but the best is surely the simplest! From eflorac@intellique.com Mon Nov 21 08:02:06 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALE25i1002217 for ; Mon, 21 Nov 2011 08:02:06 -0600 X-ASG-Debug-ID: 1321884122-6f4400440000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp4-g21.free.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E001B57042D for ; Mon, 21 Nov 2011 06:02:03 -0800 (PST) Received: from smtp4-g21.free.fr (smtp4-g21.free.fr [212.27.42.4]) by cuda.sgi.com with ESMTP id 5m56URQKJuIoLVbR for ; Mon, 21 Nov 2011 06:02:03 -0800 (PST) Received: from harpe.intellique.com (unknown [82.225.196.72]) by smtp4-g21.free.fr (Postfix) with ESMTP id DACC44C8301; Mon, 21 Nov 2011 15:01:57 +0100 (CET) Date: Mon, 21 Nov 2011 15:01:58 +0100 From: Emmanuel Florac To: hank peng Cc: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 Message-ID: <20111121150158.5f8b2512@harpe.intellique.com> In-Reply-To: References: Organization: Intellique X-Mailer: Claws Mail 3.7.9 (GTK+ 2.16.6; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: smtp4-g21.free.fr[212.27.42.4] X-Barracuda-Start-Time: 1321884124 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80881 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Le Mon, 21 Nov 2011 21:00:57 +0800 hank peng =E9crivait: > NFS server: kernel version is 2.6.35.6 > NFS client: kernel version is 2.6.18 >=20 > Any ideas on how to deal with this problem? Are the client and the server running a 64 bits kernel? --=20 ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From pengxihan@gmail.com Mon Nov 21 09:02:34 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALF2YOq005401 for ; Mon, 21 Nov 2011 09:02:34 -0600 X-ASG-Debug-ID: 1321887752-0e40000a0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-iy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4636B1F38E68 for ; Mon, 21 Nov 2011 07:02:32 -0800 (PST) Received: from mail-iy0-f181.google.com (mail-iy0-f181.google.com [209.85.210.181]) by cuda.sgi.com with ESMTP id g6MxI0uPwG8k2OsK for ; Mon, 21 Nov 2011 07:02:32 -0800 (PST) Received: by iaen33 with SMTP id n33so8685302iae.26 for ; Mon, 21 Nov 2011 07:02:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=NtOSMiaBhYWcO9imuG9KM8c1rvY/qSKXNsAyk5OTxUo=; b=PfYghapj7swy075dvDmWLxIUpnFPfQ1TFdGXD9eW80OW8cucQXLimiXarOPkRPHgQs rvTWN2grzPXFP31c1xvPjswICpSt0QqqSC+Aj5AtpUtKg3IRKMGFhe/gT+HHDw+ZTxhS IH/CM7S8Id0BPnW2znNjAZSwc5Bg6F3sv08Io= MIME-Version: 1.0 Received: by 10.42.161.70 with SMTP id s6mr14852511icx.40.1321887752471; Mon, 21 Nov 2011 07:02:32 -0800 (PST) Received: by 10.50.209.65 with HTTP; Mon, 21 Nov 2011 07:02:32 -0800 (PST) In-Reply-To: <20111121150158.5f8b2512@harpe.intellique.com> References: <20111121150158.5f8b2512@harpe.intellique.com> Date: Mon, 21 Nov 2011 23:02:32 +0800 Message-ID: X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 From: hank peng To: Emmanuel Florac Cc: linux-xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-iy0-f181.google.com[209.85.210.181] X-Barracuda-Start-Time: 1321887753 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80885 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean no, client and server are both 32 bits kernel. 2011/11/21 Emmanuel Florac : > Le Mon, 21 Nov 2011 21:00:57 +0800 > hank peng =C3=A9crivait: > >> NFS server: kernel version is 2.6.35.6 >> NFS client: kernel version is 2.6.18 >> >> Any ideas on how to deal with this problem? > > Are the client and the server running a 64 bits kernel? > > -- > ------------------------------------------------------------------------ > Emmanuel Florac =C2=A0 =C2=A0 | =C2=A0 Direction technique > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| = =C2=A0 Intellique > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| = =C2=A0 > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| = =C2=A0 +33 1 78 94 84 02 > ------------------------------------------------------------------------ > --=20 The simplest is not all best but the best is surely the simplest! From eflorac@intellique.com Mon Nov 21 09:22:02 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALFM1iJ006175 for ; Mon, 21 Nov 2011 09:22:02 -0600 X-ASG-Debug-ID: 1321888917-055801d80000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp4-g21.free.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F13AD1629C08 for ; Mon, 21 Nov 2011 07:21:58 -0800 (PST) Received: from smtp4-g21.free.fr (smtp4-g21.free.fr [212.27.42.4]) by cuda.sgi.com with ESMTP id Xf0vzg3nSoOVFoUE for ; Mon, 21 Nov 2011 07:21:58 -0800 (PST) Received: from harpe.intellique.com (unknown [82.225.196.72]) by smtp4-g21.free.fr (Postfix) with ESMTP id A6FA34C82A4; Mon, 21 Nov 2011 16:21:53 +0100 (CET) Date: Mon, 21 Nov 2011 16:21:55 +0100 From: Emmanuel Florac To: hank peng Cc: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 Message-ID: <20111121162155.0bfa0342@harpe.intellique.com> In-Reply-To: References: <20111121150158.5f8b2512@harpe.intellique.com> Organization: Intellique X-Mailer: Claws Mail 3.7.9 (GTK+ 2.16.6; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: smtp4-g21.free.fr[212.27.42.4] X-Barracuda-Start-Time: 1321888920 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80886 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Le Mon, 21 Nov 2011 23:02:32 +0800 hank peng =E9crivait: > no, client and server are both 32 bits kernel. >=20 I'm afraid the 32 bits nfs client can't manage 64 bits inodes at all. Maybe with a much more recent kernel, something like 2.6.29 or better?=20 See for instance http://oss.sgi.com/archives/xfs/2009-11/msg00174.html Your best choice is to revert to not using the "inode64" option. Unfortunately the easiest way is to backup and restore the whole filesystem. Alternatively, switch to samba... --=20 ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From pengxihan@gmail.com Mon Nov 21 09:28:25 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALFSPPU006559 for ; Mon, 21 Nov 2011 09:28:25 -0600 X-ASG-Debug-ID: 1321889304-6f4401460000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-iy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6EF2657098A for ; Mon, 21 Nov 2011 07:28:24 -0800 (PST) Received: from mail-iy0-f181.google.com (mail-iy0-f181.google.com [209.85.210.181]) by cuda.sgi.com with ESMTP id WpGU89n9qHiG3tf1 for ; Mon, 21 Nov 2011 07:28:24 -0800 (PST) Received: by iaen33 with SMTP id n33so8722095iae.26 for ; Mon, 21 Nov 2011 07:28:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=XLYjdLW1CxfK07mo/EiolyQlcqxpB/upSdvK+n38jSI=; b=kegXyn8cFPy1fdOVqol7W7afdUghi5ZKmGGY2Kou0vQQas52lroW8/KagKjUChyq/K 0T7NKHD9UfSvg3VAKZ0VdXxepuf4meqlG+jzwTzFpq8ejONC//nBzMcMyT+wheAq6XAC 5EqlV6CuNbZQWmHF29Ru5waUpeeqrZRCo7O8A= MIME-Version: 1.0 Received: by 10.42.161.70 with SMTP id s6mr14948368icx.40.1321889303971; Mon, 21 Nov 2011 07:28:23 -0800 (PST) Received: by 10.50.209.65 with HTTP; Mon, 21 Nov 2011 07:28:23 -0800 (PST) In-Reply-To: <20111121162155.0bfa0342@harpe.intellique.com> References: <20111121150158.5f8b2512@harpe.intellique.com> <20111121162155.0bfa0342@harpe.intellique.com> Date: Mon, 21 Nov 2011 23:28:23 +0800 Message-ID: X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 From: hank peng To: Emmanuel Florac Cc: linux-xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-iy0-f181.google.com[209.85.210.181] X-Barracuda-Start-Time: 1321889304 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80887 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 2011/11/21 Emmanuel Florac : > Le Mon, 21 Nov 2011 23:02:32 +0800 > hank peng =C3=A9crivait: > >> no, client and server are both 32 bits kernel. >> > > I'm afraid the 32 bits nfs client can't manage 64 bits inodes at all. > Maybe with a much more recent kernel, something like 2.6.29 or better? > I noticed that there is a kernel parameter : nfs.enable_ino64=3D [NFS] enable 64-bit inode numbers. If zero, the NFS client will fake up a 32-bit inode number for the readdir() and stat() syscalls instead of returning the full 64-bit number. The default is to return 64-bit inode numbers. can I set it to zero, so NFS client can get converted 32bit inode ? > See for instance > http://oss.sgi.com/archives/xfs/2009-11/msg00174.html > > Your best choice is to revert to not using the "inode64" option. > Unfortunately the easiest way is to backup and restore the whole > filesystem. > > Alternatively, switch to samba... > > -- > ------------------------------------------------------------------------ > Emmanuel Florac =C2=A0 =C2=A0 | =C2=A0 Direction technique > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| = =C2=A0 Intellique > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| = =C2=A0 > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| = =C2=A0 +33 1 78 94 84 02 > ------------------------------------------------------------------------ > --=20 The simplest is not all best but the best is surely the simplest! From bpm@sgi.com Mon Nov 21 09:40:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALFeMbx007150 for ; Mon, 21 Nov 2011 09:40:22 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id 58C568F8039; Mon, 21 Nov 2011 07:40:19 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 4F136431F74; Mon, 21 Nov 2011 09:40:40 -0600 (CST) Date: Mon, 21 Nov 2011 09:40:40 -0600 From: Ben Myers To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [ANNOUNCE] xfsprogs v3.1.7 Message-ID: <20111121154040.GU749@sgi.com> References: <20111117233139.GL29840@sgi.com> <20111119175102.GA3334@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111119175102.GA3334@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Christoph, On Sat, Nov 19, 2011 at 12:51:02PM -0500, Christoph Hellwig wrote: > On Thu, Nov 17, 2011 at 05:31:39PM -0600, Ben Myers wrote: > > Version 3.1.7 of xfsprogs has been released. > > Can we please avoid totally uncoordinated and rushed release in > the future? That sounds like a good idea. Do you have a date in mind? Lets get it on the calendar. Thanks, Ben > You personally had quetions about the lost+found > nlink issues that still haven't been resolved, and there's tons > of repair fixes that should have made it int othe next release. > > If we only have a tiny debian specific fixup we should have a > Debian-specific branch with just that one liner. Real releases > with actual changes need QA and coordination. > From eflorac@intellique.com Mon Nov 21 09:43:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALFhEmY007255 for ; Mon, 21 Nov 2011 09:43:14 -0600 X-ASG-Debug-ID: 1321890191-6f2a01620000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp4-g21.free.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 04B4F57071B for ; Mon, 21 Nov 2011 07:43:12 -0800 (PST) Received: from smtp4-g21.free.fr (smtp4-g21.free.fr [212.27.42.4]) by cuda.sgi.com with ESMTP id 9Rye16pvbtE4Droa for ; Mon, 21 Nov 2011 07:43:12 -0800 (PST) Received: from harpe.intellique.com (unknown [82.225.196.72]) by smtp4-g21.free.fr (Postfix) with ESMTP id 9E4D44C8286; Mon, 21 Nov 2011 16:43:07 +0100 (CET) Date: Mon, 21 Nov 2011 16:43:09 +0100 From: Emmanuel Florac To: hank peng Cc: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 Message-ID: <20111121164309.4b18a6ca@harpe.intellique.com> In-Reply-To: References: <20111121150158.5f8b2512@harpe.intellique.com> <20111121162155.0bfa0342@harpe.intellique.com> Organization: Intellique X-Mailer: Claws Mail 3.7.9 (GTK+ 2.16.6; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: smtp4-g21.free.fr[212.27.42.4] X-Barracuda-Start-Time: 1321890194 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80887 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Le Mon, 21 Nov 2011 23:28:23 +0800 hank peng =E9crivait: > I noticed that there is a kernel parameter : > nfs.enable_ino64=3D > [NFS] enable 64-bit inode numbers. > If zero, the NFS client will fake up a 32-bit > inode number for the readdir() and stat() syscalls instead > of returning the full 64-bit number. > The default is to return 64-bit inode numbers. >=20 > can I set it to zero, so NFS client can get converted 32bit inode ? Well you must try it and hope for the best! --=20 ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From bpm@sgi.com Mon Nov 21 10:05:15 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALG5Fsg008185 for ; Mon, 21 Nov 2011 10:05:15 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6EF8DAC00C; Mon, 21 Nov 2011 08:05:11 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 0B9DA431F74; Mon, 21 Nov 2011 10:05:32 -0600 (CST) Date: Mon, 21 Nov 2011 10:05:31 -0600 From: Ben Myers To: Christoph Hellwig Cc: stable@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/9] XFS update for 3.0-stable Message-ID: <20111121160531.GN29840@sgi.com> References: <20111119181336.964593075@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111119181336.964593075@bombadil.infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Christoph, On Sat, Nov 19, 2011 at 01:13:36PM -0500, Christoph Hellwig wrote: > This is the series of XFS fixes from current mainline which is important > enough for 3.0-stable. All but the first three would also be needed > for 3.1-stable, but given the limited resources I plan to concentrate > on 3.0-stable. If anyone wants to take care for 3.1 by building a kernel > with the remaining patches and run QA on them you are more welcome to > help out with that tree. I'll work on 3.1... Thanks, -Ben From BATV+cfb9ea256cd8deeb0873+3011+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 21 11:05:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALH52sZ011005 for ; Mon, 21 Nov 2011 11:05:03 -0600 X-ASG-Debug-ID: 1321895100-10c5005a0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6045E1F395E2 for ; Mon, 21 Nov 2011 09:05:00 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 6s9O6FG5rM2I20jW for ; Mon, 21 Nov 2011 09:05:00 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RSXIh-0000MG-PR; Mon, 21 Nov 2011 17:04:59 +0000 Date: Mon, 21 Nov 2011 12:04:59 -0500 From: Christoph Hellwig To: hank peng Cc: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 Message-ID: <20111121170459.GA1327@infradead.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321895101 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.82 X-Barracuda-Spam-Status: No, SCORE=-1.82 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80893 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.10 BSF_SC0_SA085 Custom Rule SA085 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 21, 2011 at 09:00:57PM +0800, hank peng wrote: > Hi: > I have a 4TB XFS filesystem mounted with "inode64" option, and I > exported it using NFS v3, on NFS client, I entered a subdirectory and > got "stale NFS file handle" error. > ls -il showed that its inode number exceed 32 bit limit. > NFS server: kernel version is 2.6.35.6 > NFS client: kernel version is 2.6.18 Do you export the root directory of the XFS filesystem, or a subdirectory in it? If it's the former it should work in theory, althrough I'm not sure how well 64-bit inode numbers work with a client that old, if it's the latter it needs a few tweaks to work, see http://xfs.org/index.php/XFS_FAQ#Q:_Why_doesn.27t_NFS-exporting_subdirectories_of_inode64-mounted_filesystem_work.3F for details. From bpm@sgi.com Mon Nov 21 11:17:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALHHmAA011637 for ; Mon, 21 Nov 2011 11:17:48 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id 0521B304067; Mon, 21 Nov 2011 09:17:44 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id D734B431F74; Mon, 21 Nov 2011 11:18:05 -0600 (CST) Date: Mon, 21 Nov 2011 11:18:05 -0600 From: Ben Myers To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs: validate acl count Message-ID: <20111121171805.GO29840@sgi.com> References: <20111120153532.GA26918@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111120153532.GA26918@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Nov 20, 2011 at 10:35:32AM -0500, Christoph Hellwig wrote: > This prevents in-memory corruption and possible panics if the on-disk > ACL is badly corrupted. > > Signed-off-by: Christoph Hellwig Looks good. Reviewed-by: Ben Myers From cso@cxvn.com Mon Nov 21 11:30:00 2011 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALHTx51012244 for ; Mon, 21 Nov 2011 11:30:00 -0600 X-ASG-Debug-ID: 1321896591-52fe02560000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from vt29.dns.net.vn (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B494F1F39A80 for ; Mon, 21 Nov 2011 09:29:52 -0800 (PST) Received: from vt29.dns.net.vn ([203.113.173.29]) by cuda.sgi.com with ESMTP id zCbzqhkHjibQ1CFV for ; Mon, 21 Nov 2011 09:29:52 -0800 (PST) Received: from [113.161.73.245] (helo=NGA-4B49CC) by vt29.dns.net.vn with esmtp (Exim 4.76) (envelope-from ) id 1RSXgW-0002b4-U0 for xfs@oss.sgi.com; Tue, 22 Nov 2011 00:29:38 +0700 From: "CSO Conf & Award 2011" X-ASG-Orig-Subj: CSO Conference & Award 06 - 07/12/2011 at Sheraton Hotel, HCMC Subject: CSO Conference & Award 06 - 07/12/2011 at Sheraton Hotel, HCMC To: xfs@oss.sgi.com Content-Type: multipart/related; type="multipart/alternative"; charset="UTF-8"; boundary="ToJlengQD3xSW3n1OLQWOa4DFDLv91W=_T0" MIME-Version: 1.0 Reply-To: uyen_le@cso.org.vn Date: Tue, 22 Nov 2011 00:29:25 +0700 Message-ID: <59123151665003176@nga-4b49cc> X-Barracuda-Connect: UNKNOWN[203.113.173.29] X-Barracuda-Start-Time: 1321896598 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format --ToJlengQD3xSW3n1OLQWOa4DFDLv91W=_T0 Content-Type: multipart/alternative; boundary="ToJlengQD3xSW3n1OLQWOa4DFDLv91W=_T1" --ToJlengQD3xSW3n1OLQWOa4DFDLv91W=_T1 Content-Type: text/plain ; charset="UTF-8" Content-Transfer-Encoding: quoted-printable lan 3 --ToJlengQD3xSW3n1OLQWOa4DFDLv91W=_T1 Content-Type: text/html ; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

lan 3

--ToJlengQD3xSW3n1OLQWOa4DFDLv91W=_T1-- --ToJlengQD3xSW3n1OLQWOa4DFDLv91W=_T0 Content-Type: image/jpeg; name="enew CSO 6.jpg" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="enew CSO 6.jpg" Content-ID: <315166500> /9j/4AAQSkZJRgABAQEAYABgAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAABtbnRyUkdC IFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAA AADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFj cHJ0AAABUAAAADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAA ABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAAD TAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJD AAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5 OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEA AAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAA AAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAA AA+EAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBo dHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt IHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt IHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcg Q29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENv bmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAA ABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAA AAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAK AA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUA mgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy ATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMC DAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMh Ay0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4E jASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3 BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDII RghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqY Cq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUAN Wg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBh EH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT 5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReu F9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9oc AhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCY IMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZcl xyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2 K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIx SjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDec N9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+ oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXe RiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN 3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYP VlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1f D19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/ aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfBy S3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyB fOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuH n4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLj k02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6f HZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+rAqt1 q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm4 0blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZG xsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnU y9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj 4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////2wBDAAEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQH/wAARCAOEAn0DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAEC AwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0Kx wRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ 2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QA tREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk 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 pUac5xoOm5qUZwpKpTqK9KVOSTf4XHLsZUxOOxqhmOGxuHpVsRhsyq42r9YdejTk4ydWtRhOu6so qMqbqulOlKcKkKik4v49/Z90n4a614E0HV/BfiLxJBbW3ifXtYWa0vbO20fV9P1nTTt07RLOC5aJ 7R4Y1vILmfTNNEsr3CPFA5TzLXwE+F3wNH7Y3xJ+KnjTw/pFosPg7w/rfgzwrqWm/wBv6XB4se3v YfHPjq30i3juLOw8RLpWm6QttPe2nmNJNruoabcfbJrgxfnx+wz/AMJxc+JvBnwBsL3W45vGOh6H 4106+0Lwpaa7fXWkaTpPh/RdbsPBevpdyXOqrJI0t1pkttp6aJd21jLqianci4MEP9CHhP8A4Qr4 CfFa4+Gktn8NLWz1TSI7rQdb8WeKjZazqfhHXooYoL+VdS0+6m8R6hfyJe2us2IvLSOzukuEsVWO 4toV/M82yDGZFnmMy22Ijga2FhSjKUnTqVMNmFLD4+lzyUHO8qSjTxEXZe9iKbSU2fsGWZ7lvEuQ 5djoUMM8yoVJYt0uSNaFLGZZUngMY4wlJpRWIqOph6q2tQqqLdJxXlv/AAUJ+JvhS9/Ys+NGo/D/ AMF+HPH9vL8OtRms0k0jT54ba0njjhvdYayvIpYZJNJ0xrvVY4GjyZLZVYFlGP4LfgFqOnat+0H8 GfDU3hO98W+Gta8UaZ4LXwl4dufseuanpvi64bTJ0tb6Iu1rf2LXn9rTXCOBbW1ncyK0BHmR/wB9 Xx1v/DOveCtS+Elp4Z8Oab8O9es7jw9qWi6TYxWt1qmh3aGzuLBJdPis7hzdQyS29n5J84RzHJZy xPw5+zN/wR0u/B/7UVh8e/A/wU0n4Y/sueFfhD42if4i+JdXt4/ib4k8U6/eaVqWoeKPDPw41Aah qHhnRPDng+01Pwz4W1O9mttX1G8udY1CXTorG9tjcfS8B4mjzZnk9PBVKtPGyhN1YclOjDCQp0qU oV5c10lWu4Sp3nOVW0pKCah8N4k5ZXo0MnzyeYwpTy+Kw0aM3Uniq2MrVZTjWouPuXWGVSWI9pU5 acacVSfNKCl8P/D258Gf8E2JovhNoPiDxN8XrL4gapd+KPBngHR4U1LxZb2em639gj8RX+s2mn29 oPDVhGs8lhq2tBrswQrHaWzXV2wir/FzXvHX7SWp2d5r3xSHwv8AC/hfW9N125htdTt9GTT762mE 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 481yy8O2/gZvEfjJtMj0qPw/C3iMZurq1hwJ7UagoN9a6NPMZZJ9FsZLTR9QlcLc28yebG/hn7RP h5PH/hbwX8CdK8War4Ri8RxDXZfFXhsKdX0waTbHVbOfTv8ASLdP9IZUBdplVYGJTc+0V8o/FLxx 8S/g7pPh/RdNfRvHa291p2han4l8WveDX7i2lKW0mpXU1o8aSz3JZWmURlY52LhmXCj5DGZbWnGo sOqUo4nl9vSnaCbulKaveCla7UopS0sldpn6VkfFuF+rUcDnMa1apl9edTLcQ4xrRo0vZU6KoSjZ TcEockIy5qfJLlklGMWus+I3iu80HWm0+ymOryXbRmKOzgZ5GiR44LG1VIDhXubiZLexsYIvNlc7 YkOMD5y8R3Pibxr40vNF8a2F7p9j4Z1xtJ1TwxdTT2b3fiDRWjlRNRtG8yDUItBuw6w6fcpI9vq9 vO1wkE9ukR/Tn4WfGj9kT4ReCv2qfix4LufEHiH9pn4b+Nx8FvgX4Q+I66PNY6Je+JNNeaw+N3hb RY9Msmvr3wzBBrlxqWu3AuLXw9daXpWk6Tb21xrK6lf/AJH6r4+bwrc6MdNjfXdfubu/isYbl7iS 21bVdSkb7RdazdoslxPcT6jL9uvp4zLeEtNM5WR2anQ4IwuQVYYvHONXGc6q0aNOUa2Fo07S5arl KPPXlKalGlZKEJUaqmpTimuLOPEDGZ/QqYHKadTD4GpTWHxOIqXpYjFOrrKkkpt0YKKi6rqTnOrz pxUIc3N9WfBT4aXXxk+P3hbwjZRSN515p/hoXBzINOs5ZP7W8V6hNhiYzY6RbyF5DwJLaNCNx4/p M+NWt2fgj4Yy6NpCLZjUrWz8IaJBHhWttOitkgnMe04AtdHtmgJUACSeLkFs18Bf8EwvgTdaBovi D40eJLfdquri58M+G5HiCmV5niuvGOtxbsuRc3q2+h20u4kxW2pRgkO9e3ftA+MF8SeN30m0mEul +E4pNLjZGJjm1WVkk1iZeSG8qZIrBWHa0cDhjn9d4Iy6UqixlVc0sTNV25aNYWikqLbtF3qVGnZO Styu14zP4W+kZxlToUK+V4OqpLAYeeU4dxfvyzDHqNTMq0UnJXw2HjGjfR05wlK/vKJ4WBgYHQcC iimuwRSzZwo3EDG4heSqgkAswGFBIBJAJA5r9Xbcnd6tu/q2z+EoxcpRit5NRV+7dldnu/wf8N7/ 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 AD1wMelbNp4S8QgzFNHuyzsGYZg68jABmBz1P0qaXwh4obgaHeEDnO63zz7edmrp1KagoyrUla+k q9NJcz+ypTsr3V+Xfrqjkr4XGzn7uCxjircrWCxCk7xje79ipOz0V9tbHJXDSvgw7Vbod/IxzyOO vbGKr2y3HmTCN08wFd7MvysCo6AdNp6eo612H/CF+LM4/sG9xgEHdbHPtjz+Me9EPgfxSrs7aJeB mZW3FrcAhe3NxjJ46ehqHiaMp01HFUbRlLbE048r0V1+8Vn3at5nXHA42jS1wONny62eCxGt2tLO k09+unz0K1oZgkXmlTIQFYqPlYFuODnB24B9wcVoXD3jLELSeGDaCsgmhMu/ptZSCNuMEMvfIO7j FbMXg3xTiM/2LdAAITmS0HAx63H6daunwh4mH/MGue/Hm2nOBn/n4/L17V6KxOFcUniaVmldxr01 L5S5nr563PBq5dmbxHPHLMZLmtHkeDrzha6abUaeqa+zptujgrY6mLzUPLuLRZW+zmd3t3aOQ7Ds 8pd25So4bc2O4U9thJ5kjRbiRGlwd7xoVR8k4IU7iMAgHkZIzgVqHwb4njlnkOi3gNwY2Kl7UgeW pUbT5/Oe+TjPQCqr+FfFg5XRLw8gBc2xwD3z5pHH1rCGJwlJSbxVHWUnFSxcJt3s+tRpN23srbaL Q0xGV5hOSTyvFqKjRSawGIpy5vY0/aRuoK8VU9pZNN9U2rFCSS5ZQLOaKNs/vDLC0gxj5dvIwQc5 45z1wMGnYyaquo3oiu7VZhHbmZ5LctHIu0+WEQAldmTuJyWbHat5PCnioEg6JeMf4cNbKeM5wPOB Pr7Y6c1ftPB3iWKee6Oj3e6ZI0bdJaKuIwQpH78YHr169ap18POdKccXRUbO8YYmCtzQkk3yVLv4 raJsUcvx9OlVvleKadLlg1l1aUpTU6UlFyVJ392Dd3Ftu7cnezsWUlz5KJevFJc7n3SQqUjYFvkA Qj5Sq/eOeST7U69S/eNBp81vBIHzI1xE0oaPBG1AMbWDEEk9QMDmtSHwx4iKhRpM5xnJ8+zAAJJz zc8/hVxfDfiMEZ0yUgdvPsen1+0V2Uq2BnBwliqMZXtze3i3yWS+Jzte9/ebcr6u5wLLs0jNVFle O+JtRlga7ilLRrldLRWk1ok0r2toebxQ60dZvwtzYi7W0t2lkMD+RIpY7FVD8yuhxlsbSDgDINb0 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 5LR9U9fNXT7myw+IaTjQrtNJpqlUaadmmmo2ad001p1OQk8YeK5rlr2XxFq0l81uLN757otfNZjw ufBAsmvCDcmxHg4nwwtl5v2RdGY2iwhSTXQ3Pxd+Kd5YaRpd18QvFk9j4f1LSNY0OJtWnSXStT8P gjw/dWd7F5d/ENAJeTQrU3TWWjXEs91ptta3VzczS3v+FGfG7JH/AApv4rZGeP8AhXvi3t1/5hP+ etA+BnxuPT4N/FY5GePh54tJx64GkZxU89HT36eisvejonbTfbb+mVGhi46Ro4pap6Uqy10Sfw72 trvp5aUb34u/FDUNSfWLrx34hOpvp+qaSbq1uYdN2aXrc1hcazpsFtplvZ2dtY6rc6VplzqFrbW8 UN3c2FtcTI8yF2TTvi58VdHtbKw0n4keNdOsNNto7PTrC08QahHY6faw2Ok6bFDY2fmm2tFTT9A0 KzzBHG72+j6bFIzraQhdA/Az43jk/Br4rgep+Hfi7/5UUf8ACi/jeenwa+Kx+nw88WkfmNIxR+5v a9O/a8b6W6X8v6ux+xxt0/Y4u6SSfs610na2vLft/SMDUPiR8QtWtLCw1bxv4n1Sx0vQtS8L6baa jq91eQWHhrWYoYNV0CzSd3+z6PqEFvbwXGnxlbYwW8EKRpFEiLxdXNR07UNIv73StWsL3S9U065l stR03UbWex1CwvLdyk9pe2dykVxa3UDgpNBPHHLE4KuikEVTrSKil7qST106+ZzycnJ87k5L3XzX 5lytrld9U07pp6p6BRRRTEFFFFABUJmAJG08EjqOxqamMpI+ULnPO4dufY85oFdLRtX7XRGLgBlZ QyspDKyttZWByGVgQysCMgggg9DX1R8Fv2wPil8IL22WHVLrWtFiGxrS7uXN2kXHyRTuGSdcqAIr tXQAsA65r5Z8uYjICEZxnaev/fNL5U+M7U/75P8A8TSaT3Sf6enY0p150ZqdOo4SWzjK29tN7O+3 nsf1G/sl/wDBT7R9Qexg07xNN4b1XFsbjRrtydMeUkCTz9InlQwOz7t95pc8Tfx5cALX7iJ+2T4F +K/wo1Xw58WIrGfRI7aPVrLUrnxEmkaIdX0Qm/04W/jSSGSTw8LyWI2Nw97DHILO7uYYnLyCVf8A O4tZrqyniurWWa0u4GV4rm2d4ZopFIIeORCrKeOxwQSMYNdFrfizxl4tgW18R+KfEWvWcIUR2Gra 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 --ToJlengQD3xSW3n1OLQWOa4DFDLv91W=_T0-- From gregory.farnum@dreamhost.com Mon Nov 21 12:06:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALI6MNi013677 for ; Mon, 21 Nov 2011 12:06:22 -0600 X-ASG-Debug-ID: 1321898781-10c6022a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-iy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A7B441D23D5C for ; Mon, 21 Nov 2011 10:06:21 -0800 (PST) Received: from mail-iy0-f181.google.com (mail-iy0-f181.google.com [209.85.210.181]) by cuda.sgi.com with ESMTP id sI2iHQinLwYOj9ej for ; Mon, 21 Nov 2011 10:06:21 -0800 (PST) Received: by iaen33 with SMTP id n33so8919931iae.26 for ; Mon, 21 Nov 2011 10:06:21 -0800 (PST) MIME-Version: 1.0 Received: by 10.43.65.79 with SMTP id xl15mr14996378icb.6.1321898781036; Mon, 21 Nov 2011 10:06:21 -0800 (PST) Received: by 10.231.37.73 with HTTP; Mon, 21 Nov 2011 10:06:20 -0800 (PST) Date: Mon, 21 Nov 2011 10:06:20 -0800 Message-ID: X-ASG-Orig-Subj: EFSCORRUPTED on mount? Subject: EFSCORRUPTED on mount? From: Gregory Farnum To: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-iy0-f181.google.com[209.85.210.181] X-Barracuda-Start-Time: 1321898781 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80896 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean While working with a Ceph node running XFS we somehow managed to corrupt our filesystem. I don't think there were any hard powercycles on this node, but while starting up after a kernel upgrade (it's running 3.1) the daemon was performing its usual startup sequence (a lot of file truncates, mostly) when it got an error out of the filesystem: 2011-11-17 16:00:37.294876 7f83f3eef720 filestore(/mnt/osd.17) truncate meta/pginfo_12.7c8/0 size 0 2011-11-17 16:00:37.483407 7f83f3eef720 filestore(/mnt/osd.17) truncate meta/pginfo_12.7c8/0 size 0 = -117 2011-11-17 16:00:37.483476 7f83f3eef720 filestore(/mnt/osd.17) error error 117: Structure needs cleaning not handled When I tried to look at the filesystem, it failed with EIO. When I tried to mount the filesystem after a remount, it gave me an internal error: root@cephstore6358:~# mount /dev/sdg1 /mnt/osd.17 2011 Nov 18 14:52:47 cephstore6358 [82374.729383] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1664 of file fs/xfs/xfs_alloc.c. Caller 0xffffffff811d6b71 2011 Nov 18 14:52:47 cephstore6358 [82374.729386] 2011 Nov 18 14:52:47 cephstore6358 [82374.758262] XFS (sdg1): Internal error xfs_trans_cancel at line 1928 of file fs/xfs/xfs_trans.c. Caller 0xffffffff811fa463 2011 Nov 18 14:52:47 cephstore6358 [82374.758265] 2011 Nov 18 14:52:47 cephstore6358 [82374.758352] XFS (sdg1): Corruption of in-memory data detected. Shutting down filesystem 2011 Nov 18 14:52:47 cephstore6358 [82374.758356] XFS (sdg1): Please umount the filesystem and rectify the problem(s) 2011 Nov 18 14:52:47 cephstore6358 [82374.758364] XFS (sdg1): Failed to recover EFIs mount: Structure needs cleaning dmesg had a little more output: dmesg says: [82373.779312] XFS (sdg1): Mounting Filesystem [82373.930531] XFS (sdg1): Starting recovery (logdev: internal) [82374.729383] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1664 of file fs/xfs/xfs_alloc.c. Caller 0xffffffff811d6b71 [82374.729386] [82374.741959] Pid: 30648, comm: mount Not tainted 3.1.0-dho-00004-g1ffcb5c-dirty #1 [82374.749543] Call Trace: [82374.751994] [] ? xfs_free_ag_extent+0x4e3/0x698 [82374.758157] [] ? xfs_setup_devices+0x84/0x84 [82374.758163] [] ? xfs_setup_devices+0x84/0x84 [82374.758167] [] ? xfs_free_extent+0xb6/0xf9 [82374.758171] [] ? kmem_zone_alloc+0x58/0x9e [82374.758179] [] ? xfs_trans_get_efd+0x21/0x2a [82374.758185] [] ? xlog_recover_process_efi+0x113/0x172 [82374.758190] [] ? xlog_recover_process_efis+0x4e/0x8e [82374.758194] [] ? xlog_recover_finish+0x14/0x88 [82374.758199] [] ? xfs_mountfs+0x46c/0x56a [82374.758204] [] ? xfs_fs_fill_super+0x16d/0x244 [82374.758213] [] ? mount_bdev+0x13d/0x198 [82374.758218] [] ? mount_fs+0xc/0xa6 [82374.758225] [] ? vfs_kern_mount+0x61/0x97 [82374.758230] [] ? do_kern_mount+0x49/0xd6 [82374.758234] [] ? do_mount+0x6f6/0x75d [82374.758241] [] ? memdup_user+0x3a/0x56 [82374.758246] [] ? sys_mount+0x88/0xc4 [82374.758254] [] ? system_call_fastpath+0x16/0x1b [82374.758262] XFS (sdg1): Internal error xfs_trans_cancel at line 1928 of file fs/xfs/xfs_trans.c. Caller 0xffffffff811fa463 [82374.758265] [82374.758268] Pid: 30648, comm: mount Not tainted 3.1.0-dho-00004-g1ffcb5c-dirty #1 [82374.758270] Call Trace: [82374.758275] [] ? xfs_trans_cancel+0x56/0xcf [82374.758279] [] ? xlog_recover_process_efi+0x163/0x172 [82374.758284] [] ? xlog_recover_process_efis+0x4e/0x8e [82374.758288] [] ? xlog_recover_finish+0x14/0x88 [82374.758293] [] ? xfs_mountfs+0x46c/0x56a [82374.758298] [] ? xfs_fs_fill_super+0x16d/0x244 [82374.758303] [] ? mount_bdev+0x13d/0x198 [82374.758307] [] ? mount_fs+0xc/0xa6 [82374.758312] [] ? vfs_kern_mount+0x61/0x97 [82374.758317] [] ? do_kern_mount+0x49/0xd6 [82374.758321] [] ? do_mount+0x6f6/0x75d [82374.758325] [] ? memdup_user+0x3a/0x56 [82374.758330] [] ? sys_mount+0x88/0xc4 [82374.758335] [] ? system_call_fastpath+0x16/0x1b [82374.758341] XFS (sdg1): xfs_do_force_shutdown(0x8) called from line 1929 of file fs/xfs/xfs_trans.c. Return address = 0xffffffff81201ee6 [82374.758352] XFS (sdg1): Corruption of in-memory data detected. Shutting down filesystem [82374.758356] XFS (sdg1): Please umount the filesystem and rectify the problem(s) [82374.758364] XFS (sdg1): Failed to recover EFIs [82374.758367] XFS (sdg1): log mount finish failed xfs_check doesn't give me much either, since I assume the errors above are involved in log replay: root@cephstore6358:~# xfs_check -v /dev/sdg1 ERROR: The filesystem has valuable metadata changes in a log which needs to be replayed. Mount the filesystem to replay the log, and unmount it before re-running xfs_check. If you are unable to mount the filesystem, then use the xfs_repair -L option to destroy the log and attempt a repair. Note that destroying the log may cause corruption -- please attempt a mount of the filesystem before doing this. Is there something useful I can do about this? Data I can provide to help track down what broke? -Greg From sekharan@us.ibm.com Mon Nov 21 13:17:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALJHqtd016416 for ; Mon, 21 Nov 2011 13:17:53 -0600 X-ASG-Debug-ID: 1321903071-277600790000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e6.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 13DE72681DD for ; Mon, 21 Nov 2011 11:17:51 -0800 (PST) Received: from e6.ny.us.ibm.com (e6.ny.us.ibm.com [32.97.182.146]) by cuda.sgi.com with ESMTP id NhmQu0lVu4gTeW5A for ; Mon, 21 Nov 2011 11:17:51 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from /spool/local by e6.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 21 Nov 2011 14:17:49 -0500 Received: from d01relay04.pok.ibm.com ([9.56.227.236]) by e6.ny.us.ibm.com ([192.168.1.106]) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Mon, 21 Nov 2011 14:16:47 -0500 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id pALJGf3V232342 for ; Mon, 21 Nov 2011 14:16:41 -0500 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id pALJFXN4015002 for ; Mon, 21 Nov 2011 12:16:31 -0700 Received: from [9.53.40.164] (chandra-lucid.austin.ibm.com [9.53.40.164]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id pALJBk2i014952; Mon, 21 Nov 2011 12:11:46 -0700 X-ASG-Orig-Subj: Re: [PATCH] xfs: Remove the entries from the queue while waking them up. Subject: Re: [PATCH] xfs: Remove the entries from the queue while waking them up. From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Christoph Hellwig Cc: XFS Mailing List In-Reply-To: <20111119181929.GA25739@infradead.org> References: <1321644054.2201.80.camel@chandra-lucid.austin.ibm.com> <20111119181929.GA25739@infradead.org> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Mon, 21 Nov 2011 13:11:41 -0600 Message-ID: <1321902701.2201.141.camel@chandra-lucid.austin.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit x-cbid: 11112119-1976-0000-0000-00000595067A X-Barracuda-Connect: e6.ny.us.ibm.com[32.97.182.146] X-Barracuda-Start-Time: 1321903072 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, 2011-11-19 at 13:19 -0500, Christoph Hellwig wrote: Hi Christoph, Thanks for your review and response.... see my comments below. > Thanks a lot for tracking this issue down! > > Unfortunately I don't think the fix is entirely safe. If we remove > the ticket from the list before the wakeup we have to assume no one > else ever wakes up a process waiting for log space. In Linux that The code does not assume that it got the space when it wakes up. After every wake up it does check for free bytes available and compares to required bytes before granting the bytes to itself. (IOW, after waking up it behaves the same way as the lock-less case) As Dave pointed, I can see only the signal case to be effecting this scenario. With that case in mind, I can see one change required to my patch: Add the ticket to the list the second time (in a function) only if the t_queue is not empty. > generally isn't a safe assumption - e.g. higher level code could have > added itself to another waitqueue before calling into this code ( > possibly even outside the XFS code) and now getting a wake up, or > other bits of the kernel could have all kinds of reasons to wake > this process up. > > Below is patch I hacked up on the airplane today - it makes sure > we always wake other waiters on the log space queues first before > adding a new process and should have the same effect. Can you > test if this also fixes the 234 hang for you? > > --- > From: Christoph Hellwig > Subject: xfs: fix and cleanup logspace waiter lists > > Apply the scheme used in log_regrant_write_log_space to wake up any > other threads waiting for log space before the newly added one to > log_regrant_write_log_space as well, and factor the code into > readable helpers. For each of the queues we have: > > - one helper to wake up all waiting threads, and return if we > succeeded into doing that. These helpers will also be usable > by xfs_log_move_tail once we remove the current opportunistic > wakeups in it. > - one helper to sleep on t_wait until enough log space is available, > which is modelled after the Linux waitqueue model. > > and rewrite log_regrant_write_log_space and log_regrant_write_log_space > around these helpers, including comments documenting what is going on. > These two function now use one and the same algorithm for waiting > on log space instead of subtly different ones before. > > Signed-off-by: Christoph Hellwig > > --- > fs/xfs/linux-2.6/xfs_trace.h | 12 - > fs/xfs/xfs_log.c | 329 +++++++++++++++++++++---------------------- > 2 files changed, 170 insertions(+), 171 deletions(-) > > Index: linux-2.6/fs/xfs/xfs_log.c > =================================================================== > --- linux-2.6.orig/fs/xfs/xfs_log.c 2011-11-19 15:51:55.689999172 +0100 > +++ linux-2.6/fs/xfs/xfs_log.c 2011-11-19 16:57:07.226659537 +0100 > @@ -670,6 +670,52 @@ xfs_log_write( > return error; > } > > +STATIC bool > +xlog_wake_writeq( > + struct log *log, > + int free_bytes) > +{ > + struct xlog_ticket *tic; > + > + list_for_each_entry(tic, &log->l_writeq, t_queue) { > + ASSERT(tic->t_flags & XLOG_TIC_PERM_RESERV); > + > + if (free_bytes < tic->t_unit_res) > + return false; > + free_bytes -= tic->t_unit_res; > + > + trace_xfs_log_regrant_write_wake_up(log, tic); > + wake_up(&tic->t_wait); > + } > + > + return true; > +} > + > +STATIC bool > +xlog_wake_reserveq( > + struct log *log, > + int free_bytes) > +{ > + struct xlog_ticket *tic; > + int need_bytes; > + > + list_for_each_entry(tic, &log->l_reserveq, t_queue) { > + if (tic->t_flags & XLOG_TIC_PERM_RESERV) > + need_bytes = tic->t_unit_res*tic->t_cnt; > + else > + need_bytes = tic->t_unit_res; > + > + if (free_bytes < need_bytes) > + return false; > + free_bytes -= tic->t_unit_res; > + > + trace_xfs_log_grant_wake_up(log, tic); > + wake_up(&tic->t_wait); > + } > + > + return true; > +} > + > void > xfs_log_move_tail(xfs_mount_t *mp, > xfs_lsn_t tail_lsn) > @@ -2492,11 +2538,42 @@ restart: > return 0; > } /* xlog_state_get_iclog_space */ > > +STATIC int > +xlog_reserveq_wait( > + struct log *log, > + struct xlog_ticket *tic, > + int need_bytes) > +{ > + list_add_tail(&tic->t_queue, &log->l_reserveq); > + > + do { > + if (XLOG_FORCED_SHUTDOWN(log)) > + goto shutdown; > + xlog_grant_push_ail(log, need_bytes); > + > + XFS_STATS_INC(xs_sleep_logspace); > + trace_xfs_log_grant_sleep(log, tic); > + > + xlog_wait(&tic->t_wait, &log->l_grant_reserve_lock); > + trace_xfs_log_grant_wake(log, tic); > + > + spin_lock(&log->l_grant_reserve_lock); > + if (XLOG_FORCED_SHUTDOWN(log)) > + goto shutdown; > + } while (xlog_space_left(log, &log->l_grant_reserve_head) < need_bytes); > + > + list_del_init(&tic->t_queue); > + return 0; > +shutdown: > + list_del_init(&tic->t_queue); > + return XFS_ERROR(EIO); > +} > + > /* > * Atomically get the log space required for a log ticket. > * > - * Once a ticket gets put onto the reserveq, it will only return after > - * the needed reservation is satisfied. > + * Once a ticket gets put onto the reserveq, it will only return after the > + * needed reservation is satisfied. > * > * This function is structured so that it has a lock free fast path. This is > * necessary because every new transaction reservation will come through this > @@ -2504,113 +2581,94 @@ restart: > * every pass. > * > * As tickets are only ever moved on and off the reserveq under the > - * l_grant_reserve_lock, we only need to take that lock if we are going > - * to add the ticket to the queue and sleep. We can avoid taking the lock if the > - * ticket was never added to the reserveq because the t_queue list head will be > - * empty and we hold the only reference to it so it can safely be checked > - * unlocked. > + * l_grant_reserve_lock, we only need to take that lock if we are going to add > + * the ticket to the queue and sleep. We can avoid taking the lock if the ticket > + * was never added to the reserveq because the t_queue list head will be empty > + * and we hold the only reference to it so it can safely be checked unlocked. > */ > STATIC int > -xlog_grant_log_space(xlog_t *log, > - xlog_ticket_t *tic) > +xlog_grant_log_space( > + struct log *log, > + struct xlog_ticket *tic) > { > - int free_bytes; > - int need_bytes; > + int free_bytes, need_bytes; > + int error = 0; > > -#ifdef DEBUG > - if (log->l_flags & XLOG_ACTIVE_RECOVERY) > - panic("grant Recovery problem"); > -#endif > + ASSERT(!(log->l_flags & XLOG_ACTIVE_RECOVERY)); > > trace_xfs_log_grant_enter(log, tic); > > + /* > + * If there are other waiters on the queue then give them a chance at > + * logspace before us. Wake up the first waiters, if we do not wake > + * up all the waiters then go to sleep waiting for more free space, > + * otherwise try to get some space for this transaction. > + */ > need_bytes = tic->t_unit_res; > if (tic->t_flags & XFS_LOG_PERM_RESERV) > need_bytes *= tic->t_ocnt; > - > - /* something is already sleeping; insert new transaction at end */ > - if (!list_empty_careful(&log->l_reserveq)) { > - spin_lock(&log->l_grant_reserve_lock); > - /* recheck the queue now we are locked */ > - if (list_empty(&log->l_reserveq)) { > - spin_unlock(&log->l_grant_reserve_lock); > - goto redo; > - } > - list_add_tail(&tic->t_queue, &log->l_reserveq); > - > - trace_xfs_log_grant_sleep1(log, tic); > - > - /* > - * Gotta check this before going to sleep, while we're > - * holding the grant lock. > - */ > - if (XLOG_FORCED_SHUTDOWN(log)) > - goto error_return; > - > - XFS_STATS_INC(xs_sleep_logspace); > - xlog_wait(&tic->t_wait, &log->l_grant_reserve_lock); > - > - /* > - * If we got an error, and the filesystem is shutting down, > - * we'll catch it down below. So just continue... > - */ > - trace_xfs_log_grant_wake1(log, tic); > - } > - > -redo: > - if (XLOG_FORCED_SHUTDOWN(log)) > - goto error_return_unlocked; > - > free_bytes = xlog_space_left(log, &log->l_grant_reserve_head); > - if (free_bytes < need_bytes) { > + if (!list_empty_careful(&log->l_reserveq)) { > spin_lock(&log->l_grant_reserve_lock); > - if (list_empty(&tic->t_queue)) > - list_add_tail(&tic->t_queue, &log->l_reserveq); > - > - trace_xfs_log_grant_sleep2(log, tic); > - > - if (XLOG_FORCED_SHUTDOWN(log)) > - goto error_return; > - > - xlog_grant_push_ail(log, need_bytes); > - > - XFS_STATS_INC(xs_sleep_logspace); > - xlog_wait(&tic->t_wait, &log->l_grant_reserve_lock); > - > - trace_xfs_log_grant_wake2(log, tic); > - goto redo; > - } > - > - if (!list_empty(&tic->t_queue)) { > + if (!xlog_wake_reserveq(log, free_bytes)) > + error = xlog_reserveq_wait(log, tic, need_bytes); > + spin_unlock(&log->l_grant_reserve_lock); > + } else if (free_bytes < need_bytes) { > spin_lock(&log->l_grant_reserve_lock); > - list_del_init(&tic->t_queue); > + error = xlog_reserveq_wait(log, tic, need_bytes); > spin_unlock(&log->l_grant_reserve_lock); > } > > - /* we've got enough space */ > + if (error) > + goto error0; > + > xlog_grant_add_space(log, &log->l_grant_reserve_head, need_bytes); > xlog_grant_add_space(log, &log->l_grant_write_head, need_bytes); > trace_xfs_log_grant_exit(log, tic); > xlog_verify_grant_tail(log); > return 0; > > -error_return_unlocked: > - spin_lock(&log->l_grant_reserve_lock); > -error_return: > - list_del_init(&tic->t_queue); > - spin_unlock(&log->l_grant_reserve_lock); > - trace_xfs_log_grant_error(log, tic); > - > +error0: > /* > - * If we are failing, make sure the ticket doesn't have any > - * current reservations. We don't want to add this back when > - * the ticket/transaction gets cancelled. > + * If we are failing, make sure the ticket doesn't have any current > + * reservations. We don't want to add this back when the ticket/ > + * transaction gets cancelled. > */ > tic->t_curr_res = 0; > tic->t_cnt = 0; /* ungrant will give back unit_res * t_cnt. */ > - return XFS_ERROR(EIO); > -} /* xlog_grant_log_space */ > + return error; > +} > + > +STATIC int > +xlog_writeq_wait( > + struct log *log, > + struct xlog_ticket *tic, > + int need_bytes) > +{ > + list_add_tail(&tic->t_queue, &log->l_writeq); > + > + do { > + if (XLOG_FORCED_SHUTDOWN(log)) > + goto shutdown; > + xlog_grant_push_ail(log, need_bytes); > + > + XFS_STATS_INC(xs_sleep_logspace); > + trace_xfs_log_regrant_write_sleep(log, tic); > + > + xlog_wait(&tic->t_wait, &log->l_grant_write_lock); > + trace_xfs_log_regrant_write_wake(log, tic); > + > + spin_lock(&log->l_grant_write_lock); > + if (XLOG_FORCED_SHUTDOWN(log)) > + goto shutdown; > + } while (xlog_space_left(log, &log->l_grant_write_head) < need_bytes); > > + list_del_init(&tic->t_queue); > + return 0; > +shutdown: > + list_del_init(&tic->t_queue); > + return XFS_ERROR(EIO); > +} > > /* > * Replenish the byte reservation required by moving the grant write head. > @@ -2619,10 +2677,12 @@ error_return: > * free fast path. > */ > STATIC int > -xlog_regrant_write_log_space(xlog_t *log, > - xlog_ticket_t *tic) > +xlog_regrant_write_log_space( > + struct log *log, > + struct xlog_ticket *tic) > { > - int free_bytes, need_bytes; > + int free_bytes, need_bytes; > + int error = 0; > > tic->t_curr_res = tic->t_unit_res; > xlog_tic_reset_res(tic); > @@ -2630,104 +2690,47 @@ xlog_regrant_write_log_space(xlog_t * > if (tic->t_cnt > 0) > return 0; > > -#ifdef DEBUG > - if (log->l_flags & XLOG_ACTIVE_RECOVERY) > - panic("regrant Recovery problem"); > -#endif > + ASSERT(!(log->l_flags & XLOG_ACTIVE_RECOVERY)); > > trace_xfs_log_regrant_write_enter(log, tic); > - if (XLOG_FORCED_SHUTDOWN(log)) > - goto error_return_unlocked; > > - /* If there are other waiters on the queue then give them a > - * chance at logspace before us. Wake up the first waiters, > - * if we do not wake up all the waiters then go to sleep waiting > - * for more free space, otherwise try to get some space for > - * this transaction. > + /* > + * If there are other waiters on the queue then give them a chance at > + * logspace before us. Wake up the first waiters, if we do not wake > + * up all the waiters then go to sleep waiting for more free space, > + * otherwise try to get some space for this transaction. > */ > need_bytes = tic->t_unit_res; > - if (!list_empty_careful(&log->l_writeq)) { > - struct xlog_ticket *ntic; > - > - spin_lock(&log->l_grant_write_lock); > - free_bytes = xlog_space_left(log, &log->l_grant_write_head); > - list_for_each_entry(ntic, &log->l_writeq, t_queue) { > - ASSERT(ntic->t_flags & XLOG_TIC_PERM_RESERV); > - > - if (free_bytes < ntic->t_unit_res) > - break; > - free_bytes -= ntic->t_unit_res; > - wake_up(&ntic->t_wait); > - } > - > - if (ntic != list_first_entry(&log->l_writeq, > - struct xlog_ticket, t_queue)) { > - if (list_empty(&tic->t_queue)) > - list_add_tail(&tic->t_queue, &log->l_writeq); > - trace_xfs_log_regrant_write_sleep1(log, tic); > - > - xlog_grant_push_ail(log, need_bytes); > - > - XFS_STATS_INC(xs_sleep_logspace); > - xlog_wait(&tic->t_wait, &log->l_grant_write_lock); > - trace_xfs_log_regrant_write_wake1(log, tic); > - } else > - spin_unlock(&log->l_grant_write_lock); > - } > - > -redo: > - if (XLOG_FORCED_SHUTDOWN(log)) > - goto error_return_unlocked; > - > free_bytes = xlog_space_left(log, &log->l_grant_write_head); > - if (free_bytes < need_bytes) { > + if (!list_empty_careful(&log->l_writeq)) { > spin_lock(&log->l_grant_write_lock); > - if (list_empty(&tic->t_queue)) > - list_add_tail(&tic->t_queue, &log->l_writeq); > - > - if (XLOG_FORCED_SHUTDOWN(log)) > - goto error_return; > - > - xlog_grant_push_ail(log, need_bytes); > - > - XFS_STATS_INC(xs_sleep_logspace); > - trace_xfs_log_regrant_write_sleep2(log, tic); > - xlog_wait(&tic->t_wait, &log->l_grant_write_lock); > - > - trace_xfs_log_regrant_write_wake2(log, tic); > - goto redo; > - } > - > - if (!list_empty(&tic->t_queue)) { > + if (!xlog_wake_writeq(log, free_bytes)) > + error = xlog_writeq_wait(log, tic, need_bytes); > + spin_unlock(&log->l_grant_write_lock); > + } else if (free_bytes < need_bytes) { > spin_lock(&log->l_grant_write_lock); > - list_del_init(&tic->t_queue); > + error = xlog_writeq_wait(log, tic, need_bytes); > spin_unlock(&log->l_grant_write_lock); > } > > - /* we've got enough space */ > + if (error) > + goto error0; > + > xlog_grant_add_space(log, &log->l_grant_write_head, need_bytes); > trace_xfs_log_regrant_write_exit(log, tic); > xlog_verify_grant_tail(log); > return 0; > > - > - error_return_unlocked: > - spin_lock(&log->l_grant_write_lock); > - error_return: > - list_del_init(&tic->t_queue); > - spin_unlock(&log->l_grant_write_lock); > - trace_xfs_log_regrant_write_error(log, tic); > - > +error0: > /* > - * If we are failing, make sure the ticket doesn't have any > - * current reservations. We don't want to add this back when > - * the ticket/transaction gets cancelled. > + * If we are failing, make sure the ticket doesn't have any current > + * reservations. We don't want to add this back when the ticket/ > + * transaction gets cancelled. > */ > tic->t_curr_res = 0; > tic->t_cnt = 0; /* ungrant will give back unit_res * t_cnt. */ > - return XFS_ERROR(EIO); > -} /* xlog_regrant_write_log_space */ > - > + return error; > +} > > /* The first cnt-1 times through here we don't need to > * move the grant write head because the permanent > Index: linux-2.6/fs/xfs/linux-2.6/xfs_trace.h > =================================================================== > --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_trace.h 2011-11-19 16:36:00.493329401 +0100 > +++ linux-2.6/fs/xfs/linux-2.6/xfs_trace.h 2011-11-19 16:39:53.303332382 +0100 > @@ -833,18 +833,14 @@ DEFINE_LOGGRANT_EVENT(xfs_log_umount_wri > DEFINE_LOGGRANT_EVENT(xfs_log_grant_enter); > DEFINE_LOGGRANT_EVENT(xfs_log_grant_exit); > DEFINE_LOGGRANT_EVENT(xfs_log_grant_error); > -DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep1); > -DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake1); > -DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep2); > -DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake2); > +DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep); > +DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake); > DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake_up); > DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_enter); > DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_exit); > DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_error); > -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_sleep1); > -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake1); > -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_sleep2); > -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake2); > +DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_sleep); > +DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake); > DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake_up); > DEFINE_LOGGRANT_EVENT(xfs_log_regrant_reserve_enter); > DEFINE_LOGGRANT_EVENT(xfs_log_regrant_reserve_exit); > From peterakimball@yahoo.com Mon Nov 21 14:46:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID,T_TO_NO_BRKTS_FREEMAIL autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALKk7RW020303 for ; Mon, 21 Nov 2011 14:46:07 -0600 X-ASG-Debug-ID: 1321908366-5835012e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from nm24.bullet.mail.bf1.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id A1CA82686A4 for ; Mon, 21 Nov 2011 12:46:06 -0800 (PST) Received: from nm24.bullet.mail.bf1.yahoo.com (nm24.bullet.mail.bf1.yahoo.com [98.139.212.183]) by cuda.sgi.com with SMTP id g1oTdEbvdmC3xUMf for ; Mon, 21 Nov 2011 12:46:06 -0800 (PST) Received: from [98.139.215.140] by nm24.bullet.mail.bf1.yahoo.com with NNFMP; 21 Nov 2011 20:46:05 -0000 Received: from [98.139.213.2] by tm11.bullet.mail.bf1.yahoo.com with NNFMP; 21 Nov 2011 20:46:05 -0000 Received: from [127.0.0.1] by smtp102.mail.bf1.yahoo.com with NNFMP; 21 Nov 2011 20:46:05 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1321908365; bh=Rp4XXYKSPJAIougahoogB8gaql+qd9O7QGiddKLYd20=; h=X-Yahoo-Newman-Id:X-Yahoo-Newman-Property:X-YMail-OSG:X-Yahoo-SMTP:Received:Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Content-Transfer-Encoding:Message-Id:References:To:X-Mailer; b=yixXCrlWQXCxcoUHnmEdsbko12FBwoZksBbP2SuzXkBkggdRHPN9Flp8cEskajrjLznK7HvmHtk5CfKBgLOek/YjM3W+VWt7zb0uvXmLeKLswihS19VtVb40lb2VZ2pYDA9VwoDuQqqt68hpQ2M3b25jwLeRsDOZ/qUoD8ATmyU= X-Yahoo-Newman-Id: 651399.90366.bm@smtp102.mail.bf1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: qviZFRUVM1kSIWglKZDXh.rO1zfcOAxUyymW9XaoL0LKj3P W3WK4e8m3X4T_d6YbDR5giQLFjTVM0wvS1OkOUuJb1wB87jcQcgGApTf82zD 1CEeGj2y4fqNGve7yGF8akMQgW2P86O.gXvdo03I8QTKYupPHiB84ezHJQGm eQjzADUMO03GDJuL_Yxiif7lEYLslVldisWm_K9JR6VJBk2Mlyv7Llzumnbf O5IXeIqLyJFS.KJ5FGGRNRUj_lVOX7yfUbo5slTwUeh9TD3XeT697tt7wCEg xXearg_aq5R_l27itznT6wW8Ibt3RlDL5T6C64FXbkd2W4n8SIP0gF_ARDoC sUIGvYS8La3k8CAk66IoM9gbyN4TbiY2iI1Oijx2ty04I1.mRQO2ZN8DeimD tc2L7nsUNdO0VIkWtCg-- X-Yahoo-SMTP: .su40JeswBCx1na_650V4RX6HMvZzgG9fR4- Received: from [172.16.1.15] (peterakimball@68.236.177.120 with plain) by smtp102.mail.bf1.yahoo.com with SMTP; 21 Nov 2011 12:46:05 -0800 PST Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Apple Message framework v1244.3) X-ASG-Orig-Subj: Re: inode64 readiness testing Subject: Re: inode64 readiness testing From: Peter Kimball In-Reply-To: <20111120191050.GB11957@infradead.org> Date: Mon, 21 Nov 2011 15:46:04 -0500 Content-Transfer-Encoding: quoted-printable Message-Id: References: <501A7AEB-6708-4181-AAE2-D145DC23B938@yahoo.com> <20111120191050.GB11957@infradead.org> To: xfs@oss.sgi.com X-Mailer: Apple Mail (2.1244.3) X-Barracuda-Connect: nm24.bullet.mail.bf1.yahoo.com[98.139.212.183] X-Barracuda-Start-Time: 1321908366 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0119 1.0000 -1.9432 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.94 X-Barracuda-Spam-Status: No, SCORE=-1.94 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80906 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Nov 20, 2011, at 2:10 PM, Christoph Hellwig wrote: > On Fri, Nov 18, 2011 at 12:33:16PM -0500, Peter Kimball wrote: >> I created a blank 1GB disk image, created an XFS filesystem on that = image, and mounted it on a loopback device using the ino64 flag. =20 >>=20 >> I wrote a bunch of data to the filesystem (lots of small files), = approximately 600MB. >>=20 >> At this point, I think I have a filesystem in which inodes use 64-bit = addresses, even if the actual address value would fit in 32 bits. I = would expect any program that can't handle 64-bit addresses to barf when = trying to access any data on the filesystem. >=20 > You will never not see 64-bit inodes on a filesystem that small ever. > Try to create a (sparse) 10TB loop image, and create some deep > directories in it. This should create some larger inodes number for > you if you had it mounted with the inode64 flag. You can verify that > by checking that the inode number returned from the stat systsem call > or from ls -i is larger than 32 bits. >=20 Thank you for that guide, Christoph. I followed your directions and the = directory tree I created included some >32-bit inode numbers so I was = able to successfully test all of our NFS clients. =46rom what I'd read, I thought that the ino64 mount option would do the = work for me (bring 32-bit inode numbers into 64-bit range), apparently = that is not the case. This method worked great, hopefully the next = person to search can find this happy thread. Many thanks, Peter= From arekm@maven.pl Mon Nov 21 14:50:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,MIME_8BIT_HEADER autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALKoF9t020535 for ; Mon, 21 Nov 2011 14:50:16 -0600 X-ASG-Debug-ID: 1321908614-6a7a00360000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp-relay.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BDD9A162C3E4 for ; Mon, 21 Nov 2011 12:50:14 -0800 (PST) Received: from smtp-relay.maven.pl (smtp-relay.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id qMFiqjEkHK9Vn288 for ; Mon, 21 Nov 2011 12:50:14 -0800 (PST) Received: from 89-69-21-174.dynamic.chello.pl ([89.69.21.174]:34305 helo=tarm.maven.pl) by smtp-relay.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.76) (envelope-from ) id 1RSaoe-0007Io-0Y; Mon, 21 Nov 2011 21:50:12 +0100 Received: from arekm by tarm.maven.pl with local (Exim 4.77) (envelope-from ) id 1RSao8-0001o6-1e; Mon, 21 Nov 2011 21:49:40 +0100 From: =?UTF-8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= To: xfs@oss.sgi.com Cc: =?UTF-8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= X-ASG-Orig-Subj: [PATCH] xfs_repair is recommended over xfs_check. Subject: [PATCH] xfs_repair is recommended over xfs_check. Date: Mon, 21 Nov 2011 21:49:37 +0100 Message-Id: <1321908577-6908-1-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.7.7.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: smtp-relay.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1321908614 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0091 1.0000 -1.9619 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.96 X-Barracuda-Spam-Status: No, SCORE=-1.96 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80907 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I see "use xfs_repair instead of xfs_check" hint on xfs@irc, mailing lists and other places but the first source of information (xfs_check man page) doesn't mention this. Improve that. Signed-off-by: Arkadiusz MiÅ›kiewicz --- man/man8/xfs_check.8 | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/man/man8/xfs_check.8 b/man/man8/xfs_check.8 index 33c3894..620d0fc 100644 --- a/man/man8/xfs_check.8 +++ b/man/man8/xfs_check.8 @@ -34,6 +34,12 @@ flag. The filesystem should normally be unmounted or read-only during the execution of .BR xfs_check . Otherwise, spurious problems are reported. +.PP +Note that using +.B xfs_check +is NOT recommended. Please use +.BR xfs_repair " " \-n +instead, for better scalability and speed. .SH OPTIONS .TP -- 1.7.7.3 From eflorac@intellique.com Mon Nov 21 15:52:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALLqtiC023340 for ; Mon, 21 Nov 2011 15:52:55 -0600 X-ASG-Debug-ID: 1321912370-6a7900cd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp3-g21.free.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6427B162C5D1 for ; Mon, 21 Nov 2011 13:52:51 -0800 (PST) Received: from smtp3-g21.free.fr (smtp3-g21.free.fr [212.27.42.3]) by cuda.sgi.com with ESMTP id H3VH04oeRCp8aag2 for ; Mon, 21 Nov 2011 13:52:51 -0800 (PST) Received: from galadriel.home (unknown [82.235.234.79]) by smtp3-g21.free.fr (Postfix) with ESMTP id F3A9FA628E; Mon, 21 Nov 2011 22:52:45 +0100 (CET) Date: Mon, 21 Nov 2011 22:52:39 +0100 From: Emmanuel Florac To: Gregory Farnum Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: EFSCORRUPTED on mount? Subject: Re: EFSCORRUPTED on mount? Message-ID: <20111121225239.12769adb@galadriel.home> In-Reply-To: References: Organization: Intellique X-Mailer: Claws Mail 3.7.8 (GTK+ 2.20.1; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: smtp3-g21.free.fr[212.27.42.3] X-Barracuda-Start-Time: 1321912374 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80911 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Le Mon, 21 Nov 2011 10:06:20 -0800 vous =C3=A9criviez: > Is there something useful I can do about this? Data I can provide to > help track down what broke? xfs_check is mostly useless nowadays, use "xfs_repair -n" instead. At this stage, there's probably not much you can do but an "xfs_repair -L" to zero the log. Hope for the better. In my opinion some service using the filesystem (ceph?) got stuck at reboot and prevented proper unmounting of the fs. Or maybe was tehre some IO error; you could check your logs for this too. --=20 ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From richard@sauce.co.nz Mon Nov 21 15:53:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_05 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALLrLHV023369 for ; Mon, 21 Nov 2011 15:53:22 -0600 X-ASG-Debug-ID: 1321912398-7ccf009e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp.sauce.co.nz (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B85E0162C41B for ; Mon, 21 Nov 2011 13:53:19 -0800 (PST) Received: from smtp.sauce.co.nz (smtp.sauce.co.nz [210.48.49.72]) by cuda.sgi.com with ESMTP id EiTlRO0Tv6PilRIF for ; Mon, 21 Nov 2011 13:53:19 -0800 (PST) Received: (qmail 27150 invoked from network); 21 Nov 2011 21:53:16 -0000 Received: from soot.sauce.co.nz (192.168.4.182) by smtp.sauce.co.nz with SMTP; 21 Nov 2011 21:53:16 -0000 Message-ID: <4ECAC84C.1070000@sauce.co.nz> Date: Tue, 22 Nov 2011 10:53:16 +1300 From: Richard Scobie User-Agent: Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20110928 Firefox/7.0.1 SeaMonkey/2.4.1 MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs_repair is recommended over xfs_check. Subject: Re: [PATCH] xfs_repair is recommended over xfs_check. Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: smtp.sauce.co.nz[210.48.49.72] X-Barracuda-Start-Time: 1321912399 X-Barracuda-Bayes: INNOCENT GLOBAL 0.7276 1.0000 1.5854 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.59 X-Barracuda-Spam-Status: No, SCORE=1.59 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80911 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Is there currently now any situation where xfs_check would be used in preference to xfs_repair? If not, perhaps xfs_check could be deprecated. Regards, Richard From bpm@sgi.com Mon Nov 21 16:13:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALMDL0a024049 for ; Mon, 21 Nov 2011 16:13:21 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6F6458F8035; Mon, 21 Nov 2011 14:13:18 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 84D90431F74; Mon, 21 Nov 2011 16:13:39 -0600 (CST) Date: Mon, 21 Nov 2011 16:13:39 -0600 From: Ben Myers To: Gregory Farnum Cc: xfs@oss.sgi.com Subject: Re: EFSCORRUPTED on mount? Message-ID: <20111121221339.GP29840@sgi.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Greg, On Mon, Nov 21, 2011 at 10:06:20AM -0800, Gregory Farnum wrote: > Is there something useful I can do about this? Data I can provide to > help track down what broke? It might be useful if you can provide an xfs_metadump of the filesystem. xfs_metadump /dev/foo - | bzip2 > /tmp/foo.bz2 Thanks, Ben From arekm@maven.pl Mon Nov 21 16:38:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,MIME_8BIT_HEADER, T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALMbxa6025213 for ; Mon, 21 Nov 2011 16:38:00 -0600 X-ASG-Debug-ID: 1321915074-0592015a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5A25C268A44 for ; Mon, 21 Nov 2011 14:37:55 -0800 (PST) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id uPW1XTt3SyA0y6tQ for ; Mon, 21 Nov 2011 14:37:55 -0800 (PST) Received: by bkaq10 with SMTP id q10so7900083bka.26 for ; Mon, 21 Nov 2011 14:37:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=maven.pl; s=maven; h=from:to:subject:date:user-agent:cc:references:in-reply-to :mime-version:content-type:content-transfer-encoding:message-id; bh=gRRARIBfSJwtbqYeSwgd1CuUYNn95FdaCQn5/JGr9Dk=; b=N+dBE/VGj0UQNGD1wqMdn/geI6fhDEW6U0R7GcXYfkpgqIikBSTLZLHnswdBvDTg6R Wv4cG6So2DEjNytN7U5FuuZD8xrL/YUBHQZbEsB5m/Af5hnKpkEROnoi66nufTEO0xTt jAdfFXkT9YIhVfvdqLiV8CC+qwWG6xtA72oGg= Received: by 10.205.120.20 with SMTP id fw20mr16657445bkc.39.1321915074338; Mon, 21 Nov 2011 14:37:54 -0800 (PST) Received: from t400.localnet (89-69-21-174.dynamic.chello.pl. [89.69.21.174]) by mx.google.com with ESMTPS id w11sm16886276fad.7.2011.11.21.14.37.53 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 21 Nov 2011 14:37:53 -0800 (PST) From: Arkadiusz =?utf-8?q?Mi=C5=9Bkiewicz?= To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs_repair is recommended over xfs_check. Subject: Re: [PATCH] xfs_repair is recommended over xfs_check. Date: Mon, 21 Nov 2011 23:37:52 +0100 User-Agent: KMail/1.13.7 (Linux/3.2.0-rc2-00132-gc5e0c78; KDE/4.7.3; x86_64; ; ) Cc: Richard Scobie References: <4ECAC84C.1070000@sauce.co.nz> In-Reply-To: <4ECAC84C.1070000@sauce.co.nz> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <201111212337.52178.arekm@maven.pl> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1321915078 X-Barracuda-Bayes: INNOCENT GLOBAL 0.3121 1.0000 -0.2976 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.30 X-Barracuda-Spam-Status: No, SCORE=-0.30 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80914 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Monday 21 of November 2011, Richard Scobie wrote: > Is there currently now any situation where xfs_check would be used in > preference to xfs_repair? >=20 > If not, perhaps xfs_check could be deprecated. There was a such idea but: 21:25 < sandeen_> well, it has a lot of use in xfstests, so it's nice to ha= ve=20 built & around, I think. =2D-=20 Arkadiusz Mi=C5=9Bkiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From sekharan@us.ibm.com Mon Nov 21 17:02:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALN2vfO026212 for ; Mon, 21 Nov 2011 17:02:57 -0600 X-ASG-Debug-ID: 1321916576-058c01d10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e33.co.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A3CAF2690F4 for ; Mon, 21 Nov 2011 15:02:56 -0800 (PST) Received: from e33.co.us.ibm.com (e33.co.us.ibm.com [32.97.110.151]) by cuda.sgi.com with ESMTP id fiE3QiMtxlQ9wkxh for ; Mon, 21 Nov 2011 15:02:56 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from /spool/local by e33.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 21 Nov 2011 16:02:53 -0700 Received: from d03relay01.boulder.ibm.com ([9.17.195.226]) by e33.co.us.ibm.com ([192.168.1.133]) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Mon, 21 Nov 2011 16:02:11 -0700 Received: from d03av03.boulder.ibm.com (d03av03.boulder.ibm.com [9.17.195.169]) by d03relay01.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id pALN1wqj104436 for ; Mon, 21 Nov 2011 16:01:59 -0700 Received: from d03av03.boulder.ibm.com (loopback [127.0.0.1]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id pALN1tg8024924 for ; Mon, 21 Nov 2011 16:01:57 -0700 Received: from [9.53.40.164] (chandra-lucid.austin.ibm.com [9.53.40.164]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id pALN1sfj024843; Mon, 21 Nov 2011 16:01:54 -0700 X-ASG-Orig-Subj: Re: [PATCH] xfs: Remove the entries from the queue while waking them up. Subject: Re: [PATCH] xfs: Remove the entries from the queue while waking them up. From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Dave Chinner Cc: XFS Mailing List In-Reply-To: <20111119011450.GL7046@dastard> References: <1321644054.2201.80.camel@chandra-lucid.austin.ibm.com> <20111119011450.GL7046@dastard> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Mon, 21 Nov 2011 17:01:52 -0600 Message-ID: <1321916512.7115.4.camel@chandra-lucid.austin.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit x-cbid: 11112123-2398-0000-0000-00000222E1F5 X-Barracuda-Connect: e33.co.us.ibm.com[32.97.110.151] X-Barracuda-Start-Time: 1321916576 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Dave, Thanks for the review and comments. On Sat, 2011-11-19 at 12:14 +1100, Dave Chinner wrote: > On Fri, Nov 18, 2011 at 01:20:54PM -0600, Chandra Seetharaman wrote: > > l_reserveq and l_writeq maintains a list of processes waiting to get log > > space. Processes are supposed to get in the list when the amount of free > > space available in the log is less than what they need. > > > > When space becomes available current code, wakes up the processes, but > > expect the processes to remove themselves from the queue. > > > > Since the lock protecting the list is only acquired later by the woken > > up process, there is a window of time were a new process that is looking > > for space can wrongly get into the queue while there is enough space > > available. > > > > Since there is enough space available, this process can never be woken > > up, which leads to the hang of the process. > > Excellent work, Chandra. Thanks Dave. Made all the changes (except one as noted below). Testing the new code and will sent it soon. : : : > > @@ -2550,8 +2552,7 @@ redo: > > free_bytes = xlog_space_left(log, &log->l_grant_reserve_head); > > if (free_bytes < need_bytes) { > > spin_lock(&log->l_grant_reserve_lock); > > - if (list_empty(&tic->t_queue)) > > - list_add_tail(&tic->t_queue, &log->l_reserveq); > > + list_add_tail(&tic->t_queue, &log->l_reserveq); > > > > trace_xfs_log_grant_sleep2(log, tic); > > > > Ok, we now have the assumption that when we enter this code the > ticket is not on any queue at all. Can you add an > "ASSERT(list_empty(&tic->t_queue));" to the code before the above > xlog_space_left() call? That way we'll know if we violate that > assumption as potentially corrupt memory.... As Christoph pointed, we might have been woken up by some system event. So, I changed the code a bit around here. Please comment on the new code. From sekharan@us.ibm.com Mon Nov 21 17:41:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pALNfgtD027247 for ; Mon, 21 Nov 2011 17:41:42 -0600 X-ASG-Debug-ID: 1321918901-0af800420000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e8.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C0D4F26A6F6 for ; Mon, 21 Nov 2011 15:41:41 -0800 (PST) Received: from e8.ny.us.ibm.com (e8.ny.us.ibm.com [32.97.182.138]) by cuda.sgi.com with ESMTP id k3ISNvDrt5RHwpIi for ; Mon, 21 Nov 2011 15:41:41 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from /spool/local by e8.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 21 Nov 2011 18:41:40 -0500 Received: from d01relay04.pok.ibm.com ([9.56.227.236]) by e8.ny.us.ibm.com ([192.168.1.108]) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Mon, 21 Nov 2011 18:41:23 -0500 Received: from d03av03.boulder.ibm.com (d03av03.boulder.ibm.com [9.17.195.169]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id pALNfMG1338964 for ; Mon, 21 Nov 2011 18:41:22 -0500 Received: from d03av03.boulder.ibm.com (loopback [127.0.0.1]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id pALNfL7J007595 for ; Mon, 21 Nov 2011 16:41:21 -0700 Received: from [9.53.40.164] (chandra-lucid.austin.ibm.com [9.53.40.164]) by d03av03.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id pALNfL6F007578 for ; Mon, 21 Nov 2011 16:41:21 -0700 X-ASG-Orig-Subj: [PATCH v2] xfs: Remove the entries from the queue while waking them up Subject: [PATCH v2] xfs: Remove the entries from the queue while waking them up From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: XFS Mailing List Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Mon, 21 Nov 2011 17:41:20 -0600 Message-ID: <1321918880.7115.5.camel@chandra-lucid.austin.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit x-cbid: 11112123-9360-0000-0000-000000D4EFFF X-Barracuda-Connect: e8.ny.us.ibm.com[32.97.182.138] X-Barracuda-Start-Time: 1321918901 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Changes from Verion 1: - Added additional comments as per Dave's suggestion - Use next instead of tmp - change typedef xlog_ticket_t to struct xlog_ticket - Check t_queue before adding it to the list (the second time) to accomodate system events (based on Christoph's comments) ------------------------------ l_reserveq and l_writeq maintains a list of processes waiting to get log space. Processes are supposed to get in the list when the amount of free space available in the log is less than what they need. When space becomes available current code, wakes up the processes, but expect the processes to remove themselves from the queue. Since the lock protecting the list is only acquired later by the woken up process, there is a window of time were a new process that is looking for space can wrongly get into the queue while there is enough space available. Since there is enough space available, this process can never be woken up, which leads to the hang of the process. This was originally reported by Alex Elder as hang seen in xfstests #234. With log of log activities, this problem may not be seen, as some process will be pushing the processes along. But, 234 does lot of quota operations only, hence the problem was noticed in that test. This patch fixes the problem by removing the element from the queue (safely) when the process was woken up. Reported-by: Alex elder Signed-Off-by: Chandra Seethraman --- fs/xfs/xfs_log.c | 99 +++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 69 insertions(+), 30 deletions(-) diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c index a14cd89..08dc3d8 100644 --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c @@ -674,7 +674,7 @@ void xfs_log_move_tail(xfs_mount_t *mp, xfs_lsn_t tail_lsn) { - xlog_ticket_t *tic; + struct xlog_ticket *tic, *next; xlog_t *log = mp->m_log; int need_bytes, free_bytes; @@ -695,7 +695,7 @@ xfs_log_move_tail(xfs_mount_t *mp, #endif spin_lock(&log->l_grant_write_lock); free_bytes = xlog_space_left(log, &log->l_grant_write_head); - list_for_each_entry(tic, &log->l_writeq, t_queue) { + list_for_each_entry_safe(tic, next, &log->l_writeq, t_queue) { ASSERT(tic->t_flags & XLOG_TIC_PERM_RESERV); if (free_bytes < tic->t_unit_res && tail_lsn != 1) @@ -703,6 +703,14 @@ xfs_log_move_tail(xfs_mount_t *mp, tail_lsn = 0; free_bytes -= tic->t_unit_res; trace_xfs_log_regrant_write_wake_up(log, tic); + + /* + * Remove the ticket from the queue before waking up + * the sleeper, as letting the sleeper remove the ticket + * from the queue leads to race followed by a hang in + * certain situations. + */ + list_del_init(&tic->t_queue); wake_up(&tic->t_wait); } spin_unlock(&log->l_grant_write_lock); @@ -715,7 +723,7 @@ xfs_log_move_tail(xfs_mount_t *mp, #endif spin_lock(&log->l_grant_reserve_lock); free_bytes = xlog_space_left(log, &log->l_grant_reserve_head); - list_for_each_entry(tic, &log->l_reserveq, t_queue) { + list_for_each_entry_safe(tic, next, &log->l_reserveq, t_queue) { if (tic->t_flags & XLOG_TIC_PERM_RESERV) need_bytes = tic->t_unit_res*tic->t_cnt; else @@ -725,6 +733,14 @@ xfs_log_move_tail(xfs_mount_t *mp, tail_lsn = 0; free_bytes -= need_bytes; trace_xfs_log_grant_wake_up(log, tic); + + /* + * Remove the ticket from the queue before waking up + * the sleeper, as letting the sleeper remove the ticket + * from the queue leads to race followed by a hang in + * certain situations. + */ + list_del_init(&tic->t_queue); wake_up(&tic->t_wait); } spin_unlock(&log->l_grant_reserve_lock); @@ -2550,7 +2566,14 @@ redo: free_bytes = xlog_space_left(log, &log->l_grant_reserve_head); if (free_bytes < need_bytes) { spin_lock(&log->l_grant_reserve_lock); - if (list_empty(&tic->t_queue)) + + /* + * Ideally the ticket must have been removed from the + * queue by the waker. This test is just to cover the + * unlikely case of the wake up due to some other system + * events. + */ + if (likely(list_empty(&tic->t_queue))) list_add_tail(&tic->t_queue, &log->l_reserveq); trace_xfs_log_grant_sleep2(log, tic); @@ -2567,12 +2590,6 @@ redo: goto redo; } - if (!list_empty(&tic->t_queue)) { - spin_lock(&log->l_grant_reserve_lock); - list_del_init(&tic->t_queue); - spin_unlock(&log->l_grant_reserve_lock); - } - /* we've got enough space */ xlog_grant_add_space(log, &log->l_grant_reserve_head, need_bytes); xlog_grant_add_space(log, &log->l_grant_write_head, need_bytes); @@ -2626,30 +2643,35 @@ xlog_regrant_write_log_space(xlog_t *log, goto error_return_unlocked; /* If there are other waiters on the queue then give them a - * chance at logspace before us. Wake up the first waiters, - * if we do not wake up all the waiters then go to sleep waiting - * for more free space, otherwise try to get some space for - * this transaction. + * chance at logspace before us. If we do not wake up all + * the waiters then go to sleep waiting for more free space, + * otherwise try to get some space for this transaction. */ need_bytes = tic->t_unit_res; if (!list_empty_careful(&log->l_writeq)) { - struct xlog_ticket *ntic; + struct xlog_ticket *ntic, *next; spin_lock(&log->l_grant_write_lock); free_bytes = xlog_space_left(log, &log->l_grant_write_head); - list_for_each_entry(ntic, &log->l_writeq, t_queue) { + list_for_each_entry_safe(ntic, next, &log->l_writeq, t_queue) { ASSERT(ntic->t_flags & XLOG_TIC_PERM_RESERV); if (free_bytes < ntic->t_unit_res) break; free_bytes -= ntic->t_unit_res; + + /* + * Remove the ticket from the queue before waking up + * the sleeper, as letting the sleeper remove the ticket + * from the queue leads to race followed by a hang in + * certain situations. + */ + list_del_init(&ntic->t_queue); wake_up(&ntic->t_wait); } - if (ntic != list_first_entry(&log->l_writeq, - struct xlog_ticket, t_queue)) { - if (list_empty(&tic->t_queue)) - list_add_tail(&tic->t_queue, &log->l_writeq); + if (!list_empty(&log->l_writeq)) { + list_add_tail(&tic->t_queue, &log->l_writeq); trace_xfs_log_regrant_write_sleep1(log, tic); xlog_grant_push_ail(log, need_bytes); @@ -2668,7 +2690,14 @@ redo: free_bytes = xlog_space_left(log, &log->l_grant_write_head); if (free_bytes < need_bytes) { spin_lock(&log->l_grant_write_lock); - if (list_empty(&tic->t_queue)) + + /* + * Ideally the ticket must have been removed from the + * queue by the waker. This test is just to cover the + * unlikely case of the wake up due to some other system + * events. + */ + if (likely(list_empty(&tic->t_queue))) list_add_tail(&tic->t_queue, &log->l_writeq); if (XLOG_FORCED_SHUTDOWN(log)) @@ -2684,12 +2713,6 @@ redo: goto redo; } - if (!list_empty(&tic->t_queue)) { - spin_lock(&log->l_grant_write_lock); - list_del_init(&tic->t_queue); - spin_unlock(&log->l_grant_write_lock); - } - /* we've got enough space */ xlog_grant_add_space(log, &log->l_grant_write_head, need_bytes); trace_xfs_log_regrant_write_exit(log, tic); @@ -3621,7 +3644,7 @@ xfs_log_force_umount( struct xfs_mount *mp, int logerror) { - xlog_ticket_t *tic; + struct xlog_ticket *tic, *next; xlog_t *log; int retval; @@ -3690,13 +3713,29 @@ xfs_log_force_umount( * action is protected by the grant locks. */ spin_lock(&log->l_grant_reserve_lock); - list_for_each_entry(tic, &log->l_reserveq, t_queue) + list_for_each_entry_safe(tic, next, &log->l_reserveq, t_queue) { + /* + * Remove the ticket from the queue before waking up + * the sleeper, as letting the sleeper remove the ticket + * from the queue leads to race followed by a hang in + * certain situations. + */ + list_del_init(&tic->t_queue); wake_up(&tic->t_wait); + } spin_unlock(&log->l_grant_reserve_lock); spin_lock(&log->l_grant_write_lock); - list_for_each_entry(tic, &log->l_writeq, t_queue) + list_for_each_entry_safe(tic, next, &log->l_writeq, t_queue) { + /* + * Remove the ticket from the queue before waking up + * the sleeper, as letting the sleeper remove the ticket + * from the queue leads to race followed by a hang in + * certain situations. + */ + list_del_init(&tic->t_queue); wake_up(&tic->t_wait); + } spin_unlock(&log->l_grant_write_lock); if (!(log->l_iclog->ic_state & XLOG_STATE_IOERROR)) { -- 1.7.1 From david@fromorbit.com Mon Nov 21 18:17:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM0H3qO028055 for ; Mon, 21 Nov 2011 18:17:03 -0600 X-ASG-Debug-ID: 1321921020-7ad703080000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 172CD1D218B8 for ; Mon, 21 Nov 2011 16:17:00 -0800 (PST) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id tyBeVQFB1hpoNkP2 for ; Mon, 21 Nov 2011 16:17:00 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EADrmyk55LGY5/2dsb2JhbABDqkCBBoFyAQEFOhwjEAgDDgouFCUDIRO8XBKKBQSUOpIa Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail04.adl6.internode.on.net with ESMTP; 22 Nov 2011 10:46:59 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RSe2j-0001FZ-7D; Tue, 22 Nov 2011 11:16:57 +1100 Date: Tue, 22 Nov 2011 11:16:57 +1100 From: Dave Chinner To: Ben Myers Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [ANNOUNCE] xfsprogs v3.1.7 Subject: Re: [ANNOUNCE] xfsprogs v3.1.7 Message-ID: <20111122001657.GG2386@dastard> References: <20111117233139.GL29840@sgi.com> <20111119175102.GA3334@infradead.org> <20111121154040.GU749@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111121154040.GU749@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1321921022 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0160 1.0000 -1.9166 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80920 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 21, 2011 at 09:40:40AM -0600, Ben Myers wrote: > Hey Christoph, > > On Sat, Nov 19, 2011 at 12:51:02PM -0500, Christoph Hellwig wrote: > > On Thu, Nov 17, 2011 at 05:31:39PM -0600, Ben Myers wrote: > > > Version 3.1.7 of xfsprogs has been released. > > > > Can we please avoid totally uncoordinated and rushed release in > > the future? > > That sounds like a good idea. Do you have a date in mind? Lets get it > on the calendar. "When it is ready" is the normal date. We don't really do things based on a box on a calendar round here. ;) Indeed, before the next release we really need to do another kernel/userspace resync - userspace is at 2.6.38, and it needs to be brought up to sync so we don't get into the same problem of the last resync where it took weeks to do and test.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From pengxihan@gmail.com Mon Nov 21 18:19:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,FREEMAIL_FROM, J_CHICKENPOX_43,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM0JItf028099 for ; Mon, 21 Nov 2011 18:19:18 -0600 X-ASG-Debug-ID: 1321921156-556403cb0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-gx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 062681C0C60B for ; Mon, 21 Nov 2011 16:19:16 -0800 (PST) Received: from mail-gx0-f181.google.com (mail-gx0-f181.google.com [209.85.161.181]) by cuda.sgi.com with ESMTP id eBsDtkLlX5E26uuq for ; Mon, 21 Nov 2011 16:19:16 -0800 (PST) Received: by ggnv2 with SMTP id v2so7026970ggn.26 for ; Mon, 21 Nov 2011 16:19:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=BlmyvsKMXCPKHmzYgV8P0j+jzm0CK/eO/38Pe7PYGzE=; b=WhonFPf6t73hargdHyh00XPPJTg4sdpkll6CkUXemkoZ7jMg0ptE8VJTSj7BNfbR1L /I9wDnKI6g5HWXcUyzRfVZTEzuk35/b2VqP6OOQu3iitAdT8PHQQhduSRWeC6tMlamBk wwND+Ej+lgSEbcKrxgsIhqM+t1jgaZatbOL6w= MIME-Version: 1.0 Received: by 10.50.94.229 with SMTP id df5mr16761106igb.27.1321921155661; Mon, 21 Nov 2011 16:19:15 -0800 (PST) Received: by 10.50.209.65 with HTTP; Mon, 21 Nov 2011 16:19:15 -0800 (PST) In-Reply-To: <20111121170459.GA1327@infradead.org> References: <20111121170459.GA1327@infradead.org> Date: Tue, 22 Nov 2011 08:19:15 +0800 Message-ID: X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 From: hank peng To: Christoph Hellwig Cc: linux-xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-gx0-f181.google.com[209.85.161.181] X-Barracuda-Start-Time: 1321921157 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80920 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.10 BSF_SC0_SA085 Custom Rule SA085 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 2011/11/22 Christoph Hellwig : > On Mon, Nov 21, 2011 at 09:00:57PM +0800, hank peng wrote: >> Hi: >> I have a 4TB XFS filesystem mounted with "inode64" option, and I >> exported it using NFS v3, on NFS client, I entered a subdirectory and >> got "stale NFS file handle" error. >> ls -il showed that its inode number exceed 32 bit limit. >> NFS server: kernel version is 2.6.35.6 >> NFS client: kernel version is 2.6.18 > > Do you export the root directory of the XFS filesystem, or a > subdirectory in it? =C2=A0If it's the former it should work in theory, > althrough I'm not sure how well 64-bit inode numbers work with a client > that old, if it's the latter it needs a few tweaks to work, see > The following is what I did: 1. mkfs.xfs /dev/sdb (whole disk) 2. create a mount point in my root filesystem: mkdir /mnt/mymount 3. monut xfs with inode64 mount /dev/sdb /mnt/mymount -o inode64 4. export it in NFS /etc/exports /mnt/mymount *(rw, no_root,squash, sync) so, is there any problem here? > =C2=A0 =C2=A0 =C2=A0 =C2=A0http://xfs.org/index.php/XFS_FAQ#Q:_Why_doesn.= 27t_NFS-exporting_subdirectories_of_inode64-mounted_filesystem_work.3F > > for details. > --=20 The simplest is not all best but the best is surely the simplest! From david@fromorbit.com Mon Nov 21 18:19:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM0Jjps028121 for ; Mon, 21 Nov 2011 18:19:45 -0600 X-ASG-Debug-ID: 1321921182-794400ad0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DCCE41278E80 for ; Mon, 21 Nov 2011 16:19:42 -0800 (PST) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id PHMAGCHYtKo9YHFu for ; Mon, 21 Nov 2011 16:19:42 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAL7pyk55LGY5/2dsb2JhbABDqkCBBoFyAQEFOhwjEAgDGBkCExQlAyETvGEShwECgwIElDqSGg Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail04.adl6.internode.on.net with ESMTP; 22 Nov 2011 10:49:41 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RSe5M-0001Fy-PN; Tue, 22 Nov 2011 11:19:40 +1100 Date: Tue, 22 Nov 2011 11:19:40 +1100 From: Dave Chinner To: Peter Kimball Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: inode64 readiness testing Subject: Re: inode64 readiness testing Message-ID: <20111122001940.GH2386@dastard> References: <501A7AEB-6708-4181-AAE2-D145DC23B938@yahoo.com> <20111120191050.GB11957@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1321921184 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0200 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80921 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 21, 2011 at 03:46:04PM -0500, Peter Kimball wrote: > > On Nov 20, 2011, at 2:10 PM, Christoph Hellwig wrote: > > > On Fri, Nov 18, 2011 at 12:33:16PM -0500, Peter Kimball wrote: > >> I created a blank 1GB disk image, created an XFS filesystem on > >> that image, and mounted it on a loopback device using the ino64 > >> flag. > >> > >> I wrote a bunch of data to the filesystem (lots of small > >> files), approximately 600MB. > >> > >> At this point, I think I have a filesystem in which inodes use > >> 64-bit addresses, even if the actual address value would fit in > >> 32 bits. I would expect any program that can't handle 64-bit > >> addresses to barf when trying to access any data on the > >> filesystem. > > > > You will never not see 64-bit inodes on a filesystem that small > > ever. Try to create a (sparse) 10TB loop image, and create some > > deep directories in it. This should create some larger inodes > > number for you if you had it mounted with the inode64 flag. You > > can verify that by checking that the inode number returned from > > the stat systsem call or from ls -i is larger than 32 bits. > > > > Thank you for that guide, Christoph. I followed your directions > and the directory tree I created included some >32-bit inode > numbers so I was able to successfully test all of our NFS clients. > > From what I'd read, I thought that the ino64 mount option would do > the work for me (bring 32-bit inode numbers into 64-bit range), > apparently that is not the case. This method worked great, > hopefully the next person to search can find this happy thread. The ino64 mount option does not exist any more - it got removed quite some time ago as it was debug-only code that nobody ever tested or verified did the right thing... Cheers, Dave. -- Dave Chinner david@fromorbit.com From gregory.farnum@dreamhost.com Mon Nov 21 18:21:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM0LWCp028155 for ; Mon, 21 Nov 2011 18:21:33 -0600 X-ASG-Debug-ID: 1321921291-0afd00a50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-iy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A7EC4269235 for ; Mon, 21 Nov 2011 16:21:31 -0800 (PST) Received: from mail-iy0-f181.google.com (mail-iy0-f181.google.com [209.85.210.181]) by cuda.sgi.com with ESMTP id YlSXOQGKEyXzDuzi for ; Mon, 21 Nov 2011 16:21:31 -0800 (PST) Received: by iaen33 with SMTP id n33so9311756iae.26 for ; Mon, 21 Nov 2011 16:21:31 -0800 (PST) MIME-Version: 1.0 Received: by 10.42.159.72 with SMTP id k8mr14224660icx.14.1321921290992; Mon, 21 Nov 2011 16:21:30 -0800 (PST) Received: by 10.231.37.73 with HTTP; Mon, 21 Nov 2011 16:21:30 -0800 (PST) In-Reply-To: References: Date: Mon, 21 Nov 2011 16:21:30 -0800 Message-ID: X-ASG-Orig-Subj: Re: EFSCORRUPTED on mount? Subject: Re: EFSCORRUPTED on mount? From: Gregory Farnum To: xfs@oss.sgi.com Cc: eflorac@intellique.com, bpm@sgi.com Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-iy0-f181.google.com[209.85.210.181] X-Barracuda-Start-Time: 1321921291 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80922 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I lied a little bit =97 turns out an admin restarted the node with reboot -fn. But I've been assured this shouldn't have been able to corrupt the filesystem, so troubleshooting continues. On Mon, Nov 21, 2011 at 2:13 PM, Ben Myers wrote: > Hey Greg, > > It might be useful if you can provide an xfs_metadump of the filesystem. > > xfs_metadump /dev/foo - | bzip2 > /tmp/foo.bz2 Sure. I posted it at ceph.newdream.net/sdg1.bz2 Thanks! On Mon, Nov 21, 2011 at 1:52 PM, Emmanuel Florac w= rote: > xfs_check is mostly useless nowadays, use "xfs_repair -n" instead. At > this stage, there's probably not much you can do but an "xfs_repair -L" > to zero the log. Hope for the better. oot@cephstore6358:~# xfs_repair -n /dev/sdg1 Phase 1 - find and verify superblock... Phase 2 - using internal log - scan filesystem freespace and inode maps... block (1,7800040-7800040) multiply claimed by cnt space tree, state - 2 agf_freeblks 80672443, counted 80672410 in ag 1 sb_icount 64, counted 251840 sb_ifree 61, counted 66 sb_fdblocks 462898325, counted 358494731 - found root inode chunk Phase 3 - for each AG... - scan (but don't clear) agi unlinked lists... - process known inodes and perform inode discovery... - agno =3D 0 data fork in ino 9434 claims free block 141395214 data fork in ino 9770 claims free block 142474809 data fork in ino 10212 claims free block 142638961 data fork in ino 11173 claims free block 142644317 data fork in ino 14117 claims free block 142411949 - agno =3D 1 data fork in ino 2147485225 claims free block 142644284 data fork in ino 2147485241 claims free block 142465951 data fork in ino 2147486073 claims free block 142459130 data fork in ino 2147496267 claims free block 142411931 data fork in ino 2147497106 claims free block 142426585 data fork in ino 2147497824 claims free block 141402019 data fork in ino 2147502462 claims free block 142638996 data fork in ino 2150562849 claims free block 141404091 data fork in ino 2150562852 claims free block 141397795 data fork in ino 2150564343 claims free block 142644220 - agno =3D 2 - agno =3D 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno =3D 0 - agno =3D 2 - agno =3D 1 - agno =3D 3 entry "inc\uosdmap.8818__0_A69FF397" at block 2 offset 2376 in directory inode 2147484449 references free inode 2262318364 would clear inode number in entry at offset 2376... entry "inc\uosdmap.8817__0_A69FF2C7" at block 2 offset 2216 in directory inode 377265 references free inode 2685370 would clear inode number in entry at offset 2216... entry "osdmap.8818__0_0A3E6C28" at block 2 offset 2056 in directory inode 621643 references free inode 2685371 would clear inode number in entry at offset 2056... No modify flag set, skipping phase 5 Phase 6 - check inode connectivity... - traversing filesystem ... entry "inc\uosdmap.8817__0_A69FF2C7" in directory inode 377265 points to free inode 2685370, would junk entry bad hash table for directory inode 377265 (no data entry): would rebuild entry "osdmap.8818__0_0A3E6C28" in directory inode 621643 points to free inode 2685371, would junk entry bad hash table for directory inode 621643 (no data entry): would rebuild bad hash table for directory inode 2147484441 (no leaf entry): would rebuil= d entry "inc\uosdmap.8818__0_A69FF397" in directory inode 2147484449 points to free inode 2262318364, would junk entry leaf block 8388608 for directory inode 2147484449 bad tail - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify link counts... would have reset inode 2685369 nlinks from 1 to 2 would have reset inode 2262318317 nlinks from 1 to 2 No modify flag set, skipping filesystem flush and exiting. root@cephstore6358:~# xfs_repair /dev/sdg1 Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... ERROR: The filesystem has valuable metadata changes in a log which needs to be replayed. Mount the filesystem to replay the log, and unmount it before re-running xfs_repair. If you are unable to mount the filesystem, then use the -L option to destroy the log and attempt a repair. Note that destroying the log may cause corruption -- please attempt a mount of the filesystem before doing this. root@cephstore6358:~# mount /dev/sdg1 /mnt/osd.17 2011 Nov 21 16:18:19 cephstore6358 [ 9989.033072] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1664 of file fs/xfs/xfs_alloc.c. Caller 0xffffffff811d6b71 2011 Nov 21 16:18:19 cephstore6358 [ 9989.033075] 2011 Nov 21 16:18:19 cephstore6358 [ 9989.053128] XFS (sdg1): Internal error xfs_trans_cancel at line 1928 of file fs/xfs/xfs_trans.c. Caller 0xffffffff811fa463 2011 Nov 21 16:18:19 cephstore6358 [ 9989.053130] 2011 Nov 21 16:18:19 cephstore6358 [ 9989.053215] XFS (sdg1): Corruption of in-memory data detected. Shutting down filesystem 2011 Nov 21 16:18:19 cephstore6358 [ 9989.053218] XFS (sdg1): Please umount the filesystem and rectify the problem(s) 2011 Nov 21 16:18:19 cephstore6358 [ 9989.053226] XFS (sdg1): Failed to recover EFIs mount: Structure needs cleaning From david@fromorbit.com Mon Nov 21 18:23:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM0NAVg028367 for ; Mon, 21 Nov 2011 18:23:11 -0600 X-ASG-Debug-ID: 1321921388-794700c10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C12601278EBC for ; Mon, 21 Nov 2011 16:23:09 -0800 (PST) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id JZl3dYSPS5rpXvQa for ; Mon, 21 Nov 2011 16:23:09 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAL7pyk55LGY5/2dsb2JhbABDqkCBBoFyAQEFOhwjEAgDGC4UJQMhE7xhEooFBJQ6iQOJFw Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail04.adl6.internode.on.net with ESMTP; 22 Nov 2011 10:53:08 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RSe8g-0001G8-JU; Tue, 22 Nov 2011 11:23:06 +1100 Date: Tue, 22 Nov 2011 11:23:06 +1100 From: Dave Chinner To: Richard Scobie Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs_repair is recommended over xfs_check. Subject: Re: [PATCH] xfs_repair is recommended over xfs_check. Message-ID: <20111122002306.GI2386@dastard> References: <4ECAC84C.1070000@sauce.co.nz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4ECAC84C.1070000@sauce.co.nz> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1321921389 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4016 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80921 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 22, 2011 at 10:53:16AM +1300, Richard Scobie wrote: > Is there currently now any situation where xfs_check would be used > in preference to xfs_repair? > > If not, perhaps xfs_check could be deprecated. xfs_check is one of the ways we test that xfs_repair is doing the right thing. Having two implementation that you can use to compare results is a good thing..... Cheers, Dave. -- Dave Chinner david@fromorbit.com From support@eyespyclassifieds.com Mon Nov 21 19:17:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.9 required=5.0 tests=BAYES_50,J_CHICKENPOX_74 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM1Hp6L030290 for ; Mon, 21 Nov 2011 19:17:52 -0600 X-ASG-Debug-ID: 1321924668-7cc503080000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from p3nlsmtp03.shr.prod.phx3.secureserver.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 76A1E8ED84E for ; Mon, 21 Nov 2011 17:17:49 -0800 (PST) Received: from p3nlsmtp03.shr.prod.phx3.secureserver.net (p3nlsmtp03.shr.prod.phx3.secureserver.net [72.167.234.227]) by cuda.sgi.com with SMTP id WuaR1jN1wMrLsNp4 for ; Mon, 21 Nov 2011 17:17:49 -0800 (PST) Received: (qmail 3345 invoked from network); 22 Nov 2011 01:17:48 -0000 Received: from unknown (HELO P3NW3SH056.phx3.gdhosting.gdg) ([72.167.232.206]) (envelope-sender ) by p3nlsmtp03.shr.prod.phx3.secureserver.net (qmail-ldap-1.03) with SMTP for ; 22 Nov 2011 01:17:48 -0000 Received: from mail pickup service by P3NW3SH056.phx3.gdhosting.gdg with Microsoft SMTPSVC; Mon, 21 Nov 2011 18:17:47 -0700 From: To: "Friend" X-ASG-Orig-Subj: Get your Guaranteed $8,736 Commissions Direct Paypal!!! Subject: Get your Guaranteed $8,736 Commissions Direct Paypal!!! Date: Mon, 21 Nov 2011 18:17:47 -0700 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4862 Message-ID: X-OriginalArrivalTime: 22 Nov 2011 01:17:47.0802 (UTC) FILETIME=[8BAF8FA0:01CCA8B4] X-Barracuda-Connect: p3nlsmtp03.shr.prod.phx3.secureserver.net[72.167.234.227] X-Barracuda-Start-Time: 1321924669 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4997 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.46 X-Barracuda-Spam-Status: No, SCORE=0.46 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME, PLING_PLING X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80925 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.46 PLING_PLING Subject has lots of exclamation marks X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean PARTIME JOB MONTHLY INCOME TROUGH PAYPAL Hello Friend, Get Larger ClickBank Affiliate Commissions in Just a Few Minutes! "These Message Sets, Just For ClickBank Affiliates, Creates Attentive and Receptive Readers Ready To Click and Buy and Puts Your Marketing On Autotrafficavalanche. In Just a Few Minutes They Are Ready To Generate More Commissions For You Automatically!" OPPORTUNITY TO: Get your Guaranteed $8,736 Commissions Direct Paypal!!! So remember, I’m taking all the risk out of this investment –if you’re not 100% thrilled with Auto Traffic Avalanche, I’ll personally see to it that your money is returned to you – all of it. What's more if you don't get any results with it, I'll also take $100 out of my own wallet and put it in your pocket. There really is nothing to lose here. We've Register New 32 Members Everyday Start Nov- 15-to- 22 -/2011 weekly Cycle. 32 x 7-days =224 total members every week in YOUR TEAM ... IMPORTANT: Nov -22 /2011 is the Cut-Off day to lock in your position then faster you act the higher commission you will earn!!! Go Here To Secure not less than $8,736 commission Now and it still growing as many people joining under you. if you secure your position right away: The $8,736 commission Arrive Through your Paypal or Credit Card on Nov-30/2011 next week.Hurry'this limited time, 3 remaining Positions are available Now. You can access $8,736 Straight To Your Paypal Account when You Are In Position ... If The Link Is Error Copy And Paste Into Your Browser To Get Commission... All It Takes Is 13 Clicks==>> http://oril.biz/2ve Here's Proof Of What A Total Beginner Can Do And Earn $8,736 Every Month.. TYPE DATE & TIME --------- NEW MEMBERS ----------- COUNTRY'S P -- NOV.20 @ 2:38 AM-----Karen----- Brown-------- United States P -- NOV.20 @ 2:53 AM-----Marie------Davis ------- United Kingdom P -- NOV.20 @ 2:56 AM-----Marice --- Bekker------- Germany M -- NOV.20 @ 4:19 AM-----Cristian---Hanes-------- Hungary P -- NOV.20 @ 4:28 AM-----Charol-----Howard------- Italy M -- NOV.20 @ 6:01 AM-----Ailene---- Enrequez----- Australia P -- NOV.20 @ 7:11 AM-----Robert---- Takker------- Canada P -- NOV.20 @ 7:39 AM-----Cris------ Atlas-------- United States P -- NOV.20 @ 9:42 AM-----Tina------ SWasington--- California M -- NOV.20 @ 9:58 PM-----George-----Molloch------ Singapore P -- NOV.20 @ 2:38 AM-----James----- Jordan------- United States P -- NOV.20 @ 2:53 AM-----JOan------ Jackson ----- United Kingdom P -- NOV.20 @ 2:56 AM-----Mandene -- Jecob-------- Germany M -- NOV.20 @ 4:19 AM-----Cristy---- Nores-------- Hungary P -- NOV.20 @ 4:28 AM-----Carlo----- Wonder------- Italy M -- NOV.20 @ 6:01 AM-----lalaine--- Anderson----- Australia P -- NOV.20 @ 7:11 AM-----Rebecca--- Baker-------- Canada P -- NOV.20 @ 7:39 AM-----Jericho--- Morales------ Mexico P -- NOV.20 @ 9:42 AM-----Thomas---- Stephen------ California M -- NOV.20 @ 9:58 PM-----Grace----- Taylor------- Singapore P -- NOV.20 @ 10:21 PM-----Gina------ Henry-------- New Zealand P -- NOV.20 @ 11:24 PM-----Jenefer--- Lopez ------- United States M -- NOV.20 @ 11:33 PM-----Tracia---- Furlong------ Puerto Rico P -- NOV.20 @ 11:41 PM-----Jane------ Mckay-------- Russia P -- NOV.20 @ 9:42 AM-----Steve----- Scott ------- Netherlands M -- NOV.20 @ 9:58 PM-----Greg------ Stanley------ Denmark P -- NOV.20 @ 10:21 PM-----Jack------ Perkins------ Amsterdam P -- NOV.20 @ 11:24 PM-----Arlene---- Ross -------- United States M -- NOV.20 @ 11:33 PM-----Andy------ Hopekins----- New York P -- NOV.20 @ 11:41 PM-----Jhon------ Robinson----- United States M -- NOV.20 @ 2:34 AM --- Kevin----- Hunt -------- Sweden P -- NOV.20 @ 12:34 AM --- Delia----- Scott ------- United States Therefore, you have a GUARANTEED $8,736 CommissionS every 30 of the month !. Earn $39 Per Process!Each $39 x 224 = $8,736 Commission will be yours...! Be Sure to Copy the link below & Paste into your browser and press enter: To Secure your $8,736 commission! If The Link Is Error Copy And Paste Into Your Browser To See Commission... All It Takes Is 13 Clicks==>> http://oril.biz/2ve Just one simple payment of $39. and you could have earn $8,736 Commission,And you recieved on November 30-2011 Directly to Your Paypal or Credit Card. You must UPGRADE right away or before others do.... Caring for Your Success, Michelle Miller This is where you can type a brief description of your site. Email sent by: earncash@gmail.com (Michelle Miller) Powered by Eye Spy Classifieds From david@fromorbit.com Mon Nov 21 19:41:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM1fNg8031187 for ; Mon, 21 Nov 2011 19:41:24 -0600 X-ASG-Debug-ID: 1321926076-7ccb03660000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 632641491EB9 for ; Mon, 21 Nov 2011 17:41:17 -0800 (PST) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id 4K5qVkMJrHGTJhJZ for ; Mon, 21 Nov 2011 17:41:17 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av8EAFL7yk55LGY5/2dsb2JhbABDhQGlP4EGgXIBAQQBIw8BIx4FBQsIAxgCAiYCAhQlAyETiAOiaJIIEoEeh1GBFgSUOpIa Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail04.adl6.internode.on.net with ESMTP; 22 Nov 2011 12:11:16 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RSfMI-0001Pu-Ik; Tue, 22 Nov 2011 12:41:14 +1100 Date: Tue, 22 Nov 2011 12:41:14 +1100 From: Dave Chinner To: Gregory Farnum Cc: xfs@oss.sgi.com, bpm@sgi.com X-ASG-Orig-Subj: Re: EFSCORRUPTED on mount? Subject: Re: EFSCORRUPTED on mount? Message-ID: <20111122014114.GJ2386@dastard> References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1321926082 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80927 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 21, 2011 at 04:21:30PM -0800, Gregory Farnum wrote: > I lied a little bit — turns out an admin restarted the node with > reboot -fn. FWIW, that reboot command does this: -n Don't sync before reboot or halt. Note that the kernel and storage drivers may still sync. -f Force halt or reboot, don't call shutdown(8). In other words, your admin basically told the system to shutdown without syncing the data or running shutdown scripts that sync data. i.e. it forces an immediate reboot while the system is still active, causing an unclean shutdown and guaranteed data loss. > But I've been assured this shouldn't have been able to > corrupt the filesystem, so troubleshooting continues. That depends entirely on your hardware. Are you running with barriers enabled? If you don't have barriers active, then metadata corruption is entirely possible in this scenarion, especially if the hardware does a drive reset or power cycle during the reboot procedure. Even with barriers, there are RAID controllers that enable back end drive caches and they fail to get flushed and hence can cause corruption on unclean shutdowns. IOWs, I'd be looking at how your storage is configured and ruling that out as a cause before even trying to look at the filesystem... > On Mon, Nov 21, 2011 at 2:13 PM, Ben Myers wrote: > > Hey Greg, > > > > It might be useful if you can provide an xfs_metadump of the filesystem. > > > > xfs_metadump /dev/foo - | bzip2 > /tmp/foo.bz2 > Sure. I posted it at ceph.newdream.net/sdg1.bz2 > Thanks! > > On Mon, Nov 21, 2011 at 1:52 PM, Emmanuel Florac wrote: > > xfs_check is mostly useless nowadays, use "xfs_repair -n" instead. At > > this stage, there's probably not much you can do but an "xfs_repair -L" > > to zero the log. Hope for the better. > > oot@cephstore6358:~# xfs_repair -n /dev/sdg1 > Phase 1 - find and verify superblock... > Phase 2 - using internal log > - scan filesystem freespace and inode maps... > block (1,7800040-7800040) multiply claimed by cnt space tree, state - 2 > agf_freeblks 80672443, counted 80672410 in ag 1 > sb_icount 64, counted 251840 > sb_ifree 61, counted 66 > sb_fdblocks 462898325, counted 358494731 ..... All these errors are likely to be caused by the fact log replay has not completed. The only one that is suspect is the first one: > block (1,7800040-7800040) multiply claimed by cnt space tree, state - 2 But there's no way the cause of that can be determined after the fact from a metadump.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Nov 21 19:46:14 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM1kEHL031381 for ; Mon, 21 Nov 2011 19:46:14 -0600 X-ASG-Debug-ID: 1321926372-0b0201840000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4CBE026ADCD for ; Mon, 21 Nov 2011 17:46:12 -0800 (PST) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id QfJwHnNB43XD61m3 for ; Mon, 21 Nov 2011 17:46:12 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAFL7yk55LGY5/2dsb2JhbAApGqpAgQaBcgEBBTIBIyMQCAMYLhQlAyETiAsjtEUSg0eGPgSUOpIa Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail04.adl6.internode.on.net with ESMTP; 22 Nov 2011 12:16:11 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RSfR4-0001QY-0J; Tue, 22 Nov 2011 12:46:10 +1100 Date: Tue, 22 Nov 2011 12:46:09 +1100 From: Dave Chinner To: hank peng Cc: Christoph Hellwig , linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 Message-ID: <20111122014609.GK2386@dastard> References: <20111121170459.GA1327@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1321926373 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80926 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 22, 2011 at 08:19:15AM +0800, hank peng wrote: > 2011/11/22 Christoph Hellwig : > > On Mon, Nov 21, 2011 at 09:00:57PM +0800, hank peng wrote: > >> Hi: > >> I have a 4TB XFS filesystem mounted with "inode64" option, and I > >> exported it using NFS v3, on NFS client, I entered a subdirectory and > >> got "stale NFS file handle" error. > >> ls -il showed that its inode number exceed 32 bit limit. > >> NFS server: kernel version is 2.6.35.6 > >> NFS client: kernel version is 2.6.18 > > > > Do you export the root directory of the XFS filesystem, or a > > subdirectory in it?  If it's the former it should work in theory, > > althrough I'm not sure how well 64-bit inode numbers work with a client > > that old, if it's the latter it needs a few tweaks to work, see > > > The following is what I did: > 1. mkfs.xfs /dev/sdb (whole disk) > 2. create a mount point in my root filesystem: > mkdir /mnt/mymount > 3. monut xfs with inode64 > mount /dev/sdb /mnt/mymount -o inode64 > 4. export it in NFS /etc/exports > /mnt/mymount *(rw, no_root,squash, sync) ^^^^^^^^^^^^^^ no_root_squash > > so, is there any problem here? > > >        http://xfs.org/index.php/XFS_FAQ#Q:_Why_doesn.27t_NFS-exporting_subdirectories_of_inode64-mounted_filesystem_work.3F It's in the FAQ entry christoph pointed you to: "However, exporting the root of the filesystem works" Cheers, Dave. -- Dave Chinner david@fromorbit.com From pengxihan@gmail.com Mon Nov 21 21:22:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,FREEMAIL_FROM, J_CHICKENPOX_43,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM3MIMc114803 for ; Mon, 21 Nov 2011 21:22:18 -0600 X-ASG-Debug-ID: 1321932136-0af402b10000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-iy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9327926AF95 for ; Mon, 21 Nov 2011 19:22:16 -0800 (PST) Received: from mail-iy0-f181.google.com (mail-iy0-f181.google.com [209.85.210.181]) by cuda.sgi.com with ESMTP id ViFwfx3YjVxrwtVw for ; Mon, 21 Nov 2011 19:22:16 -0800 (PST) Received: by iaen33 with SMTP id n33so9478930iae.26 for ; Mon, 21 Nov 2011 19:22:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=cuRESxZ4JTYosv7UgPZIv9AUM83lh2AQfE/oD/HpZwk=; b=f0CzL/ylalt7JQksUyaJ6pn3RwobOTCb+qsxPiGHuJwhYe8ra5UAbr0TVIChx19eh6 18C+5LUoX+anukmi4mbbF+F4jsSX0gWaNhjEOba2q3gxPV/WFLHw4UrZOt475gaTYyuE PvdOfjROEWRz/vce9Ulkk1rPEDs6jrer1PzgY= MIME-Version: 1.0 Received: by 10.231.5.73 with SMTP id 9mr3914915ibu.60.1321932135682; Mon, 21 Nov 2011 19:22:15 -0800 (PST) Received: by 10.50.209.65 with HTTP; Mon, 21 Nov 2011 19:22:15 -0800 (PST) In-Reply-To: <20111122014609.GK2386@dastard> References: <20111121170459.GA1327@infradead.org> <20111122014609.GK2386@dastard> Date: Tue, 22 Nov 2011 11:22:15 +0800 Message-ID: X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 From: hank peng To: Dave Chinner Cc: Christoph Hellwig , linux-xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-iy0-f181.google.com[209.85.210.181] X-Barracuda-Start-Time: 1321932137 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80934 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.10 BSF_SC0_SA085 Custom Rule SA085 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 2011/11/22 Dave Chinner : > On Tue, Nov 22, 2011 at 08:19:15AM +0800, hank peng wrote: >> 2011/11/22 Christoph Hellwig : >> > On Mon, Nov 21, 2011 at 09:00:57PM +0800, hank peng wrote: >> >> Hi: >> >> I have a 4TB XFS filesystem mounted with "inode64" option, and I >> >> exported it using NFS v3, on NFS client, I entered a subdirectory and >> >> got "stale NFS file handle" error. >> >> ls -il showed that its inode number exceed 32 bit limit. >> >> NFS server: kernel version is 2.6.35.6 >> >> NFS client: kernel version is 2.6.18 >> > >> > Do you export the root directory of the XFS filesystem, or a >> > subdirectory in it? =C2=A0If it's the former it should work in theory, >> > althrough I'm not sure how well 64-bit inode numbers work with a clien= t >> > that old, if it's the latter it needs a few tweaks to work, see >> > >> The following is what I did: >> 1. mkfs.xfs /dev/sdb =C2=A0 (whole disk) >> 2. create a mount point in my root filesystem: >> mkdir /mnt/mymount >> 3. monut xfs with inode64 >> mount /dev/sdb /mnt/mymount -o inode64 >> 4. export it in NFS /etc/exports >> /mnt/mymount =C2=A0 *(rw, no_root,squash, sync) > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 ^^^^^^^^^^^^^^ no_root_squash >> sorry, it is my type mistake, it is no_root_squash. I think I have already exported the root of my XFS filesystem, am I right? >> so, is there any problem here? >> >> > =C2=A0 =C2=A0 =C2=A0 =C2=A0http://xfs.org/index.php/XFS_FAQ#Q:_Why_doe= sn.27t_NFS-exporting_subdirectories_of_inode64-mounted_filesystem_work.3F > > It's in the FAQ entry christoph pointed you to: > > "However, exporting the root of the filesystem works" > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > --=20 The simplest is not all best but the best is surely the simplest! From support@eyespyclassifieds.com Mon Nov 21 21:56:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.9 required=5.0 tests=BAYES_50,J_CHICKENPOX_74 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM3uv8f116132 for ; Mon, 21 Nov 2011 21:56:57 -0600 X-ASG-Debug-ID: 1321934215-0af403320000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from p3nlsmtp08.shr.prod.phx3.secureserver.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id D53AF26ADEA for ; Mon, 21 Nov 2011 19:56:55 -0800 (PST) Received: from p3nlsmtp08.shr.prod.phx3.secureserver.net (p3nlsmtp08.shr.prod.phx3.secureserver.net [72.167.234.233]) by cuda.sgi.com with SMTP id cOwag9zkc6qIiIit for ; Mon, 21 Nov 2011 19:56:55 -0800 (PST) Received: (qmail 17912 invoked from network); 22 Nov 2011 03:56:54 -0000 Received: from p3nw3sh056.shr.prod.phx3.secureserver.net (HELO P3NW3SH056.phx3.gdhosting.gdg) ([72.167.232.206]) (envelope-sender ) by p3nlsmtp08.shr.prod.phx3.secureserver.net (qmail-ldap-1.03) with SMTP for ; 22 Nov 2011 03:56:54 -0000 Received: from mail pickup service by P3NW3SH056.phx3.gdhosting.gdg with Microsoft SMTPSVC; Mon, 21 Nov 2011 20:56:54 -0700 From: To: "Friend" X-ASG-Orig-Subj: Get your Guaranteed $8,736 Commissions Direct Paypal!!! Subject: Get your Guaranteed $8,736 Commissions Direct Paypal!!! Date: Mon, 21 Nov 2011 20:56:53 -0700 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4862 Message-ID: X-OriginalArrivalTime: 22 Nov 2011 03:56:54.0082 (UTC) FILETIME=[C5B64A20:01CCA8CA] X-Barracuda-Connect: p3nlsmtp08.shr.prod.phx3.secureserver.net[72.167.234.233] X-Barracuda-Start-Time: 1321934215 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4997 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.46 X-Barracuda-Spam-Status: No, SCORE=0.46 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME, PLING_PLING X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80936 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.46 PLING_PLING Subject has lots of exclamation marks X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean PARTIME JOB MONTHLY INCOME TROUGH PAYPAL Hello Friend, Get Larger ClickBank Affiliate Commissions in Just a Few Minutes! "These Message Sets, Just For ClickBank Affiliates, Creates Attentive and Receptive Readers Ready To Click and Buy and Puts Your Marketing On Autotrafficavalanche. In Just a Few Minutes They Are Ready To Generate More Commissions For You Automatically!" OPPORTUNITY TO: Get your Guaranteed $8,736 Commissions Direct Paypal!!! So remember, I’m taking all the risk out of this investment –if you’re not 100% thrilled with Auto Traffic Avalanche, I’ll personally see to it that your money is returned to you – all of it. What's more if you don't get any results with it, I'll also take $100 out of my own wallet and put it in your pocket. There really is nothing to lose here. We've Register New 32 Members Everyday Start Nov- 15-to- 22 -/2011 weekly Cycle. 32 x 7-days =224 total members every week in YOUR TEAM ... IMPORTANT: Nov -22 /2011 is the Cut-Off day to lock in your position then faster you act the higher commission you will earn!!! Go Here To Secure not less than $8,736 commission Now and it still growing as many people joining under you. if you secure your position right away: The $8,736 commission Arrive Through your Paypal or Credit Card on Nov-30/2011 next week.Hurry'this limited time, 3 remaining Positions are available Now. You can access $8,736 Straight To Your Paypal Account when You Are In Position ... If The Link Is Error Copy And Paste Into Your Browser To Get Commission... All It Takes Is 13 Clicks==>> http://oril.biz/2ve Here's Proof Of What A Total Beginner Can Do And Earn $8,736 Every Month.. TYPE DATE & TIME --------- NEW MEMBERS ----------- COUNTRY'S P -- NOV.20 @ 2:38 AM-----Karen----- Brown-------- United States P -- NOV.20 @ 2:53 AM-----Marie------Davis ------- United Kingdom P -- NOV.20 @ 2:56 AM-----Marice --- Bekker------- Germany M -- NOV.20 @ 4:19 AM-----Cristian---Hanes-------- Hungary P -- NOV.20 @ 4:28 AM-----Charol-----Howard------- Italy M -- NOV.20 @ 6:01 AM-----Ailene---- Enrequez----- Australia P -- NOV.20 @ 7:11 AM-----Robert---- Takker------- Canada P -- NOV.20 @ 7:39 AM-----Cris------ Atlas-------- United States P -- NOV.20 @ 9:42 AM-----Tina------ SWasington--- California M -- NOV.20 @ 9:58 PM-----George-----Molloch------ Singapore P -- NOV.20 @ 2:38 AM-----James----- Jordan------- United States P -- NOV.20 @ 2:53 AM-----JOan------ Jackson ----- United Kingdom P -- NOV.20 @ 2:56 AM-----Mandene -- Jecob-------- Germany M -- NOV.20 @ 4:19 AM-----Cristy---- Nores-------- Hungary P -- NOV.20 @ 4:28 AM-----Carlo----- Wonder------- Italy M -- NOV.20 @ 6:01 AM-----lalaine--- Anderson----- Australia P -- NOV.20 @ 7:11 AM-----Rebecca--- Baker-------- Canada P -- NOV.20 @ 7:39 AM-----Jericho--- Morales------ Mexico P -- NOV.20 @ 9:42 AM-----Thomas---- Stephen------ California M -- NOV.20 @ 9:58 PM-----Grace----- Taylor------- Singapore P -- NOV.20 @ 10:21 PM-----Gina------ Henry-------- New Zealand P -- NOV.20 @ 11:24 PM-----Jenefer--- Lopez ------- United States M -- NOV.20 @ 11:33 PM-----Tracia---- Furlong------ Puerto Rico P -- NOV.20 @ 11:41 PM-----Jane------ Mckay-------- Russia P -- NOV.20 @ 9:42 AM-----Steve----- Scott ------- Netherlands M -- NOV.20 @ 9:58 PM-----Greg------ Stanley------ Denmark P -- NOV.20 @ 10:21 PM-----Jack------ Perkins------ Amsterdam P -- NOV.20 @ 11:24 PM-----Arlene---- Ross -------- United States M -- NOV.20 @ 11:33 PM-----Andy------ Hopekins----- New York P -- NOV.20 @ 11:41 PM-----Jhon------ Robinson----- United States M -- NOV.20 @ 2:34 AM --- Kevin----- Hunt -------- Sweden P -- NOV.20 @ 12:34 AM --- Delia----- Scott ------- United States Therefore, you have a GUARANTEED $8,736 CommissionS every 30 of the month !. Earn $39 Per Process!Each $39 x 224 = $8,736 Commission will be yours...! Be Sure to Copy the link below & Paste into your browser and press enter: To Secure your $8,736 commission! If The Link Is Error Copy And Paste Into Your Browser To See Commission... All It Takes Is 13 Clicks==>> http://oril.biz/2ve Just one simple payment of $39. and you could have earn $8,736 Commission,And you recieved on November 30-2011 Directly to Your Paypal or Credit Card. You must UPGRADE right away or before others do.... Caring for Your Success, Michelle Miller This is where you can type a brief description of your site. Email sent by: earncash@gmail.com (Michelle Miller) Powered by Eye Spy Classifieds From sandeen@sandeen.net Mon Nov 21 22:32:15 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM4WFQ6117339 for ; Mon, 21 Nov 2011 22:32:15 -0600 X-ASG-Debug-ID: 1321936330-57f603910000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E12E49019BB for ; Mon, 21 Nov 2011 20:32:13 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id B54VzGcuajt7dBvb for ; Mon, 21 Nov 2011 20:32:13 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 7446D496328B; Mon, 21 Nov 2011 22:32:08 -0600 (CST) Message-ID: <4ECB25C7.8070801@sandeen.net> Date: Mon, 21 Nov 2011 22:32:07 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: Dave Chinner CC: Richard Scobie , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs_repair is recommended over xfs_check. Subject: Re: [PATCH] xfs_repair is recommended over xfs_check. References: <4ECAC84C.1070000@sauce.co.nz> <20111122002306.GI2386@dastard> In-Reply-To: <20111122002306.GI2386@dastard> X-Enigmail-Version: 1.3.3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1321936334 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0240 1.0000 -1.8652 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.87 X-Barracuda-Spam-Status: No, SCORE=-1.87 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80937 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/21/11 6:23 PM, Dave Chinner wrote: > On Tue, Nov 22, 2011 at 10:53:16AM +1300, Richard Scobie wrote: >> Is there currently now any situation where xfs_check would be used >> in preference to xfs_repair? >> >> If not, perhaps xfs_check could be deprecated. > > xfs_check is one of the ways we test that xfs_repair is doing the > right thing. Having two implementation that you can use to compare > results is a good thing..... What about for end users though? I'm not sure there's much need for end users to be comparing xfs_check against xfs_repair in general, anyway ... Often enough I see users using xfs_check just because it's there, and running into trouble... it seems reasonable to warn the casual user against it, or at least recommend xfs_repair -n instead. What do you think? -Eric > Cheers, > > Dave. From sandeen@sandeen.net Mon Nov 21 22:38:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM4cKJk117548 for ; Mon, 21 Nov 2011 22:38:20 -0600 X-ASG-Debug-ID: 1321936695-59e2030a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 470D926A9AB for ; Mon, 21 Nov 2011 20:38:17 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id JxD0k5UVZwvVv9LD for ; Mon, 21 Nov 2011 20:38:17 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 32D8C4882043; Mon, 21 Nov 2011 22:38:14 -0600 (CST) Message-ID: <4ECB2735.3040500@sandeen.net> Date: Mon, 21 Nov 2011 22:38:13 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: Peter Kimball CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: inode64 readiness testing Subject: Re: inode64 readiness testing References: <501A7AEB-6708-4181-AAE2-D145DC23B938@yahoo.com> In-Reply-To: <501A7AEB-6708-4181-AAE2-D145DC23B938@yahoo.com> X-Enigmail-Version: 1.3.3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1321936699 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80938 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/18/11 11:33 AM, Peter Kimball wrote: > Hi folks, > > We've got some large XFS volumes that should probably be using the > inode64 mount option, but aren't yet. Before I go making irrevocable > changes, I wanted to run my testing procedure by you to make sure > I've actually tested what I think I tested. These volumes will be > shared via NFS, which is not your problem but seems to be a > troublemaker. > > I created a blank 1GB disk image, created an XFS filesystem on that > image, and mounted it on a loopback device using the ino64 flag. > > I wrote a bunch of data to the filesystem (lots of small files), > approximately 600MB. > > At this point, I think I have a filesystem in which inodes use 64-bit > addresses, even if the actual address value would fit in 32 bits. I > would expect any program that can't handle 64-bit addresses to barf > when trying to access any data on the filesystem. > > I then unmounted the filesystem and re-mounted it using the inode64 > flag, just like it would be mounted in production. > > I then verified that the programs I cared about (mostly NFS clients) > could read all of the data I had written. I also made sure they > could write to the filesystem. > > Since I haven't seen any read/write failures at this point, I feel > I'm ready to sign off that we're ready to start using the inode64 > flag. Did I properly create files using 64-bit inodes? Did I read > from the filesystem in such a way that I would know if my readers > were unable to handle 64-bit inodes? Is there anything I should test > that I haven't? You might also take a look at the script at http://sandeen.net/wordpress/?p=9, which can look at binaries and check them for 32-bit stat() syscalls. -Eric > Thanks for all your hard work on this most useful project! Peter > > > > ps: not sure it makes a difference, this is on Centos 5.3 > (2.6.18-128.el5), so I'm not entirely certain which XFS bugs/features > have been folded in by the maintainers... > > _______________________________________________ xfs mailing list > xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs > From lizf@cn.fujitsu.com Mon Nov 21 23:17:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM5HvtE118745 for ; Mon, 21 Nov 2011 23:17:58 -0600 X-ASG-Debug-ID: 1321939072-1f59006d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from song.cn.fujitsu.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0F99F26B674 for ; Mon, 21 Nov 2011 21:17:55 -0800 (PST) Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id GKAA0exzQAbGnCFT for ; Mon, 21 Nov 2011 21:17:55 -0800 (PST) Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id D7812170117; Tue, 22 Nov 2011 13:17:46 +0800 (CST) Received: from mailserver.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id pAM5Hjkd006494; Tue, 22 Nov 2011 13:17:45 +0800 Received: from [10.167.225.230] ([10.167.225.230]) by mailserver.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011112213173265-173641 ; Tue, 22 Nov 2011 13:17:32 +0800 Message-ID: <4ECB30EB.7010109@cn.fujitsu.com> Date: Tue, 22 Nov 2011 13:19:39 +0800 From: Li Zefan User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com, "linux-btrfs@vger.kernel.org" X-ASG-Orig-Subj: [PATCH v2] 254: avoid output mismatch due to space cache Subject: [PATCH v2] 254: avoid output mismatch due to space cache X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-22 13:17:32, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-11-22 13:17:34, Serialize complete at 2011-11-22 13:17:34 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1321939077 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0988 1.0000 -1.3999 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.40 X-Barracuda-Spam-Status: No, SCORE=-1.40 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80940 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This reverts commit a0c92a5871082c0aa6a7caae496e67a6e57bb0b6 (disable space cache), as option nospace_cache was newly introduced in linux-3.2, so we'll fail to mount btrfs in older kernels. As an alternative fix, we just list subvolme names, don't assume what ID numbers those subvolumes will have. Signed-off-by: Li Zefan --- 254 | 4 ++-- 254.out | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/254 b/254 index 1cd4832..7b74a02 100755 --- a/254 +++ b/254 @@ -48,7 +48,7 @@ _supported_os Linux _require_scratch _scratch_mkfs > /dev/null 2>&1 -_scratch_mount -o nospace_cache +_scratch_mount # First test basic snapshotting echo "Creating file foo in root dir" @@ -95,7 +95,7 @@ ls $SCRATCH_MNT # Test listing the subvolumes echo "Listing subvolumes" -btrfs subvolume list $SCRATCH_MNT | _filter_scratch +btrfs subvolume list $SCRATCH_MNT | awk '{ print $NF }' # Delete the snapshot btrfs subvolume delete $SCRATCH_MNT/snap | _filter_scratch diff --git a/254.out b/254.out index 582357a..d4b5346 100644 --- a/254.out +++ b/254.out @@ -31,8 +31,8 @@ List root dir snap subvol Listing subvolumes -ID 256 top level 5 path snap -ID 257 top level 5 path subvol +snap +subvol Delete subvolume 'SCRATCH_MNT/snap' List root dir subvol -- 1.7.3.1 From david@fromorbit.com Mon Nov 21 23:27:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM5Rt3a119024 for ; Mon, 21 Nov 2011 23:27:55 -0600 X-ASG-Debug-ID: 1321939673-5ae101f30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AB2CB12792F2 for ; Mon, 21 Nov 2011 21:27:54 -0800 (PST) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id xMxIVhlpg6AFFVrl for ; Mon, 21 Nov 2011 21:27:54 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EACwxy055LGY5/2dsb2JhbABDqkKBBoFyAQEEATocIwULCAMYLhQlAyETiAO0XxKKBQSUOokDiRc Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail05.adl6.internode.on.net with ESMTP; 22 Nov 2011 15:57:52 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RSitb-0001ka-7F; Tue, 22 Nov 2011 16:27:51 +1100 Date: Tue, 22 Nov 2011 16:27:51 +1100 From: Dave Chinner To: Eric Sandeen Cc: Richard Scobie , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs_repair is recommended over xfs_check. Subject: Re: [PATCH] xfs_repair is recommended over xfs_check. Message-ID: <20111122052751.GM2386@dastard> References: <4ECAC84C.1070000@sauce.co.nz> <20111122002306.GI2386@dastard> <4ECB25C7.8070801@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4ECB25C7.8070801@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1321939674 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0186 1.0000 -1.9000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.90 X-Barracuda-Spam-Status: No, SCORE=-1.90 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80941 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 21, 2011 at 10:32:07PM -0600, Eric Sandeen wrote: > On 11/21/11 6:23 PM, Dave Chinner wrote: > > On Tue, Nov 22, 2011 at 10:53:16AM +1300, Richard Scobie wrote: > >> Is there currently now any situation where xfs_check would be used > >> in preference to xfs_repair? > >> > >> If not, perhaps xfs_check could be deprecated. > > > > xfs_check is one of the ways we test that xfs_repair is doing the > > right thing. Having two implementation that you can use to compare > > results is a good thing..... > > What about for end users though? I'm not sure there's much need > for end users to be comparing xfs_check against xfs_repair in general, > anyway ... Right, but that doesn't mean it needs deprecating as that implies complete removal at some point in the future. I'd prefer to keep it around as we get most of what it does for free as it uses the xfs_db infrastructure to do all it's work. > Often enough I see users using xfs_check just because it's there, > and running into trouble... it seems reasonable to warn the > casual user against it, or at least recommend xfs_repair -n > instead. What do you think? The patch to modify the man page to advise use of xfs_repair is sufficient, I think. Cheers, Dave. -- Dave Chinner david@fromorbit.com From seto.hidetoshi@jp.fujitsu.com Tue Nov 22 00:15:02 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM6F2no122803 for ; Tue, 22 Nov 2011 00:15:02 -0600 X-ASG-Debug-ID: 1321942500-23a9018e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fgwmail6.fujitsu.co.jp (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 369EB26AEF7 for ; Mon, 21 Nov 2011 22:15:00 -0800 (PST) Received: from fgwmail6.fujitsu.co.jp (fgwmail6.fujitsu.co.jp [192.51.44.36]) by cuda.sgi.com with ESMTP id HTSWWwEX7UlWXOPH for ; Mon, 21 Nov 2011 22:15:00 -0800 (PST) Received: from m3.gw.fujitsu.co.jp (unknown [10.0.50.73]) by fgwmail6.fujitsu.co.jp (Postfix) with ESMTP id D87A03EE0B6 for ; Tue, 22 Nov 2011 15:14:58 +0900 (JST) Received: from smail (m3 [127.0.0.1]) by outgoing.m3.gw.fujitsu.co.jp (Postfix) with ESMTP id BA75745DEB4 for ; Tue, 22 Nov 2011 15:14:58 +0900 (JST) Received: from s3.gw.fujitsu.co.jp (s3.gw.fujitsu.co.jp [10.0.50.93]) by m3.gw.fujitsu.co.jp (Postfix) with ESMTP id A11D145DEB3 for ; Tue, 22 Nov 2011 15:14:58 +0900 (JST) Received: from s3.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s3.gw.fujitsu.co.jp (Postfix) with ESMTP id 942DF1DB8038 for ; Tue, 22 Nov 2011 15:14:58 +0900 (JST) Received: from m105.s.css.fujitsu.com (m105.s.css.fujitsu.com [10.240.81.145]) by s3.gw.fujitsu.co.jp (Postfix) with ESMTP id 59C2A1DB8046 for ; Tue, 22 Nov 2011 15:14:58 +0900 (JST) Received: from m105.css.fujitsu.com (m105 [127.0.0.1]) by m105.s.css.fujitsu.com (Postfix) with ESMTP id 276369C8024; Tue, 22 Nov 2011 15:14:58 +0900 (JST) Received: from [127.0.0.1] (unknown [10.124.101.101]) by m105.s.css.fujitsu.com (Postfix) with ESMTP id 917449C800F; Tue, 22 Nov 2011 15:14:57 +0900 (JST) X-SecurityPolicyCheck-FJ: OK by FujitsuOutboundMailChecker v1.3.1 Received: from FMVDA2A041[10.124.101.101] by FMVDA2A041 (FujitsuOutboundMailChecker v1.3.1/9992[10.124.101.101]); Tue, 22 Nov 2011 15:14:52 +0900 (JST) Message-ID: <4ECB3DCA.5000509@jp.fujitsu.com> Date: Tue, 22 Nov 2011 15:14:34 +0900 From: Hidetoshi Seto User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] 198, 240: check presence of aiodio_sparce2 Subject: [PATCH] 198, 240: check presence of aiodio_sparce2 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-Barracuda-Connect: fgwmail6.fujitsu.co.jp[192.51.44.36] X-Barracuda-Start-Time: 1321942501 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0203 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=ISO2022JP_CHARSET X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80944 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 ISO2022JP_CHARSET ISO-2022-JP message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Use same trick with: commit 4e9072472fbc56b9d4c8ee8094cc62ce793df9b7 Gracefully fail aio tests if they weren't built Signed-off-by: Hidetoshi Seto --- 198 | 5 ++++- 240 | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/198 b/198 index e46ec8d..60db6dc 100755 --- a/198 +++ b/198 @@ -45,13 +45,16 @@ _cleanup() _supported_fs generic _supported_os Linux +AIO_TEST=src/aio-dio-regress/aiodio_sparse2 +[ -x $here/$AIO_TEST ] || _notrun "$AIO_TEST not built" + echo "Silence is golden." # real QA test starts here rm -f $seq.full rm -f "$TEST_DIR/aiodio_sparse*" -$here/src/aio-dio-regress/aiodio_sparse2 "$TEST_DIR/aiodio_sparse" +$here/$AIO_TEST "$TEST_DIR/aiodio_sparse" status=$? exit diff --git a/240 b/240 index 563449e..22c1756 100755 --- a/240 +++ b/240 @@ -53,6 +53,9 @@ _supported_os Linux _require_sparse_files +AIO_TEST=src/aio-dio-regress/aiodio_sparse2 +[ -x $here/$AIO_TEST ] || _notrun "$AIO_TEST not built" + echo "Silence is golden." # real QA test starts here @@ -69,7 +72,7 @@ fi # 2 threads, fs block sized writes, 64k filesize, stride through file by # fs block size, start at logical block size offset -$here/src/aio-dio-regress/aiodio_sparse2 -i 2 -w $fs_block_size -s 64k -n $fs_block_size -o $logical_block_size "$TEST_DIR/aiodio_sparse" +$here/$AIO_TEST -i 2 -w $fs_block_size -s 64k -n $fs_block_size -o $logical_block_size "$TEST_DIR/aiodio_sparse" status=$? exit -- 1.7.7.3 From pengxihan@gmail.com Tue Nov 22 01:14:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM7EG17125060 for ; Tue, 22 Nov 2011 01:14:16 -0600 X-ASG-Debug-ID: 1321946055-5aee03a60000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-gx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E55AC12796D9 for ; Mon, 21 Nov 2011 23:14:15 -0800 (PST) Received: from mail-gx0-f181.google.com (mail-gx0-f181.google.com [209.85.161.181]) by cuda.sgi.com with ESMTP id qVtTQt3f2Sum1ZCf for ; Mon, 21 Nov 2011 23:14:15 -0800 (PST) Received: by ggnr1 with SMTP id r1so22184ggn.26 for ; Mon, 21 Nov 2011 23:14:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=gK7VCMDiHPp7td3S2/jdp/itt6tT5MmhtUyONvMUw1Y=; b=UP5lrtqAeaoha5oSUJSr44flEdWbyGjoE5dXpIZ3L2Y98qUoX6iVUGp19RE+ZY18AU AzLzI5oS9xDrq9gLXgQmsYkzw390U00eOLZQr4ukDv2H2t44Vf3Tt46MeiKuBGNADQJu DgvWQ4lZHwNldH901roekb9gn2rEtK86HbPe4= MIME-Version: 1.0 Received: by 10.50.77.229 with SMTP id v5mr18357855igw.13.1321946054686; Mon, 21 Nov 2011 23:14:14 -0800 (PST) Received: by 10.50.209.65 with HTTP; Mon, 21 Nov 2011 23:14:14 -0800 (PST) In-Reply-To: <20111121164309.4b18a6ca@harpe.intellique.com> References: <20111121150158.5f8b2512@harpe.intellique.com> <20111121162155.0bfa0342@harpe.intellique.com> <20111121164309.4b18a6ca@harpe.intellique.com> Date: Tue, 22 Nov 2011 15:14:14 +0800 Message-ID: X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 From: hank peng To: Emmanuel Florac Cc: linux-xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-gx0-f181.google.com[209.85.161.181] X-Barracuda-Start-Time: 1321946055 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80949 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean unfortunately, seting nfs.enable_ino64 didn't work although it gave me 32 bit inode number indeed, I think there must be something else wrong. 2011/11/21 Emmanuel Florac : > Le Mon, 21 Nov 2011 23:28:23 +0800 > hank peng =C3=A9crivait: > >> I noticed that there is a kernel parameter : >> nfs.enable_ino64=3D >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 [NFS] enable 64-bit inode numbers. >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 If zero, the NFS client will fake up a 32-bit >> inode number for the readdir() and stat() syscalls instead >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 of returning the full 64-bit number. >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 The default is to return 64-bit inode numbers. >> >> can I set it to zero, so NFS client can get converted 32bit inode ? > > Well you must try it and hope for the best! > > -- > ------------------------------------------------------------------------ > Emmanuel Florac =C2=A0 =C2=A0 | =C2=A0 Direction technique > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| = =C2=A0 Intellique > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| = =C2=A0 > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| = =C2=A0 +33 1 78 94 84 02 > ------------------------------------------------------------------------ > --=20 The simplest is not all best but the best is surely the simplest! From eflorac@intellique.com Tue Nov 22 02:06:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM86JKU127648 for ; Tue, 22 Nov 2011 02:06:19 -0600 X-ASG-Debug-ID: 1321949174-2cee00510000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp3-g21.free.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5AE95902F5B for ; Tue, 22 Nov 2011 00:06:16 -0800 (PST) Received: from smtp3-g21.free.fr (smtp3-g21.free.fr [212.27.42.3]) by cuda.sgi.com with ESMTP id zqOSQd8jfybb03xe for ; Tue, 22 Nov 2011 00:06:16 -0800 (PST) Received: from galadriel.home (unknown [82.235.234.79]) by smtp3-g21.free.fr (Postfix) with ESMTP id 94774A663A; Tue, 22 Nov 2011 09:06:10 +0100 (CET) Date: Tue, 22 Nov 2011 09:06:02 +0100 From: Emmanuel Florac To: Gregory Farnum Cc: xfs@oss.sgi.com, bpm@sgi.com X-ASG-Orig-Subj: Re: EFSCORRUPTED on mount? Subject: Re: EFSCORRUPTED on mount? Message-ID: <20111122090602.6af8c54a@galadriel.home> In-Reply-To: References: Organization: Intellique X-Mailer: Claws Mail 3.7.8 (GTK+ 2.20.1; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: smtp3-g21.free.fr[212.27.42.3] X-Barracuda-Start-Time: 1321949178 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80953 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Le Mon, 21 Nov 2011 16:21:30 -0800 vous =C3=A9criviez: > I lied a little bit =E2=80=94 turns out an admin restarted the node with > reboot -fn. But I've been assured this shouldn't have been able to > corrupt the filesystem, so troubleshooting continues. >=20 You need to use "xfs_repair -L" to zero the log. --=20 ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From jeff.liu@oracle.com Tue Nov 22 02:20:22 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM8KMdD128284 for ; Tue, 22 Nov 2011 02:20:22 -0600 X-ASG-Debug-ID: 1321950020-039b028e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rcsinet15.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 12FA51D26408; Tue, 22 Nov 2011 00:20:20 -0800 (PST) Received: from rcsinet15.oracle.com (rcsinet15.oracle.com [148.87.113.117]) by cuda.sgi.com with ESMTP id XhoW7XshEIsXBd4C; Tue, 22 Nov 2011 00:20:20 -0800 (PST) Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by rcsinet15.oracle.com (Switch-3.4.4/Switch-3.4.4) with ESMTP id pAM8K5Hw003056 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 22 Nov 2011 08:20:06 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id pAM8K4Cp001227 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 22 Nov 2011 08:20:04 GMT Received: from abhmt101.oracle.com (abhmt101.oracle.com [141.146.116.53]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id pAM8JvkO005044; Tue, 22 Nov 2011 02:19:57 -0600 Received: from [10.191.13.40] (/10.191.13.40) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 22 Nov 2011 00:19:56 -0800 Message-ID: <4ECB5B21.7080508@oracle.com> Date: Tue, 22 Nov 2011 16:19:45 +0800 From: Jeff Liu Reply-To: jeff.liu@oracle.com Organization: Oracle User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Thunderbird/3.1.11 MIME-Version: 1.0 To: xfs@oss.sgi.com CC: Christoph Hellwig , Dave Chinner , aelder@sgi.com, Chris Mason X-ASG-Orig-Subj: [PATCH] Introduce SEEK_DATA/SEEK_HOLE to XFS V2 Subject: [PATCH] Introduce SEEK_DATA/SEEK_HOLE to XFS V2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-CT-RefId: str=0001.0A090206.4ECB5B37.0059,ss=1,re=0.000,fgs=0 X-Barracuda-Connect: rcsinet15.oracle.com[148.87.113.117] X-Barracuda-Start-Time: 1321950021 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80954 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello, This is the V2 attempt to add SEEK_DATA/SEEK_HOLE to XFS. Changes: ======== 1. Merge xfs_find_desired_extent() and xfs_seek_data_hole() into xfs_seek_extent(), and place it at xfs_file.c. 2. Using two different routines xfs_seek_data()/xfs_seek_hole() to handle SEEK_DATA/SEEK_HOLE requests respectively. 3. Remove some worthless result checking code from xfs_file_llseek(). 4. s/xfs_mount_t/struct xfs_mount/g. Tests: ====== In addition to the seek_test.c I have used previously, I have also done a large sparse file copy tests, it works to me. Hope I have not made obvious stupid mistakes this time. :-P. Any comments are appreciated! Signed-off-by: Jie Liu --- fs/xfs/xfs_file.c | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 187 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 753ed9b..bb2be00 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -1141,8 +1141,194 @@ xfs_vm_page_mkwrite( return block_page_mkwrite(vma, vmf, xfs_get_blocks); } +STATIC int +xfs_seek_data( + struct xfs_inode *ip, + loff_t *start) +{ + struct xfs_mount *mp = ip->i_mount; + struct xfs_ifork *ifp; + xfs_fileoff_t fsbno; + xfs_filblks_t len; + loff_t startoff = *start; + int error = 0; + + fsbno = XFS_B_TO_FSBT(mp, *start); + ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); + len = XFS_B_TO_FSB(mp, ip->i_size); + + for (;;) { + struct xfs_bmbt_irec map[2]; + int nmap = 2; + loff_t seekoff; + + error = xfs_bmapi_read(ip, fsbno, len - fsbno, map, &nmap, + XFS_BMAPI_ENTIRE); + if (error) + break; + + /* No extents at given offset, must be beyond EOF */ + if (!nmap) { + error = ENXIO; + break; + } + + seekoff = XFS_FSB_TO_B(mp, fsbno); + + /* + * Hole handling for unwritten extents landed in a hole. + * If the next extent is a data extent, then return the + * start of it, otherwise we need to move the start offset + * and map more blocks. + */ + if (map[0].br_startblock == HOLESTARTBLOCK) { + if (map[1].br_startblock == HOLESTARTBLOCK) { + fsbno = map[1].br_startoff + + map[1].br_blockcount; + } else { + *start = max_t(loff_t, seekoff, + XFS_FSB_TO_B(mp, map[1].br_startoff)); + break; + } + } + + /* + * Landed in an in-memory data extent or in an allocated + * extent. + */ + if (map[0].br_startoff == DELAYSTARTBLOCK || + map[0].br_state == XFS_EXT_NORM) { + *start = max_t(loff_t, seekoff, + XFS_FSB_TO_B(mp, map[0].br_startoff)); + break; + } + + /* return ENXIO if beyond eof */ + if (XFS_FSB_TO_B(mp, fsbno) > ip->i_size) { + error = ENXIO; + break; + } + } + + if (*start < startoff) + *start = startoff; + + return error; +} + +STATIC int +xfs_seek_hole( + struct xfs_inode *ip, + loff_t *start) +{ + struct xfs_mount *mp = ip->i_mount; + int error = 0; + loff_t seekoff = *start; + loff_t holeoff; + xfs_fileoff_t fsbno; + + fsbno = XFS_B_TO_FSBT(mp, *start); + error = xfs_bmap_first_unused(NULL, ip, 1, &fsbno, XFS_DATA_FORK); + if (error) + return error; + + holeoff = XFS_FSB_TO_B(mp, fsbno); + if (holeoff <= seekoff) + *start = seekoff; + else + *start = min_t(loff_t, holeoff, ip->i_size); + + return error; +} + +STATIC int +xfs_seek_extent( + struct inode *inode, + loff_t *start, + u32 type) +{ + struct xfs_inode *ip = XFS_I(inode); + struct xfs_mount *mp = ip->i_mount; + struct xfs_ifork *ifp; + int lock; + int error = 0; + + if (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS && + ip->i_d.di_format != XFS_DINODE_FMT_BTREE && + ip->i_d.di_format != XFS_DINODE_FMT_LOCAL) + return XFS_ERROR(EINVAL); + + lock = xfs_ilock_map_shared(ip); + + if (XFS_FORCED_SHUTDOWN(mp)) { + error = EIO; + goto out_lock; + } + + XFS_STATS_INC(xs_blk_mapr); + ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); + + ASSERT(ifp->if_ext_max == + XFS_IFORK_SIZE(ip, XFS_DATA_FORK) / (uint)sizeof(xfs_bmbt_rec_t)); + + if (!(ifp->if_flags & XFS_IFEXTENTS)) { + error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK); + if (error) + goto out_lock; + } + + if (type == SEEK_HOLE) + error = xfs_seek_hole(ip, start); + else + error = xfs_seek_data(ip, start); + +out_lock: + xfs_iunlock_map_shared(ip, lock); + + if (error) + return -error; + + return 0; +} + +STATIC loff_t +xfs_file_llseek( + struct file *file, + loff_t offset, + int origin) +{ + struct inode *inode = file->f_mapping->host; + int ret; + + switch (origin) { + case SEEK_END: + case SEEK_CUR: + offset = generic_file_llseek(file, offset, origin); + goto out; + case SEEK_DATA: + case SEEK_HOLE: + if (offset >= i_size_read(inode)) { + ret = -ENXIO; + goto error; + } + + ret = xfs_seek_extent(inode, &offset, origin); + if (ret) + goto error; + } + + if (offset != file->f_pos) + file->f_pos = offset; + +out: + return offset; + +error: + return ret; +} + const struct file_operations xfs_file_operations = { - .llseek = generic_file_llseek, + .llseek = xfs_file_llseek, .read = do_sync_read, .write = do_sync_write, .aio_read = xfs_file_aio_read, -- 1.7.4.1 From jeff.liu@oracle.com Tue Nov 22 02:31:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM8VJkb128867 for ; Tue, 22 Nov 2011 02:31:19 -0600 X-ASG-Debug-ID: 1321950677-039e02d90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rcsinet15.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6776D1D26724; Tue, 22 Nov 2011 00:31:17 -0800 (PST) Received: from rcsinet15.oracle.com (rcsinet15.oracle.com [148.87.113.117]) by cuda.sgi.com with ESMTP id ekD9G8nhH5prFky8; Tue, 22 Nov 2011 00:31:17 -0800 (PST) Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by rcsinet15.oracle.com (Switch-3.4.4/Switch-3.4.4) with ESMTP id pAM8VADe015536 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 22 Nov 2011 08:31:11 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id pAM8V9OD016994 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 22 Nov 2011 08:31:10 GMT Received: from abhmt114.oracle.com (abhmt114.oracle.com [141.146.116.66]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id pAM8V4aj012406; Tue, 22 Nov 2011 02:31:04 -0600 Received: from [10.191.13.40] (/10.191.13.40) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 22 Nov 2011 00:31:03 -0800 Message-ID: <4ECB5DBD.30000@oracle.com> Date: Tue, 22 Nov 2011 16:30:53 +0800 From: Jeff Liu Reply-To: jeff.liu@oracle.com Organization: Oracle User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Thunderbird/3.1.11 MIME-Version: 1.0 To: xfs@oss.sgi.com CC: Dave Chinner , Christoph Hellwig , aelder@sgi.com, Chris Mason X-ASG-Orig-Subj: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE to XFS V2 Subject: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE to XFS V2 References: <4ECB5B21.7080508@oracle.com> In-Reply-To: <4ECB5B21.7080508@oracle.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-CT-RefId: str=0001.0A090206.4ECB5DD0.0083,ss=1,re=0.000,fgs=0 X-Barracuda-Connect: rcsinet15.oracle.com[148.87.113.117] X-Barracuda-Start-Time: 1321950678 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80954 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean CC to Dave. Thanks, -Jeff On 11/22/2011 04:19 PM, Jeff Liu wrote: > Hello, > > This is the V2 attempt to add SEEK_DATA/SEEK_HOLE to XFS. > > Changes: > ======== > 1. Merge xfs_find_desired_extent() and xfs_seek_data_hole() into xfs_seek_extent(), and place it at xfs_file.c. > 2. Using two different routines xfs_seek_data()/xfs_seek_hole() to handle SEEK_DATA/SEEK_HOLE requests respectively. > 3. Remove some worthless result checking code from xfs_file_llseek(). > 4. s/xfs_mount_t/struct xfs_mount/g. > > Tests: > ====== > In addition to the seek_test.c I have used previously, I have also done a large sparse file copy tests, it works to me. > > Hope I have not made obvious stupid mistakes this time. :-P. > Any comments are appreciated! > > > Signed-off-by: Jie Liu > > --- > fs/xfs/xfs_file.c | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++++- > 1 files changed, 187 insertions(+), 1 deletions(-) > > diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c > index 753ed9b..bb2be00 100644 > --- a/fs/xfs/xfs_file.c > +++ b/fs/xfs/xfs_file.c > @@ -1141,8 +1141,194 @@ xfs_vm_page_mkwrite( > return block_page_mkwrite(vma, vmf, xfs_get_blocks); > } > > +STATIC int > +xfs_seek_data( > + struct xfs_inode *ip, > + loff_t *start) > +{ > + struct xfs_mount *mp = ip->i_mount; > + struct xfs_ifork *ifp; > + xfs_fileoff_t fsbno; > + xfs_filblks_t len; > + loff_t startoff = *start; > + int error = 0; > + > + fsbno = XFS_B_TO_FSBT(mp, *start); > + ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); > + len = XFS_B_TO_FSB(mp, ip->i_size); > + > + for (;;) { > + struct xfs_bmbt_irec map[2]; > + int nmap = 2; > + loff_t seekoff; > + > + error = xfs_bmapi_read(ip, fsbno, len - fsbno, map, &nmap, > + XFS_BMAPI_ENTIRE); > + if (error) > + break; > + > + /* No extents at given offset, must be beyond EOF */ > + if (!nmap) { > + error = ENXIO; > + break; > + } > + > + seekoff = XFS_FSB_TO_B(mp, fsbno); > + > + /* > + * Hole handling for unwritten extents landed in a hole. > + * If the next extent is a data extent, then return the > + * start of it, otherwise we need to move the start offset > + * and map more blocks. > + */ > + if (map[0].br_startblock == HOLESTARTBLOCK) { > + if (map[1].br_startblock == HOLESTARTBLOCK) { > + fsbno = map[1].br_startoff + > + map[1].br_blockcount; > + } else { > + *start = max_t(loff_t, seekoff, > + XFS_FSB_TO_B(mp, map[1].br_startoff)); > + break; > + } > + } > + > + /* > + * Landed in an in-memory data extent or in an allocated > + * extent. > + */ > + if (map[0].br_startoff == DELAYSTARTBLOCK || > + map[0].br_state == XFS_EXT_NORM) { > + *start = max_t(loff_t, seekoff, > + XFS_FSB_TO_B(mp, map[0].br_startoff)); > + break; > + } > + > + /* return ENXIO if beyond eof */ > + if (XFS_FSB_TO_B(mp, fsbno) > ip->i_size) { > + error = ENXIO; > + break; > + } > + } > + > + if (*start < startoff) > + *start = startoff; > + > + return error; > +} > + > +STATIC int > +xfs_seek_hole( > + struct xfs_inode *ip, > + loff_t *start) > +{ > + struct xfs_mount *mp = ip->i_mount; > + int error = 0; > + loff_t seekoff = *start; > + loff_t holeoff; > + xfs_fileoff_t fsbno; > + > + fsbno = XFS_B_TO_FSBT(mp, *start); > + error = xfs_bmap_first_unused(NULL, ip, 1, &fsbno, XFS_DATA_FORK); > + if (error) > + return error; > + > + holeoff = XFS_FSB_TO_B(mp, fsbno); > + if (holeoff <= seekoff) > + *start = seekoff; > + else > + *start = min_t(loff_t, holeoff, ip->i_size); > + > + return error; > +} > + > +STATIC int > +xfs_seek_extent( > + struct inode *inode, > + loff_t *start, > + u32 type) > +{ > + struct xfs_inode *ip = XFS_I(inode); > + struct xfs_mount *mp = ip->i_mount; > + struct xfs_ifork *ifp; > + int lock; > + int error = 0; > + > + if (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS && > + ip->i_d.di_format != XFS_DINODE_FMT_BTREE && > + ip->i_d.di_format != XFS_DINODE_FMT_LOCAL) > + return XFS_ERROR(EINVAL); > + > + lock = xfs_ilock_map_shared(ip); > + > + if (XFS_FORCED_SHUTDOWN(mp)) { > + error = EIO; > + goto out_lock; > + } > + > + XFS_STATS_INC(xs_blk_mapr); > + ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); > + > + ASSERT(ifp->if_ext_max == > + XFS_IFORK_SIZE(ip, XFS_DATA_FORK) / (uint)sizeof(xfs_bmbt_rec_t)); > + > + if (!(ifp->if_flags & XFS_IFEXTENTS)) { > + error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK); > + if (error) > + goto out_lock; > + } > + > + if (type == SEEK_HOLE) > + error = xfs_seek_hole(ip, start); > + else > + error = xfs_seek_data(ip, start); > + > +out_lock: > + xfs_iunlock_map_shared(ip, lock); > + > + if (error) > + return -error; > + > + return 0; > +} > + > +STATIC loff_t > +xfs_file_llseek( > + struct file *file, > + loff_t offset, > + int origin) > +{ > + struct inode *inode = file->f_mapping->host; > + int ret; > + > + switch (origin) { > + case SEEK_END: > + case SEEK_CUR: > + offset = generic_file_llseek(file, offset, origin); > + goto out; > + case SEEK_DATA: > + case SEEK_HOLE: > + if (offset >= i_size_read(inode)) { > + ret = -ENXIO; > + goto error; > + } > + > + ret = xfs_seek_extent(inode, &offset, origin); > + if (ret) > + goto error; > + } > + > + if (offset != file->f_pos) > + file->f_pos = offset; > + > +out: > + return offset; > + > +error: > + return ret; > +} > + > const struct file_operations xfs_file_operations = { > - .llseek = generic_file_llseek, > + .llseek = xfs_file_llseek, > .read = do_sync_read, > .write = do_sync_write, > .aio_read = xfs_file_aio_read, From david@fromorbit.com Tue Nov 22 03:28:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM9SoVa132030 for ; Tue, 22 Nov 2011 03:28:50 -0600 X-ASG-Debug-ID: 1321954126-5bc800470000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EF81626C7F0 for ; Tue, 22 Nov 2011 01:28:47 -0800 (PST) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id x3bVZoDGTywQTWLN for ; Tue, 22 Nov 2011 01:28:47 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EADJpy055LGY5/2dsb2JhbABDDqo+gQaBcgEBBR4cHCMQCAMOCi4UJQMhE70XEolaYwSUP5FSSw Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail06.adl6.internode.on.net with ESMTP; 22 Nov 2011 19:58:45 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RSmeh-00029i-SQ; Tue, 22 Nov 2011 20:28:43 +1100 Date: Tue, 22 Nov 2011 20:28:43 +1100 From: Dave Chinner To: Theodore Tso Cc: xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: Re: [RFC][PATCH 0/8] xfstests: rework large filesystem testing Subject: Re: [RFC][PATCH 0/8] xfstests: rework large filesystem testing Message-ID: <20111122092843.GA8098@dastard> References: <1321875088-30801-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1321954128 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80958 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 21, 2011 at 07:10:45AM -0500, Theodore Tso wrote: > > On Nov 21, 2011, at 6:31 AM, Dave Chinner wrote: > > > ext4, however, still has serious issues with this - either we take > > the mkfs.ext4 time hit to initialise all the block groups, or we > > take it during the preallocation. IOWs, the "don't do work at mkfs > > but do it after mount" hack^Wtradeoff simply does not work for > > testing large filesystems in this manner. While it is possible to > > run large filesystem tests on ext4 using this mechanism, it is > > extremely painful to do so. > > For testing, we can disable the "do it after the mount " aspect > of ext4 by using the mount option "noinit_itable". We basically > only need to zero the inode table to make sure e2fsck doesn't > confuse old inode tables as new ones in the event that the block It's not the deferred inode table initialisation that is the problem for the preallocation immediately after a mkfs and mount - it's initialising block groups that is the problem: 363806.042907] SysRq : Show Blocked State [363806.044586] task PC stack pid father [363806.046400] xfs_io D ffff8801099aed08 0 7264 7064 0x00000000 [363806.046400] ffff880117e33868 0000000000000086 0000000000000000 ffffffffb13a2903 [363806.046400] ffff8801099ae980 ffff880117e33fd8 ffff880117e33fd8 ffff880117e33fd8 [363806.046400] ffff88011afb44c0 ffff8801099ae980 ffff880117e33868 00000001810b59ed [363806.046400] Call Trace: [363806.046400] [] ? __wait_on_buffer+0x30/0x30 [363806.046400] [] schedule+0x3f/0x60 [363806.046400] [] io_schedule+0x8f/0xd0 [363806.046400] [] sleep_on_buffer+0xe/0x20 [363806.046400] [] __wait_on_bit+0x5f/0x90 [363806.046400] [] ? generic_make_request+0xc7/0x100 [363806.046400] [] ? __wait_on_buffer+0x30/0x30 [363806.046400] [] out_of_line_wait_on_bit+0x7c/0x90 [363806.046400] [] ? autoremove_wake_function+0x40/0x40 [363806.046400] [] __wait_on_buffer+0x2e/0x30 [363806.046400] [] ext4_mb_init_cache+0x223/0x9c0 [363806.046400] [] ? add_to_page_cache_locked+0xb3/0x100 [363806.046400] [] ext4_mb_init_group+0x14e/0x210 [363806.046400] [] ext4_mb_load_buddy+0x339/0x350 [363806.046400] [] ext4_mb_find_by_goal+0x6b/0x2b0 [363806.046400] [] ext4_mb_regular_allocator+0x64/0x430 [363806.046400] [] ext4_mb_new_blocks+0x40d/0x560 [363806.046400] [] ? _raw_spin_lock+0xe/0x20 [363806.046400] [] ? _raw_spin_lock+0xe/0x20 [363806.046400] [] ext4_ext_map_blocks+0xfa1/0x1d10 [363806.046400] [] ? jbd2__journal_start+0xca/0x110 [363806.046400] [] ext4_map_blocks+0x1b5/0x280 [363806.046400] [] ext4_fallocate+0x1c5/0x530 [363806.046400] [] do_fallocate+0xf2/0x160 [363806.046400] [] sys_fallocate+0x4b/0x70 [363806.046400] [] system_call_fastpath+0x16/0x1b this initialisation runs at about 50MB/s for some periods of the preallocation. Sample from iostat -d -x -m 5: Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vdc 0.00 1352.30 46.91 178.64 0.18 51.44 468.74 4.38 19.42 18.57 19.64 4.00 90.30 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vdc 0.00 1405.40 47.20 184.40 0.18 50.97 452.34 5.99 25.84 18.31 27.77 3.91 90.56 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vdc 0.00 4302.40 38.60 377.40 0.15 57.49 283.79 31.68 76.17 23.50 81.55 2.20 91.68 shows it is close to IO bound. This in on a 12 disk RAID-0 array w/ a 512MB BBWC. That indicates that most of the IO being done is random. perf top shows that that the limited amount of CPU time being spent is distributed like this: samples pcnt function DSO _______ _____ _____________________________ _________________ 83.00 6.7% ext4_init_block_bitmap [kernel.kallsyms] 82.00 6.6% crc16 [kernel.kallsyms] 73.00 5.9% __find_get_block [kernel.kallsyms] 65.00 5.2% ext4_num_overhead_clusters [kernel.kallsyms] 62.00 5.0% ext4_set_bits [kernel.kallsyms] 56.00 4.5% ext4_ext_find_extent [kernel.kallsyms] 55.00 4.4% ext4_mark_iloc_dirty [kernel.kallsyms] 53.00 4.3% jbd2_journal_add_journal_head [kernel.kallsyms] 50.00 4.0% do_get_write_access [kernel.kallsyms] 45.00 3.6% mb_find_order_for_block [kernel.kallsyms] 41.00 3.3% ext4_ext_map_blocks [kernel.kallsyms] 34.00 2.7% jbd2_journal_cancel_revoke [kernel.kallsyms] 28.00 2.3% jbd2_journal_dirty_metadata [kernel.kallsyms] 27.00 2.2% jbd2_journal_put_journal_head [kernel.kallsyms] The rest of the time, there is no IO and the preallocation is is severely CPU bound. Top shows: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7523 root 20 0 10848 792 636 R 99 0.0 0:23.39 xfs_io and perf top -p shows: samples pcnt function DSO _______ _____ ___________________________ _________________ 13840.00 89.2% ext4_mb_good_group [kernel.kallsyms] 1218.00 7.8% ext4_mb_regular_allocator [kernel.kallsyms] 148.00 1.0% mb_find_order_for_block [kernel.kallsyms] 85.00 0.5% find_next_zero_bit [kernel.kallsyms] 78.00 0.5% radix_tree_lookup_element [kernel.kallsyms] 54.00 0.3% find_get_page [kernel.kallsyms] 53.00 0.3% mb_find_extent.constprop.31 [kernel.kallsyms] 12.00 0.1% mb_find_buddy [kernel.kallsyms] 10.00 0.1% ext4_mb_load_buddy [kernel.kallsyms] which, if I read the code correctly, is CPU bound searching for a block group to allocate from. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Nov 22 03:33:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM9XJpp132404 for ; Tue, 22 Nov 2011 03:33:20 -0600 X-ASG-Debug-ID: 1321954398-269e02b60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail06.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 53492162CE04 for ; Tue, 22 Nov 2011 01:33:18 -0800 (PST) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 16o0WhpCdgWiGEOU for ; Tue, 22 Nov 2011 01:33:18 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EADJpy055LGY5/2dsb2JhbABDqkyBBoFyAQEFOhwjEAgDGC4UJQMhE70XEolaYwSUP4kFiRg Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail06.adl6.internode.on.net with ESMTP; 22 Nov 2011 20:03:17 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RSmj6-0002AX-FP; Tue, 22 Nov 2011 20:33:16 +1100 Date: Tue, 22 Nov 2011 20:33:16 +1100 From: Dave Chinner To: Hidetoshi Seto Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] 198, 240: check presence of aiodio_sparce2 Subject: Re: [PATCH] 198, 240: check presence of aiodio_sparce2 Message-ID: <20111122093316.GB8098@dastard> References: <4ECB3DCA.5000509@jp.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4ECB3DCA.5000509@jp.fujitsu.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1321954399 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1452 1.0000 -1.1282 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.13 X-Barracuda-Spam-Status: No, SCORE=-1.13 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80957 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 22, 2011 at 03:14:34PM +0900, Hidetoshi Seto wrote: > Use same trick with: > commit 4e9072472fbc56b9d4c8ee8094cc62ce793df9b7 > Gracefully fail aio tests if they weren't built Good idea, but given this check is now repeated in multiple places, wrapping it in a "_require_aiodio" helper function is probably in order. It might also be useful to define AIODIO_SPARSE and AIODIO_SPARSE2 variables (similar to, say, XFS_IO_PROG) so that it doesn't have to be open coded in all the tests.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From seto.hidetoshi@jp.fujitsu.com Tue Nov 22 03:45:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAM9jBgv133054 for ; Tue, 22 Nov 2011 03:45:11 -0600 X-ASG-Debug-ID: 1321955109-6d46005b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fgwmail5.fujitsu.co.jp (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9779215822D1 for ; Tue, 22 Nov 2011 01:45:10 -0800 (PST) Received: from fgwmail5.fujitsu.co.jp (fgwmail5.fujitsu.co.jp [192.51.44.35]) by cuda.sgi.com with ESMTP id 1rTBGOdC6aOylVQd for ; Tue, 22 Nov 2011 01:45:10 -0800 (PST) Received: from m1.gw.fujitsu.co.jp (unknown [10.0.50.71]) by fgwmail5.fujitsu.co.jp (Postfix) with ESMTP id 5A9F73EE0C0 for ; Tue, 22 Nov 2011 18:45:08 +0900 (JST) Received: from smail (m1 [127.0.0.1]) by outgoing.m1.gw.fujitsu.co.jp (Postfix) with ESMTP id 43D1145DE59 for ; Tue, 22 Nov 2011 18:45:08 +0900 (JST) Received: from s1.gw.fujitsu.co.jp (s1.gw.fujitsu.co.jp [10.0.50.91]) by m1.gw.fujitsu.co.jp (Postfix) with ESMTP id 2B68B45DE58 for ; Tue, 22 Nov 2011 18:45:08 +0900 (JST) Received: from s1.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s1.gw.fujitsu.co.jp (Postfix) with ESMTP id 1D5881DB8042 for ; Tue, 22 Nov 2011 18:45:08 +0900 (JST) Received: from m107.s.css.fujitsu.com (m107.s.css.fujitsu.com [10.240.81.147]) by s1.gw.fujitsu.co.jp (Postfix) with ESMTP id DE7FB1DB8046 for ; Tue, 22 Nov 2011 18:45:07 +0900 (JST) Received: from m107.css.fujitsu.com (m107 [127.0.0.1]) by m107.s.css.fujitsu.com (Postfix) with ESMTP id 2A543860017; Tue, 22 Nov 2011 18:45:07 +0900 (JST) Received: from [127.0.0.1] (unknown [10.124.101.101]) by m107.s.css.fujitsu.com (Postfix) with ESMTP id 5ACE8860019; Tue, 22 Nov 2011 18:45:06 +0900 (JST) X-SecurityPolicyCheck-FJ: OK by FujitsuOutboundMailChecker v1.3.1 Received: from FMVDA2A041[10.124.101.101] by FMVDA2A041 (FujitsuOutboundMailChecker v1.3.1/9992[10.124.101.101]); Tue, 22 Nov 2011 18:45:02 +0900 (JST) Message-ID: <4ECB6F16.5090002@jp.fujitsu.com> Date: Tue, 22 Nov 2011 18:44:54 +0900 From: Hidetoshi Seto User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: Dave Chinner CC: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] 198, 240: check presence of aiodio_sparce2 Subject: Re: [PATCH] 198, 240: check presence of aiodio_sparce2 References: <4ECB3DCA.5000509@jp.fujitsu.com> <20111122093316.GB8098@dastard> In-Reply-To: <20111122093316.GB8098@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: fgwmail5.fujitsu.co.jp[192.51.44.35] X-Barracuda-Start-Time: 1321955110 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0050 1.0000 -1.9883 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.99 X-Barracuda-Spam-Status: No, SCORE=-1.99 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80958 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean (2011/11/22 18:33), Dave Chinner wrote: > Good idea, but given this check is now repeated in multiple places, > wrapping it in a "_require_aiodio" helper function is probably in > order. Good point. OK, I'll make a patch to implement the "_require_aiodio" helper. Thanks, H.Seto From BATV+6d91dd2e57fc0b77ac18+3012+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 22 04:23:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMANbBR136003 for ; Tue, 22 Nov 2011 04:23:38 -0600 X-ASG-Debug-ID: 1321957414-24f200640000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9F7D91393DBE for ; Tue, 22 Nov 2011 02:23:34 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id dWtrRCQKtIeF9L1K for ; Tue, 22 Nov 2011 02:23:34 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RSnVj-0000tv-Ps; Tue, 22 Nov 2011 10:23:31 +0000 Date: Tue, 22 Nov 2011 05:23:31 -0500 From: Christoph Hellwig To: Chandra Seetharaman Cc: Christoph Hellwig , XFS Mailing List X-ASG-Orig-Subj: Re: [PATCH] xfs: Remove the entries from the queue while waking them up. Subject: Re: [PATCH] xfs: Remove the entries from the queue while waking them up. Message-ID: <20111122102331.GA32485@infradead.org> References: <1321644054.2201.80.camel@chandra-lucid.austin.ibm.com> <20111119181929.GA25739@infradead.org> <1321902701.2201.141.camel@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1321902701.2201.141.camel@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321957414 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80961 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 21, 2011 at 01:11:41PM -0600, Chandra Seetharaman wrote: > The code does not assume that it got the space when it wakes up. After > every wake up it does check for free bytes available and compares to > required bytes before granting the bytes to itself. (IOW, after waking > up it behaves the same way as the lock-less case) > > As Dave pointed, I can see only the signal case to be effecting this > scenario. With that case in mind, I can see one change required to my > patch: Add the ticket to the list the second time (in a function) only > if the t_queue is not empty. You can still leak with the process added to the queue if you get a wakeup and there is space available. And your second patch now has to re-add conditional add to queue band aids that the first one so nicely removed. My version of that patch has the big advantage of actually making the whole scheme mirror that of a wait queue. In fact we could use workqueues and the helpers for it later (except for the waker side, which is special). From wkendall@sgi.com Tue Nov 22 08:30:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMEUxJb147867 for ; Tue, 22 Nov 2011 08:30:59 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id 7FB9FAC001; Tue, 22 Nov 2011 06:30:55 -0800 (PST) Received: from [134.15.69.177] (cf-vpn-sw-corp-69-177.corp.sgi.com [134.15.69.177]) by estes.americas.sgi.com (Postfix) with ESMTP id 1DA517000763; Tue, 22 Nov 2011 08:30:55 -0600 (CST) Message-ID: <4ECBB21E.9040205@sgi.com> Date: Tue, 22 Nov 2011 08:30:54 -0600 From: Bill Kendall User-Agent: Thunderbird 1.5.0.14ubu (X11/20080502) MIME-Version: 1.0 To: Gim Leong Chin Cc: xfs@oss.sgi.com Subject: Re: Interrupted xfsdump Resume Behaviour for Regular Dump File References: <1321794858.60631.YahooMailClassic@web190714.mail.sg3.yahoo.com> In-Reply-To: <1321794858.60631.YahooMailClassic@web190714.mail.sg3.yahoo.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean If you look at the inventory after an interrupted backup, it will indicate the stream (and media file) start and end points. If the end point is "ino 0 offset 0", then a resumed restore will end up backing up everything again. If you can, please try this with the top-of-tree code from the git tree on kernel.org. I did a quick test and it seems to be working there. Note that if you're backing up to stdout, xfsdump cannot determine when the output is safely on media, so a resumed backup will always be a full backup. Bill Gim Leong Chin wrote: > Hi, > > I have observed this since some time back. I have just done an experiment. > > 1) Using xfsdump 3.0.6, I first did a full dump to regular file and restore, checked that every thing is correct. > > 2) I then did the same dump again, but interrupted it. Then I resumed the dump. I noted that the resumed dump file is the exact same size as the full dump file. > > 3) First I did a cumulative restore, with the interrupted dump file, followed by the resumed dump file. I checked that the restore is correct. > > 4) I then did a non-cumulative restore, using only resumed dump file. The resume is successful, and I checked that the restore is correct. > > The logs are attached. > > The conclusion is that the so-called resume of an interrupted dump session to regular file produces a full dump file, that is sufficient by itself to do the full restore. > > Are my observations of the behaviour of xfsdump correct? > > > Everything was done on openSUSE 11.4 x86_64. > > > GL > > > ------------------------------------------------------------------------ > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From sandeen@sandeen.net Tue Nov 22 09:06:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMF6DDF149524 for ; Tue, 22 Nov 2011 09:06:13 -0600 X-ASG-Debug-ID: 1321974370-3cd800260000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E18A61D27FC4 for ; Tue, 22 Nov 2011 07:06:10 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id rcH6BnPZdBvDGAD5 for ; Tue, 22 Nov 2011 07:06:10 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id CA65249637CE; Tue, 22 Nov 2011 09:06:09 -0600 (CST) Message-ID: <4ECBBA61.4050704@sandeen.net> Date: Tue, 22 Nov 2011 09:06:09 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: Gregory Farnum CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: EFSCORRUPTED on mount? Subject: Re: EFSCORRUPTED on mount? References: In-Reply-To: X-Enigmail-Version: 1.3.3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1321974370 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80980 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/21/11 12:06 PM, Gregory Farnum wrote: > While working with a Ceph node running XFS we somehow managed to > corrupt our filesystem. I don't think there were any hard powercycles > on this node, but while starting up after a kernel upgrade (it's > running 3.1) the daemon was performing its usual startup sequence (a > lot of file truncates, mostly) when it got an error out of the > filesystem: Others have had good comments but also: > 2011-11-17 16:00:37.294876 7f83f3eef720 filestore(/mnt/osd.17) > truncate meta/pginfo_12.7c8/0 size 0 > 2011-11-17 16:00:37.483407 7f83f3eef720 filestore(/mnt/osd.17) > truncate meta/pginfo_12.7c8/0 size 0 = -117 > 2011-11-17 16:00:37.483476 7f83f3eef720 filestore(/mnt/osd.17) error > error 117: Structure needs cleaning not handled was there anything in dmesg/system logs right at this point? XFS should have said something about this original error. -Eric > When I tried to look at the filesystem, it failed with EIO. When I > tried to mount the filesystem after a remount, it gave me an internal > error: > > root@cephstore6358:~# mount /dev/sdg1 /mnt/osd.17 > 2011 Nov 18 14:52:47 cephstore6358 [82374.729383] XFS: Internal error > XFS_WANT_CORRUPTED_GOTO at line 1664 of file fs/xfs/xfs_alloc.c. > Caller 0xffffffff811d6b71 > 2011 Nov 18 14:52:47 cephstore6358 [82374.729386] > 2011 Nov 18 14:52:47 cephstore6358 [82374.758262] XFS (sdg1): Internal > error xfs_trans_cancel at line 1928 of file fs/xfs/xfs_trans.c. > Caller 0xffffffff811fa463 > 2011 Nov 18 14:52:47 cephstore6358 [82374.758265] > 2011 Nov 18 14:52:47 cephstore6358 [82374.758352] XFS (sdg1): > Corruption of in-memory data detected. Shutting down filesystem > 2011 Nov 18 14:52:47 cephstore6358 [82374.758356] XFS (sdg1): Please > umount the filesystem and rectify the problem(s) > 2011 Nov 18 14:52:47 cephstore6358 [82374.758364] XFS (sdg1): Failed > to recover EFIs > mount: Structure needs cleaning > > dmesg had a little more output: > > dmesg says: > [82373.779312] XFS (sdg1): Mounting Filesystem > [82373.930531] XFS (sdg1): Starting recovery (logdev: internal) > [82374.729383] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line > 1664 of file fs/xfs/xfs_alloc.c. Caller 0xffffffff811d6b71 > [82374.729386] > [82374.741959] Pid: 30648, comm: mount Not tainted > 3.1.0-dho-00004-g1ffcb5c-dirty #1 > [82374.749543] Call Trace: > [82374.751994] [] ? xfs_free_ag_extent+0x4e3/0x698 > [82374.758157] [] ? xfs_setup_devices+0x84/0x84 > [82374.758163] [] ? xfs_setup_devices+0x84/0x84 > [82374.758167] [] ? xfs_free_extent+0xb6/0xf9 > [82374.758171] [] ? kmem_zone_alloc+0x58/0x9e > [82374.758179] [] ? xfs_trans_get_efd+0x21/0x2a > [82374.758185] [] ? xlog_recover_process_efi+0x113/0x172 > [82374.758190] [] ? xlog_recover_process_efis+0x4e/0x8e > [82374.758194] [] ? xlog_recover_finish+0x14/0x88 > [82374.758199] [] ? xfs_mountfs+0x46c/0x56a > [82374.758204] [] ? xfs_fs_fill_super+0x16d/0x244 > [82374.758213] [] ? mount_bdev+0x13d/0x198 > [82374.758218] [] ? mount_fs+0xc/0xa6 > [82374.758225] [] ? vfs_kern_mount+0x61/0x97 > [82374.758230] [] ? do_kern_mount+0x49/0xd6 > [82374.758234] [] ? do_mount+0x6f6/0x75d > [82374.758241] [] ? memdup_user+0x3a/0x56 > [82374.758246] [] ? sys_mount+0x88/0xc4 > [82374.758254] [] ? system_call_fastpath+0x16/0x1b > [82374.758262] XFS (sdg1): Internal error xfs_trans_cancel at line > 1928 of file fs/xfs/xfs_trans.c. Caller 0xffffffff811fa463 > > [82374.758265] > [82374.758268] Pid: 30648, comm: mount Not tainted > 3.1.0-dho-00004-g1ffcb5c-dirty #1 > [82374.758270] Call Trace: > [82374.758275] [] ? xfs_trans_cancel+0x56/0xcf > [82374.758279] [] ? xlog_recover_process_efi+0x163/0x172 > [82374.758284] [] ? xlog_recover_process_efis+0x4e/0x8e > [82374.758288] [] ? xlog_recover_finish+0x14/0x88 > [82374.758293] [] ? xfs_mountfs+0x46c/0x56a > [82374.758298] [] ? xfs_fs_fill_super+0x16d/0x244 > [82374.758303] [] ? mount_bdev+0x13d/0x198 > [82374.758307] [] ? mount_fs+0xc/0xa6 > [82374.758312] [] ? vfs_kern_mount+0x61/0x97 > [82374.758317] [] ? do_kern_mount+0x49/0xd6 > [82374.758321] [] ? do_mount+0x6f6/0x75d > [82374.758325] [] ? memdup_user+0x3a/0x56 > [82374.758330] [] ? sys_mount+0x88/0xc4 > [82374.758335] [] ? system_call_fastpath+0x16/0x1b > [82374.758341] XFS (sdg1): xfs_do_force_shutdown(0x8) called from line > 1929 of file fs/xfs/xfs_trans.c. Return address = 0xffffffff81201ee6 > [82374.758352] XFS (sdg1): Corruption of in-memory data detected. > Shutting down filesystem > [82374.758356] XFS (sdg1): Please umount the filesystem and rectify > the problem(s) > [82374.758364] XFS (sdg1): Failed to recover EFIs > [82374.758367] XFS (sdg1): log mount finish failed > > xfs_check doesn't give me much either, since I assume the errors above > are involved in log replay: > root@cephstore6358:~# xfs_check -v /dev/sdg1 > ERROR: The filesystem has valuable metadata changes in a log which needs to > be replayed. Mount the filesystem to replay the log, and unmount it before > re-running xfs_check. If you are unable to mount the filesystem, then use > the xfs_repair -L option to destroy the log and attempt a repair. > Note that destroying the log may cause corruption -- please attempt a mount > of the filesystem before doing this. > > Is there something useful I can do about this? Data I can provide to > help track down what broke? > -Greg > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From gregory.farnum@dreamhost.com Tue Nov 22 12:47:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMIlRJG163851 for ; Tue, 22 Nov 2011 12:47:27 -0600 X-ASG-Debug-ID: 1321987645-5abb01930000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-yx0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B2FE0257819 for ; Tue, 22 Nov 2011 10:47:25 -0800 (PST) Received: from mail-yx0-f181.google.com (mail-yx0-f181.google.com [209.85.213.181]) by cuda.sgi.com with ESMTP id AytfponE4H6zw5vl for ; Tue, 22 Nov 2011 10:47:25 -0800 (PST) Received: by yenm3 with SMTP id m3so678629yen.26 for ; Tue, 22 Nov 2011 10:47:24 -0800 (PST) MIME-Version: 1.0 Received: by 10.50.168.65 with SMTP id zu1mr23256121igb.42.1321987644451; Tue, 22 Nov 2011 10:47:24 -0800 (PST) Received: by 10.231.37.73 with HTTP; Tue, 22 Nov 2011 10:47:24 -0800 (PST) In-Reply-To: <20111122014114.GJ2386@dastard> References: <20111122014114.GJ2386@dastard> Date: Tue, 22 Nov 2011 10:47:24 -0800 Message-ID: X-ASG-Orig-Subj: Re: EFSCORRUPTED on mount? Subject: Re: EFSCORRUPTED on mount? From: Gregory Farnum To: xfs@oss.sgi.com Cc: Dave Chinner , sandeen@sandeen.net Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-yx0-f181.google.com[209.85.213.181] X-Barracuda-Start-Time: 1321987645 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80994 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 21, 2011 at 5:41 PM, Dave Chinner wrote: > In other words, your admin basically told the system to shutdown > without syncing the data or running shutdown scripts that sync data. > i.e. it forces an immediate reboot while the system is still active, > causing an unclean shutdown and guaranteed data loss. And he's been yelled at appropriately. ;) But the data loss actually isn't a problem for us here as long as the filesystem isn't corrupted. >> But I've been assured this shouldn't have been able to >> corrupt the filesystem, so troubleshooting continues. > > That depends entirely on your hardware. Are you running with > barriers enabled? =A0If you don't have barriers active, then metadata > corruption is entirely possible in this scenarion, especially if the > hardware does a drive reset or power cycle during the reboot > procedure. Even with barriers, there are RAID controllers that > enable back end drive caches and they fail to get flushed and hence > can cause corruption on unclean shutdowns. Barriers on (at least, nobody turned them off); the RAID card is battery-backed; here are megacli dumps: http://pastebin.com/yTskgzWG http://pastebin.com/ekhczycy Sorry if I seem to eager to assume it's an xfs bug but Ceph is a magic machine for taking stable filesystems and making them cry. :/ On Tue, Nov 22, 2011 at 7:06 AM, Eric Sandeen wrote: > Others have had good comments but also: > >> 2011-11-17 16:00:37.294876 7f83f3eef720 filestore(/mnt/osd.17) >> truncate meta/pginfo_12.7c8/0 size 0 >> 2011-11-17 16:00:37.483407 7f83f3eef720 filestore(/mnt/osd.17) >> truncate meta/pginfo_12.7c8/0 size 0 =3D -117 >> 2011-11-17 16:00:37.483476 7f83f3eef720 filestore(/mnt/osd.17) =A0error >> error 117: Structure needs cleaning not handled > > was there anything in dmesg/system logs right at this point? =A0XFS shoul= d > have said something about this original error. Whoops. The following is a sample of what was in dmesg and kern.log after that point but before I did anything else (it repeated a lot but there weren't any other lines of output): xfs/xfs_buf.c. Return address =3D 0xffffffff811c2aa8 [56459.526220] XFS (sdg1): xfs_log_force: error 5 returned. [56489.544153] XFS (sdg1): xfs_log_force: error 5 returned. [56519.562087] XFS (sdg1): xfs_log_force: error 5 returned. [56549.580021] XFS (sdg1): xfs_log_force: error 5 returned. [56579.597956] XFS (sdg1): xfs_log_force: error 5 returned. [56609.615889] XFS (sdg1): xfs_log_force: error 5 returned. [56613.036430] XFS (sdg1): xfs_log_force: error 5 returned. [56613.041731] XFS (sdg1): xfs_do_force_shutdown(0x1) called from line 1037 of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff811c2aa8 [56619.430497] XFS (sdg1): xfs_log_force: error 5 returned. [56619.435796] XFS (sdg1): xfs_do_force_shutdown(0x1) called from line 1037 of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff811c2aa8 Thanks! -Greg From sandeen@sandeen.net Tue Nov 22 12:52:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMIqskT164117 for ; Tue, 22 Nov 2011 12:52:55 -0600 X-ASG-Debug-ID: 1321987972-316901f40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 01FC01D11A62 for ; Tue, 22 Nov 2011 10:52:52 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id HQM84De9x7EVdCsU for ; Tue, 22 Nov 2011 10:52:52 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 3DD2B496328B; Tue, 22 Nov 2011 12:52:52 -0600 (CST) Message-ID: <4ECBEF83.5020607@sandeen.net> Date: Tue, 22 Nov 2011 12:52:51 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: Gregory Farnum CC: xfs@oss.sgi.com, Dave Chinner X-ASG-Orig-Subj: Re: EFSCORRUPTED on mount? Subject: Re: EFSCORRUPTED on mount? References: <20111122014114.GJ2386@dastard> In-Reply-To: X-Enigmail-Version: 1.3.3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1321987973 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80996 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/22/11 12:47 PM, Gregory Farnum wrote: > On Tue, Nov 22, 2011 at 7:06 AM, Eric Sandeen wrote: >> > Others have had good comments but also: >> > >>> >> 2011-11-17 16:00:37.294876 7f83f3eef720 filestore(/mnt/osd.17) >>> >> truncate meta/pginfo_12.7c8/0 size 0 >>> >> 2011-11-17 16:00:37.483407 7f83f3eef720 filestore(/mnt/osd.17) >>> >> truncate meta/pginfo_12.7c8/0 size 0 = -117 >>> >> 2011-11-17 16:00:37.483476 7f83f3eef720 filestore(/mnt/osd.17) error >>> >> error 117: Structure needs cleaning not handled >> > >> > was there anything in dmesg/system logs right at this point? XFS should >> > have said something about this original error. > Whoops. The following is a sample of what was in dmesg and kern.log > after that point but before I did anything else (it repeated a lot but > there weren't any other lines of output): > xfs/xfs_buf.c. Return address = 0xffffffff811c2aa8 > [56459.526220] XFS (sdg1): xfs_log_force: error 5 returned. > [56489.544153] XFS (sdg1): xfs_log_force: error 5 returned. > [56519.562087] XFS (sdg1): xfs_log_force: error 5 returned. > [56549.580021] XFS (sdg1): xfs_log_force: error 5 returned. > [56579.597956] XFS (sdg1): xfs_log_force: error 5 returned. > [56609.615889] XFS (sdg1): xfs_log_force: error 5 returned. > [56613.036430] XFS (sdg1): xfs_log_force: error 5 returned. Ok, error 5 is EIO: 8 include/asm-generic/errno-base.h 8 #define EIO 5 So the very first error you saw was "xfs_do_force_shutdown(0x1) called from line..." ? Or the "xfs_log_force error 5 returned?" I'm wondering if there was more before this. It's worth looking carefully to see the very first problem reported by xfs, and posibly from storage before that. (i.e. did your storage go wonky?) -Eric > [56613.041731] XFS (sdg1): xfs_do_force_shutdown(0x1) called from line > 1037 of file fs/xfs/xfs_buf.c. Return address = 0xffffffff811c2aa8 > [56619.430497] XFS (sdg1): xfs_log_force: error 5 returned. > [56619.435796] XFS (sdg1): xfs_do_force_shutdown(0x1) called from line > 1037 of file fs/xfs/xfs_buf.c. Return address = 0xffffffff811c2aa8 > > Thanks! > -Greg > From gregory.farnum@dreamhost.com Tue Nov 22 13:29:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMJTB7R166275 for ; Tue, 22 Nov 2011 13:29:11 -0600 X-ASG-Debug-ID: 1321990149-317002c10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-iy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1BEF21D29B1C for ; Tue, 22 Nov 2011 11:29:09 -0800 (PST) Received: from mail-iy0-f181.google.com (mail-iy0-f181.google.com [209.85.210.181]) by cuda.sgi.com with ESMTP id i7DfLj7ArlaIVw2U for ; Tue, 22 Nov 2011 11:29:09 -0800 (PST) Received: by iaen33 with SMTP id n33so616982iae.26 for ; Tue, 22 Nov 2011 11:29:09 -0800 (PST) MIME-Version: 1.0 Received: by 10.231.50.202 with SMTP id a10mr5821819ibg.39.1321990149606; Tue, 22 Nov 2011 11:29:09 -0800 (PST) Received: by 10.231.37.73 with HTTP; Tue, 22 Nov 2011 11:29:09 -0800 (PST) In-Reply-To: <4ECBEF83.5020607@sandeen.net> References: <20111122014114.GJ2386@dastard> <4ECBEF83.5020607@sandeen.net> Date: Tue, 22 Nov 2011 11:29:09 -0800 Message-ID: X-ASG-Orig-Subj: Re: EFSCORRUPTED on mount? Subject: Re: EFSCORRUPTED on mount? From: Gregory Farnum To: Eric Sandeen Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-iy0-f181.google.com[209.85.210.181] X-Barracuda-Start-Time: 1321990150 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.80998 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 22, 2011 at 10:52 AM, Eric Sandeen wrote: > Ok, error 5 is EIO: > > 8 include/asm-generic/errno-base.h =A0 =A0 =A0 =A08 #define EIO 5 > > So the very first error you saw was "xfs_do_force_shutdown(0x1) called fr= om line..." ? > Or the "xfs_log_force error 5 returned?" =A0I'm wondering if there was mo= re > before this. > > It's worth looking carefully to see the very first problem reported by xf= s, > and posibly from storage before that. (i.e. did your storage go wonky?) Oh, we have a few more logs than I'd thought to look for. The xfs related messages from bootup after the kernel upgrade: Nov 17 16:01:01 cephstore6358 kernel: [ 1.924668] SGI XFS with security attributes, large block/inode numbers, no debug enabled ... Nov 17 16:01:01 cephstore6358 kernel: [ 190.047204] XFS (sdc1): Mounting Filesystem Nov 17 16:01:01 cephstore6358 kernel: [ 190.198126] XFS (sdc1): Starting recovery (logdev: internal) Nov 17 16:01:01 cephstore6358 kernel: [ 190.281929] XFS (sdc1): Ending recovery (logdev: internal) Nov 17 16:01:01 cephstore6358 kernel: [ 190.296303] XFS (sde1): Mounting Filesystem Nov 17 16:01:01 cephstore6358 kernel: [ 190.430809] XFS (sde1): Starting recovery (logdev: internal) Nov 17 16:01:01 cephstore6358 kernel: [ 197.486417] XFS (sde1): Ending recovery (logdev: internal) Nov 17 16:01:01 cephstore6358 kernel: [ 197.492596] XFS (sdg1): Mounting Filesystem Nov 17 16:01:01 cephstore6358 kernel: [ 197.652085] XFS (sdg1): Starting recovery (logdev: internal) Nov 17 16:01:01 cephstore6358 kernel: [ 197.724493] XFS (sdg1): Ending recovery (logdev: internal) Nov 17 16:01:01 cephstore6358 kernel: [ 197.730526] XFS (sdi1): Mounting Filesystem Nov 17 16:01:01 cephstore6358 kernel: [ 197.871074] XFS (sdi1): Starting recovery (logdev: internal) Nov 17 16:01:01 cephstore6358 kernel: [ 206.570177] XFS (sdi1): Ending recovery (logdev: internal) Nov 17 16:01:01 cephstore6358 kernel: [ 206.576329] XFS (sdk1): Mounting Filesystem Nov 17 16:01:01 cephstore6358 kernel: [ 206.738760] XFS (sdk1): Starting recovery (logdev: internal) Nov 17 16:01:01 cephstore6358 kernel: [ 206.823346] XFS (sdk1): Ending recovery (logdev: internal) Nov 17 16:01:01 cephstore6358 kernel: [ 206.837938] XFS (sdm1): Mounting Filesystem Nov 17 16:01:01 cephstore6358 kernel: [ 206.962455] XFS (sdm1): Starting recovery (logdev: internal) Nov 17 16:01:01 cephstore6358 kernel: [ 207.062120] XFS (sdm1): Ending recovery (logdev: internal) Nov 17 16:01:01 cephstore6358 kernel: [ 207.078134] XFS (sdo1): Mounting Filesystem Nov 17 16:01:01 cephstore6358 kernel: [ 207.240052] XFS (sdo1): Starting recovery (logdev: internal) Nov 17 16:01:01 cephstore6358 kernel: [ 207.321602] XFS (sdo1): Ending recovery (logdev: internal) ... Nov 17 16:01:01 cephstore6358 kernel: [ 214.214688] XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1664 of file fs/xfs/xfs_alloc.c. Caller 0xffffffff811d6b71 Nov 17 16:01:01 cephstore6358 kernel: [ 214.214692] Nov 17 16:01:01 cephstore6358 kernel: [ 214.227313] Pid: 11196, comm: ceph-osd Not tainted 3.1.0-dho-00004-g1ffcb5c-dirty #1 Nov 17 16:01:01 cephstore6358 kernel: [ 214.235056] Call Trace: Nov 17 16:01:01 cephstore6358 kernel: [ 214.237530] [] ? xfs_free_ag_extent+0x4e3/0x698 Nov 17 16:01:01 cephstore6358 kernel: [ 214.243717] [] ? xfs_free_extent+0xb6/0xf9 Nov 17 16:01:01 cephstore6358 kernel: [ 214.249468] [] ? kmem_zone_alloc+0x58/0x9e Nov 17 16:01:01 cephstore6358 kernel: [ 214.255220] [] ? xfs_trans_get_efd+0x21/0x2a Nov 17 16:01:01 cephstore6358 kernel: [ 214.261159] [] ? xfs_bmap_finish+0xeb/0x160 Nov 17 16:01:01 cephstore6358 kernel: [ 214.266993] [] ? xfs_itruncate_extents+0xe8/0x1d0 Nov 17 16:01:01 cephstore6358 kernel: [ 214.273361] [] ? xfs_itruncate_data+0x83/0xee Nov 17 16:01:01 cephstore6358 kernel: [ 214.279362] [] ? xfs_setattr_size+0x246/0x36c Nov 17 16:01:01 cephstore6358 kernel: [ 214.285363] [] ? xfs_vn_setattr+0x1b/0x2f Nov 17 16:01:01 cephstore6358 kernel: [ 214.291031] [] ? notify_change+0x16d/0x23e Nov 17 16:01:01 cephstore6358 kernel: [ 214.296776] [] ? do_truncate+0x68/0x86 Nov 17 16:01:01 cephstore6358 kernel: [ 214.302172] [] ? sys_truncate+0x171/0x173 Nov 17 16:01:01 cephstore6358 kernel: [ 214.307846] [] ? system_call_fastpath+0x16/0x1b Nov 17 16:01:01 cephstore6358 kernel: [ 214.314031] XFS (sdg1): xfs_do_force_shutdown(0x8) called from line 3864 of file fs/xfs/xfs_bmap.c. Return address =3D 0xffffffff811e2046 Nov 17 16:01:01 cephstore6358 kernel: [ 214.340451] XFS (sdg1): Corruption of in-memory data detected. Shutting down filesystem Nov 17 16:01:01 cephstore6358 kernel: [ 214.348518] XFS (sdg1): Please umount the filesystem and rectify the problem(s) Nov 17 16:01:01 cephstore6358 kernel: [ 227.789285] XFS (sdg1): xfs_log_force: error 5 returned. Nov 17 16:01:01 cephstore6358 kernel: [ 229.820255] XFS (sdg1): xfs_log_force: error 5 returned. Nov 17 16:01:01 cephstore6358 kernel: [ 229.825550] XFS (sdg1): xfs_do_force_shutdown(0x1) called from line 1037 of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff811c2aa8 Nov 17 16:01:01 cephstore6358 kernel: [ 229.845089] XFS (sdg1): xfs_log_force: error 5 returned. Nov 17 16:01:01 cephstore6358 kernel: [ 229.850388] XFS (sdg1): xfs_do_force_shutdown(0x1) called from line 1037 of file fs/xfs/xfs_buf.c. Return address =3D 0xffffffff811c2aa8 (etc) I don't know the xfs code at all, but that looks like a bug to me =97 either the system got itself into a broken state from valid on-disk structures, or else the (best I can tell properly-ordered, barriered, etc) journal didn't properly protect against brokenness elsewhere. Also note that the initial post-reboot mount succeeded (it didn't break until after doing a series of truncates), and the subsequent ones are failing. -Greg From eflorac@intellique.com Tue Nov 22 14:36:08 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMKa7Sd170453 for ; Tue, 22 Nov 2011 14:36:08 -0600 X-ASG-Debug-ID: 1321994162-1c5900180000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp3-g21.free.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 475C4162E736 for ; Tue, 22 Nov 2011 12:36:03 -0800 (PST) Received: from smtp3-g21.free.fr (smtp3-g21.free.fr [212.27.42.3]) by cuda.sgi.com with ESMTP id HYHC5pHpYw4jgjSZ for ; Tue, 22 Nov 2011 12:36:03 -0800 (PST) Received: from galadriel.home (unknown [82.235.234.79]) by smtp3-g21.free.fr (Postfix) with ESMTP id 16E58A6675; Tue, 22 Nov 2011 21:35:57 +0100 (CET) Date: Tue, 22 Nov 2011 21:35:48 +0100 From: Emmanuel Florac To: hank peng Cc: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 Message-ID: <20111122213548.28715073@galadriel.home> In-Reply-To: References: <20111121170459.GA1327@infradead.org> <20111122014609.GK2386@dastard> Organization: Intellique X-Mailer: Claws Mail 3.7.8 (GTK+ 2.20.1; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: smtp3-g21.free.fr[212.27.42.3] X-Barracuda-Start-Time: 1321994166 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81003 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Le Tue, 22 Nov 2011 11:22:15 +0800 vous =C3=A9criviez: > I think I have already exported the root of my XFS filesystem, am I > right? Yes, and the fsid stuff only relates to NFS v4, and as you aren't providing any fsid, you must be running NFS 3. Now maybe you could use NFS 4 instead of NFS 3? --=20 ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From support@eyespyclassifieds.com Tue Nov 22 14:53:34 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.0 required=5.0 tests=BAYES_50,J_CHICKENPOX_82, SUBJ_ALL_CAPS,T_FRT_BELOW2,URIBL_WS_SURBL autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMKrXGe171299 for ; Tue, 22 Nov 2011 14:53:34 -0600 X-ASG-Debug-ID: 1321995211-23d400670000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from p3nlsmtp05.shr.prod.phx3.secureserver.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id E571610539D5 for ; Tue, 22 Nov 2011 12:53:31 -0800 (PST) Received: from p3nlsmtp05.shr.prod.phx3.secureserver.net (p3nlsmtp05.shr.prod.phx3.secureserver.net [72.167.234.229]) by cuda.sgi.com with SMTP id qTFvxIaduRGKaIDf for ; Tue, 22 Nov 2011 12:53:31 -0800 (PST) Received: (qmail 14317 invoked from network); 22 Nov 2011 20:53:30 -0000 Received: from unknown (HELO P3NW3SH056.phx3.gdhosting.gdg) ([72.167.232.206]) (envelope-sender ) by p3nlsmtp05.shr.prod.phx3.secureserver.net (qmail-ldap-1.03) with SMTP for ; 22 Nov 2011 20:53:29 -0000 Received: from mail pickup service by P3NW3SH056.phx3.gdhosting.gdg with Microsoft SMTPSVC; Tue, 22 Nov 2011 13:53:29 -0700 From: To: "Friend" X-ASG-Orig-Subj: EARN EASY WRIGHT NOW!! Subject: EARN EASY WRIGHT NOW!! Date: Tue, 22 Nov 2011 13:53:29 -0700 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4862 Message-ID: X-OriginalArrivalTime: 22 Nov 2011 20:53:29.0887 (UTC) FILETIME=[CA0B82F0:01CCA958] X-Barracuda-Connect: p3nlsmtp05.shr.prod.phx3.secureserver.net[72.167.234.229] X-Barracuda-Start-Time: 1321995211 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5003 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.75 X-Barracuda-Spam-Status: No, SCORE=0.75 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81003 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean EARN EASY WRIGHT NOW!! Hello Friend, Inviting your friends online in your spare time is a very easy way to make some extra money. Our members are earning more than $5,850 or more by joining this website.. Earn money by referring others to join this website. You will get $39 for each referral. Suppose if someone joins under your referral link and you will get a commission of $39 USD in each.. Is Very Easy To make 5 referrals per day,5 x $39 =$195 earn everyday)So in one month? $195 x 30 days=$5,850 /month for just referring others. This is Different to Other Work at Home Opportunities.. IMPORTANT: NOVEMBER,- 24 -2011 is the Cut-Off Date to lock in your position! Be sure to JOIN NOW to secure ALL the commission before they go to someone else! You will be paid on Nov 30/2011 Big Company and Click Bank pay you Direct Paypal Credit Card Or no limit of your income. CLICK HERE: bellow And Hits The $5,850 Before Others Can Do... ==>> http://worldurl.webs.com/autotrafficavalanche.html Big Companies Are Ready to Pay You Right Now for Your Time [All You Have To Do Is Join the Auto Traffic Avalnche Step-By-Step Process] 1 - Login to the Auto Traffic Avalnche exclusive member's area 2 - Watch the videos 3 - Register with the companies you choose 4 - Start posting your ads 5 - Add some of the other cash boosting techniques you'll find in the guide, when you're ready 6 - Just sit back and watch the money come in! How to promote your referral link on internet? 1. By Placing advertisements in various classified website 2. By sending email to all of your friends in your email address book. 3. By Posting your referral link in various discussion forums 4. By posting link in http://www.answers.yahoo.com 5. By posting the link in http://www.gmail.com 6. By using Yahoo chat, Yahoo groups, Google groups etc CLICK HERE: bellow And Hits The $5,850 Before Others Can Do... ==>> http://worldurl.webs.com/autotrafficavalanche.html Start making money now by this program. So refer more and earn more. To your success, Shelly Ryans This is where you can type a brief description of your site. Email sent by: bestincome@gmail.com (Shelly Ryans) Powered by Eye Spy Classifieds From sandeen@sandeen.net Tue Nov 22 15:53:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMLrB6k173994 for ; Tue, 22 Nov 2011 15:53:11 -0600 X-ASG-Debug-ID: 1321998788-73e600640000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 19E2B26E90A for ; Tue, 22 Nov 2011 13:53:09 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 6dMsqCN52SynmY5e for ; Tue, 22 Nov 2011 13:53:09 -0800 (PST) Received: from Liberator-563.local (ip67-152-153-47.z153-152-67.customer.algx.net [67.152.153.47]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 353CB494354A; Tue, 22 Nov 2011 15:53:08 -0600 (CST) Message-ID: <4ECC19C3.5070905@sandeen.net> Date: Tue, 22 Nov 2011 15:53:07 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: Gregory Farnum CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: EFSCORRUPTED on mount? Subject: Re: EFSCORRUPTED on mount? References: <20111122014114.GJ2386@dastard> <4ECBEF83.5020607@sandeen.net> In-Reply-To: X-Enigmail-Version: 1.3.3 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1321998790 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81008 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/22/11 1:29 PM, Gregory Farnum wrote: > On Tue, Nov 22, 2011 at 10:52 AM, Eric Sandeen wrote: >> Ok, error 5 is EIO: >> >> 8 include/asm-generic/errno-base.h 8 #define EIO 5 >> >> So the very first error you saw was "xfs_do_force_shutdown(0x1) called from line..." ? >> Or the "xfs_log_force error 5 returned?" I'm wondering if there was more >> before this. >> >> It's worth looking carefully to see the very first problem reported by xfs, >> and posibly from storage before that. (i.e. did your storage go wonky?) > Oh, we have a few more logs than I'd thought to look for. The xfs > related messages from bootup after the kernel upgrade: > Nov 17 16:01:01 cephstore6358 kernel: [ 1.924668] SGI XFS with > security attributes, large block/inode numbers, no debug enabled > ... > Nov 17 16:01:01 cephstore6358 kernel: [ 190.047204] XFS (sdc1): > Mounting Filesystem > Nov 17 16:01:01 cephstore6358 kernel: [ 190.198126] XFS (sdc1): > Starting recovery (logdev: internal) > Nov 17 16:01:01 cephstore6358 kernel: [ 190.281929] XFS (sdc1): > Ending recovery (logdev: internal) > Nov 17 16:01:01 cephstore6358 kernel: [ 190.296303] XFS (sde1): > Mounting Filesystem > Nov 17 16:01:01 cephstore6358 kernel: [ 190.430809] XFS (sde1): > Starting recovery (logdev: internal) > Nov 17 16:01:01 cephstore6358 kernel: [ 197.486417] XFS (sde1): > Ending recovery (logdev: internal) > Nov 17 16:01:01 cephstore6358 kernel: [ 197.492596] XFS (sdg1): > Mounting Filesystem > Nov 17 16:01:01 cephstore6358 kernel: [ 197.652085] XFS (sdg1): > Starting recovery (logdev: internal) > Nov 17 16:01:01 cephstore6358 kernel: [ 197.724493] XFS (sdg1): > Ending recovery (logdev: internal) so by here sdg1 had to go through recovery, but was otherwise happy. > Nov 17 16:01:01 cephstore6358 kernel: [ 197.730526] XFS (sdi1): > Mounting Filesystem > Nov 17 16:01:01 cephstore6358 kernel: [ 197.871074] XFS (sdi1): > Starting recovery (logdev: internal) > Nov 17 16:01:01 cephstore6358 kernel: [ 206.570177] XFS (sdi1): > Ending recovery (logdev: internal) > Nov 17 16:01:01 cephstore6358 kernel: [ 206.576329] XFS (sdk1): > Mounting Filesystem > Nov 17 16:01:01 cephstore6358 kernel: [ 206.738760] XFS (sdk1): > Starting recovery (logdev: internal) > Nov 17 16:01:01 cephstore6358 kernel: [ 206.823346] XFS (sdk1): > Ending recovery (logdev: internal) > Nov 17 16:01:01 cephstore6358 kernel: [ 206.837938] XFS (sdm1): > Mounting Filesystem > Nov 17 16:01:01 cephstore6358 kernel: [ 206.962455] XFS (sdm1): > Starting recovery (logdev: internal) > Nov 17 16:01:01 cephstore6358 kernel: [ 207.062120] XFS (sdm1): > Ending recovery (logdev: internal) > Nov 17 16:01:01 cephstore6358 kernel: [ 207.078134] XFS (sdo1): > Mounting Filesystem > Nov 17 16:01:01 cephstore6358 kernel: [ 207.240052] XFS (sdo1): > Starting recovery (logdev: internal) > Nov 17 16:01:01 cephstore6358 kernel: [ 207.321602] XFS (sdo1): > Ending recovery (logdev: internal) > ... All that recovery a result of the icky shutdown procedure I guess.... > Nov 17 16:01:01 cephstore6358 kernel: [ 214.214688] XFS: Internal > error XFS_WANT_CORRUPTED_GOTO at line 1664 of file fs/xfs/xfs_alloc.c. > Caller 0xffffffff811d6b71 And this was the first indication of trouble. > Nov 17 16:01:01 cephstore6358 kernel: [ 214.214692] > Nov 17 16:01:01 cephstore6358 kernel: [ 214.227313] Pid: 11196, comm: > ceph-osd Not tainted 3.1.0-dho-00004-g1ffcb5c-dirty #1 > Nov 17 16:01:01 cephstore6358 kernel: [ 214.235056] Call Trace: > Nov 17 16:01:01 cephstore6358 kernel: [ 214.237530] > [] ? xfs_free_ag_extent+0x4e3/0x698 > Nov 17 16:01:01 cephstore6358 kernel: [ 214.243717] > [] ? xfs_free_extent+0xb6/0xf9 > Nov 17 16:01:01 cephstore6358 kernel: [ 214.249468] > [] ? kmem_zone_alloc+0x58/0x9e > Nov 17 16:01:01 cephstore6358 kernel: [ 214.255220] > [] ? xfs_trans_get_efd+0x21/0x2a > Nov 17 16:01:01 cephstore6358 kernel: [ 214.261159] > [] ? xfs_bmap_finish+0xeb/0x160 > Nov 17 16:01:01 cephstore6358 kernel: [ 214.266993] > [] ? xfs_itruncate_extents+0xe8/0x1d0 > Nov 17 16:01:01 cephstore6358 kernel: [ 214.273361] > [] ? xfs_itruncate_data+0x83/0xee > Nov 17 16:01:01 cephstore6358 kernel: [ 214.279362] > [] ? xfs_setattr_size+0x246/0x36c > Nov 17 16:01:01 cephstore6358 kernel: [ 214.285363] > [] ? xfs_vn_setattr+0x1b/0x2f > Nov 17 16:01:01 cephstore6358 kernel: [ 214.291031] > [] ? notify_change+0x16d/0x23e > Nov 17 16:01:01 cephstore6358 kernel: [ 214.296776] > [] ? do_truncate+0x68/0x86 > Nov 17 16:01:01 cephstore6358 kernel: [ 214.302172] > [] ? sys_truncate+0x171/0x173 > Nov 17 16:01:01 cephstore6358 kernel: [ 214.307846] > [] ? system_call_fastpath+0x16/0x1b > Nov 17 16:01:01 cephstore6358 kernel: [ 214.314031] XFS (sdg1): > xfs_do_force_shutdown(0x8) called from line 3864 of file > fs/xfs/xfs_bmap.c. Return address = 0xffffffff811e2046 by here it had shut down, and you were just riding along when it went kablooey. Any non-xfs error just before this point? > Nov 17 16:01:01 cephstore6358 kernel: [ 214.340451] XFS (sdg1): > Corruption of in-memory data detected. Shutting down filesystem > Nov 17 16:01:01 cephstore6358 kernel: [ 214.348518] XFS (sdg1): > Please umount the filesystem and rectify the problem(s) > Nov 17 16:01:01 cephstore6358 kernel: [ 227.789285] XFS (sdg1): > xfs_log_force: error 5 returned. > Nov 17 16:01:01 cephstore6358 kernel: [ 229.820255] XFS (sdg1): > xfs_log_force: error 5 returned. To be honest I'm not sure offhand if this error 5 (EIO) is a result of the shutdown, or the cause of it. -Eric > Nov 17 16:01:01 cephstore6358 kernel: [ 229.825550] XFS (sdg1): > xfs_do_force_shutdown(0x1) called from line 1037 of file > fs/xfs/xfs_buf.c. Return address = 0xffffffff811c2aa8 > Nov 17 16:01:01 cephstore6358 kernel: [ 229.845089] XFS (sdg1): > xfs_log_force: error 5 returned. > Nov 17 16:01:01 cephstore6358 kernel: [ 229.850388] XFS (sdg1): > xfs_do_force_shutdown(0x1) called from line 1037 of file > fs/xfs/xfs_buf.c. Return address = 0xffffffff811c2aa8 > (etc) > > I don't know the xfs code at all, but that looks like a bug to me — > either the system got itself into a broken state from valid on-disk > structures, or else the (best I can tell properly-ordered, barriered, > etc) journal didn't properly protect against brokenness elsewhere. > Also note that the initial post-reboot mount succeeded (it didn't > break until after doing a series of truncates), and the subsequent > ones are failing. > -Greg > From BATV+6d91dd2e57fc0b77ac18+3012+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 22 16:11:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMMBtA9174697 for ; Tue, 22 Nov 2011 16:11:56 -0600 X-ASG-Debug-ID: 1321999911-2ebd01f40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1495D1D2A4E3 for ; Tue, 22 Nov 2011 14:11:51 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id HbdV34Sni8X9bLqy for ; Tue, 22 Nov 2011 14:11:51 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RSyZC-0007eW-4T; Tue, 22 Nov 2011 22:11:50 +0000 Date: Tue, 22 Nov 2011 17:11:50 -0500 From: Christoph Hellwig To: Gregory Farnum Cc: xfs@oss.sgi.com, sandeen@sandeen.net X-ASG-Orig-Subj: Re: EFSCORRUPTED on mount? Subject: Re: EFSCORRUPTED on mount? Message-ID: <20111122221150.GA21028@infradead.org> References: <20111122014114.GJ2386@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1321999912 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81008 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 22, 2011 at 10:47:24AM -0800, Gregory Farnum wrote: > Barriers on (at least, nobody turned them off); the RAID card is > battery-backed; here are megacli dumps: > http://pastebin.com/yTskgzWG > http://pastebin.com/ekhczycy I had a lot of of issues with megaraid cards and their unsafe caching settings, up to the point that I'd recommend staying away from them now. Can you check in the megacli config if the _disk_ write caches are enabled? megaraid adapters used to do that a lot, and given that the disk cache isn't batter backed it's fairly fatal. I think in your dump this one might be the culprit given that SATA disks outside of a few niches come with a writeback cache policy: Disk Cache Policy: Disk's Default try changing that to an explicit writethrough mode - and maybe try running a crash data integrity test like http://www.complang.tuwien.ac.at/anton/hdtest/ on this controller. From BATV+6d91dd2e57fc0b77ac18+3012+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 22 16:15:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMMFH8h174780 for ; Tue, 22 Nov 2011 16:15:18 -0600 X-ASG-Debug-ID: 1322000116-1c5902f20000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D411E162D73A for ; Tue, 22 Nov 2011 14:15:16 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id ZNvjuS0gPqLggxwK for ; Tue, 22 Nov 2011 14:15:16 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RSycV-00007K-MF; Tue, 22 Nov 2011 22:15:15 +0000 Date: Tue, 22 Nov 2011 17:15:15 -0500 From: Christoph Hellwig To: hank peng Cc: Christoph Hellwig , linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 Message-ID: <20111122221515.GA29540@infradead.org> References: <20111121170459.GA1327@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322000116 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81009 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 22, 2011 at 08:19:15AM +0800, hank peng wrote: > > Do you export the root directory of the XFS filesystem, or a > > subdirectory in it? ??If it's the former it should work in theory, > > althrough I'm not sure how well 64-bit inode numbers work with a client > > that old, if it's the latter it needs a few tweaks to work, see > > > The following is what I did: > 1. mkfs.xfs /dev/sdb (whole disk) > 2. create a mount point in my root filesystem: > mkdir /mnt/mymount > 3. monut xfs with inode64 > mount /dev/sdb /mnt/mymount -o inode64 > 4. export it in NFS /etc/exports > /mnt/mymount *(rw, no_root,squash, sync) > > so, is there any problem here? That should work fine, and I've tried it a lot of times. Do you see the same issue when mounting the fs on the server (not recommended for production use, just for testing!) and accessing it from the 2.6.35 kernel nfs client? From BATV+6d91dd2e57fc0b77ac18+3012+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 22 16:16:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMMGBx5174819 for ; Tue, 22 Nov 2011 16:16:12 -0600 X-ASG-Debug-ID: 1322000170-533502950000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 58C8B26F513 for ; Tue, 22 Nov 2011 14:16:10 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id qKgM9lno1o4WaNaM for ; Tue, 22 Nov 2011 14:16:10 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RSydN-0000Fu-Lv; Tue, 22 Nov 2011 22:16:09 +0000 Date: Tue, 22 Nov 2011 17:16:09 -0500 From: Christoph Hellwig To: Emmanuel Florac Cc: hank peng , linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 Message-ID: <20111122221609.GB29540@infradead.org> References: <20111121170459.GA1327@infradead.org> <20111122014609.GK2386@dastard> <20111122213548.28715073@galadriel.home> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111122213548.28715073@galadriel.home> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322000171 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81008 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 22, 2011 at 09:35:48PM +0100, Emmanuel Florac wrote: > Le Tue, 22 Nov 2011 11:22:15 +0800 vous ??criviez: > > > I think I have already exported the root of my XFS filesystem, am I > > right? > > Yes, and the fsid stuff only relates to NFS v4, and as you aren't > providing any fsid, you must be running NFS 3. Now maybe you could use > NFS 4 instead of NFS 3? The fsid option is in no way related to NFSv4. It just overrides the default fsid taken from the st_dev field of the mounted filesystem. From greg@kroah.com Tue Nov 22 16:35:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMMZrqK175875 for ; Tue, 22 Nov 2011 16:35:53 -0600 X-ASG-Debug-ID: 1322001352-1c2503670000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from out2.smtp.messagingengine.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B3E8516DC8A0 for ; Tue, 22 Nov 2011 14:35:52 -0800 (PST) Received: from out2.smtp.messagingengine.com (out2.smtp.messagingengine.com [66.111.4.26]) by cuda.sgi.com with ESMTP id SHcj616YI8fnLAfb for ; Tue, 22 Nov 2011 14:35:52 -0800 (PST) Received: from compute4.internal (compute4.nyi.mail.srv.osa [10.202.2.44]) by gateway1.nyi.mail.srv.osa (Postfix) with ESMTP id ED9C620C10 for ; Tue, 22 Nov 2011 17:35:51 -0500 (EST) Received: from frontend2.nyi.mail.srv.osa ([10.202.2.161]) by compute4.internal (MEProxy); Tue, 22 Nov 2011 17:35:51 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=date:from:to:cc:subject:message-id :references:mime-version:content-type:in-reply-to; s=smtpout; bh=IFY1pyvDtDtyqKpOWhALGcmLoWo=; b=YjP/u+jrSGqCXyzVsa5HAel6C40x 2CIwyLlXgEyGVHT/3NkzNwh/zCXHHi6ZezrkjQik/Vd1vGCNrwpPMxEXtZGAx5u8 jg7MEBt7cBWC1o4BQ9Pb98VtNAAsBpYr3mh/VSq1an0YJsLk8ugroz+eMHxPbn2Z 1p2Ndg5ju+2TtIo= X-Sasl-enc: /BbNe0cMLtissmQzg4BWXXTYLLyfKYPVzEz26wd1zn08 1322001351 Received: from localhost (c-76-121-69-168.hsd1.wa.comcast.net [76.121.69.168]) by mail.messagingengine.com (Postfix) with ESMTPSA id 7D1CE4824F4; Tue, 22 Nov 2011 17:35:51 -0500 (EST) Date: Tue, 22 Nov 2011 13:35:44 -0800 From: Greg KH To: Christoph Hellwig Cc: stable@vger.kernel.org, xfs@oss.sgi.com, Dave Chinner , Alex Elder X-ASG-Orig-Subj: Re: [PATCH 4/9] [PATCH 4/9] xfs: dont serialise direct IO reads on page cache Subject: Re: [PATCH 4/9] [PATCH 4/9] xfs: dont serialise direct IO reads on page cache Message-ID: <20111122213544.GB29127@kroah.com> References: <20111119181336.964593075@bombadil.infradead.org> <20111119181544.111984285@bombadil.infradead.org> <20111122213425.GA29127@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111122213425.GA29127@kroah.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: out2.smtp.messagingengine.com[66.111.4.26] X-Barracuda-Start-Time: 1322001352 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0199 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81011 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 22, 2011 at 01:34:25PM -0800, Greg KH wrote: > On Sat, Nov 19, 2011 at 01:13:40PM -0500, Christoph Hellwig wrote: > > There is no need to grab the i_mutex of the IO lock in exclusive > > mode if we don't need to invalidate the page cache. Taking these > > locks on every direct IO effective serialises them as taking the IO > > lock in exclusive mode has to wait for all shared holders to drop > > the lock. That only happens when IO is complete, so effective it > > prevents dispatch of concurrent direct IO reads to the same inode. > > > > Fix this by taking the IO lock shared to check the page cache state, > > and only then drop it and take the IO lock exclusively if there is > > work to be done. Hence for the normal direct IO case, no exclusive > > locking will occur. > > > > Signed-off-by: Dave Chinner > > Tested-by: Joern Engel > > Reviewed-by: Christoph Hellwig > > Signed-off-by: Alex Elder > > What is the git commit id that matches this patch in Linus's tree? Nevermind, I found it, 0c38a2512df272b14ef4238b476a2e4f70da1479, right? Next time, please include the git commit id of the patch in Linus's tree so I don't have to dig it out like I did for this series. thanks, greg k-h From greg@kroah.com Tue Nov 22 16:35:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMMZqoZ175873 for ; Tue, 22 Nov 2011 16:35:53 -0600 X-ASG-Debug-ID: 1322001350-1c1703400000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from out2.smtp.messagingengine.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id ECB8516DC8A0 for ; Tue, 22 Nov 2011 14:35:50 -0800 (PST) Received: from out2.smtp.messagingengine.com (out2.smtp.messagingengine.com [66.111.4.26]) by cuda.sgi.com with ESMTP id hRu0xrkT43ecilW6 for ; Tue, 22 Nov 2011 14:35:50 -0800 (PST) Received: from compute1.internal (compute1.nyi.mail.srv.osa [10.202.2.41]) by gateway1.nyi.mail.srv.osa (Postfix) with ESMTP id 805B820DAB for ; Tue, 22 Nov 2011 17:35:50 -0500 (EST) Received: from frontend2.nyi.mail.srv.osa ([10.202.2.161]) by compute1.internal (MEProxy); Tue, 22 Nov 2011 17:35:50 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=date:from:to:cc:subject:message-id :references:mime-version:content-type:in-reply-to; s=smtpout; bh=5V4nkBjRSrdwBjoUKrIjwlURSaI=; b=WQ0jFh3OzniwDIs5shzOh7wphu54 /aXCixFmhycmvtrbwD+AMy8FiOVz/ck7yzN587vcOPVhBzMpj0u49Gdl/QDxI0ND xgBnhfSmN/ctZAd8VRfitXqYzwYHBdS0G7kJ3ec7x4sNefGomURlg1qHSukXUHUw OEwFzRnjAuq32MM= X-Sasl-enc: yU4NWWCi4pZaxip57KO6PIiqwHHAB4w53d3LhmGe0Nqf 1322001350 Received: from localhost (c-76-121-69-168.hsd1.wa.comcast.net [76.121.69.168]) by mail.messagingengine.com (Postfix) with ESMTPSA id 0A433482569; Tue, 22 Nov 2011 17:35:49 -0500 (EST) Date: Tue, 22 Nov 2011 13:34:25 -0800 From: Greg KH To: Christoph Hellwig Cc: stable@vger.kernel.org, xfs@oss.sgi.com, Dave Chinner , Alex Elder X-ASG-Orig-Subj: Re: [PATCH 4/9] [PATCH 4/9] xfs: dont serialise direct IO reads on page cache Subject: Re: [PATCH 4/9] [PATCH 4/9] xfs: dont serialise direct IO reads on page cache Message-ID: <20111122213425.GA29127@kroah.com> References: <20111119181336.964593075@bombadil.infradead.org> <20111119181544.111984285@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111119181544.111984285@bombadil.infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: out2.smtp.messagingengine.com[66.111.4.26] X-Barracuda-Start-Time: 1322001351 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81011 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Nov 19, 2011 at 01:13:40PM -0500, Christoph Hellwig wrote: > There is no need to grab the i_mutex of the IO lock in exclusive > mode if we don't need to invalidate the page cache. Taking these > locks on every direct IO effective serialises them as taking the IO > lock in exclusive mode has to wait for all shared holders to drop > the lock. That only happens when IO is complete, so effective it > prevents dispatch of concurrent direct IO reads to the same inode. > > Fix this by taking the IO lock shared to check the page cache state, > and only then drop it and take the IO lock exclusively if there is > work to be done. Hence for the normal direct IO case, no exclusive > locking will occur. > > Signed-off-by: Dave Chinner > Tested-by: Joern Engel > Reviewed-by: Christoph Hellwig > Signed-off-by: Alex Elder What is the git commit id that matches this patch in Linus's tree? thanks, greg k-h > --- > fs/xfs/linux-2.6/xfs_file.c | 17 ++++++++++++++--- > 1 files changed, 14 insertions(+), 3 deletions(-) > > diff --git a/fs/xfs/linux-2.6/xfs_file.c b/fs/xfs/linux-2.6/xfs_file.c > index 7f782af2..93cc02d 100644 > --- a/fs/xfs/linux-2.6/xfs_file.c > +++ b/fs/xfs/linux-2.6/xfs_file.c > @@ -309,7 +309,19 @@ xfs_file_aio_read( > if (XFS_FORCED_SHUTDOWN(mp)) > return -EIO; > > - if (unlikely(ioflags & IO_ISDIRECT)) { > + /* > + * Locking is a bit tricky here. If we take an exclusive lock > + * for direct IO, we effectively serialise all new concurrent > + * read IO to this file and block it behind IO that is currently in > + * progress because IO in progress holds the IO lock shared. We only > + * need to hold the lock exclusive to blow away the page cache, so > + * only take lock exclusively if the page cache needs invalidation. > + * This allows the normal direct IO case of no page cache pages to > + * proceeed concurrently without serialisation. > + */ > + xfs_rw_ilock(ip, XFS_IOLOCK_SHARED); > + if ((ioflags & IO_ISDIRECT) && inode->i_mapping->nrpages) { > + xfs_rw_iunlock(ip, XFS_IOLOCK_SHARED); > xfs_rw_ilock(ip, XFS_IOLOCK_EXCL); > > if (inode->i_mapping->nrpages) { > @@ -322,8 +334,7 @@ xfs_file_aio_read( > } > } > xfs_rw_ilock_demote(ip, XFS_IOLOCK_EXCL); > - } else > - xfs_rw_ilock(ip, XFS_IOLOCK_SHARED); > + } > > trace_xfs_file_read(ip, size, iocb->ki_pos, ioflags); > > -- > 1.7.7 > > > -- > To unsubscribe from this list: send the line "unsubscribe stable" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From BATV+6d91dd2e57fc0b77ac18+3012+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 22 16:46:23 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_63 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMMkMRQ176267 for ; Tue, 22 Nov 2011 16:46:23 -0600 X-ASG-Debug-ID: 1322001981-66b8026b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 194C34F8B87 for ; Tue, 22 Nov 2011 14:46:21 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 6dBrYifsqjYz13AD for ; Tue, 22 Nov 2011 14:46:21 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RSz6b-0006ax-0D; Tue, 22 Nov 2011 22:46:21 +0000 Date: Tue, 22 Nov 2011 17:46:20 -0500 From: Christoph Hellwig To: Arkadiusz Mi??kiewicz Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] repair: avoid ABBA deadlocks on prefetched buffers Subject: Re: [PATCH] repair: avoid ABBA deadlocks on prefetched buffers Message-ID: <20111122224620.GA20107@infradead.org> References: <20111115210953.GA6670@infradead.org> <201111180944.10048.arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201111180944.10048.arekm@maven.pl> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322001982 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81010 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Nov 18, 2011 at 09:44:09AM +0100, Arkadiusz Mi??kiewicz wrote: > On Tuesday 15 of November 2011, Christoph Hellwig wrote: > > Both the prefetch threads and actual repair processing threads can have > > multiple buffers at a time locked, but they do no use a common locker > > order, which can lead to ABBA deadlocks while trying to lock the buffers. > > There is still some issue with deadlocking. > > The last printed messages: > b????dna liczba magiczna 0x41425443 w bloku inobt 2/1438099 > b????dna liczba magiczna 0x41425443 w bloku inobt 2/1438196 > b????dna liczba magiczna 0x41425443 w bloku inobt 2/1438732 > (invalid magic number ... in block inobt ...) It looks like you have a circular loop in the inobt tree, and repair deadlocks trying to read the same node again. Below is a patch working around that by allowing recursive locking for the buffer lock and then letting the normal two strikes and out policy apply. I'm not overly proud of the patch, but in the short term I can't think of anything better. Index: xfsprogs-dev/include/libxfs.h =================================================================== --- xfsprogs-dev.orig/include/libxfs.h 2011-11-22 22:28:23.000000000 +0000 +++ xfsprogs-dev/include/libxfs.h 2011-11-22 22:34:27.000000000 +0000 @@ -226,6 +226,8 @@ typedef struct xfs_buf { unsigned b_bcount; dev_t b_dev; pthread_mutex_t b_lock; + pthread_t b_holder; + unsigned int b_recur; void *b_fsprivate; void *b_fsprivate2; void *b_fsprivate3; Index: xfsprogs-dev/libxfs/rdwr.c =================================================================== --- xfsprogs-dev.orig/libxfs/rdwr.c 2011-11-22 22:28:23.000000000 +0000 +++ xfsprogs-dev/libxfs/rdwr.c 2011-11-22 22:40:01.000000000 +0000 @@ -342,6 +342,8 @@ libxfs_initbuf(xfs_buf_t *bp, dev_t devi list_head_init(&bp->b_lock_list); #endif pthread_mutex_init(&bp->b_lock, NULL); + bp->b_holder = 0; + bp->b_recur = 0; } xfs_buf_t * @@ -410,18 +412,24 @@ libxfs_getbuf_flags(dev_t device, xfs_da return NULL; if (use_xfs_buf_lock) { - if (flags & LIBXFS_GETBUF_TRYLOCK) { - int ret; + int ret; - ret = pthread_mutex_trylock(&bp->b_lock); - if (ret) { - ASSERT(ret == EAGAIN); - cache_node_put(libxfs_bcache, (struct cache_node *)bp); - return NULL; + ret = pthread_mutex_trylock(&bp->b_lock); + if (ret) { + ASSERT(ret == EAGAIN); + if (flags & LIBXFS_GETBUF_TRYLOCK) + goto out_put; + + if (pthread_equal(bp->b_holder, pthread_self())) { + fprintf(stderr, + _("recursive buffer locking detected\n")); + bp->b_recur++; + } else { + pthread_mutex_lock(&bp->b_lock); } - } else { - pthread_mutex_lock(&bp->b_lock); } + + bp->b_holder = pthread_self(); } cache_node_set_priority(libxfs_bcache, (struct cache_node *)bp, @@ -440,6 +448,9 @@ libxfs_getbuf_flags(dev_t device, xfs_da #endif return bp; +out_put: + cache_node_put(libxfs_bcache, (struct cache_node *)bp); + return NULL; } struct xfs_buf * @@ -458,8 +469,14 @@ libxfs_putbuf(xfs_buf_t *bp) list_del_init(&bp->b_lock_list); pthread_mutex_unlock(&libxfs_bcache->c_mutex); #endif - if (use_xfs_buf_lock) - pthread_mutex_unlock(&bp->b_lock); + if (use_xfs_buf_lock) { + if (bp->b_recur) { + bp->b_recur--; + } else { + bp->b_holder = 0; + pthread_mutex_unlock(&bp->b_lock); + } + } cache_node_put(libxfs_bcache, (struct cache_node *)bp); } From BATV+6d91dd2e57fc0b77ac18+3012+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 22 16:55:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAMMte2s176754 for ; Tue, 22 Nov 2011 16:55:40 -0600 X-ASG-Debug-ID: 1322002539-2053036d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B4BD21D2A5E5 for ; Tue, 22 Nov 2011 14:55:39 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id yDWgNka07LdfIWY9 for ; Tue, 22 Nov 2011 14:55:39 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RSzFZ-0008Q1-Kc; Tue, 22 Nov 2011 22:55:37 +0000 Date: Tue, 22 Nov 2011 17:55:37 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Gregory Farnum , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: EFSCORRUPTED on mount? Subject: Re: EFSCORRUPTED on mount? Message-ID: <20111122225537.GA25530@infradead.org> References: <20111122014114.GJ2386@dastard> <4ECBEF83.5020607@sandeen.net> <4ECC19C3.5070905@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4ECC19C3.5070905@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322002539 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81012 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 22, 2011 at 03:53:07PM -0600, Eric Sandeen wrote: > > Ending recovery (logdev: internal) > > ... > > All that recovery a result of the icky shutdown procedure I guess.... > > > Nov 17 16:01:01 cephstore6358 kernel: [ 214.214688] XFS: Internal > > error XFS_WANT_CORRUPTED_GOTO at line 1664 of file fs/xfs/xfs_alloc.c. > > Caller 0xffffffff811d6b71 > > And this was the first indication of trouble. allocation btree corruption - we try to free a block, which had already been inserted into the by-size allocation btree. This very much looks like a cache failure to me. > > Nov 17 16:01:01 cephstore6358 kernel: [ 214.302172] > > [] ? sys_truncate+0x171/0x173 > > Nov 17 16:01:01 cephstore6358 kernel: [ 214.307846] > > [] ? system_call_fastpath+0x16/0x1b > > Nov 17 16:01:01 cephstore6358 kernel: [ 214.314031] XFS (sdg1): > > xfs_do_force_shutdown(0x8) called from line 3864 of file > > fs/xfs/xfs_bmap.c. Return address = 0xffffffff811e2046 > > by here it had shut down, and you were just riding along when > it went kablooey. Any non-xfs error just before this point? And this was the caller of xfs_free_extent, now shuting the fs down because of the above error. > > Nov 17 16:01:01 cephstore6358 kernel: [ 214.340451] XFS (sdg1): > > Corruption of in-memory data detected. Shutting down filesystem > > Nov 17 16:01:01 cephstore6358 kernel: [ 214.348518] XFS (sdg1): > > Please umount the filesystem and rectify the problem(s) > > Nov 17 16:01:01 cephstore6358 kernel: [ 227.789285] XFS (sdg1): > > xfs_log_force: error 5 returned. > > Nov 17 16:01:01 cephstore6358 kernel: [ 229.820255] XFS (sdg1): > > xfs_log_force: error 5 returned. > > To be honest I'm not sure offhand if this error 5 (EIO) is a > result of the shutdown, or the cause of it. It is. One the filesystem has been shut down xfs_log_force will always return EIO. The printk for is rather useless, though. From gregory.farnum@dreamhost.com Tue Nov 22 18:03:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAN03IEH180474 for ; Tue, 22 Nov 2011 18:03:18 -0600 X-ASG-Debug-ID: 1322006595-736d00060000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-iy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6F9EF26EDD8 for ; Tue, 22 Nov 2011 16:03:16 -0800 (PST) Received: from mail-iy0-f181.google.com (mail-iy0-f181.google.com [209.85.210.181]) by cuda.sgi.com with ESMTP id AHL7PkGV6QEbhfdC for ; Tue, 22 Nov 2011 16:03:16 -0800 (PST) Received: by iaen33 with SMTP id n33so915791iae.26 for ; Tue, 22 Nov 2011 16:03:15 -0800 (PST) MIME-Version: 1.0 Received: by 10.231.50.202 with SMTP id a10mr6160707ibg.39.1322006595792; Tue, 22 Nov 2011 16:03:15 -0800 (PST) Received: by 10.231.37.73 with HTTP; Tue, 22 Nov 2011 16:03:15 -0800 (PST) In-Reply-To: <4ECC19C3.5070905@sandeen.net> References: <20111122014114.GJ2386@dastard> <4ECBEF83.5020607@sandeen.net> <4ECC19C3.5070905@sandeen.net> Date: Tue, 22 Nov 2011 16:03:15 -0800 Message-ID: X-ASG-Orig-Subj: Re: EFSCORRUPTED on mount? Subject: Re: EFSCORRUPTED on mount? From: Gregory Farnum To: xfs@oss.sgi.com Cc: Eric Sandeen , Christoph Hellwig Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-iy0-f181.google.com[209.85.210.181] X-Barracuda-Start-Time: 1322006596 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81016 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 22, 2011 at 1:53 PM, Eric Sandeen wrote: > And this was the first indication of trouble. > >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.214692] >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.227313] Pid: 11196, comm: >> ceph-osd Not tainted 3.1.0-dho-00004-g1ffcb5c-dirty #1 >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.235056] Call Trace: >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.237530] >> [] ? xfs_free_ag_extent+0x4e3/0x698 >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.243717] >> [] ? xfs_free_extent+0xb6/0xf9 >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.249468] >> [] ? kmem_zone_alloc+0x58/0x9e >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.255220] >> [] ? xfs_trans_get_efd+0x21/0x2a >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.261159] >> [] ? xfs_bmap_finish+0xeb/0x160 >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.266993] >> [] ? xfs_itruncate_extents+0xe8/0x1d0 >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.273361] >> [] ? xfs_itruncate_data+0x83/0xee >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.279362] >> [] ? xfs_setattr_size+0x246/0x36c >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.285363] >> [] ? xfs_vn_setattr+0x1b/0x2f >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.291031] >> [] ? notify_change+0x16d/0x23e >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.296776] >> [] ? do_truncate+0x68/0x86 >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.302172] >> [] ? sys_truncate+0x171/0x173 >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.307846] >> [] ? system_call_fastpath+0x16/0x1b >> Nov 17 16:01:01 cephstore6358 kernel: [ =A0214.314031] XFS (sdg1): >> xfs_do_force_shutdown(0x8) called from line 3864 of file >> fs/xfs/xfs_bmap.c. =A0Return address =3D 0xffffffff811e2046 > > by here it had shut down, and you were just riding along when > it went kablooey. =A0Any non-xfs error just before this point? Nope, nothing from anybody else. On Tue, Nov 22, 2011 at 2:11 PM, Christoph Hellwig wrot= e: > On Tue, Nov 22, 2011 at 10:47:24AM -0800, Gregory Farnum wrote: >> Barriers on (at least, nobody turned them off); the RAID card is >> battery-backed; here are megacli dumps: >> http://pastebin.com/yTskgzWG >> http://pastebin.com/ekhczycy > > I had a lot of of issues with megaraid cards and their unsafe caching > settings, up to the point that I'd recommend staying away from them > now. =A0Can you check in the megacli config if the _disk_ write caches > are enabled? =A0megaraid adapters used to do that a lot, and given that > the disk cache isn't batter backed it's fairly fatal. > > I think in your dump this one might be the culprit given that SATA > disks outside of a few niches come with a writeback cache policy: > > Disk Cache Policy: Disk's Default > > try changing that to an explicit writethrough mode - and maybe try > running a crash data integrity test like > > =A0 =A0 =A0 =A0http://www.complang.tuwien.ac.at/anton/hdtest/ > > on this controller. We're going to look into this in more detail very shortly. Right now all I can tell you is that none of the drives ever actually lost power, so unless something is explicitly telling them to clear their caches I don't know how the drives could have lost their cache to cause a problem like this. But for now I'll just see what I can get by zeroing out the log, and we'll get back to you again if we manage to reproduce this in a situation where we can tell you more definitively about the caching and barriers. Thanks guys, -Greg From gregkh@suse.de Tue Nov 22 18:42:10 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAN0gATD182931 for ; Tue, 22 Nov 2011 18:42:10 -0600 X-ASG-Debug-ID: 1322008928-519802b10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7588926FB71 for ; Tue, 22 Nov 2011 16:42:09 -0800 (PST) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id iWuDLmWTDa7kWMrn for ; Tue, 22 Nov 2011 16:42:09 -0800 (PST) Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id 841D18E857; Wed, 23 Nov 2011 01:42:08 +0100 (CET) X-Mailbox-Line: From gregkh@clark.kroah.org Tue Nov 22 16:24:08 2011 Message-Id: <20111123002408.725504127@clark.kroah.org> User-Agent: quilt/0.48-20.1.2 Date: Tue, 22 Nov 2011 16:23:51 -0800 From: Greg KH To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, xfs@oss.sgi.com, Alex Elder , Christoph Hellwig X-ASG-Orig-Subj: [44/53] xfs: fix xfs_mark_inode_dirty during umount Subject: [44/53] xfs: fix xfs_mark_inode_dirty during umount In-Reply-To: <20111123002419.GA8531@kroah.com> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1322008929 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81018 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 3.0-stable review patch. If anyone has any objections, please let me know. ------------------ From: Christoph Hellwig commit 866e4ed77448a0c311e1b055eb72ea05423fd799 upstream. During umount we do not add a dirty inode to the lru and wait for it to become clean first, but force writeback of data and metadata with I_WILL_FREE set. Currently there is no way for XFS to detect that the inode has been redirtied for metadata operations, as we skip the mark_inode_dirty call during teardown. Fix this by setting i_update_core nanually in that case, so that the inode gets flushed during inode reclaim. Alternatively we could enable calling mark_inode_dirty for inodes in I_WILL_FREE state, and let the VFS dirty tracking handle this. I decided against this as we will get better I/O patterns from reclaim compared to the synchronous writeout in write_inode_now, and always marking the inode dirty in some way from xfs_mark_inode_dirty is a better safetly net in either case. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Alex Elder Signed-off-by: Greg Kroah-Hartman --- fs/xfs/linux-2.6/xfs_iops.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) --- a/fs/xfs/linux-2.6/xfs_iops.c +++ b/fs/xfs/linux-2.6/xfs_iops.c @@ -69,9 +69,8 @@ xfs_synchronize_times( } /* - * If the linux inode is valid, mark it dirty. - * Used when committing a dirty inode into a transaction so that - * the inode will get written back by the linux code + * If the linux inode is valid, mark it dirty, else mark the dirty state + * in the XFS inode to make sure we pick it up when reclaiming the inode. */ void xfs_mark_inode_dirty_sync( @@ -81,6 +80,10 @@ xfs_mark_inode_dirty_sync( if (!(inode->i_state & (I_WILL_FREE|I_FREEING))) mark_inode_dirty_sync(inode); + else { + barrier(); + ip->i_update_core = 1; + } } void @@ -91,6 +94,11 @@ xfs_mark_inode_dirty( if (!(inode->i_state & (I_WILL_FREE|I_FREEING))) mark_inode_dirty(inode); + else { + barrier(); + ip->i_update_core = 1; + } + } /* From gregkh@suse.de Tue Nov 22 18:42:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAN0g6Yc182918 for ; Tue, 22 Nov 2011 18:42:07 -0600 X-ASG-Debug-ID: 1322008925-14e1001d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 220E826FB6E for ; Tue, 22 Nov 2011 16:42:05 -0800 (PST) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id kWCn2cQdyVPWncE6 for ; Tue, 22 Nov 2011 16:42:05 -0800 (PST) Received: from relay2.suse.de (nat.nue.novell.com [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id 30D308F0A5; Wed, 23 Nov 2011 01:42:05 +0100 (CET) X-Mailbox-Line: From gregkh@clark.kroah.org Tue Nov 22 16:24:08 2011 Message-Id: <20111123002408.631967363@clark.kroah.org> User-Agent: quilt/0.48-20.1.2 Date: Tue, 22 Nov 2011 16:23:50 -0800 From: Greg KH To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, xfs@oss.sgi.com, Ajeet Yadav , Alex Elder X-ASG-Orig-Subj: [43/53] xfs: fix error handling for synchronous writes Subject: [43/53] xfs: fix error handling for synchronous writes In-Reply-To: <20111123002419.GA8531@kroah.com> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1322008926 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81018 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 3.0-stable review patch. If anyone has any objections, please let me know. ------------------ From: Christoph Hellwig If removed storage while synchronous buffer write underway, "xfslogd" hangs. Detailed log http://oss.sgi.com/archives/xfs/2011-07/msg00740.html Related work bfc60177f8ab509bc225becbb58f7e53a0e33e81 "xfs: fix error handling for synchronous writes" Given that xfs_bwrite actually does the shutdown already after waiting for the b_iodone completion and given that we actually found that calling xfs_force_shutdown from inside xfs_buf_iodone_callbacks was a major contributor the problem it better to drop this call. Signed-off-by: Ajeet Yadav Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder Signed-off-by: Greg Kroah-Hartman --- fs/xfs/xfs_buf_item.c | 1 - 1 file changed, 1 deletion(-) --- a/fs/xfs/xfs_buf_item.c +++ b/fs/xfs/xfs_buf_item.c @@ -1023,7 +1023,6 @@ xfs_buf_iodone_callbacks( XFS_BUF_UNDELAYWRITE(bp); trace_xfs_buf_error_relse(bp, _RET_IP_); - xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR); do_callbacks: xfs_buf_do_callbacks(bp); From gregkh@suse.de Tue Nov 22 18:42:13 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAN0gDHj182947 for ; Tue, 22 Nov 2011 18:42:13 -0600 X-ASG-Debug-ID: 1322008932-149f00280000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B88B826FB73 for ; Tue, 22 Nov 2011 16:42:12 -0800 (PST) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id 0OeBDE0F2WGb8Zto for ; Tue, 22 Nov 2011 16:42:12 -0800 (PST) Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id D4B358F0A5; Wed, 23 Nov 2011 01:42:11 +0100 (CET) X-Mailbox-Line: From gregkh@clark.kroah.org Tue Nov 22 16:24:08 2011 Message-Id: <20111123002408.819236764@clark.kroah.org> User-Agent: quilt/0.48-20.1.2 Date: Tue, 22 Nov 2011 16:23:52 -0800 From: Greg KH To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, xfs@oss.sgi.com, Dave Chinner , Alex Elder X-ASG-Orig-Subj: [45/53] xfs: dont serialise direct IO reads on page cache Subject: [45/53] xfs: dont serialise direct IO reads on page cache In-Reply-To: <20111123002419.GA8531@kroah.com> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1322008932 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81018 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 3.0-stable review patch. If anyone has any objections, please let me know. ------------------ From: Dave Chinner commit 0c38a2512df272b14ef4238b476a2e4f70da1479 upstream. There is no need to grab the i_mutex of the IO lock in exclusive mode if we don't need to invalidate the page cache. Taking these locks on every direct IO effective serialises them as taking the IO lock in exclusive mode has to wait for all shared holders to drop the lock. That only happens when IO is complete, so effective it prevents dispatch of concurrent direct IO reads to the same inode. Fix this by taking the IO lock shared to check the page cache state, and only then drop it and take the IO lock exclusively if there is work to be done. Hence for the normal direct IO case, no exclusive locking will occur. Signed-off-by: Dave Chinner Tested-by: Joern Engel Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder Signed-off-by: Greg Kroah-Hartman --- fs/xfs/linux-2.6/xfs_file.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) --- a/fs/xfs/linux-2.6/xfs_file.c +++ b/fs/xfs/linux-2.6/xfs_file.c @@ -309,7 +309,19 @@ xfs_file_aio_read( if (XFS_FORCED_SHUTDOWN(mp)) return -EIO; - if (unlikely(ioflags & IO_ISDIRECT)) { + /* + * Locking is a bit tricky here. If we take an exclusive lock + * for direct IO, we effectively serialise all new concurrent + * read IO to this file and block it behind IO that is currently in + * progress because IO in progress holds the IO lock shared. We only + * need to hold the lock exclusive to blow away the page cache, so + * only take lock exclusively if the page cache needs invalidation. + * This allows the normal direct IO case of no page cache pages to + * proceeed concurrently without serialisation. + */ + xfs_rw_ilock(ip, XFS_IOLOCK_SHARED); + if ((ioflags & IO_ISDIRECT) && inode->i_mapping->nrpages) { + xfs_rw_iunlock(ip, XFS_IOLOCK_SHARED); xfs_rw_ilock(ip, XFS_IOLOCK_EXCL); if (inode->i_mapping->nrpages) { @@ -322,8 +334,7 @@ xfs_file_aio_read( } } xfs_rw_ilock_demote(ip, XFS_IOLOCK_EXCL); - } else - xfs_rw_ilock(ip, XFS_IOLOCK_SHARED); + } trace_xfs_file_read(ip, size, iocb->ki_pos, ioflags); From gregkh@suse.de Tue Nov 22 18:42:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAN0gGEv182977 for ; Tue, 22 Nov 2011 18:42:17 -0600 X-ASG-Debug-ID: 1322008935-219f00fc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 176791D2B4FA for ; Tue, 22 Nov 2011 16:42:15 -0800 (PST) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id ZnLoWGmdaLDOEjeK for ; Tue, 22 Nov 2011 16:42:15 -0800 (PST) Received: from relay2.suse.de (nat.nue.novell.com [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id 335258CC2B; Wed, 23 Nov 2011 01:42:15 +0100 (CET) X-Mailbox-Line: From gregkh@clark.kroah.org Tue Nov 22 16:24:08 2011 Message-Id: <20111123002408.908319178@clark.kroah.org> User-Agent: quilt/0.48-20.1.2 Date: Tue, 22 Nov 2011 16:23:53 -0800 From: Greg KH To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, xfs@oss.sgi.com, Alex Elder , Christoph Hellwig X-ASG-Orig-Subj: [46/53] xfs: avoid direct I/O write vs buffered I/O race Subject: [46/53] xfs: avoid direct I/O write vs buffered I/O race In-Reply-To: <20111123002419.GA8531@kroah.com> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1322008936 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81018 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 3.0-stable review patch. If anyone has any objections, please let me know. ------------------ From: Christoph Hellwig commit c58cb165bd44de8aaee9755a144136ae743be116 upstream. Currently a buffered reader or writer can add pages to the pagecache while we are waiting for the iolock in xfs_file_dio_aio_write. Prevent this by re-checking mapping->nrpages after we got the iolock, and if nessecary upgrade the lock to exclusive mode. To simplify this a bit only take the ilock inside of xfs_file_aio_write_checks. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Alex Elder Signed-off-by: Greg Kroah-Hartman --- fs/xfs/linux-2.6/xfs_file.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) --- a/fs/xfs/linux-2.6/xfs_file.c +++ b/fs/xfs/linux-2.6/xfs_file.c @@ -669,6 +669,7 @@ xfs_file_aio_write_checks( xfs_fsize_t new_size; int error = 0; + xfs_rw_ilock(ip, XFS_ILOCK_EXCL); error = generic_write_checks(file, pos, count, S_ISBLK(inode->i_mode)); if (error) { xfs_rw_iunlock(ip, XFS_ILOCK_EXCL | *iolock); @@ -760,14 +761,24 @@ xfs_file_dio_aio_write( *iolock = XFS_IOLOCK_EXCL; else *iolock = XFS_IOLOCK_SHARED; - xfs_rw_ilock(ip, XFS_ILOCK_EXCL | *iolock); + xfs_rw_ilock(ip, *iolock); ret = xfs_file_aio_write_checks(file, &pos, &count, iolock); if (ret) return ret; + /* + * Recheck if there are cached pages that need invalidate after we got + * the iolock to protect against other threads adding new pages while + * we were waiting for the iolock. + */ + if (mapping->nrpages && *iolock == XFS_IOLOCK_SHARED) { + xfs_rw_iunlock(ip, *iolock); + *iolock = XFS_IOLOCK_EXCL; + xfs_rw_ilock(ip, *iolock); + } + if (mapping->nrpages) { - WARN_ON(*iolock != XFS_IOLOCK_EXCL); ret = -xfs_flushinval_pages(ip, (pos & PAGE_CACHE_MASK), -1, FI_REMAPF_LOCKED); if (ret) @@ -812,7 +823,7 @@ xfs_file_buffered_aio_write( size_t count = ocount; *iolock = XFS_IOLOCK_EXCL; - xfs_rw_ilock(ip, XFS_ILOCK_EXCL | *iolock); + xfs_rw_ilock(ip, *iolock); ret = xfs_file_aio_write_checks(file, &pos, &count, iolock); if (ret) From gregkh@suse.de Tue Nov 22 18:42:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAN0gOqL183018 for ; Tue, 22 Nov 2011 18:42:24 -0600 X-ASG-Debug-ID: 1322008938-2c0103060000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 54600162ED81 for ; Tue, 22 Nov 2011 16:42:19 -0800 (PST) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id 5PLjZGi48dOlooM3 for ; Tue, 22 Nov 2011 16:42:19 -0800 (PST) Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id 85A9A8F0A5; Wed, 23 Nov 2011 01:42:18 +0100 (CET) X-Mailbox-Line: From gregkh@clark.kroah.org Tue Nov 22 16:24:09 2011 Message-Id: <20111123002409.001515351@clark.kroah.org> User-Agent: quilt/0.48-20.1.2 Date: Tue, 22 Nov 2011 16:23:54 -0800 From: Greg KH To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, xfs@oss.sgi.com, Mitsuo Hayasaka , Alex Elder X-ASG-Orig-Subj: [47/53] xfs: Return -EIO when xfs_vn_getattr() failed Subject: [47/53] xfs: Return -EIO when xfs_vn_getattr() failed In-Reply-To: <20111123002419.GA8531@kroah.com> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1322008940 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81019 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 3.0-stable review patch. If anyone has any objections, please let me know. ------------------ From: Mitsuo Hayasaka commit ed32201e65e15f3e6955cb84cbb544b08f81e5a5 upstream. An attribute of inode can be fetched via xfs_vn_getattr() in XFS. Currently it returns EIO, not negative value, when it failed. As a result, the system call returns not negative value even though an error occured. The stat(2), ls and mv commands cannot handle this error and do not work correctly. This patch fixes this bug, and returns -EIO, not EIO when an error is detected in xfs_vn_getattr(). Signed-off-by: Mitsuo Hayasaka Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder Signed-off-by: Greg Kroah-Hartman --- fs/xfs/linux-2.6/xfs_iops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/fs/xfs/linux-2.6/xfs_iops.c +++ b/fs/xfs/linux-2.6/xfs_iops.c @@ -464,7 +464,7 @@ xfs_vn_getattr( trace_xfs_getattr(ip); if (XFS_FORCED_SHUTDOWN(mp)) - return XFS_ERROR(EIO); + return -XFS_ERROR(EIO); stat->size = XFS_ISIZE(ip); stat->dev = inode->i_sb->s_dev; From gregkh@suse.de Tue Nov 22 18:42:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAN0gQkv183037 for ; Tue, 22 Nov 2011 18:42:26 -0600 X-ASG-Debug-ID: 1322008945-56dc03e20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F25E61D2B4FE for ; Tue, 22 Nov 2011 16:42:25 -0800 (PST) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id QFvUT0GBEYtEdu9M for ; Tue, 22 Nov 2011 16:42:25 -0800 (PST) Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id 328878CC2B; Wed, 23 Nov 2011 01:42:25 +0100 (CET) X-Mailbox-Line: From gregkh@clark.kroah.org Tue Nov 22 16:24:09 2011 Message-Id: <20111123002409.195639830@clark.kroah.org> User-Agent: quilt/0.48-20.1.2 Date: Tue, 22 Nov 2011 16:23:56 -0800 From: Greg KH To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, xfs@oss.sgi.com, Alex Elder , Carlos Maiolino X-ASG-Orig-Subj: [49/53] xfs: Fix possible memory corruption in xfs_readlink Subject: [49/53] xfs: Fix possible memory corruption in xfs_readlink In-Reply-To: <20111123002419.GA8531@kroah.com> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1322008946 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81018 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 3.0-stable review patch. If anyone has any objections, please let me know. ------------------ From: Carlos Maiolino commit b52a360b2aa1c59ba9970fb0f52bbb093fcc7a24 upstream. Fixes a possible memory corruption when the link is larger than MAXPATHLEN and XFS_DEBUG is not enabled. This also remove the S_ISLNK assert, since the inode mode is checked previously in xfs_readlink_by_handle() and via VFS. Updated to address concerns raised by Ben Hutchings about the loose attention paid to 32- vs 64-bit values, and the lack of handling a potentially negative pathlen value: - Changed type of "pathlen" to be xfs_fsize_t, to match that of ip->i_d.di_size - Added checking for a negative pathlen to the too-long pathlen test, and generalized the message that gets reported in that case to reflect the change As a result, if a negative pathlen were encountered, this function would return EFSCORRUPTED (and would fail an assertion for a debug build)--just as would a too-long pathlen. Signed-off-by: Alex Elder Signed-off-by: Carlos Maiolino Reviewed-by: Christoph Hellwig Signed-off-by: Greg Kroah-Hartman --- fs/xfs/xfs_vnodeops.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -535,7 +535,7 @@ xfs_readlink( char *link) { xfs_mount_t *mp = ip->i_mount; - int pathlen; + xfs_fsize_t pathlen; int error = 0; trace_xfs_readlink(ip); @@ -545,13 +545,19 @@ xfs_readlink( xfs_ilock(ip, XFS_ILOCK_SHARED); - ASSERT((ip->i_d.di_mode & S_IFMT) == S_IFLNK); - ASSERT(ip->i_d.di_size <= MAXPATHLEN); - pathlen = ip->i_d.di_size; if (!pathlen) goto out; + if (pathlen < 0 || pathlen > MAXPATHLEN) { + xfs_alert(mp, "%s: inode (%llu) bad symlink length (%lld)", + __func__, (unsigned long long) ip->i_ino, + (long long) pathlen); + ASSERT(0); + return XFS_ERROR(EFSCORRUPTED); + } + + if (ip->i_df.if_flags & XFS_IFINLINE) { memcpy(link, ip->i_df.if_u1.if_data, pathlen); link[pathlen] = '\0'; From gregkh@suse.de Tue Nov 22 18:42:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAN0gOrO183014 for ; Tue, 22 Nov 2011 18:42:24 -0600 X-ASG-Debug-ID: 1322008942-2c0302e70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2850F162EC5C for ; Tue, 22 Nov 2011 16:42:22 -0800 (PST) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id 6BwXBUPP3ecaAuwq for ; Tue, 22 Nov 2011 16:42:22 -0800 (PST) Received: from relay1.suse.de (nat.nue.novell.com [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id D649A8E857; Wed, 23 Nov 2011 01:42:21 +0100 (CET) X-Mailbox-Line: From gregkh@clark.kroah.org Tue Nov 22 16:24:09 2011 Message-Id: <20111123002409.095325764@clark.kroah.org> User-Agent: quilt/0.48-20.1.2 Date: Tue, 22 Nov 2011 16:23:55 -0800 From: Greg KH To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, xfs@oss.sgi.com, Alex Elder , Christoph Hellwig X-ASG-Orig-Subj: [48/53] xfs: fix buffer flushing during unmount Subject: [48/53] xfs: fix buffer flushing during unmount In-Reply-To: <20111123002419.GA8531@kroah.com> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1322008943 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81019 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 3.0-stable review patch. If anyone has any objections, please let me know. ------------------ From: Christoph Hellwig commit 87c7bec7fc3377b3873eb3a0f4b603981ea16ebb upstream. The code to flush buffers in the umount code is a bit iffy: we first flush all delwri buffers out, but then might be able to queue up a new one when logging the sb counts. On a normal shutdown that one would get flushed out when doing the synchronous superblock write in xfs_unmountfs_writesb, but we skip that one if the filesystem has been shut down. Fix this by moving the delwri list flushing until just before unmounting the log, and while we're at it also remove the superflous delwri list and buffer lru flusing for the rt and log device that can never have cached or delwri buffers. Signed-off-by: Christoph Hellwig Reported-by: Amit Sahrawat Tested-by: Amit Sahrawat Signed-off-by: Alex Elder Signed-off-by: Greg Kroah-Hartman --- fs/xfs/linux-2.6/xfs_buf.h | 1 - fs/xfs/xfs_mount.c | 29 ++++++++++------------------- 2 files changed, 10 insertions(+), 20 deletions(-) --- a/fs/xfs/linux-2.6/xfs_buf.h +++ b/fs/xfs/linux-2.6/xfs_buf.h @@ -346,7 +346,6 @@ extern struct list_head *xfs_get_buftarg #define xfs_getsize_buftarg(buftarg) block_size((buftarg)->bt_bdev) #define xfs_readonly_buftarg(buftarg) bdev_read_only((buftarg)->bt_bdev) -#define xfs_binval(buftarg) xfs_flush_buftarg(buftarg, 1) #define XFS_bflush(buftarg) xfs_flush_buftarg(buftarg, 1) #endif /* __XFS_BUF_H__ */ --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -44,9 +44,6 @@ #include "xfs_trace.h" -STATIC void xfs_unmountfs_wait(xfs_mount_t *); - - #ifdef HAVE_PERCPU_SB STATIC void xfs_icsb_balance_counter(xfs_mount_t *, xfs_sb_field_t, int); @@ -1507,11 +1504,6 @@ xfs_unmountfs( */ xfs_log_force(mp, XFS_LOG_SYNC); - xfs_binval(mp->m_ddev_targp); - if (mp->m_rtdev_targp) { - xfs_binval(mp->m_rtdev_targp); - } - /* * Unreserve any blocks we have so that when we unmount we don't account * the reserved free space as used. This is really only necessary for @@ -1537,7 +1529,16 @@ xfs_unmountfs( xfs_warn(mp, "Unable to update superblock counters. " "Freespace may not be correct on next mount."); xfs_unmountfs_writesb(mp); - xfs_unmountfs_wait(mp); /* wait for async bufs */ + + /* + * Make sure all buffers have been flushed and completed before + * unmounting the log. + */ + error = xfs_flush_buftarg(mp->m_ddev_targp, 1); + if (error) + xfs_warn(mp, "%d busy buffers during unmount.", error); + xfs_wait_buftarg(mp->m_ddev_targp); + xfs_log_unmount_write(mp); xfs_log_unmount(mp); xfs_uuid_unmount(mp); @@ -1548,16 +1549,6 @@ xfs_unmountfs( xfs_free_perag(mp); } -STATIC void -xfs_unmountfs_wait(xfs_mount_t *mp) -{ - if (mp->m_logdev_targp != mp->m_ddev_targp) - xfs_wait_buftarg(mp->m_logdev_targp); - if (mp->m_rtdev_targp) - xfs_wait_buftarg(mp->m_rtdev_targp); - xfs_wait_buftarg(mp->m_ddev_targp); -} - int xfs_fs_writable(xfs_mount_t *mp) { From gregkh@suse.de Tue Nov 22 18:42:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAN0gXjh183078 for ; Tue, 22 Nov 2011 18:42:33 -0600 X-ASG-Debug-ID: 1322008952-219f00ff0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A86B41D2B500 for ; Tue, 22 Nov 2011 16:42:32 -0800 (PST) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id mcDO9ax1zWnBG0YL for ; Tue, 22 Nov 2011 16:42:32 -0800 (PST) Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id D21108CC2B; Wed, 23 Nov 2011 01:42:31 +0100 (CET) X-Mailbox-Line: From gregkh@clark.kroah.org Tue Nov 22 16:24:09 2011 Message-Id: <20111123002409.275882789@clark.kroah.org> User-Agent: quilt/0.48-20.1.2 Date: Tue, 22 Nov 2011 16:23:57 -0800 From: Greg KH To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, xfs@oss.sgi.com, Mitsuo Hayasaka , Alex Elder , Ben Myers , Christoph Hellwig X-ASG-Orig-Subj: [50/53] xfs: use doalloc flag in xfs_qm_dqattach_one() Subject: [50/53] xfs: use doalloc flag in xfs_qm_dqattach_one() In-Reply-To: <20111123002419.GA8531@kroah.com> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1322008952 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81018 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 3.0-stable review patch. If anyone has any objections, please let me know. ------------------ From: Mitsuo Hayasaka commit db3e74b582915d66e10b0c73a62763418f54c340 upstream The doalloc arg in xfs_qm_dqattach_one() is a flag that indicates whether a new area to handle quota information will be allocated if needed. Originally, it was passed to xfs_qm_dqget(), but has been removed by the following commit (probably by mistake): commit 8e9b6e7fa4544ea8a0e030c8987b918509c8ff47 Author: Christoph Hellwig Date: Sun Feb 8 21:51:42 2009 +0100 xfs: remove the unused XFS_QMOPT_DQLOCK flag As the result, xfs_qm_dqget() called from xfs_qm_dqattach_one() never allocates the new area even if it is needed. This patch gives the doalloc arg to xfs_qm_dqget() in xfs_qm_dqattach_one() to fix this problem. Signed-off-by: Mitsuo Hayasaka Cc: Alex Elder Cc: Christoph Hellwig Reviewed-by: Christoph Hellwig Signed-off-by: Ben Myers Signed-off-by: Greg Kroah-Hartman --- fs/xfs/quota/xfs_qm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- a/fs/xfs/quota/xfs_qm.c +++ b/fs/xfs/quota/xfs_qm.c @@ -714,7 +714,8 @@ xfs_qm_dqattach_one( * disk and we didn't ask it to allocate; * ESRCH if quotas got turned off suddenly. */ - error = xfs_qm_dqget(ip->i_mount, ip, id, type, XFS_QMOPT_DOWARN, &dqp); + error = xfs_qm_dqget(ip->i_mount, ip, id, type, + doalloc | XFS_QMOPT_DOWARN, &dqp); if (error) return error; From gregkh@suse.de Tue Nov 22 18:42:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAN0ga9Z183098 for ; Tue, 22 Nov 2011 18:42:36 -0600 X-ASG-Debug-ID: 1322008955-149e001a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1037126FBA7 for ; Tue, 22 Nov 2011 16:42:35 -0800 (PST) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id H4EbrmrW3qCTZAyp for ; Tue, 22 Nov 2011 16:42:35 -0800 (PST) Received: from relay1.suse.de (nat.nue.novell.com [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id 2E4928E857; Wed, 23 Nov 2011 01:42:35 +0100 (CET) X-Mailbox-Line: From gregkh@clark.kroah.org Tue Nov 22 16:24:09 2011 Message-Id: <20111123002409.367744238@clark.kroah.org> User-Agent: quilt/0.48-20.1.2 Date: Tue, 22 Nov 2011 16:23:58 -0800 From: Greg KH To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, xfs@oss.sgi.com, Alex Elder , Christoph Hellwig X-ASG-Orig-Subj: [51/53] xfs: fix ->write_inode return values Subject: [51/53] xfs: fix ->write_inode return values In-Reply-To: <20111123002419.GA8531@kroah.com> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1322008956 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81018 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 3.0-stable review patch. If anyone has any objections, please let me know. ------------------ From: Christoph Hellwig patch 58d84c4ee0389ddeb86238d5d8359a982c9f7a5b upstream. Currently we always redirty an inode that was attempted to be written out synchronously but has been cleaned by an AIL pushed internall, which is rather bogus. Fix that by doing the i_update_core check early on and return 0 for it. Also include async calls for it, as doing any work for those is just as pointless. While we're at it also fix the sign for the EIO return in case of a filesystem shutdown, and fix the completely non-sensical locking around xfs_log_inode. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Alex Elder Signed-off-by: Greg Kroah-Hartman --- fs/xfs/linux-2.6/xfs_super.c | 34 +++++++++------------------------- 1 file changed, 9 insertions(+), 25 deletions(-) --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -878,33 +878,17 @@ xfs_log_inode( struct xfs_trans *tp; int error; - xfs_iunlock(ip, XFS_ILOCK_SHARED); tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS); error = xfs_trans_reserve(tp, 0, XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0); - if (error) { xfs_trans_cancel(tp, 0); - /* we need to return with the lock hold shared */ - xfs_ilock(ip, XFS_ILOCK_SHARED); return error; } xfs_ilock(ip, XFS_ILOCK_EXCL); - - /* - * Note - it's possible that we might have pushed ourselves out of the - * way during trans_reserve which would flush the inode. But there's - * no guarantee that the inode buffer has actually gone out yet (it's - * delwri). Plus the buffer could be pinned anyway if it's part of - * an inode in another recent transaction. So we play it safe and - * fire off the transaction anyway. - */ - xfs_trans_ijoin(tp, ip); + xfs_trans_ijoin_ref(tp, ip, XFS_ILOCK_EXCL); xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); - error = xfs_trans_commit(tp, 0); - xfs_ilock_demote(ip, XFS_ILOCK_EXCL); - - return error; + return xfs_trans_commit(tp, 0); } STATIC int @@ -919,7 +903,9 @@ xfs_fs_write_inode( trace_xfs_write_inode(ip); if (XFS_FORCED_SHUTDOWN(mp)) - return XFS_ERROR(EIO); + return -XFS_ERROR(EIO); + if (!ip->i_update_core) + return 0; if (wbc->sync_mode == WB_SYNC_ALL) { /* @@ -930,12 +916,10 @@ xfs_fs_write_inode( * of synchronous log foces dramatically. */ xfs_ioend_wait(ip); - xfs_ilock(ip, XFS_ILOCK_SHARED); - if (ip->i_update_core) { - error = xfs_log_inode(ip); - if (error) - goto out_unlock; - } + error = xfs_log_inode(ip); + if (error) + goto out; + return 0; } else { /* * We make this non-blocking if the inode is contended, return From pengxihan@gmail.com Tue Nov 22 19:19:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,FREEMAIL_FROM, J_CHICKENPOX_43,J_CHICKENPOX_62,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAN1JRqQ185721 for ; Tue, 22 Nov 2011 19:19:28 -0600 X-ASG-Debug-ID: 1322011166-519702b80000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-gy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4DD5C26FE4E for ; Tue, 22 Nov 2011 17:19:26 -0800 (PST) Received: from mail-gy0-f181.google.com (mail-gy0-f181.google.com [209.85.160.181]) by cuda.sgi.com with ESMTP id mHsQOWG7AUbB1xm1 for ; Tue, 22 Nov 2011 17:19:26 -0800 (PST) Received: by ghrr13 with SMTP id r13so1083215ghr.26 for ; Tue, 22 Nov 2011 17:19:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=MBbbMCzAAskvGJXDZCEwCMpPcj2qLPWC73ZDA050Dvk=; b=PLyClXAlHjgo/S3rVCSM2badXjG6kwZQjdg8zgpX4MtArOt0ofLFTcSFBnLfKsMX0F DldrU9InJVEpe5lQY3eZTM33In4pFMU4r/suTN7BrjRaKSlrhSjcL6fsoEYOqqlDBtI2 YVv2+Kn8xVIq9zyrTjFNW/60Vt9YmEHB9ZfWk= MIME-Version: 1.0 Received: by 10.50.94.229 with SMTP id df5mr25368019igb.27.1322011166386; Tue, 22 Nov 2011 17:19:26 -0800 (PST) Received: by 10.50.209.65 with HTTP; Tue, 22 Nov 2011 17:19:26 -0800 (PST) In-Reply-To: <20111122221515.GA29540@infradead.org> References: <20111121170459.GA1327@infradead.org> <20111122221515.GA29540@infradead.org> Date: Wed, 23 Nov 2011 09:19:26 +0800 Message-ID: X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 From: hank peng To: Christoph Hellwig Cc: linux-xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-gy0-f181.google.com[209.85.160.181] X-Barracuda-Start-Time: 1322011167 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81020 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 2011/11/23 Christoph Hellwig : > On Tue, Nov 22, 2011 at 08:19:15AM +0800, hank peng wrote: >> > Do you export the root directory of the XFS filesystem, or a >> > subdirectory in it? ??If it's the former it should work in theory, >> > althrough I'm not sure how well 64-bit inode numbers work with a clien= t >> > that old, if it's the latter it needs a few tweaks to work, see >> > >> The following is what I did: >> 1. mkfs.xfs /dev/sdb =C2=A0 (whole disk) >> 2. create a mount point in my root filesystem: >> mkdir /mnt/mymount >> 3. monut xfs with inode64 >> mount /dev/sdb /mnt/mymount -o inode64 >> 4. export it in NFS /etc/exports >> /mnt/mymount =C2=A0 *(rw, no_root,squash, sync) >> >> so, is there any problem here? > > That should work fine, and I've tried it a lot of times. =C2=A0Do you see > the same issue when mounting the fs on the server (not recommended for > production use, just for testing!) and accessing it from the 2.6.35 > kernel nfs client? > yes, I have already done that. I mount the expoted NFS directory in same machine(kernel version is 2.6.35.6), but it still didn't work. Then, I used fsid=3D$(my exported filesystem ID) option in /etc/exports and tried again, it still gave me back "stale NFS file handle" when entering a specific subdirectory. I noticed that from NFS client(in same machine with NFS server) side, the inode number of this subdirectory was changed to be within 32 limit, but still "stale NFS file handle" came back. In local filesytem, I entered the mounted point and subdirectory, all is OK= . > --=20 The simplest is not all best but the best is surely the simplest! From support@eyespyclassifieds.com Tue Nov 22 20:15:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.0 required=5.0 tests=BAYES_50,J_CHICKENPOX_82, SUBJ_ALL_CAPS,T_FRT_BELOW2,URIBL_WS_SURBL autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAN2FpK2188868 for ; Tue, 22 Nov 2011 20:15:51 -0600 X-ASG-Debug-ID: 1322014548-14e301400000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from p3nlsmtp03.shr.prod.phx3.secureserver.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id C79F226FC9D for ; Tue, 22 Nov 2011 18:15:49 -0800 (PST) Received: from p3nlsmtp03.shr.prod.phx3.secureserver.net (p3nlsmtp03.shr.prod.phx3.secureserver.net [72.167.234.227]) by cuda.sgi.com with SMTP id A0OPcqfYEe4NixMb for ; Tue, 22 Nov 2011 18:15:49 -0800 (PST) Received: (qmail 20807 invoked from network); 23 Nov 2011 02:15:48 -0000 Received: from unknown (HELO P3NW3SH056.phx3.gdhosting.gdg) ([72.167.232.206]) (envelope-sender ) by p3nlsmtp03.shr.prod.phx3.secureserver.net (qmail-ldap-1.03) with SMTP for ; 23 Nov 2011 02:15:48 -0000 Received: from mail pickup service by P3NW3SH056.phx3.gdhosting.gdg with Microsoft SMTPSVC; Tue, 22 Nov 2011 19:15:48 -0700 From: To: "Friend" X-ASG-Orig-Subj: EARN EASY $5,850 WRIGHT NOW!! Subject: EARN EASY $5,850 WRIGHT NOW!! Date: Tue, 22 Nov 2011 19:15:48 -0700 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4862 Message-ID: X-OriginalArrivalTime: 23 Nov 2011 02:15:48.0299 (UTC) FILETIME=[D0A301B0:01CCA985] X-Barracuda-Connect: p3nlsmtp03.shr.prod.phx3.secureserver.net[72.167.234.227] X-Barracuda-Start-Time: 1322014549 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5044 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.75 X-Barracuda-Spam-Status: No, SCORE=0.75 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81024 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean EARN EASY $5,850 WRIGHT NOW!! Hello Friend, Inviting your friends online in your spare time is a very easy way to make some extra money. Our members are earning more than $5,850 or more by joining this website.. Earn money by referring others to join this website. You will get $39 for each referral. Suppose if someone joins under your referral link and you will get a commission of $39 USD in each.. Is Very Easy To make 5 referrals per day,5 x $39 =$195 earn everyday)So in one month? $195 x 30 days=$5,850 /month for just referring others. This is Different to Other Work at Home Opportunities.. IMPORTANT: NOVEMBER,- 24 -2011 is the Cut-Off Date to lock in your position! Be sure to JOIN NOW to secure ALL the commission before they go to someone else! You will be paid on Nov 30/2011 Big Company and Click Bank pay you Direct Paypal Credit Card Or no limit of your income. CLICK HERE: bellow And Hits The $5,850 Before Others Can Do... ==>> http://worldurl.webs.com/autotrafficavalanche.html Big Companies Are Ready to Pay You Right Now for Your Time [All You Have To Do Is Join the Auto Traffic Avalnche Step-By-Step Process] 1 - Login to the Auto Traffic Avalnche exclusive member's area 2 - Watch the videos 3 - Register with the companies you choose 4 - Start posting your ads 5 - Add some of the other cash boosting techniques you'll find in the guide, when you're ready 6 - Just sit back and watch the money come in! How to promote your referral link on internet? 1. By Placing advertisements in various classified website 2. By sending email to all of your friends in your email address book. 3. By Posting your referral link in various discussion forums 4. By posting link in http://www.answers.yahoo.com 5. By posting the link in http://www.gmail.com 6. By using Yahoo chat, Yahoo groups, Google groups etc CLICK HERE: bellow And Hits The $5,850 Before Others Can Do... ==>> http://worldurl.webs.com/autotrafficavalanche.html Start making money now by this program. So refer more and earn more. To your success, Shelly Ryans This is where you can type a brief description of your site. Email sent by: earncash@gmail.com (Shelly Ryans) Powered by Eye Spy Classifieds From seto.hidetoshi@jp.fujitsu.com Tue Nov 22 20:40:06 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAN2e6WS189946 for ; Tue, 22 Nov 2011 20:40:06 -0600 X-ASG-Debug-ID: 1322016003-653601960000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fgwmail6.fujitsu.co.jp (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BAADF1D2B224 for ; Tue, 22 Nov 2011 18:40:03 -0800 (PST) Received: from fgwmail6.fujitsu.co.jp (fgwmail6.fujitsu.co.jp [192.51.44.36]) by cuda.sgi.com with ESMTP id UnQXoxYASFzmo0ww for ; Tue, 22 Nov 2011 18:40:03 -0800 (PST) Received: from m4.gw.fujitsu.co.jp (unknown [10.0.50.74]) by fgwmail6.fujitsu.co.jp (Postfix) with ESMTP id 8047F3EE0B6 for ; Wed, 23 Nov 2011 11:40:01 +0900 (JST) Received: from smail (m4 [127.0.0.1]) by outgoing.m4.gw.fujitsu.co.jp (Postfix) with ESMTP id 6963245DE4E for ; Wed, 23 Nov 2011 11:40:01 +0900 (JST) Received: from s4.gw.fujitsu.co.jp (s4.gw.fujitsu.co.jp [10.0.50.94]) by m4.gw.fujitsu.co.jp (Postfix) with ESMTP id 2004045DE54 for ; Wed, 23 Nov 2011 11:40:01 +0900 (JST) Received: from s4.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s4.gw.fujitsu.co.jp (Postfix) with ESMTP id 0B2D21DB802F for ; Wed, 23 Nov 2011 11:40:01 +0900 (JST) Received: from m105.s.css.fujitsu.com (m105.s.css.fujitsu.com [10.240.81.145]) by s4.gw.fujitsu.co.jp (Postfix) with ESMTP id C21E8E08002 for ; Wed, 23 Nov 2011 11:40:00 +0900 (JST) Received: from m105.css.fujitsu.com (m105 [127.0.0.1]) by m105.s.css.fujitsu.com (Postfix) with ESMTP id 3AD429C8031; Wed, 23 Nov 2011 11:40:00 +0900 (JST) Received: from [127.0.0.1] (unknown [10.124.101.101]) by m105.s.css.fujitsu.com (Postfix) with ESMTP id A1EE59C802B; Wed, 23 Nov 2011 11:39:59 +0900 (JST) X-SecurityPolicyCheck-FJ: OK by FujitsuOutboundMailChecker v1.3.1 Received: from FMVDA2A041[10.124.101.101] by FMVDA2A041 (FujitsuOutboundMailChecker v1.3.1/9992[10.124.101.101]); Wed, 23 Nov 2011 11:39:57 +0900 (JST) Message-ID: <4ECC5CCC.1090004@jp.fujitsu.com> Date: Wed, 23 Nov 2011 11:39:08 +0900 From: Hidetoshi Seto User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com, Dave Chinner X-ASG-Orig-Subj: [PATCH] xfstests: add aiodio helper functions Subject: [PATCH] xfstests: add aiodio helper functions Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-Barracuda-Connect: fgwmail6.fujitsu.co.jp[192.51.44.36] X-Barracuda-Start-Time: 1322016004 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=ISO2022JP_CHARSET X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81026 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 ISO2022JP_CHARSET ISO-2022-JP message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean For 198, 239 and 240, use _require_aiodio to fail gracefully if required program was not built. For 207-212, use _run_aiodio that includes _require_aiodio and kicks specified aio-dio program, to make code expressly simple. Signed-off-by: Hidetoshi Seto --- 198 | 3 ++- 207 | 7 +------ 208 | 7 +------ 209 | 7 +------ 210 | 7 +------ 211 | 7 +------ 212 | 7 +------ 239 | 4 +--- 240 | 3 ++- common.rc | 36 ++++++++++++++++++++++++++++++++++++ 10 files changed, 47 insertions(+), 41 deletions(-) diff --git a/198 b/198 index e46ec8d..2c72677 100755 --- a/198 +++ b/198 @@ -44,6 +44,7 @@ _cleanup() _supported_fs generic _supported_os Linux +_require_aiodio aiodio_sparse2 echo "Silence is golden." @@ -51,7 +52,7 @@ echo "Silence is golden." rm -f $seq.full rm -f "$TEST_DIR/aiodio_sparse*" -$here/src/aio-dio-regress/aiodio_sparse2 "$TEST_DIR/aiodio_sparse" +$AIO_TEST "$TEST_DIR/aiodio_sparse" status=$? exit diff --git a/207 b/207 index 32e6299..6fff833 100755 --- a/207 +++ b/207 @@ -46,11 +46,6 @@ _cleanup() _supported_fs generic _supported_os Linux -rm -f $TEST_DIR/aio-testfile -AIO_TEST=src/aio-dio-regress/aio-dio-extend-stat -[ -x $AIO_TEST ] || _notrun "$AIO_TEST not built" -$AIO_TEST $TEST_DIR/aio-testfile 2>&1 -status=$? -rm -f $TEST_DIR/aio-testfile +_run_aiodio aio-dio-extend-stat exit $status diff --git a/208 b/208 index e1fdaa1..ca01558 100755 --- a/208 +++ b/208 @@ -46,11 +46,6 @@ _cleanup() _supported_fs generic _supported_os Linux -rm -f $TEST_DIR/aio-testfile -AIO_TEST=src/aio-dio-regress/aio-dio-invalidate-failure -[ -x $AIO_TEST ] || _notrun "$AIO_TEST not built" -$AIO_TEST $TEST_DIR/aio-testfile 2>&1 -status=$? -rm -f $TEST_DIR/aio-testfile +_run_aiodio aio-dio-invalidate-failure exit $status diff --git a/209 b/209 index 06f10ae..650e300 100755 --- a/209 +++ b/209 @@ -46,11 +46,6 @@ _cleanup() _supported_fs generic _supported_os Linux -rm -f $TEST_DIR/aio-testfile -AIO_TEST=src/aio-dio-regress/aio-dio-invalidate-readahead -[ -x $AIO_TEST ] || _notrun "$AIO_TEST not built" -$AIO_TEST $TEST_DIR/aio-testfile 2>&1 -status=$? -rm -f $TEST_DIR/aio-testfile +_run_aiodio aio-dio-invalidate-readahead exit $status diff --git a/210 b/210 index e093079..a0873f8 100755 --- a/210 +++ b/210 @@ -46,11 +46,6 @@ _cleanup() _supported_fs generic _supported_os Linux -rm -f $TEST_DIR/aio-testfile -AIO_TEST=src/aio-dio-regress/aio-dio-subblock-eof-read -[ -x $AIO_TEST ] || _notrun "$AIO_TEST not built" -$AIO_TEST $TEST_DIR/aio-testfile 2>&1 -status=$? -rm -f $TEST_DIR/aio-testfile +_run_aiodio aio-dio-subblock-eof-read exit $status diff --git a/211 b/211 index 9428320..bb8d2aa 100755 --- a/211 +++ b/211 @@ -46,11 +46,6 @@ _cleanup() _supported_fs generic _supported_os Linux -rm -f $TEST_DIR/aio-testfile -AIO_TEST=src/aio-dio-regress/aio-free-ring-with-bogus-nr-pages -[ -x $AIO_TEST ] || _notrun "$AIO_TEST not built" -$AIO_TEST $TEST_DIR/aio-testfile 2>&1 -status=$? -rm -f $TEST_DIR/aio-testfile +_run_aiodio aio-free-ring-with-bogus-nr-pages exit $status diff --git a/212 b/212 index 627a431..1b4bb8a 100755 --- a/212 +++ b/212 @@ -47,11 +47,6 @@ _cleanup() _supported_fs generic _supported_os Linux -rm -f $TEST_DIR/aio-testfile -AIO_TEST=src/aio-dio-regress/aio-io-setup-with-nonwritable-context-pointer -[ -x $AIO_TEST ] || _notrun "$AIO_TEST not built" -$AIO_TEST $TEST_DIR/aio-testfile 2>&1 -status=$? -rm -f $TEST_DIR/aio-testfile +_run_aiodio aio-io-setup-with-nonwritable-context-pointer exit $status diff --git a/239 b/239 index 88ff776..6457c46 100755 --- a/239 +++ b/239 @@ -46,9 +46,7 @@ _supported_fs generic _supported_os Linux _require_sparse_files - -AIO_TEST=src/aio-dio-regress/aio-dio-hole-filling-race -[ -x $AIO_TEST ] || _notrun "$AIO_TEST not built" +_require_aiodio aio-dio-hole-filling-race echo "Silence is golden" diff --git a/240 b/240 index 563449e..dafcef3 100755 --- a/240 +++ b/240 @@ -52,6 +52,7 @@ _supported_fs generic _supported_os Linux _require_sparse_files +_require_aiodio aiodio_sparse2 echo "Silence is golden." @@ -69,7 +70,7 @@ fi # 2 threads, fs block sized writes, 64k filesize, stride through file by # fs block size, start at logical block size offset -$here/src/aio-dio-regress/aiodio_sparse2 -i 2 -w $fs_block_size -s 64k -n $fs_block_size -o $logical_block_size "$TEST_DIR/aiodio_sparse" +$AIO_TEST -i 2 -w $fs_block_size -s 64k -n $fs_block_size -o $logical_block_size "$TEST_DIR/aiodio_sparse" status=$? exit diff --git a/common.rc b/common.rc index cab0b64..bb3645f 100644 --- a/common.rc +++ b/common.rc @@ -864,6 +864,42 @@ _require_nonexternal() _notrun "External device testing in progress, skipped this test" } +# this test requires that a (specified) aio-dio executable exists +# $1 - command (optional) +# +_require_aiodio() +{ + if [ -z "$1" ] + then + AIO_TEST=src/aio-dio-regress/aiodio_sparse2 + [ -x $AIO_TEST ] || _notrun "aio-dio utilities required" + else + AIO_TEST=src/aio-dio-regress/$1 + [ -x $AIO_TEST ] || _notrun "$AIO_TEST not built" + fi +} + +# run an aio-dio program +# $1 - command +_run_aiodio() +{ + if [ -z "$1" ] + then + echo "usage: _run_aiodio command_name" 2>&1 + status=1; exit 1 + fi + + _require_aiodio $1 + + local testtemp=$TEST_DIR/aio-testfile + rm -f $testtemp + $AIO_TEST $testtemp 2>&1 + status=$? + rm -f $testtemp + + return $status +} + # indicate whether YP/NIS is active or not # _yp_active() -- 1.7.7.3 From BATV+b8162ab63dedda5a8630+3013+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 23 03:40:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAN9ertV206981 for ; Wed, 23 Nov 2011 03:40:54 -0600 X-ASG-Debug-ID: 1322041250-373901150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0DCA31551684 for ; Wed, 23 Nov 2011 01:40:50 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id WUsKCpg7qnE9cSTm for ; Wed, 23 Nov 2011 01:40:50 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RT9Jx-00042N-EZ; Wed, 23 Nov 2011 09:40:49 +0000 Date: Wed, 23 Nov 2011 04:40:49 -0500 From: Christoph Hellwig To: Jeff Liu Cc: xfs@oss.sgi.com, Chris Mason X-ASG-Orig-Subj: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE to XFS V2 Subject: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE to XFS V2 Message-ID: <20111123094049.GA5465@infradead.org> References: <4ECB5B21.7080508@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4ECB5B21.7080508@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322041251 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81055 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 22, 2011 at 04:19:45PM +0800, Jeff Liu wrote: > Hello, > > This is the V2 attempt to add SEEK_DATA/SEEK_HOLE to XFS. Thanks Jeff, this looks pretty good for "simple" implementation, I only have a few rather cosmetic comments. Do you plan on updating Josef's old xfstests support patch for SEEK_DATA/SEEK_HOLE? Also it would be nice to do the pagecache probing for dirty unwritten extents next to get a better quality of implementation. >+STATIC int >+xfs_seek_data( >+ struct xfs_inode *ip, >+ loff_t *start) >+{ In the XFS code we generally tab-aling the paramter names, just like you already did for the local variables: STATIC int xfs_seek_data( struct xfs_inode *ip, loff_t *start) (that also applies for a few other functions) > + /* > + * Hole handling for unwritten extents landed in a hole. > + * If the next extent is a data extent, then return the > + * start of it, otherwise we need to move the start offset > + * and map more blocks. > + */ I don't think this comment is quite correct. We don't just end up here for unwritten extents. I'd recommend something like: /* * We landed in a hole. Skip to the next extent. */ > + if (map[0].br_startblock == HOLESTARTBLOCK) { > + if (map[1].br_startblock == HOLESTARTBLOCK) { > + fsbno = map[1].br_startoff + > + map[1].br_blockcount; I don't think this code is reachable - xfs_bmapi will never produce multiple consecutive HOLESTARTBLOCK extents. If you want to ensure that feel free to add an assert, e.g. if (map[0].br_startblock == HOLESTARTBLOCK) { ASSERT(map[1].br_startblock != HOLESTARTBLOCK); *start = max_t(loff_t, seekoff, XFS_FSB_TO_B(mp, map[1].br_startoff)); break; } This also means that we never have to loop here until we add dirty unwritten probing - if the second extent doesn't contain data there won't be any other data extent in this file beyound our offset. > + > + /* > + * Landed in an in-memory data extent or in an allocated > + * extent. > + */ > + if (map[0].br_startoff == DELAYSTARTBLOCK || > + map[0].br_state == XFS_EXT_NORM) { I think just checking for br_state == XFS_EXT_NORM should be fine here, as unwritten extents can be delayed allocated. But until we add probing for dirty unwritten extents is added we have to treat unwritten extents as data anyway to avoid data loss. Note that once unwrittent extent probing also needs to cover the hole case above and not just this case. > +STATIC int > +xfs_seek_extent( > + struct inode *inode, > + loff_t *start, > + u32 type) > +{ > + struct xfs_inode *ip = XFS_I(inode); > + struct xfs_mount *mp = ip->i_mount; > + struct xfs_ifork *ifp; > + int lock; > + int error = 0; > + > + if (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS && > + ip->i_d.di_format != XFS_DINODE_FMT_BTREE && > + ip->i_d.di_format != XFS_DINODE_FMT_LOCAL) > + return XFS_ERROR(EINVAL); I'd recommend moving this check into xfs_file_llseek and even do it for the normal lseek requests - it's another sanity check for corrupted filesystems which makes sense everywhere. I also think the return value should be EFSCORRUPTED. Also XFS_DINODE_FMT_LOCAL isn't valid for regular files (yet) so it shouldn't be tested for. > + > + lock = xfs_ilock_map_shared(ip); > + > + if (XFS_FORCED_SHUTDOWN(mp)) { > + error = EIO; > + goto out_lock; > + } The shutdown check probably should go into the common lseek code and done for all cases. > + > + XFS_STATS_INC(xs_blk_mapr); I don't think this counter should be incremented here. > + ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); > + > + ASSERT(ifp->if_ext_max == > + XFS_IFORK_SIZE(ip, XFS_DATA_FORK) / (uint)sizeof(xfs_bmbt_rec_t)); Please just drop this assert. if_ext_max is pretty useless, and I have a patch to remove it pending. No adding another use of it in your patch will make merging a bit easier. > + if (!(ifp->if_flags & XFS_IFEXTENTS)) { > + error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK); > + if (error) > + goto out_lock; > + } > + > + if (type == SEEK_HOLE) > + error = xfs_seek_hole(ip, start); > + else > + error = xfs_seek_data(ip, start); Now that just the locking and the xfs_iread_extents call is left in this function I'd suggest to remove it and instead add duplicates of the locking and xfs_iread_extents into xfs_seek_hole and xfs_seek_data. > + switch (origin) { > + case SEEK_END: > + case SEEK_CUR: > + offset = generic_file_llseek(file, offset, origin); > + goto out; instead of the goto out just return the generic_file_llseek return value directly here. > + case SEEK_DATA: > + case SEEK_HOLE: > + if (offset >= i_size_read(inode)) { > + ret = -ENXIO; > + goto error; > + } > + > + ret = xfs_seek_extent(inode, &offset, origin); > + if (ret) > + goto error; > + } > + > + if (offset != file->f_pos) > + file->f_pos = offset; doing the offset update outside the case scrope doesn't make much sense. I'd probably just move the offset check and offset update into the low-level xfs_seek_data/xfs_seek_hole helpers - it's a tiny bit of duplication, but it keeps the functions self-contained and the top-level llseek method just dispatcher into the different routines. From sgi-linux-xfs@lo.gmane.org Wed Nov 23 07:15:15 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=BAYES_00,FORGED_HOTMAIL_RCVD2, FREEMAIL_FROM,J_CHICKENPOX_61,J_CHICKENPOX_65,RCVD_NUMERIC_HELO, T_TO_NO_BRKTS_FREEMAIL autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANDFBaX215877 for ; Wed, 23 Nov 2011 07:15:15 -0600 X-ASG-Debug-ID: 1322054109-01cd01400000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lo.gmane.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 914774F8CF0 for ; Wed, 23 Nov 2011 05:15:09 -0800 (PST) Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) by cuda.sgi.com with ESMTP id wtFCr92acK21YxJS for ; Wed, 23 Nov 2011 05:15:09 -0800 (PST) Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1RTCfJ-0007wn-79 for linux-xfs@oss.sgi.com; Wed, 23 Nov 2011 14:15:05 +0100 Received: from 202.96.96.18 ([202.96.96.18]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 23 Nov 2011 14:15:05 +0100 Received: from ygq51 by 202.96.96.18 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 23 Nov 2011 14:15:05 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: linux-xfs@oss.sgi.com From: Guoquan Yang X-ASG-Orig-Subj: Re: xfs: validate inode numbers in file handles correctly Subject: Re: xfs: validate inode numbers in file handles correctly Date: Wed, 23 Nov 2011 13:04:58 +0000 (UTC) Lines: 77 Message-ID: References: <1276846374-23916-1-git-send-email-david@fromorbit.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: sea.gmane.org User-Agent: Loom/3.14 (http://gmane.org/) X-Loom-IP: 202.96.96.18 (Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)) X-Barracuda-Connect: lo.gmane.org[80.91.229.12] X-Barracuda-Start-Time: 1322054110 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0200 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.35 X-Barracuda-Spam-Status: No, SCORE=0.35 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=FORGED_HOTMAIL_RCVD2, RCVD_NUMERIC_HELO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81068 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.25 RCVD_NUMERIC_HELO Received: contains an IP address used for HELO 1.12 FORGED_HOTMAIL_RCVD2 hotmail.com 'From' address, but no 'Received:' X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner fromorbit.com> writes: > > This series closes a recently discovered problem in XFS filehandle conversion. > On systems where inodes are dynamically deleted, XFS does not adequately verify > the inode numbers in the filehandles, which results in reading stale inodes > from disk and potentially returning them as valid files. Because these unlinked > inodes were never zeroed out when the chunk was deallocated, some inodes in the > chunk can still appear to have to data extents attached to them. This can lead > to stale data exposure, exposure of active data and potentially overwriting of > active data if the stale extents referenced in the unlinked inodes have been > re-allocated. > > Both NFS filehandles and local filehandles provided through libhandle have this > same problem. libhandle requires root permissions to use the interface, so it > is not exposing information that you can't get more easily with other means > (e.g. xfs_db or reading directly form the block device), so there isn't really > an issue here. > > For NFS, we may incorrectly accept stale file handles for unlinked inodes after > a server reboot if the unlinked inodes have not been overwritten leading to the > above issues being triggered if multiple NFS clients are accessing the some > files. > > Christoph's make-bulkstat-coherent patch is the basis for this series as > bulkstat can also expose unlinked inodes and information about them back to > userspace because it makes the same assumptions about inode lookups as the file > handle interfaces. > > As a result, the first two patches of the series make up the real bug fix. The > last two patches make it clear we are looking up untrusted inode numbers and > remove a shortcut that these interfaces used that we do not want used any > more. Hence for backports to other kernels, only the first two patches are > necessary. > > More information and the test program that demonstrates the issue via the > open_by_handle interface can be found here: > > http://oss.sgi.com/archives/xfs/2010-06/msg00191.html > > _______________________________________________ > xfs mailing list > xfs oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > > I meet with a problem when using 64bit XFS and NFS, When I access a directory from the NFS client,I get Stale NFS file Handle error.But it is ok when accessing on the server without NFS. And I have checked that the inode num in the NFS file handle is the same as inode num on the server, Using ls -il. I found that XFS_IGET_UNTRUSTED in xfs_imap() filtered the function xfs_imap_lookup(),It fails in xfs_imap_lookup() when access from NFS client.local access does not go into xfs_imap_lookup(). My kernel is Linux2.6.35.6 from kernel.org. please help me to find out this problem! Thanks! From jeff.liu@oracle.com Wed Nov 23 08:00:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANE0trL217604 for ; Wed, 23 Nov 2011 08:00:55 -0600 X-ASG-Debug-ID: 1322056850-36eb025d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from acsinet15.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 372A0155221A for ; Wed, 23 Nov 2011 06:00:50 -0800 (PST) Received: from acsinet15.oracle.com (acsinet15.oracle.com [141.146.126.227]) by cuda.sgi.com with ESMTP id hHS4bf6Inb52Ijfw for ; Wed, 23 Nov 2011 06:00:50 -0800 (PST) Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by acsinet15.oracle.com (Switch-3.4.4/Switch-3.4.4) with ESMTP id pANE0i3G019822 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 23 Nov 2011 14:00:45 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id pANE0iqf019590 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 23 Nov 2011 14:00:44 GMT Received: from abhmt117.oracle.com (abhmt117.oracle.com [141.146.116.69]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id pANE0cvY031294; Wed, 23 Nov 2011 08:00:38 -0600 Received: from [10.191.13.60] (/10.191.13.60) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 23 Nov 2011 06:00:35 -0800 Message-ID: <4ECCFC7C.7010207@oracle.com> Date: Wed, 23 Nov 2011 22:00:28 +0800 From: Jeff Liu Reply-To: jeff.liu@oracle.com Organization: Oracle User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Thunderbird/3.1.11 MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com, Chris Mason X-ASG-Orig-Subj: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE to XFS V2 Subject: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE to XFS V2 References: <4ECB5B21.7080508@oracle.com> <20111123094049.GA5465@infradead.org> In-Reply-To: <20111123094049.GA5465@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090201.4ECCFC8D.00A2,ss=1,re=0.000,fgs=0 X-Barracuda-Connect: acsinet15.oracle.com[141.146.126.227] X-Barracuda-Start-Time: 1322056851 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81071 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Christoph, On 11/23/2011 05:40 PM, Christoph Hellwig wrote: > On Tue, Nov 22, 2011 at 04:19:45PM +0800, Jeff Liu wrote: >> Hello, >> >> This is the V2 attempt to add SEEK_DATA/SEEK_HOLE to XFS. > > Thanks Jeff, this looks pretty good for "simple" implementation, > I only have a few rather cosmetic comments. Thanks for your comments. > > Do you plan on updating Josef's old xfstests support patch for > SEEK_DATA/SEEK_HOLE? Sure! Additionally, how about if I write two test cases, only to update Josef's patch, another to perform a copy tests. i.e, create a sparse file with dozens of holes, copy it via read/write, and then verify the contents through cmp(1) for further checking? > Also it would be nice to do the pagecache > probing for dirty unwritten extents next to get a better quality > of implementation. Ok, I'll try to implement it in next post. > >> +STATIC int >> +xfs_seek_data( >> + struct xfs_inode *ip, >> + loff_t *start) >> +{ > > In the XFS code we generally tab-aling the paramter names, just like > you already did for the local variables: > > STATIC int > xfs_seek_data( > struct xfs_inode *ip, > loff_t *start) > > (that also applies for a few other functions) Sigh, made a stupid mistake again. :( > >> + /* >> + * Hole handling for unwritten extents landed in a hole. >> + * If the next extent is a data extent, then return the >> + * start of it, otherwise we need to move the start offset >> + * and map more blocks. >> + */ > > I don't think this comment is quite correct. We don't just end up here > for unwritten extents. I'd recommend something like: > > /* > * We landed in a hole. Skip to the next extent. > */ > >> + if (map[0].br_startblock == HOLESTARTBLOCK) { >> + if (map[1].br_startblock == HOLESTARTBLOCK) { >> + fsbno = map[1].br_startoff + >> + map[1].br_blockcount; > > I don't think this code is reachable - xfs_bmapi will never produce > multiple consecutive HOLESTARTBLOCK extents. If you want to ensure > that feel free to add an assert, e.g. Ah! I know why I failed to triggered this code with many test cases. I'd like to add the assert in this stage. > > if (map[0].br_startblock == HOLESTARTBLOCK) { > ASSERT(map[1].br_startblock != HOLESTARTBLOCK); > > *start = max_t(loff_t, seekoff, > XFS_FSB_TO_B(mp, map[1].br_startoff)); > break; > } > > This also means that we never have to loop here until we add dirty > unwritten probing - if the second extent doesn't contain data there > won't be any other data extent in this file beyound our offset. > >> + >> + /* >> + * Landed in an in-memory data extent or in an allocated >> + * extent. >> + */ > >> + if (map[0].br_startoff == DELAYSTARTBLOCK || >> + map[0].br_state == XFS_EXT_NORM) { > > I think just checking for br_state == XFS_EXT_NORM should be fine here, > as unwritten extents can be delayed allocated. But until we add probing > for dirty unwritten extents is added we have to treat unwritten extents > as data anyway to avoid data loss. > > Note that once unwrittent extent probing also needs to cover the hole > case above and not just this case. Thanks for pointing those out, I'll try to resolve them with page cache probing for unwritten extents then. > >> +STATIC int >> +xfs_seek_extent( >> + struct inode *inode, >> + loff_t *start, >> + u32 type) >> +{ >> + struct xfs_inode *ip = XFS_I(inode); >> + struct xfs_mount *mp = ip->i_mount; >> + struct xfs_ifork *ifp; >> + int lock; >> + int error = 0; >> + >> + if (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS && >> + ip->i_d.di_format != XFS_DINODE_FMT_BTREE && >> + ip->i_d.di_format != XFS_DINODE_FMT_LOCAL) >> + return XFS_ERROR(EINVAL); > > I'd recommend moving this check into xfs_file_llseek and even do it > for the normal lseek requests - it's another sanity check for corrupted > filesystems which makes sense everywhere. I also think the return value > should be EFSCORRUPTED. > > Also XFS_DINODE_FMT_LOCAL isn't valid for regular files (yet) so it > shouldn't be tested for. > >> + >> + lock = xfs_ilock_map_shared(ip); >> + >> + if (XFS_FORCED_SHUTDOWN(mp)) { >> + error = EIO; >> + goto out_lock; >> + } > > The shutdown check probably should go into the common lseek code and > done for all cases. > >> + >> + XFS_STATS_INC(xs_blk_mapr); > > I don't think this counter should be incremented here. I will take of above issues. > >> + ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); >> + >> + ASSERT(ifp->if_ext_max == >> + XFS_IFORK_SIZE(ip, XFS_DATA_FORK) / (uint)sizeof(xfs_bmbt_rec_t)); > > Please just drop this assert. if_ext_max is pretty useless, and I have > a patch to remove it pending. No adding another use of it in your patch > will make merging a bit easier. This change will reflect in next post too. > >> + if (!(ifp->if_flags & XFS_IFEXTENTS)) { >> + error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK); >> + if (error) >> + goto out_lock; >> + } >> + >> + if (type == SEEK_HOLE) >> + error = xfs_seek_hole(ip, start); >> + else >> + error = xfs_seek_data(ip, start); > > Now that just the locking and the xfs_iread_extents call is left in > this function I'd suggest to remove it and instead add duplicates > of the locking and xfs_iread_extents into xfs_seek_hole and > xfs_seek_data. So per my understood, we need to isolate the pre-checking code to xfs_file_llseek(), and duplicate locking and xfs_iread_extents() to seek_data/hole. In this way, we could reduce the coupling in terms of those routines functionality? > >> + switch (origin) { >> + case SEEK_END: >> + case SEEK_CUR: >> + offset = generic_file_llseek(file, offset, origin); >> + goto out; > > instead of the goto out just return the generic_file_llseek return > value directly here. Definitely! > >> + case SEEK_DATA: >> + case SEEK_HOLE: >> + if (offset >= i_size_read(inode)) { >> + ret = -ENXIO; >> + goto error; >> + } >> + >> + ret = xfs_seek_extent(inode, &offset, origin); >> + if (ret) >> + goto error; >> + } >> + >> + if (offset != file->f_pos) >> + file->f_pos = offset; > > doing the offset update outside the case scrope doesn't make much sense. > > I'd probably just move the offset check and offset update into the > low-level xfs_seek_data/xfs_seek_hole helpers - it's a tiny bit of > duplication, but it keeps the functions self-contained and the > top-level llseek method just dispatcher into the different routines. Sorry, those codes are just copied from other file systems, I need to consolidate them. Thanks, -Jeff From BATV+b8162ab63dedda5a8630+3013+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 23 08:30:48 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_61, J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANEUlpo218739 for ; Wed, 23 Nov 2011 08:30:48 -0600 X-ASG-Debug-ID: 1322058646-01c4027a0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 07D1E571B56 for ; Wed, 23 Nov 2011 06:30:46 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id DZqfopvX0OTtdBO9 for ; Wed, 23 Nov 2011 06:30:46 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RTDqX-0007Cw-Kb; Wed, 23 Nov 2011 14:30:45 +0000 Date: Wed, 23 Nov 2011 09:30:45 -0500 From: Christoph Hellwig To: Guoquan Yang Cc: linux-xfs@oss.sgi.com, hank peng X-ASG-Orig-Subj: Re: xfs: validate inode numbers in file handles correctly Subject: Re: xfs: validate inode numbers in file handles correctly Message-ID: <20111123143045.GA20892@infradead.org> References: <1276846374-23916-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322058647 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81074 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 23, 2011 at 01:04:58PM +0000, Guoquan Yang wrote: > I meet with a problem when using 64bit XFS and NFS, > > When I access a directory from the NFS client,I get Stale NFS file Handle > error.But it is ok when accessing on the server without NFS. > > And I have checked that the inode num in the NFS file handle is the same as > inode num on the server, Using ls -il. > > I found that XFS_IGET_UNTRUSTED in xfs_imap() filtered the function > xfs_imap_lookup(),It fails in xfs_imap_lookup() when access from NFS > client.local access does not go into xfs_imap_lookup(). > > My kernel is Linux2.6.35.6 from kernel.org. please help me to find out this > problem! It seems like you hit the same issue hank peng reported recently, and in facr your are on the same kernel for the serve as he is. >From a closer look it seems like the changes you mentioned above indeed had a bug in Linux 2.6.35, which was later fixed with the following commit mmit 4536f2ad8b330453d7ebec0746c4374eadd649b1 Author: Dave Chinner Date: Tue Aug 24 11:42:30 2010 +1000 xfs: fix untrusted inode number lookup which should be included in Linux 2.6.35.6. Can you make sure you really have the commit? Can you also verify that a recent kernel like Linux 3.0-stable shows the same behaviour? From BATV+b8162ab63dedda5a8630+3013+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 23 09:51:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANFpVTf222233 for ; Wed, 23 Nov 2011 09:51:31 -0600 X-ASG-Debug-ID: 1322063489-01cd03b50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 37BAA5721FC for ; Wed, 23 Nov 2011 07:51:29 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id oZAJ3VQ5hczDDiDL for ; Wed, 23 Nov 2011 07:51:29 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RTF6f-0006Qi-2V; Wed, 23 Nov 2011 15:51:29 +0000 Date: Wed, 23 Nov 2011 10:51:29 -0500 From: Christoph Hellwig To: Gregory Farnum Cc: xfs@oss.sgi.com, Christoph Hellwig , Eric Sandeen X-ASG-Orig-Subj: Re: EFSCORRUPTED on mount? Subject: Re: EFSCORRUPTED on mount? Message-ID: <20111123155128.GA16436@infradead.org> References: <20111122014114.GJ2386@dastard> <4ECBEF83.5020607@sandeen.net> <4ECC19C3.5070905@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322063490 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0013 1.0000 -2.0124 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.91 X-Barracuda-Spam-Status: No, SCORE=-1.91 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81079 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 22, 2011 at 04:03:15PM -0800, Gregory Farnum wrote: > We're going to look into this in more detail very shortly. Right now > all I can tell you is that none of the drives ever actually lost > power, so unless something is explicitly telling them to clear their > caches I don't know how the drives could have lost their cache to > cause a problem like this. > But for now I'll just see what I can get by zeroing out the log, and > we'll get back to you again if we manage to reproduce this in a > situation where we can tell you more definitively about the caching > and barriers. I would be very interested in that. The situation you have is fairly easy to pinpoint down - we do log recovery and find and EFI record in the log - that is one that logs the intent to free extents. We haven't found the corresponing EFD record, which cancels it out as part of the transaction doing the actual freeing. I'd love to see a log dump of a fs iff this can be reproduced as that would shows us if we had some sort of bug in recovery. From bpm@sgi.com Wed Nov 23 10:30:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANGUeiD223686 for ; Wed, 23 Nov 2011 10:30:40 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1F651304048; Wed, 23 Nov 2011 08:30:36 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 5F0BA431F74; Wed, 23 Nov 2011 10:30:46 -0600 (CST) Date: Wed, 23 Nov 2011 10:30:46 -0600 From: Ben Myers To: Dave Chinner , Christoph Hellwig , Alex Elder Cc: xfs@oss.sgi.com, nfbrown@suse.com, ataschner@novell.com Subject: [REVIEW] xfssyncd lost wakes circa 2.6.32 Message-ID: <20111123163046.GQ29840@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi, I'd like to request a review for this patch. This is related to ENOSPC condition and also project quotas, where we call xfs_flush_inodes from xfs_iomap_write_delay. Neil and Andreas did some very heavy lifting on this bug (suse 722910) and found that there is a repeatable ~30ish second delay in xfs_write that is related to xfssyncd at ENOSPC. From there I captured the interaction in this trace: Nov 22 15:06:39 nfs4 kernel: [ 478.757337] 5571: xfs_flush_inodes (sdb1) start Nov 22 15:06:39 nfs4 kernel: [ 478.757338] 5571: xfs_syncd_queue_work (sdb1) start Nov 22 15:06:39 nfs4 kernel: [ 478.757341] 5571: xfs_syncd_queue_work (sdb1) end Nov 22 15:06:39 nfs4 kernel: [ 478.757344] 1767: xfssyncd awake Nov 22 15:06:39 nfs4 kernel: [ 478.757346] 1767: xfs_flush_inodes_work (sdb1) start Nov 22 15:06:39 nfs4 kernel: [ 478.757352] 1767: xfs_flush_inodes_work (sdb1) end Nov 22 15:06:40 nfs4 kernel: [ 478.757357] 5571: xfs_flush_inodes (sdb1) end Nov 22 15:06:40 nfs4 kernel: [ 478.757367] 5571: xfs_flush_inodes (sdb1) start Nov 22 15:06:40 nfs4 kernel: [ 478.757368] 5571: xfs_syncd_queue_work (sdb1) start Nov 22 15:06:40 nfs4 kernel: [ 478.757370] 5571: xfs_syncd_queue_work (sdb1) end Nov 22 15:06:40 nfs4 kernel: [ 478.757394] 1767: xfssyncd go to sleep Nov 22 15:06:40 nfs4 kernel: [ 508.708008] 830: xfssyncd awake Nov 22 15:06:40 nfs4 kernel: [ 508.708011] 830 xfs_sync_worker (sda3) start Nov 22 15:06:40 nfs4 kernel: [ 508.708016] 830 xfs_sync_worker (sda3) end Nov 22 15:06:40 nfs4 kernel: [ 508.708018] 830: xfssyncd go to sleep Nov 22 15:06:40 nfs4 kernel: [ 514.664300] 1767: xfssyncd awake Nov 22 15:06:40 nfs4 kernel: [ 514.664303] 1767: xfs_flush_inodes_work (sdb1) start Nov 22 15:06:40 nfs4 kernel: [ 514.664317] 1767: xfs_flush_inodes_work (sdb1) end Nov 22 15:06:40 nfs4 kernel: [ 514.664322] 1767 xfs_sync_worker (sdb1) start Nov 22 15:06:40 nfs4 kernel: [ 514.664324] 5571: xfs_flush_inodes (sdb1) end Nov 22 15:06:40 nfs4 kernel: [ 514.664330] 1767 xfs_sync_worker (sdb1) end Nov 22 15:06:40 nfs4 kernel: [ 514.664332] 1767: xfssyncd go to sleep Nov 22 15:06:40 nfs4 kernel: [ 514.664349] 5091ef25 35s 907016877s ^^^ xid ^^^^^^ service time delay in nfsd_vfs_write Note that xfssyncd was going to sleep at 478.757394, even though work had just been queued. It looks to me like xfs_syncd_queue_work can try to wake xfssyncd when it's already running, and xfssyncd can subsequently go back to sleep, holding off the xfs_flush_inodes_work until the timer pops again. David has already rewritten this subsystem using work queues, but I'd rather fix this very specific issue for support purposes than backport a new implementation. To fix this we need to check m_sync_list under lock and only sleep if it is empty. Also set TASK_INTERRUPTIBLE before the check so that if we're woken we won't sleep either. This is discussed here: http://www.linuxjournal.com/node/8144/print I'm also adding work items to the tail of the temp list so that they are processed in the order they were added. My testing of this patch shows that the ~30s delay is gone, but I did see a ~2s delay in there occasionally. Thanks! -Ben Index: linux/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- linux.orig/fs/xfs/linux-2.6/xfs_sync.c +++ linux/fs/xfs/linux-2.6/xfs_sync.c @@ -620,13 +620,25 @@ xfssyncd( set_freezable(); timeleft = xfs_syncd_centisecs * msecs_to_jiffies(10); for (;;) { - timeleft = schedule_timeout_interruptible(timeleft); - /* swsusp */ - try_to_freeze(); - if (kthread_should_stop() && list_empty(&mp->m_sync_list)) + set_current_state(TASK_INTERRUPTIBLE); + spin_lock(&mp->m_sync_lock); + + if (list_empty(&mp->m_sync_list) && !kthread_should_stop()) { + spin_unlock(&mp->m_sync_lock); + + timeleft = schedule_timeout_interruptible(timeleft); + /* swsusp */ + try_to_freeze(); + + spin_lock(&mp->m_sync_lock); + } + set_current_state(TASK_RUNNING); + + if (kthread_should_stop() && list_empty(&mp->m_sync_list)) { + spin_unlock(&mp->m_sync_lock); break; + } - spin_lock(&mp->m_sync_lock); /* * We can get woken by laptop mode, to do a sync - * that's the (only!) case where the list would be @@ -641,7 +653,7 @@ xfssyncd( &mp->m_sync_list); } list_for_each_entry_safe(work, n, &mp->m_sync_list, w_list) - list_move(&work->w_list, &tmp); + list_move_tail(&work->w_list, &tmp); spin_unlock(&mp->m_sync_lock); list_for_each_entry_safe(work, n, &tmp, w_list) { From sandeen@redhat.com Wed Nov 23 11:09:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_45 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANH9grH225025 for ; Wed, 23 Nov 2011 11:09:43 -0600 X-ASG-Debug-ID: 1322068181-260402150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 82BC91552CC6 for ; Wed, 23 Nov 2011 09:09:41 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id aAH0QncPNyQoIYQG for ; Wed, 23 Nov 2011 09:09:41 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pANH9drx023215 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 23 Nov 2011 12:09:39 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id pANH9bwk023331 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Wed, 23 Nov 2011 12:09:38 -0500 Message-ID: <4ECD28D1.1080800@redhat.com> Date: Wed, 23 Nov 2011 11:09:37 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: Theodore Tso CC: Yu Jian , Andreas Dilger , "linux-ext4@vger.kernel.org" , xfs-oss X-ASG-Orig-Subj: [PATCH] xfstests: Sort recursive getfattr output in 062 Subject: [PATCH] xfstests: Sort recursive getfattr output in 062 References: <4EC10664.1080501@tuxadero.com> <20111115142246.GA7516@thunk.org> <246EA1CC-3C33-4D41-80C0-2331C426EBB0@whamcloud.com> <4ECA4282.5020908@whamcloud.com> <401CC4FF-8955-4D5F-B620-5C39AF566123@mit.edu> <4ECB2ADE.3010007@redhat.com> In-Reply-To: <4ECB2ADE.3010007@redhat.com> X-Enigmail-Version: 1.3.3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1322068182 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Test 062 was made "generic" a while back, but it fails on any filesystem which returns getfattr -R results (aka readdir results) in something other than inode-order. With a little awk-fu we can sort the records from getfattr -R so that the output is the same for xfs as well as ext4, etc. Also filter out lost+found which extN creates at mkfs time, but some other filesystems do not. Signed-off-by: Eric Sandeen - --- diff --git a/062 b/062 index f666e1b..7005c4e 100755 - --- a/062 +++ b/062 @@ -46,6 +46,13 @@ _cleanup() } trap "_cleanup; exit \$status" 0 1 2 3 15 +# getfattr -R returns info in readdir order which varies from fs to fs. +# This sorts the output by filename +_sort_getfattr_output() +{ + awk '{a[FNR]=$0}END{n = asort(a); for(i=1; i <= n; i++) print a[i],"\n"}' RS='' +} + getfattr() { $GETFATTR_PROG --absolute-names -dh $@ 2>&1 | _filter_scratch @@ -67,7 +74,7 @@ _create_test_bed() mknod $SCRATCH_MNT/dev/c c 0 0 mknod $SCRATCH_MNT/dev/p p # sanity check - - find $SCRATCH_MNT | LC_COLLATE=POSIX sort | _filter_scratch + find $SCRATCH_MNT | LC_COLLATE=POSIX sort | _filter_scratch | grep -v "lost+found" } # real QA test starts here @@ -160,18 +167,18 @@ _extend_test_bed() # whack a symlink in the middle, just to be difficult ln -s $SCRATCH_MNT/here/up $SCRATCH_MNT/descend/and # dump out our new starting point - - find $SCRATCH_MNT | LC_COLLATE=POSIX sort | _filter_scratch + find $SCRATCH_MNT | LC_COLLATE=POSIX sort | _filter_scratch | grep -v "lost+found" } _extend_test_bed echo echo "*** directory descent with us following symlinks" - -getfattr -h -L -R -m '.' -e hex $SCRATCH_MNT +getfattr -h -L -R -m '.' -e hex $SCRATCH_MNT | _sort_getfattr_output echo echo "*** directory descent without following symlinks" - -getfattr -h -P -R -m '.' -e hex $SCRATCH_MNT +getfattr -h -P -R -m '.' -e hex $SCRATCH_MNT | _sort_getfattr_output # diff --git a/062.out b/062.out index 699254a..7d05c85 100644 - --- a/062.out +++ b/062.out @@ -508,115 +508,115 @@ SCRATCH_MNT/lnk SCRATCH_MNT/reg *** directory descent with us following symlinks - -# file: SCRATCH_MNT/reg - -trusted.name=0xbabe - -trusted.name3=0xdeface - -user.name=0xbabe - -user.name3=0xdeface +# file: SCRATCH_MNT/descend +user.1=0x3233 +user.x=0x797a - -# file: SCRATCH_MNT/dir - -trusted.name=0xbabe - -trusted.name3=0xdeface - -user.name=0xbabe - -user.name3=0xdeface +# file: SCRATCH_MNT/descend/and/ascend +trusted.9=0x3837 +trusted.a=0x6263 - -# file: SCRATCH_MNT/lnk - -trusted.name=0xbabe - -trusted.name3=0xdeface +# file: SCRATCH_MNT/descend/down +user.1=0x3233 +user.x=0x797a + +# file: SCRATCH_MNT/descend/down/here +user.1=0x3233 +user.x=0x797a # file: SCRATCH_MNT/dev/b trusted.name=0xbabe - -trusted.name3=0xdeface +trusted.name3=0xdeface # file: SCRATCH_MNT/dev/c trusted.name=0xbabe - -trusted.name3=0xdeface +trusted.name3=0xdeface # file: SCRATCH_MNT/dev/p trusted.name=0xbabe +trusted.name3=0xdeface + +# file: SCRATCH_MNT/dir +trusted.name=0xbabe trusted.name3=0xdeface +user.name=0xbabe +user.name3=0xdeface # file: SCRATCH_MNT/here trusted.9=0x3837 - -trusted.a=0x6263 +trusted.a=0x6263 # file: SCRATCH_MNT/here/up trusted.9=0x3837 - -trusted.a=0x6263 +trusted.a=0x6263 # file: SCRATCH_MNT/here/up/ascend trusted.9=0x3837 - -trusted.a=0x6263 +trusted.a=0x6263 +# file: SCRATCH_MNT/lnk +trusted.name=0xbabe +trusted.name3=0xdeface + +# file: SCRATCH_MNT/reg +trusted.name=0xbabe +trusted.name3=0xdeface +user.name=0xbabe +user.name3=0xdeface + + +*** directory descent without following symlinks # file: SCRATCH_MNT/descend user.1=0x3233 - -user.x=0x797a +user.x=0x797a # file: SCRATCH_MNT/descend/down user.1=0x3233 - -user.x=0x797a +user.x=0x797a # file: SCRATCH_MNT/descend/down/here user.1=0x3233 - -user.x=0x797a - - - -# file: SCRATCH_MNT/descend/and/ascend - -trusted.9=0x3837 - -trusted.a=0x6263 - - - - - -*** directory descent without following symlinks - -# file: SCRATCH_MNT/reg - -trusted.name=0xbabe - -trusted.name3=0xdeface - -user.name=0xbabe - -user.name3=0xdeface - - - -# file: SCRATCH_MNT/dir - -trusted.name=0xbabe - -trusted.name3=0xdeface - -user.name=0xbabe - -user.name3=0xdeface - - - -# file: SCRATCH_MNT/lnk - -trusted.name=0xbabe - -trusted.name3=0xdeface +user.x=0x797a # file: SCRATCH_MNT/dev/b trusted.name=0xbabe - -trusted.name3=0xdeface +trusted.name3=0xdeface # file: SCRATCH_MNT/dev/c trusted.name=0xbabe - -trusted.name3=0xdeface +trusted.name3=0xdeface # file: SCRATCH_MNT/dev/p trusted.name=0xbabe +trusted.name3=0xdeface + +# file: SCRATCH_MNT/dir +trusted.name=0xbabe trusted.name3=0xdeface +user.name=0xbabe +user.name3=0xdeface # file: SCRATCH_MNT/here trusted.9=0x3837 - -trusted.a=0x6263 +trusted.a=0x6263 # file: SCRATCH_MNT/here/up trusted.9=0x3837 - -trusted.a=0x6263 +trusted.a=0x6263 # file: SCRATCH_MNT/here/up/ascend trusted.9=0x3837 - -trusted.a=0x6263 +trusted.a=0x6263 - -# file: SCRATCH_MNT/descend - -user.1=0x3233 - -user.x=0x797a - - - -# file: SCRATCH_MNT/descend/down - -user.1=0x3233 - -user.x=0x797a +# file: SCRATCH_MNT/lnk +trusted.name=0xbabe +trusted.name3=0xdeface - -# file: SCRATCH_MNT/descend/down/here - -user.1=0x3233 - -user.x=0x797a +# file: SCRATCH_MNT/reg +trusted.name=0xbabe +trusted.name3=0xdeface +user.name=0xbabe +user.name3=0xdeface -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.17 (Darwin) Comment: GPGTools - http://gpgtools.org Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJOzSjQAAoJECCuFpLhPd7gsJIP/j2BKTvft/QjnLxs+gJT/f0S H7L9r/izHcQ5Z/xk9t4unpOr35EsXOuwMzWN8OrB3fCx0J7gkIj7s7dNFrou8K8w bkVW6lzy5VUOHPzkqFSNLHSf2YLrrXNfPBLgOQl8A4lkNzY4gjy74uw05bLL4z3y u+gmjwuOMRTwGe3N9l/q6VR7UybHRyYBE62Ee2SPBa59FFWdicqzQBGVj0OOAdQg asTekASb8fXv/A4GNMFyNpZtA65ov8puISeGjV/A9Dhrx843qn1IFLA3UfcWEPEf qF5MDkg0ZuDDzN8YOiZM5S6mY7KAGSiKAHlF9nNZistCMJy4UDWh2lGLCIDEoO8l oRpbEOQy8tq7v7ppgp4kmh+8aIj0bletjZbgumPiu8KrRNCyXlBpGYGsBIPH+wgn P0i7EKILkF7gRM6Gs4U7Ek88mLcDSrsRGjI7JWQgOufUoo9noZM4pBlfw+ngx3DC NlhxisqyWcwDAVV1MBNvoSNGB5iLNCTgb/Ppgb7SdwNJ/heX9EAgKTsTnyENjtYe ILcuWf0CLYRPG9gun3JIXS/IibJY4Eqi3E9jo+Et5q6eOGTFuD0hjgERULUzH9d2 wwWFq7KPtdJJbWK0mANn2HK0GQH79gskmWsFS8Mxl7JCSMfPOFdbHNSbqdzNKXJS +OIS7v24/L/pNQNtuqEt =hW9Q -----END PGP SIGNATURE----- From arekm@maven.pl Wed Nov 23 11:27:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_63, MIME_8BIT_HEADER,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANHRXvi225794 for ; Wed, 23 Nov 2011 11:27:33 -0600 X-ASG-Debug-ID: 1322069249-5a5d020f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F34DC1D2EBEC for ; Wed, 23 Nov 2011 09:27:29 -0800 (PST) Received: from mail-bw0-f53.google.com (mail-bw0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id vdnXXS4i3fUSJ5h3 for ; Wed, 23 Nov 2011 09:27:29 -0800 (PST) Received: by bkaq10 with SMTP id q10so2014879bka.26 for ; Wed, 23 Nov 2011 09:27:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=maven.pl; s=maven; h=from:to:subject:date:user-agent:cc:references:in-reply-to :mime-version:content-type:content-transfer-encoding:message-id; bh=Q3JkOaJf/0CUfnwZ+PS9A4zywWzswMRNciYznGKeSZk=; b=qotpn00PvmuPWCIuffS1BCxYv+1iRuhpxoCZVonE6NUZbGoTCC2swm+SlAYQHHjoq0 VywcJhU+6fVOk3zubn9vRU4/reeJBWR2Qiw5XfHDO3xxyQ+SJuESTDLUYraPYFPACSw7 YeFX/10gZHWhv517TPhNyJlWCWojJjisCxwXk= Received: by 10.204.132.78 with SMTP id a14mr22223147bkt.15.1322069247186; Wed, 23 Nov 2011 09:27:27 -0800 (PST) Received: from t400.localnet (89-69-21-174.dynamic.chello.pl. [89.69.21.174]) by mx.google.com with ESMTPS id l18sm22617128fab.9.2011.11.23.09.27.25 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 23 Nov 2011 09:27:26 -0800 (PST) From: Arkadiusz =?utf-8?q?Mi=C5=9Bkiewicz?= To: Christoph Hellwig X-ASG-Orig-Subj: Re: [PATCH] repair: avoid ABBA deadlocks on prefetched buffers Subject: Re: [PATCH] repair: avoid ABBA deadlocks on prefetched buffers Date: Wed, 23 Nov 2011 18:27:24 +0100 User-Agent: KMail/1.13.7 (Linux/3.2.0-rc2-00400-g866d43c; KDE/4.7.3; x86_64; ; ) Cc: xfs@oss.sgi.com References: <20111115210953.GA6670@infradead.org> <201111180944.10048.arekm@maven.pl> <20111122224620.GA20107@infradead.org> In-Reply-To: <20111122224620.GA20107@infradead.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <201111231827.24601.arekm@maven.pl> X-Barracuda-Connect: mail-bw0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1322069250 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81085 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tuesday 22 of November 2011, Christoph Hellwig wrote: > On Fri, Nov 18, 2011 at 09:44:09AM +0100, Arkadiusz Mi??kiewicz wrote: > > On Tuesday 15 of November 2011, Christoph Hellwig wrote: > > > Both the prefetch threads and actual repair processing threads can ha= ve > > > multiple buffers at a time locked, but they do no use a common locker > > > order, which can lead to ABBA deadlocks while trying to lock the > > > buffers. > >=20 > > There is still some issue with deadlocking. > >=20 > > The last printed messages: > > b????dna liczba magiczna 0x41425443 w bloku inobt 2/1438099 > > b????dna liczba magiczna 0x41425443 w bloku inobt 2/1438196 > > b????dna liczba magiczna 0x41425443 w bloku inobt 2/1438732 > > (invalid magic number ... in block inobt ...) >=20 > It looks like you have a circular loop in the inobt tree, and repair > deadlocks trying to read the same node again. Below is a patch working > around that by allowing recursive locking for the buffer lock and then > letting the normal two strikes and out policy apply. I'm not overly > proud of the patch, but in the short term I can't think of anything > better. Seems still deadlocking Last lines on console: bad hash table for directory inode 13655493544 (brak wpisu danych): przebud= owano rebuilding directory inode 13655493544 bad hash table for directory inode 13655509455 (brak wpisu danych): przebud= owano rebuilding directory inode 13655509455 [root@berta ~]# gdb ./xfs_repair_tcmalloc 23701 GNU gdb (GDB) 7.3.1-1 (PLD Linux) Copyright (C) 2011 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-pld-linux". =46or bug reporting instructions, please see: ... Reading symbols from /root/xfs_repair_tcmalloc...done. Attaching to program: /root/xfs_repair_tcmalloc, process 23701 Reading symbols from /lib64/libuuid.so.1...(no debugging symbols found)...d= one. Loaded symbols for /lib64/libuuid.so.1 Reading symbols from /lib64/librt.so.1...(no debugging symbols found)...don= e. Loaded symbols for /lib64/librt.so.1 Reading symbols from /lib64/libtcmalloc_minimal.so.0...(no debugging symbol= s found)...done. Loaded symbols for /lib64/libtcmalloc_minimal.so.0 Reading symbols from /lib64/libpthread.so.0...(no debugging symbols found).= =2E.done. [Thread debugging using libthread_db enabled] [New Thread 0x7fab01798700 (LWP 5134)] [New Thread 0x7fab00f97700 (LWP 5133)] [New Thread 0x7fab0279a700 (LWP 5132)] [New Thread 0x7fab01f99700 (LWP 5131)] [New Thread 0x7fab02f9b700 (LWP 5130)] Loaded symbols for /lib64/libpthread.so.0 Reading symbols from /usr/lib64/libstdc++.so.6...(no debugging symbols foun= d)...done. Loaded symbols for /usr/lib64/libstdc++.so.6 Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done. Loaded symbols for /lib64/libm.so.6 Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done. Loaded symbols for /lib64/libc.so.6 Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols fo= und)...done. Loaded symbols for /lib64/ld-linux-x86-64.so.2 Reading symbols from /lib64/libgcc_s.so.1...(no debugging symbols found)...= done. Loaded symbols for /lib64/libgcc_s.so.1 0x00007fab0a7ed8e4 in __lll_lock_wait () from /lib64/libpthread.so.0 (gdb) bt #0 0x00007fab0a7ed8e4 in __lll_lock_wait () from /lib64/libpthread.so.0 #1 0x00007fab0a7e91b5 in _L_lock_883 () from /lib64/libpthread.so.0 #2 0x00007fab0a7e900a in pthread_mutex_lock () from /lib64/libpthread.so.0 #3 0x00000000004334f8 in libxfs_getbuf_flags (device=3D, bl= kno=3D, len=3D, flags=3D) at r= dwr.c:428 #4 0x00000000004337ce in libxfs_readbuf (dev=3D65024, blkno=3D6827773504, = len=3D8, flags=3D0) at rdwr.c:547 #5 0x0000000000434369 in libxfs_trans_read_buf (mp=3D, tp= =3D0x0, dev=3D65024, blkno=3D6827773504, len=3D8, flags=3D0, bpp=3D0x7fff75= 10edd8) at trans.c:485 #6 0x0000000000443147 in xfs_da_do_buf (trans=3D0x0, dp=3D,= bno=3D, mappedbnop=3D0x7fff7510ee48, bpp=3D0x12922faa8,=20 whichfork=3D, caller=3D2, ra=3D0x422354) at xfs_da_btree= =2Ec:2016 #7 0x00000000004354f4 in libxfs_da_read_bufr (trans=3D, dp= =3D, bno=3D, mappedbno=3D6827773504, bpp=3D,=20 whichfork=3D) at util.c:635 #8 0x0000000000422354 in longform_dir2_entry_check (mp=3D0x7fff7510f300, i= no=3D13655547166, ip=3D0x9a1a7a20, num_illegal=3D0x7fff7510f258,=20 need_dot=3D0x7fff7510f24c, irec=3D0xacfefc0, ino_offset=3D30, hashtab= =3D0xa0028900) at phase6.c:2517 #9 0x0000000000424358 in process_dir_inode (mp=3D0x7fff7510f300, agno=3D, irec=3D0xacfefc0, ino_offset=3D30) at phase6.c:3307 #10 0x0000000000426f64 in traverse_function (arg=3D0x12a06c360, agno=3D3, w= q=3D) at phase6.c:3622 #11 traverse_ags (mp=3D0x7fff7510f300) at phase6.c:3664 #12 phase6 (mp=3D0x7fff7510f300) at phase6.c:3756 #13 0x0000000000402c69 in main (argc=3D, argv=3D) at xfs_repair.c:772 (gdb) info threads Id Target Id Frame=20 6 Thread 0x7fab02f9b700 (LWP 5130) "xfs_repair_tcma" 0x00007fab0a7ed01= 0 in sem_wait () from /lib64/libpthread.so.0 5 Thread 0x7fab01f99700 (LWP 5131) "xfs_repair_tcma" 0x00007fab0a7eae6= c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 4 Thread 0x7fab0279a700 (LWP 5132) "xfs_repair_tcma" 0x00007fab0a7eae6= c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 3 Thread 0x7fab00f97700 (LWP 5133) "xfs_repair_tcma" 0x00007fab0a7eae6= c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 2 Thread 0x7fab01798700 (LWP 5134) "xfs_repair_tcma" 0x00007fab0a7eae6= c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 * 1 Thread 0x7fab0b0e0760 (LWP 23701) "xfs_repair_tcma" 0x00007fab0a7ed8= e4 in __lll_lock_wait () from /lib64/libpthread.so.0 (gdb) thread 2 [Switching to thread 2 (Thread 0x7fab01798700 (LWP 5134))] #0 0x00007fab0a7eae6c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/lib= pthread.so.0 (gdb) bt #0 0x00007fab0a7eae6c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/lib= pthread.so.0 #1 0x00000000004297b3 in pf_io_worker (param=3D0x12a06c360) at prefetch.c:= 565 #2 0x00007fab0a7e6ed5 in start_thread () from /lib64/libpthread.so.0 #3 0x00007fab09fa3e5d in clone () from /lib64/libc.so.6 #4 0x0000000000000000 in ?? () (gdb) thread 3 [Switching to thread 3 (Thread 0x7fab00f97700 (LWP 5133))] #0 0x00007fab0a7eae6c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/lib= pthread.so.0 (gdb) bt #0 0x00007fab0a7eae6c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/lib= pthread.so.0 #1 0x00000000004297b3 in pf_io_worker (param=3D0x12a06c360) at prefetch.c:= 565 #2 0x00007fab0a7e6ed5 in start_thread () from /lib64/libpthread.so.0 #3 0x00007fab09fa3e5d in clone () from /lib64/libc.so.6 #4 0x0000000000000000 in ?? () (gdb) thread 4 [Switching to thread 4 (Thread 0x7fab0279a700 (LWP 5132))] #0 0x00007fab0a7eae6c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/lib= pthread.so.0 (gdb) bt #0 0x00007fab0a7eae6c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/lib= pthread.so.0 #1 0x00000000004297b3 in pf_io_worker (param=3D0x12a06c360) at prefetch.c:= 565 #2 0x00007fab0a7e6ed5 in start_thread () from /lib64/libpthread.so.0 #3 0x00007fab09fa3e5d in clone () from /lib64/libc.so.6 #4 0x0000000000000000 in ?? () (gdb) thread 5 [Switching to thread 5 (Thread 0x7fab01f99700 (LWP 5131))] #0 0x00007fab0a7eae6c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/lib= pthread.so.0 (gdb) bt #0 0x00007fab0a7eae6c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/lib= pthread.so.0 #1 0x00000000004297b3 in pf_io_worker (param=3D0x12a06c360) at prefetch.c:= 565 #2 0x00007fab0a7e6ed5 in start_thread () from /lib64/libpthread.so.0 #3 0x00007fab09fa3e5d in clone () from /lib64/libc.so.6 #4 0x0000000000000000 in ?? () (gdb) thread 6 [Switching to thread 6 (Thread 0x7fab02f9b700 (LWP 5130))] #0 0x00007fab0a7ed010 in sem_wait () from /lib64/libpthread.so.0 (gdb) bt #0 0x00007fab0a7ed010 in sem_wait () from /lib64/libpthread.so.0 #1 0x0000000000429c72 in pf_queuing_worker (param=3D0x12a06c360) at prefet= ch.c:644 #2 0x00007fab0a7e6ed5 in start_thread () from /lib64/libpthread.so.0 #3 0x00007fab09fa3e5d in clone () from /lib64/libc.so.6 #4 0x0000000000000000 in ?? () (gdb) >=20 >=20 > Index: xfsprogs-dev/include/libxfs.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfsprogs-dev.orig/include/libxfs.h 2011-11-22 22:28:23.000000000 +0000 > +++ xfsprogs-dev/include/libxfs.h 2011-11-22 22:34:27.000000000 +0000 > @@ -226,6 +226,8 @@ typedef struct xfs_buf { > unsigned b_bcount; > dev_t b_dev; > pthread_mutex_t b_lock; > + pthread_t b_holder; > + unsigned int b_recur; > void *b_fsprivate; > void *b_fsprivate2; > void *b_fsprivate3; > Index: xfsprogs-dev/libxfs/rdwr.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfsprogs-dev.orig/libxfs/rdwr.c 2011-11-22 22:28:23.000000000 +0000 > +++ xfsprogs-dev/libxfs/rdwr.c 2011-11-22 22:40:01.000000000 +0000 > @@ -342,6 +342,8 @@ libxfs_initbuf(xfs_buf_t *bp, dev_t devi > list_head_init(&bp->b_lock_list); > #endif > pthread_mutex_init(&bp->b_lock, NULL); > + bp->b_holder =3D 0; > + bp->b_recur =3D 0; > } >=20 > xfs_buf_t * > @@ -410,18 +412,24 @@ libxfs_getbuf_flags(dev_t device, xfs_da > return NULL; >=20 > if (use_xfs_buf_lock) { > - if (flags & LIBXFS_GETBUF_TRYLOCK) { > - int ret; > + int ret; >=20 > - ret =3D pthread_mutex_trylock(&bp->b_lock); > - if (ret) { > - ASSERT(ret =3D=3D EAGAIN); > - cache_node_put(libxfs_bcache, (struct cache_node *)bp); > - return NULL; > + ret =3D pthread_mutex_trylock(&bp->b_lock); > + if (ret) { > + ASSERT(ret =3D=3D EAGAIN); > + if (flags & LIBXFS_GETBUF_TRYLOCK) > + goto out_put; > + > + if (pthread_equal(bp->b_holder, pthread_self())) { > + fprintf(stderr, > + _("recursive buffer locking detected\n")); > + bp->b_recur++; > + } else { > + pthread_mutex_lock(&bp->b_lock); > } > - } else { > - pthread_mutex_lock(&bp->b_lock); > } > + > + bp->b_holder =3D pthread_self(); > } >=20 > cache_node_set_priority(libxfs_bcache, (struct cache_node *)bp, > @@ -440,6 +448,9 @@ libxfs_getbuf_flags(dev_t device, xfs_da > #endif >=20 > return bp; > +out_put: > + cache_node_put(libxfs_bcache, (struct cache_node *)bp); > + return NULL; > } >=20 > struct xfs_buf * > @@ -458,8 +469,14 @@ libxfs_putbuf(xfs_buf_t *bp) > list_del_init(&bp->b_lock_list); > pthread_mutex_unlock(&libxfs_bcache->c_mutex); > #endif > - if (use_xfs_buf_lock) > - pthread_mutex_unlock(&bp->b_lock); > + if (use_xfs_buf_lock) { > + if (bp->b_recur) { > + bp->b_recur--; > + } else { > + bp->b_holder =3D 0; > + pthread_mutex_unlock(&bp->b_lock); > + } > + } > cache_node_put(libxfs_bcache, (struct cache_node *)bp); > } =2D-=20 Arkadiusz Mi=C5=9Bkiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From sandeen@redhat.com Wed Nov 23 11:50:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANHoUCo226769 for ; Wed, 23 Nov 2011 11:50:31 -0600 X-ASG-Debug-ID: 1322070629-07d203480000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5E9811552F23 for ; Wed, 23 Nov 2011 09:50:30 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id w9cqkYGQEidaXqNq for ; Wed, 23 Nov 2011 09:50:30 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pANHoTjw004115 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 23 Nov 2011 12:50:29 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id pANHoQbE013693 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Wed, 23 Nov 2011 12:50:29 -0500 Message-ID: <4ECD3262.105@redhat.com> Date: Wed, 23 Nov 2011 11:50:26 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: xfs-oss CC: ext4 development X-ASG-Orig-Subj: [PATCH] xfstests: mount other filesystems with selinux context as well Subject: [PATCH] xfstests: mount other filesystems with selinux context as well X-Enigmail-Version: 1.3.3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1322070630 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 For some reason, non-xfs filesystems aren't getting mounted with the selinux context; perhaps because none of the xattr tests used to work on anything but xfs? Anyway, 062 fails for extN unless we mount with the fs-wide context. Signed-off-by: Eric Sandeen - --- diff --git a/common.rc b/common.rc index cab0b64..5998ff2 100644 - --- a/common.rc +++ b/common.rc @@ -86,14 +86,17 @@ _mount_opts() export MOUNT_OPTIONS=$NFS_MOUNT_OPTIONS ;; ext2|ext3|ext4|ext4dev) - - # acls & xattrs aren't turned on by default on ext$FOO + export SELINUX_MOUNT_OPTIONS + # acls & xattrs aren't turned on by default on ext$FOO in old kernels export MOUNT_OPTIONS="-o acl,user_xattr $EXT_MOUNT_OPTIONS" ;; reiserfs) + export SELINUX_MOUNT_OPTIONS # acls & xattrs aren't turned on by default on reiserfs export MOUNT_OPTIONS="-o acl,user_xattr $REISERFS_MOUNT_OPTIONS" ;; gfs2) + export SELINUX_MOUNT_OPTIONS # acls aren't turned on by default on gfs2 export MOUNT_OPTIONS="-o acl $GFS2_MOUNT_OPTIONS" ;; -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.17 (Darwin) Comment: GPGTools - http://gpgtools.org Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJOzTJgAAoJECCuFpLhPd7gv14QAJPmvzzrv7hTUq6Fuw5uLrnY AJ/h2dxdJyKfcdSQe6InI9EmDOt6kD3GPR5PnfWn06tvNz2vHDeKwb8m29vaidcW 2RGvTdtxEl/3z7ePv2PBuPqib+Ns27aaOL6cXZbv9aikN6QwDOEdja99aH6ALyN/ 4sVHlyabTUS3858KDtlYlSsVm9StvMNKf3BsKhaGOBfgN1tAQkgLc4PekGiY4uFn Dkm7G8uLgqIOuzEP0mwodAvFtDaFOuxmlJrWsKc2hzb9n6fqNBR8qb2XkpYJjoc/ 8KLCNu8o1TvEVYrObRq6bRfGbLRLjbfdVBWC2382BtZnGgF5jONR6xP9CN8bKAkk Cns7AYGIndRzXy46d1U1lxrPtHw7VTIUUPuKf3iNICQc/voiSlpEL/R3RH5rFgaw nRA1y+ufQNxNjFBKw9FwjuQ3+Eq+NZeytFoUETZVptxgtD+hkKl5oVGsTtqS2gpq pJoWBMb7agQdARVBgOXNQ937KFwP5NV4fMZ157K0pwp1QPkCiV6ueP23T/XRAFhU zAHPN22h4Ab1g5xiQWVZwfqCYkm8CjV0h6GAi2uwXCij1sqiv5IYehy/XIv171y4 lEVYkQl390wpaMtmpO6xDHRMlGPQX2T00JEGoUqIpATFX6h3JkX3LdB+FIvdzh06 AtgjqsaI8FmcvMfZlcBi =6s9a -----END PGP SIGNATURE----- From jakub@bogusz.priv.pl Wed Nov 23 13:11:15 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_22 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANJBDLv230622 for ; Wed, 23 Nov 2011 13:11:15 -0600 X-ASG-Debug-ID: 1322075468-126700b70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.qboosh.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1CC811D2FA40 for ; Wed, 23 Nov 2011 11:11:08 -0800 (PST) Received: from mail.qboosh.pl (mail.qboosh.pl [217.73.31.61]) by cuda.sgi.com with ESMTP id vrny9S3htvyMZHIF for ; Wed, 23 Nov 2011 11:11:08 -0800 (PST) Received: from stranger.qboosh.pl (77-253-113-243.adsl.inetia.pl [77.253.113.243]) by mail.qboosh.pl (Postfix) with ESMTPSA id 45519FB0C1 for ; Wed, 23 Nov 2011 20:12:49 +0100 (CET) Received: from stranger.qboosh.pl (localhost [127.0.0.1]) by stranger.qboosh.pl (8.14.3/8.14.3) with ESMTP id pANJBt07017190 for ; Wed, 23 Nov 2011 20:11:55 +0100 Received: (from qboosh@localhost) by stranger.qboosh.pl (8.14.3/8.14.3/Submit) id pANJBskt017186 for xfs@oss.sgi.com; Wed, 23 Nov 2011 20:11:54 +0100 Date: Wed, 23 Nov 2011 20:11:54 +0100 From: Jakub Bogusz To: xfs@oss.sgi.com X-ASG-Orig-Subj: Polish translation update for xfsprogs 3.1.7 Subject: Polish translation update for xfsprogs 3.1.7 Message-ID: <20111123191153.GE14429@stranger.qboosh.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: mail.qboosh.pl[217.73.31.61] X-Barracuda-Start-Time: 1322075469 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2189 1.0000 -0.7296 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.73 X-Barracuda-Spam-Status: No, SCORE=-0.73 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81091 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello, I've just updated pl.po file for xfsprogs 3.1.7. It's available at http://qboosh.pl/pl.po/xfsprogs-3.1.7.pl.po Note that there are still two msgid issues (hex vs decimal formatting): #: .././repair/scan.c:314 #, c-format msgid "bad state %d, inode 0x% bmap block 0x%\n" #: .././repair/scan.c:391 #, c-format msgid "inode 0x% bad # of bmap records (%u, min - %u, max - %u)\n" I'd suggest: -"bad state %d, inode 0x% bmap block 0x%\n" +"bad state %d, inode % bmap block 0x%\n" -"inode 0x% bad # of bmap records (%u, min - %u, max - %u)\n" +"inode % bad # of bmap records (%u, min - %u, max - %u)\n" -- Jakub Bogusz http://qboosh.pl/ From sandeen@redhat.com Wed Nov 23 13:11:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANJBwHL230664 for ; Wed, 23 Nov 2011 13:11:59 -0600 X-ASG-Debug-ID: 1322075517-772c00860000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2510716DDD30 for ; Wed, 23 Nov 2011 11:11:57 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id QavB28D4JBycdbDk for ; Wed, 23 Nov 2011 11:11:57 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pANJBugK025913 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 23 Nov 2011 14:11:56 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id pANJBsDf009805 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 23 Nov 2011 14:11:55 -0500 Message-ID: <4ECD4579.4080706@redhat.com> Date: Wed, 23 Nov 2011 13:11:53 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: xfs-oss CC: ext4 development X-ASG-Orig-Subj: [PATCH] xfstests: make xattr test 020 generic Subject: [PATCH] xfstests: make xattr test 020 generic X-Enigmail-Version: 1.3.3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1322075518 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 020 can be made generic by limiting the total attribute space used in the tests as appropriate. Unless we know we have a large-xattr-capable fs, limit total space to a bit under one fs block. Now passes for me on ext3, ext4, btrfs, as well as xfs. Signed-off-by: Eric Sandeen - --- incidentally the test used to send a 100k xattr value to the attr command on xfs; it wrote only 64k but did not complain. Feature or bug? diff --git a/020 b/020 index 56b9c3c..d196318 100755 - --- a/020 +++ b/020 @@ -80,7 +80,7 @@ _attr_list() # real QA test starts here - -_supported_fs xfs udf +_supported_fs generic _supported_os Linux _require_attrs @@ -119,9 +119,19 @@ _attr_list $testfile echo "*** add lots of attributes" v=0 - -while [ $v -lt 1000 ] + +# set maximum total attr space based on fs type +if [ "$FSTYP" == "xfs" -o "$FSTYP" == "udf" ]; then + NUMATTRS=1000 +else # Assume max ~1 block of attrs + BLOCK_SIZE=`stat -f $TEST_DEV | grep "Block size" | cut -d " " -f3` + # user.attribute_XXX="value.XXX" is about 32 bytes; leave some overhead + let NUMATTRS=$BLOCK_SIZE/40 +fi + +while [ $v -lt $NUMATTRS ] do - - echo "value_$v" | attr -s "attribute_$v" $testfile >>$seq.full + echo -n "value_$v" | attr -s "attribute_$v" $testfile >>$seq.full if [ $? -ne 0 ] then echo "!!! failed to add \"attribute_$v\"" @@ -139,11 +149,12 @@ getfattr --absolute-names $testfile \ /^#/ { next } /^[ ]*$/ { next } { l++ } - - END {print " *** " (l - 1) " attribute(s)" }' + END {print " *** " (l - 1) " attribute(s)" }' \ + | sed s/$NUMATTRS/NUMATTRS/ echo "*** remove lots of attributes" v=0 - -while [ $v -lt 1000 ] +while [ $v -lt $NUMATTRS ] do if ! $ATTR_PROG -r "attribute_$v" $testfile >>$seq.full then @@ -156,11 +167,21 @@ done _attr_list $testfile +# Set max attr vlue size based on fs type +if [ "$FSTYP" == "xfs" -o "$FSTYP" == "udf" -o "$FSTYP" == "btrfs" ]; then + ATTRVAL_SIZE=64 +else # Assume max ~1 block of attrs + BLOCK_SIZE=`stat -f $TEST_DEV | grep "Block size" | cut -d " " -f3` + # leave a little overhead + let ATTRVAL_SIZE=$BLOCK_SIZE-256 +fi + echo "*** really long value" - -dd if=/dev/zero bs=1024 count=100 2>/dev/null \ +dd if=/dev/zero bs=1 count=$ATTRVAL_SIZE 2>/dev/null \ | _attr -s "long_attr" $testfile >/dev/null - - - -_attr -g "long_attr" $testfile | tail -n +2 | od -t x1 + +OCTAL_SIZE=`echo "obase=8; $ATTRVAL_SIZE" | bc` +_attr -q -g "long_attr" $testfile | od -t x1 | sed -e "s/^0*$OCTAL_SIZE$/ATTRSIZE/" _attr -r "long_attr" $testfile >/dev/null diff --git a/020.out b/020.out index 3e444be..b303200 100644 - --- a/020.out +++ b/020.out @@ -40,7 +40,7 @@ user.snrub="fish2\012" *** add lots of attributes *** check - - *** 1000 attribute(s) + *** NUMATTRS attribute(s) *** remove lots of attributes *** print attributes # file: @@ -49,8 +49,7 @@ user.snrub="fish2\012" *** really long value 0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 * - -0200000 0a - -0200001 +ATTRSIZE *** set/get/remove really long names (expect failure) attr_set: Invalid argument Could not set "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" for -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.17 (Darwin) Comment: GPGTools - http://gpgtools.org Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJOzUV4AAoJECCuFpLhPd7gZ6QP/39tqAYI/Luh4s8YaMADgop0 w/zH6swZDZni2/iBgBbfvx4Gg+UEYYVZ3CnJ6Q5LnIUbD/L5/IXNDxmxmin4782C M8Hdl1Tjy/tQDu/AtIPI7e9FOAxCJVO781ArO9BXwgtPEk8CJVZFOnQ1ZZkpyI0T JVKS+I/iuDxX97kYLCCwLkk8tVPzr8X61nymrwSkf/YMxlcMXrVuGbr1Usoac97o QyRy53ivePGdW62eRVpUSHNU7jm1SaCAWX6OrnC31EzRwUdpeO8yHiVEFhI0he3x g1ODe/fxCoXbT+EkmEAWbBx6TvyscgOTWcQ7tGWmcNkjP2xN7jVde7NJDrRWAS2C aFzC3qbtl6Bw9AMX3roglxWFbFsheggtspDiO/El4Vx/zEbdMEFvrAP51rtRqFha VK6W98FweFY1Zb73ZRqR7EozFN86JXroEIPnvLlqoxcRF2M0iRerZuf/8CWE/rqb LAwfmZbDmXlPpK+lskbS3LJnMJZ6LaDnx64z0EUQFRT3jmSRKV949E2/V/mtx/t4 Fj9ECrGbD+f7fBe7kqdkb6RdtCDCU4ZdD20G++n7+Uiype82cUrPnrPBxDrDOD3Q BQRYCsBsRIyVXrcLsZ0YicAPAPJGa8bxd0Hg2ZI4WTnBEpQhuvXdk69IHBMX3NFN aMIIVDdshJ+bPCC/0jor =A/u5 -----END PGP SIGNATURE----- From neilb@suse.de Wed Nov 23 13:42:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANJgW1o232231 for ; Wed, 23 Nov 2011 13:42:33 -0600 X-ASG-Debug-ID: 1322077350-102b00a60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 85A3616DDF0B for ; Wed, 23 Nov 2011 11:42:30 -0800 (PST) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id KaG49PfO3B1l5nmX for ; Wed, 23 Nov 2011 11:42:30 -0800 (PST) Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id 9B5378AD27; Wed, 23 Nov 2011 20:42:29 +0100 (CET) Date: Thu, 24 Nov 2011 06:42:16 +1100 From: NeilBrown To: Ben Myers Cc: Dave Chinner , Christoph Hellwig , Alex Elder , xfs@oss.sgi.com, nfbrown@suse.com, ataschner@novell.com X-ASG-Orig-Subj: Re: [REVIEW] xfssyncd lost wakes circa 2.6.32 Subject: Re: [REVIEW] xfssyncd lost wakes circa 2.6.32 Message-ID: <20111124064216.5ff54077@notabene.brown> In-Reply-To: <20111123163046.GQ29840@sgi.com> References: <20111123163046.GQ29840@sgi.com> X-Mailer: Claws Mail 3.7.10 (GTK+ 2.22.1; x86_64-unknown-linux-gnu) Mime-Version: 1.0 Content-Type: multipart/signed; micalg=PGP-SHA1; boundary="Sig_/gJrYk2zTA4tH_.Q47TsKSqF"; protocol="application/pgp-signature" X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1322077351 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81094 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --Sig_/gJrYk2zTA4tH_.Q47TsKSqF Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable On Wed, 23 Nov 2011 10:30:46 -0600 Ben Myers wrote: > Hi, >=20 > I'd like to request a review for this patch. This is related to ENOSPC > condition and also project quotas, where we call xfs_flush_inodes from > xfs_iomap_write_delay. Neil and Andreas did some very heavy lifting on > this bug (suse 722910) and found that there is a repeatable ~30ish > second delay in xfs_write that is related to xfssyncd at ENOSPC. From > there I captured the interaction in this trace: >=20 > Nov 22 15:06:39 nfs4 kernel: [ 478.757337] 5571: xfs_flush_inodes (sdb1)= start > Nov 22 15:06:39 nfs4 kernel: [ 478.757338] 5571: xfs_syncd_queue_work (s= db1) start > Nov 22 15:06:39 nfs4 kernel: [ 478.757341] 5571: xfs_syncd_queue_work (s= db1) end > Nov 22 15:06:39 nfs4 kernel: [ 478.757344] 1767: xfssyncd awake > Nov 22 15:06:39 nfs4 kernel: [ 478.757346] 1767: xfs_flush_inodes_work (= sdb1) start > Nov 22 15:06:39 nfs4 kernel: [ 478.757352] 1767: xfs_flush_inodes_work (= sdb1) end > Nov 22 15:06:40 nfs4 kernel: [ 478.757357] 5571: xfs_flush_inodes (sdb1)= end > Nov 22 15:06:40 nfs4 kernel: [ 478.757367] 5571: xfs_flush_inodes (sdb1)= start > Nov 22 15:06:40 nfs4 kernel: [ 478.757368] 5571: xfs_syncd_queue_work (s= db1) start > Nov 22 15:06:40 nfs4 kernel: [ 478.757370] 5571: xfs_syncd_queue_work (s= db1) end > Nov 22 15:06:40 nfs4 kernel: [ 478.757394] 1767: xfssyncd go to sleep > Nov 22 15:06:40 nfs4 kernel: [ 508.708008] 830: xfssyncd awake > Nov 22 15:06:40 nfs4 kernel: [ 508.708011] 830 xfs_sync_worker (sda3) st= art > Nov 22 15:06:40 nfs4 kernel: [ 508.708016] 830 xfs_sync_worker (sda3) end > Nov 22 15:06:40 nfs4 kernel: [ 508.708018] 830: xfssyncd go to sleep > Nov 22 15:06:40 nfs4 kernel: [ 514.664300] 1767: xfssyncd awake > Nov 22 15:06:40 nfs4 kernel: [ 514.664303] 1767: xfs_flush_inodes_work (= sdb1) start > Nov 22 15:06:40 nfs4 kernel: [ 514.664317] 1767: xfs_flush_inodes_work (= sdb1) end > Nov 22 15:06:40 nfs4 kernel: [ 514.664322] 1767 xfs_sync_worker (sdb1) s= tart > Nov 22 15:06:40 nfs4 kernel: [ 514.664324] 5571: xfs_flush_inodes (sdb1)= end > Nov 22 15:06:40 nfs4 kernel: [ 514.664330] 1767 xfs_sync_worker (sdb1) e= nd > Nov 22 15:06:40 nfs4 kernel: [ 514.664332] 1767: xfssyncd go to sleep > Nov 22 15:06:40 nfs4 kernel: [ 514.664349] 5091ef25 35s 907016877s > ^^^ xid ^^^^^^ service time = delay in nfsd_vfs_write >=20 > Note that xfssyncd was going to sleep at 478.757394, even though work > had just been queued. It looks to me like xfs_syncd_queue_work can try > to wake xfssyncd when it's already running, and xfssyncd can > subsequently go back to sleep, holding off the xfs_flush_inodes_work > until the timer pops again. David has already rewritten this subsystem > using work queues, but I'd rather fix this very specific issue for > support purposes than backport a new implementation. >=20 > To fix this we need to check m_sync_list under lock and only sleep if it > is empty. Also set TASK_INTERRUPTIBLE before the check so that if we're > woken we won't sleep either. This is discussed here: >=20 > http://www.linuxjournal.com/node/8144/print >=20 > I'm also adding work items to the tail of the temp list so that they are > processed in the order they were added. My testing of this patch shows > that the ~30s delay is gone, but I did see a ~2s delay in there > occasionally. >=20 > Thanks! > -Ben >=20 > Index: linux/fs/xfs/linux-2.6/xfs_sync.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- linux.orig/fs/xfs/linux-2.6/xfs_sync.c > +++ linux/fs/xfs/linux-2.6/xfs_sync.c > @@ -620,13 +620,25 @@ xfssyncd( > set_freezable(); > timeleft =3D xfs_syncd_centisecs * msecs_to_jiffies(10); > for (;;) { > - timeleft =3D schedule_timeout_interruptible(timeleft); > - /* swsusp */ > - try_to_freeze(); > - if (kthread_should_stop() && list_empty(&mp->m_sync_list)) > + set_current_state(TASK_INTERRUPTIBLE); > + spin_lock(&mp->m_sync_lock); > + > + if (list_empty(&mp->m_sync_list) && !kthread_should_stop()) { > + spin_unlock(&mp->m_sync_lock); > + > + timeleft =3D schedule_timeout_interruptible(timeleft); This should be just "schedule_timeout(timeleft)". This call sets TASK_INTERRUPTIBLE so we will go to sleep even if we were only just woken up. I don't really know the XFS code well enough to the rest looks right, but with that small fix it certainly doesn't look wrong :-) NeilBrown > + /* swsusp */ > + try_to_freeze(); > + > + spin_lock(&mp->m_sync_lock); > + } > + set_current_state(TASK_RUNNING); > + > + if (kthread_should_stop() && list_empty(&mp->m_sync_list)) { > + spin_unlock(&mp->m_sync_lock); > break; > + } > =20 > - spin_lock(&mp->m_sync_lock); > /* > * We can get woken by laptop mode, to do a sync - > * that's the (only!) case where the list would be > @@ -641,7 +653,7 @@ xfssyncd( > &mp->m_sync_list); > } > list_for_each_entry_safe(work, n, &mp->m_sync_list, w_list) > - list_move(&work->w_list, &tmp); > + list_move_tail(&work->w_list, &tmp); > spin_unlock(&mp->m_sync_lock); > =20 > list_for_each_entry_safe(work, n, &tmp, w_list) { >=20 >=20 --Sig_/gJrYk2zTA4tH_.Q47TsKSqF Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (GNU/Linux) iQIVAwUBTs1MmDnsnt1WYoG5AQIzMg//RzqUYSPXyqyDP6g7OnXa+mI4RzLPpCVK hcFPGOR1NiSAOfTquLK0RdT29kxiYVR2NbSmHOyblMbgPhxf43Hikpouf+LM7rKS XSHPsjQ47ONUrjeHd2YvMzaFgy2zrxRkGF2e/EvpfG9dfPQPQGPS3f/EKw/6MOug L6oWD6JD40/5F5kCTVPaG5gyO3GruokSJ4hKmuMu1SOJ/l4jlniFxRHnyqdmCXEn TPUwqO0YPqgo+98zVcmVAd2WgoUPYPFOWrDRKSDHhdmXxU3YRUe4RBAphStx+z5e co3cSkymMwVxWZn/4S2/wcNF3VhtNuRupx+YB1qtbBhcyfGL/eAFrDkvJEtw9IIm sHc51z1ip8oMNahBfZnr7nobdxFKFLW1GvMWw/hsJiKYUY/vbQFHgo0fkRu1dUl4 bvJdJ+zZNEk8zfEd8ozcnLwxgVfoRlaZBF3DNzzA9qO+iRypHS7k4TNpHQKf194/ Herw+FHw5WAov1TnNboE/7aIOWCBh9sG8HMoq93M3536f74EKSFc9l4kKfvYQlBb beDfVWHhu7ujl9wGQ2Q/qxYWtzRIQEzZynkARbOB6y2/h0TcLb4FoLzdzhpMNZiL SWiUg6TGE0tN8rZZqtwtA7SVbZVdDEJsaLcLErJQFWQ/59zdMw2Uit6T0GJKJGvW ZVqJTgj2KFg= =TlNj -----END PGP SIGNATURE----- --Sig_/gJrYk2zTA4tH_.Q47TsKSqF-- From bpm@sgi.com Wed Nov 23 14:30:24 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANKUNI7234171 for ; Wed, 23 Nov 2011 14:30:24 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id 54EBD8F8050; Wed, 23 Nov 2011 12:30:20 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id CCB1B431F74; Wed, 23 Nov 2011 14:30:41 -0600 (CST) Date: Wed, 23 Nov 2011 14:30:41 -0600 From: Ben Myers To: NeilBrown Cc: Dave Chinner , Christoph Hellwig , Alex Elder , xfs@oss.sgi.com, nfbrown@suse.com, ataschner@novell.com Subject: Re: [REVIEW] xfssyncd lost wakes circa 2.6.32 Message-ID: <20111123203041.GO749@sgi.com> References: <20111123163046.GQ29840@sgi.com> <20111124064216.5ff54077@notabene.brown> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111124064216.5ff54077@notabene.brown> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 24, 2011 at 06:42:16AM +1100, NeilBrown wrote: > On Wed, 23 Nov 2011 10:30:46 -0600 Ben Myers wrote: > > Index: linux/fs/xfs/linux-2.6/xfs_sync.c > > =================================================================== > > --- linux.orig/fs/xfs/linux-2.6/xfs_sync.c > > +++ linux/fs/xfs/linux-2.6/xfs_sync.c > > @@ -620,13 +620,25 @@ xfssyncd( > > set_freezable(); > > timeleft = xfs_syncd_centisecs * msecs_to_jiffies(10); > > for (;;) { > > - timeleft = schedule_timeout_interruptible(timeleft); > > - /* swsusp */ > > - try_to_freeze(); > > - if (kthread_should_stop() && list_empty(&mp->m_sync_list)) > > + set_current_state(TASK_INTERRUPTIBLE); > > + spin_lock(&mp->m_sync_lock); > > + > > + if (list_empty(&mp->m_sync_list) && !kthread_should_stop()) { > > + spin_unlock(&mp->m_sync_lock); > > + > > + timeleft = schedule_timeout_interruptible(timeleft); > > This should be just "schedule_timeout(timeleft)". > This call sets TASK_INTERRUPTIBLE so we will go to sleep even if we were > only just woken up. > > I don't really know the XFS code well enough to the rest looks right, but > with that small fix it certainly doesn't look wrong :-) Thanks Neil! I'll get that fixed up. ;) -Ben From meme-invitation.hazdcojxgzsdgmrtgazgcojyguydkojvhbsteojug5qtcm3fgnsa-xfs=oss.sgi.com@returns.bulk.yahoo.com Wed Nov 23 15:00:18 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.7 required=5.0 tests=BAYES_80,MIME_8BIT_HEADER, RCVD_IN_BL_SPAMCOP_NET,T_DKIM_INVALID autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANL0I8d235443 for ; Wed, 23 Nov 2011 15:00:18 -0600 X-ASG-Debug-ID: 1322082015-0acc005f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from n9-vm0.bullet.mail.sp2.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 6ED611D2BBEB for ; Wed, 23 Nov 2011 13:00:16 -0800 (PST) Received: from n9-vm0.bullet.mail.sp2.yahoo.com (n9-vm0.bullet.mail.sp2.yahoo.com [67.195.135.69]) by cuda.sgi.com with SMTP id H2NmOMWBouvUjrcZ for ; Wed, 23 Nov 2011 13:00:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo-inc.com; s=ginc1024; t=1322082015; bh=hZEaTcz8wsmrAfpAsg5J/ApsegrxqRr6NkypHREsAXc=; h=Received:Received:Date:Received:From:To:Subject:X-Yahoo-Newman-Property:X-Yahoo-Newman-Id:x-yahoo-property:Content-Type; b=VAs1z9hEw2eIg+W6DTu23JeQePUmagQHN5NiFvX/6ukJesNv0uYHugce5rn+rbogfQ7JIp91Fc/NuAA4fWxSsenls6xTcGvcpzCUzF70kDig0poeo3E33ivVm9I378a9uBQ+//14C7tzr9TvUv+/N94kQERyDW3SFbxdh7o4bjg= DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=ginc1024; d=yahoo-inc.com; b=h+0h35nCkKgvc+FxB+0tqYWPP4VEshTsI+/CmEy7xpHnCAoElNsqiej1Z5L78EPuc7QlplRYhGtcFMKw4nvBUjRJI74f+R2drKOzxihq/8bGGeg4+sbvnnUr+eLMzavyC6KCviCot2ZoH7DgMF/X3wDyXb1wEjXliwplHMBRxQs=; Received: from [67.195.134.49] by n9.bullet.mail.sp2.yahoo.com with NNFMP; 23 Nov 2011 21:00:15 -0000 Received: from [98.137.133.73] by t2.bullet.mail.sp2.yahoo.com with NNFMP; 23 Nov 2011 21:00:15 -0000 Date: 23 Nov 2011 21:00:15 +0000 Received: from [127.0.0.1] by fe5.goodstuff.latam.sp2.yahoo.com with NNFMP; 23 Nov 2011 21:00:15 -0000 From: meme@yahoo-inc.com To: xfs@oss.sgi.com X-ASG-Orig-Subj: =?UTF-8?Q?=E4=BD=A0=E8=A2=AB=E9=82=80=E8=AB=8B=E5=8A=A0=E5=85=A5=E4=BD=BF?= =?UTF-8?Q?=E7=94=A8Meme?= Subject: =?UTF-8?Q?=E4=BD=A0=E8=A2=AB=E9=82=80=E8=AB=8B=E5=8A=A0=E5=85=A5=E4=BD=BF?= =?UTF-8?Q?=E7=94=A8Meme?= X-Yahoo-Newman-Property: meme-invitation X-Yahoo-Newman-Id: 821976d32302a98505958e2947a13e3d x-yahoo-property: meme-invitation Content-Type: text/plain; charset=utf-8 X-Barracuda-Connect: n9-vm0.bullet.mail.sp2.yahoo.com[67.195.135.69] X-Barracuda-Start-Time: 1322082016 Message-Id: <20111123210016.6ED611D2BBEB@cuda.sgi.com> X-Barracuda-Bayes: INNOCENT GLOBAL 0.4161 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.14 X-Barracuda-Spam-Status: No, SCORE=0.14 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_MISSING_MID, DKIM_SIGNED, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81099 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.14 BSF_SC0_MISSING_MID BODY: Custom Rule BSF_SC0_MISSING_MID X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 你好, xfs@oss.sgi.com 你好, 俊佑 å¾ é‚€è«‹ä½ ä½¿ç”¨Meme .FB好å‹é‚„記得我嗎?忘記我是誰的,æ­¡è¿Žä¾†æˆ‘çš„éƒ¨è½æ ¼å–”http://www.girlmall.idv.tw/myblog?0200 請點é¸ä»¥ä¸‹é€£çµæŽ¥å—邀請: http://meme.yahoo.com/invited/?invitedby=a312058&mailtoken=aa775e1ae8470002e0e76367962d7d1da5bebc00 註冊後,看看 俊佑 å¾ çš„Meme: http://meme.yahoo.com/a312058/ 那裡見, Meme,來自Yahoo! http://meme.yahoo.com From root@nfs10.americas.sgi.com Wed Nov 23 15:25:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANLPaSG236248 for ; Wed, 23 Nov 2011 15:25:37 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 073C016A342; Wed, 23 Nov 2011 15:38:30 -0600 (CST) From: Ben Myers To: stable@vger.kernel.org Cc: xfs@oss.sgi.com Subject: [PATCH 0/6] XFS update for 3.1-stable Date: Wed, 23 Nov 2011 15:38:07 -0600 Message-Id: <1322084293-23557-1-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a series of XFS fixes from current mainline which is important for 3.1-stable. Note that it is the same patch set that Christoph submitted for 3.0-stable, minus the first three patches which are already included in 3.1. My QA came out ok with these six patches atop 3.1.y. Apologies to those who got this mail twice. Thanks, Ben From root@nfs10.americas.sgi.com Wed Nov 23 15:25:45 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANLPiNA236266 for ; Wed, 23 Nov 2011 15:25:44 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 07B5416A343; Wed, 23 Nov 2011 15:38:39 -0600 (CST) From: Ben Myers To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Dave Chinner , Alex Elder Subject: [PATCH 1/6] xfs: don't serialise direct IO reads on page cache checks Date: Wed, 23 Nov 2011 15:38:08 -0600 Message-Id: <1322084293-23557-2-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f In-Reply-To: <1322084293-23557-1-git-send-email-bpm@sgi.com> References: <1322084293-23557-1-git-send-email-bpm@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner >From c83a4e86f777d08e247592291de429d827c1287a There is no need to grab the i_mutex of the IO lock in exclusive mode if we don't need to invalidate the page cache. Taking these locks on every direct IO effective serialises them as taking the IO lock in exclusive mode has to wait for all shared holders to drop the lock. That only happens when IO is complete, so effective it prevents dispatch of concurrent direct IO reads to the same inode. Fix this by taking the IO lock shared to check the page cache state, and only then drop it and take the IO lock exclusively if there is work to be done. Hence for the normal direct IO case, no exclusive locking will occur. Signed-off-by: Dave Chinner Tested-by: Joern Engel Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder --- fs/xfs/xfs_file.c | 17 ++++++++++++++--- 1 files changed, 14 insertions(+), 3 deletions(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 7f7b424..8fd4a07 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -317,7 +317,19 @@ xfs_file_aio_read( if (XFS_FORCED_SHUTDOWN(mp)) return -EIO; - if (unlikely(ioflags & IO_ISDIRECT)) { + /* + * Locking is a bit tricky here. If we take an exclusive lock + * for direct IO, we effectively serialise all new concurrent + * read IO to this file and block it behind IO that is currently in + * progress because IO in progress holds the IO lock shared. We only + * need to hold the lock exclusive to blow away the page cache, so + * only take lock exclusively if the page cache needs invalidation. + * This allows the normal direct IO case of no page cache pages to + * proceeed concurrently without serialisation. + */ + xfs_rw_ilock(ip, XFS_IOLOCK_SHARED); + if ((ioflags & IO_ISDIRECT) && inode->i_mapping->nrpages) { + xfs_rw_iunlock(ip, XFS_IOLOCK_SHARED); xfs_rw_ilock(ip, XFS_IOLOCK_EXCL); if (inode->i_mapping->nrpages) { @@ -330,8 +342,7 @@ xfs_file_aio_read( } } xfs_rw_ilock_demote(ip, XFS_IOLOCK_EXCL); - } else - xfs_rw_ilock(ip, XFS_IOLOCK_SHARED); + } trace_xfs_file_read(ip, size, iocb->ki_pos, ioflags); -- 1.7.8.rc0.46.g5ae0f From root@nfs10.americas.sgi.com Wed Nov 23 15:25:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANLPqpf236284 for ; Wed, 23 Nov 2011 15:25:52 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 400C616A344; Wed, 23 Nov 2011 15:38:46 -0600 (CST) From: Ben Myers To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Christoph Hellwig , Christoph Hellwig , Alex Elder Subject: [PATCH 2/6] xfs: avoid direct I/O write vs buffered I/O race Date: Wed, 23 Nov 2011 15:38:09 -0600 Message-Id: <1322084293-23557-3-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f In-Reply-To: <1322084293-23557-1-git-send-email-bpm@sgi.com> References: <1322084293-23557-1-git-send-email-bpm@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Christoph Hellwig >From 1d443d87fbda3b1e01d3dba07008ad0064fd8c59 Currently a buffered reader or writer can add pages to the pagecache while we are waiting for the iolock in xfs_file_dio_aio_write. Prevent this by re-checking mapping->nrpages after we got the iolock, and if nessecary upgrade the lock to exclusive mode. To simplify this a bit only take the ilock inside of xfs_file_aio_write_checks. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Alex Elder --- fs/xfs/xfs_file.c | 17 ++++++++++++++--- 1 files changed, 14 insertions(+), 3 deletions(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 8fd4a07..b7e75c6 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -677,6 +677,7 @@ xfs_file_aio_write_checks( xfs_fsize_t new_size; int error = 0; + xfs_rw_ilock(ip, XFS_ILOCK_EXCL); error = generic_write_checks(file, pos, count, S_ISBLK(inode->i_mode)); if (error) { xfs_rw_iunlock(ip, XFS_ILOCK_EXCL | *iolock); @@ -768,14 +769,24 @@ xfs_file_dio_aio_write( *iolock = XFS_IOLOCK_EXCL; else *iolock = XFS_IOLOCK_SHARED; - xfs_rw_ilock(ip, XFS_ILOCK_EXCL | *iolock); + xfs_rw_ilock(ip, *iolock); ret = xfs_file_aio_write_checks(file, &pos, &count, iolock); if (ret) return ret; + /* + * Recheck if there are cached pages that need invalidate after we got + * the iolock to protect against other threads adding new pages while + * we were waiting for the iolock. + */ + if (mapping->nrpages && *iolock == XFS_IOLOCK_SHARED) { + xfs_rw_iunlock(ip, *iolock); + *iolock = XFS_IOLOCK_EXCL; + xfs_rw_ilock(ip, *iolock); + } + if (mapping->nrpages) { - WARN_ON(*iolock != XFS_IOLOCK_EXCL); ret = -xfs_flushinval_pages(ip, (pos & PAGE_CACHE_MASK), -1, FI_REMAPF_LOCKED); if (ret) @@ -820,7 +831,7 @@ xfs_file_buffered_aio_write( size_t count = ocount; *iolock = XFS_IOLOCK_EXCL; - xfs_rw_ilock(ip, XFS_ILOCK_EXCL | *iolock); + xfs_rw_ilock(ip, *iolock); ret = xfs_file_aio_write_checks(file, &pos, &count, iolock); if (ret) -- 1.7.8.rc0.46.g5ae0f From root@nfs10.americas.sgi.com Wed Nov 23 15:25:54 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANLPsa7236304 for ; Wed, 23 Nov 2011 15:25:54 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id E880116A345; Wed, 23 Nov 2011 15:38:48 -0600 (CST) From: Ben Myers To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Mitsuo Hayasaka , Alex Elder Subject: [PATCH 3/6] xfs: Return -EIO when xfs_vn_getattr() failed Date: Wed, 23 Nov 2011 15:38:10 -0600 Message-Id: <1322084293-23557-4-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f In-Reply-To: <1322084293-23557-1-git-send-email-bpm@sgi.com> References: <1322084293-23557-1-git-send-email-bpm@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Mitsuo Hayasaka >From 65ed79f5114ca0bad494e5b858f47615c337c492 An attribute of inode can be fetched via xfs_vn_getattr() in XFS. Currently it returns EIO, not negative value, when it failed. As a result, the system call returns not negative value even though an error occured. The stat(2), ls and mv commands cannot handle this error and do not work correctly. This patch fixes this bug, and returns -EIO, not EIO when an error is detected in xfs_vn_getattr(). Signed-off-by: Mitsuo Hayasaka Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder --- fs/xfs/xfs_iops.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 673704f..474920b 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -465,7 +465,7 @@ xfs_vn_getattr( trace_xfs_getattr(ip); if (XFS_FORCED_SHUTDOWN(mp)) - return XFS_ERROR(EIO); + return -XFS_ERROR(EIO); stat->size = XFS_ISIZE(ip); stat->dev = inode->i_sb->s_dev; -- 1.7.8.rc0.46.g5ae0f From root@nfs10.americas.sgi.com Wed Nov 23 15:25:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANLPunj236316 for ; Wed, 23 Nov 2011 15:25:56 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 0084516A346; Wed, 23 Nov 2011 15:38:50 -0600 (CST) From: Ben Myers To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Christoph Hellwig , Christoph Hellwig , Alex Elder Subject: [PATCH 4/6] xfs: fix buffer flushing during unmount Date: Wed, 23 Nov 2011 15:38:11 -0600 Message-Id: <1322084293-23557-5-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f In-Reply-To: <1322084293-23557-1-git-send-email-bpm@sgi.com> References: <1322084293-23557-1-git-send-email-bpm@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Christoph Hellwig >From a063aff275e3c514da54b293e0f86c7c9c5b3ec2 The code to flush buffers in the umount code is a bit iffy: we first flush all delwri buffers out, but then might be able to queue up a new one when logging the sb counts. On a normal shutdown that one would get flushed out when doing the synchronous superblock write in xfs_unmountfs_writesb, but we skip that one if the filesystem has been shut down. Fix this by moving the delwri list flushing until just before unmounting the log, and while we're at it also remove the superflous delwri list and buffer lru flusing for the rt and log device that can never have cached or delwri buffers. Signed-off-by: Christoph Hellwig Reported-by: Amit Sahrawat Tested-by: Amit Sahrawat Signed-off-by: Alex Elder --- fs/xfs/xfs_buf.h | 1 - fs/xfs/xfs_mount.c | 29 ++++++++++------------------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/fs/xfs/xfs_buf.h b/fs/xfs/xfs_buf.h index 620972b..8e8b06b 100644 --- a/fs/xfs/xfs_buf.h +++ b/fs/xfs/xfs_buf.h @@ -320,7 +320,6 @@ extern struct list_head *xfs_get_buftarg_list(void); #define xfs_getsize_buftarg(buftarg) block_size((buftarg)->bt_bdev) #define xfs_readonly_buftarg(buftarg) bdev_read_only((buftarg)->bt_bdev) -#define xfs_binval(buftarg) xfs_flush_buftarg(buftarg, 1) #define XFS_bflush(buftarg) xfs_flush_buftarg(buftarg, 1) #endif /* __XFS_BUF_H__ */ diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 0081657..d4d5775 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -44,9 +44,6 @@ #include "xfs_trace.h" -STATIC void xfs_unmountfs_wait(xfs_mount_t *); - - #ifdef HAVE_PERCPU_SB STATIC void xfs_icsb_balance_counter(xfs_mount_t *, xfs_sb_field_t, int); @@ -1496,11 +1493,6 @@ xfs_unmountfs( */ xfs_log_force(mp, XFS_LOG_SYNC); - xfs_binval(mp->m_ddev_targp); - if (mp->m_rtdev_targp) { - xfs_binval(mp->m_rtdev_targp); - } - /* * Unreserve any blocks we have so that when we unmount we don't account * the reserved free space as used. This is really only necessary for @@ -1526,7 +1518,16 @@ xfs_unmountfs( xfs_warn(mp, "Unable to update superblock counters. " "Freespace may not be correct on next mount."); xfs_unmountfs_writesb(mp); - xfs_unmountfs_wait(mp); /* wait for async bufs */ + + /* + * Make sure all buffers have been flushed and completed before + * unmounting the log. + */ + error = xfs_flush_buftarg(mp->m_ddev_targp, 1); + if (error) + xfs_warn(mp, "%d busy buffers during unmount.", error); + xfs_wait_buftarg(mp->m_ddev_targp); + xfs_log_unmount_write(mp); xfs_log_unmount(mp); xfs_uuid_unmount(mp); @@ -1537,16 +1538,6 @@ xfs_unmountfs( xfs_free_perag(mp); } -STATIC void -xfs_unmountfs_wait(xfs_mount_t *mp) -{ - if (mp->m_logdev_targp != mp->m_ddev_targp) - xfs_wait_buftarg(mp->m_logdev_targp); - if (mp->m_rtdev_targp) - xfs_wait_buftarg(mp->m_rtdev_targp); - xfs_wait_buftarg(mp->m_ddev_targp); -} - int xfs_fs_writable(xfs_mount_t *mp) { -- 1.7.8.rc0.46.g5ae0f From root@nfs10.americas.sgi.com Wed Nov 23 15:25:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANLPv9m236327 for ; Wed, 23 Nov 2011 15:25:58 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 190B616A347; Wed, 23 Nov 2011 15:38:52 -0600 (CST) From: Ben Myers To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Carlos Maiolino , Alex Elder Subject: [PATCH 5/6] xfs: Fix possible memory corruption in xfs_readlink Date: Wed, 23 Nov 2011 15:38:12 -0600 Message-Id: <1322084293-23557-6-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f In-Reply-To: <1322084293-23557-1-git-send-email-bpm@sgi.com> References: <1322084293-23557-1-git-send-email-bpm@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Carlos Maiolino >From 13072258732bcf349649caa162f34c8d37b4f134 Fixes a possible memory corruption when the link is larger than MAXPATHLEN and XFS_DEBUG is not enabled. This also remove the S_ISLNK assert, since the inode mode is checked previously in xfs_readlink_by_handle() and via VFS. Updated to address concerns raised by Ben Hutchings about the loose attention paid to 32- vs 64-bit values, and the lack of handling a potentially negative pathlen value: - Changed type of "pathlen" to be xfs_fsize_t, to match that of ip->i_d.di_size - Added checking for a negative pathlen to the too-long pathlen test, and generalized the message that gets reported in that case to reflect the change As a result, if a negative pathlen were encountered, this function would return EFSCORRUPTED (and would fail an assertion for a debug build)--just as would a too-long pathlen. Signed-off-by: Alex Elder Signed-off-by: Carlos Maiolino Reviewed-by: Christoph Hellwig --- fs/xfs/xfs_vnodeops.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-) diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 51fc429..b9e2873 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -113,7 +113,7 @@ xfs_readlink( char *link) { xfs_mount_t *mp = ip->i_mount; - int pathlen; + xfs_fsize_t pathlen; int error = 0; trace_xfs_readlink(ip); @@ -123,13 +123,19 @@ xfs_readlink( xfs_ilock(ip, XFS_ILOCK_SHARED); - ASSERT(S_ISLNK(ip->i_d.di_mode)); - ASSERT(ip->i_d.di_size <= MAXPATHLEN); - pathlen = ip->i_d.di_size; if (!pathlen) goto out; + if (pathlen < 0 || pathlen > MAXPATHLEN) { + xfs_alert(mp, "%s: inode (%llu) bad symlink length (%lld)", + __func__, (unsigned long long) ip->i_ino, + (long long) pathlen); + ASSERT(0); + return XFS_ERROR(EFSCORRUPTED); + } + + if (ip->i_df.if_flags & XFS_IFINLINE) { memcpy(link, ip->i_df.if_u1.if_data, pathlen); link[pathlen] = '\0'; -- 1.7.8.rc0.46.g5ae0f From root@nfs10.americas.sgi.com Wed Nov 23 15:25:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pANLPxjm236335 for ; Wed, 23 Nov 2011 15:25:59 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id C758316A348; Wed, 23 Nov 2011 15:38:53 -0600 (CST) From: Ben Myers To: stable@vger.kernel.org Cc: xfs@oss.sgi.com, Mitsuo Hayasaka , Alex Elder , Christoph Hellwig , Ben Myers Subject: [PATCH 6/6] xfs: use doalloc flag in xfs_qm_dqattach_one() Date: Wed, 23 Nov 2011 15:38:13 -0600 Message-Id: <1322084293-23557-7-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f In-Reply-To: <1322084293-23557-1-git-send-email-bpm@sgi.com> References: <1322084293-23557-1-git-send-email-bpm@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Mitsuo Hayasaka >From bc957c9c7fd2e2c7bc2f3a9d3d2785e27984f01c The doalloc arg in xfs_qm_dqattach_one() is a flag that indicates whether a new area to handle quota information will be allocated if needed. Originally, it was passed to xfs_qm_dqget(), but has been removed by the following commit (probably by mistake): commit 8e9b6e7fa4544ea8a0e030c8987b918509c8ff47 Author: Christoph Hellwig Date: Sun Feb 8 21:51:42 2009 +0100 xfs: remove the unused XFS_QMOPT_DQLOCK flag As the result, xfs_qm_dqget() called from xfs_qm_dqattach_one() never allocates the new area even if it is needed. This patch gives the doalloc arg to xfs_qm_dqget() in xfs_qm_dqattach_one() to fix this problem. Signed-off-by: Mitsuo Hayasaka Cc: Alex Elder Cc: Christoph Hellwig Reviewed-by: Christoph Hellwig Signed-off-by: Ben Myers --- fs/xfs/xfs_qm.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c index 9a0aa76..95ba6dc 100644 --- a/fs/xfs/xfs_qm.c +++ b/fs/xfs/xfs_qm.c @@ -674,7 +674,8 @@ xfs_qm_dqattach_one( * disk and we didn't ask it to allocate; * ESRCH if quotas got turned off suddenly. */ - error = xfs_qm_dqget(ip->i_mount, ip, id, type, XFS_QMOPT_DOWARN, &dqp); + error = xfs_qm_dqget(ip->i_mount, ip, id, type, + doalloc | XFS_QMOPT_DOWARN, &dqp); if (error) return error; -- 1.7.8.rc0.46.g5ae0f From support@eyespyclassifieds.com Wed Nov 23 19:57:32 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.1 required=5.0 tests=BAYES_60,J_CHICKENPOX_73, T_FRT_BELOW2,T_LOTS_OF_MONEY autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAO1vVRF249409 for ; Wed, 23 Nov 2011 19:57:32 -0600 X-ASG-Debug-ID: 1322099848-535603510000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from p3nlsmtp04.shr.prod.phx3.secureserver.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id C020A273057 for ; Wed, 23 Nov 2011 17:57:28 -0800 (PST) Received: from p3nlsmtp04.shr.prod.phx3.secureserver.net (p3nlsmtp04.shr.prod.phx3.secureserver.net [72.167.234.228]) by cuda.sgi.com with SMTP id VjroW4gUAQCHU2wB for ; Wed, 23 Nov 2011 17:57:28 -0800 (PST) Received: (qmail 22376 invoked from network); 24 Nov 2011 01:57:27 -0000 Received: from p3nw3sh056.shr.prod.phx3.secureserver.net (HELO P3NW3SH056.phx3.gdhosting.gdg) ([72.167.232.206]) (envelope-sender ) by p3nlsmtp04.shr.prod.phx3.secureserver.net (qmail-ldap-1.03) with SMTP for ; 24 Nov 2011 01:57:27 -0000 Received: from mail pickup service by P3NW3SH056.phx3.gdhosting.gdg with Microsoft SMTPSVC; Wed, 23 Nov 2011 18:57:27 -0700 From: To: "Friend" X-ASG-Orig-Subj: Hello,You Have Waiting Check This Week!!! Subject: Hello,You Have Waiting Check This Week!!! Date: Wed, 23 Nov 2011 18:57:27 -0700 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4862 Message-ID: X-OriginalArrivalTime: 24 Nov 2011 01:57:27.0422 (UTC) FILETIME=[6AE041E0:01CCAA4C] X-Barracuda-Connect: p3nlsmtp04.shr.prod.phx3.secureserver.net[72.167.234.228] X-Barracuda-Start-Time: 1322099849 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5010 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.21 X-Barracuda-Spam-Status: No, SCORE=1.21 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME, PLING_PLING X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81119 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.46 PLING_PLING Subject has lots of exclamation marks X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi,You Have Waiting Check This Week!!! Hello Friend, My name is Jessica Allen "29 Year Old Stay At Home Mom Exposes How She Earned Over $10,857 In 14 Days For Just Filling In Simple Forms Online!"You Can Now Work From The Comfort Of Home! Thousands Of Members And I Are Living Our Dreams And In The Next Few Minutes,You Can Do The Same! For A New Members Who Join Before Cut-off Also Earn This Kind Of Money $1,399.16 At Your Own Home. "All You Need Is A Computer And Internet Access!" Inviting your friends online in your spare time is a very easy way to make some extra money. Our members are earning more than $1,399.16 or more by joining this website.. Earn money by referring others to join this website.You will get $49.97 for each referral. Suppose if someone joins under your referral link and you will get a commission of $49.97 USD in each.. Is Very Easy To make 4 referral Friends per day,4 x $49.97 =$199.88 earn everyday) So in one week? $199.88 x 7 days=$1,399.16 /every week for just referring other Friends. This is Different to Other Work at Home Opportunities.. Change Your Life Get Your Waiting Check Here:==>> http://oril.biz/2x4 "Irrefutable Proof That This Works Like A Charm!" This are paid referrals,placed DIRECTLY under you.If you are a Powerline member, AND qualified: Any sales of the following members make will be passed up Month = Date = Time ===============( Join Members )======( Country's ) M NOV.23 @ 11:19 PM =============== Shelly Marquez ===== United States M NOV.23 @ 11:19 PM =============== Rolldan Pacson ===== United States M NOV.23 @ 06:23 PM =============== Stephen Harris ===== Canada M NOV.23 @ 11:19 PM =============== Jackie Parkers ===== United States M NOV.22 @ 11:19 PM ============ Rowena Harison ===== United States M NOV.22 @ 06:23 PM ============ Geralden Roses ===== New Zealand M NOV.22 @ 08:26 AM ============ Renee Jenkinse ===== Australia P NOV.22 @ 02:31 PM ============ Elizabeth Rios ===== Singapore M NOV.21 @ 02:37 PM ========== Karen Schiller ===== United Kingdom M NOV.21 @ 04:21 PM ========== Analou Roddman ===== Germany P NOV.21 @ 09:38 PM ========== Karen Stephens ===== Sri Lanka P NOV.21 @ 10:45 PM ========== Josephen Coper ===== United States M NOV.20 @ 10:19 AM ======== Vecky Camptons ===== United States P NOV.20 @ 08:32 PM ======== Gaynell Bailey ===== South Africa M NOV.20 @ 09:40 PM ======== Barbara Thunder ===== Netherlands P NOV.20 @ 10:21 AM ======== James Williams ===== North Carolina P NOV.19 @ 11:08 PM ====== David Robinson ===== United States M NOV.19 @ 12:39 AM ====== Carolyn Smiths ===== Hungary M NOV.19 @ 02:30 AM ====== Andrew Stocton ===== New Zealand P NOV.19 @ 02:42 AM ====== Matthew Evander ===== Portugal M NOV.18 @ 08:18 AM === Steven Hopekin ===== United States P NOV.18 @ 02:38 AM === Jenny Hamilton ===== United States P NOV.18 @ 02:53 AM === Stefany Gibson ===== Italy P NOV.18 @ 02:38 AM === Amie Stephenson ===== United States P NOV.17 @ 02:53 AM = Roben McTan ===== China P NOV.17 @ 02:38 AM = Amie Stephenson ===== United States P NOV.17 @ 02:53 AM = Roben Mcartney ===== United Kingdom P NOV.17 @ 02:53 AM = Arlene Travis ===== United Kingdom IMPORTANT: NOVEMBER,- 30 -2011 is the Cut-Off Date to lock in your position! Be sure to JOIN NOW to secure ALL the commission before they go to someone else! Your Commissions will be paid on Dec/ 20/2011 Big Company issue by paycheck Direct to Your name Personally no limit of your income. Click Bellow And Get Your Waiting Check $1,399.16 limited time until NOV/30/2011... Change Your Life Get Your Waiting Check Here:==>> http://oril.biz/2x4 Start making money now by this program. So refer more and earn more. To your success, Jessica Allen This is where you can type a brief description of your site. Email sent by: waitingchek@gmail.com (Jessica Allen) Powered by Eye Spy Classifieds From david@fromorbit.com Wed Nov 23 21:23:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAO3NelE253092 for ; Wed, 23 Nov 2011 21:23:40 -0600 X-ASG-Debug-ID: 1322105016-50f503160000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A706826F56A for ; Wed, 23 Nov 2011 19:23:37 -0800 (PST) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id mdrYZIcPitmsHz3F for ; Wed, 23 Nov 2011 19:23:37 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlUDAB63zU55LGY5gWdsb2JhbABEqnQjAQEWJiWBcgEBBAEnExwjBQsIAw4KLhQlAyETiAW0MxKKUASUR4kGiRk Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Nov 2011 13:53:34 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RTPuN-0006rJ-Gj; Thu, 24 Nov 2011 14:23:31 +1100 Date: Thu, 24 Nov 2011 14:23:31 +1100 From: Dave Chinner To: Christoph Hellwig Cc: Jeff Liu , Chris Mason , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE to XFS V2 Subject: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE to XFS V2 Message-ID: <20111124032331.GO2386@dastard> References: <4ECB5B21.7080508@oracle.com> <20111123094049.GA5465@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111123094049.GA5465@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1322105018 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81125 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 23, 2011 at 04:40:49AM -0500, Christoph Hellwig wrote: > On Tue, Nov 22, 2011 at 04:19:45PM +0800, Jeff Liu wrote: > > Hello, > > > > This is the V2 attempt to add SEEK_DATA/SEEK_HOLE to XFS. > > Thanks Jeff, this looks pretty good for "simple" implementation, > I only have a few rather cosmetic comments. > > Do you plan on updating Josef's old xfstests support patch for > SEEK_DATA/SEEK_HOLE? Also it would be nice to do the pagecache > probing for dirty unwritten extents next to get a better quality > of implementation. > > >+STATIC int > >+xfs_seek_data( > >+ struct xfs_inode *ip, > >+ loff_t *start) > >+{ > > In the XFS code we generally tab-aling the paramter names, just like > you already did for the local variables: > > STATIC int > xfs_seek_data( > struct xfs_inode *ip, > loff_t *start) > > (that also applies for a few other functions) > > > + /* > > + * Hole handling for unwritten extents landed in a hole. > > + * If the next extent is a data extent, then return the > > + * start of it, otherwise we need to move the start offset > > + * and map more blocks. > > + */ > > I don't think this comment is quite correct. We don't just end up here > for unwritten extents. I'd recommend something like: > > /* > * We landed in a hole. Skip to the next extent. > */ > > > + if (map[0].br_startblock == HOLESTARTBLOCK) { > > + if (map[1].br_startblock == HOLESTARTBLOCK) { > > + fsbno = map[1].br_startoff + > > + map[1].br_blockcount; > > I don't think this code is reachable - xfs_bmapi will never produce > multiple consecutive HOLESTARTBLOCK extents. If the hole would overflow br_blockcount (32 bits of FSB units, 16TB by default), then we should get multiple consecutive hole records returned. > If you want to ensure > that feel free to add an assert, e.g. > > if (map[0].br_startblock == HOLESTARTBLOCK) { > ASSERT(map[1].br_startblock != HOLESTARTBLOCK); > > *start = max_t(loff_t, seekoff, > XFS_FSB_TO_B(mp, map[1].br_startoff)); > break; > } > > This also means that we never have to loop here until we add dirty > unwritten probing - if the second extent doesn't contain data there > won't be any other data extent in this file beyound our offset. I think that's incorrect. A data extent is limited in length by the on disk format (21 bits of FSB, 8GB in 4k block fs), so if you've got more than 8GB of data or the file is fragmented after the current extent then we can still get back multiple data extents before we find the next hole. > > + > > + /* > > + * Landed in an in-memory data extent or in an allocated > > + * extent. > > + */ > > > + if (map[0].br_startoff == DELAYSTARTBLOCK || > > + map[0].br_state == XFS_EXT_NORM) { > > I think just checking for br_state == XFS_EXT_NORM should be fine here, > as unwritten extents can be delayed allocated. Can they? I'm pretty sure delalloc and unwritten are mutually exclusive states for an extent. That is, if you write over an unwritten extent, it gets mapped to the disk blocks but remains an unwritten extent until the data is written. And, IIRC, preallocation skips over delayed allocation ranges so you can't turn an existing delalloc region into a preallocated one... > But until we add probing > for dirty unwritten extents is added we have to treat unwritten extents > as data anyway to avoid data loss. True. > > Note that once unwrittent extent probing also needs to cover the hole > case above and not just this case. > > > +STATIC int > > +xfs_seek_extent( > > + struct inode *inode, > > + loff_t *start, > > + u32 type) > > +{ > > + struct xfs_inode *ip = XFS_I(inode); > > + struct xfs_mount *mp = ip->i_mount; > > + struct xfs_ifork *ifp; > > + int lock; > > + int error = 0; > > + > > + if (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS && > > + ip->i_d.di_format != XFS_DINODE_FMT_BTREE && > > + ip->i_d.di_format != XFS_DINODE_FMT_LOCAL) > > + return XFS_ERROR(EINVAL); > > I'd recommend moving this check into xfs_file_llseek and even do it > for the normal lseek requests - it's another sanity check for corrupted > filesystems which makes sense everywhere. I also think the return value > should be EFSCORRUPTED. > > Also XFS_DINODE_FMT_LOCAL isn't valid for regular files (yet) so it > shouldn't be tested for. I don't think it is necessary at all - the low level bmap functions already do these checks. > > > + > > + lock = xfs_ilock_map_shared(ip); > > + > > + if (XFS_FORCED_SHUTDOWN(mp)) { > > + error = EIO; > > + goto out_lock; > > + } > > The shutdown check probably should go into the common lseek code and > done for all cases. I think the low level functions also do this check so it's not explicitly needed here, anyway. > > > + > > + XFS_STATS_INC(xs_blk_mapr); > > I don't think this counter should be incremented here. It's done in the lower layer functions, so shouldn't be here. > > > + ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); > > + > > + ASSERT(ifp->if_ext_max == > > + XFS_IFORK_SIZE(ip, XFS_DATA_FORK) / (uint)sizeof(xfs_bmbt_rec_t)); > > Please just drop this assert. if_ext_max is pretty useless, and I have > a patch to remove it pending. No adding another use of it in your patch > will make merging a bit easier. I think it's done in the lower layer functions, anyway. > > > + if (!(ifp->if_flags & XFS_IFEXTENTS)) { > > + error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK); > > + if (error) > > + goto out_lock; > > + } And that is definitely done in the lower layer bmap functions, so is not necessary here. > > + > > + if (type == SEEK_HOLE) > > + error = xfs_seek_hole(ip, start); > > + else > > + error = xfs_seek_data(ip, start); > > Now that just the locking and the xfs_iread_extents call is left in > this function I'd suggest to remove it and instead add duplicates > of the locking and xfs_iread_extents into xfs_seek_hole and > xfs_seek_data. Actually, it just turns into "lock, call seek/data fucntion, unlock", so it can probaly go away entirely. > > > + switch (origin) { > > + case SEEK_END: > > + case SEEK_CUR: > > + offset = generic_file_llseek(file, offset, origin); > > + goto out; > > instead of the goto out just return the generic_file_llseek return > value directly here. > > > + case SEEK_DATA: > > + case SEEK_HOLE: > > + if (offset >= i_size_read(inode)) { > > + ret = -ENXIO; > > + goto error; > > + } > > + > > + ret = xfs_seek_extent(inode, &offset, origin); > > + if (ret) > > + goto error; > > + } > > + > > + if (offset != file->f_pos) > > + file->f_pos = offset; > > doing the offset update outside the case scrope doesn't make much sense. > > I'd probably just move the offset check and offset update into the > low-level xfs_seek_data/xfs_seek_hole helpers - it's a tiny bit of > duplication, but it keeps the functions self-contained and the > top-level llseek method just dispatcher into the different routines. Definitely. Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+991e7d0b0a918252e486+3014+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 24 03:02:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAO92S3V008143 for ; Thu, 24 Nov 2011 03:02:29 -0600 X-ASG-Debug-ID: 1322125346-540703770000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 016BB2737A4 for ; Thu, 24 Nov 2011 01:02:26 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 3U96yoGvJ5LEv1ps for ; Thu, 24 Nov 2011 01:02:26 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RTVCG-0001tr-Ke; Thu, 24 Nov 2011 09:02:20 +0000 Date: Thu, 24 Nov 2011 04:02:20 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , Jeff Liu , Chris Mason , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE to XFS V2 Subject: Re: [PATCH] Introduce SEEK_DATA/SEEK_HOLE to XFS V2 Message-ID: <20111124090220.GA643@infradead.org> References: <4ECB5B21.7080508@oracle.com> <20111123094049.GA5465@infradead.org> <20111124032331.GO2386@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111124032331.GO2386@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322125347 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81147 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 24, 2011 at 02:23:31PM +1100, Dave Chinner wrote: > > > + if (map[0].br_startblock == HOLESTARTBLOCK) { > > > + if (map[1].br_startblock == HOLESTARTBLOCK) { > > > + fsbno = map[1].br_startoff + > > > + map[1].br_blockcount; > > > > I don't think this code is reachable - xfs_bmapi will never produce > > multiple consecutive HOLESTARTBLOCK extents. > > If the hole would overflow br_blockcount (32 bits of FSB units, 16TB > by default), then we should get multiple consecutive hole records > returned. Right, the XFS_FILBLKS_MIN in xfs_bmapi_read will limit it, and we'll it the same case again in the loop. So yes, we'll need it; and we should have a test to verify this case. > > This also means that we never have to loop here until we add dirty > > unwritten probing - if the second extent doesn't contain data there > > won't be any other data extent in this file beyound our offset. > > I think that's incorrect. A data extent is limited in length by the > on disk format (21 bits of FSB, 8GB in 4k block fs), so if you've > got more than 8GB of data or the file is fragmented after the > current extent then we can still get back multiple data extents > before we find the next hole. Indeed. Add fragmented file to what we need to test in QA.. > > > > I think just checking for br_state == XFS_EXT_NORM should be fine here, > > as unwritten extents can be delayed allocated. > > Can they? I'm pretty sure delalloc and unwritten are mutually > exclusive states for an extent. Yes, they _can't_. That was a typo, the rest of the setentence wouldn't make sense if that was allowed. > > > + if (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS && > > > + ip->i_d.di_format != XFS_DINODE_FMT_BTREE && > > > + ip->i_d.di_format != XFS_DINODE_FMT_LOCAL) > > > + return XFS_ERROR(EINVAL); > > > > I'd recommend moving this check into xfs_file_llseek and even do it > > for the normal lseek requests - it's another sanity check for corrupted > > filesystems which makes sense everywhere. I also think the return value > > should be EFSCORRUPTED. > > > > Also XFS_DINODE_FMT_LOCAL isn't valid for regular files (yet) so it > > shouldn't be tested for. > > I don't think it is necessary at all - the low level bmap functions > already do these checks. Indeed, although xfs_bmap_first_unused also allows XFS_DINODE_FMT_LOCAL format, but I think that is fine. > > > + lock = xfs_ilock_map_shared(ip); > > > + > > > + if (XFS_FORCED_SHUTDOWN(mp)) { > > > + error = EIO; > > > + goto out_lock; > > > + } > > > > The shutdown check probably should go into the common lseek code and > > done for all cases. > > I think the low level functions also do this check so it's not > explicitly needed here, anyway. xfs_bmapi_read does it, xfs_bmap_first_unused lacks it. And returning an error ASAP on a normal lseek for the normal lseek cases also makes a lot of sense. > > > > > + > > > + XFS_STATS_INC(xs_blk_mapr); > > > > I don't think this counter should be incremented here. > > It's done in the lower layer functions, so shouldn't be here. It is for xfs_bmapi_read, it isn't for xfs_bmap_first_unused, and then again it really shouldn't either - it's a counter for xfs_bmapi_read calls. > > Now that just the locking and the xfs_iread_extents call is left in > > this function I'd suggest to remove it and instead add duplicates > > of the locking and xfs_iread_extents into xfs_seek_hole and > > xfs_seek_data. > > Actually, it just turns into "lock, call seek/data fucntion, unlock", > so it can probaly go away entirely. That's what I tried to imply with the above comment. From BATV+991e7d0b0a918252e486+3014+infradead.org+hch@bombadil.srs.infradead.org Thu Nov 24 06:53:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAOCr1Rv019571 for ; Thu, 24 Nov 2011 06:53:01 -0600 X-ASG-Debug-ID: 1322139175-6bb602840000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8BD0D16DEAA8 for ; Thu, 24 Nov 2011 04:52:55 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id xrAY8wM3iFBRqZ3i for ; Thu, 24 Nov 2011 04:52:55 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RTYnN-0006sY-I8; Thu, 24 Nov 2011 12:52:53 +0000 Date: Thu, 24 Nov 2011 07:52:53 -0500 From: Christoph Hellwig To: yangguoquan Cc: hch@infradead.org, linux-xfs@oss.sgi.com, pengxihan@gmail.com X-ASG-Orig-Subj: Re: xfs: validate inode numbers in file handles correctly Subject: Re: xfs: validate inode numbers in file handles correctly Message-ID: <20111124125253.GA26183@infradead.org> References: <1276846374-23916-1-git-send-email-david@fromorbit.com> <20111123143045.GA20892@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322139176 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1198 1.0000 -1.2751 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.18 X-Barracuda-Spam-Status: No, SCORE=-1.18 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81162 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 24, 2011 at 06:29:18PM +0800, yangguoquan wrote: > > I have checked that Linux2.6.35.6 is up-to-date with the issue "xfs: fix untrusted inode number lookup"(you had mentioned in the former reply). > What can I do. > Look forward to your reply. Can you please try a recent kernel (3.0-stable or 3.1)? 2.6.35 is so old that we can't easily support it except for looking over the list of commits. From cmaiolino@hades.usersys.redhat.com Thu Nov 24 13:20:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAOJKuSS036452 for ; Thu, 24 Nov 2011 13:20:56 -0600 X-ASG-Debug-ID: 1322162454-6dd203230000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hades.usersys.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 368F81E9DC3D for ; Thu, 24 Nov 2011 11:20:54 -0800 (PST) Received: from hades.usersys.redhat.com (186.215.132.159.static.gvt.net.br [186.215.132.159]) by cuda.sgi.com with ESMTP id TTYAITenB4NW2ZvD for ; Thu, 24 Nov 2011 11:20:54 -0800 (PST) Received: by hades.usersys.redhat.com (Postfix, from userid 500) id 8B79BE0935; Thu, 24 Nov 2011 17:20:52 -0200 (BRST) From: Carlos Maiolino To: xfs@oss.sgi.com Cc: Carlos Maiolino X-ASG-Orig-Subj: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Subject: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Date: Thu, 24 Nov 2011 17:20:51 -0200 Message-Id: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> X-Mailer: git-send-email 1.7.6.4 X-Barracuda-Connect: 186.215.132.159.static.gvt.net.br[186.215.132.159] X-Barracuda-Start-Time: 1322162455 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0062 1.0000 -1.9803 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.98 X-Barracuda-Spam-Status: No, SCORE=-1.98 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81189 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfsprogs (mainly mkfs) is using the logical sector size of a volume to initialize the filesystem, which, even in devices using Advanced Format, it can get a 512 bytes sector size if it is set as the logical sector size. This patch changes the ioctl to get the physical sector size, independent of the logical size. Signed-off-by: Carlos Maiolino --- libxfs/linux.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/libxfs/linux.c b/libxfs/linux.c index 2e07d54..0bc49dd 100644 --- a/libxfs/linux.c +++ b/libxfs/linux.c @@ -39,6 +39,9 @@ static int max_block_alignment; #ifndef BLKSSZGET # define BLKSSZGET _IO(0x12,104) #endif +#ifndef BLKPBSZGET +# define BLKPBSZGET _IO(0x12,123) +#endif #ifndef RAMDISK_MAJOR #define RAMDISK_MAJOR 1 /* ramdisk major number */ @@ -165,7 +168,7 @@ platform_findsizes(char *path, int fd, long long *sz, int *bsz) *sz = (long long)tmpsize; } - if (ioctl(fd, BLKSSZGET, bsz) < 0) { + if (ioctl(fd, BLKPBSZGET, bsz) < 0) { fprintf(stderr, _("%s: warning - cannot get sector size " "from block device %s: %s\n"), progname, path, strerror(errno)); -- 1.7.6.4 From cmaiolino@redhat.com Thu Nov 24 13:50:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAOJonPi037924 for ; Thu, 24 Nov 2011 13:50:49 -0600 X-ASG-Debug-ID: 1322164248-6dd203c80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B8F5419C45B4 for ; Thu, 24 Nov 2011 11:50:48 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Afz75FecaA0wowxP for ; Thu, 24 Nov 2011 11:50:48 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pAOJokU5029855 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 24 Nov 2011 14:50:46 -0500 Received: from andromeda.usersys.redhat.com (ovpn-113-40.phx2.redhat.com [10.3.113.40]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id pAOJog6X011570 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Thu, 24 Nov 2011 14:50:45 -0500 Date: Thu, 24 Nov 2011 17:50:42 -0200 From: Carlos Maiolino To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Subject: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Message-ID: <20111124195042.GA3671@andromeda.usersys.redhat.com> References: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1322164248 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 24, 2011 at 05:20:51PM -0200, Carlos Maiolino wrote: > xfsprogs (mainly mkfs) is using the logical sector size of a volume to initialize > the filesystem, which, even in devices using Advanced Format, it can get a 512 > bytes sector size if it is set as the logical sector size. > This patch changes the ioctl to get the physical sector size, independent of the > logical size. > Just as information, this patch proposal does not change the behaviour of mkfs in case the user is using libblkid, which in case, mkfs will take advantage of libblkid to retrieve disk topology and information. I'm not sure if libblkid is the best way to retrieve the device sector's size here, since this does not provide a way to retrive the physical sector size, only the logical size, but I can be very wrong. -- --Carlos From esther_araujo@hotmail.com Thu Nov 24 15:07:42 2011 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAOL7f0O041454 for ; Thu, 24 Nov 2011 15:07:41 -0600 X-ASG-Debug-ID: 1322168857-712702bb0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bay0-omc2-s19.bay0.hotmail.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 941AB27524E for ; Thu, 24 Nov 2011 13:07:37 -0800 (PST) Received: from bay0-omc2-s19.bay0.hotmail.com (bay0-omc2-s19.bay0.hotmail.com [65.54.190.94]) by cuda.sgi.com with ESMTP id vZeuOdCS3NjeONmU for ; Thu, 24 Nov 2011 13:07:37 -0800 (PST) Received: from BAY158-DS8 ([65.54.190.125]) by bay0-omc2-s19.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.4675); Thu, 24 Nov 2011 13:07:36 -0800 X-Originating-IP: [201.9.110.66] X-Originating-Email: [esther_araujo@hotmail.com] Message-ID: Return-Receipt-To: =?iso-8859-1?Q?Esther_Ara=FAjo?= From: =?iso-8859-1?Q?Esther_Ara=FAjo?= To: =?iso-8859-1?Q?Esther_Ara=FAjo?= X-ASG-Orig-Subj: =?iso-8859-1?Q?PROMO=C7=C3O_-__Proteja_seu_Autom=F3vel!__Bloqueador_e_Mon?= =?iso-8859-1?Q?itoramento_para_Carros_ou_Caminh=F5es_por_R$399=29?= Subject: =?iso-8859-1?Q?PROMO=C7=C3O_-__Proteja_seu_Autom=F3vel!__Bloqueador_e_Mon?= =?iso-8859-1?Q?itoramento_para_Carros_ou_Caminh=F5es_por_R$399=29?= Date: Thu, 24 Nov 2011 17:06:26 -0300 MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_000_022A_01CCAACB.675DB820" X-Mailer: Microsoft Office Outlook 12.0 Thread-Index: Acyq1RBgyQBn9uBrSsW9WZ4VUg/nQgACqMDgAAEa5zA= Content-Language: pt-br Disposition-Notification-To: =?iso-8859-1?Q?Esther_Ara=FAjo?= X-OriginalArrivalTime: 24 Nov 2011 21:07:36.0194 (UTC) FILETIME=[174F3620:01CCAAED] X-Barracuda-Connect: bay0-omc2-s19.bay0.hotmail.com[65.54.190.94] X-Barracuda-Start-Time: 1322168859 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean ------=_NextPart_000_022A_01CCAACB.675DB820 Content-Type: multipart/alternative; boundary="----=_NextPart_001_022B_01CCAACB.675DB820" ------=_NextPart_001_022B_01CCAACB.675DB820 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable APROVEITE!!! Proteja seu Autom=F3vel! 55% OFF em Bloqueador e Monitoramento para = Carros ou Caminh=F5es (de R$900 por R$399,00) =20 Compre no site: www.mundodocupom.com.br =20 http://www.mundodocupom.com.br/static/team/2011/1121/13218959644725.jpg =20 Esther Ara=FAjo Fone: tim (92)8247-9457 / vivo (92)9205-0157 MSN: esther_araujo@hotmail.com "Este E-mail n=E3o poder=E1 ser considerado SPAM pois inclui uma forma = de ser removido. Para ser removido de futuros correios, simplesmente responda indicando no Assunto: REMOVER." =20 ------=_NextPart_001_022B_01CCAACB.675DB820 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

APROVEITE!!!
Proteja seu Autom=F3vel! = 55% OFF em Bloqueador e Monitoramento para Carros ou Caminh=F5es (de = R$900 por R$399,00)

<= p class=3DMsoNormal> 

Compre no = site: www.mundodocupom.com.br<= /o:p>

 

3D"http://www.mundodocupom.com.br/static/team/2011/1121/1321895964472=

 

Esther Ara=FAjo
Fone: tim (92)8247-9457 / vivo (92)
9205-0157
MSN: esther_araujo@hotmail.com<= /span>

"Este E-mail n=E3o = poder=E1 ser considerado SPAM pois inclui uma forma de ser removido. = Para ser removido de futuros correios, simplesmente responda indicando = no Assunto: REMOVER."

 

------=_NextPart_001_022B_01CCAACB.675DB820-- ------=_NextPart_000_022A_01CCAACB.675DB820 Content-Type: image/jpeg; name="image001.jpg" Content-Transfer-Encoding: base64 Content-ID: /9j/4AAQSkZJRgABAQEBLAEsAAD/4RDaRXhpZgAATU0AKgAAAAgABAE7AAIAAAAFAAAISodpAAQA AAABAAAIUJydAAEAAAAKAAAQyOocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzZXIAAAAFkAMAAgAA ABQAABCekAQAAgAAABQAABCykpEAAgAAAAMxNwAAkpIAAgAAAAMxNwAA6hwABwAACAwAAAiSAAAA ABzqAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAMjAxMToxMDoxMyAxMjoxOToyMgAyMDExOjEwOjEzIDEyOjE5OjIyAAAAdQBzAGUA cgAAAP/i8ABJQ0NfUFJPRklMRQABCgAIgHBBREJFAhAAAHBydHJDTVlLTGFiIAfQAAcAGgAFACkA NWFjc3BBUFBMAAAAAEFEQkUAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtQURCRQAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmRlc2MAAAD8AAAAdGNwcnQA AAFwAAAAK3d0cHQAAAGcAAAAFEEyQjAAAAGwAACiBkEyQjIAAAGwAACiBkEyQjEAAKO4AACiBkIy QTAAAUXAAAI4tEIyQTEAA350AAI4tEIyQTIABbcoAAI4tGdhbXQAB+/cAACQkWRlc2MAAAAAAAAA GlUuUy4gV2ViIENvYXRlZCAoU1dPUCkgdjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABD b3B5cmlnaHQgMjAwMCBBZG9iZSBTeXN0ZW1zLCBJbmMuAABYWVogAAAAAAAAtVoAALxnAACSMG1m dDIAAAAABAMJAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAEAAAIAAAIkBB0F 2gdpCNkKNguFDMcN/w8xEF4RixK3E+IVCxYyF1cYeRmYGrUb0hzvHiUfWSCHIbIi2iP/JSMmRCdm KIYppyrHK+gtCC4oL0gwaTGJMqYzwjTeNfs3GDg1OVE6bTuJPKU9wj7eP/hBEUIpQ0JEXEV1Ro9H qUjDSd1K90wSTSxOQ09ZUG9RhlKcU7JUyVXfVvZYDVkjWjpbUVxmXXheil+bYK1hvmLPY+Bk8WYC ZxJoI2kzakJrUmxebWducW96cINxjHKUc5x0o3WqdrF3t3i9ecN6yHvNfM59zX7Mf8uAyYHHgsWD woS/hbuGt4eziK6JqYqki56MmI2RjoaPe5BwkWSSWJNMlECVM5YmlxmYDJj/mfKa5JvWnMidu56t n5+gjqF8omqjV6RFpTOmIKcOp/yo6qnXqsWrs6yhrY+ufa9rsFmxR7I2syS0ErUAte222rfIuLW5 o7qQu368a71Zvke/NcAiwRDB/sLsw9rEx8W1xqPHkch+yWzKWctEzC7NGM4BzuvP1dC+0afSkNN5 1GHVSdYx1xjYANjm2c3astuY3H3dYt5H3yzgEOD04djiu+Oe5HvlV+Yz5w7n6OjB6ZrqcetI7B3s 8O3D7pbvdvBV8TPyD/Lq88P0nPVz9kn3Hvfz+Mb5lfph+yn76/yn/Vz+C/60/1r//wAAAegDpwUs BoQHvwjnCgQLFgwcDR4OHA8ZEBcRFBIQEwsUBBT8FfMW5hfYGMwZ1hreG+Ec4R3fHtsf1iDRIcsi xCO+JLglsyauJ6oopimiKqArniydLZoulS+RMI0xiTKGM4M0gTV/Nn83fziAOYI6fzt+PHw9fD58 P31Af0GCQoVDiUSNRZJGmEeaSJtJnUqfS6NMpk2qTq9PtFC6UcBSx1POVNVV11bZV9tY3lngWuNb 51zqXe1e8V/1YPhh/GMAZANlAWX/Zvxn+mj4afVq82vwbO5t627ob+Vw4XHectpz1nTNdcN2uXev eKV5m3qQe4V8en1vfmR/WIBNgUGCNYMphByFEIX+hu2H24jKibiKpouVjIONcY5gj06QPZEskhuT CpP6lOmV2ZbJl7qYp5mTmoCbbZxanUieNp8loBShBKH1ouaj2KTKpb2msaemqJupkaqHq3+sd61v rmevYLBasVSyT7NMtEm1RrZFt0S4RblGuki7SrxOvVK+V79dwGPBasJyw3vEhMWKxpDHlsidyaXK rcu2zL/NyM7Sz9zQ5tHx0vvUBtUS1h7XKtg32UTaUdte3Gvded6G35TgnOGi4qjjreSy5bbmuue9 6MDpw+rU6+Xs9e4E7xLwIPEs8jjzQ/RO9Vn2Y/dq+G75b/ps+2T8Vv1E/i//F///AAACBQPYBWgG xggGCTIKUgtlDHINeA56D3oQehF5EnUTcBRoFV4WUhdFGDcZKRo0Gz0cQB0/HjofNCAsISMiGSMP JAQk+SXuJuMn2CjMKcEqtiurLJ8tky6HL3wwcDFkMlkzTTRBNTY2KzchOBY5CzoAOvY77TzjPds+ 0z/LQMRBvUK3Q7JErEWmRqFHnEiXSZRKkEuOTItNik6JT4hQiFGJUohTiFSIVYhWiVeKWItZjVqP W5Fck12WXphfm2CdYZ9ioGOhZKNlpGamZ6doqGmpaqprqmyrbatuq2+rcKlxqHKlc6N0oHWddpl3 lXiReYx6h3uCfHx9dn5vf2mAYYFaglGDSIQ+hTWGK4chiBeJDIoCiveL7YzijdiOzY/DkLmRr5Kl k5yUkpWJloCXeJhwmWqaY5tenFmdVZ5Sn1CgT6FPolCjUqRVpVmmX6dmqG6peKqCq46snK2rrruv zLDfsfOzCbQgtTi2UbdsuIe5pLrCu+G9Ab4hv0PAZcGHwqrDzsTxxhXHOcheyYLKpsvKzO3OEM8y 0FTRdNKU07LUz9Xr1wbYHtk22kzbYdx03YfemN+n4LPhvuLH483k0eXS5tDnzOjE6brqrOub7Ift b+5Y71zwW/FW8kzzPfQq9RL19vbW97P4jfli+i/69Pux/Gb9Ef2z/k3+4f9x//8AAAHZA40FCQZU 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 b3pwg3GMcpRznHSjdap2sXe3eL15w3rIe818zn3Nfsx/y4DJgceCxYPChL+Fu4a3h7OIrompiqSL noyYjZGOho97kHCRZJJYk0yUQJUzliaXGZgMmP+Z8prkm9acyJ27nq2fn6COoXyiaqNXpEWlM6Yg pw6n/KjqqdeqxauzrKGtj659r2uwWbFHsjazJLQStQC17bbat8i4tbmjupC7frxrvVm+R781wCLB EMH+wuzD2sTHxbXGo8eRyH7JbMpZy0TMLs0YzgHO68/V0L7Rp9KQ03nUYdVJ1jHXGNgA2ObZzdqy 25jcfd1i3kffLOAQ4PTh2OK7457ke+VX5jPnDufo6MHpmupx60jsHezw7cPulu928FXxM/IP8urz w/Sc9XP2Sfce9/P4xvmV+mH7Kfvr/Kf9XP4L/rT/Wv//AAAB6AOnBSwGhAe/COcKBAsWDBwNHg4c DxkQFxEUEhATCxQEFPwV8xbmF9gYzBnWGt4b4RzhHd8e2x/WINEhyyLEI74kuCWzJq4nqiimKaIq oCueLJ0tmi6VL5EwjTGJMoYzgzSBNX82fzd/OIA5gjp/O348fD18Pnw/fUB/QYJChUOJRI1FkkaY R5pIm0mdSp9Lo0ymTapOr0+0ULpRwFLHU85U1VXXVtlX21jeWeBa41vnXOpd7V7xX/Vg+GH8YwBk A2UBZf9m/Gf6aPhp9Wrza/Bs7m3rbuhv5XDhcd5y2nPWdM11w3a5d694pXmbepB7hXx6fW9+ZH9Y gE2BQYI1gymEHIUQhf6G7YfbiMqJuIqmi5WMg41xjmCPTpA9kSySG5MKk/qU6ZXZlsmXupinmZOa gJttnFqdSJ42nyWgFKEEofWi5qPYpMqlvaaxp6aom6mRqoerf6x3rW+uZ69gsFqxVLJPs0y0SbVG tkW3RLhFuUa6SLtKvE69Ur5Xv13AY8FqwnLDe8SExYrGkMeWyJ3Jpcqty7bMv83IztLP3NDm0fHS +9QG1RLWHtcq2DfZRNpR217ca9153obflOCc4aLiqOOt5LLltua6573owOnD6tTr5ez17gTvEvAg 8SzyOPND9E71WfZj92r4bvlv+mz7ZPxW/UT+L/8X//8AAAIFA9gFaAbGCAYJMgpSC2UMcg14DnoP ehB6EXkSdRNwFGgVXhZSF0UYNxkpGjQbPRxAHT8eOh80ICwhIyIZIw8kBCT5Je4m4yfYKMwpwSq2 K6ssny2TLocvfDBwMWQyWTNNNEE1NjYrNyE4FjkLOgA69jvtPOM92z7TP8tAxEG9QrdDskSsRaZG oUecSJdJlEqQS45Mi02KTolPiFCIUYlSiFOIVIhViFaJV4pYi1mNWo9bkVyTXZZemF+bYJ1hn2Kg Y6Fko2WkZqZnp2ioaalqqmuqbKttq26rb6twqXGocqVzo3SgdZ12mXeVeJF5jHqHe4J8fH12fm9/ aYBhgVqCUYNIhD6FNYYrhyGIF4kMigKK94vtjOKN2I7Nj8OQuZGvkqWTnJSSlYmWgJd4mHCZappj m16cWZ1VnlKfUKBPoU+iUKNSpFWlWaZfp2aobql4qoKrjqycrauuu6/MsN+x87MJtCC1OLZRt2y4 h7mkusK74b0BviG/Q8BlwYfCqsPOxPHGFcc5yF7Jgsqmy8rM7c4QzzLQVNF00pTTstTP1evXBtge 2TbaTNth3HTdh96Y36fgs+G+4sfjzeTR5dLm0OfM6MTpuuqs65vsh+1v7ljvXPBb8VbyTPM99Cr1 EvX29tb3s/iN+WL6L/r0+7H8Zv0R/bP+Tf7h/3H//wAAAdkDjQUJBlQHfwiWCaEKpAufDJMNgg5w D18QTBE3EiETCRPwFNYVuxafF4MYgRl9GnQbZhxVHUEeLB8XIAAg6iHTIr0jpiSQJXomZCdOKDkp JSoQKv0r6izXLcQusS+eMIwxeTJnM1U0RDUyNiI3ETgBOPE54jrTO8Q8tT2mPpg/ikB9QW9CYkNV RElFPEYwRyNIF0kLSf9K80voTNxN0E7FT7lQrVGhUpVTiFR6VW1WX1dRWENZNVomWxhcCVz6Xete 3F/MYL1hrGKbY4lkeGVmZlRnQmgwaR5qC2r4a+Vs0m2+bqpvlnCCcWxyVnNAdCl1EnX7duR3zXi2 eZ56hntufFZ9Pn4lfw1/9IDbgcKCqIONhHKFV4Y7hyCIBYjqic+Ks4uYjH2NYo5Hjy2QEpD4kd6S xJOqlJGVeJZgl0eYL5kYmgGa6pvUnL+dqp6Wn4OgcaFfok+jP6QwpSKmFacIp/2o86nqquKr26zV rdCuy6/HsMSxwrLBs8G0wrXFtsi3zbjTudu647vtvPi+BL8RwCDBMMJAw1LEZsV6xo/Hpsi+ydbK 8cwMzSrOR89j0IDRn9K/0+DVA9Yn10zYc9mb2sTb790a3kbfc+Ch4c/jAuRN5Znm5+g26Ybq2Owr 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 lEK+k5ZIhca4kpN5dzOyipDqaJmseo6TWiWmWIxlS/igJ4pUPmuZrIg8McuS4oYzJseLwoRCk+S9 /Z1dhXu38JncdvWx4ZabaGar0pOSWfaltZClS9affY3BPl+ZDYrTMd2SVYfmJv6LUoUVk4m9g6RO hTq3aKAPdsSxUZwQaD+rQZhLWdilL5SiS8Se/JDxPliYg40tMeyR3IllJyyK9YXGk029AasThQ62 5aYKdqewzaFGaCyqv5y/Wcmks5hSS7qekZPVPlWYGY9EMfqRcYqvJ1GKqYZakwC8orG1hPK2dKu/ dp+wUaYSaCeqOaC5WcykLJuOS8eeEpZXPm6XupERMhiRMIvGJ2+KbobRiZXMJHlwe/XFNnkobma+ aHkvYOy3jnmPU5CweHo8RmmpCXsuOdqhN3xMLgaY1H3JI6SP4X+ciUnLKoBle7/EYn92bi+9jn7V YLS2nH6IU1uvcH6LRkmn9n7ROdmgHX88LkOXx3/0JDOO/IDpiTPKGocie5fDaoWgbgi8k4RXYIe1 lYNwUzSuYYLLRjam6oJgOeWfF4ISLoCW1oH8JLCONoITiS/JHY2+e4nCZ4unbei7kInPYGq0iIhA Ux+tXIb6RjCl8IXXOfeeLITFLrmWBYPdJRuNjYMaiSPIQpRQe4LBgJGabea6n48uYF+zmo0CUx2s aosFRjqlEokqOhGdYIdRLu6VUYWVJXWM/YQAiQnHhJrYe3vAtpd3bfC5zZRkYHWyyZGVUy+rpI7n RlCkTYxJOi+cr4mrLx+UuYcgJcGMhYTFiOzG4aEve3bACp0Ybf25GplUYI6yGJXaU0urAJJ/Rm6j tY8nOlCcGYvIL0uUOYh5Jf+MIoVqiM3GVKdQe3G/d6J2bg24gp34YKqxgJnKU2uqcJXCRo+jOZG2 OnKbqo2kL3ST0YmhJjKL0oXziLHF0K0ye3G+8aeHbiW3+qI9YNKw+Z1XU5up8JijRsOixZPuOqSb S483L6GTh4qWJlqLk4Zh8s97Y3mw2917vHnSxKh8HHoHrSV8g3pelXF893rdfa19fHuCZfB+FXw+ TkR+2X00Nst/6X598LJ5uYTP2i16NIPKwyp6s4Loq897O4IylDR70IGqfIh8doFCZOF9LoDjTVV+ EICfNgF/OoBo7sx4WZAC2Gp45Y3awZ95eIvSql56GYoQkup6yYh9e2R7i4cFY+R8X4WGTH19W4P+ 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 Pm6IqIQANaaG1YM9LamFCYKSJmiDfYHdIGaCNoEkYeWPGIzTWW+Np4v4UH+L44qER2aJ3YjLPnKH 5Ic4NcaGGIXHLcyEbIRxJoWDBoMRIIuB2oHFW5OkXFj5U1ChlFwxSuWepl+RQkibaWMmOZyX4Gb4 MSeULGsLKV+Qa29MIl6MvXPTHKWJXnhoWtqirF9wUtSf9GIeSn2c9mT6QgSZq2gGOYWWIGtHMT2S fG7AKaSO03JgIs+LR3Y6HT6ID3oWWmugomW1Ul6d/WfmSiGbFGo4QbiX1my+OV6UZG9tMUGQ4HJN KdeNWnVLIy2J+Hh3HcKG7HucWgqelmvVUfOcBG2LSa+ZMW9bQXCWE3FSOTGSwnNxMTyPY3W0KfyM B3gOI3qI0XqLHjSF8nz4WaWcy3HoUZWaU3MmSV6XjnRyQSOUf3XNORaRTHdUMTqOEnj6KhuK3Xqt I7uH0nx2HpSFHn4sWUabVHf0UUuY8Xi+SSWWOHl8QPqTM3o8OPqQD3sYMUWM6HwXKjqJ2H0jI/GG 9342HuSEbH81WPaaIn3QURGXz34nSPyVHX5RQNmSIX5xON+PDH6pMUKL+n77KlyI+H9gJCKGPn/C HyaD2YAWWLWZL4N6UOeW54NbSN6UOILuQMWRPYJlONCOMYH1MTCLOIGeKl+IS4FfJEqFpYEaH1uD Y4DRWIuYb4j1UM2WKYhhSMmTfodTQLmQhYYZONaNeoT8MUWKjYP9KnSHtoMVJGOFLII0H4WDBIFp rH9c41UrnTJf/VkmjYVjEV0VfUxmMGD7bJ9pdGTnW8Rs6mjvSztwlW0oOxB0mXG7LAd4+nblqotY 7V9hm7Bcb2JgjDNf32VXfCdjV2hMa5xm9GtJWuhqxm5hSoxu0HGiOqVzNHU0K/d38nk+qL1VZ2mA mf1ZPmuAisRc/21+etFgw2+Danhkr3GWWfxo1XPBSd5tN3YMOkBx9XiWK+p3B3t2pvJSPXNzmEtW Y3SCiSZaZHWUeYBebHaraVNipnfSWRRnG3kNSTprznpdOeVw3nvZK952N32IpUJPd31ClstT4H1u h8VYIn2ZeDRcZH3EaFtg3H34WEllm34+SKtqln6OOZZv7H70K9N1g39uo9RNIIbxlYtRwoY9hq9W OIV/dz1asYS7Z31fXYP7V6hkUYNFSDhpjYKSOVRvIIHdK8p06YEioqlLKZBzlIlP+47Xhc9Um40q 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 N8SE9nNeMXOEOXVwK2ODiXekJfCC8XnaISaCjHwJHWGCTn4DSryD0HOTREyEIHTcPeSEAnYiN4aD i3d7MUyC9XjyK1qCbXqCJhKB93wXIVuBwH2cHaSBrn7vSkyCAHkvQ+eCl3nyPZWCr3qfN1aCXntY MS2B6nwyK0WBi30gJhqBMn4WIYSBGX75HdqBLH+0SfuAfH6lQ5eBUn7bPVWBnX7mNzGBbH75MSSB D38wK1SAyn98JiiAln/RIZqAnoAbHgWAxIBUAAD//wAA//8AAP//AABtZnQxAAAAAAMEIQAAAQAA AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY GRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BR UlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CBgoOEhYaHiImK i4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLD xMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8 /f7/AAEBAgIDAwQEBQYGBwcICAkJCgsLDAwNDQ4PDxAQERESExMUFBUWFhcXGBkZGhobHBwdHh4f ICAhIiIjJCQlJiYnKCkpKissLS0uLzAxMjIzNDU2Nzg5Ojs8PT4/QEJDREVGSElKTE1PUFJTVVdY WlxeYGJkZmhqbW9xdHZ5fH6Bg4aJi46QkpWXmZudn6Gjpaeoqqytr7Cys7W2t7m6u7y9v8DBwsPE xcbHyMnKy8zNzc7P0NHS0tPU1dbW19jZ2drb29zd3d7f3+Dh4eLj4+Tl5ebm5+jo6enq6+vs7O3u 7u/v8PDx8vLz8/T09fb29/f4+Pn5+vv7/Pz9/f7+/wABAQICAwMEBAUGBgcHCAgJCQoLCwwMDQ0O Dw8QEBEREhMTFBQVFhYXFxgZGRoaGxwcHR4eHyAgISIiIyQkJSYmJygpKSorLC0tLi8wMTIyMzQ1 Njc4OTo7PD0+P0BCQ0RFRkhJSkxNT1BSU1VXWFpcXmBiZGZoam1vcXR2eXx+gYOGiYuOkJKVl5mb nZ+ho6WnqKqsra+wsrO1tre5uru8vb/AwcLDxMXGx8jJysvMzc3Oz9DR0tLT1NXW1tfY2dna29vc 3d3e39/g4eHi4+Pk5eXm5ufo6Onp6uvr7Ozt7u7v7/Dw8fLy8/P09PX29vf3+Pj5+fr7+/z8/f3+ /v//pjky/6JGSv2gTWDxpExy5qdMhNqoUJbPplmmx6VkscSnb7bBp3i7vaeBwLqlh8a2o4fLs6CH 0K+diNarmovdpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleb/pjky/6JGSv2gTWDxpExy5qdMhNqoUJbPplmmx6VkscSnb7bB p3i7vaeBwLqlh8a2o4fLs6CH0K+diNarmovdpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pjky/6JGSv2gTWDxpExy5qdM hNqoUJbPplmmx6VkscSnb7bBp3i7vaeBwLqlh8a2o4fLs6CH0K+diNarmovdpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/ pjky/6JGSv2gTWDxpExy5qdMhNqoUJbPplmmx6VkscSnb7bBp3i7vaeBwLqlh8a2o4fLs6CH0K+d iNarmovdpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleb/pjky/6JGSv2gTWDxpExy5qdMhNqoUJbPplmmx6VkscSnb7bBp3i7 vaeBwLqlh8a2o4fLs6CH0K+diNarmovdpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pjky/6JGSv2gTWDxpExy5qdMhNqo UJbPplmmx6VkscSnb7bBp3i7vaeBwLqlh8a2o4fLs6CH0K+diNarmovdpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pjky /6JGSv2gTWDxpExy5qdMhNqoUJbPplmmx6VkscSnb7bBp3i7vaeBwLqlh8a2o4fLs6CH0K+diNar movdpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleb/pjky/6JGSv2gTWDxpExy5qdMhNqoUJbPplmmx6VkscSnb7bBp3i7vaeB wLqlh8a2o4fLs6CH0K+diNarmovdpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pjky/6JGSv2gTWDxpExy5qdMhNqoUJbP plmmx6VkscSnb7bBp3i7vaeBwLqlh8a2o4fLs6CH0K+diNarmovdpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pjky/6JG Sv2gTWDxpExy5qdMhNqoUJbPplmmx6VkscSnb7bBp3i7vaeBwLqlh8a2o4fLs6CH0K+diNarmovd pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleb/pjky/6JGSv2gTWDxpExy5qdMhNqoUJbPplmmx6VkscSnb7bBp3i7vaeBwLql h8a2o4fLs6CH0K+diNarmovdpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pjky/6JGSv2gTWDxpExy5qdMhNqoUJbPplmm x6VkscSnb7bBp3i7vaeBwLqlh8a2o4fLs6CH0K+diNarmovdpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pjky/6JGSv2g TWDxpExy5qdMhNqoUJbPplmmx6VkscSnb7bBp3i7vaeBwLqlh8a2o4fLs6CH0K+diNarmovdpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleb/pjky/6JGSv2gTWDxpExy5qdMhNqoUJbPplmmx6VkscSnb7bBp3i7vaeBwLqlh8a2 o4fLs6CH0K+diNarmovdpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleb/pjky/6JGSv2gTWDxpExy5qdMhNqoUJbPplmmx6Vk scSnb7bBp3i7vaeBwLqlh8a2o4fLs6CH0K+diNarmovdpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pjky/6JGSv2gTWDx pExy5qdMhNqoUJbPplmmx6VkscSnb7bBp3i7vaeBwLqlh8a2o4fLs6CH0K+diNarmovdpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleb/pjky/6JGSv2gTWDxpExy5qdMhNqoUJbPplmmx6VkscSnb7bBp3i7vaeBwLqlh8a2o4fL s6CH0K+diNarmovdpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleb/pjky/6JFSv2hTGDypUtx5qlKg9qqTZXPqValyKhhsMWq a7XCrHW6vqt9v7qqg8W2qIfKsqaH0Kuih9aknoncmpqP4Zqaj+Gamo/hmpqP4Zqaj+Gamo/hmpqP 4Zqaj+Gamo/hmpqP4Zqaj+Gamo/hmpqP4Zqaj+Gamo/hmpqP4Zqaj+H/pjgy/6NFSv2iS2Dypklx 5qpIgtutSpPQrFKjyaxdr8avZ7PDsXG4v7N5vbivgcSyqofLrKaG0KWjhtWdn4bak52L3pOdi96T nYvek52L3pOdi96TnYvek52L3pOdi96TnYvek52L3pOdi96TnYvek52L3pOdi96TnYvek52L3pOd i97/pzgy/6NFSv2iSl/yp0hw56xGgdyvR5LSsE6hyrFXrci2YrDFumy1urN4vrKugcWtqofLp6eF z6CkhNOYoYXXj5+I2o+fiNqPn4jaj5+I2o+fiNqPn4jaj5+I2o+fiNqPn4jaj5+I2o+fiNqPn4ja j5+I2o+fiNqPn4jaj5+I2o+fiNr/pzgy/6NES/6jSV/zqUZv6K5EgN2zQ5DTtkifzLdRqsrAXKy9 uGy3s7J4wK2ugcapqobKoqiEzpulhNGUo4TUjKGH14yhh9eMoYfXjKGH14yhh9eMoYfXjKGH14yh h9eMoYfXjKGH14yhh9eMoYfXjKGH14yhh9eMoYfXjKGH14yhh9f/pzcy/6NES/6lR17zqkRu6bFB f9+4Po7WvUKbz8NKpMK+XK+2t2y5rrF4wamugcalq4XJnqmEzJing8+RpYTSiqOG1IqjhtSKo4bU iqOG1IqjhtSKo4bUiqOG1IqjhtSKo4bUiqOG1IqjhtSKo4bUiqOG1IqjhtSKo4bUiqOG1IqjhtT/ qDcy/6RES/6mRl70rUJt6rQ+feG9O4vaxjyWysZIpLm8XLKvtm27qbF5waWugsWhrITIm6qDy5Wp g82Pp4TPiaaG0YmmhtGJpobRiaaG0YmmhtGJpobRiaaG0YmmhtGJpobRiaaG0YmmhtGJpobRiaaG 0YmmhtGJpobRiaaG0YmmhtH/qDcy/6RDS/+oQ131rz9s7Lg6euTDN4fd0zWQwcRJp7G6XrWptW68 pLF6wKKvgsSdrYTHmKyEyZKqhMuNqYXNiKiGzoiohs6IqIbOiKiGzoiohs6IqIbOiKiGzoiohs6I qIbOiKiGzoiohs6IqIbOiKiGzoiohs6IqIbOiKiGzoiohs7/qTYy/6VCS/+qQVz2sjtq7r02d+jL M4DQ0jOTuMNLqKq5YLaktXC8obJ7wJ6wg8OaroTFla2Ex5CshMmLq4XKh6qGzIeqhsyHqobMh6qG zIeqhsyHqobMh6qGzIeqhsyHqobMh6qGzIeqhsyHqobMh6qGzIeqhsyHqobMh6qGzIeqhsz/qTUy /6VCS/+sPVr4tzdn8cQxcd/XLHvF0DWVsMJOqaS4Y7eftXK8nbN8v5uxg8GXr4TDkq6ExY6thcaK rIbIh6yHyYesh8mHrIfJh6yHyYesh8mHrIfJh6yHyYesh8mHrIfJh6yHyYesh8mHrIfJh6yHyYes h8mHrIfJh6yHyYesh8n/qjQy/6ZAS/+wOVj5vTFi584tadDgJH+5zzeXp8JSqZ66ZrWatXO7mLN9 vpeyg8CUsYXBkLCFw42vhcSJrobFhq6Hxoauh8aGrofGhq6Hxoauh8aGrofGhq6Hxoauh8aGrofG hq6Hxoauh8aGrofGhq6Hxoauh8aGrofGhq6Hxoauh8b/qzMy/6o7Sf+2MlPwxypa2N4hZsLfJIKt zjyYn8NWp5m8aLKWt3W4lLR9vZOzg76RsoW/jrKGwIuxhsGIsIfChrCIw4awiMOGsIjDhrCIw4aw iMOGsIjDhrCIw4awiMOGsIjDhrCIw4awiMOGsIjDhrCIw4awiMOGsIjDhrCIw4awiMP/rTEy/7Az RfjAKUzf1iNNx+ggarPeJoShz0GWl8ZZpJPAaqyQvHWyj7l9to+3g7iMtoS6irWFvIi0hr2Gs4e+ hLOIv4SziL+Es4i/hLOIv4SziL+Es4i/hLOIv4SziL+Es4i/hLOIv4SziL+Es4i/hLOIv4SziL+E s4i/hLOIv4SziL//ry8y/7kpP+jOHj/M5htSt+4hbaXeLIOX0kWSkMtbnYzFa6WLwnWqir98rYe+ f7CEvICxg7yCsoG7g7N/uoS0frqGtX66hrV+uoa1frqGtX66hrV+uoa1frqGtX66hrV+uoa1frqG tX66hrV+uoa1frqGtX66hrV+uoa1frqGtX66hrX/sioy8cYcM9HiFDq88xtWqO4mbZjhNX+O2EqM iNBdlYbMa5uEyXSggcd4o37Fe6V8xH2me8R+p3nDgKh4woKpd8KDqnfCg6p3woOqd8KDqnfCg6p3 woOqd8KDqnfCg6p3woOqd8KDqnfCg6p3woOqd8KDqnfCg6p3woOqd8KDqnfCg6r6vhwo1t0OI8Dw FD+s/R5XnPAtao/lPnmG3k6Dgdhfi3/Ua5B60XCUd890l3XOd5hzzXmacs17m3HMfZtwy3+cb8uA nW/LgJ1vy4Cdb8uAnW/LgJ1vy4Cdb8uAnW/LgJ1vy4Cdb8uAnW/LgJ1vy4Cdb8uAnW/LgJ1vy4Cd b8uAnW/LgJ3Z0gsYxO0OKbD9FkGf/yRVkfQ1ZYfrRnB/5VR5e+Fhf3bdaIRy226Hb9lxiW3YdItr 2HeMatZ5jWnWeo5o1XyOZ9V+j2fVfo9n1X6PZ9V+j2fVfo9n1X6PZ9V+j2fVfo9n1X6PZ9V+j2fV fo9n1X6PZ9V+j2fVfo9n1X6PZ9V+j2fVfo//ozkq/59GQP+dUFX6oFBl76NRdeSkU4baoluW0KBl pMidcLDFnHu1wpyDub+aib68lYvCupCMxbiMj8m2iJLMs4SXz7KBn9Ktf6LTrX+i061/otOtf6LT rX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otP/ozkq/59GQP+dUFX6 oFBl76NRdeSkU4baoluW0KBlpMidcLDFnHu1wpyDub+aib68lYvCupCMxbiMj8m2iJLMs4SXz7KB n9Ktf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i 061/otP/ozkq/59GQP+dUFX6oFBl76NRdeSkU4baoluW0KBlpMidcLDFnHu1wpyDub+aib68lYvC upCMxbiMj8m2iJLMs4SXz7KBn9Ktf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOt f6LTrX+i061/otOtf6LTrX+i061/otP/ozkq/59GQP+dUFX6oFBl76NRdeSkU4baoluW0KBlpMid cLDFnHu1wpyDub+aib68lYvCupCMxbiMj8m2iJLMs4SXz7KBn9Ktf6LTrX+i061/otOtf6LTrX+i 061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otP/ozkq/59GQP+dUFX6oFBl 76NRdeSkU4baoluW0KBlpMidcLDFnHu1wpyDub+aib68lYvCupCMxbiMj8m2iJLMs4SXz7KBn9Kt f6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/ otP/ozkq/59GQP+dUFX6oFBl76NRdeSkU4baoluW0KBlpMidcLDFnHu1wpyDub+aib68lYvCupCM xbiMj8m2iJLMs4SXz7KBn9Ktf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT rX+i061/otOtf6LTrX+i061/otP/ozkq/59GQP+dUFX6oFBl76NRdeSkU4baoluW0KBlpMidcLDF nHu1wpyDub+aib68lYvCupCMxbiMj8m2iJLMs4SXz7KBn9Ktf6LTrX+i061/otOtf6LTrX+i061/ otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otP/ozkq/59GQP+dUFX6oFBl76NR deSkU4baoluW0KBlpMidcLDFnHu1wpyDub+aib68lYvCupCMxbiMj8m2iJLMs4SXz7KBn9Ktf6LT rX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otP/ ozkq/59GQP+dUFX6oFBl76NRdeSkU4baoluW0KBlpMidcLDFnHu1wpyDub+aib68lYvCupCMxbiM j8m2iJLMs4SXz7KBn9Ktf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i 061/otOtf6LTrX+i061/otP/ozkq/59GQP+dUFX6oFBl76NRdeSkU4baoluW0KBlpMidcLDFnHu1 wpyDub+aib68lYvCupCMxbiMj8m2iJLMs4SXz7KBn9Ktf6LTrX+i061/otOtf6LTrX+i061/otOt f6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otP/ozkq/59GQP+dUFX6oFBl76NRdeSk U4baoluW0KBlpMidcLDFnHu1wpyDub+aib68lYvCupCMxbiMj8m2iJLMs4SXz7KBn9Ktf6LTrX+i 061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otP/ozkq /59GQP+dUFX6oFBl76NRdeSkU4baoluW0KBlpMidcLDFnHu1wpyDub+aib68lYvCupCMxbiMj8m2 iJLMs4SXz7KBn9Ktf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/ otOtf6LTrX+i061/otP/ozkq/59GQP+dUFX6oFBl76NRdeSkU4baoluW0KBlpMidcLDFnHu1wpyD ub+aib68lYvCupCMxbiMj8m2iJLMs4SXz7KBn9Ktf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT rX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otP/ozkq/59GQP+eT1T6oU5k76RPdeWmUYXa pViV0aJio8mfba/Fn3e1wp6Aub+diL68mYnDuZSLx7aPjcuzipDPsYaW1K6DoNengaHVp4Gh1aeB odWngaHVp4Gh1aeBodWngaHVp4Gh1aeBodWngaHVp4Gh1aeBodWngaHVp4Gh1aeBodX/ozkq/6BG QP+eTlT6ok1k8KVOdOWoT4Tbp1WU0qVfocqjaa3FonS0wqF9ub+ghb67nYjDuJiJyLWTi82xjo7T romW2KeFndqhhaDWoYWg1qGFoNahhaDWoYWg1qGFoNahhaDWoYWg1qGFoNahhaDWoYWg1qGFoNah haDWoYWg1qGFoNb/ozkq/6BGQP+fTVT7o0xk8KdMdOapToPcqlOS0qlboMumZqvGpXCzw6V6uL+k gr27oofDuJ2HybOYic+wlI7Vq5KX2qCKnNybiZ/Ym4mf2JuJn9ibiZ/Ym4mf2JuJn9ibiZ/Ym4mf 2JuJn9ibiZ/Ym4mf2JuJn9ibiZ/Ym4mf2JuJn9j/ozgq/6BFQP+gTFT7pEtj8ahLc+arTIPdrVCR 1KxYnsyqYqnHqmyxxKp2tsCqfry8qITCuKSGybOhiM+snI3Vo5aU2pqRnNyWjp7Ylo6e2JaOntiW jp7Ylo6e2JaOntiWjp7Ylo6e2JaOntiWjp7Ylo6e2JaOntiWjp7Ylo6e2JaOntj/pDgq/6BFQP+g S1P7pUpj8alJcuetSoHesE2Q1bBVnM6wXqfJsGivxrJzs8OyfLi9sIDBtqyCya6nhc+loYrVnJyR 2pWZnNyRlJ7ZkZSe2ZGUntmRlJ7ZkZSe2ZGUntmRlJ7ZkZSe2ZGUntmRlJ7ZkZSe2ZGUntmRlJ7Z kZSe2ZGUntn/pDgq/6BFQP+hSlP7pkhi8qtIceivSIDfs0qO1rVRmtC2WqTMuGWryr1xrsG5e7a3 soDArqyEyKaohc6dpIfUlKCO2I6fmduMm57ZjJue2YybntmMm57ZjJue2YybntmMm57ZjJue2Yyb ntmMm57ZjJue2YybntmMm57ZjJue2Yybntn/pDgq/6FFQP+iSVP8p0dh8q1GcOmyRn/gt0eM2btO l9O/V5/QxWOkxcBwrbq4ebewsoDAqa2Fx6CohM2XpYXSjqGJ14egktmHoZzYh6Gc2IehnNiHoZzY h6Gc2IehnNiHoZzYh6Gc2IehnNiHoZzYh6Gc2IehnNiHoZzYh6Gc2IehnNj/pDcq/6FEQP+jSFL8 qUVh865Eb+q1Q33ivESJ3MJKk9jKVJnKxmKkvL1usLK2eLmqsYDBpK2Fx5uphMyTpoTQiqOH1IOi jtaCopbWgqKW1oKiltaCopbWgqKW1oKiltaCopbWgqKW1oKiltaCopbWgqKW1oKiltaCopbWgqKW 1oKiltb/pTcq/6FEQf+kRlL9qkRg9LFCbuu4QXvkwUKG38xGjdPPUpfBxGGns7tts6u1eLulsYDB n66ExpirhMqQqITOiKaG0YKkjNOApJLTgKSS04CkktOApJLTgKSS04CkktOApJLTgKSS04CkktOA pJLTgKSS04CkktOApJLTgKSS04CkktP/pTcq/6FEQf+lRVH+rEJf9bQ/bO28Pnjnx0CB4NZGh8nN UZq4wmCqrLpttaW1eLygsYDBm66ExZWshMiOqoTLh6iGzoKni89/po/Qf6aP0H+mj9B/po/Qf6aP 0H+mj9B/po/Qf6aP0H+mj9B/po/Qf6aP0H+mj9B/po/Qf6aP0H+mj9D/pTYq/6JDQf+nQ1D/rj9d 97c8afDCO3Pm0D9509k/ir7LUZ2vwGGspblutqC1ebycsoHAmK+Ew5KuhMaMrIXIh6qHyoKpisx/ qY7Nf6mOzX+pjs1/qY7Nf6mOzX+pjs1/qY7Nf6mOzX+pjs1/qY7Nf6mOzX+pjs1/qY7Nf6mOzX+p js3/pjYq/6JCQf+pQE//sjtb+b04ZezLOG3c3DV4x9Y+jrPJUqCnwGOtn7lwtpq1eryYsoG/lLGF wo+vhcSLrobFhq2Hx4Ksish/q43Jf6uNyX+rjcl/q43Jf6uNyX+rjcl/q43Jf6uNyX+rjcl/q43J f6uNyX+rjcl/q43Jf6uNyX+rjcn/pzUq/6NCQf+sPE3/tzZX8sUzX+HWNmPN4zF8utM/kanIVKGf wGWtmbpytZa2e7qUs4K+krKFwI2xhsGJsIfDhq+IxIKuisWArozFgK6MxYCujMWArozFgK6MxYCu jMWArozFgK6MxYCujMWArozFgK6MxYCujMWArozFgK6MxYCujMX/qDQq/6Y+P/+xN0r5vjBS588v VdHiLGjA4TB/rdJCk6DIV6GYwWerlLxzspK4fLeQtoK6jrSFvIuzhr6IsofAhbGJwYOxisGBsIzC gbCMwoGwjMKBsIzCgbCMwoGwjMKBsIzCgbCMwoGwjMKBsIzCgbCMwoGwjMKBsIzCgbCMwoGwjML/ qTIq/6s4Pf+4L0XuyClI1t8lUsPsKWyx3zGCodJFkpfKWp+Rw2mnjr90rY28fLGLuoG0iLmDtoW4 hLiDt4a5gbaHun+1ibt+tYu8frWLvH61i7x+tYu8frWLvH61i7x+tYu8frWLvH61i7x+tYu8frWL vH61i7x+tYu8frWLvH61i7z/qzAq/7EvOPbCJjzc2h87xusjV7PsKm+j3zWCltRKkI/NXZqLyGuh icR1pobCe6qDwH6sgb+Arn++grB9vYOxe7yFsnq7h7N5u4izebuIs3m7iLN5u4izebuIs3m7iLN5 u4izebuIs3m7iLN5u4izebuIs3m7iLN5u4izebuIs3m7iLP/rS4q/rslMOPSGi3J6BtBtvcjWqXs Lm+W4Tx/jNhPi4fSX5OEzWyZgcp0nn7IeKF7x3ujecZ9pHjFf6V2xIGmdcODp3TDhKhzwoapc8KG qXPChqlzwoapc8KGqXPChqlzwoapc8KGqXPChqlzwoapc8KGqXPChqlzwoapc8KGqXPChqn/tCQl 7MoWI83lEyy59htGp/omW5juNWyM5UR6hN5Tg4DZYop81WyPeNJxk3XQdZVzz3iXcc56mHDNfJlv zX6absyAm23Mgpxsy4ScbMuEnGzLhJxsy4ScbMuEnGzLhJxsy4ScbMuEnGzLhJxsy4ScbMuEnGzL hJxsy4ScbMuEnGzLhJz1wRUZ0d8MGLzzEzGq/x5HmvwsWY7yPGeE6ktyfeVYenngY4B03mqEcNtv h23ac4lr2XaKath4i2nXeoxo1nyNZ9Z+jmbVgI5l1YGPZdWBj2XVgY9l1YGPZdWBj2XVgY9l1YGP ZdWBj2XVgY9l1YGPZdWBj2XVgY9l1YGPZdWBj2XVgY/S0goJv+gNHa3/FTOd/yNFkP8zVIX3Q19+ 8VFod+xcb3DpYnRr52d3aOVteWbkcHtl43N9Y+J2fWLheH5i4Xl/YeF7f2DgfYBf4H+BX+B/gV/g f4Ff4H+BX+B/gV/gf4Ff4H+BX+B/gV/gf4Ff4H+BX+B/gV/gf4Ff4H+BX+B/gV/gf4H/oDkh/5xG Nv+aUUr/nVJZ959Uae2gV3jjn1yH2pxnldKZcKHMlnurxpSEs8STi7bCj4+6wIuSvL6Hlb+9g5jB vIGbw7t+oMS6fKbGt3qsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1 eqzGtXqsxrV6rMb/oDkh/5xGNv+aUUr/nVJZ959Uae2gV3jjn1yH2pxnldKZcKHMlnurxpSEs8ST i7bCj4+6wIuSvL6Hlb+9g5jBvIGbw7t+oMS6fKbGt3qsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqs xrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMb/oDkh/5xGNv+aUUr/nVJZ959Uae2gV3jjn1yH 2pxnldKZcKHMlnurxpSEs8STi7bCj4+6wIuSvL6Hlb+9g5jBvIGbw7t+oMS6fKbGt3qsxrV6rMa1 eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMb/oDkh/5xGNv+a UUr/nVJZ959Uae2gV3jjn1yH2pxnldKZcKHMlnurxpSEs8STi7bCj4+6wIuSvL6Hlb+9g5jBvIGb w7t+oMS6fKbGt3qsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzG tXqsxrV6rMb/oDkh/5xGNv+aUUr/nVJZ959Uae2gV3jjn1yH2pxnldKZcKHMlnurxpSEs8STi7bC j4+6wIuSvL6Hlb+9g5jBvIGbw7t+oMS6fKbGt3qsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6 rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMb/oDkh/5xGNv+aUUr/nVJZ959Uae2gV3jjn1yH2pxn ldKZcKHMlnurxpSEs8STi7bCj4+6wIuSvL6Hlb+9g5jBvIGbw7t+oMS6fKbGt3qsxrV6rMa1eqzG tXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMb/oDkh/5xGNv+aUUr/ nVJZ959Uae2gV3jjn1yH2pxnldKZcKHMlnurxpSEs8STi7bCj4+6wIuSvL6Hlb+9g5jBvIGbw7t+ oMS6fKbGt3qsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqs xrV6rMb/oDkh/5xGNv+aUUr/nVJZ959Uae2gV3jjn1yH2pxnldKZcKHMlnurxpSEs8STi7bCj4+6 wIuSvL6Hlb+9g5jBvIGbw7t+oMS6fKbGt3qsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1 eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMb/oDkh/5xGNv+aUUr/nVJZ959Uae2gV3jjn1yH2pxnldKZ cKHMlnurxpSEs8STi7bCj4+6wIuSvL6Hlb+9g5jBvIGbw7t+oMS6fKbGt3qsxrV6rMa1eqzGtXqs xrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMb/oDkh/5xGNv+aUUr/nVJZ 959Uae2gV3jjn1yH2pxnldKZcKHMlnurxpSEs8STi7bCj4+6wIuSvL6Hlb+9g5jBvIGbw7t+oMS6 fKbGt3qsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6 rMb/oDkh/51GNv+aUEr/nlFZ96BSaO2hVnjkoVqG255klNKbbqDMmHiqxpWBssSVibbBkY66v4yQ vb2Ik8C8hJfDuoGbxbl+oMe4fKfIsnuqyLB7qsiwe6rIsHuqyLB7qsiwe6rIsHuqyLB7qsiwe6rI sHuqyLB7qsiwe6rIsHuqyLB7qsj/oDgi/51GN/+bT0r/n09Z+KJQaO6jU3flpFeF3KJgk9Oeap/N m3Spx5h9scSXhrbBlIy6v4+OvryKksK6hpXFuIKayLd/oMu0fKfMrHypyqp9qcqqfanKqn2pyqp9 qcqqfanKqn2pyqp9qcqqfanKqn2pyqp9qcqqfanKqn2pyqp9qcr/oDgi/51FN/+cTkr/oE5Y+KNP Z++lUXblplWE3aVdkdSiZp3Nn3CoyJx6sMSagrbBmIq6vpKMv7uNj8S4iJPItoOZzLSAoc+sfaXP pn6nzKR/qMukf6jLpH+oy6R/qMukf6jLpH+oy6R/qMukf6jLpH+oy6R/qMukf6jLpH+oy6R/qMv/ oTgi/51FN/+dTUn/oUxY+aVNZu+nT3XmqVOD3qhakNWmYpzPo2ymyaB2rsWef7XBnIe6vpeKwLqQ jca2i5LLtIiazrKGpNGmgKTRoIGnzZ+Bp8yfgafMn4GnzJ+Bp8yfgafMn4GnzJ+Bp8yfgafMn4Gn zJ+Bp8yfgafMn4GnzJ+Bp8z/oTgi/55FN/+eTEn/oktX+aZMZvCpTnTnq1GC36tXjteqX5rQqGmk y6VzrMajfLPCoIS5vpyIwLmWjMa1kZLLr42Yz6qKodKghKPTm4SmzpqEp82ahKfNmoSnzZqEp82a hKfNmoSnzZqEp82ahKfNmoSnzZqEp82ahKfNmoSnzZqEp83/oTgi/55FN/+eS0n/o0pX+qdLZfCr THPorU+A4K9UjdmuXJjSrWahzatwqciqebDDp4G3vqGEwLWbicaulY/MqJGVz6KOntKaiaLTloel z5WHps6Vh6bOlYemzpWHps6Vh6bOlYemzpWHps6Vh6bOlYemzpWHps6Vh6bOlYemzpWHps7/oTci /55EN/+fSkn/pElW+qhJZPGsS3LpsE1/4bNRi9qzWpXUs2Oez7NupcuzeKvDrHy3uKWBv6+ehsao mYzLoZWS0JuSm9OVjqLUkYyl0JGLps6Ri6bOkYumzpGLps6Ri6bOkYumzpGLps6Ri6bOkYumzpGL ps6Ri6bOkYumzpGLps7/oTci/55EN/+gSUj/pUhW+6pIZPKuSXHqskx94rZPidy4V5LWumGa071t oMm4dau+sHq2s6l/v6qihMainYrLm5qQz5WXmdKQlaLUjZCl0IyQps+MkKbPjJCmz4yQps+MkKbP jJCmz4yQps+MkKbPjJCmz4yQps+MkKbPjJCmz4yQps//oTci/55EN/+gSUj/pkdV+6tHY/OwSHDr tUp85LpOht6/VY/aw2CV0sRtnMW7c6q5s3i2rq19v6WngsWdoojLlp+Oz4+cltKLnKLTiJWk0ImU pc+JlKXPiZSlz4mUpc+JlKXPiZSlz4mUpc+JlKXPiZSlz4mUpc+JlKXPiZSlz4mUpc//ojci/59E N/+hSEj/p0ZV/KxFYvSyRm7suEh65r9Mg+HHU4rczWKOzshsm8C/caq0t3e1qbF8vp+sgcWXp4bK kKSMzoqildGGoqHShJul0IWapc+FmqXPhZqlz4Wapc+FmqXPhZqlz4Wapc+FmqXPhZqlz4Wapc+F mqXPhZqlz4Wapc//ojYi/59DN/+iRkf/qERU/a5DYfW1RGzuvEZ36cRLf+PPVITZ1GWIyMtrmrrC cKmuune0o7R8vZqvgcOSrIXIi6mKzISnks+AppzQgKOlz4Chps6AoabOgKGmzoChps6AoabOgKGm zoChps6AoabOgKGmzoChps6AoabOgKGmzoChps7/ojYi/59DN/+jRUf/qkJT/rFBX/a4QWrxwURz 6sxLeeDaVnzP1V6NwMxpm7PDcqinu3mznrV/u5exg8KOrYXGh6uIyoGpjc18qJbOe6iizXupps17 qabNe6mmzXupps17qabNe6mmzXupps17qabNe6mmzXupps17qabNe6mmzXupps3/ozYi/59DN/+l Q0b/rEBS/7Q+Xfm9P2buyENt49ZNb9XdToHE01mRtclmn6nBcaugu3mzmbaAupSyhcCMr4bEhq2I x4CrjMl8qpLKequcynmrn8p5q5/Keaufynmrn8p5q5/Keaufynmrn8p5q5/Keaufynmrn8p5q5/K eaufynmrn8r/ozUi/6BCN/+mQUX/rz1Q/rg7WfPEPGHm0UNk2d9Dc8jcSoW30FeVqsdloqDAcKyZ unm0lLaAupGzhb6LsYbBhbCIw4Gui8V9rZDGeq2XxnqtmsZ6rZrGeq2axnqtmsZ6rZrGeq2axnqt msZ6rZrGeq2axnqtmsZ6rZrGeq2axnqtmsb/pDQi/6FBN/+pPUP/szlN+b43VerMOlnb3Ttiy+U/ d7vZSImrzleYoMZlpJjAcayTu3qzkLiBuIy1hLuIs4a+hbKJwIGxi8F+sI/Ce7CUw3qwlsN6sJbD erCWw3qwlsN6sJbDerCWw3qwlsN6sJbDerCWw3qwlsN6sJbDerCWw3qwlsP/pDQi/6M+Nv+tOUH/ uDRI8MYzTd/ZNlDN5TZnvuQ7e63XSIygzViZl8ZnpJLBcquOvXuwjLqBtIi4g7eEt4W5grWIu3+0 ir18s42+erORv3qzk796s5O/erOTv3qzk796s5O/erOTv3qzk796s5O/erOTv3qzk796s5O/erOT v3qzk7//pjIi/6Y6NP+yMz33wC5C5NIvQc/kLlW/7zNrr+E7fqDWSo2WzluZkMhpoYzDc6iJwHus hr5/r4K8gbKAu4SzfbqGtXu5iLZ5uIu3d7ePuHe3kLl3t5C5d7eQuXe3kLl3t5C5d7eQuXe3kLl3 t5C5d7eQuXe3kLl3t5C5d7eQuXe3kLn/pzEi/6wzMf+5KzbqzCY20uEmQcHvLFqw7TNuoeE9f5XX TYyN0F6WictrnYbHdKKDxHqmf8N9qXzBgKt6wIKseb+ErXe+hq91vomwc72MsXO9jbFzvY2xc72N sXO9jbFzvY2xc72NsXO9jbFzvY2xc72NsXO9jbFzvY2xc72NsXO9jbH/qS4h/7MqK/LFIizW3hwt w+0jR7L5K12i7DZvleJCfYvaUoiF1GCQgtBsln7Mc5t7yneeeMl7oHbIfqJ0x4Cjc8aCpHHFhKVw xIembsSKp27Di6duw4unbsOLp27Di6duw4unbsOLp27Di6duw4unbsOLp27Di6duw4unbsOLp27D i6f/rCog+r0fItzZEhvF6xoztPojSqP5Ll6V7jxtiuVJeYPfVoJ+2mSJetZsjnbTcZFz0nWUcdB5 lW/Pe5dtzn6YbM6AmWvNgppqzYSbacyHnGjMiJxozIicaMyInGjMiJxozIicaMyInGjMiJxozIic aMyInGjMiJxozIicaMyInGjMiJz/th4Y5NAOE8jpESC1+Rs3pf8mS5f6NFyL8UJogupPcnzlW3p3 4WR/ct5qg27ccIZs23SIatl3iWjZeYtn2HyLZtd+jGXWgI1k1oKOY9WFj2LVhY9i1YWPYtWFj2LV hY9i1YWPYtWFj2LVhY9i1YWPYtWFj2LVhY9i1YWPYtWFj2LVhY/pxw0MytoLD7f3EiSn/x05mP8r SYz+OleD9klhfPBVaXXsXm9u6WN0audpd2flbnll5HJ7Y+N1fGLid31h4nl+YOF7f1/hfX9f4H+A XuCCgV3fg4Fd34OBXd+DgV3fg4Fd34OBXd+DgV3fg4Fd34OBXd+DgV3fg4Fd34OBXd+DgV3fg4HL 0AkDuuILE6j/FCaa/yE3jf8xRYT/QFB8/E5YdPhXX230XWRn8mJnY/BoamHubGxf7XBtXe1yb1zs dW9b7HdwWut5cVrrenFZ6nxyWOp/cljqf3NY6n9zWOp/c1jqf3NY6n9zWOp/c1jqf3NY6n9zWOp/ c1jqf3NY6n9zWOp/c1jqf3P/nDga/5pGLf+XUUH/mlNP/pxVXvWcWmzsm1965Jlnh9yWcZLVk3uc z5CEpMuOjKvIipCwxYeUtMOEmLfCgZu5wX+eusF9orvAe6a8wHmrvb94sr27eLO9u3izvbt4s727 eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s73/nDga/5pGLf+XUUH/mlNP/pxVXvWc Wmzsm1965Jlnh9yWcZLVk3ucz5CEpMuOjKvIipCwxYeUtMOEmLfCgZu5wX+eusF9orvAe6a8wHmr vb94sr27eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s73/nDga /5pGLf+XUUH/mlNP/pxVXvWcWmzsm1965Jlnh9yWcZLVk3ucz5CEpMuOjKvIipCwxYeUtMOEmLfC gZu5wX+eusF9orvAe6a8wHmrvb94sr27eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4 s727eLO9u3izvbt4s73/nDga/5pGLf+XUUH/mlNP/pxVXvWcWmzsm1965Jlnh9yWcZLVk3ucz5CE pMuOjKvIipCwxYeUtMOEmLfCgZu5wX+eusF9orvAe6a8wHmrvb94sr27eLO9u3izvbt4s727eLO9 u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s73/nDga/5pGLf+XUUH/mlNP/pxVXvWcWmzs m1965Jlnh9yWcZLVk3ucz5CEpMuOjKvIipCwxYeUtMOEmLfCgZu5wX+eusF9orvAe6a8wHmrvb94 sr27eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s73/nDga/5pG Lf+XUUH/mlNP/pxVXvWcWmzsm1965Jlnh9yWcZLVk3ucz5CEpMuOjKvIipCwxYeUtMOEmLfCgZu5 wX+eusF9orvAe6a8wHmrvb94sr27eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727 eLO9u3izvbt4s73/nDga/5pGLf+XUUH/mlNP/pxVXvWcWmzsm1965Jlnh9yWcZLVk3ucz5CEpMuO jKvIipCwxYeUtMOEmLfCgZu5wX+eusF9orvAe6a8wHmrvb94sr27eLO9u3izvbt4s727eLO9u3iz vbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s73/nDga/5pGLf+XUUH/mlNP/pxVXvWcWmzsm196 5Jlnh9yWcZLVk3ucz5CEpMuOjKvIipCwxYeUtMOEmLfCgZu5wX+eusF9orvAe6a8wHmrvb94sr27 eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s73/nTga/5pFLv+X UEH/m1FP/51UXfWeWGvsnV155JtkhtyYbpLVlXic0JKBpMuPiavHjY+xxYmTtcOFl7jCgpq6wX+e u8B9or2/e6e+v3mtvrt4sb62ebK+tnmyvrZ5sr62ebK+tnmyvrZ5sr62ebK+tnmyvrZ5sr62ebK+ tnmyvrZ5sr7/nTga/5pFLv+YT0D/nVBO/59SXPagVWrtoFp45Z9ghd2capHWmHOb0JV9pMuShavH j42xxIyRtsKHlbnBg5m7v3+dvr59or+9eqjAvHmvwbR5sMGwerDAsHqwwLB6sMCwerDAsHqwwLB6 sMCwerDAsHqwwLB6sMCwerDAsHqwwLB6sMD/nTca/5tFLv+ZTkD/nk5O/6FQW/eiU2nuo1d35qJd g96fZo/XnG+a0Zh5o8uVgqvHkomxxI6PtsKJk7q/hJi9vYCdwLx9o8K7e6rEtHqtxK17rsOqe6/B qnuvwap7r8Gqe6/Bqnuvwap7r8Gqe6/Bqnuvwap7r8Gqe6/Bqnuvwap7r8H/njca/5tELv+aTUD/ n01N/6JOW/ekUWjvpVV156Vagt+jYo3YoGuY0px1ocyZfqnIlYawxJKNtsGMkbu+hpa/vIGcw7p+ pMW3fKvHrXurxqd8rcSkfa7DpH2uw6R9rsOkfa7DpH2uw6R9rsOkfa7DpH2uw6R9rsOkfa7DpH2u w6R9rsP/njca/5tELv+bTED/oExN/6RNWvimT2fwqFN06KhXgOCnXozapGiW06Fxn86deqfJmYOv xZWKtcGPj7u9iZXBuoWdxLaCpMewgKrIp32qyKJ+rMWff67Dn3+uw59/rsOff67Dn3+uw59/rsOf f67Dn3+uw59/rsOff67Dn3+uw59/rsP/njca/5tELv+cSz//oUpM/6VLWfmoTmbxqlFz6atVf+Kr W4rbqWWU1aZunc+jd6XKn4CsxZmGtL+TjLy4jZPBsomZxa6GociqhKnJoYCpypyBrMabga3Em4Gt xJuBrcSbga3Em4GtxJuBrcSbga3Em4GtxJuBrcSbga3Em4GtxJuBrcT/njYa/5xELv+cSj//oklM /6ZKWfmpTGXxrE9x6q5UfeOvWYjdrmKR1q1rmtGqdaLLpX2rwZ2DtLmWibyykZDBrIyWxqeJncij h6bKm4Ooy5iDq8eWhK3FloStxZaErcWWhK3FloStxZaErcWWhK3FloStxZaErcWWhK3FloStxZaE rcX/njYa/5xDLv+dST//o0hL/6dJWPqrS2Tyrk5w67FSe+SzV4XftGCO2bNqltGxdZ7GqHurvKCB tLOah7yslI3CppCUxqCNm8mci6TLloeoy5OHq8iSh6zFkoesxZKHrMWSh6zFkoesxZKHrMWSh6zF koesxZKHrMWSh6zFkoesxZKHrMX/nzYa/5xDLv+eSD//o0dL/6hIV/utSWPzsExv7LRQeea4VoPh u16L2rtqks20c57Bq3mqt6R/tK6dhLymmIrBoJSRxpqRmMmWj6HLkYyozI+KqsiOiqzGjoqsxo6K rMaOiqzGjoqsxo6KrMaOiqzGjoqsxo6KrMaOiqzGjoqsxo6KrMb/nzYa/5xDLv+eRz7/pEZK/6pG VvyuSGL0s0tt7rhPd+i9VX/hwV6G1sBsjsi3cZ29rneqsqd9tKmhgruhnIjBmpiPxpSWlsmQlJ/L jJKozIqPqsmKjqzGio6sxoqOrMaKjqzGio6sxoqOrMaKjqzGio6sxoqOrMaKjqzGio6sxoqOrMb/ nzYa/5xDLv+fRj7/pUVK/6tFVfywRmH2tklr8LxOdOfCVXvfyGGA0cNqjcS6cJ24snWprat7s6Ol gLuboYbBlJ2NxY6blMiKmZ3Khpmoy4aUqsmGkqvGhpKrxoaSq8aGkqvGhpKrxoaSq8aGkqvGhpKr xoaSq8aGkqvGhpKrxoaSq8b/nzUa/51CLv+gRT3/p0RJ/61DVP6zRF/3ukdo78FNcOXJVnXczmR6 zMZpjb6+bpyytnSop7B5sp6rfrqVpoTAjqOLxIihkseEn5rJgJ+nyoGaqsiCmKvGgpirxoKYq8aC mKvGgpirxoKYq8aCmKvGgpirxoKYq8aCmKvGgpirxoKYq8b/oDUa/51CLv+hRD3/qEJI/69BU/+2 Ql33vkZl7MdNa+PSWG3W02F6x8pnjLnCbZusvHKnobZ3sZixfbmPrYK+iKqJw4KokMZ9p5nIeqel yXuiq8h9nqzGfZ6sxn2erMZ9nqzGfZ6sxn2erMZ9nqzGfZ6sxn2erMZ9nqzGfZ6sxn2erMb/oDUa /51CLv+iQjz/qkBH/7I+Uf26QFnzw0Rg6M9OY9/cWWfP2GB5wM9mirLIa5qmwnCmm7x2r5G4e7eJ tYG8grKHwH2wjsN4rpbFdq2hxnWsrMZ3pq3Fd6atxXemrcV3pq3Fd6atxXemrcV3pq3Fd6atxXem rcV3pq3Fd6atxXemrcX/oDQa/55BLv+kQDv/rD1F/7U7Tve/PlXsy0RZ4dpPWtTfUWzG2lp9uNNi i6vOaZifxnGklcB3rY67frSHt4O5gbSHvXyyjL95sZPBdrCbwnSwpsJysK3CcrCtwnKwrcJysK3C crCtwnKwrcJysK3CcrCtwnKwrcJysK3CcrCtwnKwrcL/oTMa/55BL/+nPTr/sDpD/bo4SvDGO0/j 1UVO1eFGX8jiS3G63VKBrNVbj5/MZpuWxnCkj8B4q4q8f7GEuYO1gLeHuHy2i7t5tJC8d7SXvXa0 ob10s6W+dLOlvnSzpb50s6W+dLOlvnSzpb50s6W+dLOlvnSzpb50s6W+dLOlvnSzpb7/ojMa/6A+ Lv+qOTf/tDU/9sA1ROfPOUXX3zxQyedBZLvlRnas3E6Fn9NakpXMZ5yOxnGkisJ5qoW/fq6AvIKy fbqGtHq5irZ3uI64dbeTuXO3mrlzt6C5c7eguXO3oLlzt6C5c7eguXO3oLlzt6C5c7eguXO3oLlz t6C5c7eguXO3oLn/ozIa/6M6LP+uNDT+ujE67cowO9rdMj/K5zhVvOw9aa3lRHmf206HlNNcko3M aJuIyHKhhMR5poDCfap8wIGteb6Fr3e9iLB0vIuycruQs3C7lbRvupq0b7qatG+6mrRvupq0b7qa tG+6mrRvupq0b7qatG+6mrRvupq0b7qatG+6mrT/pDAa/6c1Kv+0LzD0wyox3tgrLczmLkW98jVa re47bJ/kRHuT21GHi9RekIbPapiCy3Odfsh4oXrGfKR3xICmdcODqHPChqlxwYmrb8CNrG3Akq1s v5WtbL+VrWy/la1sv5WtbL+VrWy/la1sv5WtbL+VrWy/la1sv5WtbL+VrWy/la3/pS8a/60tJfy8 Jyjl0CEkzuQkM77xLEqu+DNdoO09bZPkR3qK3VSFg9dhjH/SbJJ7z3KXd813mnTLe5xyyn6ecMmB oG7IhKFtx4eia8aKo2nGjqRoxZGlaMWRpWjFkaVoxZGlaMWRpWjFkaVoxZGlaMWRpWjFkaVoxZGl aMWRpWjFkaX/pywa/7UlH+zJGhzQ4hkhv/AiOK/9K02g+DVek+5BbInmTXeB4FiAfdxkhnjYa4tz 1XGOcNN1kW7SeZNs0XyUatB/lmnPgpdoz4WYZs6ImWXNjJpkzY6aZM2OmmTNjppkzY6aZM2OmmTN jppkzY6aZM2OmmTNjppkzY6aZM2OmmTNjpr/riQW9cEXFNTfDhDA7xgmsP0jPKH/LU6U+TpdifFH aIHrUnF65l14dOJkfXDfa4Ft3XCEatx0hmjbeIhm2nuJZdl9imTYgIti2IOMYdaFjWDWiY5f1YuO X9WLjl/Vi45f1YuOX9WLjl/Vi45f1YuOX9WLjl/Vi45f1YuOX9WLjl/Vi47+uRYN1NILBsLuDhax /Bkqov8lPZT/MkyJ/EBZgfZNYnrwWGlz7F9vbOlkc2jnanZm5W95ZORzemLjdnxh43l9YOJ7fl/h fn5e4YB/XeCDgFzghYFb34iBW9+IgVvfiIFb34iBW9+IgVvfiIFb34iBW9+IgVvfiIFb34iBW9+I gVvfiIHUyAkDxNcKB7L7EBmj/xwrlf8oO4r/OEiB/0VSevxSWnL3WWBr9F5kZvJkaGLwaWpg7m1s Xu1xbVztdG5b7HZvWux5cFnre3FY631xWOp/clfqgnNW6YRzVumEc1bphHNW6YRzVumEc1bphHNW 6YRzVumEc1bphHNW6YRzVumEc1bphHPEzQgBtN0IC6T/EhqX/x8qi/8uNoH/PUF5/0pJcf9SUGn/ WFVj/V1YX/tjW1z5Z11a+GtfWPduYFf3cWFW9nRhVfZ2YlT1d2NT9XljU/R8ZFL0fmRR9IBlUfSA ZVH0gGVR9IBlUfSAZVH0gGVR9IBlUfSAZVH0gGVR9IBlUfSAZVH0gGX/ljMU/5VDJf+SUTf/l1NF /5lXU/2ZW2D1mGFt7ZVoeeWScoTfj3yO2oyFltWHi5zRg5Chz4CVps19mqnLe56rynmhrcl3pa/I damwx3Suscdzs7LGc7qywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1 u7L/ljMU/5VDJf+SUTf/l1NF/5lXU/2ZW2D1mGFt7ZVoeeWScoTfj3yO2oyFltWHi5zRg5Chz4CV ps19mqnLe56rynmhrcl3pa/Idamwx3Suscdzs7LGc7qywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuy wXW7ssF1u7LBdbuywXW7ssF1u7L/ljMU/5VDJf+SUTf/l1NF/5lXU/2ZW2D1mGFt7ZVoeeWScoTf j3yO2oyFltWHi5zRg5Chz4CVps19mqnLe56rynmhrcl3pa/Idamwx3Suscdzs7LGc7qywXW7ssF1 u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7L/ljMU/5VDJf+SUTf/l1NF/5lX U/2ZW2D1mGFt7ZVoeeWScoTfj3yO2oyFltWHi5zRg5Chz4CVps19mqnLe56rynmhrcl3pa/Idamw x3Suscdzs7LGc7qywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7L/ ljMU/5VDJf+SUTf/l1NF/5lXU/2ZW2D1mGFt7ZVoeeWScoTfj3yO2oyFltWHi5zRg5Chz4CVps19 mqnLe56rynmhrcl3pa/Idamwx3Suscdzs7LGc7qywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7 ssF1u7LBdbuywXW7ssF1u7L/ljMU/5VDJf+SUTf/l1NF/5lXU/2ZW2D1mGFt7ZVoeeWScoTfj3yO 2oyFltWHi5zRg5Chz4CVps19mqnLe56rynmhrcl3pa/Idamwx3Suscdzs7LGc7qywXW7ssF1u7LB dbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7L/ljMU/5VDJf+TUTf/l1NF/5lWUv2Z W2D1mGBt7ZZneeWTcYTfkHuO2o2EltWIipzRhJCiz4CVpsx9manLe52syXmhrsh3pa/Idqqxx3Su ssdztLLEdLqyv3W6sr91urK/dbqyv3W6sr91urK/dbqyv3W6sr91urK/dbqyv3W6sr91urL/ljMU /5ZDJf+VUDf/mVFE/5tUUv6cWF/1m11s7ZlkeOaWbIPfk3aN2o+AltSMiJ3Rh46jzYOTqMuAmKvJ fZyuyHqhscZ4pbLGd6q0xXWwtcV0uLW9d7i1uHe4tbh3uLW4d7i1uHe4tbh3uLW4d7i1uHe4tbh3 uLW4d7i1uHe4tbh3uLX/lzMU/5ZDJf+WTjf/mk9E/51SUf6eVV72nlpq7pxgdueaZ4LglnKM2pJ7 ldSOhJ3QioujzYaRqcqClq3Ifpuwxnugs8V5prXEd6y2w3azt753t7e3eLa4snm2uLJ5triyeba4 snm2uLJ5triyeba4snm2uLJ5triyeba4snm2uLJ5trj/mDMU/5dDJf+XTTf/m01D/59QUP+gU133 oFhp759ddeidZIDhmm6L25Z3lNWRgJzQjomjzImPqcmEla7HgJqyxX2gtcN6p7fCeK65wHe1ubh4 tbmxebW5rHq1uax6tbmserW5rHq1uax6tbmserW5rHq1uax6tbmserW5rHq1uax6tbn/mDMU/5hD Jf+YTDb/nExD/6BOT/+iUVz4o1Vo8KJbdOmhYX/inmqJ3Jpzk9aVfJvRkYWjzIyMqcmHk6/Ggpmz w36gt8J6qLnBeLG7uXizvLF5s7urerS7p3u1uqd7tbqne7W6p3u1uqd7tbqne7W6p3u1uqd7tbqn e7W6p3u1uqd7tbr/mTMU/5hDJf+ZSzb/nktC/6FMTv+kT1v5pVNm8aVYcuqkXn3jomaH3Z5wkdeZ eJnSlYGhzY+JqcmKka/Fg5i0wn+fuL18p7u6erC9snqyvqt7sr2mfLO8o320uqN9tLqjfbS6o320 uqN9tLqjfbS6o320uqN9tLqjfbS6o320uqN9tLr/mTMU/5hDJv+ZSjb/n0pC/6NLTv+mTln6qFFl 8qhWcOuoXHvlp2KF36NsjtmfdZfTmn6fzZOGqMWNja+/h5S1uYOcubV/o7yxfay+rHyxv6V8sb+h frO9nn60u55+tLuefrS7nn60u55+tLuefrS7nn60u55+tLuefrS7nn60u55+tLv/mTMU/5lDJv+a STX/oEhB/6RJTf+nTFj6qlBk86tUbu2sWnnmrGCC4Kppi9qmc5TPn3ydxpeDqL6QirC4i5G2soaY uq2DoL2pgai/pYCwwJ9/sMCcgLK9moGzu5qBs7uagbO7moGzu5qBs7uagbO7moGzu5qBs7uagbO7 moGzu5qBs7v/mjMU/5lDJv+bSDX/oUdB/6VITP+pSlf7rE5i9a9SbO6wWHbosV5/37BoiNWsdJDK o3qdwJuBqLiUh7Cxj462q4qVu6aHnb6ihaXAn4SvwZmBr8GXgrK+lYOzvJWDs7yVg7O8lYOzvJWD s7yVg7O8lYOzvJWDs7yVg7O8lYOzvJWDs7z/mjMU/5lDJv+cRzX/okZA/6dHS/+rSVb9r0xg9rJR au60V3Plt1583bZqg8+vcpDFpnidu55+p7KYhbCrk4u2pY6Tu5+Lmr6biaLBmIiswpOFr8KShrG/ kYazvJGGs7yRhrO8kYazvJGGs7yRhrO8kYazvJGGs7yRhrO8kYazvJGGs7z/mjMU/5lCJv+cRjT/ o0VA/6hFSv+tR1X+sUpf9bVQaOu5VnDjvV532btqgMuycJDAqXadtqJ8p62cgq+ll4m2npOQu5mP mL6UjaDBkYypwo2KrsKNibG/jYmyvY2Jsr2NibK9jYmyvY2Jsr2NibK9jYmyvY2Jsr2NibK9jYmy vY2Jsr3/mzMU/5pCJv+dRTT/pEQ//6pESf+vRVP8tEld8rlPZem+Vmzhw2By075pgMa1bo+7rXSc sKZ6p6eggK+fm4a1mJeOu5OVlb6Okp3BipKnwoiQrsKIjrDAiI2yvYiNsr2IjbK9iI2yvYiNsr2I jbK9iI2yvYiNsr2IjbK9iI2yvYiNsr3/mzMU/5pCJv+eRDP/pUI+/6tCSP+xRFL6t0ha8L1OYebE VmfeyWJtzsFnf8G5bY62sXKbq6p4pqKlfq6ZoIS1kp2Luoyak76HmJvAhJekwoKWr8KDk7DAhJGy voSRsr6EkbK+hJGyvoSRsr6EkbK+hJGyvoSRsr6EkbK+hJGyvoSRsr7/mzMU/5pBJv+fQjP/pkA9 /61AR/+0Qk/3u0dX7cNNXeTMWGDZzWBsycVmfry9a42wtXGapa92pZyqfK2TpoK0jKKJuYagkL2B npm/fZ6iwXuer8F9mbDAf5ayvn+Wsr5/lrK+f5ayvn+Wsr5/lrK+f5ayvn+Wsr5/lrK+f5ayvn+W sr7/nDMU/5pBJv+gQTL/qD88/7A+Rf+3QU30wEVT6slOVuLVWlfS0V5rxMlkfbbBaoyqu2+Zn7V0 pJaweqyNrICyhqmHt3+njrt6ppa+d6Wgv3Smrb93obG/ep2yvnqdsr56nbK+ep2yvnqdsr56nbK+ ep2yvnqdsr56nbK+ep2yvnqdsr7/nTMU/5tBJv+iPzH/qjw6/7M8Qvu7PknwxkRN5tJPTdzcV1bM 1V1qvs1je7DHaIukwW2Xmbxzoo+4eKqGtH6wf7KFtXmwjLh0r5W7ca6fvG6vq71xqrO8dKWzvHSl s7x0pbO8dKWzvHSls7x0pbO8dKWzvHSls7x0pbO8dKWzvHSls7z/nTMU/5tAJv+kPDD/rTk4/7Y5 P/XBPEPpzkRE3t1NR9LgU1jF21xot9NheqnNZomcyGuVkcRxn4jAdqd/vX2teLuEsXO6i7RvuJS3 bLeduGq3qLlptra4ba+1uW2vtbltr7W5ba+1uW2vtbltr7W5ba+1uW2vtbltr7W5ba+1uW2vtbn/ njIU/50+Jf+nOS7/sTY1+7w2Ou3JOjzg2kQ60uJHTMfiTV653lRurNlbfJ/UYoiU0GiTisxvm4LH d6J8w36odsCErHK+iq9vvJGxbbyYsmu7obNqu62yZ7q2tGe6trRnura0Z7q2tGe6trRnura0Z7q2 tGe6trRnura0Z7q2tGe6trT/nzIU/6A6JP+qNCz/tTIx88MyM+PUODDT4Tw/xuhCUrnlSGOs4k1y n99Uf5PZXYqJ0meTg81wmn3Jd594xn2kdMSDp3DCiKluwY6rbMCUrGq/m61pv6WtaL+urWi/rq1o v66taL+urWi/rq1ov66taL+urWi/rq1ov66taL+urWi/rq3/oDAU/6M2Iv+vMCj7vC0r6M0sKNXg MDDH6ThEuew+V6zpRWee50t1kuBTgInZXomC1GiRfNBxlnjMd5t0yn2ecMiCoW7Hh6NrxYulacSQ pmjElqdmw56oZcOlqGXDpahlw6WoZcOlqGXDpahlw6WoZcOlqGXDpahlw6WoZcOlqGXDpaj/oS8U /6gvH/+1KiLwxiQh2N0jIMjpLTW68jVJrPE8Wp7wQ2mS6Ex1iOFVf4HbYYd712qNdtNxkXLRd5Vv z3yXbM2AmmrMhZtoy4mdZsqNnmXJkp9jyZigYsieoWLInqFiyJ6hYsieoWLInqFiyJ6hYsieoWLI nqFiyJ6hYsieoWLInqH/oy0U/64pGvi/IBre1hgTyegiJbr0Kzqs+DRNnvc8XJLxRmmI6VBzf+NZ e3rfZIJ03GuGcNlxim3Wdo1q1XuPaNN/kWbSg5Jk0YeUY9GKlWHQj5Zgz5SXXs+ZmF7PmZhez5mY Xs+ZmF7PmZhez5mYXs+ZmF7PmZhez5mYXs+ZmF7PmZj/pygS/7cfEubOEQ3L5hUWu/QhKqz+Kz6e /zROkvo/XIjySmZ/7FVveehedXLkZHtu4Wt+at9wgWjedYRl3HmFY9t9h2LagYhg2oSJX9mHil3Y i4tc15CMW9aUjVvWlI1b1pSNW9aUjVvWlI1b1pSNW9aUjVvWlI1b1pSNW9aUjVvWlI3/sB4L7cYO CM3bCwi78xUarP8hLp7/LD+S/zdNh/1EWH/2T2F48Vloce1fbWrrZHFn6Gp0ZOdvd2LldHlg5Hh6 X+N7e13jfnxc4oF9W+GEflrhiH9Z4IyAWOCPgVjgj4FY4I+BWOCPgVjgj4FY4I+BWOCPgVjgj4FY 4I+BWOCPgVjgj4HzvQ0EzM8JAb3lDAys/xcenv8kL5L/Lz2H/z1Jf/9JUnj8VFpw+FpfafRfZGTy ZWdh8GppXu9ua1zucm1b7XZuWux5b1jsfHBX635wVuuBcVXqhHJU6ohzU+mLdFPpi3RT6Yt0U+mL dFPpi3RT6Yt0U+mLdFPpi3RT6Yt0U+mLdFPpi3TMxggAvdQIA631Dg+f/xofk/8nLYj/NDl+/0JD d/9NSm7/U1Bn/1lVYvxeWF77ZFtb+WhdWfhsXlf3cGBW93NhVfZ2YlT1eGJT9XtjUvR9ZFH0gGRQ 84NlT/OGZk/zhmZP84ZmT/OGZk/zhmZP84ZmT/OGZk/zhmZP84ZmT/OGZk/zhma9ywYArtsGBJ// EBCT/x0diP8qKH7/ODJ2/0Q6bf9LQWX/UUZf/1dJW/9dTFj/Yk5V/2ZQU/9qUVL/bVJQ/3BTT/9y VE7/dVRN/3dVTf95VUz+e1ZL/n5XSv2BV0r9gVdK/YFXSv2BV0r9gVdK/YFXSv2BV0r9gVdK/YFX Sv2BV0r9gVf/jS0O/4w+Hf+KTC7/klM7/5RXSP+VXFT9k2Jg9ZFqa++NcnbpiXx/5IWEhuCAi43c fJGS2nmXlth2nJnVc6Cb1HGlndNvqZ/Sbq6g0m2zodFsuaLRa8CjzWzFo8huxqLIbsaiyG7Goshu xqLIbsaiyG7GoshuxqLIbsaiyG7GoshuxqL/jS0O/4w+Hf+KTC7/klM7/5RXSP+VXFT9k2Jg9ZFq a++NcnbpiXx/5IWEhuCAi43cfJGS2nmXlth2nJnVc6Cb1HGlndNvqZ/Sbq6g0m2zodFsuaLRa8Cj zWzFo8huxqLIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLIbsaiyG7GoshuxqL/jS0O/4w+Hf+KTC7/ klM7/5RXSP+VXFT9k2Jg9ZFqa++NcnbpiXx/5IWEhuCAi43cfJGS2nmXlth2nJnVc6Cb1HGlndNv qZ/Sbq6g0m2zodFsuaLRa8CjzWzFo8huxqLIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLIbsaiyG7G oshuxqL/jS0O/4w+Hf+KTC7/klM7/5RXSP+VXFT9k2Jg9ZFqa++NcnbpiXx/5IWEhuCAi43cfJGS 2nmXlth2nJnVc6Cb1HGlndNvqZ/Sbq6g0m2zodFsuaLRa8CjzWzFo8huxqLIbsaiyG7GoshuxqLI bsaiyG7GoshuxqLIbsaiyG7GoshuxqL/jS0O/4w+Hf+KTC7/klM7/5RXSP+VXFT9k2Jg9ZFqa++N cnbpiXx/5IWEhuCAi43cfJGS2nmXlth2nJnVc6Cb1HGlndNvqZ/Sbq6g0m2zodFsuaLRa8CjzWzF o8huxqLIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLIbsaiyG7GoshuxqL/jS0O/40+Hf+MTC7/lFM7 /5VWR/+WW1T9lWFg9pJoa++PcHXpi3p/5IeDh9+Cio3cfpCS2XqWl9Z3m5rVdKCd03Kln9JwqaHR bq6i0G20o9BsuqTQbMKkym7EpMRvxKTEb8SkxG/EpMRvxKTEb8SkxG/EpMRvxKTEb8SkxG/EpMRv xKT/ji0O/44+Hf+OSy7/lVE6/5hUR/+YWFP+mF5f9pVkau+SbHXpjnZ+5IqAh9+Fh47bgI6U2HyU mNV5mpzTdp+f0XOkotBxqqTPb6+lzm62ps5tvafKbsKnw3DCp71xwqe9ccKnvXHCp71xwqe9ccKn vXHCp71xwqe9ccKnvXHCp71xwqf/jy0O/44+Hv+QSi3/l086/5lRRv+bVlL+mlte95hhafCVaHTq kXF+5I58ht+JhI7bg4uU13+SmtR7mJ7Sd56h0HSkpM5yqqbNcLGozW+5qctvwanDccGpvHLAqrdz wKq3c8Cqt3PAqrdzwKq3c8Cqt3PAqrdzwKq3c8Cqt3PAqrdzwKr/jy0O/48+Hv+SSi3/mE05/5tP Rf+dU1H/nVhc+JteaPGZZXLqlW185JF3ht+MgY7bh4mV1oGQmtN9lp/QeZ2jznWjps1yq6nMcLOq y2+9q8Vyv6u9c7+stnS+rLF1vq2xdb6tsXW+rbF1vq2xdb6tsXW+rbF1vq2xdb6tsXW+rbF1vq3/ kC0O/5A+Hv+TSS3/mUw5/51ORP+fUVD/n1Zb+Z5cZvKcYnHrmGl75ZRzhOCPfY3bioaU1oSNm9J/ laDPepylzXajqMtzq6vKcbWtxnG+rb50va62db2usHa9rqx3va6sd72urHe9rqx3va6sd72urHe9 rqx3va6sd72urHe9rqx3va7/kC0O/5A+Hv+VSSz/m0o4/55MQ/+hT0//olRa+qFZZfOgX2/snWZ5 5phvg+CTeYzbjoKT1oeKm9KBkqHPfJqmyniiqsd1q63Dc7Svv3O8sLd1vLCwd7uwqni7sKd5vLCn ebywp3m8sKd5vLCnebywp3m8sKd5vLCnebywp3m8sKd5vLD/kS0O/5E+Hv+WSCz/nEg3/6BKQv+j TU3/pFJY+6VXY/SkXW3uoWN36J5rgOKYdYnckn6S04yHmsyGj6HGgJenwXyerL15pq+5dq+xt3a6 sq93urKqebqypXq6sqJ7u7Gie7uxonu7saJ7u7Gie7uxonu7saJ7u7Gie7uxonu7saJ7u7H/kS0O /5E+Hv+YRyz/nUc3/6FIQf+lS0z/p1BW/KhVYfWoW2vtp2F05aRpft6fc4fUmH2Qy5GEmsSKjKK+ hJOouICarbR8orCwequzrXm1tKh6ubSke7m0oH25s519urOdfbqznX26s519urOdfbqznX26s519 urOdfbqznX26s519urP/ki0O/5I+Hv+YRiv/nkY2/6NHQf+nSUv/qk5V+qtTXvKsWWjprGBx4qlo etmlc4PNnHqPxZWBmr2OiKK3iJCpsYSXrqyAn7Gofqe0pX2xtaF9uLadfri1mn+5tJmAurOZgLqz mYC6s5mAurOZgLqzmYC6s5mAurOZgLqzmYC6s5mAurP/ki0O/5I+Hv+ZRSv/n0Q1/6RFQP+pSEn/ rExT+K5SXO+wWGXmsV9t3rBpdtKpcYLIoHiPv5h+mreShaKwjIypqoiUrqSFnLKggqS1nYGutpqA t7eXgbe2lYK5tJSCubOUgrmzlIK5s5SCubOUgrmzlIK5s5SCubOUgrmzlIK5s5SCubP/ky0O/5I9 Hv+aRCr/oEM1/6ZEPv+rRkj/rktR9bJQWey1V2Hkt15p2rRpc82sb4LCpHaPuZx8mbGWg6KqkYqp o4yRrp6JmbKZh6G1loWrt5OFtreRhLe3kIW4tZCFubSQhbm0kIW5tJCFubSQhbm0kIW5tJCFubSQ hbm0kIW5tJCFubT/ky0O/5M9Hv+bQyr/okI0/6hCPf+tRUb8sUpP8rVPVum6Vl3hvWBk1Lhncsiv bYG9p3SOtKB6mauagKKklYepnZGOrpeOlrKSi5+1j4qot4yKs7iLibe3i4i4tYuIubSLiLm0i4i5 tIuIubSLiLm0i4i5tIuIubSLiLm0i4i5tIuIubT/ky0O/5M9Hv+cQSr/o0Az/6lBPP+vREX6tEhM 8LpOU+e/VlnewmBgz7tmccOzbIG4q3KOrqR4mKWefqGemoSol5aMrpGTlLKMkZy1iI+mt4WPsbiF jra3ho24toeMuLWHjLi1h4y4tYeMuLWHjLi1h4y4tYeMuLWHjLi1h4y4tYeMuLX/lCwO/5Q9Hv+d QCn/pD4y/6s/O/+xQkL4uEdJ7b5OT+XGV1Paxl5fy75kcb62aoCzr3CNqal2mKCjfKGYn4KokZuJ rYqZkrKFlpq1gZWkt3+Vrrd+lLe3gZG3toKQuLWCkLi1gpC4tYKQuLWCkLi1gpC4tYKQuLWCkLi1 gpC4tYKQuLX/lCwO/5Q9Hv+ePyj/pj0x/60+Of+0QUD0vEZF68RNSeLOWEvTylxexsJjcLm6aH+u tG6Mo650l5qpep+SpYCniqGHrISfj7F/nZe0e5yhtnibrLd3m7e2epe4tXyVubR8lbm0fJW5tHyV ubR8lbm0fJW5tHyVubR8lbm0fJW5tHyVubT/lSwO/5U9Hv+gPSf/qDsw/7A8N/24PzzxwURA6MtO Qt7TVUrOzVtdwMZhbrS/Z36ouW2KnbRylZSveJ6Lq36lhKiFqn2mjK94pJWydKOftHGjqrVwo7i1 c565tHabubN2m7mzdpu5s3abubN2m7mzdpu5s3abubN2m7mzdpu5s3abubP/liwO/5c8Hv+iOib/ qjku/7M6NPm9PDjuyEM549VQN9faUkjI0llcustfba3FZXyhwGuJl7pwk422dpyEs3yifbCDqHeu iqxyrZOvbqydsWusqLJprbaybKi7sW+ju7Fvo7uxb6O7sW+ju7Fvo7uxb6O7sW+ju7Fvo7uxb6O7 sW+ju7H/lywO/5o7Hf+kNyX/rTYr/7c3MPPDOjHm0EMw3N9KNc/fUkfB2Fhas9Fea6bLY3qax2mG j8JukIa/dJh9vHqfdrqBpHC4iahrt5KraLecrWW3p65kt7SuZbO9rmitva5orb2uaK29rmitva5o rb2uaK29rmitva5orb2uaK29rmitva7/mCwO/505HP+nNCP/sTMo+b0yKurLNync3T4p0ONGOsXi TUu43lVarNlcaJ7TYneSz2eCiMttjH7Jc5R2x3macMWBn2rEiaJmw5KlYsOcp2DDpqhfw7SoX8HC qGG6walhusGpYbrBqWG6walhusGpYbrBqWG6walhusGpYbrBqWG6wan/mSwO/6A1Gv+qMSD/ti4j 8MUtIt/YMxzQ4zouxOhCQLjlSVCr4U5fnt5VbJLbXHeH2GOBftVqiXbUcY9v0XmUa86AmGfMiJtk ypCdYsmYn2DJoaBfyaugX8m5n1zIw6JcyMOiXMjDolzIw6JcyMOiXMjDolzIw6JcyMOiXMjDolzI w6L/mywO/6QwGP+vLBv4vicb5NEmF9HiLSDE6zczt+s+RarpRVSe50xikuVSbobjWHh94GB/dtxp hnDYcYtr1XiPaNN/kmXRhpRiz42WYM6UmF7Om5ldzaOaXM2tmlvNt5pbzbeaW823mlvNt5pbzbea W823mlvNt5pbzbeaW823mlvNt5r/nSwO/6grFP+3JBXryhwR0+AeE8TrKya38TQ4qvA8SZ3vRFeR 7ktjhu1SbX3oW3V142J8cOBrgWvdcoVo2niIZNl+i2LXhI1f1YqOXtSQkFzTlZFa05ySWdKkk1jS rJNY0qyTWNKsk1jSrJNY0qyTWNKsk1jSrJNY0qyTWNKsk1jSrJP/oSsN/68jD/TCFwzW3RAHxese GLf2KSup9zM8nfY8S5H3RFiG9k1iffBWanbrXnFu52R2auRrembicn1k4HeAYd99gl/egoRd3YeF W9yMhlrbkYdY2paIV9mdiVbZo4pW2aOKVtmjilbZo4pW2aOKVtmjilbZo4pW2aOKVtmjilbZo4r/ qCMJ/bkWB9bRCwPG6hALtvceHan9KS6c/jQ+kP8+S4b+R1Z9+FFedvNZZW7wX2po7WVuZOprcmHp cXRf53Z2XeZ7eFvlf3lZ5IR6WOOIfFfjjH1W4pF+VOGXf1PhnH9T4Zx/U+Gcf1PhnH9T4Zx/U+Gc f1PhnH9T4Zx/U+Gcf1PhnH//sRUD1McJAcbWCgO29xIPqP8fIJv/KzCQ/zY9hf9ASH3/S1F1/VRY bflaXWf2YGJj82ZlX/JrZ1zwcGla73RrWO54bFftfG5V7IBvVOyEcFPriHFS64xxUeqRclDplXNQ 6ZVzUOmVc1DplXNQ6ZVzUOmVc1DplXNQ6ZVzUOmVc1DplXPWvgcAxcsIALfbCQWo/xQSm/8iIZD/ Li6F/zk6fP9EQ3T/Tkps/1RQZf9aVGD9X1hd+2VaWvpqXFf5bl5V+HJfVPd2YFL2eWFR9n1iUPWA Y0/0hGRO9IdkTfOMZUzzkGZM85BmTPOQZkzzkGZM85BmTPOQZkzzkGZM85BmTPOQZkzzkGbEwgYA ttEHAKjtCwab/xcTkP8lH4X/MSp8/zw0c/9GO2r/TEFj/1NGXv9ZSVr/XkxW/2NOVP9oUFL/bFFQ /29ST/9yU07/dlRM/3lVS/98VUr+f1ZJ/oJXSP2GWEf9ilhH/YpYR/2KWEf9ilhH/YpYR/2KWEf9 ilhH/YpYR/2KWEf9ili2yQQAqNkEAZv/DgeP/xoRhf8nG3v/MyRx/zwsaP9DMmH/Sjdb/1A7Vv9W PVP/XEBQ/2BBTv9kQ0z/aERK/2tFSf9uRkj/cUZH/3RHRv92SEX/eUhE/3xJQ/+ASUL/g0pC/4NK Qv+DSkL/g0pC/4NKQv+DSkL/g0pC/4NKQv+DSkL/g0r/gigJ/4I5Fv+BSCX/ik8x/45WPf+PXEn/ jmNU/opqXviFcWjygHpw7nyDd+p4i33ndJKC5HGYheJvnYjhbaKL4Gunjd9prI7eaLGQ3We3kd1m vZHcZcWS3GXNktRm0ZLPaNKSz2jSks9o0pLPaNKSz2jSks9o0pLPaNKSz2jSks9o0pL/gigJ/4I5 Fv+BSCX/ik8x/45WPf+PXEn/jmNU/opqXviFcWjygHpw7nyDd+p4i33ndJKC5HGYheJvnYjhbaKL 4Gunjd9prI7eaLGQ3We3kd1mvZHcZcWS3GXNktRm0ZLPaNKSz2jSks9o0pLPaNKSz2jSks9o0pLP aNKSz2jSks9o0pL/gigJ/4I5Fv+BSCX/ik8x/45WPf+PXEn/jmNU/opqXviFcWjygHpw7nyDd+p4 i33ndJKC5HGYheJvnYjhbaKL4Gunjd9prI7eaLGQ3We3kd1mvZHcZcWS3GXNktRm0ZLPaNKSz2jS ks9o0pLPaNKSz2jSks9o0pLPaNKSz2jSks9o0pL/gigJ/4I5Fv+BSCX/ik8x/45WPf+PXEn/jmNU /opqXviFcWjygHpw7nyDd+p4i33ndJKC5HGYheJvnYjhbaKL4Gunjd9prI7eaLGQ3We3kd1mvZHc ZcWS3GXNktRm0ZLPaNKSz2jSks9o0pLPaNKSz2jSks9o0pLPaNKSz2jSks9o0pL/gigJ/4M5Fv+D RyX/jE4x/5BVPf+RW0j/kGFT/o1oXviIb2jyg3hw7X6CeOl6in7mdpGD5HOXh+JwnYrgbqKM32un jt1qrJDdaLKR3Ge4k9tmv5PbZseU2WbQlM9o0JPLadCUy2nQlMtp0JTLadCUy2nQlMtp0JTLadCU y2nQlMtp0JT/gygJ/4M5F/+GRiT/jk0w/5NUPP+UWEf/kl5T/5BlXfiMbWfyhnVw7YF/eOl9h37l eY+E4nWViOBym4zeb6GP3WynkdxrrJPbabOU2mi6ltlnw5bZZs2X0GnOlshqzpfEa82XxGvNl8Rr zZfEa82XxGvNl8RrzZfEa82XxGvNl8RrzZf/hCgJ/4Q5F/+IRST/kUww/5VRO/+WVkf/lVxS/5Ni XPmPambzinJw7YV7eOmAhH/le4yF4neTit9zmo7dcKCR222mlNprrZbZabSX2Gi9mNhnyJnRacyZ yWvMmcJszJq9bcuavW3Lmr1ty5q9bcuavW3Lmr1ty5q9bcuavW3Lmr1ty5r/hSgJ/4U5F/+KRCT/ k0sv/5dPOv+YVEb/l1lQ/5ZgW/mSZ2Xzjm9v7ol4d+mDgX/kfoqF4XmRi951mI/ccZ+T2m6mlths rpjXaraa1mjBm9Npy5vKa8ubwm3KnLtuyp24b8qduG/Knbhvyp24b8qduG/Knbhvyp24b8qduG/K nbhvyp3/hSgJ/4Y5F/+MRCP/lUov/5lNOv+aUUT/mlZP/5ldWvqWZGT0kmtu7o10dumHfn7kgYeF 4HyPi913l5Dbc56V2G+mmNZsr5rVarmc1GnGnctsyZ3DbcmevG/In7VwyJ+yccifsnHIn7JxyJ+y ccifsnHIn7JxyJ+yccifsnHIn7JxyJ//hicJ/4Y5F/+OQyP/l0ku/5pLOf+cT0P/nVRO/5xaWPua YGL1lmhs75FvdeqLeX7lhYOF4H+MjN15lZHZdJ2W1HClmtBurp3NbLefy2vDoMNux6C7b8ehtXHG oa9yxqGsc8ahrHPGoaxzxqGsc8ahrHPGoaxzxqGsc8ahrHPGoaxzxqH/hycJ/4c5F/+QQiP/mEct /5xJOP+fTEL/oFFM/6BXVvueXmD0m2Vq7ZZsc+eQdnzhioCE24SJi9N+kZLOeJmYyXShnMZxqZ/C cLKiwG+9o7pwxaOzcsWkrnPFpKl0xaOmdcWjpnXFo6Z1xaOmdcWjpnXFo6Z1xaOmdcWjpnXFo6Z1 xaP/hycJ/4g4F/+RQSL/mkUs/55HNv+hSkD/o1BK/qNVVPaiXF3voGJn6JxpcOGWdHnakH2C0YmG i8qCjZPFfZWZwHmdnrx2paG4c62ktXK4pbJyw6asdMOmp3bDpqN3xKWheMSloXjEpaF4xKWheMSl oXjEpaF4xKWheMSloXjEpaF4xKX/iCcJ/4g4F/+TQSL/m0Qs/6BFNf+jST//pU5I+6dUUfOmWlvr pWBk46Jobdydc3bRlXqCyY2Ci8KHipO8gpGat32Zn7J6oaOvd6mmq3azp6l2wKikd8KooXnCp516 w6ebesOmm3rDppt6w6abesOmm3rDppt6w6abesOmm3rDppt6w6b/iCcJ/4k4F/+VQCH/nUIr/6JE NP+lSD3/qExG+KpST++rWFfnq19g4KhpadShcHXLmXiBwpJ/i7uLhpS1ho6ar4KVoKp+naSme6an o3qwqaB5vKqdesGpmnzBqZh9wqiWfcKnln3Cp5Z9wqeWfcKnln3Cp5Z9wqeWfcKnln3Cp5Z9wqf/ iScJ/4k4F/+WPyH/nkEq/6NCM/+nRjv+q0tE9a5RTOywV1TksV5c261oZs+lbnXFnXWBvJZ8i7WQ g5SuioubqIaSoKOCmqWegKKom36sqph+uKuWfsCrlH/AqpOAwaiSgMKokoDCqJKAwqiSgMKokoDC qJKAwqiSgMKokoDCqJKAwqj/iScJ/4o4F/+YPyD/nz8p/6VBMv+qRTr8rklB8rFPSem1VlDht19X 1bFlZcqobHTAoXOAt5p6i6+UgZSoj4ibooqPoJyHl6WXhKColIKpqpGCtauPgr+rjoPAqo2DwamN g8GojYPBqI2DwaiNg8GojYPBqI2DwaiNg8GojYPBqI2Dwaj/iicJ/4s4F/+ZPiD/oT4o/6ZAMP+s Qzj5sUg/8LVORee6VUveu15U0LRkZcWsa3O7pHGAsZ54iqmYfpOik4Wam4+NoJaMlaWRiZ2ojYen q4qHsqyIh7+siIfAq4iGwKmIhsGoiIbBqIiGwaiIhsGoiIbBqIiGwaiIhsGoiIbBqIiGwaj/iicJ /4w3F/+bPR//oj0n/6g/L/+uQjb3tEc87bpNQeTAVkbZv1xTy7djZMCvaXO2qG9/rKJ1iqScfJOc mIOalZSKoI+RkqWKjpuoho2kq4OMr6yBjb2sgoy/q4OKwKmDisGpg4rBqYOKwamDisGpg4rBqYOK wamDisGpg4rBqYOKwan/iycJ/443F/+cPB//ozsm/6o9Lf+xQDP0uEU46r9MPOLHVUDTwlpSx7ph Y7uzZ3KwrW1+p6dziZ6hepKWnYCZj5qIn4mXkKSElJiof5OiqnySrat6krqse5HAq32Pwal+jsGo fo7BqH6Owah+jsGofo7BqH6Owah+jsGofo7BqH6Owaj/jCcJ/482Fv+dOh7/pTol/607K/y0PjDx vEM058VMNt7LUj/OxllRwr5gYra4ZnCrsWx9oaxyiJineJGQo36YiaCFnoKdjaN9m5aneJmfqXWY qqpzmberdJjAqneUwal4k8KoeJPCqHiTwqh4k8KoeJPCqHiTwqh4k8KoeJPCqHiTwqj/jCcJ/5E1 Fv+fOB3/pzgj/685KPm4PCzuwkIu5c1MLdjQTz3JyVdQvMNeYLC8ZG+lt2p8m7JwhpKtdo+KqXyW gqaDnHyki6F2opOlcqGdp2+gqKltoLWpbaDBqHCbwqdymcKncpnCp3KZwqdymcKncpnCp3KZwqdy mcKncpnCp3KZwqf/jSYJ/5Q0Ff+hNhv/qjYh/7M2JfW+OSfqyUAm4NZJKNHVTjzDzlZOtshcX6rC Y22fvWh6lLhuhIu0dI2DsXqUfK6BmnWsiJ5wq5Gia6mbpGippqZmqbOmZqrDpWmkxKVrocSla6HE pWuhxKVrocSla6HEpWuhxKVrocSla6HEpWuhxKX/jiYJ/5czFP+jNBr/rTMe/rgyIPDFNSDj0z8c 2N5FJsrbTTq901RMsM5bXaPJYWuYxGd3jcBsgYS9col8uniQdbh/lm+2h5pqtZCdZbSaoGKzpaFh tLGiYLXCoWKvxqJkq8aiZKvGomSrxqJkq8aiZKvGomSrxqJkq8aiZKvGomSrxqL/kCYJ/5sxEv+m MRf/sS4a974tGufOMRfZ3jkZzeNEKMLgTTi121NKqNVZWpzQX2iQzGVzhslrfX3GcYV1xHeLbsN+ kGnBhpRkwI+XYMCaml3ApZtbwLGbWsHBm1u8ypxdt8qdXbfKnV23yp1dt8qdXbfKnV23yp1dt8qd XbfKnV23yp3/kSYJ/58vEf+qLRT/tygV7cgmEtrcKQ7M5DYdweZALrbjSD6q4E5Mnt1WWZLaXWWI 1mNvftRqeHbScH9u0HeFaM9/iWPOh41fzpCQW82aklnNpZNXzrKTVs/Ck1bL0JRXxc+VV8XPlVfF z5VXxc+VV8XPlVfFz5VXxc+VV8XPlVfFz5X/kyYJ/6MsDv+wJg/1wB8N39UbB83kJxPB6zQjteo9 M6nnRUKd5UtQkeNSXIbiWGZ84F9udN9mdWzebXpm3nV/Yd19gl3choVa24+IWNmYilbYoYtU2KyL VNi3jFPYyYtT1taLU9bWi1PW1otT1taLU9bWi1PW1otT1taLU9bWi1PW1ov/lyQJ/6kmCv64HAnm zhEFzuMXCMDuJhe08DIoqO47OJztQ0aR7EtShuxSXHzrWWRz615raupkcGXobHVh5nR4XuR8e1vi g31Z4It/Vt+SgVXemoNT3qKDUt2qhFHdtoRR3b+EUd2/hFHdv4RR3b+EUd2/hFHdv4RR3b+EUd2/ hFHdv4T/nyEG/7AbBenFDQPQ2QsCwO4YDLP2Jhyn9TEsm/U7OpD1REeF9UxRfPVTWnP1WWBr819m ZfBmamHtbW1d63RwWup6c1jogXRW54d2VOaNeFPllHlR5Jt6UOShe0/jqnxO47B8TuOwfE7jsHxO 47B8TuOwfE7jsHxO47B8TuOwfE7jsHz/qBwC67wMAc3MCQDB4AwEsvoZEKX8JyCa/TIuj/09O4X+ RUV7/01Ocv9UVWv7Wlpk+GBfYPZnYlz0bWVZ8nJnV/F4aVXwfmpT74NsUe6JbVDtj25O7JRvTeua cEzroXFL6qZyS+qmckvqpnJL6qZyS+qmckvqpnJL6qZyS+qmckvqpnL3sw0AzMMIAL/RCACx7w4G pP8bE5n/KSGO/zQuhP8/OXv/R0Fx/05Iav9UTmP/WlJe/mBWWvxmWFf7bFpV+nFcU/l2XlH4el9P 939gTvaEYUz1iWJL9Y5jSvSUZEnzmmVI855mSPOeZkjznmZI855mSPOeZkjznmZI855mSPOeZkjz nmbNuwUAvccGALHYBwGj/xAImP8fFI3/LCCD/zcrev9BNHD/Rzto/01BYf9URVz/WklY/19LVf9l TVL/ak9Q/25RTv9yUkz/d1NL/3tUSf9/VUj+hFZH/ohXRv2NV0T9k1hE/JZZRPyWWUT8lllE/JZZ RPyWWUT8lllE/JZZRPyWWUT8llm9vwQAsM4EAKLgBgKX/xMIjP8iE4P/Lh15/zglbv8+LWb/RTJf /0w3Wf9SO1X/WD5R/11AT/9iQkz/ZkNK/2pESf9uRUf/ckZG/3ZHRf96SEP/fkhC/4JJQf+GSkD/ i0s//49LP/+PSz//j0s//49LP/+PSz//j0s//49LP/+PSz//j0uvxgIAotYCAJb3CgKL/xYHgv8k D3f/LRds/zMeY/86JFz/QihW/0ksUf9PL07/VTFL/1ozSP9eNUb/YjZE/2Y3Q/9pOEH/bDhA/3A5 P/9zOj7/dzo9/3s7PP9+PDr/gzw6/4Y9Ov+GPTr/hj06/4Y9Ov+GPTr/hj06/4Y9Ov+GPTr/hj3/ dSQG/3Y1EP93Qxz/gEon/4VSM/+GWT7/hWBI/4FoUv98b1r8d3li93ODaPRvjG7xbJNy72qade1n oHjsZaV662SqfOpir33pYbV+6GC7f+hfw4DnX8uB5l7VgeBg24HXYt6B1GPfgdRj34HUY9+B1GPf gdRj34HUY9+B1GPfgdRj34H/dSQG/3Y1EP93Qxz/gEon/4VSM/+GWT7/hWBI/4FoUv98b1r8d3li 93ODaPRvjG7xbJNy72qade1noHjsZaV662SqfOpir33pYbV+6GC7f+hfw4DnX8uB5l7VgeBg24HX Yt6B1GPfgdRj34HUY9+B1GPfgdRj34HUY9+B1GPfgdRj34H/dSQG/3Y1EP93Qxz/gEon/4VSM/+G WT7/hWBI/4FoUv98b1r8d3li93ODaPRvjG7xbJNy72qade1noHjsZaV662SqfOpir33pYbV+6GC7 f+hfw4DnX8uB5l7VgeBg24HXYt6B1GPfgdRj34HUY9+B1GPfgdRj34HUY9+B1GPfgdRj34H/diQG /3c1EP95Qhz/gkkn/4dRMv+IWD3/h19I/4NmUf9+blr7eXdi93WCafRxim7xbZJz7muZduxon3nr ZqR76mSqfeljr3/oYrWA52G8gedgxILmX86C41/Xg9xh24PSY92Dz2Tdg89k3YPPZN2Dz2Tdg89k 3YPPZN2Dz2Tdg89k3YP/dyQG/3g1EP98QRz/hUgn/4pPMv+MVj3/i11H/4dkUf+CbFr7fHRi93h/ afN0iG/wcJB07WyXeOtqnnvpZ6R+6GaqgOdksILmYraD5WG+hOVgx4XlYNOF3WLZhdNk3IXMZduG yWXbhsll24bJZduGyWXbhsll24bJZduGyWXbhsll24b/eCQG/3g1EP9+QBv/iEcm/41OMf+PVTz/ jltG/4tiUP+GaVn8gHFi93t7afN2hXDvco517G6VeeprnH3oaaOA52apguVlsITkY7eF5GLAh+Nh y4ffYtWH1WTah81l2YjGZ9mJxGfYicRn2InEZ9iJxGfYicRn2InEZ9iJxGfYicRn2In/eSMG/3k0 EP+APxv/ikYm/5BNMP+SUzv/kVpF/49gT/+KZ1n8hG5h9354afJ5gnDvdIt263CTe+ltm3/naqKC 5WephORlsIbjZLmI4mLDieJi0IrYZNiKzmbYisdn14vAaNaMvmnWjL5p1oy+adaMvmnWjL5p1oy+ adaMvmnWjL5p1oz/eSMG/3o0EP+DPhv/jUUl/5NML/+VUTr/lFdE/5JdTv+OZVj8iGth94J0afJ8 f3Dud4h263ORfOhvmYDma6GE5Giph+JmsYnhZLuL4GPHjNxj1IzPZtaMx2jVjcBp1I66atSOuGvU jrhr1I64a9SOuGvUjrhr1I64a9SOuGvUjrhr1I7/eiMG/3s0EP+FPRr/j0Qk/5ZKLv+XTjj/l1RC /5VaTP+SYVb8jmlf9odwaPKBenDte4V36naOfOZxl4HjbZ+G4Gqoid1nsIzaZruN1mXHjtFm1I/H aNOPv2rTkLlr0pGzbNKRsm3SkbJt0pGybdKRsm3SkbJt0pGybdKRsm3SkbJt0pH/eyMG/3w0Ef+I PBr/kkMk/5hILf+aTDf/mlJB/5lYSvyXX1T2k2Zd8I1uZuuHd2/mgIF24XuLfdx1k4PXcZyH0m6k i89rrI7MabWRyWjAksdoz5O/a9GTuGzQk7Jt0JStb9CTq2/Rk6tv0ZOrb9GTq2/Rk6tv0ZOrb9GT q2/Rk6tv0ZP/fCMG/300Ef+KOxn/lEEj/5pGLP+cSzX/nVA//51WSPibXVHxmGNb65NrZOSNdW3e hn512ICHfNF6j4PMdpeJx3KfjcRvp5HAbbCTvmy7lbtryJa2bc+WsG/Olqtwz5amcc+VpXLPlaVy z5Wlcs+VpXLPlaVyz5Wlcs+VpXLPlaVyz5X/fCMG/300Ef+MOhn/l0Ai/5xFK/+fSTT/oE48+6FU RfSgWk7snWFY5ZlpYd6Tc2rVjHt0zoWDfch/i4TCepOKvnabj7pzo5O2cauWs2+2mLFvwpitcM2Y qHLNmKRzzZigdM6Xn3TOl590zpefdM6Xn3TOl590zpefdM6Xn3TOl590zpf/fSMG/38zEf+OORj/ mT8h/55DKf+hRzL/o0w6+KVSQ/CkWEvoo19U4Z9oXdeYcGjOkXh0xoqAfcCEiIW6f4+LtXuXkLF3 n5StdaeXqnOxmadzvZulc8uboHXLmp12zJqad82ZmXfNmJl3zZiZd82YmXfNmJl3zZiZd82YmXfN mJl3zZj/fiIG/4AyEP+QOBj/mz8g/6BCKP+kRjD+pks49KhQQOypV0fkqV1Q3KVmWtCdbmjHlXVz v459fbmJhIWzg4yMrX+Tkal8m5WkeaSZoXetm553uZycd8icmXjKnJd5y5uVesyalHrMmZR6zJmU esyZlHrMmZR6zJmUesyZlHrMmZR6zJn/fiIG/4IyEP+SNxf/nD0f/6FAJ/+mRC77qUk18axPPOmu VUPhr11L1ahkWcuha2fCmXNzuZN6fbKNgYWsiImMpoSQkaGAmJadfaCamXyqnJZ7tp2Ue8SeknzK nZF9ypyPfcubj33Mmo99zJqPfcyaj33Mmo99zJqPfcyaj33Mmo99zJr/fyIG/4QxEP+TNhf/njwe /6M/Jf+oQiz4rUcy77BNOea0VD/ds1tJ0KxiWcakama8nXFytJd3fKyRfoWmjIaMoIiNkZqFlZaW gp6akoCnnY9/sp6NgMGejIDJnouAyp2KgMubioDLm4qAy5uKgMubioDLm4qAy5uKgMubioDLm4qA y5v/fyIG/4UwD/+VNhb/nzsd/6U9JP+rQSr1sEUv7LVMNOO6VDnYt1lIy69hWMGoaGa3oW9yr5t1 fKeVfISgkYOLmo2LkZSKk5aPh5uai4WlnYiEsJ+GhL6fhYXJnoWEyZ2FhMqchYTLm4WEy5uFhMub hYTLm4WEy5uFhMubhYTLm4WEy5v/gCIG/4cvD/+XNRb/oDoc/6c8Iv6tPyfzs0Qs6bpLMOG/UjXT ulhHx7NfV7ysZmWypW1xqZ9ze6GaeoSaloGLlJKIkY6PkJaJjJmahIqinYGKrZ9/irufforInn+J yZ2AiMqcgIjLm4CIy5uAiMubgIjLm4CIy5uAiMubgIjLm4CIy5v/gSIG/4kuD/+ZNRX/ojgb/6k6 IPuwPSTwuEIo5r9KKt3DTzTOvVZGwrZeVrewZWStqWtwpKRxepyfeIOUm36KjpeGkIiVjpWCkpaZ fpCgnHqPq554j7ifd5DJnnmOyp16jMube4zLm3uMy5t7jMube4zLm3uMy5t7jMube4zLm3uMy5v/ gSIG/4stDv+bNBT/pDcZ/6w4Hvi0OiHtvUAj5MZJI9fHTDPJwVVFvbpcVbK0Y2Oormlvn6lveZal doKOoXyJh52Dj4Gbi5R8mJSYd5edm3OWqJ1xlrWecJbGnXKUypx0ksubdZHLmnWRy5p1kcuadZHL mnWRy5p1kcuadZHLmnWRy5r/giIG/40sDf+dNBP/pjQY/681G/S4Nxzpwz4c4M1FH9HLSzLExVRD uL9bU625YWGitGhtma9ud5CrdICIp3qHgaSBjXuiiZJ1oJGWcJ6bmW2dpptqnbOcaZ7DnGucy5tu mMyab5fMmW+XzJlvl8yZb5fMmW+XzJlvl8yZb5fMmW+XzJn/gyEG/5ArDf+gMxH/qTIV/bMxF/C+ NBflyzsV2tQ/HcvPSTC+yVJCssRZUae/YF+cumZrkrZsdYmycn6Br3iFeqx/i3Sqh5BvqI+TaqeZ lmempJhkprGZY6fBmWSlzZhnoM2YaJ/Nl2ifzZdon82XaJ/Nl2ifzZdon82XaJ/Nl2ifzZf/hCEG /5MpC/+iMA//rS4S+LgsEuvGLxDg1TgL0to9HMXUSC64z1BArMpYT6DFXl2VwWRoi71qcoO6cHp7 t3aBdLV9h26zhYtoso6PZLGYkmGwo5ResLCVXbG/lV2x0JRgqtCUYajQlGGo0JRhqNCUYajQlGGo 0JRhqNCUYajQlGGo0JT/hiEG/5coCv+mLA3/sSgO8sAmDOPQKAfU3zILyd8+Gb3bRyyx1k89pNFW TJnNXFmOyWJlhMZobnvEb3Z0wXV8bcB8gmi+hIZjvY2JX7yXjFu8oo5ZvK+PWL2+jle+1I5ZttOP WrTTkFq005BatNOQWrTTkFq005BatNOQWrTTkFq005D/iCEG/5wnCP+qJwr8uCEJ6cobBdXeIATJ 5TAPvuM9HbThRiyo3k46nNpVSJHWW1WG02FgfNBnaXTObnBtzXV2Z8t8e2LLhH5eyo2CWsqXhFfK o4ZVyq+GVMu+hlPM1YZUxNmIVcHZiVXB2YlVwdmJVcHZiVXB2YlVwdmJVcHZiVXB2Yn/jR0F/6Il Bv+wHwXywhQD2dsOAcnmIAe96C8Usuc6IqflQzGb40o+kOFQSobfV1R83l5ddN1lZGzbbGpm23Rv Ydp8c1zZhHZZ2Y55VdmYe1Pao3xR2rB9UNu+fVDc03xQ1OB+UdDgf1HQ4H9R0OB/UdDgf1HQ4H9R 0OB/UdDgf1HQ4H//lRoD/6kfA/u6EgLUzQsAyeYPArztIAuw7S4Zpew5J5rrQjWP6klBhelQS3vo V1Ny6F1aaudjYGTnamVf53JpW+d6bFfngm5T54txUOeVck7on3RM6Kp1S+i1dkrnw3ZK6N12S+Tg dUvk4HVL5OB1S+TgdUvk4HVL5OB1S+TgdUvk4HX/nRYB/7ESAdPDCQDH0QoAu/IRBK/zIQ+j8y4d mfM5Ko7zQjaE80pBe/NSSXLzV1Bp81xWY/NjWl3zaV5Z83BhVfN3Y1Lzf2ZP8odnTfCPaUvvmGtK 76BsSe6pbUjus21H7cBuRu3Hbkbtx25G7cduRu3Hbkbtx25G7cduRu3Hbkbtx27/pw8A07oHAMXH BwC61gkArfoTBqL6IhKX+i8fjfs6K4P8QzV6/Uw+cf1RRWj9Vkth/ltPXP5iU1f+aFZU/W9YUft1 Wk76fFxM+YNdSviKX0j3kWBH9plhRvagYkX1p2NE9LFkQ/S1ZEP0tWRD9LVkQ/S1ZEP0tWRD9LVk Q/S1ZEP0tWTWsgQAxL4GALfMBgCs3AkBoP8WCJX/JRSL/zIfgv88KXn/RTJv/0o5Z/9PP1//VUNa /1tHVf9hSlL/Z0xP/2xOTf9yT0v/eFFJ/35SR/+EU0X/i1RD/5FVQv6YVkH9nldA/aZYQPypWED8 qVhA/KlYQPypWED8qVhA/KlYQPypWED8qVjGuAQAtsQEAKrTBQCe8g0ClP8aCYr/KBOB/zQdd/88 JW3/Qixl/0cyXf9NNlf/UzpT/1k9T/9fP0z/ZEFK/2lDSP9uREb/c0VE/3lGQv9+R0H/hEg//4pJ Pv+QSj3/lUs8/5xMPP+fTDz/n0w8/59MPP+fTDz/n0w8/59MPP+fTDz/n0y3vAMAqcsCAJzbAwCS /xACif8dCID/KhB1/zEYa/84H2L/PiRb/0QpVP9KLFD/US9M/1cySf9cM0b/YDVE/2U2Qv9pN0H/ bjg//3M5Pf93Ojz/fDs7/4I8Of+HPTj/jD03/5M+Nv+VPjb/lT42/5U+Nv+VPjb/lT42/5U+Nv+V Pjb/lT6qxAAAnNIAAI/nAgCG/xECfP8bBXH/JAto/ysRX/8yF1f/ORtR/z8eTP9GIUj/TSNF/1Il Qv9XJ0D/Wyg+/18pPP9jKjr/Zys5/2ssN/9vLDb/dC01/3guNP99LjL/gi8x/4gwMf+KMDH/ijAx /4owMf+KMDH/ijAx/4owMf+KMDH/ijD/aiQE/2kyCv9sPhT/dkYe/3tNKf98VTP/el09/3ZmRv9x bk3/bXlU/2qEWv5mjV/7Y5Vi+WGcZfhfomj3Xqhq9lyta/Vbs2z0Wrlu81nBbvNYyW/yWNRw71jg cOlZ5HDjWuZw3F3ocNxd6HDcXehw3F3ocNxd6HDcXehw3F3ocNxd6HD/aiQE/2kyCv9sPhT/dkYe /3tNKf98VTP/el09/3ZmRv9xbk3/bXlU/2qEWv5mjV/7Y5Vi+WGcZfhfomj3Xqhq9lyta/Vbs2z0 Wrlu81nBbvNYyW/yWNRw71jgcOlZ5HDjWuZw3F3ocNxd6HDcXehw3F3ocNxd6HDcXehw3F3ocNxd 6HD/aiME/2kxCv9uPhT/d0Ue/3xNKP9+VDP/fFw8/3lkRf9zbU7/b3hV/2uCWv1oi1/7ZZRj+WKb ZvdgoWn2Xqdr9V2tbPRcs27zWrpv8lnBcPJZynHxWNhx7FnhceZa5HHgXOdx2F3ocdhe6HHYXuhx 2F7ocdhe6HHYXuhx2F7ocdhe6HH/ayME/2oxCv9xPBT/ekMd/4BLKP+BUzL/gFo8/3xiRf93ak7/ cXRV/25/W/1qiWD6ZpJk+GSZaPZhoGv1X6dt816tb/Jcs3DyW7px8VrDcvBZzXPuWd1z6FridOFc 5XPZXuZz0F/ndNBf53TQX+d00F/ndNBf53TQX+d00F/ndNBf53T/bCME/2sxCv9zOxT/fUId/4JK J/+EUTL/g1k7/4BgRf97aE3/dHFV/3B8W/xsh2H5aJBm92WYafVjn2zzYaZv8l+scfFds3LwXLt0 71vFde9a0HXqWt924lzidttf5XXRYOZ2ymHld8ph5XfKYeV3ymHld8ph5XfKYeV3ymHld8ph5Xf/ bSIE/2wxC/92OhT/gEEd/4VIJ/+ITzH/h1c7/4ReRP9/Zk3/eG5V/3N5XPxuhGL5ao1n9meWa/Rk nm7yYqVx8WCsc+9etHXuXbx27lvHd+1b1njlXOB43F/jeNJg5HjLYeR5xGPjesRj43rEY+N6xGPj esRj43rEY+N6xGPjesRj43r/biIE/20xC/94OBP/gz8c/4lHJv+LTjD/i1U5/4hcQ/+DY0z/fWtU /3Z1XPxygGL4bYpn9WmUbPNmnHDxY6Rz72Gsde5ftHftXb557FzLeuhc3HreX+F60mHje8pi4nzE Y+J9vmXhfb1l4X29ZeF9vWXhfb1l4X29ZeF9vWXhfb1l4X3/biIE/24wC/97NxP/hj4c/4xFJf+P TC7/j1M4/41aQf+IYUv/g2lT+nxxW/d2fGLzcYdo8G2Qbe1pmXHqZqF16GOpeOZhsnrkYLt74l/H fOBf2n3UYuF9ymPgfsNk4H+9Zt+At2ffgLdn34C3Z9+At2ffgLdn34C3Z9+At2ffgLdn34D/byEE /28wC/9+NhL/iTwb/5BEJP+TTC3/k1I2/5JZQP+OYEn5iGZS9IJuWu98eWHrd4No53KMbuRtlXPg ap133WemetplrnzWY7h+02LDgNFi04HKZN+BwWXegrtn3YK1aN2DsGndg7Bp3YOwad2DsGndg7Bp 3YOwad2DsGndg7Bp3YP/cCEE/3IvC/+BNBL/jDsa/5NDIv+XSyv/l1E0/5ZXPfqTXUbzjmRP7ohr WOiCdWDjfH9o3neJbtlykXTTbpl50GuhfcxoqYDJZrKCx2W9g8Vly4TBZtyEuWjbhbNp24Wua9uF qWzbhals24WpbNuFqWzbhals24WpbNuFqWzbhals24X/cSEE/3QuCv+EMxH/jzoZ/5ZDIf+aSSn/ mk4y/JpUO/WYW0TulGJN549pVeGJc17bgnxm03yFb813jXXJcpV6xW+df8FspYK+aq2Fu2m4h7lp xIi3adiIsGvZiKts2YinbdmIo2/ah6Nv2oejb9qHo2/ah6Nv2oejb9qHo2/ah6Nv2of/cSAE/3Ys Cv+GMhH/kjoY/5lCIP+cRyf/nkwv+J5SOPCdWEDpml9J4pVnUtqPcFzRh3hmyoGBb8V8iXbAd5B8 u3SYgLdxoIS0b6mHsW2zia5sv4qsbM+LqG7Xi6Rv2IqgcNiKnXHZiZ1x2YmdcdmJnXHZiZ1x2Ymd cdmJnXHZiZ1x2Yn/ciAE/3grCv+IMBD/lDkX/5tBHv+fRSX9oUot9KJQNOyiVjzkoFxF3JtlT9KT bVzKjHVmw4Z9b72BhXa3fI19s3iUga51nIarc6WJp3Gui6Vwuo2jcMmNoHHVjZxz1oyadNaLl3TY ipd02IqXdNiKl3TYipd02IqXdNiKl3TYipd02Ir/cyAE/3oqCf+LLw//ljkW/50/HP+hQyP6pEgq 8aZOMeinVDjhp1xA1Z9iTsuYa1vDkXJmvIt6b7aFgnewgYl9q32RgqZ5mYaid6GKn3WrjZx0to6a dMWPmHXUjpV21Y2Td9WNknfWi5J31ouSd9aLknfWi5J31ouSd9aLknfWi5J31ov/cyAE/3wpCf+N Lw//mDgV/589G/+kQSH3qEYn7atMLeWtUjPcqlk/0KNhTcacaVq+lXBlto93b6+Kf3aphYZ9pIGO gp9+loebe56Ll3mojpR4s4+SeMGQkHnTkI961I+OetWNjHvWjIx71oyMe9aMjHvWjIx71oyMe9aM jHvWjIx71oz/dB8E/34oCf+OLg7/mzgU/6E8Gf+nPx/0q0Qk6q9KKeKzUS7Wrlc+y6dfTcGgZ1q5 mW5lsZN1bqqOfHajioN9noaLgpmDk4eUgJuLkH6ljo19sJCKfb2RiX7QkYh+04+IftSOh37VjYd+ 1Y2HftWNh37VjYd+1Y2HftWNh37VjYd+1Y3/dB8E/4AnCP+QLg7/nTcT/6M6GPypPRzxr0Ig57RI JN+3TizRsVU9x6peTL2jZVm0nWxkq5dzbqSTenaejoF8mIuIgpKHkIeOhZmLiYOijoaCrZCDgruR goLMkYKC05CCgtSPgoHVjYKB1Y2CgdWNgoHVjYKB1Y2CgdWNgoHVjYKB1Y3/dR8E/4ImCP+SLQ3/ nzYS/6U4FvmsOxrusz8d5blGH9q7SyvNtFQ8wq5cS7inY1ivoWpjppxxbZ+Xd3WYk358kpCGgoyN joeHipaLg4igjn+Hq5B9h7iRe4fJkXyH05B8htSPfYXVjX2F1Y19hdWNfYXVjX2F1Y19hdWNfYXV jX2F1Y3/dR8E/4QlCP+ULQz/oDUQ/6g2FPavOBfrtz0Y4r9FGdW+SSrIuFM7vbFbSrOrYleqpmhi oaFvbJmcdXSSmHx7jJWDgYaSi4aBkJSLfI6ejnmNqJB2jLWRdI3GkXWN05B2i9SPeInVjXiJ1Y14 idWNeInVjXiJ1Y14idWNeInVjXiJ1Y3/dh4D/4YkB/+XLAv/ojIP/6szEfKzNRPovDoT3sU/F9DB SCnEu1E5ubVZSK6wYFWlqmdhnKZta5SidHONnnp6hpuBgICYiYV7lpKJdpSbjXKTpo9vk7OQbpPD kG6T049wkdSOco7VjXKO1Y1yjtWNco7VjXKO1Y1yjtWNco7VjXKO1Y3/dx4D/4kiB/+ZLAr/pTAN /K4vDu+4MQ7kwzcN2co7FsvFRie/v1A4s7pYR6m1X1SfsGVflqxraY6ocnGGpXh4gKJ/fnqfh4N0 nY+Ib5uZi2yapI1pmrCOZ5vAjmeb1Y5pmNWNbJTWjGyU1oxslNaMbJTWjGyU1oxslNaMbJTWjGyU 1oz/eB4D/4whBv+dKwj/qCwK+LMqC+q/KwngzDIG0c45FcXJRSW5xE42rr9WRaO7XVKZtmNdkLJp Z4evcG+ArHZ2eal9fHOnhIFupY2FaaSXiGWjoopjo66MYaO+jGCk0otjoNeLZZzYimWc2IplnNiK ZZzYimWc2IplnNiKZZzYimWc2Ir/eh0D/48gBf+gKQf/rCcH8rgkBuXHJATZ1ScFy9M3E7/OQyOz ykw0p8VUQpzBW0+SvWJaibpoZIG3bmx5tHRyc7J7eG2wg31or4uBY66VhF+toIZdra2HW628h1qu 0IdcqtqHX6Xah1+l2odfpdqHX6Xah1+l2odfpdqHX6Xah1+l2of/fhoD/5QfBP+lJgX9sSAE7MEa A9/TFwHQ3CUExNk1ELjVQSGs0EsxoMxSP5XJWUyLxWBXgsNmYHrAbGdzvnNtbLx6c2e7gndiuop7 XrmUflq4n4BYuKyBVrm7gVW6z4FWtt6CWLDdgliv3YJYr92CWK/dgliv3YJYr92CWK/dgliv3YL/ hBcC/5kcAv+qHwP1uRUC3s0MANDfEgDF4CYFu982DrDdQB2k2UktmNVRO43RWEiDz15Se8xlWnPL a2FsyXJnZsh5bGHHgXBdxop0WcaUdlbFn3hTxqx5Usa7elHHz3lRxON6U7zifFO84nxTvOJ8U7zi fFO84nxTvOJ8U7zifFO84nz/ihQB/58YAf+wFAHYwwoAztEKAMTlFAG55CYIruQ0E6TiPyCZ4Ect j95POYXcVkR72l1Mc9lkVGzXa1pm1nJfYdV5ZFzUgmdY1ItqVdSVbVLUoG5Q1K1vTtW8cE3W0G9N 1ehwTszpck7M6XJOzOlyTszpck7M6XJOzOlyTszpck7M6XL/khEB/6cRANi5CQDLxggAwtUKALfq FgOs6icMouk0GJjoPiSN50cwg+ZOOnrlVENx5FpKaeRhUGTjaFVf43BZWuN4XFbjgF9T44liUOOT ZE3knWVL5KlnSuW2Z0nlxmdI5t9nSuDsZ0rf7GdK3+xnSt/sZ0rf7GdK3+xnSt/sZ0rf7Gf/nA0A 27EGAMq9BwC/ygcAtdoKAKrvGQWg8CgPlvA1G4zwPyaC8EcxefBOOXDvVEBo71pGYe9gS13vZ09Y 725SVO91VVHwfVdO8IVZS/CPW0jxmVxG8aNeRPKvX0Pyu19C88xgQfPnYEHz6GBB8+hgQfPoYEHz 6GBB8+hgQfPoYEHz6GDepwIAy7YFAL3BBQCyzwcAp+oNAZ33HAeU+CsSivg2HIH5QCZ4+kgvb/pN Nmf6Uzxg+lhAW/tfRFb7ZUdS+2xJT/xyS0v8eU1I/IFPRf2KUUP9k1JB/pxTP/6mVD3/sVX/4vAA SUNDX1BST0ZJTEUAAwo9/rxWPP7NVjz+zlY8/s5WPP7OVjz+zlY8/s5WPP7OVjz+zlbOsAIAvboE ALHHBACl1gcAm/0QApH/IAmI/y0SgP85G3b/PyNt/0UqZf9LMF7/UTVY/1c4U/9dO0//Yz5M/2hA Sf9uQUb/dUND/3xEQP+ERj3/jEc8/5RIO/+dSTr/pUo5/61LOP+5Szj/uUs4/7lLOP+5Szj/uUs4 /7lLOP+5Szj/uUu+tQIAsMACAKTOAwCX3gUAj/8UAob/Iwh9/y4Qc/81GGr/PB5i/0IkW/9IKFX/ TixQ/1QvTP9aMUj/XzNF/2Q1Qv9qNj//cDc9/3Y5O/98Ojn/gzs4/4s8Nv+TPTX/mj40/6E+M/+q PzP/qj8z/6o/M/+qPzP/qj8z/6o/M/+qPzP/qj+xugEAo8gAAJbWAACL9AkBg/8WAnn/IAZv/ygM Z/8wEl//NxdY/z4bUv9EH0z/SiJI/1AkRP9VJkH/Wic+/18pO/9kKjr/aSs4/24sNv90LTT/ei4z /4EvMf+IMDD/jzAu/5YxLf+eMi3/njIt/54yLf+eMi3/njIt/54yLf+eMi3/njKkwgAAls8AAIjf AACA/wwBdf8SAmr/GANi/yEHWv8pC1P/MQ9N/zgSSP8+FUP/RBc//0oZPP9PGjn/Uxs3/1gcNf9c HTP/YR4x/2UfMP9qIC7/cCAt/3YhK/98Iir/giMo/4gjJ/+QJCf/kCQn/5AkJ/+QJCf/kCQn/5Ak J/+QJCf/kCT/YCUE/1swBv9hOg3/akEW/29KH/9xUin/b1sy/2tkOv9nbkH/ZHpH/2CETP9djlD/ WpZT/1ieVv9XpVj/Vata/1SxW/9Tt1z/Ur5d/lHHXvxR0V/7UOBf+FDpX/NR7V/uU/Bf6FTxX+RW 8l/kVvJf5FbyX+RW8l/kVvJf5FbyX+RW8l//YCUE/1swBv9iOQ3/bEAW/3FJH/9yUSn/cVoy/21j Ov9obUH/ZXhH/2GDTf9ejVH/W5ZU/1mdV/9XpFn/Vqpb/1WxXP9Ut13+U79e/VLHX/xR02D6UOJg 9lHpYPFS7mDrVO9g5VbxYOFX8mDhV/Jg4VfyYOFX8mDhV/Jg4VfyYOFX8mD/YSUE/1wwBv9lOA3/ bj8V/3RHH/91UCj/dFgx/3BhOv9rakH/Z3ZI/2OBTf9gi1L/XZRV/1qcWP9Yo1r/V6pc/lawXv1U t1/9U79g/FPJYfpS1mL4UeRi81LqYu1U7mLmVu9i4FjwYttY8WPbWPFj21jxY9tY8WPbWPFj21jx Y9tY8WP/YiUE/10vBv9nNg3/cT4V/3dGHv94Tij/d1Yx/3RfOv9uaEH/anNI/2Z+Tv9iiVP/X5JW /1ybWv9aolz+WKle/VewYPxVt2H7VMBi+1PKY/lT2mT1UuZk71TrZOhW7mThWO9k2VnwZdNa8GbT WvBm01rwZtNa8GbTWvBm01rwZtNa8Gb/YiQE/14vBv9qNQ3/dDwV/3pEHv98TCf/e1Qw/3dcOf9y ZUH/bG9I/2h7Tv9khlP/YJBY/12ZW/5boV79Wahg/FiwYvtWuGP6VcFk+VTNZfdT3mbyVOdm6lbr ZuJZ7mbaWu5n0VvvaMxc8GjMXPBozFzwaMxc8GjMXPBozFzwaMxc8Gj/YyQE/18uBv9tMwz/dzoU /31CHf+ASib/f1Iw/3xbOP93Y0H/cGxI/2x3T/9nglT/Y41Z/WCWXPxdn1/6W6di+FmuZPdYtmb1 V8Bn9FbLaPFV3WjtVulp41nsaNpb7WnQXO5qyV3ua8Ve7mvFXu5rxV7ua8Ve7mvFXu5rxV7ua8Ve 7mv/ZCME/2EtBv9wMgz/ezgU/4FAHP+ESSX/hFEu/4FZN/98YUD/dmlI/3BzT/tsf1X4aIla9mSS XvNhm2HxX6Nk8F2rZu5bs2jsWrxq6lnHa+hZ2GvkWehr2lvrbM9d7W3IXuxuwl/sbr5g7G++YOxv vmDsb75g7G++YOxvvmDsb75g7G//ZSME/2QrBv9zMAz/fjYT/4U/G/+JSCT/iU8t/4ZXNv+CXj78 fGZG+HZwTvRxe1XwbYVa7WmOX+pll2PoYp9m5mCnaeNer2vhXbls4FzEbd5c027ZXeZuzl7rb8Zf 6nG/YepxumLpcrZj6XK2Y+lytmPpcrZj6XK2Y+lytmPpcrZj6XL/ZiME/2cpBv93Lgv/gjUS/4k+ Gv+NRyL/jU4r/4xVM/yIXDz2g2RF8XxsTex3d1TocoFa5G6KYOFqk2TdZpto2mSja9ZirG7TYLVw 0F+/cc5fzXLLX+JzxGHoc71i6HS3ZOd0smXndK9m53SvZud0r2bndK9m53SvZud0r2bndK9m53T/ ZyIE/2onBf96LAr/hjQR/409Gf+RRSD/kk0o/ZFTMfaOWjrwiWFC6oNpS+V+dFPgeH1a2nOGYNRu j2bQa5dqzGifbslmp3HHZK9zxGO5dcJixnbAYtp3umTmd7Nl5XeuZuV3qmjld6ho5neoaOZ3qGjm d6ho5neoaOZ3qGjmd6ho5nf/ZyIE/20mBf99Kgr/iTQQ/5E8F/+VRB7/l0sm+JZSLvGUWDbqkF4/ 5IpnSN2EcVDVfXlaz3iCYcpzimfGb5JswmyacL9qonO8aKp2uWe0eLZmwHm0ZtB6sWfjeqto43qn auN6o2vkeaFr5Hmha+R5oWvkeaFr5Hmha+R5oWvkeaFr5Hn/aCEE/28kBf+AKQn/jDMP/5Q7Fv+Z Qxz9m0kj9JtPKuyZVTPlllw73pFlRdSJbVDMg3Zax31+YcF4hmi9dI5tuHGWcrVunXWxbKZ4rmuv e6xqu3yqacp9qGrhfaNs4nyfbeJ8nG7ie5pu43uabuN7mm7je5pu43uabuN7mm7je5pu43v/aSED /3EjBf+CKAn/jzIO/5c7FP+cQhr5nkYg8J9MJ+ifUi7gnVo21pVhRM2Oak/GiHJZv4J6Yrl9gmi0 eYpusHaSc6xzmneocKJ6pW+rfaJutn6gbcV/nm7bf5tv4H6YcOF+lnHhfZRx4nyUceJ8lHHifJRx 4nyUceJ8lHHifJRx4nz/aSED/3QiBP+FKAj/kTEN/5o6Ev+fPxf1okQd7KRKI+SkUCnboVc1z5pf Q8eTaE+/jHBZuId3YbKCf2itfoZuqXqOc6R3lnigdZ57nXOofppys4CXccCBlnLTgZNz34CRdOB/ kHTgfo904X2PdOF9j3ThfY904X2PdOF9j3ThfY904X3/aiED/3YgBP+HJwf/lDAM/505Ef2iPRXy pUEa6ahHH+CqTSXUpFQ0yp1dQsGXZU66kW1Ysot1YayGfGingoNuon+LdJ18k3iZeZt8lXelf5J2 r4GQdr2CjnbOgo133oGLd9+Ainjgf4p44H6KeOB+injgfop44H6KeOB+injgfop44H7/aiAD/3gf BP+JJgf/ljAL/583D/qkOhPvqT8X5q1FGtyuSiTPqFMzxqFcQb2bZE20lWtYrY9yYKeLeWihh4Fu m4OIdJeAkHiSfpl8jnyif4t6rYKIerqDh3rLg4Z73oKFe96BhXvfgIV74H+Fe+B/hXvgf4V74H+F e+B/hXvgf4V74H//ayAD/3oeBP+LJgb/mC8K/6E1DfenOBDsrTwT47JCFtexRyPLq1IywaVaQLif YkywmWlXqJRwYKGPd2ebi35uloiGc5GFjniMgpZ8iICfgIR/qoKBf7eDgH/IhH+A3YN/f96Bf3/f gIB+4H+AfuB/gH7gf4B+4H+AfuB/gH7gf4B+4H//bCAD/3wcA/+NJQb/mi4J/6MzC/SqNA3psTkP 37c/EtK0RiLHrlAxvahZP7OiYEurnWdWo5huX5yUdWeWkHxtkI2Dc4uKi3iGiJR8gYadgH6EqIJ7 hLWDeYTFhHiF3YN5hN6BeoPfgHqC4H96guB/eoLgf3qC4H96guB/eoLgf3qC4H//bR8D/34bA/+P JAX/nSwH/qYwCfCuMQvltjUL27w5Ec63RSDDsk8wuKxXPq+nX0qmoWVVnp1sXpeZc2aQlXpsipKB coWQiXeAjZF8e4ubf3eKpYJ0ibKDconCg3KK2oNzid6BdIffgHWG4H91huB/dYbgf3WG4H91huB/ dYbgf3WG4H//bx4D/4AbA/+SIwT/oCsG+qksB+2yLAfivDEH1cA2EMm7Qx++tk0utLBWPKqrXUmh pmRUmaJqXZGecWWKm3hrhJh/cX+WhnZ5k496dZGYfnGQo4FukK+CbJC/g2uR1YJtj96Bb43fgHCL 4H9wi+B/cIvgf3CL4H9wi+B/cIvgf3CL4H//cRwD/4MZAv+VIQP/oykF9q0nBei3JgTewyoD0MM1 DsS/QR25ukwtrrVUO6WwW0ebrGJSk6hpW4ulb2OFonZqfp98b3ichHRzmox5b5mWfGuXoX9ol62A Zpe8gWWY0YBmlt9/aJPgfmqR4X5qkeF+apHhfmqR4X5qkeF+apHhfmqR4X7/dRoC/4cYAv+YIAP/ piUD8rIgA+S+HgLXySICysczDb7DQByzv0orqbpTOZ+2WkWWsmFQja9nWYWsbWB+qXRneKZ6bXKk gnJtoop2aKGUeWSgn3xhn6t+X6C6fl+gzn5fn+F9YpvhfWOY4nxjmOJ8Y5jifGOY4nxjmOJ8Y5ji fGOY4nz/eBgC/4sXAf+dHQL9qx4C7LgXAd7IEQDPzR8CxMwwC7jIPhmtxUgoo8FRNpi9WEKPuV9N hrZlVn+za114sXJkcq95aWytgG5nrIlyYqqSdV+pnXhcqap6Wqm5elmqzHpYqeR6W6Tkel2h5Hld oeR5XaHkeV2h5HldoeR5XaHkeV2h5Hn/fRUC/5AUAf+hGAH2sRQA2cELANLPCwDI0hwBvNEuCbHO Oxemy0YlnMhPM5HEVj+IwV1JgL9jUni8allxunBfa7l3ZGa3f2lhtodtXbWRcFm1nHJWtKl0VLS4 dFO1y3RTteR0VLDndVas53VWrOd1VqzndVas53VWrOd1VqzndVas53X/gxIB/5YRAP+oEQDZuAoA zsQJAMfSCgC/2RkBtNgrB6nWORSf00QilNBNL4rNVDuByltEeMhiTXHHaVNrxW9ZZcR2XmDDfmJc wodmWMGRaFXBnGtSwahsUMG3bU/Cym1PwuRsT73sblC57G9QuexvULnsb1C57G9QuexvULnsb1C5 7G//iRAB/50OANqvCADNuwgAxMcHALzWCwCz3xoBqt8rB6DeORKW3UMejNpLKoLYUzV51Vo/cdNh RmrSaExl0W9SYNB2VlvQflpXz4ddU8+RX1DPnGFOz6ljTM+4Y0vQy2NM0OViSs7yZUvI8mZLyPJm S8jyZkvI8mZLyPJmS8jyZkvI8mb/kg0A3qYEAM60BgDCvwYAucwIALDdDACn5R0DnuUtC5TlORaK 5EIggeNKKnfiUDNv4Vg7aeBfQWPgZkZe325KWt91TlbffVFS34ZTT9+QVk3fm1dL4KdYSeC1WUjh xllI4d9ZR9/wWUbc9VtG3PVbRtz1W0bc9VtG3PVbRtz1W0bc9VvtnAQA0a0EAMK4BQC3wwUArdEI AKTtEAGb7SAFku0uDonsOhiA7EMhduxKKm7sUDFm61Y3YOtcPFvrZEBX62tDU+tyRlDreklN7INL SuyMTUjslk5F7aFQQ+2uUULuvFFB78xSQe/lUkDt8VFA7fFRQO3xUUDt8VFA7fFRQO3xUUDt8VHU pQAAxLIDALa8AwCryQUAoNgIAJf0EwGP9SQHh/UxD372Oxh09kIgbPZIJ2X2Ty1e91UxWfdbNVX3 YjhR92g7TfhvPUr4dj9H+H5BRPmHQ0L5kUVA+ptGPvqmRzz7sUg7+75JOvzPSTn840k5/ONJOfzj STn840k5/ONJOfzjSTn840nHrQAAt7cCAKrDAgCe0AQAk+MJAIz9GAKE/icHe/8xD3L/OBZp/0Ac Yv9GIlz/TSZW/1MqUv9ZLU7/XzBK/2UyR/9rNET/cTVB/3k3P/+BODz/ijo6/5M7OP+dPDb/pz01 /7E+NP++PjP/yj8z/8o/M//KPzP/yj8z/8o/M//KPzP/yj+4sgAAqr0AAJ3KAACR2AIAiPsNAX// GQJ2/yQGbv8tDGb/NRJf/zwXWP9DG1P/SR5O/08hSv9VJEb/WyZD/2AnQP9mKT7/ayo7/3IrOf95 LTb/gS40/4ovMf+UMDD/nDEu/6UyLf+vMyz/tzMs/7czLP+3Myz/tzMs/7czLP+3Myz/tzOruAAA nsUAAJDSAACD4AAAff8PAXL/FgJo/x4EYf8nCFr/LwxU/zcQTv8+E0n/RBZF/0oYQf9PGT7/VRs7 /1kcOf9fHTb/ZB40/2kfMv9wIC//dyEt/38iK/+HIyj/kCQn/5klJv+hJiX/pyYl/6cmJf+nJiX/ pyYl/6cmJf+nJiX/pyafwAAAkc0AAIPbAAB49gIAb/8NAWT/EgJc/xkDVP8gBE7/JwZI/y8IQ/82 Cj//PAw8/0IOOP9HDzX/TBAz/1ERMP9WEi7/WhMs/18UKv9lFCj/axUm/3EWI/95FyL/gRgg/4kY Hv+RGR3/lxkd/5cZHf+XGR3/lxkd/5cZHf+XGR3/lxn/VicE/1EyBf9WNQf/Xz0O/2RFFv9mTh// ZFgn/2FiL/9ebjX/Wnk7/1eEP/9Uj0P/UZhG/0+gSP9Op0r/Ta5L/0y1TP9LvE3/SsRO/0nOT/9J 3k//SOlQ/0jyUPxJ9lD3S/lQ8Uz6T+tO+1DqT/tQ6k/7UOpP+1DqT/tQ6k/7UOpP+1D/VicE/1Ey Bf9YNAf/YjsO/2dEFv9pTR//Z1Yn/2NgL/9gazX/XHc7/1iCQP9VjUT/U5ZH/1CfSf9Ppkv/Tq1N /020Tv9MvE//S8VQ/0rPUf9J4FH/SetR/knyUvlL91LzTflR7U/6UeZQ+lLlUPpS5VD6UuVQ+lLl UPpS5VD6UuVQ+lL/VycD/1IxBf9aMgf/ZDoO/2pCFv9sSx//alQn/2deL/9iaDb/XnQ8/1qAQf9X i0X/VJVI/1KdSv9QpUz/T61O/060T/9NvFH/TMVR/0vRUv9K4lP/Se1T+0vzU/VM91PuT/hT6FD5 U+FS+lTgUvpV4FL6VeBS+lXgUvpV4FL6VeBS+lX/WCYD/1QwBf9dMQf/ZzgO/21AFv9vSR7/blIn /2pcL/9lZjb/YXE8/119Qf9ZiEb/VpJJ/1ScTP9SpE7/UKtQ/0+zUf9Ou1L/TcRT/03PVP5M4FX7 TOtV+Ez0VfBP91XpUfhV4lL4VttU+VfZVPlX2VT5V9lU+VfZVPlX2VT5V9lU+Vf/WSYD/1cuBf9g Lwf/ajYN/3E+Ff9zSB7/clEm/29aLv9qYzb/ZW48/2F6Qv9dhUf/Wo9K/1eYTf9VoFD/VKhS/lKv U/1Rt1X8UMBW+k/LVvhP3Ff1T+lX8k/zV+pS9lfhU/dY2lX4WdFW+FrPVvhaz1b4Ws9W+FrPVvha z1b4Ws9W+Fr/WSYD/1osBf9kLQf/bjMN/3U9Ff94Rh3/d08l/3RYLf9wYDX/amo8/2Z2Qv9igUf+ XotL+1uUT/lZnVL4V6RU9lasVvVUtFfzU7xY8lPHWfBS1VrsUuZa6VPyWeFU9VvXVvZcz1f3XchZ +F3HWfhdx1n4XcdZ+F3HWfhdx1n4XcdZ+F3/WiUD/10qBf9nKgb/cjIM/3k7FP98RRz/fE0k/3pV LP91XjT/b2c8/GpyQvlmfUj2Y4dM81+QUPFdmVPvW6FW7VmoWOtYsFrqV7lb6FbDXOZW0VzjVuRc 31bwXdVX9V/MWfZgxlr2YMBb9mG+XPZhvlz2Yb5c9mG+XPZhvlz2Yb5c9mH/WyUD/2AoBf9rKAb/ dzAL/346E/+BQxr/gksi/39TKv97WzP5dmQ69XBuQfFseUjtaINN6mSMUedhlVXlX51Y412lWuFb rVzeWrZe3FnAX9pZzmDVWeJg0VnvYcpa9GLCXPRjvF30ZLde82S2X/Nktl/zZLZf82S2X/Nktl/z ZLZf82T/XCQD/2MmBP9vJgX/ey8L/4I5Ef+GQRj/h0kg/4VRKPiCWTDyfWA47XdqQOhydUfkbn9N 4WmIUt1mkVfZY5la1WChXdJfqGDPXbFizVy7Y8tcx2TJXNtlxV3rZb9d8ma4X/Fns2DxZ69h8Weu YvFnrmLxZ65i8WeuYvFnrmLxZ65i8Wf/XSQD/2YkBP9yJAX/fi4K/4c3EP+LPxb/jEcd+YtPJfKI Vi3sg1025n5nPuB4cUbbc3tN1W6DU9BqjFjMZ5RdyWWcYMZjo2PDYaxlwWC1Z79fwWi9X9BpumDm abVh72qvYu9qq2Pvaqdk72mmZfBppmXwaaZl8GmmZfBppmXwaaZl8Gn/XiMD/2kiBP92IwT/giwJ /4s2Dv+PPhT9kUUb9JFMIu2OUyrmiloy34VlO9d+bUXQeHZNy3R/VMZwh1rCbI9ev2mXYrtnn2W4 ZadotmSwarNju2uxY8psr2PhbKtk7W2mZu1so2ftbKBo7mufaO5rn2jua59o7mufaO5rn2jua59o 7mv/XyMD/2sgA/95IgT/hSsI/440DP+TPBL4lkMY75ZKHueVUCbgkVgu14phOs6EakXIfnNNwnl7 Vb51g1u5cYtgtW6SZLJsmmevaqNqrGisbKlntm6nZ8RvpWfab6Jo62+eaexvm2rsbplr7W2Ya+1t mGvtbZhr7W2Ya+1tmGvtbZhr7W3/XyMD/24eA/97IQT/iCoH/5EyC/+XOg/0mkEV65tHGuObTSHa llUtz49eOciJZ0TBg29Nu353VbZ5f1uxdodgrXOPZalwlmimbp9so2yobqBrsnCda8BxnGvScpps 6XGXbepwlG3rcJJu7G+Sbuxukm7sbpJu7G6Sbuxukm7sbpJu7G7/YSED/3AdA/9+IAP/iykG/5Ux CfubOA3wnj4R56BEFt+gSh3TmlIrypNcOMKNZEO7h21NtIJ0VK9+fFuqeoRhpneLZaJ0k2mecptt mnCkcJdvr3KVb7xzk2/Nc5Jw5nOQcOlyjnHqcY1x63CMcetwjHHrcIxx63CMcetwjHHrcIxx63D/ YyAD/3IbA/+AHwP/jicF/5cvCPieNgvtojsO5KVAEtqkRhzOnlEqxZdaN72RYkK1jGpMr4dyVKmC eVukf4Bgn3yIZZt5kGqXd5htk3WhcJBzrHONc7h0i3PJdYp04nSJdOhziHXpcod16nGHdepwh3Xq cId16nCHdepwh3XqcId16nD/ZR8D/3QaAv+DHgL/kCYE/5otBvShNAnppjcL4Ko9DtSnRBvJoU8p wJtYNriVYEKwkGhLqYtvU6OHdlqeg35gmYCFZZR9jWqQe5ZujHmfcYl4qXOGd7V1hHfFdoN433WD eOh0gnjpc4J46nGCeOpxgnjqcYJ46nGCeOpxgnjqcYJ46nH/Zx0D/3cZAv+FHAL/kyQD/50rBfGk MAbmqjMI3K43DM+qQxrFpU4ovJ9XNbOZX0GrlGZKpJBtU56LdFqYiHtgk4WDZY6Ci2qKgJNuhn6c cYJ9p3R/fLN1fXzDdnx923Z8feh0fXzoc3186XJ9fOpxfXzqcX186nF9fOpxfXzqcX186nH/aRwC /3kYAv+HGwL/lSMD+6ApBO6oLATjry8F17I0C8utQRnBqEwnt6NVNK+dXUCnmWRJn5RrUpmQclmT jXlfjoqAZImHiGmEhZFtgIOacXyCpHR5gbF2d4HAdnaB1nZ2ged0d4Hoc3iA6XJ4f+pxeH/qcXh/ 6nF4f+pxeH/qcXh/6nH/axsC/3sXAv+KGgH/mCEC+KMmA+qsJwPftCkD0rUyCsewQBi8rEsms6dT M6qiWz6inWNImplpUZSVcFiOkndeiI9+ZIONhml+io5teomYcXaHonNzhq51cYa9dm+H0nZwh+h0 cYXoc3KE6XJzhOpxc4TqcXOE6nFzhOpxc4TqcXOE6nH/bRkC/34WAf+NGAH/mx4B9KciAuawIAHa uiEBzbgxCcK0Phe4sEkkrqtSMaWmWj2domFHlZ5oT46bbleImHVdgpV8Y32ThGh4kIxsdI+VcHCN oHJtjKx0aoy7dWmNznVpjeh0a4vpc22J6nFtiOpxbYjqcW2I6nFtiOpxbYjqcW2I6nH/cBcC/4EV Af+QFgH/nhoB8KsbAeK2FgDTvR0ByLsvCL24PBWztEcjqbBQMKCrWDuYqF9FkKRmTomhbFWCnnNb fZx6YXeZgWZyl4pqbpaTbmqUnnFmlKpzZJO4c2OUy3NjlOZyZZLqcWeP6nBnjupwZ47qcGeO6nBn jupwZ47qcGeO6nD/cxUC/4UTAf+UFAD8oxUA6rASANm+DADNwRsBwsAtB7i9OhOuuUYhpLVPLZqx VjmSrl5DiqtkTIOoalN8pXFZdqN4X3Ghf2Nsn4doaJ6Ra2SdnG5gnKhwXpy2cV2cyXFdnORwXprr cGCW629hlexvYZXsb2GV7G9hlexvYZXsb2GV7G//dxIB/4kRAf+ZEQDzqA4A17UKAM/BCgDGxRgA vMQqBbLCOBGnv0QenrtNK5S4VTaLtVxAhLJiSXyvaVB2rW9WcKt2W2uqfWBmqIZkYqePZ16mmmpb paZsWKW1bVemx21XpuJsV6TtbFqf7Wxanu1sWp7tbFqe7Wxanu1sWp7tbFqe7Wz/fBAB/44QAPae DQDYrQkAzbgJAMfECAC+yhQAtconBKvINg+hxUEbl8JLKI2/UzOFvVo8fbphRXa4Z0twt21RarV0 VmW0fFtgsoRfXLGOYlixmWVVsKVmU7CzZ1KxxmdSseFnUa/xaFOq8GhUqfBoVKnwaFSp8GhUqfBo VKnwaFSp8Gj/gg4A/5QMANulBgDOsQcAxbsHAL3HBwC10BAArNAjA6PPMwyZzT8Yj8pIJIbIUS59 xlg4dsRfP2/CZkZpwWxLZMBzUF+/e1RbvoRYV72NW1S9mF1RvKRfT7yzYE29xWBNveBfTLzwYU23 9WJNtvViTbb1Yk229WJNtvViTbb1Yk229WL/iQsA4ZwDANCqBQDFtQUAu78EALLLCACr2A0Ao9kg AprYLwmQ1jwUh9RGH37STyl20FYyb89eOWjNZD9jzGtEXsxzSVrLekxWyoNPUsqNUk/KmFRNyqVW S8qzV0rLxVdJy+BWScnwWEfH+llIxftaSMX7WkjF+1pIxftaSMX7WkjF+1r3kQQA1KICAMevBAC6 uQMAsMQFAKfQCQCf4RAAmOEhA4/gMAmG4DsSfd9EG3XeTSRu3VUrZ9xcMmLbZDdd22s7WdpyP1Xa ekNS2oNFTtqNSEzamEpJ2qVLSNuzTEfcxExG3N5MRtrtTETY+U9D2PtPQ9j7T0PY+09D2PtPQ9j7 T0PY+0/bmgAAyqkCALuzAgCwvQMApckFAJvWCQCU6BQBjOklBIToMwt76DwUc+hEG2voSyJk51Io XudZLVnnYDJV52g1UudvOE/ndztM54A9SeeJP0folEFE6J9CQumsQ0HpukRA6s1EQOrkREDo9URA 5/hDQOf4Q0Dn+ENA5/hDQOf4Q0Dn+EPNowAAva4BALC4AQCkxAIAmdAFAI/hCgCJ8RoBgfEoBXjy Mgxw8jsTafJDGWLySh9c81AjVvNXJ1LzXitP82UtTPRsMEn0czJG9Hs0Q/SENkH1jjc+9Zk5Pfak Ojv2sDs69788OfjPPDj36Dw49+w8OPfsPDj37Dw49+w8OPfsPDj37Dy/qgAAsbMAAKS/AACYygEA jNgEAIT6DgB8+xsCdPsmBWz8MApl/DgQXv1AFVj+RxlT/k0dT/9UIEv/WiJI/2ElRf9nJkL/bShA /3UqPf99Kzr/hi04/5EuNv+bLzT/pjAz/7IxMv++MjH/0DIx/9YyMf/WMjH/1jIx/9YyMf/WMjH/ 1jKyrwAApboAAJjGAACL0gAAf98CAHn/EQFv/xkCZ/8iBGD/LAda/zQMVP88D0//QxNK/0kVR/9P F0P/VRlA/1sbPv9hHDv/Zh45/20fNv90IDT/fSEx/4YjL/+RJC3/myUs/6UmK/+vJir/uycp/74n Kf++Jyn/vicp/74nKf++Jyn/viemtgAAmMIAAIvOAAB+2wAAdfkHAGv/DwFi/xYCW/8eA1T/JgVO /y4GSf81CEX/PAtB/0MNPv9IDjv/ThA4/1MRNf9YEjP/XhMx/2QULv9qFSz/chYq/3oXJ/+DGCX/ jhkk/5gaI/+gGiL/qhsh/60bIf+tGyH/rRsh/60bIf+tGyH/rRuavgAAi8oAAH7XAABw4wAAZ/8E AF7/DQBW/xIBT/8ZAkn/IAND/ycEP/8uBTr/NAY3/zoHM/8/BzD/RAgu/0kJLP9OCSn/Uwon/1gK Jf9eCyP/ZAsh/2wMH/90DR3/fQ4b/4cOGf+PDxj/mQ8Y/5sQGP+bEBj/mxAY/5sQGP+bEBj/mxD/ TCoD/0gzBf9PNAb/VDcI/1pBDv9cShb/WlQd/1dgJP9Uayr/UHgv/02EM/9Kjzb/R5k5/0ahO/9F qTz/RLA+/0O3P/9CwD//QslA/0HVQf9B5EH/Qe5C/0H2Qv9B/UL/Qv9B+UT/QfRG/0LvR/9C70f/ Qu9H/0LvR/9C70f/Qu9H/0L/TSkD/0oyBP9RMgb/VzYI/1w/Dv9eSRb/XVMd/1peJP9XaSr/U3Uv /1CBNP9NjTf/Spc6/0ifPP9Hpz3/Rq4//0W1QP9EvUH/RMZC/0PRQv9D4kP/Q+xD/0P1Q/9D/EP8 RP9D9Uf/Q+9I/0TrSf9E60n/ROtJ/0TrSf9E60n/ROtJ/0T/TSkD/0wwBP9UMQX/WTQI/189Dv9h Rxb/YFId/11cJP9aZyv/VnMw/1N/NP9Pijj/TZQ7/0udPf9KpD//SKxA/0izQf9Hu0L/RsND/0bO RP9F30T/RepF/UXzRftF+0X3Rv9E8En/RepK/0blS/9H5Uv/R+VL/0flS/9H5Uv/R+VL/0f/TikD /08uBP9XLgX/XTIH/2M7Dv9lRhb/ZVAd/2FZJP9dZCv/WnAw/1Z8Nf9Thzn/UJE8/06aP/9NokD/ S6lC/0qwQ/9Kt0T/ScBF/0jKRv1I20b6SOdH+EjyR/VI+kbxSf9H6kv/SONM/0neTf9K3k3/St5N /0reTf9K3k3/St5N/0r/TygD/1IsBP9aLAX/YS8H/2c6Dv9qRBX/ak4c/2dXJP9iYSv/Xm0x/1t4 Nv9Xgzr/VI09/1KWQP9QnkL+T6VE/E6tRftNtEf6TLxI+UzHSPZL1EnzS+VJ8EvwSe1M+UjpTP9K 4U7/S9pP/0zTUP9N01D/TdNQ/03TUP9N01D/TdNQ/03/UCgD/1UqBP9dKQX/ZS0H/2w4Df9vQhT/ b0sc/2xVI/9oXir/Y2kx/190Nv1cfzv7WYk/+VaSQvdUmkT1U6JG9FKpSPJRsUnxULlK70/DS+5P z0vrT+JL50/uS+RP+E3fT/5O1VH/T85S/1DJU/9QyVP/UMlT/1DJU/9QyVP/UMlT/1D/UScD/1gn BP9hJwT/aiwG/3E2DP90QBP/dEka/3JSIv9uWyn9aGQw+WVwNvZhezvzXoVA8FuOQ+5ZlkbsV55I 6lWmSuhUrUznU7VN5VO/TuNTzE7hU99O3VPtT9hS91HRU/1SylT+U8RW/1O/V/9Tv1f/U79X/1O/ V/9Tv1f/U79X/1P/UicD/1slA/9lJAT/bioG/3Y0C/96PRH/ekYY/3hPIPt0WCj2b2Ev8WtsNu1n djzpY4BA5mCKReRdkkjhW5pK31miTd1Yqk/aV7JQ2Fa8UdVVyFLSVdtTzlbrU8tW9lXGVv1Wv1j9 VrpZ/Ve2Wv1Xtlr9V7Za/Ve2Wv1Xtlr9V7Za/Vf/UyYD/18iA/9pIQP/cygF/3syCv9/OxD/gEQW +35MHvR7VCXudl0t6XFoNORtcjvgaXxB3GWFRthijkrUX5ZN0V2dUM5cpVLMWq1UyVm2VsdZwlfG WdBXwlnmWL9Z81m7WvtZtVv7WrBd+1qtXftZrV37Wa1d+1mtXftZrV37Wa1d+1n/ViQD/2IgA/9t IAP/dyYE/38wCP+EOQ39hkEU9YVJG+6CUSLnfVoq4XhkMtxzbjrUbndB0GqAR8xmiUzIZJFQxWKY U8NgoFXAXqhYvl2xWbtdvFu5XMlct1zgXLRd71ywXvldq1/5Xahg+VylYflcpWH5XKVh+VylYflc pWH5XKVh+Vz/WCID/2UeA/9xHwP/eyQD/4QuB/+JNgv4iz4R74tGF+iITh7hhFcm2X5hMdF4ajrL c3NCxm98SMJshE2+aYxRu2aTVbhkm1i1Y6Nas2GsXLBgt16uYMRfrGDYX6lh61+nYfdfomP3X59k 91+dZPhenWT4Xp1k+F6dZPhenWT4Xp1k+F7/WyAC/2gcAv90HQL/fiMD/4grBf2NNAnzkDsO6pBD FOKPShrailQl0INdMMl+ZzrDeG9CvnR4SLlxgE61bohSsmuPVq9pl1qsZ59cqWWoX6ZksmGkZL9i omTQYqBk52KeZfVimmb1YZhn9mCWaPZglmj2YJZo9mCWaPZglmj2YJZo9mD/XR8C/2oaAv93HAL/ giEC/4spBPmRMQfvlTgL5pY/EN2URxfSjlEkyohbL8KDZDm8fmxBt3l0SLJ1fE6ucoRTqm+LV6Zt k1uja5teoGqkYJ1ormObaLpkmWjLZZdo42SVafNkk2r0Y5Fr9WKQa/VhkGv1YZBr9WGQa/VhkGv1 YZBr9WH/Xx0C/20YAv96GwL/hR8C/44nA/WVLgXrmTUI4Zw7DNaYQxbMk08ixI1YLr2HYTi2gmlB sH5xSKt6eU6nd4BTo3SIWJ9xkFubb5hfmG6hYpVtq2SSbLdmkGzGZo9s32aObfFljG7zZItu9GOK bvRiim70Yopu9GKKbvRiim70Yopu9GL/YRwC/28WAv98GgH/iB4B/5EkAvKZKwTnnjEF3aA2CdGc QRXHl00hv5FWLbeMXzexh2dAq4JuSKV+dk6ge31TnHiFWJh2jVyUdJVfkXKeYo5xqGWLcLRniXDD aIdw22eGce5mhnLyZYVy82SEcvRjhHL0Y4Ry9GOEcvRjhHL0Y4Ry9GP/YxoC/3EVAf9/GAH/ihwB /JQhAu6cJwLjoiwD2KQyCMyfQBTDmksgupVVLLOQXTesi2U/pYdsR6CDc02bgHtTln2CV5J6ilyO eJJginabY4d1pWaEdLFngnTAaIB01WiAdexnf3byZn9182V/dfNkf3XzZH9182R/dfNkf3XzZH91 82T/ZRkC/3QUAf+BFwH/jRoB+ZceAeugIwHfpiYC0qcwB8ijPhO/nkkftplTK66UWzanj2M/oItq RpuHcU2VhHhSkIF/V4x/h1yIfZBghHuZY4B6o2Z+ea9oe3m9aXp50Wl5eupoenryZnp58mV6efNk ennzZHp582R6efNkennzZHp582T/ZxcC/3YUAf+EFgH/kBcB9ZsaAeekHQHbqx8BzqovBsSmPRK6 oUgesp1RKqqYWTSilGE+nJBoRZaMb0yQiXZSi4Z9V4aEhVuCgo1ffoCXY3p/oWZ3fqxodX27aXN+ zmlzfuhodH7xZnR98mV1fPNkdXzzZHV882R1fPNkdXzzZHV882T/aRYB/3gTAf+HFAD/kxUA8Z4V AOOoFgDVrhsByq0tBsCpOxG2pUYdraFQKaWcWDOemF88l5RmRJCRbUuLjnRRhox7VoGJg1t8h4tf eIaUYnSEn2Vxg6pnb4O4aW2Dy2ltg+ZoboPyZm+C8mVwgfNkcIHzZHCB82RwgfNkcIHzZHCB82T/ axQB/3sSAf+KEgD/lhIA7aIQAN6tDgDQsRkAxbArBbutOQ+yqUQbqaVOJ6ChVjKZnV47kppkQ4uX a0qGlHJQgJJ5VXuPgFp3jYlecoySYW6KnGRriahnaYm2aGeJyGhnieNnaInyZmmH82VqhvNkaobz ZGqG82RqhvNkaobzZGqG82T/bhIB/34QAP+NEAD3mg4A26cKANOwCwDKtBYAwLQpBLaxNw6trkMa pKpMJZumVTCTo1w5jKBjQYadaUiAmnBOe5h3U3aWflhxlIZcbJKQYGiRmmNlkKZlY5C0ZmGQxmZh kOFmYZDyZWOO82RkjPRjZIz0Y2SM9GNkjPRjZIz0Y2SM9GP/cRAB/4IPAP+RDQDenwkA06oJAMyz CQDEuBMAurgmA7G2NQyns0EYnq9KI5asUy6OqVo3h6ZhP4CkZ0Z6oW5MdZ91UXCdfFVrnIRaZpqO XWOZmGBfmKRiXZiyZFuYw2RbmN5jW5jwY1yV9WJek/ViXpP1Yl6T9WJek/ViXpP1Yl6T9WL/dQ4A /4YNAOuWCADVowcAzK0IAMW2BwC9vBEAtL0jAqu7MgqhuT8VmLZIIJCzUSuIsFg0gK5fPHqrZkN0 qWxIb6hzTmqmelJlpYJWYaOMWl2illxaoqJfV6GwYFahwWBVotxgVaHvYFaf919XnPdfV5z3X1ec 919XnPdfV5z3X1ec91//egwA/YsJANqbBADOpwYAxLAGALy5BAC1wQ4ArMIgAaTBMAiavzwTkb1G HYm6TyeBuFYwerZdOHO0ZD9usmpEaLFxSWSweU1froFRW62KVFitlVdUrKFZUqyvW1CswFtQrNpa T6vuW0+q+ltRpvpbUab6W1Gm+ltRpvpbUab6W1Gm+lv/gAkA4ZIBANGgBADGqwUAvLQEALO9AwCr xwsApMkcAZzILAaTxzkPisVEGYHDTSN6wVQsc79bM22+YjlnvGk+YrtwQ166d0dauYBLVrmJTlO4 lFBQuKBSTbiuVEy4v1RLudhUS7ftVEq2+VVKs/5WSrP+Vkqz/lZKs/5WSrP+Vkqz/lb6hwIA1pgA AMmlAwC9rwMAs7gBAKnCBAChzQgAmtAWAJLQKASKzzYMgc5BFXnMSh5yy1ImbMpaLWbJYTJhyGg3 XMdvPFjGdj9Vxn9DUcWJRU7FlEhLxaBKScWuS0jFv0tHxthLR8XtS0bD+U1Fwv9ORcL/TkXC/05F wv9ORcL/TkXC/07fkAAAzJ8AAL+qAQCzswEAqb0CAJ/HBQCW0gkAjtoSAIjbJAKA2jIIeNk+EHHY SBhq11AfZNZYJV/VXypb1GcvV9RuM1PTdjZQ0385TNOIO0rTlD5H06A/RdSuQETUv0FD1dhARNPs QELS9kJB0f5EQdH+REHR/kRB0f5EQdH+REHR/kTRmAAAw6UAALWuAACpuAAAnsMCAJTNBgCK2QoA hOMYAX3kJgN15DIIbuM8D2fjRRVh400bXONVIFfjXSRU42QnUOJrKk3icy1K43wwSOOGMkXjkDRD 45w1QeSpNkDkuDc/5cs3P+XkNz/j8zY94vs4PeL7OD3i+zg94vs4PeL7OD3i+zjGoQAAt6sAAKq0 AACevgAAk8kCAIjUBgB/7g4Aee0bAXHtJwNq7jIIZO47DV7uQxNY7ksXU+5SGlDvWR5M72AgSe9n I0fvbyVE8HcnQfCAKT/wiio98ZUsO/GhLTnyri448r4vN/PQLzfz5y828fMvNvHzLzbx8y828fMv NvHzLzbx8y+5pwAAq7AAAJ+7AACSxgAAhtABAHvdBQB09xEAbfccAWb4JgNf+C8GWvk4ClT5QA5Q +kcRTPpOFEj7VRZF+1sYQvtiGkD8aBw9/HAdOv14Hzj9giA2/Y0iNP6YIzL+pCQx/7ElMP+/Ji// zyYu/+MmLv/jJi7/4yYu/+MmLv/jJi7/4yatrQAAn7cAAJLCAACGzQAAedoAAHDyCABo/xEAYf8a AVr/IwNU/ysET/8zBkr/OwhG/0ILQ/9JDUD/Tw49/1UQOv9bETj/YRM1/2gUM/9vFTD/eBYu/4IX LP+NGSr/mRop/6QaKP+vGyf/uhwm/8ccJv/HHCb/xxwm/8ccJv/HHCb/xxyhtAAAk78AAIbKAAB4 1gAAbOIAAGP8BwBc/w8AVf8WAU//HgJJ/yYDRP8uBED/NAU8/zsGOf9BBzb/Rggz/0wIMf9RCS7/ Vwos/10KKv9kCyj/bAwl/3UNI/9/DiH/ig8g/5UQHv+gEB7/qBEd/7ERHf+xER3/sREd/7ERHf+x ER3/sRGVvAAAhscAAHnTAABr4AAAXu0AAFb/AwBP/wwASf8SAUP/GQE+/yACOf8nAzX/LQMy/zME Lv84BCv/PQUo/0IFJv9HBST/TAYi/1EGIP9XBh3/Xgcb/2UHGf9uCBf/eAgV/4MIE/+NCRP/lgkS /54JEv+eCRL/ngkS/54JEv+eCRL/ngn/Qi0D/0IyBP9IMgT/TDYG/048CP9QRw7/UFIV/05fGv9L ax//SHck/0WDJ/9Cjir/QZcs/z+gLv8/py//Pq4w/z21Mf89vDL/PMUy/zzOM/873zP/O+o0/zvz NP87+zT/PP8z/jz/M/w9/zT2P/819T//NfU//zX1P/819T//NfU//zX/QywD/0QwBP9KMAT/TjQG /1E6CP9TRg7/UlEV/1FdGv9OaSD/S3Qk/0iAKP9Fiyv/Q5Ut/0KdL/9BpTD/QKwx/z+zMv8/ujP/ PsI0/z7MNP8+3DX/Peg1/z3xNf8++jX9Pv81+z//NPg//zbyQf838EH/N/BB/zfwQf838EH/N/BB /zf/RCwD/0cuA/9NLgT/UTIF/1Q5CP9XRA7/Vk8V/1RaG/9RZiD/TnIl/0t9Kf9IiCz/RpIu/0Wb MP9EojL/Q6kz/0KwNP9CtzX/Qb82/0HJNv9A1zf/QOU3/UDwN/pA+Df3Qf829kH/N/JB/zjsQ/85 6kT/OepE/znqRP856kT/OepE/zn/RSsD/0ksA/9QLAT/VS8F/1k3CP9cQg7/W00V/1hXG/9WYyD/ Um8l/096Kv9MhS3/So8w/0iYMv9HnzT/RqY1/0WtNv9FtDf/RLw4/kTGOPxE0jn5Q+I59kTuOfNE 9znxRP8570T/OutF/zvkRv8840b/PONG/zzjRv8840b/PONG/zz/RisD/00pA/9UKQT/WSwF/141 B/9hQA3/YUoU/15UGv9aXyD/V2sm/1R2Kv9RgS7/Tosx/kyUNPxLnDX7SqM3+kmqOPhIsTn3SLk6 9kfCO/VHzTvyR9877kfsO+tI9jvpR/8950f/PuFI/z/aSv9A2Er/QNhK/0DYSv9A2Er/QNhK/0D/ RyoD/1AnA/9YJgP/XioE/2MzB/9mPQ3/ZkcT/2RRGv9gWyD/XGcm/VlyK/pWfS/4U4cz9lGQNfRQ mDfyTp858U2mO+9MrTzuTLU97Eu+PetLyj7pS9w+5UzqPeJL9T/fS/5B3Er/QtRM/0PNTf9Dy07/ Q8tO/0PLTv9Dy07/Q8tO/0P/SigD/1QkA/9cIwP/YygE/2gwBv9sOwv/bEQS/2pOGf5mWB/5YWIl 9V5tK/JbeDDvWII07FaLN+pUlDnoU5s75lGjPeVRqj7jULI/4U+7QOBPx0DeT9hB2U/oQdRP9EPQ Tv5Fzk7/RshQ/0bCUf9HwFH/R8BR/0fAUf9HwFH/R8BR/0f/TSUC/1chAv9gIAP/aCYD/24uBf9y OAr/ckEQ/XBLF/dtVB3yaF4k7WRpKulhdDDlXn404luHOOBZjzvdV5c+21WfQNhUpkLVU65D0lK3 RNBSwkXOUtBGy1LlRshS8kjFUv1JwlL/SrxU/0q3Vf9KtlX/SrZV/0q2Vf9KtlX/SrZV/0r/UCMC /1seAv9kHgL/bSQD/3MrBP93NQj+eD4O9ndHFPB0UBvqb1oi5GtlKeBnby/bY3k11mCCOtJdij7P W5JBzFmaQ8pYoUXIV6lHxlayScRWvErCVclLv1XfS7xW7ky5VvpNt1b/TbJY/02uWf9NrFn/TaxZ /02sWf9NrFn/TaxZ/03/UyAC/14cAv9oHAL/cSIC/3goA/98MQf4fjoL8H1DEel6TBjidlcf3HJh KNRtay/PaXQ2y2V9O8dihUDEYI1DwV6VRr9dnEi8W6RLulqtTLhZt062WcNPtFnVT7Fa6lCuWvdQ rFr/UKhb/1CkXP9QpF3/T6Rd/0+kXf9PpF3/T6Rd/0//Vh4C/2EZAv9sGgL/dSAC/3wlA/2BLgXz hDcJ6oQ/DuKBSBXbfVMd0XddJ8tyZzDGbnA3wmp4PL5ngEG6ZYhFt2OQSLRhmEuyX59Nr16oT61d slGrXb5SqV3OU6Zd5VOkXvRTol7/U59f/1KcYP9Sm2D/Uptg/1KbYP9Sm2D/Uptg/1L/WBwC/2QX Af9wGQH/eR0B/4AjAviGKgPtiTIG5Io7CtyIRRLRglAcyn1aJsR4Yy++c2w3uW90PbVsfEKyaoRG rmeMSqtlk02oZJtPpWKkUqNhrlShYblVn2HIVp1h4VabYvFVmWL9VZdj/1SVZP9UlGT/U5Rk/1OU ZP9TlGT/U5Rk/1P/WhoC/2cVAf9zFwH/fRsB/4QgAfOKJgLoji4E35A2B9SMQRHLh00bxIJXJr19 YC+3eGk2snRxPa5xeEKqboBHpmyISqNqj06gaJhRnWegU5pmqlWYZbVXlWXEWJRl21iSZu9XkWb8 V49n/laOZ/5VjWj+VY1o/lWNaP5VjWj+VY1o/lX/XBgB/2kTAf92FgH/gBkB/YgdAe+OIgHkkykC 2pQxBs6QPw/Gi0savoZVJbeBXi6xfWY2rHluPKd2dUKjc31Hn3CES5xujE6YbJRSlWudVJJqp1eQ abJZjWnAWoxp1VqKauxZimr6WIlr/VeHa/1Wh2v+Vodr/laHa/5Wh2v+Vodr/lb/XhcB/2wSAf94 FAH/gxcA+YsaAOuSHQHgmCMB05gvBcqUPQ7Bj0kZuYpTJLKGWy2sgWQ1pn5rPKF6ckKdd3pHmXWB S5VziU+RcZFSjm+aVYtupFiIba9ahm29W4Rt0FuDbulag274WYJv/FiCb/1Xgm/9V4Jv/VeCb/1X gm/9V4Jv/Vf/YBUB/24RAf97EwD/hhQA9o8WAOeWGADbnBwAz5stBMWXOw28k0cYtI5RI62KWSyn hmE0oYJpO5x/cEGXfHdGk3l+S493hk+LdY5SiHOXVYRyoViCcaxaf3G6XH5xzFx9cudbfXL2Wnxy /Fl8cvxXfHL9V3xy/Vd8cv1XfHL9V3xy/Vf/YhQB/3ERAf99EQD/iBIA8pISAOOaEgDVnxkAyp4r BMGbOQy4l0UXsJJPIqmOWCuiil8znIZnOpeDbkCSgHVFjX58Sol8hE6FeoxSgniVVn53n1h7dqpb eXW4XHd1ylx3duVcd3f1Wnd2+1l3dvxYd3b8V3d2/Fd3dvxXd3b8V3d2/Ff/ZBIB/3MQAP+AEAD/ ixAA75UOAN+eDQDQohcAxqEpA72eNwu0mkMWrJZNIKSSViqdjl4yl4tlOZKIbECNhXNFiIN6SoSA gU6Af4pSfH2TVXh8nVh1e6hbc3q2XHF6x1xxeuJccXvzWnF7+1lyevxYcnr8WHJ6/FhyevxYcnr8 WHJ6/Fj/ZxEB/3UPAP+DDgD0jg0A25kKANShCwDMpBUAwqQnA7iiNgqwnkIVp5pMH6CXVCmZk1wx k5BjOI2Naj+IinFEg4h4SX6Gf016hIhRdoKRVXOBm1hvgKZabX+0XGt/xVxrgN9ca4DyWmuA+1ls fvxYbX78WG1+/FhtfvxYbX78WG1+/Fj/aRAB/3gOAP+FDADikggA1ZsJAM6jCQDHqBIAvaglArSm NAmrokATo59KHpubUieUmFowjpVhN4iSaD2CkG9Dfo52SHmMfUx1ioVQcYiOVG2HmVdqhqRZZ4Wx W2WFwltlhdxbZYXwWmaF+1lng/xYZ4P8V2eD/Fdng/xXZ4P8V2eD/Ff/bA4A/3sMAPKJCQDZlQYA z54IAMmmCADBqxAAuKsiAq+qMgimpz4SnqRIHJahUSWPnlguiJtfNYKZZjx9lm1BeJR0RnOSe0tv kINPa4+MUmeOllVkjaJYYYyvWV+MwFpfjNlZX4zuWV+M+1hhiv1XYYn9V2GJ/Vdhif1XYYn9V2GJ /Vf/bwwA/38JAN+NAwDSmAYAyqIGAMKpBgC6rw4AsrAgAamuLwahrDwQmKlGGpGnTyOJpFYsg6Jd M32fZDl3nWs/cptxRG6aeUhpmIFMZZeKUGGVlFNelaBVW5StV1qUvVhZlNRXWZTsV1mT+VZbkf5V W5D+VVuQ/lVbkP5VW5D+VVuQ/lX/cwkA9YQEANiRAwDMnAUAw6UFALutBACzswwAq7UcAaO0LAWb sjkOkrBEF4qtTSCDq1QpfalcMHenYjZxpWk8bKRvQWiid0VkoX9JX5+ITFyekk9Ynp5SVp2rU1Sd vFRTndFUU53rU1Oc+FNUmv9TVJn/U1SZ/1NUmf9TVJn/U1SZ/1P/eAYA4YkAANCWAgDGoQMAvKkD ALOwAQCruAgApLoYAJy6KQOUuTYLjLdBFIS1Sh18s1IldrFaLHCvYDJrrmc4Zq1uPGKrdUBeqn1E WqmGSFaokUpTqJ1NUaeqTk+ouk9OqM9PTqfpT02m909Npf9PTqT/T06k/09OpP9PTqT/T06k/0/6 fwAA2I4AAMmbAQC+pQIAtK0BAKu1AAChvwQAm8EUAJTBJQKMwDMIhL8+EXy9SBl1vFAhb7pYJ2q5 Xy1luGUyYLdsNly2dDpYtXw+VbSFQVG0kEROs5xGTLOpSEqzuUhJtM5ISbPpSEix9klIsP9KSLD/ Skiw/0pIsP9KSLD/Skiw/0rihgAAzpQAAMKhAAC2qQAAq7EAAKG6AQCYwwUAkMkQAIrJIAGDyS8F e8g7DXTHRRRuxk4baMVWIWPEXSdew2QrWsJrL1bBcjNTwXs2T8CEOUzAjzxKwJs+R8CoP0bAuEBF wM1ARcDoP0S+9kFDvf9CQ7z/Q0O8/0NDvP9DQ7z/Q0O8/0PWjQAAxpsAALilAACtrgAAorYAAJi/ AgCNyAYAg9ELAH/SGgB50ioDctI3CGzRQg9m0UsVYdBTGlzPWx9Yz2IjVM5pJ1HOcSpNznotSs6D MEjOjjJFzpo0Q86oNULOuDZBz801Qc7oNUDN9Tc/y/45Psv/OT7L/zk+y/85Psv/OT7L/znKlgAA vKIAAK+qAACjswAAmLwAAI3GAwCCzwcAeNkLAHPeGABu3iYCaN4zBWLePgpd3kgPWd5QFFXeWBdR 3mAbTt5nHkvdbyBI3ngjRt6BJUPejCdB3pgpP96mKj7ftSo94MgqPd/jKjzd8Ss73PstOtz9Ljrc /S463P0uOtz9Ljrc/S7AnwAAsacAAKSwAACYugAAjcMAAIHNAgB21wcAbugPAGnoGwFj6CcCXuky BVjpOwhU6UQMT+pMD0zqUxJJ6lsVRupiF0TrahlB63IbP+t7HTzrhh467JEgOOyeITftrCI27bsj Ne7PIzTu5iM06/UjNOv4IzTr+CM06/gjNOv4IzTr+COzpQAApq0AAJm3AACNwQAAgMsAAHXVAQBp 4QYAZPMRAF7zHAFZ9CYCVPQwBE/1OAZL9UAIR/ZHCkT2TgxB91UOP/dcDzz3YxE6+GoTN/hzFDX4 fRYz+YgXMfmUGC/6oRku+q8aLfu+Giz7zxsr++cbK/vrGyv76xsr++sbK/vrGyv76xuoqgAAmrQA AI2/AACAyQAAdNMAAGfeAABe8ggAWf4RAFP/GgFO/yMCSf8rA0X/MwRB/zoFPv9BBjv/Rwc4/04I Nf9UCTP/Wgkx/2EKL/9pCyz/cgwq/30NKP+IDib/lQ8l/6EQJP+uESP/uhIi/8oSIv/QEiL/0BIi /9ASIv/QEiL/0BKcsgAAjrwAAIHHAABz0QAAZ90AAFnjAABT/QYATf8OAEj/FgBD/x4BP/8mAjr/ LQI3/zMDM/85AzD/PwQu/0QEK/9KBSn/UAUn/1YGJP9dBiL/ZQcg/24HHf95CBv/hQga/5IJGf+e CRj/qAkX/7MJF/+3CRf/twkX/7cJF/+3CRf/twmQugAAgsUAAHTQAABn3AAAWOMAAE3wAABH/wIA Qv8MADz/EQA4/xgBNP8fATD/JQEs/ysCKf8wAiX/NQIj/zoCIP8/Ax7/RAMc/0kDGf9PAxf/VgQV /14EEv9oBBH/cgUP/34FDv+KBQ7/lAUN/54FDf+iBQ3/ogUN/6IFDf+iBQ3/ogX/OS8C/zwwA/9B MQP/RDQE/0Q6Bv9ERQj/RVEM/0NdEf9BaRb/PnYZ/zyBHP86jB7/OZYg/zieIf83pSP/N6sj/zay JP82uSX/NsAl/zXKJv811yb/NeUm/zXvJv81+Cb/Nv8m/jb/Jvw2/yb8Nv8n+jb/KPo2/yj6Nv8o +jb/KPo2/yj/OS8C/z4vA/9ELwP/RjIE/0g4Bv9IQwj/SE8N/0dbEv9EZxb/QnMa/z9/Hf89ih// PJMh/zubI/86oiT/Oakl/zmwJv84tib/OL4n/zjHJ/840yj/OOMo/zjtKP449yj7OP4n+Tn/J/g4 /yn4OP8q9jj/KvY4/yr2OP8q9jj/KvY4/yr/Oi8C/0EsA/9GLAP/Si8E/0w3Bf9NQQj/TEwN/0tY Ev9IZBf/RnAb/0N8Hv9BhyD/P5Aj/z6YJP89oCX/PaYm/zytJ/88tCj/O7sp/zvEKf87zyn+O+Aq +zvrKvg79Sn2PP4p9Dz/KvM7/yvyO/8s7zv/Le87/y3vO/8t7zv/Le87/y3/PC0C/0QpAv9KKQP/ TiwE/1E0Bf9SPgj/UkoN/1BVEv9NYRf/Sm0b/0h4H/9FgyL/Q40k/0KVJv9BnSf/QKMo/0CqKf4/ sSr9P7gr/D/BK/o/yyv3P9ws9T/pLPE/9CvvP/0s7T//Lew+/y/rPv8w5z//MOc//zDnP/8w5z// MOc//zD/QCoC/0gmAv9OJgP/UikD/1YyBf9XPAf/V0cM/1VREv9SXRf/UGkc/010IP9KfyP9SIkm +0eRKPpGmSn4RaAq90SnK/VErSz0Q7Ut80O9LfJDyC7wQ9cu7EPnLulE8y3mQ/ww5EL/MeNC/zLh Qv8z3EP/NNxD/zTcQ/803EP/NNxD/zT/QycC/0sjAv9SIgL/WCcD/1wvBP9dOQf/XkMM/1tOEf9Y WBf+VWQc+lJvIPdQeiT0TYQn8kyNKfBKlSvvSZwt7UmjLuxIqi/qR7Ev6Ue6MOdHxTDmR9Iw4kjl MN9H8jLbR/s02Eb/NdVG/zbSRv83zUj/N81I/zfNSP83zUj/N81I/zf/RiQC/08gAv9WHwL/XSQD /2EsBP9jNQb/ZEAL/2JKEPpeVBb1W18c8VhrIO5VdSXrU38o6FGIK+ZPkS3kTpgv4k2gMOFMpzHf TK4y3Uu3M9tLwjTZSs811UvkNdBL8DbNSvs4ykr/OshK/zrGS/87wUz/O8FM/zvBTP87wUz/O8FM /zv/SiEC/1MdAv9bHAL/YiIC/2cpA/9pMgX/ajwJ+WhGD/JlUBXtYVsa6F5mIORbcSXhWHsp3laE LNtUjC/YUpQy1FGbNNJQozXQT6o3zk6yOMxOvDnKTsk6yE7dOsRP7TvBTvk9vk7/PbxO/z66T/8+ tlD/PrZQ/z62UP8+tlD/PrZQ/z7/TR4C/1YaAf9fGgH/ZyAC/2wmAv9vLgT5cDgH8m9CDOtsSxLl aVcZ32ViH9phbCXUXXYq0Ft+L81ZhzLKV481yFaWN8ZUnTnEU6U7wVOtPL9Stz69UsM/vFLTP7lS 6D+1UvZBs1L/QbFT/0GvU/9BrFT/QaxU/0GsVP9BrFT/QaxU/0H/UBwB/1oXAf9kGAH/bB0B/3Ej Av11KgPzdjMF63Y9CuNzRw/cb1MX1GteH85mZybKY3ErxmB5MMJegTS/XIk3vVqROrpZmDy4WKA+ tleoQLRWskKyVr1DsFXMQ61W40SrVvNEqFf+RKdX/0SlWP9Eolj/RKJY/0SiWP9Eolj/RKJY/0T/ UxkB/10UAf9oFgH/cBoB/3YgAfd6JgLtfC4D5Hw4B9x6RA3SdU8Wy3BaHsZsYybBaGwsvWZ1Mblj fTW2YYQ5s1+MPLBdlD+uXJtBq1ukQ6larUWnWrhGpVnHR6Na3kehWu9Hn1v8R51b/0ebXP9Gmlz/ Rppc/0aaXP9Gmlz/Rppc/0b/VRcB/2ASAf9rFAH/dBcA/3ocAfJ/IgHngSkC3oIzBNN/QAzLekwV xHZWHr5xYCW5bmgstGtxMrFoeTatZoA6qmSIPadij0ClYJdDol+gRZ9eqUedXrRJm13CSpld1kqX XuxKll/6SZVf/0mTYP9IkmD/R5Jg/0eSYP9HkmD/R5Jg/0f/WBUB/2MRAf9uEgD/dxUA+34YAO2D HQDihyMB1ocuA8yDPQvFf0kUvXtTHbd2XSWyc2UsrW9tMqltdTemanw7omiEPp9mjEGcZZREmWOc R5dipkmUYrBLkmG+TJBh0EyPYuhMjmP4S41j/0qMZP9Ji2T/SYtk/0mLZP9Ji2T/SYtk/0n/WhMB /2YQAP9xEQD/ehIA94IUAOiHFwDdixwA0IssA8eIOwq/hEcTuH9RHLF7WiSsd2Irp3RqMaNxcjaf b3k7m22AP5hriEKVaZBFkmiZSI9mokqMZq1MimW6TYhlzE6HZuZOhmf2TIZn/0uFaP9LhGj/SoRo /0qEaP9KhGj/SoRo/0r/XBIB/2gPAP90EAD/fRAA84UQAOSLEQDWjxcAy44qAsKMOAm6iEQSs4RP G6x/WCOnfGAroXhoMZ11bzaZc3Y7lXF9P5JvhUKObY1Fi2yWSIhroEuFaqpNg2m3ToFpyE+AauNP gGv0Tn9r/0x/a/9Lf2v/S39r/0t/a/9Lf2v/S39r/0v/XhAB/2sOAP92DgD7gA0A6ogNANuPDADQ khUAx5InAr6PNgi2jEIRrohNGqiEViKigF4qnH1lMJd6bDWTd3M6j3V7PoxzgkKIcotGhXCTSYJv nUx/bqhOfW61T3ttxlB6buBQeW/yTnlv/k15b/9MeW//S3lv/0t5b/9LeW//S3lv/0v/YA8A/20N AP95DADugwsA24sJANSRCgDMlRMAwpUlArmTNAexj0EQqoxLGaOIVCGdhFwpl4FjL5J+ajWOfHE5 inp4PYZ4gEKDdohFf3WRSXxzm0x5cqZOdnKzUHVyw1Bzct1QdHPwT3Rz/U10c/9MdHP/THRz/0x0 c/9MdHP/THRz/0z/Yg4A/28MAPx7CgDehgYA1Y4IAM+UCQDHmBEAvpgjAbWWMgatkz8PppBJGJ+M UiCYiVook4ZhLo6DaDSJgW85hX92PYF9fkF9e4ZFenmPSXZ4mUxzd6ROcXexUG92wVBud9lQbnfv T253/E5ud/9Nb3f/TG93/0xvd/9Mb3f/TG93/0z/ZA0A/3IKAPB+BgDaiAUA0JAHAMqXCADCmxAA uZshAbGaMAaplz0OoZRHF5qRUB+UjVgnjotfLYmIZjOEhm04gIR0PXuCe0F4gIRFdH+NSHF9l0tt fKJOa3yvT2l7vlBofNVQaHztT2l8+05pfP9Nanv/TGp7/0xqe/9Manv/TGp7/0z/ZgoA/3UIAOGB AgDUiwUAy5MGAMSaBgC9ng4AtZ8fAayeLgWkmzsMnZhFFZaVTh6Pk1YliZBdLISOZDJ/i2s3eopy PHaIeUByhoFEb4WKR2uDlUpogqBNZYGsTmOBvE9igdFPYoHrTmOB+U1jgf9MZID/S2SA/0tkgP9L ZID/S2SA/0v/aQgA+3gEANyEAQDPjwQAxpcFAL+dBQC3oQwAr6McAKeiLASfoDkLmJ5DFJGbTByK mFQjhJZcKn+UYjB6kmk1dZBwOnGOdz5tjX9CaYuIRmWKkkliiZ5LX4iqTV6Iuk5ciM5OXYjpTV2H +Exdh/9LXob/S16G/0tehv9LXob/S16G/0v/bQUA6nwAANWIAADKkgMAwZoDALmgAwCxpgkAqacZ AKKnKQOapTYJkqNBEouhShqEn1Ihfp1aKHmbYC50mWczb5duOGuWdTxnlH1AY5OGQ2CRkEZckZxJ WpCpS1iQuExXkMxMV5DnS1eP90pXjv9KWI7/SViO/0lYjv9JWI7/SViO/0n/cQEA4IAAAM+MAADE lgIAu54CALKkAACpqgUAoqwVAJusJgKUqzQHjKo/D4WoSBd+plAeeKRYJXOiXituoWUwap9sNGWe czlhnXs8XpuEQFqajkNXmZpFVJmnR1KZtkhRmcpIUZjmSFGX9UhRl/9HUZb/R1GW/0dRlv9HUZb/ R1GW/0f2dwAA2IUAAMmRAAC/mwEAtKIAAKuoAAChsAAAmrIRAJSzIgGNsjAFhbE8DH6vRhR4rk4b cqxWIW2rXCdoqWMsZKhqMGCncTRcpnk4WKWCO1WkjD5Ro5hAT6OlQk2jtENMo8hDTKPkQ0uh9ENL oP9ES6D/REug/0RLoP9ES6D/REug/0TjfQAAz4sAAMKWAAC3nwAAraYAAKOtAACZtQAAkLkOAIu6 HgGEui0Dfbk5CXe4QxBxtkwXa7VTHWa0WiJis2EmXrJoK1qxby5WsHcyU7CBNU+vizhMr5c6Sq6k PEiusz1Hrsc9R67jPEat8z1Gq/4+Rav/P0Wr/z9Fq/8/Rav/P0Wr/z/agwAAx5EAALucAACvpAAA pasAAJqyAACQugEAhsEJAIHCGAB7wigCdcI1Bm/BQAxpwEkSZL9RF1++WBxbvl8gV71mJFS8bidR vHYqTbt/LUq7ijBIu5YyRbujNEO7sjRCu8U1Q7viNEK58zVBuP03QLf/N0C3/zdAt/83QLf/N0C3 /zfOiwAAv5gAALKhAACnqQAAnLAAAJG4AACGwAIAe8gHAHTLEgBwzCIBa8swA2bLPAdhy0UMXMpO EVjKVhVUyl0ZUclkHE7JbB9LyXQiSMh+JEXIiCdDyJUoQciiKj/IsSs+ycQrPsnhKj7H8is9xvwt PMX/LjzF/y48xf8uPMX/LjzF/y7EkwAAtp8AAKmmAACdrgAAkrcAAIa/AAB7xwMAcM8HAGfWDQBk 1xoAYNgqAVzYNgNY2EEGVNhKClDYUg1N2FoQStdiE0fXaRZF13IYQtd8GkDYhxw92JMePNihHzrZ sCA52cMgOdnfIDnX7yA41fkiN9T/IzfU/yM31P8jN9T/IzfU/yO5nAAAq6QAAJ+sAACTtQAAh74A AHvGAABwzgMAZdYHAF3jDgBa4xsAVuMnAVLkMgJO5DwESuREBkflTQhF5VUKQuVcDEDlZA4+5mwQ O+Z2EjnmgBQ354wVNeeZFjTnqBcy6LgYMujMGDHo5Rgx5vQYMeX8GDHl/Bgx5fwYMeX8GDHl/Biu ogAAoaoAAJSzAACIvQAAe8YAAG/OAABj1gEAWN4FAFTuEABR7xsATe8mAUnwLwJF8DgDQfE/BD7x RwU88k4GOvJVBzfyXAg182QJM/NtCjH0dwwv9IINLfSPDiv1nQ8q9qsQKfa8ECj2zhEn9+YRJ/Xx ESf18REn9fERJ/XxESf18RGjqAAAlrIAAIi7AAB7xQAAb84AAGLXAABW3gAATvAHAEr6EABG+xkA QvsiAT/8KgE7/TICOP05AjX+PwMy/kYDMP9MBC7/UwUr/1oFKf9iBif/awYk/3YHI/+CCCH/kAgg /50JH/+rCR7/ugkd/8kJHP/dCRz/3Qkc/90JHP/dCRz/3QmYsAAAiroAAHzEAABvzQAAYtgAAFXe AABJ5AAARPsFAD//DgA7/xUAOP8cADT/JAEx/ysBLf8xASr/NgIn/zwCJf9CAiP/SAIg/04DHv9V Axz/XQMZ/2cEF/9yBBX/fwQU/4wFE/+aBRL/pgUR/7IFEf+8BRH/vAUR/7wFEf+8BRH/vAWMuAAA fcIAAG/MAABi2AAAVN8AAEflAAA+8QAAOf8BADT/CwAw/xAALP8WACn/HAAm/yIAIv8nAR//LAEc /zEBGv82ARj/PAEV/0EBE/9IAhH/TwIQ/1cCDf9hAgz/bAIK/3kCCf+GAwj/kgMH/50DBv+lAwb/ pQMG/6UDBv+lAwb/pQP/MTEC/zYuAv86LwL/OzID/zs5BP87QwX/OU8H/zhcCv82aA3/NHQQ/zKA Ev8xixT/MJQW/zCbF/8vohf/L6gY/y6vGf8utRn/LrwZ/y7FGv8uzxr/LuAa/y7rGv8u9Br/Lvwa /C//Gfsv/xr6Lv8b+i7/HPou/xz6Lv8c+i7/HPou/xz/My8C/zksAv89LQL/PjAD/z82BP8/QQX/ PU0H/zxZCv86ZQ7/OHIR/zZ9E/81iBX/NJEX/zOZGP8zoBn/MqYZ/zKsGv8xsxr/Mbob/zHCG/8x zBv/Md0b/zHpG/0x8xv6Mvsb+DL/G/cy/xz2Mf8d9TH/HvUx/x71Mf8e9TH/HvUx/x7/NSwC/zwq Av9AKgL/Qi0D/0M0BP9EPwX/QkoH/0FWCv8/Yg7/PW4R/zt6FP85hBb/OI4Y/zeWGf82nRr/NqQb /zWqHP81sBz/Nbcd/zW/Hf81yR38Ndgd+jXnHfc18R30Nfod8jX/HvE1/x/wNf8g7zT/Ie80/yHv NP8h7zT/Ie80/yH/OCoC/z8nAv9DJgL/RikC/0kyA/9JPAX/SEcH/0ZTC/9EXw//QmoS/0B2Ff8+ gBj/PIoZ/zySG/87mhz9OqAd/DqnHfs5rR76ObQf+Tm8H/g5xh/2OdMf8jnkH+858B/sOvof6jn/ Iek5/yPoOf8k5zn/JOc5/yXnOf8l5zn/Jec5/yX/PCcC/0MjAv9IIgL/TCYC/08vA/9QOQX/TkMH /0xPC/9KWw//SGYT/0VxFvxDfBn6QoYb+EGOHPZAlh71P50f8z+jIPI+qiDxPrEh8D65Ie4+wyHt Ps8h6j7iIeY/7yHjPvkj4T3/Jd89/yfePf8o3D3/KNw9/yjcPf8o3D3/KNw9/yj/PyMB/0cgAf9M HgH/USQC/1UsA/9WNQT/VT8G/1NKCv5QVg/6TmIT9kttF/NJdxrwR4Ec7kaKHuxFkiDrRJkh6UOg IuhDpyPmQ64j5UK2JORCwCTiQ8wk30PgJNtD7SXWQvgo00L/KtFC/yvPQf8rzkH/LM5B/yzOQf8s zkH/LM5B/yz/QyAB/0ocAf9QGwH/VyEB/1soAv9cMgP/WzsG/FlGCfZWUQ7xVF0T7VFoF+lPchrm TXwd5EuFIOJKjiHgSZUj3kicJNxHoybaR6sn2EazKNVGvCjTRsgp0UbcKs1H7CrJRvcsx0b/LsRG /y/DRv8vwkb/L8FG/y/BRv8vwUb/L8FG/y//Rh0B/04YAf9WGAH/XB4B/2AlAv9iLQP8YjcF9GBB CO5dTA3oWlgS41hjF99VbhvbUncf2FCAItRPiSTRTZAnz0yXKM1MnirLS6YryUqtLMdKty3GSsIu xErRL8FL5y+9SvQxu0r/MrhK/zK3S/8ztkv/M7ZL/zO2S/8ztkv/M7ZL/zP/ShoB/1IVAf9aFgH/ YRsB/2YhAf5oKQL0aDID7Gc8BuVkSAvfYVQQ2V5eF9JbaRzOWHIgy1Z7JMhUgyfFUosqw1GSLMFQ mS6/T6EvvU+oMbtOsTK5Trwzt07KNLVO4TSyTvE1r0/9Nq1P/zasT/82q0//NqtP/zarT/82q0// NqtP/zb/TRcB/1USAf9fFAD/ZhgA/2sdAfhtJAHtbiwC5W02BN1rQwjUZ08QzWRaF8hgZB3EXW0i wVt2Jr1Zfim7V4UsuFaNL7ZVlDG0VJwzslOkNLBSrTatUrc3rFLFOKpS2jinUu05pVP6OaNT/zmi U/85oVT/OKFU/zihVP84oVT/OKFU/zj/TxQB/1kQAP9jEgD/ahQA/28ZAPJyHwDmdCYB3XQxAtNx PwjLbUsPxWlWF8BmYB27Y2kit2BxJ7ReeSuxXIAurluIMaxZjzOqWJc1p1efN6VXqDmjVrM6oVbA O59W0jydVuk8m1f4PJpX/zyZWP87mFj/O5hY/zqYWP86mFj/OphY/zr/UhIB/1wOAP9mEAD/bREA +nMUAOt3GADgeR8A1HktAst2PAfEckgOvm9TFrhrXB2zaGUir2VtJ6xjdSupYXwvpl+EMqNeizWh XZM3nlybOZxbpDuZWq89l1q7PpZazD+UWuU/klv1PpFb/z6QXP89kFz/PI9c/zyPXP88j1z/PI9c /zz/VREA/18NAP9pDgD/cQ4A9XcQAOZ7EQDZfRgAzn0qAsV7OQa+d0UOt3RQFbFwWRytbWIiqGpp J6VocSyhZngvnmSAM5tihzaYYY84lmCYO5NfoT2RXqs/j164QI1eyEGLXuFBil/zQIlf/z+JYP8+ iGD/Pohg/z2IYP89iGD/PYhg/z3/Vw8A/2IMAP9sDAD4dAwA6XoMAN5+DADSgRUAyIEnAcB/Nga4 fEINsnhNFax1Vhuncl8iom9mJ55sbiybanUwl2h8M5RnhDaRZYw5jmSVPIxjnj6JYqhAh2K1QoVi xUKEYt5Dg2PxQoJj/UGCZP9AgmT/P4Jk/z+CZP8/gmT/P4Jk/z//WQ4A/2QLAP9uCgDqdwgA230I ANSCCgDMhBIAw4UkAbuDNAWzgEAMrXxLFKZ5VBuhdlwhnHNkJphxayuUb3IvkW15M45rgTaLaok5 iGiSPIVnmz+CZqZBgGayQ35mwUR9ZtlEfGfvQ3xn/EF8aP9AfGj/QHxo/z98aP8/fGj/P3xo/z// WwwA/2cJAPdxBwDeegUA1IAHAM6FCQDHhxEAvogiAbaHMQSvhD4LqIFJE6J9Uhqcelogl3dhJpN1 aCuPc28vi3F3M4hvfjaFboY6gm2PPX9rmT98a6NCeWqwQ3hqv0R2atRFdmvtQ3Zr+0J2a/9Bdmz/ QHZs/0B2bP9Admz/QHZs/0D/XQoA/2kHAOx0AwDafAQA0IMGAMmIBwDDig8AuosgAbKKLwSriDwK pIVHEp2BUBmYflgfk3xfJY55ZiqKd20uhnV0MoJ0fDZ/coQ5fHGNPXlwlkB2b6FCdG6uRHJuvUVw btFFcG/rRHBv+kNxb/9BcW//QHFw/0BxcP9AcXD/QHFw/0D/XwgA/2sEAOF2AADUfwMAy4YFAMWL BgC+jQ0AtY8eAK6OLQOmjDoJn4lFEZmGThiTg1YejoBdJIl+ZCmFfGstgXpyMn14eTV6d4I5d3aL PHN1lT9xdJ9CbnOsRGxzu0Vrc85Fa3PpRGtz+ENrc/9CbHP/QWxz/0Bsc/9AbHP/QGxz/0D/YQUA +m4BAN15AADQggIAx4kEAMCOBAC5kQwAsZIbAKmSKwOikDgIm41DD5SKTBeOiFQdiYVbI4SDYiiA gWktfH9wMXh+dzV1fH84cXuIPG56kj9reZ1BaHiqQ2Z4uERleMxFZXjnRGV490NmeP9CZnj/QWZ4 /0BmeP9AZnj/QGZ4/0D/ZAMA7nEAANh8AADLhQIAw4wDALuRAwCzlAkArJYYAKWWKAKdlDYHlpJB DpCPShWKjVIchItaIn+JYCd7h2csd4VuMHODdTRvgn03bIGGO2l/kD5mfptBY36oQ2F9tkRgfclE X33lQ2B99kJgff9BYX3/QGF9/0Bhff9AYX3/QGF9/0D/ZwAA43QAANJ/AADHiAEAvo8CALaVAQCu mAYAppoVAJ+aJgKYmTMGkZc/DIuVSBSFk1Aaf5FYIHqPXyV2jWUqcotsLm6KczJqiHs2ZoeEOWOG jjxghZk/XYSmQVuEtEJahMdDWoTjQlqD9EFbg/9AW4P/QFuD/z9bg/8/W4P/P1uD/z//agAA3ngA AM2DAADCjAAAuZMAALCYAACnnQIAoJ8SAJmfIwGTnjEFjJ08C4WbRhJ/mU4YepdWHnWWXSNwlGMo bJJqLGiRcTBlkHk0YY6CN16NjDpajJc9WIykP1aLskBUi8VAVIvhQFSK8z9Viv4/VYn/PlWJ/z5V if8+VYn/PlWJ/z7vbwAA1nwAAMiHAAC9kQAAtJgAAKqcAACgogAAmaQQAJOlIAGMpC4DhaM5CX+i Qw95oEwWdJ9TG2+dWiBqnGElZppoKWOZby1fmHcwW5eANFiWijdVlZU5UpWiO1CUsD1PlMM9T5Tf PE+T8jxPkv08T5L/PE+R/zxPkf88T5H/PE+R/zzkdAAAz4EAAMKMAAC4lgAArZwAAKOhAACYqAAA kKoNAIurGwCFqyoCfqo2BnipQQxyqEkSbadRGGmmWBxkpF8hYKNmJV2ibSlZoXUsVqF+L1OgiDJP n5M1TZ+gN0uerzhKnsE4SZ7dOEmd8DhJnPw4SZv/OUmb/zlJm/85SZv/OUmb/znbegAAyIcAALyS AACxmgAApqAAAJymAACRrAAAh7EIAIGyFgB8syYBdrIzBHGyPQlrsUcOZrBPE2KvVhherl0cWq1k IFesayNUrHMmUKt8KU2qhixKqpIvSKmfMEaprTJFqb8yRKraMkSo7zJDp/szQ6b/M0Ol/zRDpf80 Q6X/NEOl/zTQgQAAwY4AALWYAACpnwAAnqUAAJOsAACIsgAAfLkCAHa6EQByuyEAbrsuAmi7OgZk ukMKX7pMDlu5UxJXuFoWVLhhGVG3aRxOt3EfS7Z6Iki2hCVFtpAnQ7WdKUG1rCpAtr4qP7bYKj+0 7io+s/osPbL/LT2x/y09sf8tPbH/LT2x/y3HiQAAuZUAAKydAAChpAAAlqsAAIqyAAB/uAAAc78D AGrEDABnxRoAY8UoAV/FNQNbxT8FV8VICVTEUAxQxFgPTcRfEkrDZhVIw24XRcN4GkLDghxAw44e PsOcHzzDqyA7w7whOsPVITvC7iE5wPkiOL//JDi//yQ4v/8kOL//JDi//yS9kQAAsJsAAKSiAACY qgAAjLEAAIC5AAB1vwAAasYEAF7MCABZzxIAV9AhAFXQLgFR0DkCTtBDBEvQTAZJ0FMIRtBbC0PQ Yw1B0GsPPtB1ETzRgBM60YwUONGaFjbRqRc10bsXNNLSFzXQ7BY0z/cYM87/GjPO/xozzv8aM87/ GjPO/xqzmQAApqEAAJqpAACOsQAAgbkAAHXAAABqxwAAXs0DAFTUCABM3Q0ASt0YAEjeJgBG3jIB RN88AkLfRQM/300EPeBVBTvgXQY54GYIN+BvCTXhegoz4YYMMeGUDTDiow4u4rMOLuPHDi3j4w4t 4PIOLN/7Dyzf/RAs3/0QLN/9ECzf/RCooAAAnKcAAI+wAACDuAAAdsEAAGrJAABezwAAU9UBAEnc BgBF6Q8AQukZAEDqJAA96i4AOus2ATjsPgE27EYCM+1NAzHtVQMv7l0ELe5lBSvucAUp73sGKO+J Bybwlwcl8KcIJPG4CCPxzAgi8uUIIvDzCCLv9Qgi7/UIIu/1CCLv9QiepgAAka8AAIS4AAB3wQAA askAAF3QAABR1wAARt0AAD/qBQA89g4AOfYXADb3IAAz9ygAMfgwAC75NgEr+T0BKfpEASf6SgIl +1ICI/taAiD8YwMe/G4DHP17Axv+iQQZ/pgEGP+oBBf/twQW/8gEFv/gBBb/5AQW/+QEFv/kBBb/ 5ASTrgAAhbcAAHjAAABqyQAAXdIAAFDZAABE3wAAOuQAADX3AwAy/wwALv8SACv/GgAo/yEAJv8n ACP/LQAg/zMAHv85ARz/PwEZ/0UBF/9NARX/VQET/18BEf9qAhD/eAIO/4cCDv+WAg3/pAIM/7AC DP++Agz/wgIM/8ICDP/CAgz/wgKHtgAAeb8AAGvJAABe0wAAUNsAAEPgAAA45QAAL/AAACv/AAAn /wgAJP8OACH/EwAe/xkAG/8eABj/IwAV/ygAE/8tABH/MgAQ/zgADv8/AAz/RgEK/08BB/9ZAQT/ ZQEB/3IBAP+BAQD/jwEA/5sBAP+nAQD/qQEA/6kBAP+pAQD/qQH/LC8B/zAsAf8yLAL/MzAC/zE2 A/8wQQP/L00E/y1aBv8rZgf/KXMI/yh+Cv8niAv/J5EM/yeZDf8mnw3/JqUO/yarDv8msQ//JrgP /ybAD/8myQ//JtcP/ybmD/8m8A/+JvkP+yf/D/kn/w/5Jv8R+Cb/Efgm/xL4Jv8S+Cb/Evgm/xL/ LiwB/zMpAf81KgL/Ni0C/zY0Av81PwP/M0sE/zJXBv8wZAf/LnAJ/yx7Cv8shQz/K44N/yuWDv8q nQ//KqMP/yqpEP8qrxD/KbYQ/ym9Ef8pxxH/KdMR/injEfsq7xH4KvgQ9iv/EPQq/xL0Kv8T8yr/ FPMp/xTzKf8U8yn/FPMp/xT/MSkB/zYmAf85JgH/OikC/zsyAv87PQP/OUgF/zdUBv81YAf/M2wJ /zJ3DP8wgg3/MIsO/y+TD/8vmhD/LqAR/y6mEf8urBL/LrMS/i66Ev0uxBL7Ls8T+C7hEvUu7RLx L/cS7y//E+4u/xXtLv8W7C7/F+wu/xfsLv8X7C7/F+wu/xf/NCYB/zkjAf89IwH/PiYC/0EvAv9B OQP/P0UE/z1QBv87XAj/OWgK/zdzDf82fg7/NYcQ/TSPEfw0lhL6M50T+TOjE/gzqRT3M7AU9jO3 FPQzwBTzM8wU8DPeFO0z6xTpNPYV5zP/F+Yz/xjkMv8Z5DP/GuMy/xrjMv8a4zL/GuMy/xr/OCMB /z0gAf9BHwH/RSMB/0csAv9HNgP/RkAE/0RMBv9BWAj/P2QL+z5vDvk8eRD2O4MR9DqLE/M5kxTx OZkU8DigFe44phbtOK0W7Di0Fuo4vRbpOMkW5zjbFuM56hbgOPUY3Tj/Gts3/xzZN/8d1zf/HdY3 /x7WN/8e1jf/HtY3/x7/OyAB/0EcAf9FGgH/SyAB/00oAf9OMgL/TTwE/0pHBvpIUwj2Rl8L8kRq Du9CdBHsQX4T6kCHFOg/jhXmPpYW5T6cF+M9oxjiPaoY4D2yGN89uxndPcYZ2z3YGtY96RrSPfUd zj3+H8w8/yDLPP8hyTz/Ick8/yHJPP8hyTz/Ick8/yH/PxwB/0UXAf9LFwH/UB0B/1MkAf9ULQL/ UzcD91FCBfFOTQjsTFoL6EplD+VIbxHiR3kU30WCFt1EihfaQ5EZ2EKZGtVCnxvTQaYc0UGuHc9B tx7OQcEezEHQH8lC5R/FQvMhwkH+I8BB/yS+Qf8kvUH/Jb1B/yW9Qf8lvUH/Jb1B/yX/QhgB/0kT AP9QFAD/VhkA/1kgAf9aKAH3WjIC71g9BOhVSQfjU1UK3lFgDtlOahLUTHQW0Et8GM5JhBvMSIwc ykeTHshHmh/GRqEhxEapIsJFsSPBRbwjv0XJJL1G3yW5Ru8mtkb7J7RG/yizRv8oskb/KLFG/yix Rv8osUb/KLFG/yj/RhUA/00RAP9VEgD/WxYA/14bAPlgIwHvYCwB5l42A99cRAXYWVAK0VdbD8xU ZRTIUm4YxVB3G8NPfx3AToYfvk2OIbxMlSO6S5wkuEqkJrZKrCe0SrYos0nDKbFJ1imuSuoqq0r4 K6lK/yuoS/8rp0v/K6dL/yunS/8rp0v/K6dL/yv/SRIA/1AOAP9ZEAD/XxIA/2MWAPJlHQDnZSUA 3mQxAdRiPwXNYEsKx11WD8JaYBW+WGkZu1ZxHLhUeR+2U4Eis1KIJLFQkCavUJcorU+fKatOqCup TrIsp06+LaZOzi6jTuYuoU/1Lp9P/y6eT/8unU//Lp1Q/y6dUP8unVD/Lp1Q/y7/TBAA/1QNAP9d DgD/Yw8A+WcRAOtpFQDfahwA02osActoOwTFZUcJv2JSD7pgXBW2XWUZslttHa9ZdSGsWHwjqlaD JqdViyilVJMqo1ObLKFToy6fUq0vnVK5MJtSyTGZUuIxl1PyMZZT/zGVVP8xlFT/MJRU/zCUVP8w lFT/MJRU/zD/Tw4A/1gLAP9gCwD7ZgwA8GsNAORtDgDWbhYAzG8oAcRtNwS9a0QJt2hPD7JlWBWu YmEaqmBpHqdecCGkXXgloVt/J59ahyqcWY4smliXLphXoDCVVqoyk1a1M5FWxTSQVt00jlfwNI1X /TOMWP8zjFj/MoxY/zGMWP8xjFj/MYxY/zH/UQwA/1sJAP9jCADragcA3W4IANhxCgDPchMAxnMl Ab5yNAO3cEEIsW1MDqxqVRSnZ14Zo2VlHqBjbSKcYXQlmmB7KJdegyuUXYstklyTMI9bnDKNWqY0 i1qyNYlawTaHWtY2hlvtNoVb+zWFXP80hFz/M4Rc/zOEXP8zhFz/M4Rc/zP/UwoA/10GAPVmBADf bQMA1XIGANB1CQDJdhEAwHciALh2MQOxdD4Hq3FJDqZuUhShbFsZnWliHZlnaiKWZnElk2R4KJBj fyuNYYcuimCQMIhfmTOFX6M1g16vNoFevjiAXtE4f1/qN35f+jZ+YP81fmD/NH5g/zR+YP80fmD/ NH5g/zT/VQgA/2AEAOhpAADacAMA0HUFAMp4BwDDeg8Au3sfALN6LwKseDwHpnVGDaFzUBOccFgY l25gHZNrZyGQam4ljWh1KIpnfCuHZoQuhGSNMYFjljR/Y6E2fGKtN3piuzl5Ys45eGPoOHhj+Dd4 ZP82eGT/NXhk/zV4ZP81eGT/NXhk/zX/VwUA/2IBAOFsAADUcwIAy3gEAMV7BQC+fQ0Atn4dAK9+ LAKofDkGoXlEDJx3ThKXdFYYknJdHI5wZCCKbmskh2xyKIRreiuBaoIufmmKMXtolDR4Z582dmaq OHRmuTlzZss6cmbmOXJn9zhyZ/83cmj/NnJo/zVyaP81cmj/NXJo/zX/WQIA9mUAAN1uAADPdgEA x3sDAMB/BAC5gAwAsYIaAKqCKgKjgDcFnX1CC5d7SxGSeFQXjXZbG4l0YiCFcmkkgXFwJ35vdyt7 bn8ueG2IMXZskjRza5w2cGqoOG5qtzptask6bGrkOm1r9Thta/83bWv/Nm1r/zZta/82bWv/Nm1r /zb/WwAA62cAANlxAADMeQAAw34CALuCAwC0hAkArYUYAKaFKAGfhDUFmYJACpN/SRCNfVIWiXtZ G4R5YB+Ad2cjfHVuJ3l0dSp2c30uc3KGMXBxkDRtcJs2a2+nOGlvtTpob8c6Z2/iOmdv9Dhob/83 aG//Nmhv/zZob/82aG//Nmhv/zb/XgAA5GoAANN0AADIfAAAv4EBALeFAQCvhwcAqIkVAKGJJQGb iDMElIY+CY6ERw+JgVAVhH9XGn9+Xh57fGUieHpsJnR5cypxeHstbneEMGt2jjNodZk2ZnSlOGRz szlic8Q6YnPgOmJz8zhjc/83Y3P/NmNz/zZjc/82Y3P/NmNz/zb/YQAA4G0AAM93AADEfwAAu4UA ALOJAACqiwMAo4wTAJyNIwGWjDADkIs8CIqJRQ6Eh04Tf4VVGHuDXB13gmMhc4BqJW9/cSlsfXks aXyCL2Z7izJjepc1YHmjN155sThdecI5XHndOV158ThdeP43Xnj/Nl54/zVeeP81Xnj/NV54/zX1 ZAAA3HAAAMp6AADAgwAAtokAAK6NAACkjwAAnZEQAJeSIACRkS4DipA5B4SOQwx/jUwSeotTF3WJ WhtxiGEgboZoI2qFbydnhHcrY4N/LmCCiTFdgZQzW4ChNll/rzdXf8A4V3/aN1d/8DdYfv02WH7/ NVh+/zVYfv81WH7/NVh+/zXpaAAA1HQAAMZ+AAC7hwAAso0AAKiRAACelAAAlpYOAJGXHACLlysC hZY3BX+UQQp5k0kQdJJRFXCQWBlsj18daI5mIWWMbSVhi3QoXop9LFuJhy9YiJIxVYefM1OHrTVS h741UYfWNVGG7jVShfs0UoX/NFKF/zNShf8zUoX/M1KF/zPjbAAAznkAAMGDAAC2iwAArJEAAKKV AACXmQAAj5sLAIqdGACEnScBfpw0BHmbPghzmkcNb5lPEmqYVhdml10bY5VjHl+UaiJck3IlWZJ7 KFWRhStSkZAuUJCdME6QqzFMkLwyTJDTMkyP7TJMjvoyTI3/MUyM/zFMjP8xTIz/MUyM/zHccQAA yH4AALuIAACxkQAAppYAAJyaAACQnwAAh6IGAIGjFAB8pCMBd6QwA3KjOwZtokQLaKFMD2SgVBNg n1oXXZ5hG1mdaB5WnXAhU5x5JFCbgydNmo4pSpqbLEiaqS1HmbotRprQLUaY6y1Gl/kuRpb/LkaW /y5Glv8uRpb/LkaW/y7RdwAAwYQAALaOAACqlQAAoJsAAJWfAACKpAAAfakAAHerEABzqx4Ab6ws AWqrNwRlq0EHYapJC12pUQ9aqVgTV6hfFlOnZhlQp24cTaZ2H0qlgSFIpYwkRaWZJkOkqCdCpLgo QaTOJ0Gj6idAovgoQKH/KUCg/ylAoP8pQKD/KUCg/ynJfgAAuosAAK+UAACjmgAAmKAAAI2lAACC qgAAdbAAAGyzDABptBgAZbQnAWG0MwJetD0EWrRGB1azTgpTs1UNULNcEE2yYxNKsmsWR7F0GEWx fhpCsIodQLCXHj6wpiA8sLcgPLDMIDyv6CA7rvchOq3/Ijqs/yM6rP8jOqz/Izqs/yPAhgAAs5IA AKeZAACcnwAAkKYAAISsAAB5sQAAbbcAAGG8BQBdvRIAWr4gAFi+LQFUvjgCUb5CBE6+SgZMvlII Sb5ZCka+YAxEvmgOQb1xET+9fBM8vYgVOr2VFji9pBc3vbUYNr3KGDe85xc1u/YZNbr/GjS5/xs0 uf8bNLn/GzS5/xu4jwAAqpgAAJ+fAACTpgAAh6wAAHuzAABvuQAAY74AAFjEBABQyAwATcgXAEzJ JQBKyjEAR8o7AUXKRAJDykwDQcpUBD7KXAY8ymQHOstuCTjLeAo2y4UMNMuSDTLLog4xy7IPMMzH DzDL5Q4vyfUPLsj9ES7H/xIux/8SLsf/Ei7H/xKulwAAoZ4AAJWlAACJrQAAfLQAAHC7AABkwQAA WcYAAE7LAwBF0AgAPtUOAD3VGgA81iYAO9cxADnYOwA42UUBNtlNATXZVgIz2l4CMdpoAzDbcwQu 238FLNuNBSrcnQYp3K0GKN3BBijd3gYn2+8HJtn5CCbY/gkm2P4JJtj+CSbY/gmknQAAmKUAAIut AAB+tAAAcbwAAGXDAABZyQAATc0AAEPTAQA62QYANeQNADPkFgAx5CAAMOUqAC7mMwAt5jwAK+dE ACrnTAEo6FQBJ+hdASXpZwIj6XMCIuqBAiDqkQMf66EDHeuyAxzsxwMc7OEDG+rxAxvp+QMb6fkD G+n5Axvp+QOapAAAjawAAH+1AAByvQAAZcUAAFnLAABM0AAAQdUAADjcAAAv4QIALfENACvxEwAo 8hwAJvIkACTzKwAi9DIAIfQ5AB/1QQAd9UkAG/ZRABn3WgEX92UBFfhyART5gQET+ZIBEvqiAhH6 swIQ+8YCEPvdAhD76QIQ++kCEPvpAhD76QKPqwAAgbQAAHO9AABmxgAAWc0AAEvTAABA2QAANd4A ACzjAAAm8QAAJP4KACH/EAAf/xYAHP8cABn/IgAX/ygAFf8uABP/NQAS/zwAEP9DAA7/TAAN/1YA C/9iAAn/bwAI/38BB/+QAQX/oAEE/64BBP+8AQP/xwED/8cBA//HAQP/xwGDtAAAdb0AAGfGAABa zwAAS9UAAD/cAAAz4QAAKeUAACHsAAAe/QAAGv8FABf/DAAV/xAAEv8UABD/GQAO/x4ADf8jAAv/ KAAI/y4ABv81AAP/PQAA/0YAAP9RAAD/XQAA/2sAAP97AAD/iwAA/5kAAP+lAAD/rAAA/6wAAP+s AAD/rAD/JywB/yoqAf8rKgH/Ki4B/yY0Av8lPwL/I0sD/yFYA/8gZAT/HnAE/x17BP8dhQX/HY4F /x2WBf8dnAb/HaIG/xyoBv8crgf/HLQH/xy7B/8cwwf/HM4H/x3fB/8d6wf8HfUH+R3+Bvce/wf3 Hf8I9h3/CfYd/wn2Hf8J9h3/CfYd/wn/KSoB/ywnAf8uJwH/LSoB/ywyAf8rPQL/KUkD/ydVA/8l YQT/I20E/yJ4Bf8iggX/IYsG/yGTBv8hmgf/IaAH/yGlB/8hqwj/IbEI/yG4CP8hwQj/IcsI/CHc CPkh6Qj2IfQI8yL9B/Ii/wnxIv8K8SH/C/Ah/wvwIf8L8CH/C/Ah/wv/LCYB/zAkAf8xIwH/MSYB /zIvAf8xOgL/L0YD/y1SA/8rXgT/KWkF/yh1Bf8nfwb/J4gH/yaQB/8mlgj/Jp0I/iajCf0mqQn8 Jq8J+ya2Cfomvgn4JsgJ9ibZCfIm6AnvJ/MJ7Sf9Cusm/wvqJv8N6Sb/Degm/w7oJv8O6Cb/Dugm /w7/LyMB/zMgAf81HwH/NyMB/zgsAf84NwL/NkIC/zROA/8yWgT/MGUF/y5wBv4tewf8LYQI+iyM Cfgskwn3LJkK9iugCvQrpgrzK6wL8iuzC/EruwvvK8YL7izUC+os5gvmLPIL5Cz8DeIs/w/hLP8Q 4Cz/EN8s/xHfLP8R3yz/Ed8s/xH/Mx8B/zcbAf86GgH/PSAB/z8oAf8/MgH/PT4C/ztJA/85VQT7 N2EG9zVsB/U0dgjyM38J8DKHCu8yjwvtMpYL7DGcDOoxogzpMakM6DGwDeYxuQ3lMcMN4zLRDd8y 5QzcMvEP2DH8EdUx/xLSMf8T0TH/FNAx/xTQMf8U0DH/FNAx/xT/NxsB/zsXAP8/FgD/QxwA/0Yk Af9GLgH/RDkC/EJEA/Y/UATxPVwG7TxnB+o7cQnoOnoK5TmDC+M4iwziOJIN4DeZDd83nw7dN6YO 2zetD9k2thDXNsEQ1TbOENE34xHNN/ETyjf7Fcg3/xbGN/8XxTf/GMQ3/xjEN/8YxDf/GMQ3/xj/ OxcA/0ATAP9FEwD/SRgA/0wgAP9MKQH6SzMB8kg+AuxGSgTnRFYG40NiCN9BbArcQHUM2T9+DdU+ hg/TPY0Q0T2UEc88mxLNPKITzDypFMo7sRTIO7sVxzvIFsU83BbBPO0Xvjz5Gbs8/xq6PP8buTz/ G7g8/xu4PP8buDz/G7g8/xv/PhQA/0QQAP9KEQD/TxQA/1EbAPtSIwDxUS0B6U84AeJNRQPcS1EF 1klcCNFHZgvORnAOy0V4EMhEgBLGQ4cUxEKOFcNClRbBQZwXv0GkGL1ArBm8QLYaukDCGrhA0hu1 QegbskH2HbBB/x6uQf8erUH/HqxB/x6sQf8erEH/HqxB/x7/QhEA/0cNAP9PDgD/UxEA/1YVAPNX HADoViUA4FUxAddTPwLPUkwFylBXCcZOYQ3DTGoQwEpyEr1JehW7SIIWuUeJGLdHkBm1Rpcbs0af HLFFpx2wRbEerkW8H6xFzB+qReMgp0bzIaVG/yGjRv8iokb/IaJG/yGiRv8hokb/IaJG/yH/RQ4A /0sKAP9TDAD/Vw0A+VoQAOtbFADfWhwA1ForAMxaOwLGWEgFwVZTCbxUXA25UmURtVBtFLNPdRew TnwZrk2EGqxMixyqS5IeqEqaH6ZKoyGkSawio0m4I6FJxiSfSt4knUrwJJtK/SWZS/8kmUv/JJhL /ySYS/8kmEv/JJhL/yT/SAwA/08IAP9WCAD1WwkA6V4KAOReDQDVXxUAy2AnAMRfNgK+XkMFuFtO CbRZWA6wV2ESrFVpFapUcBinU3gapVJ/HKJRhh6gUI4gnk+WIpxOnyOaTqglmE6zJpdOwieVTtYn k07sJ5FP+yeQT/8nkFD/Jo9Q/yaPUP8mj1D/Jo9Q/yb/SgkA/1MFAPhaBADiXwMA2mIGANRjCQDN YxIAxGUjALxlMgK2Y0AFsWFLCaxeVA6oXF0SpVtlFqFZbBifWHMbnFZ6HppVgiCYVIoilVSSJJNT myaRUqUnj1KwKY1SviqMUtAqilPpKolT+SmIVP8ph1T/KIdU/yiHVP8oh1T/KIdU/yj/TAUA/1YB AOldAADcYwIA0WcFAMxoBwDGaBAAvWogALZpLwGwaDwEqmVHCaVjUQ2hYVoSnV9hFppeaRmXXHAc lVt3HpJafiGQWYYjjViOJYtXlyeJV6EphlatK4VWuiyDVswsglfmLIFX9yuAWP8qgFj/KoBY/ymA WP8pgFj/KYBY/yn/TwIA/VkAAOJgAADVZwAAzGoDAMZsBQDAbA4At20dALBuLAGqbDkEpWpECKBo Tg2bZlcRl2ReFZRiZRmRYGwcjl9zHoteeyGJXYIkhlyLJoRblCiBW54qf1qqLH1aty18Wskuelrj Lnpb9S16XP8seVz/K3pc/yp6XP8qelz/Knpc/yr/UQAA8lsAAN5kAADPagAAx24CAMBwBAC6cAwA snEaAKtxKQGlcDcDn25CB5psSwyWalQRkmhcFY5mYxiLZWkbiGNwHoVieCGCYX8kgGCIJn1fkSl7 X5wreF6nLXZetS51XsYvdF7hL3Rf8y50X/8sdGD/K3Rg/yt0YP8rdGD/K3Rg/yv/UwAA6F4AANln AADLbQAAw3EBALtzAgC1cwkArXUXAKd1JwGhdDQDm3I/B5VwSQuRblIQjGxZFIlqYBiFaWcbgmhu Hn9mdSF9ZX0kemSFJndkjyl1Y5orcmKlLXBisy9vYsQvbmLeL25j8i5uY/4tbmP/LG5j/ytuY/8r bmP/K25j/yv/VQAA5WAAANNpAADIcAAAv3QAALd3AQCwdwcAqHgVAKJ5JACceDIClnY9BpF0RwuM ck8PiHBXE4RvXheAbWQafWxrHXprcyB3anojdGmDJnJojSlvZ5csbWejLmtmsS9pZsEwaWbbMGln 8C9pZ/0taWf/LGpn/ytqZ/8ramf/K2pn/yv+WAAA4WMAAM9sAADEcwAAu3gAALN6AACregQApHsS AJ58IgCYfC8Ckno7BYx4RQqHd00Og3VVEn9zXBZ7cmIaeHBpHXVvcCBybngjb22BJm1siylqbJYr aGuhLmZrry9kar8wY2vYMGNr7y9ka/wtZGv/LWVr/yxla/8sZWv/LGVr/yz0WwAA3WYAAMtvAADA dgAAt3sAAK9+AACmfgEAn38QAJmAHwCTgC0CjX85BYh9QwmDe0sNfnpTEnp4WhZ2d2EZc3VnHHB0 bh9tc3YianJ/JmhxiShlcJQrYnCgLWBvrS9fb70vXm/UL15v7S9fb/stX2//LGBv/yxgb/8sYG// LGBv/yzrXgAA2GkAAMdyAAC8eQAAs38AAKuCAAChggAAmYMOAJSEHQCOhCsBiIM2BIOCQAh+gEkM eX9REHV9WBRyfF8YbntlG2t6bB5oeXQiZXh9JWJ3hydgdpIqXXWeLFt1qy5adLsvWXXRL1l07C5Z dPotWnT/LFp0/ytadP8rWnT/K1p0/yvmYQAA0W0AAMN2AAC5fQAAr4MAAKaGAACchgAAlIgMAI6J GQCJiSgBg4k0A36HPgd5hkcLdIVPD3CEVhNtgl0XaYFjGmaAah1jf3IgYH56I119hCZafI8pWHuc K1Z7qSxUe7ktU3vOLVR66i1UevksVHn/K1V5/ypVef8qVXn/KlV5/yrhZQAAzHEAAL96AAC0ggAA q4cAAKGKAACViwAAjY0JAIeOFgCCjyQBfY8xAniOOwVzjUQJb4xMDWuKVBFniVoVZIhhGGGHaBte hnAeW4V4IViEgiRVhI0mUoOaKVCCpypPgrcrToLMK06C6CtOgfgqT4D/Kk+A/ylPgP8pT4D/KU+A /ynbagAAx3UAALp/AACwhwAApowAAJyPAACPkQAAhpMFAICUEgB7lSEAd5UtAXKVOARtlEIHaZNK C2WSUQ5ikVgSXpBfFVuPZhhYjm0bVY52HlKNgCFPjIsjTYuYJUuLpSdJi7UoSIvKKEiK5ydJifco SYj/J0mH/ydJh/8nSYf/J0mH/yfRbwAAwXsAALWEAACrjAAAoJAAAJWUAACJlwAAfpoAAHebDgBz nBwAb50pAWucNQJmnD8FYptHCF+aTwtcmlYPWJlcElWYYxVTmGsXUJdzGk2WfR1KlYkfR5WVIUWV pCNElLMjQ5TII0OU5SNDkvUkQ5H/JEOQ/yRDkP8kQ5D/JEOQ/yTKdQAAu4EAALCLAACkkQAAmpUA AI+ZAACDnQAAdKIAAG6jCwBqpBcAZqUlAGOlMQFfpDsDW6REBVikSwhVo1MLUqNaDU+iYRBNomgT SqFxFUegexhEoIYaQp+THECfoh0+n7IePZ/GHj2f4x09nfQePZz/Hzyb/x88m/8gPJv/IDyb/yDC fAAAtYgAAKmQAACelgAAk5sAAIefAAB7pAAAb6gAAGOsBABfrREAXK0fAFquKwBXrjYBVK5AA1Gt SAVOrU8HS61XCUmtXgtGrGYNRKxuD0GseBE/q4QTPKuRFTqroBY5q7AXOKvDFziq4Rc3qfMYN6f+ GTam/xo2pv8aNqb/Gjam/xq6hAAAro8AAKKWAACXmwAAi6EAAH+mAABzqwAAZ68AAFq0AABTtgwA UbcXAE+3JABNuDAASrg6AUi4QwJGuEsDRLhSBEG4WgY/uGIHPbhrCTq4dQs4t4EMNreODjS3nQ8z t60PMrfBDzG33g8xtvIQMLT8ETCz/xIws/8TMLP/EzCz/xOyjgAApZUAAJqbAACOogAAgqgAAHWt AABpswAAXrcAAFO7AABHwAUAQ8IQAELCGwBAwycAP8MyAD7EPAA8xEQBOsRNATjEVQI2xF0DNcRm BDPFcAQxxXwGL8WKBi3FmgcrxaoIKsW+CCrF2ggqxPAIKcL7CSjB/woowf8LKMH/CyjB/wuolQAA nZsAAJGiAACEqQAAeK8AAGu1AABfuwAAVL8AAEnDAAA/yAQANs0JADPOEQAyzxwAMc8nADDQMQAv 0DoALtFDAC3RTAAr0lUAKtJfASjTaQEn03YBJdOEAiTUlAIi1KYCIdW5AiHV0gIg0+sCINL2Ax/R /wQf0f8EH9H/BB/R/wSfmwAAlKIAAIepAAB5sQAAbbgAAGC+AABUwwAASccAAD7LAAA10AEALdUG ACXbCwAk3hIAI94cACLfJQAh4C4AIOA3AB/hQAAe4UoAHeJTABzjXgAb42oAGuR4ABjkiAEX5ZoB FuasARXmwAEU590BE+XvARPj+gET4/oBE+P6ARPj+gGWogAAiakAAHuxAABuuQAAYcAAAFTGAABI ygAAPc8AADPTAAAq2QAAIt4CAB7rCgAc7BAAG+0XABntHwAX7iYAFe4tABTvNQAT8D0AEfBGABDx UAAP8lsADvJpAA3zeAAM9IoAC/WcAAr1rgAJ9sIACfbZAAj17QAI9e0ACPXtAAj17QCLqQAAfbIA AG+6AABiwgAAVckAAEfOAAA70gAAMdgAACfdAAAf4QAAGegAABb4BgAU+g0AEvsSABD8FwAO/B0A Df0jAAz9KQAK/jAACP84AAb/QQAD/0wAAP9YAAD/ZgAA/3cAAP+JAAD/mwAA/6sAAP+7AAD/zgAA /88AAP/PAAD/zwB/sgAAcboAAGPDAABWywAASNEAADrWAAAv3QAAJeEAABzlAAAU6QAAEfcAAA// AQAN/wkAC/8NAAj/EAAG/xQAA/8YAAD/HgAA/yMAAP8qAAD/MgAA/zwAAP9HAAD/VAAA/2MAAP9z AAD/hQAA/5cAAP+kAAD/sgAA/7IAAP+yAAD/sgD/IikB/yMnAf8jKAH/ICsB/xwxAf8aPQH/GEkB /xZWAv8UYgL/E24C/xJ4Av8SggL/EosC/xKSAv8SmQL/Ep4C/xKkAv8SqQL/Eq8C/xK2Av8SvQL/ EscC/xLUAv0S5QL6EvEC9xL6AvUT/wL0E/8D9BP/A/QT/wP0E/8D9BP/A/QT/wP/JCcB/yYkAf8m JAH/JCcB/yIvAf8gOgH/HkYB/xxTAv8aXwL/GGoC/xd1Av8XfwL/F4gC/xePAv8XlgL/F5wC/xeh Av8XpwL/F60C/xezA/4XuwP9F8UD+hfRA/cX5AL0F+8C8Rj6Au8Y/wPuGP8E7hj/BO0Y/wXtGP8F 7Rj/Be0Y/wX/JyMB/ykgAP8pIAD/KCMA/yktAf8nNwH/JUMB/yNPAv8hWwL/H2YC/x1xAv8dewP/ HYQD/x2MA/4dkwP8HJkD+xyfA/ocpAP5HKoD9xyxA/YcuQP1HcID8x3OA/Ad4QPsHe4D6R75BOge /wXmHv8G5R7/BuUe/wflHv8H5R7/B+Ue/wf/Kx8A/y0cAP8tGwD/LiAA/y8pAP8vNAH/LD8B/ypL Av8oVwL/JmIC/SVtA/okdwP4I4AD9iOIA/UjjwPzI5UE8iObBPEjoQTvI6gE7iOuBO0jtgTrI78E 6iPMBOcj4ATjJO0E4CT5Bt4k/wfcJP8I2yT/Cdok/wnaJP8J2iT/Cdok/wn/LhsA/zEXAP8yFgD/ NRwA/zYlAP82LwH/NDoB/zFGAfsvUgL3LV0C8yxoA/ArcgPuKnsE7CqEBOoqiwToKpIF5ymYBeYp ngXkKaUF4ymsBeEptAXgKr0F3irKBdsq3gXWKu0H0ir4Cc8r/wrNKv8LzCr/DMsq/wzLKv8Myyr/ DMsq/wz/MhcA/zUSAP84EgD/OxgA/z0gAP88KgD+OzUB9zlBAfE2TQLsNFgC6DNjA+UybQTjMnYE 4DF/Bd4xhwXcMI4G2jCVBtgwmwfWL6IH1C+pCNIvsQjQL7oJzzDGCc0w2AnJMeoKxjH3DMMx/w7B Mf8PwDH/D78x/w+/Mf8QvzH/EL8x/xD/NhMA/zkPAP8+EAD/QRQA/0MaAP9CIwD1QS4A7T46Aec9 RgHhPFMC3TpeA9k5aATUOHEG0Th6B883gQjNN4gJyzaPCso2lgrINp0LxjWkDMU1rAzDNbUNwTXA DcA2zw69NuYOuTb0ELc2/xG1Nv8StDb/E7M2/xOzNv8Tszb/E7M2/xP/ORAA/z0LAP9DDQD/RxAA /0gUAPVHHADrRiYA40QyANxEQQHUQ00Cz0FYBMtAYgbIP2sIxT50CcM9ewvBPYMMvzyKDb08kA67 PJcPujufELg7pxC2O7ARtTu7ErM7yRKxO+ATrjzxFKs8/RWpPP8WqDz/Fqg8/xanPP8Wpzz/Fqc8 /xb/PQ0A/0IIAP9ICgD/SwwA+kwPAOxMFADhSh0A1kosAM5LOwHJSkgCxEhTBMBHXQe8RmYJukRu C7dDdg21Q30Os0KEELFBixGwQZISrkCaE6xAohSqQKsVqUC2FqdAxBemQNkXo0HtGKBB+xifQf8Z nkH/GZ1B/xmdQv8YnUL/GJ1C/xj/QAkA/0YFAP9MBQDxTwcA5lAJAONPDQDVTxUAzFEnAMVRNgG/ UEMCuk9OBbZNWAizTGEKsEppDa1JcA+rSHgRqUd/EqdHhhSlRo0Vo0aVFqFFnhifRacZnkWyGpxF vxqaRdEbmEXpG5ZG+ByVRv8blEb/G5NG/xuTR/8bk0f/G5NH/xv/QgUA/0oBAPJQAADhVAEA2VYF ANNVCQDMVRIAw1YiALxXMgG3Vj8CslRKBa1TVAiqUV0Lp1BkDqRObBCiTXMSn0x6FJ1MgRabS4kX mUqRGZdKmRqVSaMbk0muHZJJux6QScwejkrlHo1K9h6LS/8ei0v/HYpL/x2KS/8dikv/HYpL/x3/ RQAA/00AAOVUAADZWQAAz1sDAMpbBgDEWg8Au1seALVcLgGvWzsCqlpGBaZYUAiiVlkLn1VgDpxT aBGZUm8Tl1F2FZVQfReTUIQZkE+NGo5OlhyMTp8eik6qH4hOtyCHTsghhU7iIYRP8yCDT/8gg0// H4JQ/x+CUP8eglD/HoJQ/x7/RwAA81EAAN9YAADRXQAAyWACAMNgBAC9Xg0AtWAaAK5hKgCpYDcC pF5DBJ9dTQibW1ULmFldDpVYZBGSV2sTj1ZyFo1VeRiLVIEaiFOJHIZTkh6EUpwfglKnIYBStCJ/ UsQjfVLeI3xT8SJ8U/4he1T/IXtU/yB7VP8ge1T/IHtU/yD/SgAA6VQAANpcAADMYQAAw2QAALxk AgC2YwoAr2QXAKllJwCjZDQCnmNABJlhSgeVX1ILkV5aDo5dYRGLW2gTiVpvFoZZdhiEWH0agViG HH9Xjx59Vpkge1akInlWsSN3VsEkdlbaJHVX7yR1V/0jdVj/InVY/yF1WP8hdVj/IXVY/yH/TQAA 5VcAANNfAADIZAAAv2cAALdoAACxZwcAqWgUAKNpJACeaDIBmWc9BJRlRweQZE8KjGJXDYhhXhCF X2UTg15sFoBdcxh9XXoae1yDHXlbjB92W5chdFqiI3JaryRxWr8lcFrVJW9b7SVvW/wjb1v/Im9b /yJvW/8hb1v/IW9b/yH6TwAA4VoAAM9iAADEZwAAu2sAALNsAACsagQApGsSAJ5sIQCZbC8BlGs6 A49pRAaKaE0JhmZVDYNlXBCAZGITfWJpFXpicBh4YXgadWCAHXNfih9wX5Qhbl6gI2xerSVrXrwm al7RJmle7CVqX/skal//I2pf/yJqX/8ial//Impf/yLwUgAA3V0AAMtlAADAawAAt24AAK9vAACn bgEAoG8QAJpwHwCUcCwBj284A4ptQgaGbEsJgmpSDH5pWQ97aGASd2ZmFHVmbhdyZXUacGR+HW1j iB9rY5IiaWKeJGdiqyVlYromZGLPJmRi6iZlYvokZWP/I2Vj/yJlY/8iZWP/ImVj/yLrVQAA2GAA AMhoAAC8bgAAs3EAAKtzAACicQAAm3IOAJVzHACQdCoBinM2AoVyQAWBcEgIfW9QC3ltVw52bF4R c2tkFHBqbBdtaXMaa2l8HGhohh9mZ5AhZGecI2JmqSVgZrkmX2bNJl9m6CZgZvkkYGb/I2Bm/yNh Zv8iYWb/ImFm/yLoWAAA02MAAMRrAAC5cQAAsHUAAKd3AACedQAAlnYNAJB3GQCLeCcAhnczAoF2 PQR8dUYHeHNOC3VyVQ5xcVwRbnBjFGtvahZpbnEZZm56HGNtgx5hbI4hX2uaI11rpyVba7cmWmvK Jlpr5yVba/ckW2r/I1xq/yJcav8iXGr/Ilxq/yLjWwAAzmYAAMBuAAC2dAAArHkAAKN7AACYeQAA kHoLAIp7FgCFfCQAgXwxAXx7OwR3ekQGc3lMCnB4Uw1sd1oQaXZhE2d1aBZkdG8YYXN4G15ygR1c cYwgWnGYIlhwpiRWcLUlVXDIJVVw5SVVcPYkVm//I1Zv/yJXb/8iV2//Ildv/yLfXwAAymkAALxy AACyeAAAqX0AAJ9/AACSfgAAin8HAISAEwCAgSEAe4EuAXeAOQNygEIFbn9KCGt+UQtofVgOZHxf EWJ7ZhRfem0XXHl1GVl4fxxXeIoeVHeWIVJ2pCJRdrMjUHbGJFB24yNQdfUjUXX/IlF0/yFRdP8h UXT/IVF0/yHYYwAAxW0AALh2AACufQAApYIAAJqDAACNgwAAhIQDAH2FEAB5hh4AdYcrAXGHNgJt hj8EaYVHB2WETwpig1YNX4NcD1yCYxJagWsVV4BzGFR/fRpRf4gcT36UH01+oiBLfbEhSn3EIkp9 4SFLfPQhS3v/IEt7/yBLe/8gS3v/IEt7/yDQZwAAwHIAALR7AACqggAAoIYAAJWIAACHiAAAfIoA AHaMDgByjRoAbo4nAGqOMgFmjTwDY41EBWCMTAhci1MKWotaDVeKYRBUiWgSUYhxFU+IehdMh4Ua SoaSHEiGoB1Ghq8eRYXCHkWF3x5FhPIeRYP+HkWC/x5Fgv8eRYL/HkWC/x7KbQAAungAAK+BAACl hwAAmosAAI+NAACBjgAAdJEAAG6TCgBplBUAZpUiAGOVLgFglTgCXJVBBFmUSQZWlFAIVJNXClGT XgxOkmYPTJJuEUmReBRGkIMWRJCQGEKPnhlAj60aP4/AGj+P3Bo/jfEaP4z9Gz+L/xs/i/8bP4v/ Gz+L/xvCcwAAtX4AAKqHAACfjAAAlJAAAIiTAAB7lQAAbJkAAGWbBABgnBAAXZ0dAFueKQBYnjQB VZ49AlKdRQNQnU0FTZ1UB0ucWwlInGMLRpxrDUObdQ9Bm4ARPpqNEzyamxQ6mqsVOZq9FTma2RU5 mO8WOZf8FjiW/xc4lf8XOJX/FziV/xe7egAAr4UAAKSMAACYkQAAjZUAAIGaAAB1nQAAaKAAAFuk AABWpQwAU6YXAFGnIwBPpy8ATKc4AUqnQQFIp0kCRqdQBEOnWAVBp18GP6ZoCD2mcgo6pn0LOKaK DTalmQ40pakPM6W7DzOl1A8zpO4PMqL7EDKh/xEyof8RMqH/ETKh/xG0ggAAqIwAAJ2SAACSlwAA hpwAAHmhAABtpQAAYakAAFWsAABLrwUAR7AQAEWwHABEsScAQrEyAEGyOwA/skMBPbJLATuyUwI5 slsDN7JkBDWybgUzsnkGMbKHBy+xlggusqYILbK4CSyy0AgssOwJK6/5Ciuu/wsqrf8LKq3/Cyqt /wutiwAAoJIAAJWYAACJnQAAfaMAAHGoAABkrQAAWbEAAE20AABCuAAAO7oKADi7EwA3vB4ANbwp ADS9MgAzvTsAMr1EADG+TAAvvlUBLr5eASy+aAEqvnQCKb6CAie/kQMmv6IDJL+0AyO/ywMjvugD I7z3BCK7/wUiu/8FIrv/BSK7/wWkkgAAmJgAAIyeAACApQAAc6sAAGewAABbtQAAT7kAAES8AAA6 wAAAMMQEACrHCwAoyBMAJ8kdACbJJwAlyTAAJMo5ACPKQgAiy0sAIctVACDMXwAfzGwAHc16ABzN igAbzZwAGc6uARjOxQAYzeQAGMz0ARjK/AEYyv8CGMr/AhjK/wKbmQAAj58AAIKmAAB1rQAAaLMA AFy5AABQvQAARMEAADnEAAAwyAAAKMwBACDQBgAZ1QsAFtcQABXYGQAV2SIAFNkrABPaNAAT2j0A EttIABHcUwAR3V8AEN1tABDefgAO35EADuCkAA3guAAM4NIAC9/tAAze9wAM3fsADN37AAzd+wCS nwAAhacAAHeuAABqtQAAXbwAAFDBAABExQAAOMkAAC7NAAAl0QAAHtUAABbaAQAR3gYAEOcNAA7n EgAN6BkADOghAAvpKQAK6jEACeo7AAfrRQAF61EABOteAAPrbgAB64AAAOqUAADqpwAA67wAAOvS AADr6QAA7O8AAOzvAADs7wCHpwAAea8AAGu3AABevgAAUcUAAEPJAAA3zQAALdEAACPWAAAb2wAA E98AAA7jAAAM7gIACvYKAAf2DgAF9hIAA/YYAAD1HgAA9SUAAPUuAAD1NwAA9kIAAPZOAAD2XQAA 9m4AAPaBAAD2lQAA96cAAPe3AAD4xwAA+NAAAPjQAAD40AB7rwAAbbgAAGDAAABSyAAARM0AADfR AAAr1wAAIdwAABjgAAAR5AAADOcAAAfvAAAE+gAAAf8DAAD/CAAA/w0AAP4QAAD+FAAA/xoAAP8h AAD/KQAA/zMAAP8+AAD/SwAA/1sAAP9sAAD/gAAA/5IAAP+hAAD/rQAA/7MAAP+zAAD/swD/HCYA /xwkAP8aJQD/FScA/xEuAP8QOgD/DkcB/w1TAf8LXwH/CmsB/wp1Af8KfwH/CocB/wqOAf8KlQH/ CpsB/wmgAf8JpQD/CasA/wmxAP8JuAD/CcEA/gnMAPwJ3gD5CesA9Qn2APMJ/wDyCv8A8Qr/AfEL /wHxC/8B8Qv/AfEL/wH/HyMA/x8hAP8eIQD/GSQA/xcsAP8VNwD/E0QA/xFQAf8QXAH/DmcB/w5y Af8OewH/DoQB/w6LAf8OkgH/DpgB/w6dAf8OowH+DqgB/A6uAfsOtQD6Dr4A+A7JAPUO2wDyDuoA 7g71AOwO/wHrD/8B6g//AeoQ/wHpEP8B6RD/AekQ/wH/Ih8A/yIcAP8hHAD/HyAA/x8pAP8cNAD/ GkAA/xdMAf8VWAH/FGMB/xNuAf8TdwH+E4AB/BOIAfoSjgH5EpUB+BKaAfYSoAH1EqYB9BKsAfMS swHxErwB8BLHAe0S2AHpE+gB5hP1AeQU/wHiFP8C4RX/AuEV/wLgFf8C4BX/AuAV/wL/JRsA/yYX AP8kFgD/JRwA/yYlAP8kMAD/ITsA/x9IAP8dVAH9G18B+RppAfcacwH0GXwB8hmEAfEZiwHvGZEB 7hmXAewZnQHrGaMB6RmqAegZsQHnGboB5RnFAeMZ1QHfGugB3Bv1Atgb/wLVHP8D1Bz/A9Mc/wTS HP8E0hz/BNIc/wT/KRcA/yoTAP8pEgD/LBgA/ywhAP8sKwD/KTcA/SdDAPclTwHzI1oB7yJkAewh bgHpIXcB5yF/AeUhhgHkIY0B4iCUAeEgmgHfIKAB3iCnAdwhrwHaIbgC2CHDAtUh0wLRIucCzSL0 A8oj/wTII/8FxyP/BsYj/wbGI/8GxiP/BsYj/wb/LBIA/y4PAP8wEAD/MxQA/zMbAP8yJQD6MDAA 8i48AOwsSQDnKlUB4ypfAeApaQHdKXIB2ih6AdcoggLVKIkC0yiQAtEolgPPKJwDziijA8woqwPK KLMDySi+BMcozATFKeIEwSrxBr4q/ge8Kv8Iuir/CLoq/wi5Kv8JuSr/Cbkq/wn/MA8A/zILAP82 DQD/OBAA/zkVAPk3HgDvNSgA5zM1AOAyQgDbMk8A1TFaAdAxZALNMG0CyzB1A8kwfAPHL4MExS+K BMQvkQXCL5cFwS+eBr8vpga9L68GvC+5B7ovxwe4MN0HtTDuCbIw+wqwMP8LrjD/C64w/wutMP8L rTD/C60w/wv/MwwA/zYGAP88CQD/PgwA/T0QAO88FQDkOR8A2zktANI6PADNOkkByDlUAcQ5XgLB OGcDvzdvBL03dgW7Nn0GuTaEB7c2iwe2NZIItDWaCbM1oQmxNaoKrzW0C641wQusNdQLqTbqDKY2 +A2lNv8Oozf/DqI3/w6iN/8Oojf/DqI3/w7/NwcA/zsCAP9AAwDyQgUA6UIJAOU/DgDYPhYAzkAn AMdBNgDCQUQBvUFPArlAWQO2P2EEtD5pBrE9cQevPXgIrjx/Caw8hgqqO40LqTuVDKc7nQ2lO6YN ozqwDqI7vA+gO80PnjvmEJs89RGaPP8RmTz/EZg8/xGYPP8RmDz/EZg8/xH/OgEA/0AAAO9FAADh SAAA2UgFANNGCQDMRRIAxEciAL1IMQC4SD8Bs0dKArBGVASsRV0FqkRkB6dDbAilQnMKo0J6C6FB gQygQYgNnkCQD5xAmBCaQKERmECsEpdAuBKVQMgTk0DhE5FB8xSQQf8Uj0H/FI5C/xOOQv8TjkL/ E45C/xP/PAAA+UQAAORKAADYTgAAzk8CAMlNBgDDSw8Au00dALVOLQCvTjoBq01GAqdMTwSkS1gG oUpgCJ5JZwmcSG4Lmkd1DZhGfA6WRoMPlEWLEZJFlBKQRZ0TjkWoFIxFtBWLRcQWikXcFohG8BaG Rv0Whkb/FoVH/xWFR/8VhUf/FYVH/xX/PwAA7EgAAN1PAADPUwAAxlUAAMBTAwC7UQwAs1IZAK1T KQCoUzYBo1JCAp9RSwScUFQGmU9cCJZOYwqUTWoMkUxxDo9LeA+NS38Ri0qHEolKkBSHSZoVhUml F4NJsRiCScAYgUrWGX9K7Rh+S/wYfkv/F31L/xd9S/8WfUv/Fn1L/xb/QwAA5kwAANZTAADJWAAA wFkAALpYAQC0VgkArFcWAKZYJQChWDIBnVc+AphWSASVVVEGklRYCI9SXwqMUmYMilFtDohQdBCF T3sSg0+EE4FOjRV/TpcXfU6hGHtNrhl6Tr0aeE7RGndO6xp3T/oZdk//GXZP/xh2T/8Xdk//F3ZP /xf4RgAA4lAAANBXAADEXAAAu14AALRdAACuWgYAplsTAKBcIgCbXC8Al1s7ApJaRQOPWU0Gi1hV CIhXXAqGVmMMg1VqDoFUcRB+VHgSfFOAFHpSiRZ4UpQYdlKfGXRSqxpyUrobcVLNHHBS6BtwU/ka cFP/GnBT/xlwU/8YcFP/GHBT/xjvSQAA3VMAAMtaAADAXwAAt2IAAK9hAACoXgIAoV8QAJtgHgCW YCwAkWA4AY1eQgOJXUsFhVxSB4JbWQqAWmAMfVlnDntYbhB4WHUSdld9FHRXhxZyVpEYb1acGm5W qRtsVrgca1bLHWpW5hxqV/cbalf/GmpX/xlrV/8Za1f/GWtX/xnrTAAA2FYAAMheAAC8YgAAs2UA AKtlAACjYgAAnGIOAJZjHACRZCkAjGM1AYhiPwOEYUgFgGBQB31fVwl6Xl0Ld11kDXVcaxBzXHIS cFt7FG5bhBdsWo8YalqaGmhapxxmWrYdZVrIHWVa5B1lWvYcZVr/G2Va/xplWv8ZZVr/GWVa/xno TwAA01kAAMRhAAC5ZgAAsGgAAKdpAACeZQAAl2YNAJFnGQCMaCcAh2cyAYNmPQJ/ZUYEe2RNBnhj VAl1YlsLcmFhDXBhaQ9tYHASa195FGlfghZnXo0ZZV6YGmNepRxhXrQdYF7HHWBe4x1gXvUcYF7/ G2Be/xphXv8aYV7/GmFe/xrkUgAAz1wAAMBkAAC2aQAArGwAAKNsAACZaQAAkmoLAIxqFgCHayQA gmswAX5qOgJ6aUMEdmhLBnNnUghwZ1kKbWZgDWtlZg9oZG4RZmR2FGRjgBZiY4sYYGKXGl5ipBxc YrIdW2LFHVti4R1bYvQcW2L/G1xi/xpcYv8aXGL/Glxi/xrgVQAAy18AAL1nAACybAAAqXAAAJ9v AACUbAAAjG0IAIZuEwCCbyEAfW8tAXlvOAJ1bkEDcm1JBW5sUAdra1cKaWteDGZqZQ5kaWwRYWl0 E19ofhZdZ4kYW2eVGllmohtXZrAcVmbDHVZm3x1WZvMcV2b/G1dm/xpXZv8aV2b/Gldm/xrbWQAA x2IAALpqAACvcAAApnMAAJpzAACPcAAAh3EFAIFyEQB8cx4AeHMqAHRzNQFwcz8DbXJHBWpxTgdn cVUJZHBcC2JvYw5fb2oQXW5yElptfBVYbYYXVmyTGVRsoBtSa68cUWvBHFFr3BxRa/EbUmv+GlJq /xpSav8ZUmr/GVJq/xnUXAAAw2YAALZuAACsdAAAoncAAJZ2AACJdQAAgXYBAHp3DwB2eBsAcnkn AG95MgFreDwCaHhEBGV3TAZid1MIX3ZaCl11YQxadWgPWHRwEVVzeRNTc4QWUXKQGE9ynhlNca0a THG/G0tx2RtMcfAaTHD9Gk1w/xlNb/8ZTW//GU1v/xnOYAAAvmoAALJyAACoeAAAnXsAAJB6AACE egAAensAAHR8DABvfhcAbH4kAGl/LwFmfzkCYn9CA19+SQVdfVAHWn1XCVd8XgtVfGUNUntuD1B6 dxJOeoIUS3mOFkl5nBdIeKsYRni9GUZ41RlGd+8YR3b8GEd2/xhHdf8XR3X/F0d1/xfJZQAAum8A AK53AACkfQAAmH8AAIt/AAB+fwAAc4EAAGyDCQBohBMAZYUgAGKGLABfhjYBXIY/AlmFRgNXhU4F VIVVB1KEXAlPg2MLTYNrDUuCdA9Ign8RRoGME0SBmhVCgKkWQYC6FkCA0hZBf+0WQX77FkF9/xZB ff8WQX3/FkF9/xbCagAAtXUAAKp9AACfggAAkoMAAIWEAAB5hQAAaokAAGSKAwBgjBAAXY0bAFuO JwBYjjIAVY47AVOOQwJQjkoDTo1SBUyNWQZJjGAIR4xoCkWLcgxCi30OQIqJDz6KmBE8iqcSO4q4 EjqKzxI7iOsSO4f6EzuG/xM7hv8TO4b/EzuG/xO8cQAAr3sAAKWDAACZhwAAjIgAAH+JAABzjAAA ZZAAAFyTAABXlQwAVJYWAFKWIgBQly0ATZc2AEuXPwFJl0cCR5dOA0WWVQRDll0FQZZlBj6Vbwg8 lXoJOpWHCziVlQw2lKUNNZS2DjSUzA00k+kNNJL4DjSQ/w80kP8PNJD/DzSQ/w+1eAAAqoIAAJ6I AACTjQAAho4AAHmQAABtkwAAYZcAAFWbAABNngYASZ8QAEefGwBGoCYARKAwAEOhOgBBoUIBP6FJ AT2hUQI7oVkCOaFhAzegawQ1oHYFM6CDBjGgkgcwoKIILqCzCC6gyQgun+cILZ33CS2c/wotm/8K LZv/Ci2b/wqvgAAAo4kAAJeOAACNkwAAf5UAAHKYAABmnAAAW6AAAE+kAABFpwAAPqkMADyqFAA6 qh8AOaopADirMgA3qzsANatDADSsSwAyrFMBMaxcAS+sZgItrHECK6x/AyqsjgMorJ4EJ6ywBCas xQQmq+QDJan1BCWo/wUlp/8FJaf/BSWn/wWniQAAm48AAJGUAACEmQAAeJ4AAGuiAABfpgAAU6oA AEitAAA9sAAANLMDAC+1DgAttRYALLUgACu2KQAqtjIAKbc6ACi3QwAnt0wAJrhVACS4XwAjuGsA Irh4ASC4iAEfuJkBHbmrARy5wAEcuN8BHLbyARu1/AIbtP8CG7T/Ahu0/wKfjwAAlJUAAIibAAB7 oQAAbqYAAGKrAABWsAAASrMAAD+2AAA1uQAALLwAACS/BgAfwg0AHcIUABzCHgAbwyYAGsMvABnE OAAYxEEAF8RKABbFVQAVxWEAFMZvABPGfwASxpEAEcekABDHuQAPx9QAEMbuABDE+gAQw/8AEMP/ ABDD/wCXlgAAi5wAAH6iAABxqQAAZK8AAFi0AABLuAAAQLsAADW+AAArwQAAI8UAABvJAQAUzAYA ENALAA7REQAN0RkADdEhAAzRKgAM0TQAC9I+AArSSQAJ01UACdNiAAjTcgAG1IQABdSYAATUqwAD 1cAAAdXcAAHV7QAB1fYAAdX2AAHV9gCOnQAAgKQAAHOrAABmsQAAWbgAAEy9AAA/wAAANMMAACrH AAAhygAAGc4AABLSAAAN1gEACdsFAAbcDQAE3BEAA90YAAHeIAAA3igAAN8xAADgPAAA4UcAAOJU AADjYwAA43QAAOSIAADkmwAA5a4AAOXBAADl1QAA5ucAAObnAADm5wCDpAAAdawAAGizAABauwAA TcEAAEDEAAAzyAAAKMwAAB/QAAAX1AAAENkAAAvdAAAF4QAAAOQAAADlBwAA5g0AAOcRAADoFgAA 6R0AAOolAADrLgAA7TkAAO9FAADwUwAA8WQAAPF2AADyigAA85wAAPOtAAD0uwAA9MgAAPTIAAD0 yAB3rQAAarUAAFy9AABPxAAAQMkAADPNAAAn0QAAHdYAABTcAAAO4AAACOMAAAHmAAAA6gAAAO4A AADuAAAA7wQAAPAKAADxDgAA8xIAAPQYAAD2IAAA+CoAAPo1AAD9QwAA/lIAAP9jAAD/dgAA/4kA AP+aAAD/pgAA/7AAAP+wAAD/sAD/FiMA/xUhAP8RIQD/DSQA/wkrAP8GNwD/A0QA/wBRAP8AXQD/ AGgA/wByAP8AewD/AIMA/wCKAP8AkQD/AJYA/wCcAP8AoQD9AKYA+wCsAPkAswD3ALsA9QDFAPMA 0QDyAOQA8QDxAO8A+gDuAP8A7gD/AO0A/wDtAP8A7QD/AO0A/wD/GSAA/xgdAP8VHQD/EB8A/w4p AP8MNAD/CkEA/wdNAP8FWQD/BGQA/wRuAP8DdwD/A4AA/wOHAP8DjQD9ApMA+wKZAPkCngD3AqQA 9QKqAPMBsADxAbgA7wHCAO0BzwDrAeMA6gHvAOgC+wDnBP8A5gX/AOYG/wDmBv8A5gb/AOYG/wD/ HBsA/xsZAP8XGAD/FR0A/xMlAP8RMAD/ED0A/w5JAP8MVQD/C2AA/wtqAP0LcwD7C3wA+QqDAPcK igD1CpAA9AqWAPMKmwDxCqEA7wmnAO0JrgDrCbYA6AnAAOYJzQDkCeIA4grwAN8L+wDeDP8A3A3/ ANwN/wDbDf8B2w3/AdsN/wH/HxcA/x4TAP8bEgD/HBkA/xsiAP8YLAD/FTgA/xNEAP4SUAD5EVsA 9RBmAPMQbwDwEHcA7hB/AOwQhgDqEIwA6RCSAOgQmADmD54A5Q+lAOMPrADhD7QA4A++AN4PzADa EOEA1RHwANIS+wDPEv8BzhP/Ac0T/wHNE/8BzBP/AcwT/wH/IhIA/yIPAP8hDwD/IhQA/yIcAP8g JwD/HTIA+Bs+APIZSwDuGFYA6hdgAOcWagDkFnIA4hZ6AOAWggDeFogA3BaPANsWlQDZFpsA1hai ANQWqQDSFrEA0Be7AM4XyQDMGN4AyBnuAcUa+wHDGv8CwRv/AsAb/wLAG/8CwBv/AsAb/wL/Jg4A /yULAP8oDAD/KRAA/ygWAP4mIAD0JCsA7CE4AOYgRADhH1AA3R9bANkeZQDVHm0A0h91ANAffQDO H4MAzB+KAcsfkAHJH5cByB+eAcYfpQHFIK0BwyC3AcEgxAHAIdYBvCLqArki+AO2Iv8DtSP/A7Qj /wSzI/8EsyP/BLMj/wT/KQsA/yoFAP8uCAD/LwwA/y0QAPMrFwDoKCIA4CYvANkmPQDSJ0oAzSdV AMooXwDHKGgBxShvAcMndwHBJ34BvyeEAb4niwK8J5ICuyeZArknoAK3J6kDtiizA7QovwOzKM8D sCnmBK0p9gSrKv8FqSr/Bqgq/waoKv8GqCr/Bqgq/wb/LQUA/zAAAP8zAgD2NAYA7zIKAOguEADc LBgA0S4oAMsvNwDGMEQAwTBPAL4wWQG7MGIBuDBqArYvcQK1L3gCsy9/A7EvhgOwL40Dri6UBK0u nASrLqQFqS+uBagvugWmL8oGpDDiBqEw8wefMP8InjH/CJ0x/wicMf8InDH/CJwx/wj/MAAA/zUA AO84AADiOgAA2zkEANY1CQDONBMAxjYiAL84MQC6OD8AtjhKAbM4VAGwN10CrTdkAqs2bAOpNnME qDZ5BKY1gAWkNYcFozWPBqE1lwefNaAHnjWqCJw1tgibNcUJmTXdCZY27wqUNv0Kkzf/CpI3/wqS N/8Kkjf/CpI3/wr/MwAA9joAAOQ/AADYQgAAzkIBAMk+BgDEOw8Auz4dALU/LACxPzoArT9FAak/ TwGmPlgCoz1fA6E9ZwSfPG0FnTx0Bpw7ewaaO4IHmDuKCJY7kwmVOpwKkzqmC5E6sguQO8AMjjvV DIw87A2KPPsNiTz/DYk8/wyIPP8MiDz/DIg8/wz/NwAA6j8AANxFAADOSQAAxUkAAL9GAgC6QwwA s0QZAK1FJwCoRjUApEVBAaBFSwKdRFMCmkNbA5hDYgWWQmkGlEFwB5JBdgiQQH4JjkCGCo1AjguL QJgMiUCiDYdArg6FQLwPhEDPD4JB6Q+BQfkPgEH/D4BC/w6AQv8OgEL/DoBC/w76OwAA5UQAANNL AADHTgAAvk8AALhMAACySQkAq0kVAKVLIwCgSzEAnEs9AZhKRwKVSU8DkklXBJBIXgWOR2UGi0dr B4lGcgmIRnkKhkWCC4RFig2CRZQOgESfD35EqxB8RbkRe0XLEXpF5hF5RvcReEb/EHhG/xB4Rv8P eEb/D3hG/w/wPwAA30kAAM1PAADBUwAAuFQAALFSAACrTgUApE4RAJ5PIACZUC0AlVA5AZJPQwGO TkwDi01TBIlNWgWGTGEGhEtoCIJLbgmASnYLfkp+DHxJhw56SZEPeEmcEHZJqBJ0SbYSc0nIE3JK 4xNxSvUScUr/EXFL/xFxS/8QcUv/EHFL/xDsQwAA2UwAAMhTAAC9VwAAtFgAAKxXAAClUgEAnlMP AJhUHACTVCkAj1Q1AItTQAGIU0gChVJQBIJRVwV/UF4GfVBkCHtPawl5T3ILd057DXVOhA5zTY4Q cU2ZEW9NpRNtTbMUbE3FFGtO4RRrTvQTa07/EmtO/xJrTv8Ra07/EWtO/xHoRgAA01AAAMRWAAC5 WgAAsFwAAKZaAACfVgAAmFYNAJJXGQCOWCYAiVgyAIZYPQGCV0UCf1ZNA3xVVAV5VFsGd1RhCHVT aAlzU3ALcVJ4DW9SgQ9tUosQa1GXEmlRoxNnUbEUZlHDFWVS3hVlUvIUZVL/E2VS/xJlUv8SZVL/ EmVS/xLkSgAAz1MAAMBaAAC1XgAArGAAAKJeAACaWQAAkloLAI1bFgCIXCMAhFwvAIBbOgF9W0MC eVpLA3ZZUgR0WFgGcVhfB29XZgltV20La1Z1DWlWfg9nVokRZVWVEmNVoRRiVa8VYVXBFmBV2xZg VvEVYFb+FGBW/xNhVv8SYVb/EmFW/xLgTQAAy1YAAL1dAACyYQAAqGMAAJ1hAACVXQAAjV4JAIde EwCDXyAAf18sAHtfNwF3XkACdF5IA3FdTwRvXFYFbFxcB2pbYwloW2sLZlpzDWRafA9iWocRYFmT El5ZoBRdWa4VW1m/FltZ2BZbWe8VW1n9FFxZ/xNcWf8SXFn/ElxZ/xLcUAAAx1kAALpgAACvZAAA pGUAAJlkAACQYAAAiGEGAIJiEQB+Yx0AemMqAHZjNAFzYj0Bb2JGAmxhTQRqYVQFZ2BaB2VgYQhj X2kKYV9xDF9eeg5dXoUQW16RElldnhRYXawVV129FlZd1RZWXe4VV138FFdd/xNXXf8SV13/Eldd /xLWUwAAxFwAALdjAACsaAAAoGgAAJVnAACKYwAAg2UCAH1mDwB4ZhoAdGcnAHFnMgBuZzsBa2ZD AmhmSwNlZVIFY2VZBmFkXwheZGcKXGNvDFpjeA5YY4MQVmKPElRinBNTYqoVUmK7FVFi0hVRYe0V UmH7FFJh/xNTYf8SU2H/ElNh/xLRVgAAwF8AALNmAACpawAAnGsAAJBqAACFZwAAfWkAAHdqDQBz axcAb2skAGxsLwBpbDgBZmtBAmNrSQNha1AEXmpXBlxqXQdaaWUJWGltC1Vodg1TaIEPUWeNEU9n mhJOZ6kUTWe5FExnzxRMZusUTWb7E01m/xJOZf8STmX/Ek5l/xLMWgAAvGMAALBqAAClbwAAmG4A AIxtAACAbAAAd20AAHFuCwBtbxQAaXAhAGZxLABkcTYBYXE+AV5xRgJccE0DWXBUBVdwWwZVb2II U29qClBucwxObn4OTG2KEEptmBFJbKcSSGy4E0dszRNHbOoTSGv6Ekhr/xJIav8RSGr/EUhq/xHH XgAAuGcAAKxuAAChcgAAk3IAAIdxAAB6cQAAcXIAAGt0BwBmdREAY3YdAGB3KABedzMAW3g8AVl3 QwJWd0sDVHdSBFJ2WQVQdmAHTnVoCEt1cQpJdHwMR3SIDkVzlg9Dc6UQQnO2EUFzyxFCcugRQnL4 EUJx/xBDcP8QQ3D/EENw/xDBYwAAs2wAAKhzAACbdgAAjnUAAIF2AAB1dgAAaXgAAGN6AgBefA4A XH0ZAFl+JABXfy8AVX84AVN/QAFQf0gCTn5PA0x+VgRKfl0FSH1lBkZ9bghDfHkKQXyGCz97lA0+ e6MOPHuzDjx7yA48euYOPHn3Djx4/w48eP8OPXf/Dj13/w68aAAAr3IAAKR5AACWegAAiHoAAHx6 AABwfAAAY38AAFyCAABXhAsAU4UUAFGGIABPhioAToc0AEyHPAFKh0QBSIdLAkaHUwJEhloDQoZi BECGbAY+hXYHO4WDCDmFkQo4hKALNoSxCzaExgs2g+QLNoL2CzaB/ww2gP8MNoD/DDaA/wy2bwAA qngAAJ9/AACQfgAAg38AAHeAAABrggAAXocAAFWKAABOjAYASo4QAEiPGgBHjyUARZAvAESQOABC kEAAQJBHAT+QTwE9kFYCO5BfAjmQaAM3j3MENY+ABTOPjgYxj54HMI6vBy+OwwcvjuEHL4z0CC+L /wgviv8IL4r/CS+K/wmwdgAApX8AAJiEAACKhAAAfYUAAHCHAABligAAWo4AAE+SAABGlQAAQZgM AD6YFAA9mR8AO5koADqaMQA5mjoAN5pCADaaSgA1mlIBM5paATGaZAEvmm8CLZp7AiyaigMqmpoD KZqsBCiawAQnmd4DJ5fyBCeW/QUnlf8FJ5X/BSeV/wWpfgAAnoUAAJKJAACEigAAdowAAGqPAABe kwAAVJcAAEmbAABAnwAAN6IEADKjDgAxoxcAMKQhAC6kKgAtpDIALKU6ACulQwAqpUsAKaVUACil XgAmpWkAJaV2ASOlhQEipZYBIKaoAR+luwEepdcBHqTvAR6i+wIeof8CHqH/Ah6h/wKihgAAl4wA AIuPAAB9kQAAb5QAAGOYAABXnQAATaEAAEOlAAA4qAAAMKsAACiuBwAkrxAAI68XACGvIQAgsCkA H7AxAB6wOgAdsUIAHLFMABuxVgAasWEAGbJvABiyfgAWspAAFbKiABSytgATss4AE7HrABOv+QAT rv8BE67/AROu/wGajQAAkJIAAISXAAB1mgAAaJ8AAFujAABQqAAARawAADuwAAAxsgAAJ7UAACC4 AAAYugcAFLwOABO8FQASvB4AEb0mABG9LgAQvTcAEL5BAA6+TAAOvlcADb5lAAy/dAALv4YACr6Z AAi+rAAHvsIAB77fAAi+8AAIvfoACL38AAi9/ACTlAAAh5kAAHqfAABspQAAYKoAAFOvAABHswAA PLYAADG4AAAnuwAAH74AABfBAAARxAEADMgIAAjJDgAHyRQABskcAAXJJAAEyiwAA8o2AALKQAAA y0wAAMtZAADLaAAAy3kAAMyMAADLnwAAy7MAAMvIAADM4gAAzO8AAMzxAADM8QCKmgAAfKEAAG+n AABirQAAVbMAAEi4AAA7uwAAML4AACbBAAAdxAAAFcgAAA/LAAAKzgAABNICAADTCgAA0w8AANQU AADVGgAA1iIAANcqAADZNAAA2j8AANxLAADcWgAA3WoAAN19AADdkQAA3aQAAN62AADeyAAA3t4A AN7iAADe4gB/ogAAcakAAGSwAABWtwAASbwAADzAAAAvxAAAJMcAABvLAAATzwAADdIAAAfWAAAA 2wAAAN4AAADfAwAA4AkAAOEOAADiEgAA4xcAAOUeAADmJwAA6DEAAOo9AADsSwAA7FoAAO1sAADu gAAA7pQAAO6lAADutAAA7sIAAO7GAADuxgB0qgAAZrIAAFi5AABLwAAAPcUAAC/JAAAkzQAAGdEA ABHWAAAL2wAAA94AAADhAAAA5QAAAOgAAADpAAAA6gAAAOsGAADtCwAA7w8AAPATAADyGgAA9CMA APcuAAD5OwAA+0oAAPxbAAD9bQAA/YAAAP6TAAD+ogAA/q0AAP6vAAD+rwD/EB8A/w4dAP8KHQD/ ASAA/wAoAP8ANQD/AEEA/wBOAP8AWgD/AGUA/wBuAP8AdwD/AH8A/gCGAPwAjAD7AJIA+QCXAPgA nAD3AKIA9gCnAPUArQDzALUA8gC9APEAyQDvANwA7gDrAO0A9wDsAP8A6wD/AOoA/wDqAP8A6gD/ AOoA/wD/ExwA/xEZAP8NGQD/BhwA/wMlAP8AMQD/AD4A/wBKAP8AVgD/AGEA/wBrAP0AcwD6AHsA 9wCDAPUAiQD0AI8A8gCUAPEAmQDwAJ8A7gCkAO0AqwDsALIA6gC6AOgAxgDnANYA5QDoAOQA9QDj AP4A4gD/AOEA/wDhAP8A4QD/AOEA/wD/FRgA/xMUAP8PFAD/DRkA/wsiAP8ILQD/BDkA/wFGAP8A UQD+AFwA+gBmAPYAbwDyAHcA7wB+AO0AhQDrAIsA6gCRAOgAlgDnAJwA5gChAOQAqADjAK8A4QC4 AN8AwwDdANEA2wDmANkA8wDXAP0A1QL/ANQC/wDUA/8A1AP/ANQD/wD/GBMA/xUQAP8SDwD/EhUA /xEdAP8OKAD/DDQA/wpBAPkITAD1BlcA8QZhAO0GagDpBXIA5gV6AOQFgQDiBYcA4AaNAN8GkgDd BpgA2waeANkGpQDXBq0A1Aa1ANIGwADQB88AzgjlAMwJ9ADKC/8AyAz/AMcM/wDHDP8Axgz/AMYM /wD/Gw4A/xkMAP8YDQD/GBEA/xcYAP8UIgD7ES4A8xA6AO0ORgDoDVIA5Q1cAOENZQDeDW0A2w11 ANgNfADVDYIA0w2JANENjwDQDZUAzg2cAM0OowDLDqsAyQ60AMgOwADGDs8AwxDmAMAR9QC9Ev8A vBL/ALsS/wC6Ev8BuhL/AboS/wH/HwoA/xwEAP8fCAD/Hw0A/x0SAPgaGwDuFiYA5hQzAOATPwDa E0sA1BNWANATXwDOFGgAyxRvAMkUdwDHFX0AxhWEAMQVigDDFZEAwRaYAMAWnwC+FqcAvBewALsX vAC5F8sAtxjiALMZ8gGxGv8Brxv/Aa4b/wGuG/8BrRv/Aa0b/wH/IgQA/yIAAP8lAgD8JAcA9yEM AOwdEgDhGhwA2BoqANAbOADLHUUAxx1QAMMeWgDAHmIAvh5qALwfcQC6H3gAuR9+ALcfhQC2H4wA tB+TALMfmgGxIKMBsCCsAa4gtwGsIcYBqyHdAaci7wKlIv0CoyP/AqIj/wKiI/8CoSP/AqEj/wL/ JQAA/ygAAPIqAADlKwAA3ygFANwhCwDSIRQAySQkAMMlMgC+Jj8AuidKALcnVAC0J10AsidkALAn bACuJ3IBrSd5AasnfwGqJ4YBqCeOAacnlgKlJ54CoyioAqIoswKgKMECnyjVApwp7AOaKvoDmCr/ BJcq/wSXKv8Elir/BJYq/wT/KAAA9S4AAOUzAADaNQAA0DMBAMwtBgDGKhAAvi0eALguLACzLzoA ry9FAKwwTwCpL1gApy9fAaUvZgGjL20BoS9zAqAuegKeLoECnS6JApsukQOZLpoDmC6kBJYvrwSV L70Eky/PBJEw6AWPMPgFjTH/BY0x/wWMMf8FjDH/BYwx/wX/LQAA6jUAANw6AADOPQAAxjwAAMA3 AgC7Mw0AszQZAK42JwCpNzQApTdAAKI3SgCfN1MBnTZaAZs2YQGZNmgClzVvApU1dQOUNXwDkjWE BJA1jQSPNZYFjTWgBYs1qwaKNbkGiDXKB4c25QeFNvYHhDf/B4M3/weDN/8Hgjf/B4I3/wf0MgAA 4zsAANJBAADGRAAAvUMAALc/AACxOwkAqjsUAKU8IgCgPTAAnT07AJk9RQCWPU4BlDxWAZI8XQKQ PGMCjjtqA4w7cQSKO3gEiDqABYc6iAaFOpIGgzqcB4E6qAiAOrUJfjvGCX074Ql7PPMJezz/CXo8 /wh6PP8Iejz/CHo8/wjuNwAA3UEAAMtGAAC/SQAAtkkAAK5GAACpQQQAo0ERAJ1CHgCYQysAlUM3 AJFDQQCOQkoBjEJSAYlBWQKHQV8DhUFmA4NAbQSBQHQFgEB7Bn4/hAd8P44Iej+ZCXg/pQp3QLIK dUDDC3RA3QtzQfELckH/CnJB/wpyQf8JckH/CXJB/wnpPAAA1UUAAMVLAAC6TgAAsE4AAKdLAACi RgAAm0YOAJZHGgCRSCcAjkgzAIpIPQCHR0YBhEdOAYJGVQKARlwDfkViBHxFaQR6RXAFeER4BnZE gQh0RIsJckSWCnBEogtvRK8MbkTADG1F2Q1sRe8Ma0X9C2tG/wtrRv8Ka0b/CmtG/wrlQAAAz0kA AMFPAAC1UgAAq1IAAKFPAACbSgAAlEoMAI9LFwCLTCQAh0wvAIRMOgCBTEMBfktLAXtLUgJ5SlgD d0pfBHVJZgVzSW0GcUl1B29JfghtSIgJa0iTC2pInwxoSK0NZ0m9DWZJ1A5lSe0NZUr8DGVK/wtl Sv8LZUr/C2VK/wvgRAAAy00AAL1SAACyVgAAplUAAJxSAACVTgAAjk4JAIlPFACFUCAAgVAsAH5Q NwB7UEABeFBIAXVPTwJzTlUDcU5cBG9OYwVtTWoGa01yB2lNewhnTYUKZU2RC2RMnQxiTasNYU27 DmBN0Q5gTewOYE37DWBN/wxgTf8LYE3/C2BN/wvcRwAAx1AAALlWAACuWQAAolgAAJhWAACQUQAA iVIGAINTEQB/Ux0Ae1QpAHhUNAB1VD0BclNFAXBTTAJtUlMCa1JZA2lSYARnUWcGZVFvB2NReAhi UYMKYFGPC15Qmw1dUKkOW1G5DltRzg9aUeoOW1H6DVtR/wxbUf8MW1H/C1tR/wvWSgAAw1MAALZZ AACrXAAAnloAAJNZAACLVAAAhFYDAH5WEAB6VxoAdlcmAHNYMQBwVzoAbVdCAWpXSQJoVlACZlZX A2RWXgRiVWUFYFVtB15VdghdVYEKW1WNC1lUmg1YVKcOVlW4D1ZVzA9WVekOVlX5DVZV/w1XVP8M V1T/DFdU/wzRTQAAwFYAALNcAACnXgAAml0AAI9cAACGWAAAf1kAAHlaDQB0WxcAcVsjAG5bLgBr WzcAaFtAAWVbRwFjWk4CYVpVA19aXARdWmMFXFprBlpZdAhYWX8KVlmLC1RZmA1TWKYOUlm2DlFZ yg9RWecOUVj4DVJY/w1SWP8MUlj/DFJY/wzNUQAAvFkAALBfAACjYQAAlmAAAItfAACBWwAAeV0A AHNeDABvXhUAa18gAGhfKwBmYDUAY2A9AWFfRQFfX0wCXV9TA1tfWgRZXmEFV15pBlVecghTXn0J UV2JC1BdlgxOXaQNTV20DkxdyA5MXeYOTV33DU1c/wxNXP8MTlz/DE5c/wzJVAAAuVwAAK1jAACf YwAAkmMAAIdiAAB8YAAAdGEAAG5iCQBpYxIAZmMdAGNkKABhZDIAXmQ7AFxkQwFaZEoCWGRRAlZk WANUZF8EUmNnBVBjcAdOY3oITGKGCktilAtJYqIMSGKyDUdixw1HYuQNSGH2DEhh/wxIYP8LSWD/ C0lg/wvEWAAAtWAAAKpmAACbZgAAjWYAAIJlAAB2ZAAAbmUAAGhmBQBjZxAAYGgaAF1pJQBbai8A WWo4AFdqQAFVakcBU2pOAlFqVQNPaV0ETWlkBUtpbQZJaHgHR2iECUZokgpEZ6ELQ2exDEJnxQxC Z+IMQmb1DENm/wtDZf8LQ2X/C0Nl/wu/XAAAsWQAAKZqAACWaQAAiWkAAH1pAABxaQAAZ2oAAGJs AQBdbQ0AWW4WAFdvIQBVcCsAU3A1AFFwPQBQcEUBTnBMAUxwUwJKcFoDSHBiBEZvawVEb3UGQm+C B0Bujwk/bp4KPW6vCj1uwgo8buAKPW30Cj1s/wo9a/8KPmv/Cj5r/wq6YAAArWkAAKBuAACRbQAA hG0AAHhtAABsbgAAYXAAAFtyAABWdAoAUnUSAFB2HQBOdycATHcxAEt4OQBJeEEASHhJAUZ4UAFE d1cCQndfA0B3aAM+d3MEPHZ/Bjp2jQc5dpwIN3WtCDd1wAg2dd4IN3TyCDdz/gg3cv8IN3L/CDdy /wi1ZgAAqW8AAJpxAACLcQAAfnEAAHNyAABocwAAXHYAAFR5AABOewUASn0PAEh+GABGfyMARX8s AEOANQBCgD0AQYBFAD+ATAE9gFQBPIBcAjp/ZQI4f28DNn98BDR/igQyf5oFMX6qBjB+vQYwftoG MH3wBjB7/QYwe/8GMHr/BjB6/wawbAAApHUAAJR1AACGdQAAeXYAAG53AABjeQAAV30AAE+BAABH hAAAQoYMAD+HEwA9iB0APIgnADuJMAA6iTgAOIlAADeJSAA2iU8ANIlYATOJYQExiWwBL4l4Ai2J hwIsiZcDKoinAymIugMpiNQDKYbuAymF/AQphP8EKYT/BCmE/wSqdAAAnnsAAI56AACAegAAdHsA AGh+AABdgQAAUoUAAEmJAABBjAAAOZAFADWRDwAzkhcAMpIhADGSKQAwkzIALpM6AC2TQQAsk0oA K5RSACqUXAAolGcAJ5RzASWUggEklJMBIpOkASGTtwEgk88BIZLsASCQ+gIgj/8CII//AiCP/wKk fAAAl4AAAId/AAB7gAAAboIAAGKFAABXiQAATY4AAEKSAAA6lgAAMpkAACqcCQAonREAJp0ZACWd IgAknioAI54yACKeOgAhnkIAIJ5LAB+fVQAen2AAHJ9tABuffAAan40AGJ+fABefsgAWn8kAFp7o ABac9wAWm/8BF5v/AReb/wGdgwAAj4YAAIKGAAB0hwAAZ4sAAFuPAABQkwAARpgAADycAAAzoAAA K6MAACOmAAAcqAsAGqkRABipGAAXqSEAFqopABWqMQAUqjkAE6pDABOrTQASq1gAEatlABCrdAAO q4YADquZAA2rrAAMq8EADKrfAAyp8gANqPwADaj/AA2o/wCWigAAiYwAAHqNAABskQAAYJUAAFSa AABJnwAAP6MAADWnAAArqgAAI64AABuwAAAUswEAD7UKAA22EAAMthYAC7YfAAq2JwAJti8ACLY5 AAe3QwAGt08ABLdbAAO3agACt3sAALeOAAC3oQAAtrQAALbLAAC25QAAtfEAALX3AAC19wCPkQAA gZQAAHKXAABlnAAAWKEAAEymAABBqwAAN68AACyyAAAjtQAAGrgAABO7AAAOvQAACcAFAAPBDQAA wREAAMEXAADCHgAAwiYAAMIvAADDOQAAxEQAAMRQAADEXgAAxW8AAMWBAADFlQAAxagAAMW8AADE 0QAAxOYAAMTuAADE7gCGmAAAeZ4AAGujAABdqQAAUK4AAESzAAA3tgAALLkAACK8AAAZvwAAEcIA AAzFAAAGyAAAAMsAAADMBwAAzA0AAM0RAADNFgAAzh0AAM8kAADQLQAA0jgAANREAADUUgAA1WEA ANVzAADWhwAA1psAANatAADXvwAA2M4AANjdAADY3QB7oAAAbqYAAGCtAABTswAARbgAADi8AAAr vwAAIcIAABfGAAAQyQAACswAAALQAAAA1AAAANcAAADYAAAA2gUAANsLAADcDgAA3hMAAN8ZAADh IQAA4yoAAOU2AADnQwAA51MAAOhkAADpdwAA6YwAAOqfAADqrgAA6roAAOrDAADqwwBwqAAAYq8A AFW2AABHvAAAOcAAACzEAAAgyAAAFswAAA7QAAAH1AAAANkAAADdAAAA4QAAAOMAAADkAAAA5gAA AOcBAADpBwAA6wwAAOwQAADuFQAA8B0AAPMnAAD2MwAA90MAAPhUAAD5ZgAA+XoAAPqOAAD6ngAA +6kAAPuwAAD7sAD/CxsA/wcZAP8AGQD/ABwA/wAlAP8AMgD/AD8A/wBLAP8AVwD/AGIA/wBrAP8A cwD9AHsA+wCCAPoAiAD4AI0A9wCSAPYAmAD1AJ0A9ACiAPMAqQDxALAA7wC4AO4AwwDsANEA6wDm AOkA8wDoAP4A6AD/AOgA/wDoAP8A6AD/AOgA/wD/DhgA/woVAP8BFAD/ABgA/wAiAP8ALgD/ADsA /wBHAP8AUwD9AF4A+gBnAPcAbwD1AHcA8wB+APIAhADwAIkA7wCPAO4AlADsAJoA6wCfAOkApQDo AKwA5gC0AOQAvwDjAMwA4QDiAN8A8ADeAPsA3gD/AN0A/wDdAP8A3AD/ANwA/wD/EBMA/w0RAP8G EAD/AhUA/wAeAP8AKQD/ADYA/wBCAPoATgD0AFkA8QBiAO4AawDsAHIA6gB5AOgAfwDnAIUA5QCL AOQAkADiAJYA4QCcAN8AogDdAKkA2gCxANgAuwDVAMgA0gDdANEA7QDQAPkAzwD/AM4A/wDNAP8A zQD/AM0A/wD/EQ8A/w4NAP8MDQD/CxIA/wcZAP8CJAD/ADAA9gA8AO8ASQDqAFMA5wBdAOQAZgDh AG0A3wB0AN0AewDbAIEA2QCGANYAjADUAJIA0gCYANAAngDOAKYAzACuAMoAuADIAMQAxgDXAMUA 6gDDAPcAwgD/AMEB/wDAAv8AwAL/AMAC/wD/FAsA/xAGAP8QCQD/EA4A/w4UAP8KHgD1BikA6wQ2 AOMDQgDfA04A2wRXANYEYADTBGgA0ARvAM4FdgDMBXwAygWCAMkFiADHBY4AxgWUAMQFmwDCBaMA wAarAL4GtQC9BsIAuwjUALoJ6QC3C/gAtQz/ALQM/wC0DP8AtAz/ALQM/wD/FwQA/xQAAP8WAwD/ FAkA/xEOAPIOFQDoDCEA3gouANYLOwDQDEcAzAxRAMkMWgDGDWIAxA1qAMINcQDADXcAvw19AL0O gwC8DooAug6RALkOmAC3DqAAtg6pALQPtACyD8EAsRDUAK4R6wCrEvoAqRL/AKgT/wCnE/8ApxP/ AKcT/wD/GgAA/xsAAPkbAADrGQAA5RQGAOUQDgDZDhcAzxEmAMgSNADEE0AAvxRLALwUVAC5FV0A txVkALUVawC0FXEAshV4ALEWfgCvFoUArhaMAKwWlACrF5wAqRemAKcYsACmGL0ApBjPAKIa5wCf GvcAnRv/AZwb/wGcG/8Bmxv/AZsb/wH/HQAA9yEAAOgkAADdJQAA1CEBAM8bCADKFxEAwhogALwc LQC3HToAsx5FALAeTwCtHlcAqx5fAKkfZgCoH2wAph9zAKUfeQCjH4AAoh+HAKAgjwCfIJgAnSCi AJsgrAGaIbkBmCHKAZYi5AGUI/UBkiP/AZEj/wGQI/8BkCP/AZAj/wH/IgAA6ykAAN0uAADPLwAA xy0AAMEnAwC9Ig0AtiMaALAlKACsJjQAqCZAAKUnSQCiJ1IAoCdaAJ4nYQCcJ2cAmydtAJkndACY J3sBlieCAZUniwGTJ5QBkSieAZAoqQGOKLUCjSnGAosp3wKJKvIChyr/AoYq/wKGKv8Chir/AoYq /wL0KAAA4zEAANE2AADFOAAAvDYAALYwAACyKwkAqywUAKYtIgCiLi8Ani46AJsuRACYL00Ali9V AJQuXACSLmIAkC5pAY8ubwGNLnYBjC5+AYouhgKILo8Chy6aAoUvpQODL7IDgi/CA4Ew2gN/MO8D fTH+A30x/wN8Mf8DfDH/A3wx/wPtLwAA2zcAAMk9AAC+PgAAszwAAKw4AACnMwQAojIRAJ00HQCZ NSoAlTU1AJI1QACPNUkAjTVQAIs1VwCJNV4BhzVkAYU0awGENHICgjR5AoA0ggJ+NIsDfTSWA3s1 oQR5Na4EeDW+BXc21AV2Nu0FdDf8BXQ3/wR0N/8EdDf/BHQ3/wTnNQAA0j0AAMNCAAC4RAAArEIA AKQ+AACfOQAAmjgOAJQ6GQCQOiYAjTsxAIo7OwCHO0QAhDtMAII7UwGAOloBfjpgAX06ZwJ7Om4C eTp1Anc6fgN2OogEdDqTBHI6ngVxOqsFbzu7Bm47zwZtO+oGbTz6Bmw8/wVsPP8FbDz/BWw8/wXi OQAAzEIAAL5HAACxSAAApUYAAJ1DAACXPwAAkj4LAI0/FQCJPyEAhUAtAIJANwB/QEAAfUBIAHtA TwF5QFYBdz9dAXU/YwJzP2oCcT9yA3A/egNuP4QEbD+QBWs/nAZpP6kGaD+4B2dAzAdmQOgHZkD5 BmVA/wZlQP8GZUD/BWVA/wXcPgAAx0YAALlLAACsTAAAoEoAAJdHAACRQwAAi0MIAIZDEgCCRB4A fkQpAHtFNAB5RT0AdkVFAHRETAFyRFMBcERZAW5EYAJsQ2cCa0NvA2lDdwRnQ4EFZkONBmRDmQZi Q6cHYUS2CGBEyghgROYIX0X4B19F/wdgRf8GYET/BmBE/wbWQQAAw0kAALZOAACnTwAAm00AAJJL AACMRwAAhUcEAIBHEAB8SBoAeEgmAHVJMABzSToAcElCAG5JSQFsSFABakhWAWhIXQJmSGQCZUhs A2NIdQRhR38FYEeKBl5IlwddSKUIW0i0CFtIxwlaSOQIWkn2CFpJ/wdaSP8GWkj/BlpI/wbRRQAA v0wAALJSAACjUQAAl1AAAI1OAACGSgAAgEoBAHpLDgB2TBcAckwjAG9MLQBtTTYAakw/AGhMRgBm TE0BZExTAWJMWgJhTGECX0xpA15McgRcTHwFWkyIBllMlQdXTKMIVkyyCFVMxglVTOIJVUz1CFVM /wdVTP8HVkz/BlZM/wbMSAAAvFAAAK9VAACgVAAAk1MAAIlRAACBTQAAek4AAHVPDABwTxUAbVAg AGpQKgBnUDMAZVA8AGNQQwBhUEoBX1BRAV1QWAJcUF8CWlBnA1lQcARXUHoFVVCGBlRQkwdSUKEI UVCxCVBQxAlQUOEJUFD0CFFQ/wdRT/8HUU//BlFP/wbJSwAAuVMAAKtXAACcVgAAj1UAAIVUAAB8 UAAAdVEAAHBSCQBrUxIAaFQdAGVUJwBiVDEAYFQ5AF5UQQBcVEgBWlRPAVlUVgFXVF0CVlRlA1RU bgRSVHgFUVSEBk9UkQdOVKAITFSvCExUwglLVN8JTFTzCExT/wdMU/8HTVP/Bk1T/wbFTgAAtlYA AKdaAACYWQAAi1gAAIFXAAB3VAAAcFUAAGpWBgBmVxAAYlcaAGBYJABdWC4AW1k3AFlZPwBXWUYA VllNAVRZVAFTWVsCUVljAk9YbANOWHYETFiCBUpYjwZJWJ4HSFiuCEdYwAhHWN0IR1jyCEdX/wdI V/8HSFf/BkhX/wbBUQAAslkAAKNcAACUWwAAh1sAAH1aAAByWAAAa1kAAGVaAwBgWw4AXVwXAFpc IQBYXSsAVl00AFRePABTXkQAUV5LAVBeUgFOXlkCTF5hAktdagNJXXQER12ABUVdjQZEXZwHQ12s B0JdvghCXdoIQlzxB0Jc/gdDW/8GQ1v/BkNb/wa9VQAAr10AAJ9fAACQXgAAg14AAHhdAABtXAAA ZV0AAF9fAABaYAwAV2EUAFViHgBSYigAUWMxAE9jOQBOY0EATGNIAEtjTwFJY1YBR2NeAkVjZwJE Y3EDQmN9BEBiiwU/YpoGPmKqBj1ivAc8YtYHPWHvBj1h/QY+YP8GPmD/Bj5g/wa5WQAAq2EAAJph AACLYQAAf2EAAHRhAABpYQAAX2IAAFlkAABUZgkAUWcRAE5nGgBMaCQAS2ktAElpNgBIaT4ARmpF AEVqTABDalQBQmpcAUBpZQI+aW8CPGl7AztpiQQ5aZgFOGioBTdougU3adMFN2juBTdn/AU4Zv8F OGb/BThm/wW0XgAAp2UAAJVlAACGZAAAemUAAG9lAABkZgAAWWgAAFJqAABNbAQASW4OAEduFgBF byAARHApAEJwMgBBcDoAQHFCAD9xSQA9cVEAPHFZATpxYgE4cWwCNnB4AjVwhgMzcJUDMnCmBDFw uAQwcNAEMW/sBDFu+wQxbf8EMWz/BDFs/wSvZAAAoWkAAI9oAACBaAAAdWkAAGtpAABgawAAVW4A AE1xAABGcwAAQnULAD92EgA9dxwAPHclADp4LQA5eDUAOHk9ADd5RQA2eU0ANXlVADN5XgAxeWgB MHl0AS55gwIteZICK3ijAip4tQIqeMwCKnfqAip2+QMqdf8DKnT/Ayp0/wOqagAAmm0AAIlsAAB8 bQAAcG0AAGZuAABbcQAAUHUAAEh4AABBewAAOn4FADZ/DgA0gBYAM4EgADKBKAAwgTAAL4I4AC6C QAAtgkgALIJQACuCWgAqgmQAKIJwACaCfwElgo8BJIKgASOCsgEigskBIoHnASJ/9wEifv8CIn3/ AiJ9/wKlcQAAk3EAAINxAAB2cQAAbHIAAGB1AABWeAAATHwAAEOAAAA7gwAAM4YAAC2JCgAqihEA KYsZACeLIgAmiyoAJYwxACSMOQAjjEIAIo1KACGNVAAgjV4AH41rAB2NeQAcjYoAG42cABmNrgAY jMQAGIzjABmK9QAZif8BGYj/ARmI/wGddwAAjHYAAH12AABydwAAZXkAAFp8AABQgAAARoQAADyJ AAA0jAAALZAAACWTAgAflQwAHZYSAByWGgAblyIAGpcqABmXMgAYmDoAF5hDABaYTQAVmFgAFJhk ABOYcwARmIQAEJiWABCYqQAOmL8ADpfdAA+W8gAQlfwAEJT/ABCU/wCVfQAAhXwAAHh8AABrfgAA X4EAAFSGAABKigAAQI8AADaTAAAtlwAAJpoAAB6dAAAXoAMAEqIMABCjEgAQoxkAD6MhAA6kKQAO pDEADaQ6AAykRQALpFAACqRcAAmkagAHpHsABqOOAASjoQACo7QAA6LLAAOi5gADofMAA6H7AAOh +wCNgwAAf4IAAHGEAABkhwAAWIwAAE2RAABClgAAOJoAAC+eAAAmogAAHqUAABeoAAARqwAADK4H AAevDQADrxIAAq8ZAAGvIQAArykAALAyAACwPAAAsEcAALBTAACwYQAAsHEAALCDAACvlwAAr6oA AK+/AACu2QAArusAAK70AACu9ACHiQAAeIoAAGqOAABdkwAAUZgAAEWdAAA7ogAAMKYAACeqAAAe rgAAFrEAABC0AAALtgAABbkDAAC6CgAAug4AALoTAAC7GQAAuyEAALwoAAC8MQAAvTwAAL5IAAC+ VgAAvmUAAL53AAC+jAAAvp8AAL2zAAC+xwAAvt4AAL3rAAC96wB/kgAAcJUAAGKaAABVnwAASaUA AD2rAAAyrwAAKLQAAB62AAAVuQAADrwAAAm/AAACwgAAAMQAAADFBAAAxgoAAMYOAADHEgAAyBgA AMkfAADKJwAAzDAAAM48AADOSQAAz1kAAM9qAADPfgAAz5MAAM+mAADPuAAAz8gAAM/bAADP2wB3 nAAAaKEAAFunAABOrgAAQbQAADS3AAAougAAHb0AABPAAAANxAAABscAAADKAAAAzgAAANAAAADR AAAA0gIAANMIAADVDAAA1hAAANkVAADbHAAA3SQAAOAvAADiPAAA40sAAORcAADkbwAA5YMAAOWY AADlqQAA5bYAAOXDAADlwwBspQAAX6wAAFGyAABEuQAANbwAACjAAAAcxAAAEsgAAAzLAAADzwAA ANMAAADYAAAA3AAAAN8AAADfAAAA4QAAAOMAAADkAwAA5ggAAOgNAADpEQAA7BgAAO4iAADxLgAA 8zwAAPRNAAD1XwAA9nMAAPeHAAD3mQAA+KUAAPiwAAD4sAD/AxcA/wAVAP8AFQD/ABgA/wAjAP8A LwD/ADwA/wBIAP8AVAD/AF4A/wBnAP0AbwD7AHYA+QB9APgAgwD2AIgA9QCOAPQAkwDyAJgA8QCe APAApADuAKsA7QCzAOsAvQDqAMsA6ADhAOcA8QDmAP0A5QD/AOQA/wDkAP8A5AD/AOQA/wD/BxMA /wARAP8AEQD/ABUA/wAfAP8AKwD/ADcA/wBEAP4ATwD6AFoA9wBjAPQAawDyAHIA8AB5AO8AfwDt AIQA6wCKAOoAjwDoAJQA5wCaAOUAoADkAKcA4gCvAOAAuQDeAMYA3ADaANoA7ADYAPkA1gD/ANYA /wDXAP8A2AD/ANgA/wD/ChAA/wMOAP8ADQD/ABIA/wAaAP8AJgD8ADIA9wA/APQASgDxAFUA7QBe AOoAZgDoAG4A5QB0AOMAegDiAIAA4ACFAN4AiwDcAJAA2wCWANgAnADVAKMA0wCrANEAtQDOAMEA zADRAMsA5wDJAPUAyAD/AMgA/wDIAP8AyAD/AMgA/wD/DAwA/wYIAP8CCgD/AA8A/wAVAPwAIADx ACwA7AA5AOkARQDlAE8A4QBZAN4AYQDbAGgA1wBvANQAdQDSAHsA0ACAAM4AhgDMAIwAywCSAMkA mADHAKAAxQCoAMMAsQDBALwAvwDLAL0A4wC8APIAuwD9ALsA/wC6AP8AugD/ALoA/wD/DgUA/wkA AP8JBQD/BgsA/wEQAPAAGQDmACUA4QAyANwAPwDWAEkA0QBTAM4AWwDLAGMAyABqAMYAcADFAHYA wwB7AMEAgQDAAIcAvgCOALwAlAC7AJwAuQCkALcArgC1ALkAswDIALEA3wCwAe8ArwH7AK4C/wCt A/8ArQP/AK0D/wD/EAAA/w4AAP8NAAD2CwMA8gcKAOIBEQDbAh0A0gMrAMwDNwDIBEMAxARNAMEE VgC+BV0AvAVkALoFawC4BXEAtwV2ALUFfACzBoMAsgaJALAGkQCvB5kArQehAKsHqwCpCLcAqAnG AKYK3QClC/AAowz9AKIN/wChDf8AoQ3/AKAN/wD/EQAA/BIAAOwTAADiEwAA2w8DANYJCwDOCBQA xgoiAMAMMAC8DTwAuA1GALUNTwCyDlcAsA5fAK4OZQCtDmsAqw5xAKoOeACoDn4Apw+FAKUPjQCk D5YAohCfAKAQqQCfELUAnRHFAJsR3gCZEvEAlxP/AJYU/wCVFP8AlRT/AJQU/wD/FQAA7RsAAOAf AADSHwAAyRsAAMQUBQDBEA4AuhIbALQTKQCwFDUArBVAAKkVSQCmFVIApBZZAKIWYAChFmYAnxZs AJ4WcgCcFnkAmxeAAJkXiACYF5EAlhibAJQYpgCTGbIAkRnBAJAa2ACNG+4Aixz9AIoc/wCKHP8A iRz/AIkc/wD0HQAA5CUAANMpAADHKgAAvCYAALYgAAC0GQsArhoVAKgcIwCkHS8AoR46AJ4eRACb HkwAmR5UAJcfWwCVH2EAlB9nAJIfbQCRH3QAjyB8AI4ghACMII0AiiCXAIkhogCHIa4AhiK9AIUi 0QGCI+sBgST7AYAk/wF/JP8BfyT/AX8k/wHsJQAA2y0AAMkxAAC8MQAAsS4AAKspAACnJAUAoyMR AJ4kHQCaJSoAliY1AJMmPwCRJkcAjyZPAI0mVgCLJ1wAiSdiAIgnaQCGJ28AhSd3AIMnfwCBJ4kB gCiTAX4ongF9KasBeym5AXopzQF4KugBdyv5AXYr/wF2K/8BdSv/AXUq/wHlLAAA0DQAAME4AACz OAAAqDUAAKIxAACdLQAAmSoOAJQrGACQLCQAjS0wAIotOgCHLUMAhS1KAIMtUQCBLlgAgC5eAH4u ZAB9LmsAey5zAXkuewF4LoUBdi6PAXQvmwFzL6gCcS+2AnAwyQJvMOUCbjH3Am0x/wJtMf8CbTH/ Am0x/wLfMgAAyTkAALs+AACsPQAAoToAAJo3AACVMwAAkDEKAIwxFACHMiAAhDMrAIEzNQB/Mz4A fTNGAHszTQB5M1QAdzNaAHYzYQB0M2cBcjRvAXE0dwFvNIEBbjSMAmw0mAJqNaUCaTWzA2g1xgNn NuIDZjb1A2Y2/wJmNv8CZjb/AmY2/wLYNwAAxD4AALVCAACmQQAAmz8AAJM8AACNOAAAiDYHAIQ3 EQCANxwAfDgnAHo4MQB3OToAdTlCAHM5SQBxOVAAcDlXAG45XQBsOWQBazlrAWk5dAFoOX4CZjmJ AmQ5lQNjOqIDYjqxA2E6wwNgO+AEXzvzA187/wNfO/8DXzv/Al87/wLROwAAwEIAALBFAAChRAAA lUMAAI1AAACHPQAAgjsCAH07DgB5PBgAdT0jAHM9LQBwPTYAbj0/AGw9RgBrPU0AaT1TAGc9WgBm PWEBZD1oAWM9cQFhPnsCXz6GAl4+kwNcPqADWz+vBFo/wQRaP90EWT/yBFk//wNZP/8DWT//A1k/ /wPMPwAAvEYAAKtIAACcRwAAkUYAAIhEAACCQAAAfD8AAHdADABzQBUAb0EgAGxBKgBqQTMAaEE7 AGZCQwBkQkoAY0FQAGFBVwBgQl4BXkJlAV1CbgJbQngCWkKEA1hCkANXQp4EVkOtBFVDvwRUQ9oE VEPxBFRD/gNUQ/8DVEP/A1RD/wPIQgAAuEkAAKdLAACYSgAAjUkAAINHAAB9QwAAdkMAAHFECgBt RBIAakUdAGdFJwBkRTAAYkU4AGBFPwBfRUcAXUVNAFtFVABaRlsBWUZjAVdGbAFWRnYCVEaBA1NG jgNSR5wEUEerBFBHvQRPR9YFT0fvBE9H/QRPR/8DT0f/A1BH/wPERQAAtU0AAKNNAACVTAAAiUsA AH9KAAB4RgAAcUcAAGxHBwBoSBAAZEgaAGFJJABfSS0AXUk1AFtJPQBZSUQAV0lKAFZJUQBVSlkB VEphAVJKaQFRSnQCT0p/A05KjANNSpsETEuqBEtLvARKS9MFSkvuBEtL/QRLSv8DS0r/A0tK/wPB SAAAslAAAKBPAACRTwAAhU4AAHtNAABzSQAAbEoAAGdLBABiTA4AX0wXAFxNIQBaTSoAWE0yAFZN OgBUTUEAU05IAFJOTwBQTlcBT05fAU5OZwFMTnICS059AklOiwNITpkER0+oBEZPugRGT9EERk/t BEZO/ARGTv8DR07/A0dO/wO9TAAArlIAAJxRAACNUQAAgVEAAHdQAABuTAAAZ04AAGJPAABdUA0A WlAUAFdRHgBVUScAU1EwAFFSOABQUj8ATlJGAE1STQBMU1UASlNdAUlTZQFIU28CRlN7AkVTiQND U5cDQlOnBEFTuARBU88EQVPsBEFS+wNCUv8DQlL/A0JR/wO6TwAAqlQAAJhUAACJVAAAfVMAAHNT AABpUQAAYlIAAFxTAABYVAoAVFUSAFJVGwBPViQATlYtAExXNQBLVzwASldEAEhXSwBHWFIARlha AURYYwFDWG0BQVh5AkBYhgI+WJUDPVilAzxYtwQ8WM0EPFfqAzxX+gM9Vv8DPVb/Az1W/wO2UwAA pVcAAJRXAACFVgAAeVYAAG9WAABlVQAAXFYAAFdYAABSWQcATloQAExaGABKWyEASFwqAEdcMgBF XDoARF1BAENdSABCXVAAQF1YAD9dYQE9XWsBPF12AjpdhAI5XZMCOF2jAzddtQM2XcsDNlzoAzdc +QM3W/8DOFv/Azha/wOyVwAAoFoAAI9ZAACBWQAAdVkAAGtZAABgWgAAVlsAAFFdAABMXgIASGAN AEVgFABEYR4AQmImAEBiLgA/YjYAPmM+AD1jRQA8Y00AO2NVADljXgA4Y2gBNmN0ATVjgQEzY5EC MmOhAjFjswIxY8gCMWLnAjFh+AIxYf8CMmD/AjJg/wKuXAAAm10AAIpdAAB8XQAAcF0AAGZdAABc XgAAUmAAAExiAABFZQAAQWYKAD5nEQA8aBoAO2giADlpKwA4aTIAN2o6ADZqQQA1akkANGpSADNq WwAxamUAMGpwAS5qfgEtao4BLGqfAStqsAEqasYBKmnlASpo9gIrZ/8CK2f/Aitn/wKpYQAAlWAA AIRgAAB3YAAAbGEAAGJhAABYYwAATmYAAEdoAABAawAAOm4FADZvDgA0cBUAM3AeADJxJgAwcS4A L3E1AC5yPQAtckUALHJNACtyVwAqcmEAKXJtACdyewAmcosAJHKcASNyrgEjcsMBI3HiASNw9AEj b/8BI27/ASNu/wGhZQAAjmQAAH9kAAByZAAAaGUAAF5mAABUaQAASWwAAEJvAAA7cgAANHUAAC54 CgAreREAKnkYACl6IQAneigAJnowACV7OAAke0AAI3tIACJ7UgAhe1wAIHtoAB98dgAdfIYAHHuY ABt7qgAae78AGnveABp58gAbeP4AG3f/ARt3/wGZaQAAiGkAAHlpAABtaQAAY2oAAFlsAABPbwAA RXMAAD13AAA1egAALn0AACeBAwAigw0AIIQSAB+EGgAdhCIAHIUqABuFMQAahTkAGYVCABiGTAAX hlYAFoZjABWGcQAUhoEAEoaTABGGpgARhbsAEIXWABGD7wARgvsAEoL/ABKB/wCRbgAAgW0AAHRu AABpbgAAXXAAAFNzAABJdwAAQHwAADeAAAAvgwAAJ4cAACGKAAAajQYAFY8NABOQEwASkBoAEpAi ABGQKgAQkTIAEJE7AA+RRAAOkU8ADZFcAAyRagALkXoACpGNAAiQnwAHkLMAB4/JAAeP5gAHjvQA CI38AAiN/wCJcwAAe3MAAG9zAABjdQAAV3gAAE19AABDgQAAOYYAADCKAAAojgAAIZEAABqVAAAT lwAADpoIAAucDgAJnBMACJwaAAecIgAGnCoABJwzAAOcPQACnUgAAJ1UAACdYgAAnHIAAJyEAACc lwAAm6oAAJu/AACa2wAAmuwAAJr1AACZ+ACCeQAAdnkAAGh6AABcfgAAUYIAAEaHAAA8jAAAMpEA ACmVAAAhmQAAGZ0AABKgAAAOowAACaYFAAOnDAAApxAAAKcVAACoHAAAqCMAAKgrAACpNAAAqT8A AKlLAACpWQAAqWgAAKl6AACpjgAAqaEAAKi1AACoywAAp+QAAKfvAACn8wB9gAAAb4EAAGGEAABV iQAASY4AAD6UAAA0mQAAKp4AACGiAAAZpgAAEqkAAA2sAAAHrwAAALIAAACzBwAAswwAALMQAAC0 FQAAtBsAALUiAAC2KwAAtzUAALdAAAC4TgAAuF0AALhuAAC4ggAAuJcAALiqAAC3vgAAt9IAALfm AAC36gB2iAAAZ4sAAFqQAABOlgAAQpwAADeiAAAspwAAIqsAABmvAAARswAAC7YAAAS5AAAAvAAA AL4AAAC+AAAAvwYAAMALAADBDwAAwhMAAMMZAADEIAAAxSkAAMc0AADIQgAAyVEAAMliAADJdQAA yYoAAMmfAADKsQAAysEAAMnRAADJ2QBukwAAYJgAAFOeAABGpAAAOqsAAC+wAAAktQAAGbgAABC8 AAAKvwAAAcEAAADEAAAAyAAAAMoAAADKAAAAzAAAAM0DAADOCAAA0A0AANEQAADTFgAA1h4AANoo AADdNAAA3kMAAN9UAADfZwAA4HwAAOCRAADgpAAA4LIAAOC+AADgwwBmnwAAWaYAAP/i8ABJQ0Nf UFJPRklMRQAECkytAAA/tAAAMrgAACS8AAAYvwAAEMMAAAjHAAAAygAAAM0AAADRAAAA1QAAANgA AADZAAAA2wAAAN0AAADfAAAA4QQAAOMKAADlDgAA5xMAAOocAADtJwAA8DUAAPFGAADyWAAA82sA APOAAAD0lAAA9KMAAPSuAAD0sgD/ABMA/wARAP8AEQD/ABUA/wAfAP8ALAD/ADkA/wBFAP8AUAD/ AFoA/gBjAPsAawD5AHIA9wB4APUAfgD0AIQA8gCJAPEAjgDwAJMA7gCZAO0AnwDsAKYA6gCuAOgA uADmAMUA5QDbAOMA7QDiAPsA4gD/AOEA/wDhAP8A4QD/AOEA/wD/ABAA/wAOAP8ADQD/ABIA/wAb AP8AKAD/ADQA/gBBAPsATAD3AFYA9ABfAPEAZgDvAG0A7AB0AOoAegDpAH8A5wCFAOYAigDlAI8A 4wCVAOEAmwDgAKIA3gCqANsAtADZAMAA1gDQANMA6ADSAPcA0QD/ANEA/wDQAP8A0AD/ANAA/wD/ AA0A/wAJAP8ACgD/AA8A/wAWAPsAIgD3AC8A9AA7APAARwDtAFEA6QBaAOUAYgDiAGkA4ABvAN4A dQDcAHoA2gCAANgAhQDVAIsA0wCRANEAlwDPAJ4AzQCmAMsArwDJALoAxwDJAMUA4gDEAPIAwwD+ AMIA/wDBAP8AwgD/AMIA/wD/AwYA/wABAP8ABgD/AAwA+QARAPEAHQDrACkA5wA2AOMAQQDfAEsA 2wBUANUAXADSAGMAzwBqAM0AcADLAHUAyQB7AMgAgADGAIYAxQCMAMMAkwDBAJoAvwCiAL0AqwC7 ALYAuQDEALcA2gC2AO0AtAD6ALQA/wC0AP8AtAD/ALQA/wD/BAAA/wAAAP8AAAD/AAYA7AANAOUA FgDeACIA1wAvANEAOwDNAEUAygBOAMYAVwDEAF4AwQBkAL8AagC9AHAAvAB1ALoAewC5AIEAtwCH ALUAjgCzAJUAsgCeALAApwCuALIArAC/AKoA0QCoAOgAqAD3AKcA/wCnAP8ApgD/AKYA/wD/BgAA /wUAAPEDAADoAAAA4QAHANUAEADNABsAxwAnAMMAMwC/AD4AvABIALkAUQC2AFgAtABfALIAZQCw AGoArwBwAK0AdgCsAHwAqgCCAKkAiQCnAJEApQCaAKMApAChAK4AoAC7AJ4BzQCdAuYAnAT0AJsE /wCaBf8AmgX/AJkF/wD/CgAA8Q4AAOQQAADZDwAAzgsAAMgDCwDCABMAvAIfALcDLACzBDcAsAVC AK0GSgCqBlIAqAdZAKYHXwClB2UAowdrAKIIcQCgCHcAnwh+AJ0IhQCbCY4AmgmXAJgKoQCWCqwA lQu6AJMLzACSDOUAkA32AI8O/wCODv8Ajg7/AI0O/wD2EQAA5hcAANYbAADHGQAAvhUAALkQAAC3 Cg0AsQsXAKwNJACoDjAApQ47AKIORACfD0wAnQ9TAJsPWgCaD2AAmBBmAJcQbACVEHIAkxB5AJIQ gQCQEIoAjxGUAI0RnwCLEaoAihK4AIgSywCGE+YAhRT3AIMV/wCDFf8AghX/AIIV/wDtGgAA3CEA AMolAAC7IgAAsR8AAKsaAACpFAYApRIRAKAUHgCcFSoAmRU1AJYWPgCUFkcAkhZOAJAWVQCOF1sA jBdhAIsXZwCJF20AiBd0AIYYfACFGIYAgxmQAIEZmwCAGqcAfhq1AH0bxwB8HOIAeh31AHkd/wB4 Hf8AeB3/AHgd/wDlIgAA0CkAAL8sAACwKgAApycAAKAjAACdHwAAmhoOAJUcGACRHSQAjh4vAIwe OQCJHkEAhx9JAIUfUACDH1YAgh9cAIAfYgB/H2kAfSBwAHwgeAB6IIEAeSGMAHchlwB1IqQAdCKy AHMjwwByI98AcCTzAG8k/wBvJP8AbiT/AG4k/wDdKQAAyDAAALcyAACoMAAAni4AAJcqAACTJwAA kCMKAIwjEwCIJB8AhCUqAIIlNACAJj0AfSZEAHwmSwB6JlIAeCZYAHcmXgB1JmUAdCdsAHIndABx J30AbyiIAG4olABsKKEAaymvAWopwAFpKtsBZyrxAWcr/wFmK/8BZir/AWYq/wHULwAAwjYAAK82 AAChNQAAljQAAJAwAACKLQAAhyoGAIMpEAB/KhoAfCslAHkrLwB3LDgAdSxAAHMsRwBxLE0AcCxU AG4sWgBtLGEAay1oAGotcABoLXoAZy6FAGUukQFkLp4BYi+sAWEvvQFhMNUBYDDvAV8w/QFfMP8B XzD/AV8w/wHNNAAAvDsAAKk6AACbOgAAkDgAAIk1AACDMgAAfzABAHsvDgB3MBYAdDAhAHExKwBv MTQAbTE8AGsxQwBqMUoAaDJQAGcyVwBlMl0AZDJlAGIybQBhM3cAXzOCAV4zjgFdNJwBWzSqAVo1 uwFaNdIBWTXtAVk1/AFYNf8BWDX/AVk1/wHIOAAAtz4AAKQ+AACWPQAAizwAAIM6AAB9NwAAeDQA AHQ0CwBwNRMAbTUdAGo1JwBoNjAAZjY4AGQ2PwBjNkYAYTZNAGA2UwBeN1oAXTdiAFw3agBaOHQB WTh/AVc4jAFWOZkBVTmoAlQ5uQJTOs8CUzrrAlM6+wFTOv8BUzn/AVM5/wHEPAAAskEAAKBAAACS QAAAhj8AAH49AAB4OgAAczgAAG45CABqOREAZzkaAGQ6JABiOiwAYDo0AF46PABdO0MAWztKAFo7 UABYO1cAVztfAFY8ZwBUPHEBUzx8AVI9iQFRPZcBTz2mAk4+twJOPs0CTj7pAk0++gJOPv8BTj3/ AU49/wHAPwAArkMAAJxDAACOQwAAgkIAAHpAAABzPQAAbTwAAGg9BQBkPQ4AYT4XAF4+IQBcPikA Wj4xAFg+OQBXPkAAVT9GAFQ/TQBTP1UAUkBcAFBAZQBPQG8BTkF6AU1BhwFLQZYBSkGlAklCtQJJ QssCSULoAklC+QJJQf8CSUH/AUlB/wG9QwAAqkUAAJhFAACKRQAAf0UAAHZDAABvQAAAaEAAAGNB AQBfQQ0AXEEUAFlCHQBXQiYAVUIuAFNCNgBRQj0AT0JDAE9DSwBOQ1IATURaAExEYwBKRG0BSUV4 AUhFhQFHRZQBRUWjAkVGtAJERskCREbnAkRF+AJERf8CRUX/AkVF/wG6RgAApkgAAJRIAACGSAAA e0cAAHJGAABqQgAAY0MAAF5EAABaRQsAVkUSAFRGGwBRRiMAT0YrAE5GMwBMRzoAS0dBAEpHSQBJ SFAASEhYAEdIYQBGSWsAREl2AUNJgwFCSZIBQUmiAkBJswI/SscCP0rlAj9J9wJASf8CQEj/AkBI /wG2SQAAokoAAJFKAACDSgAAd0oAAG5JAABlRQAAXkcAAFlIAABVSQgAUUoQAE9KGABMSiEASksp AElLMQBHSzgARkw/AEVMRgBETE4AQ01WAEJNXwBBTWgAQE10AT5NgQE9TZABPE2gATtOsQI6TsYC Ok7kAjtN9gI7Tf8BO0z/ATxM/wGzTQAAnkwAAI1MAAB/TAAAdEwAAGpMAABgSgAAWUsAAFRMAABQ TQUATE4OAElPFQBHTx4ARU8mAERQLgBCUDUAQVA9AEBRRAA/UUsAPlFTAD1SXAA8UmYAOlJyADlS fwE4Uo4BN1KeATZSrwE1UsQBNVLiATZS9QE2Uf8BNlD/ATdQ/wGuTwAAmU8AAIlPAAB7TwAAcE8A AGZPAABcTgAAVE8AAE9RAABKUgEARlMMAENUEgBBVBsAQFUjAD5VKwA9VjIAPFY6ADtWQQA6VkkA OVdRADhXWgA2V2MANVdvADRXfAEzV4wBMVecATBXrQEwV8IBMFfgATBW9AExVv8BMVX/ATFV/wGo UgAAlVIAAIRSAAB3UgAAbFIAAGJSAABYUwAAT1QAAElWAABEVwAAQFkIAD1aEAA7WhcAOVsgADhb JwA3XC8ANlw2ADVcPgA0XEYAM11OADFdVwAwXWEAL11sAC5degAsXYkAK12aASpdqwEqXb8BKV3e ASpc8gEqW/4BK1v/ASta/wGjVQAAj1UAAH9VAAByVQAAZ1YAAF5WAABUVwAATFkAAEVbAAA/XQAA Ol8EADZgDQA0YRMAMmIcADFiIwAwYisAL2MyAC5jOgAtY0IALGNKACpkUwApZF0AKGRpACdkdgAm ZIYAJWSXACRkqQAjZL0AImTaACNj8QAjYv0BJGH/ASRh/wGcWAAAiVgAAHpZAABuWQAAY1kAAFpa AABQXAAASF4AAEFgAAA6YwAANGYAAC9oCgAsaRAAKmkXAClqHwAoaiYAJ2ouACZrNQAlaz0AJGtG ACNrTwAibFkAIGxlAB9scgAebIIAHWyUABxspgAba7oAGmvUABtq7gAcafwAHGj/ABxo/wCVXAAA g1wAAHVcAABpXQAAX10AAFZeAABMYQAAQ2QAADxnAAA1agAAL20AAChwBAAjcg0AIXISACBzGgAf cyEAHnMoAB10MAAcdDgAG3RAABp0SgAZdFQAF3VgABZ1bgAVdX4AFHWQABN0ogASdLYAEXTPABJz 7AAScvoAE3H/ABNx/wCOYAAAfWAAAG9hAABlYQAAW2IAAFFkAABIZwAAPmsAADduAAAwcQAAKXUA ACJ4AAAcewcAF30OABZ9EwAVfRsAFH4iABN+KgASfjEAEX46ABF+RAAQf04AD39aAA5/aAANf3gA DH+KAAt+nQAKfrAACX3GAAp95AAKfPQAC3v9AAt6/wCGZQAAd2UAAGplAABhZgAAVmgAAExrAABC bwAAOXMAADF3AAAqegAAI34AAByBAAAVhAAAEIcIAA2JDgAMiRQADIkbAAuJIwAKiSsACYkzAAiJ PQAGiUgABYlUAASJYQACiXEAAYmDAACJlgAAiKkAAIe+AACH2gAAhuwAAIb1AACG+gB+agAAcWoA AGdrAABbbAAAUHAAAEZ0AAA8eAAAM30AACqBAAAjhQAAHIgAABWMAAAQjwAADJIGAAaTDAACkxEA AJQWAACUHQAAlCQAAJUsAACVNQAAlUAAAJVMAACWWQAAlmkAAJV6AACVjgAAlKEAAJS1AACTzAAA kuYAAJLyAACS9wB4cAAAbXAAAGByAABUdQAASXkAAD9+AAA1gwAALIgAACONAAAbkQAAFJQAAA+X AAAKmgAABJ0DAACeCQAAnw4AAJ8SAACgFwAAoB0AAKElAACiLQAAojcAAKNDAACjUAAAo18AAKNx AACjhAAAopkAAKKtAAChwgAAodwAAKHrAACg8gBzdgAAZncAAFl7AABNgAAAQoUAADiLAAAukAAA JJUAABuaAAAUngAADqEAAAmkAAACpwAAAKoAAACrBAAAqwoAAKwNAACtEQAArRYAAK4cAACvJAAA sC0AALE5AACxRgAAslUAALJmAACyeQAAso4AALGjAACytwAAscoAALHgAACx6QBsfgAAX4IAAFKH AABGjQAAO5MAADCZAAAmngAAHKMAABOnAAANqwAAB64AAACyAAAAtQAAALcAAAC4AAAAuQIAALkI AAC6DAAAuxAAALwUAAC9GwAAvyMAAMEtAADCOgAAwkkAAMNaAADDbAAAxIIAAMSXAADEqwAAxLwA AMTLAADE2gBliQAAWI4AAEuVAAA/mwAAM6IAACioAAAdrQAAFLEAAA22AAAGuQAAALwAAAC/AAAA wwAAAMQAAADFAAAAxgAAAMcAAADJBAAAygkAAMsNAADNEQAAzxgAANIhAADVLQAA1jwAANhNAADZ XwAA2nMAANqKAADbngAA264AANu6AADcwwBelgAAUZwAAESjAAA4qgAALLEAACC3AAAVuwAADb4A AATCAAAAxQAAAMkAAADNAAAA0AAAANIAAADSAAAA1QAAANYAAADZAAAA2wAAAN4FAADgCgAA4g8A AOUWAADoIAAA7C0AAO0+AADtUQAA7mUAAO96AADvjwAA8J8AAPCrAADwswD/ABAA/wAOAP8ADgD/ ABIA/wAdAP8AKQD/ADUA/wBBAP8ATQD+AFYA+wBfAPgAZgD2AG0A9AB0APIAeQDxAH8A8ACEAO4A iQDtAI8A6wCVAOoAmwDoAKIA5gCqAOUAswDjAMAA4QDSAOAA6gDfAPkA3QD/AN0A/wDdAP8A3gD/ AN4A/wD/AA0A/wAKAP8ACQD/AA8A/wAYAP8AJAD+ADEA+wA9APgASAD0AFIA8ABaAO0AYgDrAGkA 6QBvAOcAdQDlAHoA4wB/AOIAhQDgAIoA3gCQANwAlgDaAJ0A2AClANUArwDSALoA0ADKAM4A4wDN APQAywD/AMsA/wDLAP8AywD/AMsA/wD/AAgA/wADAP8ABQD/AAwA/AAUAPcAHwDyACsA7wA3AOsA QgDnAEwA5ABVAOAAXQDdAGQA2gBqANgAcADVAHUA0gB6ANAAgADPAIUAzQCLAMsAkgDJAJkAxwCh AMUAqgDDALUAwQDDAL8A2gC+AO4AvQD8ALwA/wC8AP8AvAD/ALwA/wD/AAAA/wAAAP8AAAD5AAcA 8QAQAOoAGgDkACUA3wAxANsAPADXAEcA0gBQAM4AVwDLAF4AyQBlAMYAagDFAHAAwwB1AMEAegDA AIAAvgCGALwAjQC6AJQAuQCcALcApQC1ALAAswC9ALEAzwCvAOgArgD4AK4A/wCtAP8ArQD/AK0A /wD/AAAA/wAAAP0AAADuAAEA4wAMANoAFADRAB8AzAArAMgANgDFAEAAwgBKAL8AUgC8AFkAugBf ALgAZQC2AGoAtABvALMAdQCxAHoAsACBAK4AiACtAI8AqwCYAKkAoQCnAKsApQC4AKMAyACiAOIA oQDzAKAA/gCgAP8AoAD/AKAA/wD/AAAA9gAAAOoAAADgAAAA0wAGAMkADwDCABgAvQAkALkALwC2 ADoAtABDALEATACuAFMArABZAKoAXwCpAGQApwBqAKYAbwCkAHUAowB7AKEAggCgAIoAngCTAJwA nQCaAKcAmAC0AJYAwwCVANwAlADvAJMA+wCTAP8AkwD/AJIA/wD5BQAA6gsAANwNAADLCgAAwgUA ALwACgC2ABEAsQAcAK4AKACqADMApwA9AKQARQCiAE0AoABTAJ4AWQCcAF8AmwBkAJoAagCYAHAA lwB2AJUAfgCTAIYAkgGPAJABmQCOAqQAjAKxAIsDwACJBdYAiAbtAIgH+gCHCP8Ahgj/AIYI/wDv DwAA3hQAAMoVAAC8EgAAsxAAAK4MAACrBg0ApwMVAKIFIACfBywAnAg2AJkIPwCXCUcAlQlOAJMJ VACRCloAkApfAI4KZQCNCmsAiwpyAIoLeQCIC4IAhwuMAIUMlwCDDKIAgQ2wAIANwAB/DdgAfQ7v AHwP/QB7D/8AexD/AHsQ/wDmFwAA0R4AAL0dAACvHAAAphkAAKEVAACeEAQAnQ0PAJgOGQCUDiUA kQ8vAI8QOQCMEEEAihBIAIgQTwCHEFUAhRBbAIQRYQCCEWcAgBFuAH8RdQB9EX4AfBKIAHoSlAB4 EqAAdxOuAHUTvgB0FNUAcxXuAHEW/QBxFv8AcRb/AHAW/wDcHwAAxiUAALMlAAClIwAAnCEAAJYe AACSGQAAkRQLAI0UFACJFR8AhhYpAIMWMwCBFzwAgBdDAH4XSgB8F1AAehdWAHkYXAB3GGIAdhhp AHQYcQBzGXoAcRmEAG8akABuGp0AbBurAGscuwBqHNAAaR3sAGge+wBoHv8AZx7/AGce/wDRJgAA vSoAAKsqAACdKgAAkygAAI0lAACIIgAAhh0GAIMbEAB/HBoAfB0kAHodLgB3HjYAdh4+AHQeRQBy H0sAcR9RAG8fWABuH14AbB9lAGsgbQBpIHYAaCGBAGYhjQBlIpoAYyKoAGIjuABhI80AYCTpAGAk +gBfJP8AXyT/AF8k/wDKLAAAti8AAKQvAACWLwAAjC0AAIUqAACAKAAAfSQAAHoiDQB2IxUAcyMg AHEkKQBvJDIAbSQ6AGslQQBqJUcAaCVNAGYlVABlJVoAZCZhAGImaQBhJnIAXyd9AF4nigBdKJcA WymlAFoptQBaKsoAWSrnAFgq+ABYKv8AWCr/AFgq/wDFMQAArzMAAJ4zAACQMwAAhjIAAH8vAAB5 LQAAdSoAAHIoCgBvKBIAaykbAGkpJQBnKi0AZSo1AGMqPQBiKkMAYCpKAF8rUABeK1cAXCteAFss ZgBZLG8AWC16AFcthwBWLpUAVC6jAFMvswBTL8cAUi/lAFIv9wBSL/8AUi//AFIv/wDBNgAAqjYA AJk2AACLNgAAgTUAAHkzAABzMQAAby8AAGsuBgBoLRAAZC4YAGIuIQBgLyoAXi8xAFwvOQBbL0AA WS9GAFgvTQBXMFMAVjBbAFQxYwBTMWwAUjJ3AFEyhABPM5IATjOhAE0zsQBNNMUBTDTjAUw09gBM NP8ATDT/AEwz/wC7OQAApjkAAJU5AACHOQAAfDkAAHQ3AABuNAAAaTMAAGUyAgBhMg0AXjIUAFwz HgBaMyYAWDMuAFYzNQBVNDwAUzRDAFI0SgBRNFAAUDVYAE41YABNNmoATDZ1AEs3ggBKN5AASTif AEg4sAFHOMMBRzjhAUc49QFHOP8BRzj/AUc4/wG3OwAAojwAAJE8AACDPAAAeDwAAHA6AABqNwAA ZDYAAGA2AABcNgsAWTcSAFY3GgBUNyMAUjcrAFA3MgBPODkATThAAEw4RwBLOE4ASjlVAEk5XgBI OmgARzpzAEY7gABFO44ARDyeAEM8rgFCPMIBQj3fAUI88wFCPP8BQjz/AUI7/wGzPQAAnj4AAI0+ AAB/PgAAdT4AAGw9AABmOgAAYDkAAFs6AABXOggAUzsQAFE7GABOOyAATDsoAEs7LwBJPDYARzw9 AEc8RABGPUsART1TAEQ+XABDPmYAQj9xAEE/fgBAP40AP0CcAD5ArQE9QMABPUDdAT1A8gE9QP8B Pj//AT4//wGuQAAAmkAAAIlBAAB8QQAAcUEAAGhAAABhPAAAWz0AAFY+AABSPgUATj8OAEw/FQBJ Px0AR0AlAEZALABEQDMAQ0A6AEJBQgBBQUkAQEFRAD9CWgA+QmMAPUNvADxDfAA7Q4sAOkSbADlE qwE5RL4BOETbATlE8QE5Q/4BOUP/ATlD/wGqQgAAlkMAAIZDAAB4QwAAbkMAAGVDAABdQAAAVkAA AFFCAABNQgIASUMMAEZDEgBERBoAQkQiAEFEKgA/RTEAPkU4AD1FPwA8RkcAO0ZPADpGVwA5R2EA OEdsADdHegA2SIkANUiZADRIqgA0SL0AM0jZADRI8AA0R/0ANEf/ADVG/wCmRAAAkkUAAIJGAAB1 RgAAakYAAGFFAABZRAAAUUQAAExGAABIRwAAREcKAEFIEAA/SRgAPUkgADxJJwA6Si4AOUo2ADhK PQA3S0QANktMADVLVQA0TF8AM0xqADJMdwAxTIYAMEyXAC9NqAAuTbsALk3VAC5M7wAvTP0AL0v/ ADBL/wChRwAAjkgAAH5IAABxSAAAZkkAAF1IAABVSAAATEkAAEdKAABCSwAAP0wGADtNDgA5ThUA N04dADZPJAA1TysAM08zADJQOgAxUEIAMFBKAC9RUgAuUVwALVFnACxRdQArUYQAKlKVAClSpgAp UrkAKFLSAClR7gApUPwAKlD/ACpP/wCcSgAAiUoAAHpLAABtSwAAY0wAAFpMAABRTAAASE0AAENP AAA9UAAAOVICADVTDAAzVBIAMVQZADBVIQAuVSgALVUvACxWNwArVj4AKlZGAClWTwAoV1kAJ1dk ACZXcgAlV4EAJFeSACNXpAAiV7cAIlfPACJX7AAjVvoAI1X/ACRV/wCWTQAAhE4AAHVOAABpTgAA X08AAFZPAABNUAAARVIAAD9TAAA5VgAAM1gAAC9aCAArWw8AKlsVAChcHQAnXCQAJlwrACVcMwAk XToAI11DACJdTAAhXVYAIF5hAB9ebgAeXn4AHV6PABxeoQAbXrQAGl3MABtd6QAbXPkAHFv/ABxb /wCQUQAAflEAAHBRAABkUgAAW1IAAFJTAABKVAAAQVcAADtZAAA1WwAALl4AAChgAwAkYgwAImMR ACFjGAAfZCAAHmQnAB1kLgAcZDYAG2U+ABplRwAZZVEAGGVdABdlagAWZXoAFWWLABRlngATZbEA EmXIABJk5wATY/cAFGL/ABRi/wCJVAAAeFUAAGtVAABgVgAAV1YAAE9XAABGWQAAPVwAADZfAAAw YgAAKWQAACNnAAAdagcAGWwOABhsEwAWbRoAFW0hABRtKQAUbTAAE205ABJuQgARbkwAEG5YAA9u ZQAObnUADW6HAA1umgAMba0AC23CAAts4AAMa/MADWv9AA1q/wCCWQAAclkAAGZZAABcWgAAVFoA AEpcAABBXwAAOWMAADFmAAAqaQAAJGwAAB1vAAAXcgAAEnUJAA93DwAOdxQADncbAA13IwAMdyoA C3czAAp3PAAJd0cACHdSAAd3XwAFd28ABHeAAAN3lAABdqcAAHa7AAF11QABdOsAAnT2AAJ0/AB7 XQAAbV0AAGJeAABZXgAATmAAAEVjAAA8ZwAAM2sAACtuAAAkcgAAHnUAABd5AAASfAAADX8GAAmB DAAFgREAA4EWAAKBHQABgSQAAIEtAACCNgAAgkAAAIJMAACCWQAAgmgAAIJ5AACCjQAAgaAAAIC0 AACAywAAf+cAAH7yAAB++QB0YgAAaGIAAF5iAABTZAAASWcAAD9rAAA2cAAALXQAACV4AAAefAAA F4AAABGDAAANhgAACIkEAAKLCgAAiw4AAIsTAACMGAAAjB8AAI0mAACNLwAAjjkAAI5EAACOUQAA jmAAAI5xAACOhQAAjpkAAI2tAACMwwAAjN8AAIvuAACL9gBuaAAAZGcAAFhpAABNbAAAQnEAADh2 AAAvewAAJn8AAB6EAAAWiAAAEIwAAAyPAAAGkgAAAJUAAACWBwAAlwwAAJcPAACYEwAAmRgAAJof AACbJgAAmzAAAJw7AACcSAAAnFcAAJxoAACcewAAnJAAAJulAACbugAAmtAAAJrnAACa8QBqbQAA Xm8AAFFyAABGdwAAO3wAADGCAAAnhwAAHowAABaRAAAQlQAACpkAAAScAAAAoAAAAKIAAACjAQAA owYAAKQLAAClDgAAphIAAKcXAACoHgAAqiYAAKsxAACrPgAArE0AAKxdAACscAAArIUAAKybAACr rwAAq8MAAKvZAACq6ABkdQAAV3kAAEt+AAA/hAAANIoAACmQAAAflgAAFpsAABCfAAAJowAAAacA AACqAAAArgAAALAAAACwAAAAsQAAALIDAAC0CAAAtQ0AALYQAAC3FQAAuR0AALsmAAC8MwAAvUEA AL1SAAC9ZAAAvnkAAL6QAAC9pAAAvbcAAL3GAAC91wBcfwAAUIUAAESLAAA4kgAALJkAACGfAAAX pAAAEKkAAAmuAAAAsgAAALYAAAC5AAAAvQAAAL8AAAC/AAAAwAAAAMEAAADDAAAAxAUAAMYKAADH DgAAyRMAAMscAADOJgAA0DUAANFFAADSVwAA0msAANOCAADTlwAA06kAANK4AADSxABVjAAASZMA AD2aAAAwogAAJagAABquAAARtAAACbkAAAC9AAAAwQAAAMQAAADIAAAAywAAAM0AAADNAAAAzwAA ANAAAADSAAAA1AAAANgAAADaBgAA3QwAAOARAADjGgAA5icAAOc4AADoSgAA6V0AAOpyAADriAAA 65sAAOyoAADssgD/AA0A/wALAP8ACwD/ABAA/wAaAP8AJgD/ADIA/wA9AP8ASAD7AFIA+ABaAPYA YgDzAGkA8QBvAPAAdQDuAHoA7AB/AOsAhADpAIoA6ACQAOYAlgDkAJ0A4gClAOEArwDfALsA3QDL ANsA5gDZAPcA2AD/ANgA/wDXAP8A1wD/ANQA/wD/AAgA/wAEAP8ABAD/AA0A/wAVAP4AIQD6ACwA 9wA4APQAQwDwAE0A7QBVAOoAXQDnAGQA5ABqAOIAcADgAHUA3gB6AN0AfwDbAIUA2QCLANUAkQDT AJkA0QCgAM8AqgDNALUAywDEAMkA3QDIAPEAxwD/AMYA/wDGAP8AxgD/AMcA/wD/AAAA/wAAAP8A AAD/AAoA+AARAPEAHADsACcA6QAyAOYAPQDiAEcA3QBQANkAWADVAF8A0gBlANAAagDOAHAAzAB1 AMoAegDJAH8AxwCFAMUAjADDAJQAwQCcAL8ApQC9ALAAuwC9ALoA0AC4AOsAtwD7ALYA/wC2AP8A tgD/ALYA/wD/AAAA/wAAAP0AAADzAAUA6QAOAOEAFgDbACEA1QAtANEANwDOAEEAygBKAMcAUgDE AFkAwgBfAMAAZQC+AGoAvABvALsAdAC5AHoAtwCAALYAhwC0AI4AsgCXALAAoACuAKoArQC3AKsA yACpAOMAqAD1AKcA/wCnAP8ApwD/AKYA/wD/AAAA/gAAAPEAAADlAAAA1wAKAM0AEQDHABwAwgAm AL8AMQC8ADsAugBEALcATAC0AFMAsgBZALEAXwCvAGQArQBpAKwAbwCqAHQAqQB6AKcAgQCmAIkA pACRAKIAmwCgAKUAngCyAJ0AwQCbANoAmgDvAJkA/QCYAP8AmAD/AJgA/wD9AAAA8AAAAOEAAADR AAAAxgAEAL0ADQC3ABUAswAgALAAKwCtADUAqwA+AKgARgCmAE0ApABUAKMAWQChAF8AoABkAJ4A aQCdAG4AmwB1AJoAewCYAIMAlgCMAJUAlgCTAKEAkQCtAI8AuwCNAM8AjADpAIsA+ACMAP8AjAD/ AIwA/wDzAgAA4gcAAMwHAAC/BAAAtwAAALEACACrABAApwAZAKQAJACgAC4AngA3AJwAQACaAEcA mABOAJYAVACVAFkAkwBeAJIAZACQAGkAjwBvAI0AdgCLAH4AigCIAIgAkgCGAJ0AhQCpAIMAuACB AMoAgADlAIAA9QB/AP8AfwD/AH8A/wDoDQAA0BAAAL4QAACxDgAAqA0AAKMIAACgAgwAnAATAJgA HQCVACcAkgAxAJAAOQCOAUEAjAFIAIoCTgCJAlQAhwJZAIYCXwCEA2QAgwNrAIEDcgCABHoAfgSE AH0FjgB7BZoAeQanAHgGtQB2B8gAdQjjAHUJ9AB0Cv8Acwr/AHMK/wDdFQAAxBcAALEXAAClFgAA nBMAAJYRAACUDQQAkwgNAI4HFQCLCSAAiAkqAIUKMwCDCzsAgQtCAIALSQB+C08AfQxUAHsMWgB6 DGAAeAxnAHcMbgB1DXYAdA2AAHINjABwDZkAbw6mAG0OtQBsDskAaw/mAGoQ9wBpEP8AaRD/AGkQ /wDQHQAAuR4AAKgeAACbHQAAkhsAAIsZAACIFQAAhxEHAIUOEACBDxoAfhAkAHsQLQB5EDYAdxE9 AHYRRAB0EUoAcxFQAHERVgBwEVwAbhJiAG0SagBrEnMAaRN9AGgTiQBmE5YAZRSjAGMVswBiFcYA YhbjAGEW9gBgF/8AYBf/AGAX/wDHIgAAsCMAAJ8kAACSIwAAiSIAAIIgAAB+HQAAfBkAAHoVDQB3 FRUAdBYfAHEWKABvFzAAbhc4AGwXPwBrF0UAaRhLAGgYUQBmGFgAZRheAGMZZgBiGW8AYBl5AF8a hQBdG5IAXBuhAFscsABaHMMAWR3gAFge9ABYHv8AWB7/AFge/wC/JwAAqSgAAJkoAACLKAAAgicA AHslAAB2IwAAcyAAAHEcCQBuHBEAaxwaAGkdIwBnHSwAZR0zAGMeOgBiHkEAYB5HAF8eTQBeHlQA XB9bAFsfYgBZIGsAWCB2AFYhggBVIZAAVCKeAFMirgBSI8AAUSPdAFEk8gBRJP8AUST/AFEj/wC5 KwAAoywAAJMsAACGLQAAfCwAAHQqAABvKAAAayUAAGkiBQBmIQ4AYyIWAGEiHwBfIycAXSMvAFwj NgBaIz0AWSRDAFckSgBWJFAAVSRXAFMlXwBSJWgAUSZzAE8mfwBOJ40ATSicAEworABLKb4ASyna AEop8QBKKf8ASyn/AEsp/wCzLgAAni8AAI4wAACBMAAAdy8AAG8uAABqKwAAZSoAAGMnAQBfJwwA XCcTAFonGwBYKCQAVigrAFUoMgBTKDkAUilAAFApRgBPKU0ATilUAE0qXABMKmUASitwAEkrfABI LIsARy2aAEYtqgBFLrwARS7WAEUu7wBFLv4ARS7/AEUt/wCuMQAAmjIAAIkzAAB8MwAAcjMAAGsx AABlLwAAYC0AAF0sAABZLAkAViwQAFQsGABSLCAAUCwoAE4tLwBNLTYATC08AEotQwBJLUoASC5R AEcuWQBGL2MARTBtAEMwegBCMYkAQTGYAEEyqABAMrsAPzLTAD8y7gBAMv0AQDL/AEAy/wCqMwAA ljUAAIY1AAB5NgAAbjUAAGY1AABhMgAAXDAAAFcwAABUMAYAUTAOAE4wFQBMMR0ASjElAEgxLABH MTIARjE5AEQxQABDMkcAQjJPAEEzVwBAM2AAPzRrAD41eAA9NYcAPDaWADs2pwA7NrkAOjbRADo2 7QA7NvwAOzb/ADs2/wCmNgAAkjcAAII4AAB1OAAAazgAAGM3AABdNgAAVzMAAFM0AABPNAMASzQM AEk0EgBGNRoARTUiAEM1KQBBNS8AQDU2AD82PQA+NkQAPTdMADw3VQA7OF4AOjhpADk5dgA4OYUA NzqVADc6pQA2OrgANTrPADY67AA2OvsANjn/ADc5/wCiOAAAjjkAAH46AAByOwAAaDsAAF86AABZ OQAAUzYAAE43AABKOAAARjgKAEQ5EABBORcAPzkfAD45JgA8OS0AOzo0ADo6OwA5O0IAODtKADc7 UwA2PFwANTxnADQ9dAAzPYMAMz6TADI+pAAxPrYAMT7NADE+6gAxPvoAMj3/ADI9/wCeOwAAizwA AHs8AABuPQAAZD0AAFw9AABVPAAATjoAAEk7AABFPAAAQT0HAD49DgA8PRUAOj4cADk+IwA3PioA Nj8xADU/OAA0P0AAM0BIADJAUAAxQFoAMEFlAC9BcgAuQoEALUKRAC1CogAsQrUAK0LLACxC6QAs QvkALUH/AC1B/wCZPQAAhz4AAHc/AABrPwAAYUAAAFk/AABSPwAAST4AAEQ/AABAQAAAPEEEADlC DQA3QhIANUMZADNDIQAyQygAMUQvADBENgAvRD0ALkVFAC1FTgAsRVgAK0ZjACpGbwApRn4AKEaP ACdHoQAmR7MAJkfJACZG5wAnRvgAKEX/AChF/wCVQAAAgkEAAHNCAABnQgAAXkIAAFVCAABOQgAA RUIAAD9EAAA7RQAAN0YAADRHCgAxSBAAL0gWAC5JHgAsSSUAK0ksACpJMwApSjoAKEpCACdKSwAm S1UAJUtgACRLbQAjS3wAIkuNACFMnwAhTLEAIEzHACBL5gAhS/cAIkr/ACJK/wCQQwAAfkQAAG9E AABkRQAAWkUAAFJFAABKRgAAQUcAADxIAAA3SQAAMksAAC5NBwArTg4AKU4TACdPGgAmTyEAJU8o ACRPMAAjUDcAIlA/ACFQSAAgUFIAH1FdAB5RagAdUXkAHFGKABtRnAAaUa8AGVHFABlR5AAaUPYA G0//ABxP/wCKRgAAeUcAAGtHAABgSAAAVkgAAE5IAABHSQAAPksAADlMAAAzTgAALlAAAChTAgAk VAsAIlUQACBVFgAfVh4AHlYkAB1WLAAcVjMAG1c7ABpXRAAZV04AGFdZABdYZgAVWHUAFFiHABRY mgATV6wAElfCABJX4QATVvQAFFX/ABRV/wCESQAAdEoAAGZLAABcSwAAU0sAAEtMAABETQAAPE8A ADVRAAAvVAAAKVYAACRZAAAeWwcAGl0NABhdEgAXXRkAFl4gABVeJwAUXi4AE143ABJeQAARX0oA EV9VABBfYgAPX3EADl+DAA1flgANX6kADF6+AAxe2gANXfAADVz8AA5c/wB+TQAAbk4AAGJOAABY TwAAT08AAEhQAABAUgAAOFQAADBXAAAqWgAAJF0AAB9fAAAZYgEAE2UJABFmDwAQZhQAD2YbAA5n IgANZykADWcyAAxnOwALZ0UACmdQAAlnXQAHZ2wABmd9AAVnkAAEZqMAAma3AANlzwAEZekABGT1 AARk/AB3UQAAaVIAAF1SAABUUgAATFMAAENVAAA7WAAAM1sAACteAAAlYQAAH2QAABlnAAATagAA D20GAAtwDAAIcBEAB3AWAAVwHQAEcCQAA3AsAAJwNQAAcD8AAHBKAABwVwAAcGUAAHB2AABwigAA b54AAG+yAABuyAAAbeUAAG3yAABt+QBwVgAAY1YAAFlWAABRVwAAR1gAAD5bAAA2XwAALmIAACZm AAAfagAAGW0AABNwAAAOcwAAC3YEAAV4CwABeA8AAHkTAAB5GQAAeR8AAHomAAB6LwAAejkAAHpE AAB6UAAAel8AAHpwAAB6gwAAepgAAHqsAAB5wgAAeN8AAHjvAAB39wBqWwAAX1sAAFZbAABMXAAA QmAAADljAAAwaAAAKGwAACBwAAAZdAAAE3cAAA57AAAJfgAABIECAACCCAAAgw0AAIMQAACEFAAA hRkAAIYgAACGKAAAhzEAAIc8AACHSQAAh1cAAIdoAACHewAAh5AAAIalAACFugAAhdMAAITqAACE 9ABlYAAAXGAAAFFhAABGZAAAPGkAADJtAAApcgAAIXcAABl7AAASgAAADYMAAAiHAAACigAAAI0A AACOBAAAjgkAAI8NAACQEAAAkRQAAJIZAACTIAAAlCkAAJUzAACVQAAAlk4AAJZfAACVcgAAlYgA AJWdAACUsgAAlMgAAJPiAACT7gBhZQAAVmYAAEpqAAA/bgAANXQAACt5AAAhfwAAGYQAABGJAAAM jQAABpEAAACUAAAAmAAAAJoAAACbAAAAnAIAAJ0HAACeCwAAnw4AAKESAACiGAAAoyAAAKUpAACm NgAApkQAAKZVAACmaAAApn0AAKaUAAClqQAApL0AAKTRAACk5ABbbAAAT3AAAEN1AAA4ewAALYEA ACOHAAAZjQAAEZIAAAuXAAAEnAAAAKAAAACjAAAApgAAAKgAAACpAAAAqgAAAKwAAACtBAAArgkA ALANAACxEQAAsxcAALUgAAC2KwAAtzoAALdLAAC4XAAAuHEAALiIAAC4nQAAuLEAALfCAAC30ABU dgAASHwAADyCAAAxiQAAJpAAABuXAAASnQAADKIAAAOnAAAAqwAAAK4AAACyAAAAtgAAALgAAAC4 AAAAugAAALsAAAC9AAAAvgAAAMAFAADBCwAAwxAAAMYWAADJIAAAyi4AAMs+AADMUAAAzGQAAM16 AADNkQAAzaQAAM20AADNwABNgwAAQYoAADWRAAApmQAAHqAAABOmAAAMrAAAA7EAAAC2AAAAugAA AL4AAADCAAAAxgAAAMgAAADIAAAAygAAAMsAAADNAAAAzgAAANAAAADSAQAA1QgAANkOAADdFQAA 4SEAAOIxAADkQwAA5VYAAOZrAADmggAA55YAAOelAADmsAD/AAkA/wAFAP8ABgD/AA4A/wAWAP8A IQD/AC0A/wA4AP0AQwD5AE0A9QBVAPIAXQDwAGMA7gBpAOwAbwDqAHQA6QB6AOcAfwDmAIUA5ACL AOMAkQDhAJkA3wChANwAqgDaALYA1wDGANUA4QDTAPQA0gD/ANEA/wDRAP8AzwD/AMoA/wD/AAEA /wAAAP8AAQD/AAwA/wASAPoAHQD2ACgA8wAzAPAAPgDsAEgA6ABQAOUAWADiAF4A3wBkAN0AagDb AG8A2QB0ANYAegDUAH8A0gCFANAAjADOAJMAzACcAMkApQDHALAAxgC+AMQA1ADCAO4AwQD+AMAA /wDAAP8AvwD/AL4A/wD/AAAA/wAAAP8AAAD6AAcA8QAPAOsAGADmACMA4gAuAOAAOADbAEIA1QBL ANEAUgDOAFkAywBfAMkAZQDHAGoAxgBvAMQAdADCAHoAwQCAAL8AhgC9AI4AuwCWALkAoAC3AKoA tgC3ALQAygCyAOYAsQD4ALAA/wCvAP8ArwD/ALAA/wD/AAAA/wAAAPcAAADqAAIA4QAMANcAEwDQ AB0AzAAoAMkAMgDGADwAwgBFAL8ATQC8AFMAugBZALgAXwC3AGQAtQBpALQAbgCyAHQAsQB6AK8A gACtAIgArACRAKoAmgCoAKUApgCxAKQAwQCjANwAoQDyAKEA/wCgAP8AoAD/AKEA/wD/AAAA9wAA AOgAAADZAAAAywAIAMMAEAC9ABgAuQAiALYALAC0ADYAsgA/AK8ARwCsAE0AqwBUAKkAWQCnAF4A pgBjAKUAaACjAG4AogB0AKAAegCeAIIAnACLAJsAlQCZAJ8AmACsAJYAugCUAM8AkwDrAJIA+wCS AP8AkgD/AJEA/wD3AAAA5wAAANMAAADGAAAAuwACALMADACtABIAqgAcAKcAJgCkADAAowA4AKAA QACeAEcAnABOAJoAUwCZAFgAlwBdAJYAYwCVAGgAkwBuAJIAdACQAHwAjwCFAI0AjwCLAJoAigCn AIgAtQCGAMcAhQDkAIQA9QCEAP8AgwD/AIMA/wDsAAAA0wAAAMEBAAC0AAAArAAAAKYABwCgAA4A nQAWAJoAIACXACkAlQAyAJMAOgCRAEEAjwBIAI0ATQCMAFMAiwBYAIkAXQCIAGMAhwBpAIUAbwCD AHcAggCAAIAAigB+AJYAfQCjAHsAsAB6AMIAeQDdAHgA8QB3AP0AeAD/AHgA/wDeCgAAxAsAALIM AACmCwAAnQgAAJkEAACVAAoAkQARAI4AGQCLACMAiQAsAIcANACFADsAgwBCAIIASACAAE4AfwBT AH0AWAB8AF4AewBkAHkAagB4AHIAdgB7AHQAhgBzAJIAcQCfAHAArQBuAL4AbQHWAG0C7QBsA/oA bAP/AGwD/wDOEAAAtxEAAKYSAACaEQAAkRAAAIsOAACJCwMAhwUMAIQBEwCBARwAfgIlAHwDLgB6 AzYAeAQ8AHcEQwB1BUgAdAVOAHMFVABxBVkAcAZfAG4GZgBtBm4Aawd4AGoHgwBoCJAAZwmdAGUJ rABkCbwAYwrUAGML7ABiDPoAYgz/AGIM/wDDFgAArRcAAJ0YAACQGAAAhxYAAIEUAAB9EQAAfA4G AHwKDgB4ChYAdQsfAHILKABwDDAAbww3AG0MPgBsDEQAaw1KAGkNTwBoDVUAZw1cAGUNYwBjDmsA Yg51AGAOgQBfDo4AXQ+cAFwQqwBbEL0AWhDWAFkR8ABZEf0AWRH/AFkR/wC5GwAApR0AAJQeAACI HgAAfh0AAHgbAAB0GAAAcRUAAHERCQBvEBEAbBAZAGkQIgBnESoAZhEyAGQROQBjET8AYhFFAGAS SwBfElEAXRJYAFwSXwBaE2gAWRNyAFcUfQBWFIsAVBWZAFMVqQBSFroAURbSAFEX7QBRF/0AURf/ AFEX/wCyIAAAniIAAI4iAACBIwAAdyIAAHAhAABsHgAAaRsAAGcYBABmFQ4AYxYVAGEWHgBfFiYA XRYtAFwXNABaFzsAWRdBAFgYRwBWGE0AVRhUAFMYXABSGWQAURluAE8aegBOG4gATRuXAEscpgBK HLgASh3PAEkd6wBJHfsASR3/AEod/wCsJAAAmCUAAIgmAAB7JwAAcSYAAGolAABmIwAAYiEAAGAe AABeHAsAWxsSAFkcGgBXHCIAVRwpAFQcMABTHTcAUR09AFAdQwBPHUoATR5RAEweWABLH2EASR9r AEggdwBHIIUARiGUAEQipABEIrYAQyLMAEMj6QBDI/oAQyP/AEMi/wCmJwAAkykAAIMqAAB2KgAA bSoAAGUpAABgJwAAXCUAAFkjAABXIQcAVSEPAFIhFgBQIR4ATiElAE0iLABMIjMASiI5AEkiQABI IkYARyNNAEUjVQBEJF4AQyRpAEIldQBAJoMAPyaSAD4nowA+J7QAPSfKAD0o6AA9KPkAPSf/AD4n /wCiKgAAjisAAH8tAAByLQAAaC0AAGEsAABcKwAAWCgAAFQmAABRJgQATiUNAEwlEwBKJhoASCYi AEcmKQBFJi8ARCY2AEMnPABBJ0MAQCdLAD8oUwA+KVwAPSlmADwqcgA7KoEAOiuQADkroQA4LLIA NyzIADcs5gA4LPgAOCz/ADgs/wCdLAAAii4AAHsvAABvMAAAZTAAAF0vAABYLgAAUysAAFAqAABM KgAASSoLAEYqEQBEKhcAQiofAEEqJQA/KiwAPiszAD0rOQA8K0AAOyxIADosUAA5LVkAOC5kADcu cAA2L38ANS+PADQwnwAzMLEAMjDHADIw5QAzMPcAMzD/ADQv/wCZLwAAhzEAAHcyAABrMgAAYjIA AFoyAABUMQAATy8AAEstAABHLgAARC4IAEEuDgA/LhQAPS4cADsuIgA5LykAOC8vADcvNgA2MD4A NTBGADUxTgA0MVcAMzJiADIybgAxM30AMDONAC80ngAuNLAALTTFAC004wAuNPYALzP/AC8z/wCV MQAAgzMAAHQ0AABoNQAAXjUAAFc0AABRNAAASzIAAEYxAABCMgAAPzIFADwyDQA5MxIAODMZADYz IAA0MyYAMzMtADI0NAAxNDsAMDVDADA1TAAvNlUALjZgAC03bAAsN3sAKzeLACo4nAApOK4AKDjD ACg44gApOPUAKjf/ACo3/wCSNAAAfzUAAHE2AABlNwAAWzcAAFQ3AABNNgAARzYAAEI1AAA9NgAA OjYCADc3CwA0NxAAMjcWADE4HQAvOCQALjgrAC05MgAsOTkAKzlBACo6SQAqOlMAKTteACg7agAn O3kAJjyJACU8mwAkPK0AIzzCACM84AAkPPQAJTv/ACU7/wCNNgAAfDgAAG05AABiOQAAWDoAAFE5 AABKOQAARDkAAD05AAA5OgAANTsAADI7CAAvPA4ALT0UACw9GgAqPSEAKT0oACg+LwAnPjYAJj4+ ACU/RwAkP1AAI0BbACJAaAAhQHYAIECHAB9BmQAfQasAHkHAAB5B3gAfQPMAH0D+ACA//wCJOQAA eDoAAGk7AABePAAAVTwAAE08AABHPAAAQDwAADg9AAA0PgAAMEAAAC1BBQAqQgwAJ0IRACZDGAAk Qx4AI0MlACJDLAAhRDMAIEQ7AB9ERAAeRU4AHUVZABxFZQAbRXQAGkWFABlGlwAZRqkAGEa+ABdF 3AAYRfEAGUT9ABpE/wCEPAAAcz0AAGY+AABbPwAAUj8AAEo/AABEPwAAPUAAADZBAAAxQwAALEQA ACdGAQAkRwoAIUgPACBJFAAeSRsAHUkiABxJKQAbSjAAGko4ABlKQQAYSksAF0tVABZLYgAVS3EA FEuCABNLlAASS6cAEku8ABFL2QASSvAAE0r8ABRJ/wB/PwAAb0AAAGFBAABXQgAATkIAAEdCAABB QgAAOkMAADJFAAAtRwAAKEkAACNLAAAeTQYAG08NABhQEQAXUBcAFlAeABVQJQAUUCwAE1E0ABJR PQARUUcAEVFSABBRXwAPUm0ADlJ+AA1RkQANUaQADFG4AAxR0QANUOwADVD6AA5P/wB5QwAAakQA AF1EAABTRQAAS0UAAERFAAA+RgAANkgAAC9KAAApTAAAJE8AAB9RAAAaUwAAFFYJABFXDgAQWBMA EFgZAA9YIAAOWCgADVgwAA1YOQAMWEMAC1hOAApYWgAIWGgAB1h5AAZYjAAFWJ8ABFizAARXygAF V+YABVfzAAZW/ABzRgAAZEcAAFlIAABQSAAASEgAAEFJAAA6SgAAMk0AACtQAAAlUgAAIFUAABpY AAAVWgAAEF0GAAxgDAAKYBAACWAVAAhgHAAHYCMABWArAARgNAADYD0AAWBJAABgVQAAYGMAAGBz AABghgAAX5oAAF+uAABfxAAAXuIAAF7wAABe+ABsSgAAX0sAAFVLAABMTAAARUwAAD1OAAA1UAAA LlMAACdWAAAgWQAAGlwAABVfAAAQYgAADWUEAAhnCwADZw4AAGgTAABoGAAAaB8AAGkmAABpLgAA aTgAAGlDAABpTwAAaV0AAGltAABpgAAAaZQAAGipAABovwAAZ9wAAGbuAABm9wBmTwAAWk8AAFFP AABKTwAAQVEAADhUAAAwVwAAKFsAACFeAAAaYgAAFGUAABBoAAAMawAAB24DAAFwCQAAcA0AAHEQ AABxFAAAchoAAHMhAABzKAAAczEAAHM8AAB0SAAAc1YAAHNmAABzeQAAc44AAHOjAAByuQAAcdIA AHHrAABw9ABhUwAAVlMAAE9TAABFVQAAO1gAADJcAAAqYAAAImQAABtoAAAUbAAAD28AAAtyAAAG dgAAAHkAAAB6BgAAegoAAHsOAAB8EQAAfRUAAH4bAAB/IgAAgCoAAIA1AACAQQAAgE8AAIBfAACA cQAAgIYAAICdAAB/sgAAfsoAAH7lAAB98QBcWAAAVFgAAElaAAA/XQAANWEAACxlAAAjagAAG28A ABRzAAAOdwAACXsAAAN/AAAAggAAAIQAAACGAQAAhgYAAIgKAACJDQAAihAAAIsVAACMGwAAjiIA AI8sAACPOAAAj0YAAI9WAACPaAAAj34AAI+VAACOqwAAjcEAAI3cAACM6wBZXQAATl8AAENiAAA4 ZgAALmwAACRxAAAcdwAAFHwAAA6BAAAIhQAAAIkAAACNAAAAkAAAAJIAAACTAAAAlAAAAJYDAACX CAAAmAwAAJoPAACbEwAAnRoAAJ8jAACgLgAAoDwAAKBMAACgXgAAoHQAAJ+MAACfogAAn7cAAJ7L AACe4ABTZAAAR2gAADxtAAAxcwAAJ3kAAB1/AAAUhQAADYsAAAaQAAAAlAAAAJgAAACcAAAAnwAA AKEAAACiAAAApAAAAKUAAACnAAAAqAQAAKoJAACsDQAArRIAALAZAACyIwAAsjEAALJCAACyVAAA smkAALKAAACymAAAsawAALK/AACxzgBMbgAAQHMAADV6AAAqgQAAH4gAABWOAAAOlQAABpoAAACf AAAApAAAAKgAAACsAAAArwAAALEAAACxAAAAswAAALUAAAC2AAAAuAAAALoAAAC8BgAAvgwAAMAR AADDGQAAxSYAAMU3AADGSQAAxl0AAMdyAADHigAAyJ8AAMivAADIvABGegAAOYEAAC6JAAAikAAA F5gAAA+fAAAHpQAAAKoAAACvAAAAswAAALcAAAC8AAAAvwAAAMEAAADCAAAAxAAAAMUAAADHAAAA yQAAAMsAAADNAAAAzwMAANIKAADWEAAA3BoAAN0qAADePAAA31AAAOBlAADhewAA4ZEAAOKiAADi rQD/AAIA/wAAAP8AAwD/AAwA/wATAP8AHQD/ACgA/gAzAPsAPgD3AEgA8wBQAPAAVwDtAF4A6wBk AOgAaQDnAG8A5QB0AOMAeQDiAH8A4ACFAN4AjADcAJMA2QCcANYApgDTALEA0QDAAM8A2gDOAPEA zAD/AMsA/wDLAP8AxgD/AMEA/wD/AAAA/wAAAP8AAAD/AAgA+wAQAPYAGQDyACQA7wAuAO0AOQDo AEIA4wBLAOAAUgDdAFkA2QBfANYAZADTAGkA0QBuAM8AdADOAHkAzAB/AMoAhgDIAI4AxgCWAMQA oADCAKsAwAC5AL4AzQC8AOoAuwD8ALoA/wC6AP8AugD/ALYA/wD/AAAA/wAAAP4AAAD0AAQA6wAN AOQAFADfAB8A2wApANgAMwDTAD0AzgBFAMoATQDHAFMAxQBZAMMAXwDBAGQAvwBpAL0AbgC7AHMA ugB5ALgAgAC2AIgAtACQALIAmgCxAKUArwCyAK0AxACsAOEAqwD2AKoA/wCqAP8AqgD/AKoA/wD/ AAAA/QAAAO4AAADiAAAA1QAKAM0AEQDHABkAxAAjAMEALQC/ADcAuwA/ALcARwC1AE4AsgBTALAA WQCvAF4ArQBjAKwAaACrAG0AqQBzAKgAegCmAIEApACKAKMAlAChAJ8AnwCsAJ4AuwCcANIAmwDu AJoA/wCaAP8AmQD/AJkA/wD+AAAA7gAAAN4AAADLAAAAwQAFALkADQC0ABQAsQAeAK4AJwCrADAA qgA5AKcAQQCkAEgAogBNAKEAUwCfAFgAngBdAJ0AYgCbAGcAmgBtAJgAcwCXAHsAlQCEAJQAjgCS AJkAkACmAI4AtACNAMgAjADmAIsA+QCKAP8AigD/AIsA/wDwAAAA2wAAAMcAAAC6AAAAsAAAAKgA CgCkABAAoAAYAJ0AIQCbACoAmgAzAJgAOwCWAEEAlABIAJIATQCRAFIAjwBXAI4AXACMAGEAiwBn AIoAbgCIAHUAhwB+AIUAiACDAJQAggCgAIAArwB/AMAAfgDdAH0A8gB9AP8AfQD/AH0A/wDgAAAA xgAAALUAAACqAAAAogAAAJsABQCVAA0AkgATAJAAHACNACQAiwAtAIoANACIADsAhgBCAIUARwCD AE0AggBSAIEAVwB/AFwAfgBiAH0AaAB7AHAAegB5AHgAgwB2AI8AdQCcAHQAqgByALoAcQDRAHAA 7ABwAPsAcAD/AHAA/wDNBAAAtwYAAKcHAACbBgAAkwQAAI4AAACKAAgAhgAPAIQAFgCBAB4AfwAn AH0ALgB8ADYAegA8AHkAQgB3AEcAdgBMAHUAUgBzAFcAcgBdAHEAYwBvAGsAbgB0AGwAfgBrAIoA aQCYAGgApgBnALYAZgDLAGUA5wBlAPcAZQD/AGUA/wDADAAAqw0AAJsOAACPDgAAhg0AAIELAAB+ BwEAfAELAHkAEQB3ABgAdQAhAHMAKQBxADAAbwA2AG4APABsAEIAawBHAGoATQBpAFIAaABYAGYA XwBlAGcAYwBwAGIBegBgAYcAXwKVAF4CowBcA7MAXAPHAFsE5ABbBfQAWwb+AFsG/wC1EAAAoRIA AJETAACFEwAAfBIAAHYRAABzDgAAcgwEAHEHDQBuBBIAbAQbAGkFIwBnBSoAZgYxAGQGNwBjBj0A YgdDAGEHSQBfB04AXghVAF0IXABbCWMAWgltAFgKeABXCoUAVguTAFQLogBTC7MAUgzHAFIM5ABR DfUAUQ3/AFEN/wCtFQAAmRcAAIkYAAB9GQAAdBgAAG0XAABqFAAAZxEAAGcOBwBmDA4AYwwVAGEM HQBfDCUAXQ0sAFwNMwBbDTkAWg0/AFgNRQBXDUsAVg5RAFUOWQBTDmEAUg5rAFAPdgBOEIMATRCS AEwQogBLELIAShHIAEkR5QBJEfcASRL/AEkR/wClGQAAkhwAAIMdAAB2HgAAbR0AAGYcAABiGgAA XxcAAF4UAQBeEQoAWxARAFkRGABXESAAVREnAFQRLgBTETQAURE7AFASQQBPEkcAThJOAEwSVQBL E14ASRNnAEgUcwBGFIAARRWPAEQVnwBDFrAAQhbFAEIX4wBCF/YAQhf/AEIX/wCfHQAAjCAAAH0h AABxIgAAaCIAAGEhAABcHwAAWRwAAFcZAABVFgYAVBUOAFEVFABPFhwAThYjAEwWKgBLFjAAShY3 AEkXPQBHF0MARhdKAEUYUgBDGFoAQhlkAEEZcAA/Gn0APhuNAD0bnQA8HK4AOxzDADsc4QA7HfUA Oxz/ADwc/wCaIQAAhyMAAHgkAABsJQAAYyUAAFwkAABXIwAAUyAAAFEeAABPHAIATRsMAEsaEQBI GxgARxsgAEUbJgBEGy0AQxwzAEIcOQBAHEAAPx1HAD4dTwA9HlgAPB5iADofbQA5H3sAOCCLADch mwA2Ia0ANSHBADUh3wA1IfMANiH/ADYh/wCWIwAAgyYAAHQnAABoKAAAXygAAFgnAABTJgAATyQA AEwiAABJIAAARyAJAEQfDwBCHxUAQCAcAD8gIwA+ICkAPCAvADshNgA6IT0AOSFEADgiTAA3IlUA NiNfADQjawAzJHkAMiWJADElmgAwJasAMCa/AC8m3AAwJvIAMCb/ADEl/wCRJgAAfygAAHEqAABl KgAAXCoAAFUqAABPKQAASygAAEglAABEJAAAQSQFAD8kDQA9JBIAOyQZADkkHwA3JCYANiQsADUl MwA0JToAMyZBADImSgAxJ1MAMCddAC8oaQAuKXcALSmHACwpmAArKqoAKiq9ACoq2gArKvEAKyr+ ACwp/wCNKAAAfCoAAG0sAABiLQAAWS0AAFEtAABMLAAARysAAEMoAAA/KAAAPCgCADkoCwA3KBAA NSgWADMoHAAyKCMAMCgpAC8pMAAvKjcALio/AC0rRwAsK1EAKyxbACosZwApLXUAKC2FACctlwAm LqgAJS68ACUu2AAmLvAAJi79ACct/wCKKwAAeC0AAGouAABfLwAAVi8AAE4vAABILgAAQy0AAD8s AAA7LAAANywAADQsCQAyLA4AMC0TAC4tGgAtLSAAKy0nACouLQAqLjUAKS89ACgvRQAnME4AJjBZ ACUxZQAkMXMAIzGDACIylQAhMqcAITK7ACAy1AAhMu8AIjH8ACIx/wCGLQAAdS8AAGcwAABcMQAA UzEAAEsxAABFMQAAQDAAADswAAA2MAAAMzAAADAxBgAtMQ0AKzERACkyFwAoMh4AJzIkACUzKwAl MzIAJDM6ACM0QwAiNEwAITVXACA1YwAfNXEAHjaBAB02kwAcNqUAGza5ABs20gAcNu0AHTb7AB01 /wCCMAAAcTIAAGMzAABZNAAAUDQAAEk0AABCMwAAPTMAADczAAAxNAAALjUAACs1AgAoNgsAJTcQ ACQ3FQAiNxsAITgiACA4KAAfODAAHjg3AB05QAAcOUkAGzpUABo6YAAZOm4AGDp/ABc7kQAXO6QA Fju3ABU70AAWOuwAFzr6ABg5/wB9MgAAbTQAAGA1AABVNgAATTYAAEY2AABANgAAOjYAADQ2AAAu OAAAKjkAACY6AAAjOwgAIDwOAB49EgAdPRgAHD0fABs+JQAaPi0AGT40ABc+PQAWP0cAFT9RABQ/ XgAUP2wAE0B8ABJAjwARQKIAEUC2ABBAzgARP+sAEj/5ABI+/wB5NQAAaTcAAFw4AABSOQAASjkA AEM5AAA9OQAANzkAADE6AAArPAAAJz0AACI/AAAeQQQAGkILABhDEAAXQxUAFUQbABREIgATRCkA E0QxABJEOgARRUMAEEVOABBFWwAORWkADkV5AA1FjAANRZ8ADEWyAAtFyQAMReUADUT2AA1E/wB0 OQAAZToAAFg7AABPOwAARzwAAEA8AAA6PAAANDwAAC4+AAAoQAAAI0IAAB9EAAAaRgAAFUgIABJK DQARShIAEEoYAA9LHgAOSyUADUstAA1LNgAMS0AAC0tKAApLVgAJS2QACEt0AAdLhwAFS5oABEuu AARKxAAFSuAABUrwAAZJ+gBuPAAAYD0AAFQ+AABLPgAARD4AAD0+AAA3PwAAMUAAACpCAAAkRQAA H0cAABpJAAAVTAAAEU4FAA5RCwALURAAClEUAAlRGwAIUSIAB1EpAAVRMgAEUjsAA1JGAAFSUgAA Ul8AAFJvAABSgQAAUZYAAFGpAABRvwAAUNwAAFDuAABQ9wBoQAAAW0EAAFBBAABIQQAAQUEAADtC AAA0QwAALUUAACZIAAAgSwAAG00AABZQAAARUwAADlUEAApYCgAGWA4AAlgSAABZFwAAWR0AAFkl AABZLQAAWTYAAFlBAABZTQAAWloAAFppAABZfAAAWZAAAFmlAABYugAAWNUAAFfsAABX9gBjRAAA VkUAAE1FAABFRQAAP0UAADdHAAAvSQAAKEwAACJPAAAbUgAAFlUAABFYAAANWgAACV0DAARfCQAA YA0AAGAQAABhFAAAYRkAAGIgAABiJwAAYjEAAGI7AABiRwAAYlUAAGNkAABidgAAYosAAGKgAABh tgAAYc8AAGDqAABg9QBdSAAAUkkAAEpIAABDSAAAOkoAADJNAAAqUAAAI1MAABxXAAAWWgAAEV0A AA1gAAAIYwAAA2YBAABnBgAAaAsAAGkOAABqEQAAaxUAAGwbAABtIgAAbSoAAG00AABtQAAAbU4A AG1dAABtbwAAbYQAAGyaAABssAAAa8gAAGvmAABq8wBYTQAATk0AAEhMAAA+TgAANVEAACxUAAAk WAAAHVwAABZgAAAQZAAADGcAAAdrAAABbgAAAHAAAAByAwAAcgcAAHMLAAB1DgAAdhEAAHcWAAB4 HAAAeSMAAHotAAB6OQAAekcAAHpWAAB5aAAAenwAAHmUAAB4qgAAeMEAAHffAAB37wBUUQAATFEA AEJSAAA4VQAAL1kAACZeAAAeYgAAFmcAABBrAAALbwAABXMAAAB3AAAAegAAAHwAAAB+AAAAfwIA AIAGAACBCgAAgw0AAIQRAACGFQAAiBwAAIklAACKMAAAij4AAIlNAACJXwAAiXMAAIiLAACIogAA h7kAAIfRAACG6ABSVgAAR1cAADxaAAAyXwAAKGQAAB9pAAAWbwAAEHQAAAp5AAACfQAAAIEAAACF AAAAiAAAAIoAAACMAAAAjQAAAI8AAACQBAAAkggAAJMMAACVEAAAlxUAAJkdAACbJwAAmzQAAJtE AACaVgAAmmoAAJmCAACamgAAmLAAAJjHAACX3gBLXAAAQGAAADVlAAAragAAIXEAABd3AAAQfQAA CYMAAAGIAAAAjAAAAJEAAACVAAAAmAAAAJoAAACbAAAAnQAAAJ8AAACgAAAAogAAAKQFAACmCgAA qA4AAKoUAACtHQAArSoAAK05AACtSwAArV8AAK13AACskAAAq6cAAKu6AACrywBFZgAAOWsAAC5x AAAjeAAAGX8AABCGAAAJjQAAAJMAAACYAAAAnQAAAKEAAAClAAAAqAAAAKsAAACrAAAArgAAAK8A AACxAAAAswAAALUAAAC3AQAAuQcAALwNAAC/EwAAwh8AAMIuAADCQAAAwlQAAMFrAADBgwAAwJsA AMGtAADBvAA+cgAAMngAACeAAAAciAAAEpAAAAqXAAAAnQAAAKMAAACoAAAArQAAALIAAAC2AAAA uQAAALsAAAC8AAAAvgAAAMAAAADCAAAAxAAAAMYAAADIAAAAywAAAM4FAADRDQAA1hQAANcjAADY NQAA2UkAANpeAADbdQAA24wAANyfAADcqwD/AAAA/wAAAP8AAAD/AAkA/wAQAP8AGQD+ACQA/AAv APkAOQD0AEMA8ABLAO0AUgDqAFkA5wBfAOQAZADiAGkA4ABuAN4AcwDcAHkA2gB/ANcAhgDUAI4A 0QCWAM8AoQDMAKwAygC7AMgA0gDGAO4AxgD/AMUA/wDFAP8AvwD/ALoA/wD/AAAA/wAAAP8AAAD+ AAUA9wAOAPIAFQDuAB8A6wAqAOkANADjAD0A3gBFANkATQDUAFMA0QBZAM4AXgDMAGMAygBoAMkA bQDHAHMAxQB5AMMAgADBAIgAvwCQAL0AmwC7AKYAuQC0ALcAyAC2AOYAtQD7ALQA/wC0AP8AswD/ AK4A/wD/AAAA/wAAAPgAAADtAAAA5QALAN0AEQDXABoA0gAkAM8ALgDLADcAxwBAAMMARwDAAE4A vgBTALwAWQC6AF4AuABjALYAaAC1AG0AswBzALEAeQCvAIEArQCKAKsAlACpAKAAqACtAKYAvgCl ANsApAD0AKQA/wCjAP8AowD/AKIA/wD/AAAA9gAAAOYAAADXAAAAywAGAMQADgC+ABUAuwAfALkA KAC3ADEAtAA6ALAAQQCtAEgAqwBOAKkAUwCnAFgApgBcAKQAYQCjAGcAoQBsAKAAcwCeAHoAnQCD AJsAjgCZAJkAlwCmAJYAtgCVAMwAlADrAJMA/QCTAP8AkwD/AJMA/wD3AAAA5AAAANAAAADBAAAA twACAK8ACwCrABEApwAZAKUAIgCjACsAogAzAJ8AOwCcAEIAmwBIAJkATQCXAFIAlgBXAJUAWwCT AGEAkgBmAJAAbQCPAHQAjQB9AIwAhwCKAJMAiACgAIcArwCFAMIAhQDiAIQA9wCEAP8AhAD/AIQA /wDlAAAAzQAAALwAAACvAAAApgAAAJ4ABwCaAA4AlgAUAJQAHQCSACUAkQAtAJAANQCNADwAjABC AIoARwCIAEwAhwBRAIYAVgCEAFsAgwBgAIEAZwCAAG4AfgB3AH0AgQB7AI0AegCaAHgAqQB3ALoA dgDTAHYA7wB2AP4AdQD/AHUA/wDQAAAAuwAAAKsAAACfAAAAlwAAAJAAAgCLAAsAiAAQAIYAFwCE ACAAggAnAIEALwB/ADUAfQA8AHwAQQB7AEYAeQBLAHgAUAB3AFUAdgBbAHQAYQBzAGkAcQBxAHAA ewBuAIcAbQCVAGsAowBqALQAagDJAGkA6ABpAPkAaQD/AGkA/wDAAAAArAAAAJwCAACQAgAAiAAA AIMAAAB/AAYAewANAHkAEgB3ABoAdgAiAHQAKQBzADAAcQA2AHAAPABvAEEAbQBGAGwASwBrAFAA agBWAGgAXABnAGQAZQBsAGQAdgBjAIIAYQCQAGAAnwBfAK8AXgDDAF4A4QBeAPQAXQD/AF0A/wC0 BwAAoAkAAJALAACECwAAfAoAAHcHAAB0BAAAcQAJAG8ADwBtABUAawAcAGkAIwBoACoAZwAxAGUA NgBkADwAYwBBAGIARgBgAEwAXwBSAF4AWABdAF8AWwBoAFoAcgBYAH4AVwCMAFYAmwBVAKsAVAC+ AFQA2gBTAO8AVAD7AFQA/wCpDQAAlg4AAIcQAAB6EAAAchAAAGwOAABpDAAAZwkDAGYECwBkABAA YgAXAGAAHgBeACUAXQArAFwAMQBaADcAWQA8AFgAQgBXAUcAVgFOAFUCVABTAlwAUgNlAFEDbwBP BHsATgSKAE0FmQBMBakASwW8AEoG1ABKB+0ASgf5AEoH/wChEAAAjhIAAH4UAABzFAAAahQAAGQT AABgEQAAXg8AAF0NBQBdCQ0AWgYSAFgHGQBWByAAVQcnAFMHLQBSCDMAUQg4AFAIPgBPCUQATglK AEwJUQBLClkASgpiAEgLbQBHC3oARgyIAEQMmABDDKkAQg28AEIN1QBCDe4AQg37AEIN/wCaFAAA hxYAAHgYAABsGQAAYxkAAF0YAABZFgAAVhMAAFQRAABUDggAUw0OAFENFABPDRsATQ0iAEwNKABL DS4ASg00AEkNOgBHDkEARg5HAEUOTwBEDlcAQg9hAEEQbAA/EHkAPhCIAD0RmAA7EakAOxG8ADoR 1gA6EfAAOhL9ADsR/wCTGAAAgRoAAHMcAABnHQAAXh0AAFgcAABTGwAAUBgAAE4WAABMEwMATBEL AEoQEABIERcARhEeAEURJABEESoAQhEwAEERNwBAEj0APxJEAD0STAA8E1QAOxNeADkUaQA4FHYA NxWFADYVlgA0FqcANBa6ADMW0wAzFu4ANBb8ADQW/wCOGwAAfB0AAG4fAABjIAAAWiAAAFMgAABO HgAASh0AAEgaAABGGAAARRYHAEMVDgBBFRMAPxUaAD4VIAA9FScAOxUtADoWMwA5FjoAOBZBADcX SQA1F1EANBhbADMZZgAyGXMAMBqDAC8alAAuG6UALRu4AC0b0AAtG+wALhv7AC4b/wCKHgAAeCAA AGoiAABfIwAAViMAAE8iAABKIQAARiAAAEMeAABBGwAAPxoDAD0aDAA7GREAORkWADcaHQA2GiMA NRopADQaMAAzGzYAMRs+ADAcRgAvHE8ALh1ZAC0dZAAsHnEAKx+BACofkgApH6QAKCC3ACcgzgAn IOsAKCD6ACkf/wCGIAAAdCMAAGckAABcJQAAUyUAAEwlAABHJAAAQiMAAD8hAAA9HwAAOh4AADce CQA1Hg4AMx4TADEeGgAwHiAALx4mAC4fLQAtHzMALCA7ACsgQwAqIUwAKSFWACgiYgAmIm8AJSN/ ACQjkAAjI6IAIiS1ACIkzAAiJOkAIyT5ACQj/wCCIwAAcSUAAGMmAABZJwAAUCgAAEknAABDJwAA PyYAADskAAA4IgAANSIAADIiBgAwIg0ALiIRACwiFwAqIh0AKSIjACgjKgAnIzEAJiQ4ACUlQQAk JUoAIyZUACImYAAhJ20AICd9AB8njwAeKKEAHii0AB0oygAdKOgAHij4AB8n/wB+JQAAbicAAGAp AABWKQAATSoAAEYqAABBKQAAPCgAADcnAAA0JgAAMCYAAC0mAwArJwsAKCcQACcnFAAlJxoAJCch ACMoJwAiKC4AISk2ACApPgAfKkgAHipSAB0rXgAcK2sAGyt7ABosjQAZLJ8AGCyyABgsyQAYLOcA GSv3ABor/wB6JwAAaioAAF0rAABTLAAASiwAAEMsAAA+KwAAOSsAADQqAAAwKgAAKyoAACkrAAAm KwgAIywOACIsEgAgLBgAHyweAB4tJQAdLSwAHC0zABsuPAAaLkUAGS9QABgvXAAXL2kAFjB5ABUw iwAUMJ4AFDCxABMwxwATMOUAFDD2ABUv/wB2KgAAZywAAFotAABQLgAASC4AAEEuAAA7LgAANi0A ADEtAAAsLQAAJy8AACQvAAAhMAUAHzEMABwxEAAbMhUAGjIcABkyIgAYMikAFzMxABYzOQAVM0MA FDRNABM0WQASNGcAETV3ABE1iQAQNZwAEDWwAA41xgAPNOQAEDT1ABA0/wByLAAAYy4AAFcwAABN MAAARTAAAD4wAAA4MAAAMzAAAC8wAAApMQAAJDIAACEzAAAdNQIAGjYJABc3DgAVNxMAFDgZABM4 HwASOCYAEjguABE5NgAQOUAAEDlLAA45VwAOOmQADTp0AAw6hgAMOpkACzmsAAo5wQAKOd4ACznx AAw4/ABuLwAAXzEAAFMyAABKMwAAQjMAADszAAA2MwAAMTIAACwzAAAnNAAAITYAAB04AAAZOQAA FTsGABI9DAAQPhAAED4VAA4+HAAOPiMADT4qAAw+MwAMPjwACz9HAAo/UgAIP2AABz9vAAY/gQAF P5QABD+oAAM+vAAEPtcABT7sAAU+9wBpMwAAWzQAAFA1AABHNQAAPzUAADk1AAA0NQAALjUAACk3 AAAjOAAAHjsAABo8AAAWPwAAEkEEAA5DCgAMRA4ACkQTAAlEGQAIRCAAB0QnAAZELwAFRDgAA0VC AAJFTgAARVsAAEVqAABFfAAARZAAAESkAABEuQAARNEAAETqAABD9QBkNgAAVzcAAEw4AABDOAAA PDgAADc4AAAxOAAAKzkAACU7AAAgPQAAGkAAABZCAAASRAAADkcEAAtJCQAHSg0ABEsRAAFLFgAA SxwAAEsjAABLKwAASzQAAEs+AABMSQAATFcAAExmAABMdwAAS4wAAEuhAABLtQAASs4AAErpAABK 9QBfOgAAUjsAAEg7AABAOwAAOjsAADQ7AAAuPAAAJz4AACJBAAAcQwAAFkYAABJJAAAOSwAAC04D AAdQCAACUQwAAFEQAABSEwAAUxgAAFMfAABTJgAAUy8AAFM5AABTRQAAU1IAAFNhAABTcgAAU4cA AFKcAABSsQAAUcoAAFHnAABR9ABZPgAATj4AAEU+AAA+PgAAOD4AADBAAAApQgAAI0QAAB1HAAAX SgAAEk0AAA5QAAALUwAABlUCAABXBwAAWAsAAFkOAABaEQAAWhUAAFsaAABcIQAAXCoAAFw0AABc PwAAXE0AAFxbAABcbAAAXIEAAFuXAABbrQAAWsUAAFrkAABZ8wBUQgAASkIAAEJCAAA8QgAANEMA ACxGAAAlSQAAHkwAABdPAAASUwAADlYAAApZAAAFWwAAAF4AAABgBAAAYQgAAGIMAABjDgAAZBEA AGUWAABmHAAAZyMAAGctAABnOQAAZ0YAAGdVAABnZgAAZ3oAAGaRAABlqAAAZcAAAGTeAABk8ABP RgAAR0YAAEBFAAA3RwAAL0oAACZNAAAfUQAAGFUAABJZAAANXAAACGAAAAJjAAAAZgAAAGgAAABq AAAAawQAAGwIAABtDAAAbw4AAHASAAByFwAAcx0AAHQmAAB0MgAAdD8AAHROAABzXwAAdHIAAHOK AAByoQAAcbgAAHHUAABw7ABMSgAARUoAADtLAAAyTgAAKVIAACBWAAAYWwAAEl8AAA1kAAAHaAAA AGsAAABvAAAAcgAAAHUAAAB2AAAAdwAAAHkCAAB6BgAAfAoAAH4OAACAEQAAghYAAIQeAACEKQAA hDYAAIRFAACEVgAAg2oAAIOBAACCmQAAgbEAAIDJAACA5QBKTgAAP1AAADVTAAArVwAAIlwAABli AAASZwAADGwAAAVxAAAAdQAAAHkAAAB9AAAAgQAAAIMAAACFAAAAhgAAAIgAAACJAAAAiwQAAI0I AACPDQAAkhAAAJQWAACWIAAAliwAAJY7AACWTAAAlWAAAJV2AACUkAAAk6cAAJK9AACS1QBEVQAA OVkAAC9dAAAkYwAAGmkAABJvAAAMdQAABHsAAACAAAAAhQAAAIkAAACNAAAAkQAAAJMAAACUAAAA lgAAAJgAAACaAAAAnAAAAJ4AAACgBgAAogsAAKUQAACoFwAAqSMAAKkxAACpQwAAqVYAAKhtAACm hwAAp54AAKazAAClxwA+XgAAMmMAACdqAAAdcAAAE3gAAAx/AAADhQAAAIsAAACRAAAAlgAAAJsA AACfAAAAogAAAKQAAAClAAAApwAAAKkAAACrAAAArQAAALAAAACyAAAAtQIAALcJAAC7EAAAvhgA AL4mAAC+OAAAvksAAL1hAAC8egAAu5QAALqpAAC6uQA3agAAK3AAACB4AAAWgAAADYgAAAWPAAAA lgAAAJwAAACiAAAApwAAAKwAAACwAAAAswAAALYAAAC3AAAAuQAAALsAAAC9AAAAvwAAAMIAAADF AAAAyAAAAMoAAADOCAAA0hAAANUbAADVLAAA1EAAANRXAADTbgAA1IYAANSbAADTqwD/AAAA/wAA AP8AAAD/AAUA/wAOAP8AFQD8ACAA+QAqAPYANADxAD0A7QBGAOkATQDmAFMA5ABZAOEAXgDeAGMA 3ABoANkAbgDVAHMA0wB5ANAAgADOAIgAywCRAMkAnADGAKcAxAC3AMIAzADAAOwAvwD/AL4A/wC9 AP8AtwD/ALIA/wD/AAAA/wAAAP8AAAD6AAEA8wALAO0AEgDoABsA5QAlAOQALgDfADgA2ABAANIA RwDOAE4AywBUAMgAWQDGAF4AxABjAMIAZwDAAG0AvwBzAL0AegC7AIEAuQCLALYAlQC0AKEAsgCv ALAAwgCuAOMArgD6AKwA/wCtAP8AqQD/AKYA/wD/AAAA/wAAAPIAAADmAAAA3QAHANIADgDNABYA ygAgAMgAKQDFADIAwAA6ALwAQgC5AEgAtwBOALUAUwCzAFgAsQBdALAAYgCuAGcArABsAKoAcwCp AHsApwCEAKUAjgCjAJoAoQCoAJ8AuQCeANIAnQDyAJwA/wCdAP8AnAD/AJkA/wD8AAAA7gAAAN0A AADMAAAAwQACALoADAC2ABIAsgAaALAAIwCvACwArQA0AKkAPACmAEIApABIAKIATQCgAFIAngBX AJ0AWwCcAGAAmgBmAJkAbACXAHQAlQB9AJMAhwCRAJMAkAChAI4AsQCNAMYAjADoAIsA/QCMAP8A jAD/AIwA/wDtAAAA2AAAAMUAAAC3AAAArAAAAKYACAChAA4AnwAVAJ0AHgCbACYAmgAuAJcANQCV ADwAkwBCAJEARwCQAEwAjgBRAI0AVQCLAFoAigBgAIkAZgCHAG0AhQB2AIQAgACCAIwAgACaAH8A qQB9ALwAfADcAHwA9QB8AP8AfAD/AHwA/wDZAAAAwQAAALEAAACkAAAAnAAAAJQAAwCQAAwAjQAR AIsAGACJACAAiQAoAIcALwCFADYAgwA8AIIAQQCAAEYAfwBLAH0ATwB8AFQAewBaAHkAYAB4AGcA dgBwAHUAegBzAIYAcQCTAHAAogBvALQAbgDMAG4A7QBuAP4AbgD/AG4A/wDEAAAArwAAAKAAAACU AAAAjAAAAIYAAACBAAgAfgAOAHwAFAB7ABsAeQAiAHgAKQB3ADAAdQA2AHQAOwByAEAAcQBFAHAA SgBvAE8AbQBUAGwAWwBrAGIAaQBqAGgAdABmAIAAZQCOAGMAnQBiAK0AYQDCAGEA5ABhAPgAYQD/ AGEA/wC0AAAAoAAAAJEAAACGAAAAfgAAAHkAAAB1AAMAcQALAG8AEABtABYAbAAdAGsAJABrACoA aQAwAGgANgBmADsAZQBAAGQARQBjAEoAYQBPAGAAVgBfAF0AXQBlAFwAbwBaAHoAWQCIAFgAmABX AKgAVgC7AFYA2ABWAPEAVgD/AFYA/wCoAQAAlAUAAIUHAAB6BwAAcgYAAGwEAABpAQAAZwAHAGQA DQBjABEAYQAYAGAAHwBfACUAXgArAF0AMABbADYAWgA7AFkAQABYAEUAVwBLAFYAUQBVAFgAUwBh AFIAagBQAHYATwCEAE4AkwBNAKQATAC2AEwAzQBMAOsATAD6AEwA/wCdCQAAiwsAAHwNAABwDQAA aA0AAGIMAABfCgAAXQYBAFwBCQBaAA4AWAATAFcAGQBWACAAVQAmAFMAKwBSADEAUQA2AFAAOwBP AEEATgBHAE0ATQBLAFUASgBdAEkAZwBHAHMARgCAAEUAkABEAKEAQwCyAEMAyABDAOYAQwD1AEMA /wCVDQAAgw8AAHQQAABpEQAAYBEAAFoQAABWDgAAVA0AAFMKBABTBgsAUQMQAE8BFQBOARsATAEh AEsBJwBKAiwASQIyAEgCNwBHAz0ARQNDAEQDSgBDBFEAQgRaAEAFZAA/BXAAPgZ+AD0GjgA8B58A OwexADoHxgA6B+MAOgfzADoI/ACOEAAAfBIAAG4UAABiFQAAWhUAAFQUAABQEwAATREAAEsOAABL DQYASgoMAEkIEQBHCBYARQgdAEQIIwBCCCgAQQkuAEAJMwA/CTkAPgpAAD0KRwA8Ck8AOgtYADkL YwA4DG8ANgx+ADUMjgA0DZ8AMw2xADINxwAyDeMAMg30ADIN/gCIEwAAdxUAAGkXAABeGAAAVRgA AE8YAABKFgAARxUAAEUTAABDEAIAQw4IAEINDgBADRIAPw0YAD0NHwA8DSQAOw0qADkNMAA4DjcA Nw49ADYORQA1Dk0AMw9XADIPYgAxEG4ALxB9AC4QjgAtEaAALBGyACsRyAArEeYAKxH2ACwR/wCD FgAAchkAAGQaAABZGwAAURsAAEsbAABGGgAAQhgAAD8XAAA+FAAAPBIEADsRCgA6EBAAOBAVADcQ GwA1ESEANBEnADMRLQAyETMAMBE6AC8SQgAuEksALRNUACsTXwAqFGwAKRR7ACgUjAAnFZ4AJhWw ACUVxgAlFeQAJRX2ACYV/wB+GQAAbhsAAGAdAABWHgAATR4AAEceAABCHQAAPhwAADoaAAA4GAAA NxYAADUVBwA0FA0AMhQSADAUFwAvFB0ALRQjACwVKgArFTAAKhU3ACkWPwAoFkgAJxdSACYYXQAk GGoAIxl5ACIZigAhGZwAIBmvAB8ZxAAfGeIAIBn0ACAZ/wB6GwAAah4AAF0fAABTIAAASiAAAEQg AAA+HwAAOh4AADcdAAA0HAAAMhkAADAZBAAuGAsALBgQACoYFAApGBoAJxggACYZJgAlGS0AJBo1 ACMaPQAiG0YAIRtQACAcWwAfHWgAHh13AB0diAAcHpsAGx6tABoewwAaHuAAGh3zABsd/wB3HQAA ZyAAAFohAABQIgAASCIAAEEiAAA7IgAANyEAADMgAAAwHwAALR0AACsdAAAoHQgAJh0OACUdEgAj HRcAIR0dACEdJAAgHioAHx4yAB4fOgAdH0MAHCBNABshWQAaIWYAGSF1ABgihwAXIpkAFiKsABUi wQAVIt8AFSHyABYh/gBzIAAAZCIAAFcjAABNJAAARSUAAD4kAAA5JAAANCMAADAiAAAsIgAAKSEA ACYhAAAkIQYAIiEMACAhEAAeIRUAHSIbABsiIQAbIigAGiMvABkjOAAYJEEAFyRLABYlVwAVJWQA FCZzABMmhQASJpgAESarABEmwAAQJt0AESXxABIl/QBwIgAAYSQAAFQmAABKJgAAQicAADwmAAA2 JgAAMSUAAC0lAAApJAAAJiQAACIlAAAfJQMAHSYKABsmDgAZJxIAGCcYABcnHwAWJyUAFSgtABQo NQATKT4AEilJABEpVQARKmIAECpxAA8qgwAOKpYADiqpAA0qvQANKtcADSruAA4p+wBsJAAAXSYA AFEoAABIKAAAQCkAADkoAAA0KAAALygAACsnAAAnJwAAIigAAB4pAAAbKgAAGCsHABYrDQAULBEA EywWABIsHAARLSMAEC0qABAtMgAPLjwADi5GAA0uUgANLl8ADC9uAAsvfwAKL5IACS+lAAkuuQAI LtAACS7pAAou9wBoJwAAWikAAE4qAABFKwAAPSsAADcrAAAxKgAALSoAACkqAAAkKgAAICsAABst AAAYLgAAFS8EABIxCgAQMg4ADzITAA4yGQANMiAADTInAAwyLwALMzgACjNCAAkzTgAIM1sABjRq AAU0ewAEM44AAzOiAAIztgACM80AAzPnAAQy8wBkKgAAViwAAEstAABCLQAAOi0AADQtAAAvLAAA KywAACYsAAAiLQAAHS8AABkxAAAVMgAAEjQDAA82CQAMOA0ACjgRAAk4FgAIOB0ABzgkAAY4LAAE ODQAAzg+AAI5SgAAOVcAADllAAA5dwAAOYsAADifAAA4swAAOMoAADjmAAA38gBfLQAAUi4AAEgv AAA/MAAAOC8AADIvAAAtLwAAKS8AACQwAAAfMQAAGjMAABU1AAASNwAADzkDAAw7CAAIPQ0ABT4Q AAM+FAAAPhoAAD4hAAA+KAAAPjEAAD87AAA/RgAAP1MAAD9hAAA/cwAAP4cAAD6cAAA+sAAAPccA AD3kAAA98gBaMAAATjIAAEQyAAA8MgAANTIAADAxAAArMQAAJjIAACA0AAAbNgAAFjgAABI7AAAP PQAADD8DAAhBCAAEQwwAAEMOAABEEgAARRYAAEUdAABFJAAARS0AAEY2AABGQgAARk4AAEZdAABG bgAARYIAAEWYAABErQAARMQAAEPjAABD8gBVNAAASjUAAEE1AAA5NQAAMzQAAC40AAAoNQAAIjcA AB06AAAXPAAAEj8AAA9BAAAMRAAACEYBAANIBgAASQoAAEoNAABLEAAATBQAAE0ZAABOIAAATigA AE4yAABNPQAATkoAAE5YAABNaQAATX0AAEyUAABMqgAAS8EAAEvhAABK8gBQOAAARjgAAD04AAA3 OAAAMTcAACo5AAAkOwAAHj0AABhAAAATQwAAD0YAAAtJAAAHSwAAAk4AAABQBAAAUQgAAFILAABT DgAAVBEAAFUVAABWGwAAVyMAAFcsAABXOAAAV0QAAFdSAABWYwAAVncAAFaOAABVpQAAVL0AAFPd AABT8ABLPAAAQjwAADs7AAA1OwAALTwAACY/AAAfQgAAGUUAABNIAAAOSwAAC08AAAVRAAAAVAAA AFcAAABYAQAAWgUAAFsIAABcDAAAXQ4AAF8RAABgFgAAYh0AAGImAABiMQAAYj4AAGFMAABhXQAA YXAAAGCIAABgoAAAX7cAAF7UAABd7gBHQAAAPz8AADo/AAAxQAAAKUMAACFGAAAaSgAAE04AAA5R AAAKVQAABFgAAABbAAAAXgAAAGEAAABjAAAAZAEAAGUEAABnCAAAaAsAAGoOAABsEgAAbhcAAG8g AABvKgAAbzYAAG5FAABuVQAAbmgAAG1/AABtmAAAbLAAAGvKAABq6ABERAAAPkMAADVEAAArRwAA I0sAABtPAAATVAAADlgAAAhcAAACYAAAAGQAAABnAAAAawAAAG0AAABvAAAAcAAAAHIAAAB0AgAA dQYAAHcKAAB5DgAAfBIAAH4YAAB/IgAAfy4AAH89AAB+TQAAfWEAAH13AAB8kAAAe6gAAHrAAAB5 3wBDRwAAOUkAAC9MAAAlUAAAHFUAABRbAAAOYAAAB2UAAABqAAAAbgAAAHIAAAB2AAAAeQAAAHwA AAB+AAAAfwAAAIEAAACDAAAAhQAAAIcDAACKCAAAjA0AAI8RAACSGQAAkiUAAJIzAACSRAAAkVcA AJBtAACPhgAAjp8AAI21AACMzQA9TgAAMlEAAChWAAAeXAAAFWIAAA5oAAAHbgAAAHQAAAB5AAAA fgAAAIIAAACGAAAAiQAAAIwAAACOAAAAkAAAAJIAAACUAAAAlgAAAJgAAACbAAAAngYAAKEMAACk EQAAphsAAKYpAACmOgAApU0AAKViAACkewAAo5QAAKGrAAChvwA2VwAALFwAACFiAAAXaQAAD3AA AAd3AAAAfgAAAIQAAACKAAAAjwAAAJQAAACYAAAAmwAAAJ4AAACfAAAAogAAAKQAAACmAAAAqAAA AKsAAACtAAAAsAAAALMEAAC3DAAAuxIAALsfAAC7MAAAu0MAALpYAAC5cAAAt4sAALehAAC3swAw YgAAJWkAABpwAAAQeAAACYAAAACIAAAAjwAAAJYAAACbAAAAoQAAAKYAAACqAAAArgAAALAAAACx AAAAtAAAALYAAAC4AAAAuwAAAL0AAADAAAAAwwAAAMcAAADLAwAAzwwAANMVAADSJQAA0jgAANFO AADQZQAAz34AAM2WAADMqQD/AAAA/wAAAP8AAAD/AAMA/wALAPwAEQD5ABsA9wAlAPMALwDuADgA 6QBAAOYASADiAE4A3wBUANwAWQDZAF4A1QBjANMAaADQAG0AzgBzAMsAegDIAIIAxgCMAMMAlwDA AKMAvgCyALwAyAC6AOoAuQD/ALgA/wCxAP8AqgD/AKcA/wD/AAAA/wAAAPsAAAD2AAAA7QAHAOcA DwDiABYA3wAgAN4AKQDZADMA0QA7AMwAQgDIAEgAxQBOAMIAUwDAAFgAvgBdALwAYgC6AGcAuQBt ALcAdAC1AHsAsgCFALAAkACuAJwArACqAKkAvQCnAN4ApgD5AKUA/wCjAP8AnQD/AJsA/wD9AAAA 9gAAAOsAAADfAAAA0QADAMoADADFABIAwwAbAMAAJAC+ACwAuQA1ALYAPACzAEMAsABIAK4ATgCs AFIAqwBXAKkAXACnAGEApgBnAKQAbQCiAHQAoAB9AJ4AiACcAJUAmgCjAJgAtACWAM0AlQDxAJQA /wCVAP8AkAD/AI4A/wDzAAAA5gAAANEAAADCAAAAuAAAALEACACtAA8AqgAWAKgAHgCoACcApgAv AKIANgCfADwAnQBCAJsARwCZAEwAlwBRAJYAVQCUAFoAkwBgAJEAZgCQAG4AjgB2AIwAgQCKAI0A iACbAIYArACFAMEAhADmAIMA/QCEAP8AgwD/AIEA/wDkAAAAywAAALoAAACsAAAAogAAAJwABACY AAwAlgARAJQAGQCTACEAkgAoAI8AMACNADYAiwA8AIkAQQCIAEYAhgBLAIUATwCEAFQAggBaAIEA YAB/AGcAfgBvAHwAegB6AIYAeACUAHcApAB1ALcAdADUAHMA9AB0AP8AdAD/AHQA/wDLAAAAtgAA AKYAAACaAAAAkgAAAIoAAACGAAgAgwAOAIEAFACBABsAgAAjAH8AKgB9ADAAewA2AHoAOwB4AEAA dwBFAHUASQB0AE4AcwBUAHEAWgBwAGEAbgBpAG0AcwBrAH8AaQCNAGgAnQBnAK4AZgDHAGUA6gBm AP8AZgD/AGcA/wC4AAAApAAAAJUAAACKAAAAgQAAAHwAAAB2AAQAdAAMAHIAEABxABYAcAAdAHAA JABuACoAbQAwAGsANQBqADoAaQA/AGgARABnAEkAZQBOAGQAVABjAFsAYQBjAGAAbQBeAHkAXQCH AFsAlgBaAKgAWQC9AFkA3wBZAPgAWgD/AFoA/wCoAAAAlQAAAIcAAAB7AAAAcwAAAG4AAABqAAEA ZwAIAGUADgBkABIAYwAYAGMAHwBiACUAYQAqAF8AMABeADUAXQA6AFwAPgBbAEQAWQBJAFgATwBX AFYAVgBeAFQAaABTAHMAUQCBAFAAkQBPAKIATgC1AE4A0ABOAPAATgD/AE8A/wCcAAAAiQAAAHsD AABwAwAAaAMAAGIBAABfAAAAXQAEAFsACwBZAA8AWAAUAFcAGQBXACAAVgAlAFUAKgBTADAAUgA0 AFEAOQBQAD8ATwBEAE4ASwBNAFIASwBaAEoAYwBJAG8ARwB8AEYAjABFAJ0ARQCwAEQAxwBEAOgA RAD6AEUA/wCSBAAAgAcAAHEKAABmCgAAXgoAAFkJAABVBwAAVAQAAFIABwBQAAwATwAQAE4AFQBN ABsATAAgAEsAJgBKACsASQAwAEgANQBHADoARgBAAEUARgBDAE4AQgBWAEEAXwBAAGsAPgB4AD0A iAA8AJkAPACrADwAwQA7AOAAOwD0ADsA/wCJCgAAeAwAAGoOAABfDgAAVw4AAFEOAABNDAAASwsA AEoIAgBJBAkASAANAEYAEQBFABYARAAcAEMAIQBCACYAQQArAD8AMQA+ADYAPQA8ADwAQwA7AEoA OgBSADkAXAA4AGgANgB1ADUAhQA0AJYANACoADMAvAAzANgAMwDvADMA+wCCDQAAcQ8AAGQQAABZ EQAAUREAAEsRAABHEAAARA4AAEINAABBCwUAQQcLAD8FDgA+AxIAPAIYADsCHQA6AyIAOQMoADgD LQA3AzIANgQ5ADUEPwA0BUcAMwVQADEGWgAwBmYALwdzAC4HgwAtB5UALAenACsHugArB9IAKwfr ACsH9wB9EAAAbBEAAF8TAABUFAAATBQAAEYUAABCEwAAPhIAADwQAAA6DgEAOg0GADoKDAA4CRAA NggUADUIGQA0CR8AMgkkADEJKQAwCS8ALwo2AC4KPQAtCkUALAtOACsLWQApDGUAKAxzACcMgwAm DZUAJQ2nACQNuwAjDdIAIw3rACMN9wB4EgAAaBQAAFsWAABRFwAASBcAAEIWAAA9FgAAORUAADcT AAA1EQAAMxADADMOCAAyDQ0AMA0RAC8NFgAtDRsALA0hACsNJwAqDS0AKQ40ACgOOwAnDkQAJQ5O ACQPWQAjEGUAIRBzACAQhAAfEJYAHhCpAB0QvQAcENgAHRDuAB0Q+QBzFAAAZBYAAFcYAABNGQAA RRkAAD8ZAAA6GAAANRcAADIWAAAwFQAALhMAAC0RBAAsEAoAKxAOACkQEgAoEBgAJhAeACUQJAAk ECoAIxExACIROQAhEUIAIBJLAB4SVgAdE2MAHBNxABoTggAZFJUAGBSnABcUuwAXE9QAFxPuABgT +gBwFgAAYBkAAFQaAABKGwAAQhwAADwbAAA2GwAAMhoAAC8ZAAAsGAAAKhYAACgUAQAmEwcAJRMM ACMTEAAiExUAIBMaAB8TIQAeFCcAHRQuABwVNgAbFT8AGhZJABkWVAAYF2EAFhdwABUYgQAUGJMA EximABIYugASF9IAEhfsABMX+gBsGQAAXRsAAFEdAABHHQAAPx4AADkdAAA0HQAALxwAACsbAAAo GgAAJhkAACQYAAAiFwQAIBcKAB4XDgAcFxIAGhcXABkYHgAZGCQAGBksABcZNAAWGj0AFRpHABQb UgATG18AEhxuABEcfwAQHJIAEBylAA8cuQAOHNAADhvqAA8b+ABpGwAAWh0AAE4fAABFHwAAPSAA ADYfAAAxHwAALR4AACkdAAAlHQAAIxwAACAbAAAdGwEAGxsHABkcDQAXHBAAFhwVABUcGwAUHSIA Ex0pABIeMQARHjoAER9FABAfUAAPIF0ADiBsAA0gfAANII8ADCCiAAsgtQALIMoACyDlAAwf9ABl HQAAVx8AAEwhAABCIQAAOiEAADQhAAAvIQAAKiAAACYfAAAjHwAAIB4AAB0eAAAZIAAAFiAEABQg CwASIQ4AESETABEiGQAQIh8ADyImAA4jLwAOIzcADSNBAAwkTQALJFkACiRnAAkkeAAIJIsABySe AAcksQAGJMcABiPjAAcj8QBiHwAAVCEAAEkjAABAIwAAOCMAADIjAAAsIwAAKCIAACQhAAAhIQAA HiEAABohAAAWIwAAEyQDABElCAAPJg0ADicRAA0nFgAMJx0ACycjAAonKwAJKDQACCg+AAcoSQAG KFUABSlkAAQpdAADKYcAAimbAAEorwAAKMUAASjhAAEn8ABeIgAAUSQAAEYlAAA9JQAANSUAAC8l AAAqJAAAJiQAACIjAAAfIwAAGyQAABglAAAUJgAAESgDAA8pCAAMLAwACiwQAAgsFAAHLBoABiwh AAUsKAADLTAAAi06AAEtRQAALVIAAC5gAAAucQAALYQAAC2ZAAAtrQAALMIAACzgAAAs8ABaJAAA TSYAAEMnAAA6JwAAMycAAC0nAAAoJgAAJCYAACEmAAAdJgAAGScAABUpAAARKwAADywDAA0uBwAJ MAwABjEOAAMxEgABMhcAADIeAAAyJQAAMi0AADI2AAAzQgAAM04AADNdAAAzbQAAM4EAADKWAAAy qwAAMcEAADHfAAAx8ABWJwAASikAAD8qAAA3KgAAMCoAACspAAAnKAAAIygAAB4pAAAaKgAAFiwA ABIuAAAPMAAADTECAAo0BwAFNQsAAjYOAAA3EAAAOBQAADgaAAA4IgAAOCoAADkzAAA5PgAAOUoA ADlZAAA5aQAAOX0AADiTAAA4qAAAN78AADfeAAA28ABRKwAARiwAADwsAAA0LAAALiwAACorAAAl KwAAICwAABstAAAXLwAAEzEAABAzAAANNQAACTcCAAU6BgABOwoAADwNAAA9DwAAPhIAAD8XAABA HgAAQCUAAEAvAABAOgAAQEYAAEBUAABAZQAAP3gAAD+PAAA+pgAAPr0AAD3cAAA98ABNLgAAQi8A ADkvAAAyLwAALS4AACguAAAiLwAAHTAAABgyAAATNQAAEDcAAAw6AAAJPAAABT4AAABBBAAAQggA AEMLAABEDQAARhAAAEcUAABIGQAASCEAAEgqAABINQAASEEAAEhPAABIYAAAR3MAAEeKAABGogAA RbkAAEXZAABE8ABIMgAAPjIAADYyAAAwMQAAKzEAACUyAAAfNAAAGTYAABM5AAAQPAAADD8AAAhC AAADRAAAAEYAAABIAgAASgUAAEsIAABMCwAATg4AAE8RAABRFQAAUhwAAFIlAABSMAAAUjwAAFFK AABRWgAAUW0AAFCEAABPnQAATrUAAE3SAABN7gBDNgAAOzYAADQ1AAAvNAAAJzUAACE4AAAaOwAA FD4AABBBAAAMRAAAB0cAAAJKAAAATQAAAE8AAABRAAAAUwIAAFQFAABVCAAAVwsAAFkOAABbEQAA XRcAAF0fAABdKgAAXTYAAFxEAABcVAAAW2cAAFt+AABalwAAWa8AAFjLAABX6gA/OQAAODkAADM4 AAArOQAAIzwAABw/AAAVQwAAEEcAAAtKAAAFTgAAAFEAAABUAAAAVwAAAFoAAABcAAAAXQAAAF8A AABgBAAAYgcAAGQLAABmDgAAaBIAAGsZAABrIwAAai4AAGo8AABqTQAAaV8AAGh1AABnjwAAZqgA AGXCAABk4wA9PQAANzwAAC49AAAlQAAAHUQAABZJAAAQTQAAClEAAARVAAAAWgAAAF0AAABgAAAA YwAAAGYAAABoAAAAagAAAGsAAABtAAAAbwIAAHEGAAB0CgAAdg4AAHkTAAB7GwAAeycAAHo1AAB5 RQAAeFkAAHhtAAB3hgAAdp8AAHW3AAB00gA8QQAAMkIAAChFAAAgSgAAF04AABBUAAAKWQAAAl4A AABjAAAAZwAAAGsAAABvAAAAcgAAAHUAAAB3AAAAeQAAAHsAAAB9AAAAfwAAAIIAAACEAwAAhwkA AIoOAACOEwAAjx4AAI4rAACOOwAAjU4AAItjAACKfAAAipUAAIitAACHxQA2RwAALEsAACJPAAAZ VQAAEFsAAAphAAABZwAAAG0AAAByAAAAdwAAAHsAAAB/AAAAgwAAAIYAAACIAAAAigAAAI0AAACP AAAAkQAAAJQAAACXAAAAmgEAAJ0HAAChDQAApRQAAKQhAACkMQAAo0QAAKJZAACgcAAAn4sAAJ2i AACdtwAwUAAAJVUAABtbAAASYgAAC2kAAAFwAAAAdwAAAH0AAACDAAAAiAAAAI0AAACRAAAAlQAA AJgAAACaAAAAnAAAAJ8AAAChAAAAowAAAKYAAACpAAAArAAAALAAAAC0BwAAuA4AALoYAAC6JwAA uTkAALhOAAC3ZQAAtn4AALWWAACzqwApWwAAHmIAABRpAAAMcQAAAnkAAACBAAAAiQAAAI8AAACW AAAAmwAAAKAAAACkAAAAqAAAAKsAAACsAAAArwAAALIAAAC0AAAAtgAAALkAAAC8AAAAwAAAAMQA AADIAAAAzQcAANIQAADSHQAA0S8AANBEAADPWwAAzXMAAMuNAADKoQD/AAAA/wAAAPsAAAD6AAAA /AAIAPgADwD1ABcA9AAgAPEAKgDrADMA5gA7AOIAQwDeAEkA2gBPANYAVADTAFkA0ABeAM4AYwDL AGgAyQBuAMYAdQDDAH0AwQCGAL4AkgC7AJ4AuQCuALYAwwC0AOgAswD/AK8A/wClAP8AngD/AJsA /wD9AAAA9wAAAPIAAADwAAAA5wADAOEADADcABIA2AAbANYAJADSAC0AzAA2AMYAPQDCAEMAvwBJ ALwATgC6AFMAuABYALYAXQC1AGIAswBnALEAbgCvAHYArAB/AKoAigCoAJcApQCmAKMAuQChANkA oAD5AJ4A/wCYAP8AkgD/AI8A/wDzAAAA7AAAAOMAAADTAAAAyAAAAMEACQC9AA8AuwAWALkAHwC3 ACcAswAvAK8ANwCsAD0AqgBDAKgASACmAE0ApABSAKMAVgChAFsAnwBhAJ4AZwCcAG8AmgB4AJcA gwCVAJAAkwCeAJEAsACQAMgAjgDwAI0A/wCKAP8AhQD/AIIA/wDnAAAA3QAAAMYAAAC4AAAArgAA AKgABAClAAwAoQASAKEAGQCgACIAnwApAJsAMACYADcAlgA9AJMAQgCSAEcAkABLAI8AUACNAFUA jABaAIoAYQCIAGgAhwBwAIUAewCDAIgAgQCWAH8ApwB9ALwAfADjAHwA/QB8AP8AeAD/AHYA/wDW AAAAwAAAAK8AAACjAAAAmQAAAJMAAACPAAkAjQAOAIsAFACKABwAigAjAIgAKgCFADAAgwA2AIIA OwCAAEAAfwBFAH4ASgB8AE8AewBUAHoAWgB4AGEAdgBpAHUAcwBzAIAAcQCOAG8AnwBuALIAbQDP AGwA9ABsAP8AawD/AGkA/wDAAAAAqwAAAJsAAACPAAAAhwAAAIAAAAB8AAQAegAMAHgAEQB4ABcA eAAeAHcAJAB1ACoAcwAwAHEANQBwADoAbgA/AG0ARABsAEkAawBOAGoAVABoAFsAZwBjAGUAbQBk AHgAYgCHAGAAlwBfAKoAXgDCAF4A6QBeAP8AXgD/AF0A/wCsAAAAmQAAAIoAAAB/AAAAdwAAAHEA AABtAAAAagAIAGkADgBoABIAZwAYAGcAHwBnACUAZQAqAGMALwBiADQAYQA5AGAAPgBfAEMAXgBI AF0ATgBbAFUAWgBdAFgAZwBXAHIAVQCBAFQAkQBTAKMAUgC4AFEA3ABRAPkAUgD/AFIA/wCdAAAA iwAAAHwAAABxAAAAaQAAAGQAAABgAAAAXgAFAFwACwBbAA8AWwAUAFoAGQBaAB8AWQAlAFcAKgBW AC8AVQA0AFQAOABTAD0AUgBDAFAASQBPAFAATgBYAE0AYgBLAG0ASgB6AEkAiwBIAJ0ARwCxAEcA zABGAPAARwD/AEcA/wCQAAAAfgAAAHAAAABmAAAAXgAAAFkAAABWAAAAUwABAFIACABQAA0ATwAQ AE8AFQBOABoATgAgAE0AJQBMACoASgAuAEkAMwBIADgARwA+AEYARABFAEsARABTAEMAXQBBAGgA QAB1AD8AhQA+AJcAPQCrAD0AwwA9AOYAPQD7AD4A/wCHAAAAdQMAAGgGAABdBwAAVQYAAFAGAABM BAAASgEAAEkABABHAAoARgAOAEUAEQBFABYARAAbAEMAIABCACUAQQAqAEAALwA/ADQAPgA6AD0A QAA7AEcAOgBPADkAWQA4AGQANwBxADYAgQA1AJMANACmADQAuwA0AN0ANAD1ADUA/wB+BgAAbQkA AGALAABWDAAATgwAAEgLAABECgAAQggAAEAFAQA/AQcAPgALAD0ADgA8ABIAOwAXADsAHAA6ACEA OQAlADcAKgA2ADAANQA1ADQAPAAzAEMAMgBMADEAVQAwAGAALwBtAC4AfQAtAI8ALACiACwAtgAs ANAALADuACwA/AB3CgAAZwwAAFoOAABQDgAASQ4AAEMOAAA+DQAAOwwAADkLAAA4CQMANwUIADYC DQA1ARAANAATADMAGAAyAB0AMQAiADAAJwAvACwALgAyAC0AOAAsAEAAKwBJACoAUgApAF0AKABr ACcBegAmAYwAJQCfACUAsgAlAMoAJQDoACUA9wByDQAAYg4AAFYQAABMEQAARBEAAD4RAAA5EAAA Ng8AADMOAAAxDQEAMAsFADAICgAvBg0ALgURACwEFAArAxkAKgMeACkDIwAoBCkAJwQvACYFNQAl BT0AJAVGACMGUAAiBlwAIQdpACAHeQAfB4sAHgedAB4HsAAdBsYAHQbjAB0F8wBtDgAAXhEAAFIS AABIEwAAQBMAADoTAAA1EgAAMREAAC4QAAAsDwAAKg4DACoNBwApCwsAKAkOACcJEQAlCBYAJAgb ACMJIAAiCSYAIQksACAKMwAfCjsAHgtEAB0LTwAcDFsAGwxpABoMeQAYDIsAGAyeABcMsAAWDMUA FgzhABYL8ABpEAAAWhIAAE4UAABFFQAAPRUAADcVAAAxFAAALRMAACoSAAAoEQAAJhABACQQBAAj DggAIw0MACIMDwAgDBMAHwwYAB4NHQAdDSMAHA0qABsNMgAaDjoAGA5EABcOUAAWD1wAFQ9qABMQ ewASEI0AERCgABEQswAQD8kAEA/kABEP8gBlEgAAVxQAAEsWAABCFwAAOhcAADQXAAAvFgAAKhUA ACcUAAAkEwAAIhMAACASAwAeEQYAHRAJABwQDQAbDxAAGRAVABgQGwAXECEAFhAoABURMAAUETkA ExFDABISTgAREloAEBJpABATeQAOE4wADhOeAA0TsQANEsUADBLhAA0S8QBiFAAAVBYAAEkYAAA/ GQAANxkAADEZAAAsGAAAKBcAACQWAAAhFgAAHxUAABwUAgAaEwQAGRIGABcSCwAVEg4AFBISABMT GAASEx8AERMmABEULQAQFDYADxVBAA4VTAAOFlcADRZlAAwXdQALF4cACheaAAkWrQAIFsEACBbd AAkV7gBfFgAAURgAAEYaAAA9GgAANRsAAC8aAAAqGgAAJRkAACIYAAAfGAAAHBcAABkWAQAXFgMA FRYEABMWCQARFg0AEBcRAA8XFgAOFxwADhgjAA0YKgAMGTMADBk8AAsaRwAKGlMACRphAAcbcQAG G4MABRuXAAQaqgADGr8AAxnaAAQZ7ABcGAAAThoAAEMcAAA6HAAAMxwAACwcAAAnHAAAIxsAACAa AAAdGQAAGhkAABcYAQAVGAIAEhkEABAbBwAOGwwADRwQAAwcEwALHBkAChwfAAkdJwAIHS8ABx45 AAYeQwAEHlAAAx9eAAIfbgABH4AAAB+VAAAeqQAAHr0AAB3YAAAd7ABYGgAASxwAAEEeAAA4HgAA MB4AACoeAAAlHQAAIRwAAB4cAAAbGwAAGBsAABYbAQATGwIAERwEAA4eBwAMHwsACiAOAAggEgAG IRcABSEdAAQhJAACIiwAASI1AAAiQAAAI00AACNaAAAjawAAI34AACOTAAAipwAAIrwAACHXAAAh 7QBVHQAASB8AAD4gAAA1IAAALiAAACggAAAjHwAAIB4AAB0dAAAaHQAAFh0AABMeAAARHwIADiAE AA0iBwAKJAsABiUNAAQlEAACJhQAACYaAAAmIQAAJykAACcyAAAnPQAAJ0kAAChXAAAoZwAAJ3sA ACeQAAAnpQAAJrsAACbWAAAl7QBRIAAARSEAADsiAAAyIgAALCIAACYhAAAiIQAAHiAAABsfAAAY IAAAFCAAABEiAAAPIwAADSUDAAomBgAGKAoAAykNAAArDwAALBIAACwXAAAsHgAALCYAAC0vAAAt OQAALUYAAC1UAAAtZAAALXcAACyNAAAspAAAK7oAACvWAAAq7gBNIgAAQSQAADgkAAAwJAAAKSQA ACQjAAAhIgAAHSIAABkiAAAVIwAAEiQAAA8mAAANKAAACioCAAYsBQACLgkAAC8LAAAwDgAAMhAA ADMVAAAzGwAAMyIAADMrAAAzNgAAM0IAADNQAAAzYAAAM3MAADKKAAAyoQAAMbgAADDWAAAw7wBJ JQAAPiYAADQnAAAtJwAAKCYAACMlAAAfJAAAGyUAABYmAAASKAAAECoAAA0sAAAKLgAABjABAAIy BAAANAcAADUKAAA3DAAAOA4AADoSAAA6FwAAOh8AADonAAA6MgAAOj4AADpMAAA6XAAAOm8AADmG AAA4ngAAOLYAADfUAAA27wBEKQAAOikAADEpAAArKQAAJigAACInAAAdKAAAGCkAABMrAAAQLgAA DTAAAAkyAAAFNQAAATcAAAA5AgAAOwUAADwIAAA+CwAAPw0AAEEQAABDFAAAQxsAAEMjAABDLgAA QzkAAENHAABCVwAAQmoAAEGBAABAmgAAP7IAAD7PAAA+7wA/LAAANiwAAC8sAAAqKwAAJSoAAB8r AAAZLQAAFC8AABAyAAANNQAACDgAAAQ6AAAAPAAAAD8AAABBAAAAQwIAAEUFAABGCAAASAsAAEoO AABMEQAATRYAAE0eAABNKAAATTQAAExCAABMUQAAS2QAAEt7AABKlAAASa0AAEjKAABH7AA7MAAA My8AAC0vAAAoLQAAIi8AABsxAAAVNAAAEDcAAA06AAAIPQAAAkAAAABDAAAARgAAAEgAAABKAAAA TAAAAE4BAABPBAAAUQcAAFMLAABVDgAAWBIAAFkZAABYIgAAWC4AAFc8AABXSwAAVl4AAFZzAABV jQAAVKcAAFLCAABS5gA4MwAAMTIAACwxAAAlMgAAHTUAABY4AAARPAAADEAAAAdEAAAARwAAAEoA AABNAAAAUAAAAFMAAABVAAAAVwAAAFkAAABaAAAAXAMAAF4HAABhCwAAZA4AAGYTAABnHAAAZicA AGY0AABlRAAAZFcAAGRrAABihQAAYZ8AAGC5AABe3AA1NwAAMDUAACg3AAAgOgAAGD0AABFCAAAM RgAABkoAAABPAAAAUwAAAFYAAABZAAAAXAAAAF8AAABhAAAAZAAAAGUAAABnAAAAaQAAAGwBAABu BgAAcQsAAHQPAAB3FQAAdyAAAHYtAAB2PQAAdU8AAHRjAABzewAAcpUAAHCvAABvyQA1OgAAKzsA ACI/AAAaQwAAEkgAAAxNAAAFUgAAAFcAAABcAAAAYAAAAGQAAABoAAAAawAAAG4AAABxAAAAcwAA AHUAAAB3AAAAegAAAHwAAAB/AAAAggQAAIYKAACKDwAAjBcAAIskAACKMwAAiUUAAIdbAACGcgAA hYsAAIOlAACCvAAvQAAAJUQAABxJAAATTgAADVQAAARaAAAAYQAAAGYAAABrAAAAbwAAAHQAAAB5 AAAAfQAAAIAAAACDAAAAhQAAAIcAAACKAAAAjAAAAI8AAACSAAAAlgAAAJkCAACeCQAAohAAAKIa AAChKQAAoDsAAJ9QAACdZwAAmoEAAJqZAACZrwApSQAAH04AABVUAAAOWwAABWIAAABpAAAAcAAA AHcAAAB9AAAAggAAAIYAAACLAAAAjwAAAJMAAACVAAAAlwAAAJoAAACdAAAAoAAAAKMAAACmAAAA qgAAAK4AAACyAAAAtwoAALsRAAC6HwAAuTAAALdFAAC1XAAAtHQAALGOAACvpAAiVAAAGFsAABBi AAAHagAAAHMAAAB7AAAAggAAAIkAAACQAAAAlQAAAJoAAACfAAAAowAAAKYAAACoAAAAqwAAAK4A AACwAAAAswAAALYAAAC6AAAAvQAAAMIAAADHAAAAzAEAANMLAADUFQAA0yYAANE6AADQUQAAzWgA AMuBAADKlgD8AAAA9gAAAPIAAADxAAAA8wAFAPQADADyABMA8AAcAO0AJQDoAC4A4gA2AN4APgDZ AEQA1ABKANEATwDOAFQAywBZAMkAXgDGAGMAxABpAMEAcAC+AHgAvACBALkAjQC2AJoAswCrALEA wACvAOYArgD/AKUA/wCaAP8AlAD/AI8A/wD0AAAA7AAAAOgAAADnAAAA3wAAANkACQDSABAAzwAX AM8AIADMACgAxgAwAMAANwC8AD4AuQBEALcASQC1AE4AswBTALEAVwCvAF0ArQBiAKsAaQCpAHEA pwB6AKUAhQCiAJMAoACiAJ0AtgCbANQAmQD5AJYA/wCNAP8AiAD/AIQA/wDoAAAA3wAAANkAAADJ AAAAvwAAALgABAC1AA0AswASALEAGgCwACIArQAqAKkAMQCmADgApAA9AKIAQwCgAEgAngBMAJwA UQCbAFYAmQBcAJcAYgCVAGkAkwByAJEAfQCPAIsAjQCaAIsArACJAMUAiADuAIYA/wB/AP8AegD/ AHgA/wDZAAAAzQAAALsAAACuAAAApQAAAJ8AAACcAAkAmQAPAJkAFQCZAB0AmAAkAJQAKwCRADEA jgA3AIwAPACLAEEAiQBGAIgASwCGAFAAhQBVAIMAWwCCAGIAgABrAH4AdQB8AIIAegCSAHgAowB3 ALkAdgDgAHUA/wByAP8AbgD/AGwA/wDHAAAAtQAAAKUAAACZAAAAjwAAAIkAAACFAAQAhAAMAIIA EQCCABcAggAeAIAAJQB+ACsAfAAxAHoANgB5ADsAdwBAAHYARAB1AEkAcwBPAHIAVQBwAFwAbwBk AG0AbgBsAHoAagCKAGgAmwBnAK8AZgDMAGUA9QBkAP8AYQD/AGAA/wC0AAAAoAAAAJAAAACFAAAA fQAAAHcAAABzAAAAcAAIAG8ADgBvABIAbwAYAG8AHwBtACUAawAqAGkAMABoADQAZwA5AGYAPgBl AEMAYwBIAGIATgBhAFUAXwBeAF4AZwBcAHMAWwCCAFkAkwBYAKYAVwC/AFcA6gBXAP8AVgD/AFQA /wChAAAAjgAAAH8AAAB1AAAAbAAAAGgAAABkAAAAYQAEAGAACwBfAA8AXwATAF8AGQBfAB8AXQAl AFwAKgBbAC8AWQAzAFgAOABXAD0AVgBDAFUASQBTAFAAUgBYAFEAYQBQAG0ATgB7AE0AjABMAJ8A SwC1AEoA3ABKAPoASgD/AEoA/wCSAAAAgAAAAHIAAABnAAAAXwAAAFoAAABXAAAAVQABAFMABwBS AAwAUgAQAFIAFABSABoAUQAfAE8AJABOACkATQAuAEwAMwBLADgASgA9AEkAQwBIAEoARgBSAEUA XABEAGcAQwB1AEIAhgBBAJgAQACuAEAAywA/APIAQAD/AEAA/wCFAAAAdAAAAGcAAABdAAAAVQAA AE8AAABMAAAASgAAAEgABABHAAoARwANAEYAEQBGABUARgAaAEUAHwBEACQAQwApAEIALQBBADMA PwA4AD4APgA9AEUAPABOADsAVwA6AGIAOQBvADgAgAA3AJMANgCnADYAwAA2AOgANgD+ADYA/wB8 AAAAawAAAF4CAABUAwAATQMAAEcDAABDAQAAQQAAAD8AAQA+AAcAPQALAD0ADgA8ABEAPAAWADwA GgA6AB8AOQAkADgAKQA3AC4ANgAzADUAOgA0AEEAMwBJADIAUwAxAF4AMABrAC8AewAuAI4ALQCi AC0AuAAtAN0ALQD4AC4A/wBzAQAAZAUAAFcHAABNCAAARggAAEAIAAA7BwAAOAUAADcDAAA2AAQA NQAIADQADAA0AA8ANAASADMAFgAyABsAMQAgADAAJAAvACkALgAvAC0ANgAsAD0AKwBFACoATwAp AFoAKABnACcAdwAmAIkAJgCdACUAswAlAM8AJQDwACYA/wBtBgAAXgkAAFILAABIDAAAQAwAADoL AAA2CwAAMgoAADAIAAAuBgIALgMGAC0ACgAsAA0ALAAQACsAEwAqABcAKQAcACgAIAAnACUAJgAr ACUAMgAkADkAIwBCACIASwAiAFcAIQBkACAAcwAfAIUAHwCZAB4ArgAeAMcAHgDpAB8A+gBoCQAA WQwAAE0NAABDDgAAPA4AADYOAAAxDQAALQ0AACoMAAAoCwAAJwkEACYGCAAmBAsAJQMOACQBEAAk ARQAIgEYACEBHQAhACIAIAAoAB8ALgAeATYAHQE/ABwBSQAbAVQAGgFhABoBcAAZAYIAGACWABgA qgAYAMEAGADhABgA9ABjDAAAVQ4AAEkPAABAEAAAOBAAADIQAAAtDwAAKQ4AACYOAAAjDQAAIgwD ACALBgAgCQkAHwcMAB4GDgAeBREAHAUVABsFGgAaBR8AGgUlABkFKwAYBTMAFwY8ABYGRgAWBlIA FQdfABQHbgATB4AAEgeUABIGpwASBbwAEgTZABID7wBfDgAAUQ8AAEYQAAA8EQAANREAAC8RAAAq EQAAJhAAACIQAAAgDwAAHQ4CABwNBQAaDQcAGgsKABkKDQAYCRAAFwkSABYJFwAVCRwAFAkiABQK KQATCjEAEgo6ABILRQARC1EAEAxfAA8MbgAODIAADgyUAA0LpwANC7oADQrSAA0K6gBcDwAAThEA AEMSAAA6EwAAMhMAACwTAAAnEgAAIxEAAB8RAAAcEAAAGhACABgPBAAWDgcAFQ4JABQNCwATDA0A EgwQABIMFAARDBoAEQ0gABANKAAPDTAADg47AA0ORgANDlEADA9eAAsPbQAKD38ACQ+TAAkPpgAI DrkACA7QAAcO6ABYEQAASxIAAEATAAA3FAAAMBQAACkUAAAlFAAAIRMAAB0SAAAaEgAAFxECABUR BQATEAcAEhAJABEPCgAQDgwADg4OAA4PEgANEBgADRAeAAwQJQAMEC0ACxE2AAoRQQAJEU0ACBJa AAcSagAGEnwABRKQAAQSpAADEbgAAxHPAAIR6ABVEgAASRQAAD4VAAA1FgAALRYAACcWAAAiFQAA HhQAABsUAAAYEwAAFRIDABMSBQASEQcAEBEJAA8RCgANEQsADBIOAAsSEQAKEhUACRMbAAkTIgAI EyoABxQzAAUUPgAEFUoAAxVYAAIVZwABFXoAABWOAAAVowAAFLcAABTPAAAT6QBSFAAARhYAADsX AAAyFwAAKxcAACUXAAAhFgAAHBYAABkVAAAWFAEAFBMEABITBgAREggADxIIAA4TCQAMFAoAChUN AAgWEAAGFhMABRYZAAQXHwADFycAAhgwAAEYOwAAGUcAABlVAAAZZAAAGXcAABmMAAAYogAAGLcA ABfPAAAX6gBPFgAAQxgAADkZAAAwGQAAKRkAACMZAAAfGAAAGxcAABgWAAAVFQIAExUFABEUBgAQ FAYADhUHAAwWCAAKFwoABxkMAAQaDgACGxIAARsWAAAbHQAAHCQAABwtAAAcOAAAHUQAAB1SAAAd YgAAHXUAAB2KAAAcoAAAHLYAABvQAAAa6wBMGAAAQBoAADYbAAAtGwAAJhsAACEaAAAdGQAAGRkA ABcYAAAUFwMAEhYEABAXBAAOFwQADBkFAAoaBwAHHAkAAx0LAAAfDQAAIBAAACAUAAAhGgAAISIA ACEqAAAhNQAAIkEAACJPAAAiXwAAInIAACGIAAAhnwAAILYAAB/RAAAf7QBIGgAAPRwAADMdAAAr HQAAJB0AACAcAAAcGwAAGBoAABYZAQATGQEAERkBAA4aAQAMHAIACh0DAAcfBQADIQgAACIKAAAk DAAAJg4AACYSAAAmGAAAJx8AACcnAAAnMgAAJz4AACdLAAAnXAAAJ24AACaFAAAmnQAAJbQAACTR AAAj7gBEHQAAOR8AADAfAAAoHwAAIx4AAB4dAAAbHAAAGBsAABQcAAARHAAADh0AAA0fAAAKIQAA BiIBAAMkBAAAJgYAACgIAAAqCwAAKw0AAC0QAAAtFQAALRwAAC0kAAAuLgAALjoAAC5IAAAtWAAA LWoAAC2BAAAsmgAAK7IAACrQAAAp7wBAIAAANiEAAC0hAAAmIQAAISAAAB0fAAAaHgAAFh4AABIf AAAPIQAADSIAAAokAAAGJgAAAigAAAArAgAALQQAAC8GAAAwCQAAMgwAADQOAAA1EgAANRgAADUg AAA1KgAANTYAADVDAAA1UwAANGYAADR8AAAzlgAAMq8AADHNAAAw7wA8IwAAMiQAACokAAAkIwAA ICIAABwhAAAXIQAAEyMAABAlAAANJwAACSkAAAUrAAABLgAAADAAAAAyAAAANAEAADYEAAA4BgAA OgkAADwNAAA+EAAAPhQAAD4cAAA+JgAAPjEAAD4/AAA9TgAAPWEAADx3AAA7kQAAOqsAADnJAAA4 7QA3JwAALycAACgmAAAjJQAAHyQAABklAAAUJgAAECgAAA0rAAAJLgAABTAAAAAzAAAANQAAADgA AAA6AAAAPAAAAD4BAABAAwAAQgcAAEQKAABGDQAASREAAEkXAABIIQAASCwAAEc6AABHSQAARlsA AEVxAABEiwAAQ6UAAELDAABB6AA0KgAALCoAACcoAAAiJwAAHCgAABYqAAARLQAADTAAAAkzAAAD NgAAADkAAAA8AAAAPgAAAEEAAABDAAAARgAAAEgAAABKAAAATAMAAE4GAABQCgAAUw4AAFQTAABU HAAAUycAAFM0AABTQwAAUlUAAFFqAABQgwAAT54AAE25AABM4AAwLQAAKywAACYrAAAfLAAAGC4A ABIyAAANNQAACDkAAAI9AAAAQAAAAEMAAABGAAAASQAAAEwAAABOAAAAUQAAAFMAAABVAAAAVwAA AFkBAABcBgAAXwoAAGIOAABjFQAAYx8AAGIsAABhPAAAYE4AAF9iAABeewAAXJYAAFuwAABZzwAv MAAAKi8AACIwAAAaMwAAEzcAAA47AAAIPwAAAUQAAABIAAAATAAAAE8AAABSAAAAVQAAAFgAAABb AAAAXQAAAGAAAABiAAAAZAAAAGYAAABpAAAAbQUAAHALAAB0EAAAdBgAAHMlAAByNAAAckUAAHBZ AABvcQAAbYsAAGumAABqwAAuMwAAJTUAAB04AAAUPAAADkEAAAdHAAAATAAAAFEAAABVAAAAWQAA AF0AAABhAAAAZQAAAGgAAABrAAAAbQAAAG8AAAByAAAAdAAAAHcAAAB6AAAAfgAAAIIEAACGCwAA ihEAAIkcAACIKwAAhj0AAIRSAACDZwAAgYEAAH+bAAB+sgApOgAAID0AABZCAAAPSAAACE4AAABU AAAAWgAAAGAAAABkAAAAaQAAAG4AAAByAAAAdgAAAHoAAAB9AAAAgAAAAIIAAACFAAAAiAAAAIsA AACOAAAAkgAAAJYAAACbAwAAoAwAAKITAACgIQAAnzMAAJ1HAACaXgAAmHcAAJePAACVpwAjQwAA GUgAABFOAAAJVQAAAFwAAABjAAAAagAAAHEAAAB2AAAAewAAAIAAAACGAAAAigAAAI4AAACRAAAA kwAAAJYAAACZAAAAnAAAAKAAAACjAAAApwAAAKsAAACwAAAAtgQAALwNAAC6FwAAuSgAALc8AAC0 UgAAsmoAAK+FAACtnAAcTgAAE1QAAAtcAAABZAAAAGwAAAB0AAAAfAAAAIMAAACJAAAAjwAAAJQA AACaAAAAnwAAAKIAAACkAAAApwAAAKoAAACuAAAAsQAAALQAAAC4AAAAvAAAAMEAAADHAAAAzQAA ANQFAADYEAAA1R4AANMxAADQSAAAzV8AAMt2AADIjgAAAAAAAAAAAAAAAAAAAAAAAQMEBQYICQoL DQ4PERITFBYXGBobHB0fICEiJCUmKCkqKy0uLzAyMzQ2Nzg5Ozw9PkBBQkRFRkdJSktNTk9QUlNU VVdYWVtcXV5gYWJjZWZnaWprbG5vcHFzdHV3eHl6fH1+gIGCg4WGh4iKi4yOj5CRk5SVlpiZmpyd np+hoqOkpqeoqqusra+wsbO0tba4ubq7vb6/wcLDxMbHyMnLzM3P0NHS1NXW19na293e3+Di4+Tm 5+jp6+zt7vDx8vT19vf5+vv8/v////////////////////////////////////////////////// ////AAAAAAAAAAAAAAAAAAAAAAEDBAUGCAkKCw0ODxESExQWFxgaGxwdHyAhIiQlJigpKistLi8w MjM0Njc4OTs8PT5AQUJERUZHSUpLTU5PUFJTVFVXWFlbXF1eYGFiY2VmZ2lqa2xub3Bxc3R1d3h5 enx9foCBgoOFhoeIiouMjo+QkZOUlZaYmZqcnZ6foaKjpKanqKqrrK2vsLGztLW2uLm6u72+v8HC w8TGx8jJy8zNz9DR0tTV1tfZ2tvd3t/g4uPk5ufo6evs7e7w8fL09fb3+fr7/P7///////////// /////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAABAwQFBggJCgsN Dg8REhMUFhcYGhscHR8gISIkJSYoKSorLS4vMDIzNDY3ODk7PD0+QEFCREVGR0lKS01OT1BSU1RV V1hZW1xdXmBhYmNlZmdpamtsbm9wcXN0dXd4eXp8fX6AgYKDhYaHiIqLjI6PkJGTlJWWmJmanJ2e n6Gio6Smp6iqq6ytr7Cxs7S1tri5uru9vr/BwsPExsfIycvMzc/Q0dLU1dbX2drb3d7f4OLj5Obn 6Onr7O3u8PHy9PX29/n6+/z+//////////////////////////////////////////////////// //8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2 Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5v cHFyc3R1dnd4eXp7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6Slpqeo qaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh 4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/bWZ0MQAAAAADBCEAAAEAAAAAAAAAAAAAAAAA AAABAAAAAAAAAAAAAAAAAAAAAQAAAAECAwQFBgcICAkKCwwNDg8QERITFBUWFxgZGhobHB0eHyAh IiMkJSYnKCkqKywtLi8wMTEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ WltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGS k5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrrCxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvM zc7P0NHT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Hy8/T19vf4+fr7/P3+/wABAQICAwME BAUGBgcHCAgJCQoLCwwMDQ0ODw8QEBEREhMTFBQVFhYXFxgZGRoaGxwcHR4eHyAgISIiIyQkJSYm JygpKSorLC0tLi8wMTIyMzQ1Njc4OTo7PD0+P0BCQ0RFRkhJSkxNT1BSU1VXWFpcXmBiZGZoam1v cXR2eXx+gYOGiYuOkJKVl5mbnZ+ho6WnqKqsra+wsrO1tre5uru8vb/AwcLDxMXGx8jJysvMzc3O z9DR0tLT1NXW1tfY2dna29vc3d3e39/g4eHi4+Pk5eXm5ufo6Onp6uvr7Ozt7u7v7/Dw8fLy8/P0 9PX29vf3+Pj5+fr7+/z8/f3+/v8AAQECAgMDBAQFBgYHBwgICQkKCwsMDA0NDg8PEBARERITExQU FRYWFxcYGRkaGhscHB0eHh8gICEiIiMkJCUmJicoKSkqKywtLS4vMDEyMjM0NTY3ODk6Ozw9Pj9A QkNERUZISUpMTU9QUlNVV1haXF5gYmRmaGptb3F0dnl8foGDhomLjpCSlZeZm52foaOlp6iqrK2v sLKztba3ubq7vL2/wMHCw8TFxsfIycrLzM3Nzs/Q0dLS09TV1tbX2NnZ2tvb3N3d3t/f4OHh4uPj 5OXl5ubn6Ojp6err6+zs7e7u7+/w8PHy8vPz9PT19vb39/j4+fn6+/v8/P39/v7/2ssJG+jNDjrp zBBg3MgOksu6MqzGt1C0wLNovLuue8S1qIjLs6WH0bCih9Wtn4jZq52J3Kqci96omo3hp5mP46WX kuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS 5qWXkuall5Lm2ssJG+jNDjrpzBBg3MgOksu6MqzGt1C0wLNovLuue8S1qIjLs6WH0bCih9Wtn4jZ q52J3Kqci96omo3hp5mP46WXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkual l5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm2ssJG+jNDjrpzBBg3MgOksu6MqzGt1C0wLNovLuu e8S1qIjLs6WH0bCih9Wtn4jZq52J3Kqci96omo3hp5mP46WXkuall5LmpZeS5qWXkuall5LmpZeS 5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm2ssJG+jNDjrpzBBg 3MgOksu6MqzGt1C0wLNovLuue8S1qIjLs6WH0bCih9Wtn4jZq52J3Kqci96omo3hp5mP46WXkual l5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWX kuall5Lm2ssJG+jNDjrpzBBg3MgOksu6MqzGt1C0wLNovLuue8S1qIjLs6WH0bCih9Wtn4jZq52J 3Kqci96omo3hp5mP46WXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm pZeS5qWXkuall5LmpZeS5qWXkuall5Lm2ssJG+jNDjrpzBBg3MgOksu6MqzGt1C0wLNovLuue8S1 qIjLs6WH0bCih9Wtn4jZq52J3Kqci96omo3hp5mP46WXkuall5LmpZeS5qWXkuall5LmpZeS5qWX kuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm2ssJG+jNDjrpzBBg3MgO ksu6MqzGt1C0wLNovLuue8S1qIjLs6WH0bCih9Wtn4jZq52J3Kqci96omo3hp5mP46WXkuall5Lm pZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkual l5Lm2ssJG+jNDjrpzBBg3MgOksu6MqzGt1C0wLNovLuue8S1qIjLs6WH0bCih9Wtn4jZq52J3Kqc i96omo3hp5mP46WXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS 5qWXkuall5LmpZeS5qWXkuall5Lm2ssJG+jNDjrpzBBg3MgOksu6MqzGt1C0wLNovLuue8S1qIjL s6WH0bCih9Wtn4jZq52J3Kqci96omo3hp5mP46WXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkual l5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm2ssJG+jNDjrpzBBg3MgOksu6 MqzGt1C0wLNovLuue8S1qIjLs6WH0bCih9Wtn4jZq52J3Kqci96omo3hp5mP46WXkuall5LmpZeS 5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm 2ssJG+jNDjrpzBBg3MgOksu6MqzGt1C0wLNovLuue8S1qIjLs6WH0bCih9Wtn4jZq52J3Kqci96o mo3hp5mP46WXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWX kuall5LmpZeS5qWXkuall5Lm2ssJG+jNDjrpzBBg3MgOksu6MqzGt1C0wLNovLuue8S1qIjLs6WH 0bCih9Wtn4jZq52J3Kqci96omo3hp5mP46WXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm pZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm2ssJG+jNDjrpzBBg3MgOksu6MqzG t1C0wLNovLuue8S1qIjLs6WH0bCih9Wtn4jZq52J3Kqci96omo3hp5mP46WXkuall5LmpZeS5qWX kuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm2ssJ G+jNDjrpzBBg3MgOksu6MqzGt1C0wLNovLuue8S1qIjLs6WH0bCih9Wtn4jZq52J3Kqci96omo3h p5mP46WXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkual l5LmpZeS5qWXkuall5Lm2ssJG+jNDjrpzBBg3MgOksu6MqzGt1C0wLNovLuue8S1qIjLs6WH0bCi h9Wtn4jZq52J3Kqci96omo3hp5mP46WXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS 5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm2ssJG+jNDjrpzBBg3MgOksu6MqzGt1C0 wLNovLuue8S1qIjLs6WH0bCih9Wtn4jZq52J3Kqci96omo3hp5mP46WXkuall5LmpZeS5qWXkual l5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm2ssJG+jN DjrpzBBg3MgOksu6MqzGt1C0wLNovLuue8S1qIjLs6WH0bCih9Wtn4jZq52J3Kqci96omo3hp5mP 46WXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm pZeS5qWXkuall5Lm2csJG+fODTnozRBg3MkNksu7MKvGuE+0wLNnvbuue8S1qYjLsqaH0a+jh9Wt oIjZq56J3Kmcit6nm4zgpZmP46GYkOShmJDkoZiQ5KGYkOShmJDkoZiQ5KGYkOShmJDkoZiQ5KGY kOShmJDkoZiQ5KGYkOShmJDkoZiQ5KGYkOShmJDk2csJGuTODTnnzg5g2soMksu8LqvFuU20wLRm vbquesW1qYfLsaaH0a6jh9WsoIjZqp6J3Kecit6lm4vgopqN4p6Zj+OemY/jnpmP456Zj+OemY/j npmP456Zj+OemY/jnpmP456Zj+OemY/jnpmP456Zj+OemY/jnpmP456Zj+OemY/j2MsJGuHPDDnl zw5g2coMkcu+LKvFuUy1vrRnvbmue8W0qofMsKaH0a2jh9WroIjZqJ6I26Wdid2jnIrfn5qL4ZuZ juKbmY7im5mO4puZjuKbmY7im5mO4puZjuKbmY7im5mO4puZjuKbmY7im5mO4puZjuKbmY7im5mO 4puZjuKbmY7i2MsJGtzQCznj0A1g2MsLkcu/K6vEuky1vbNnvriue8W0qYfMsKaH0ayjh9WpoIfY pp+I26OdiN2gnInenZuK4JiajeGYmo3hmJqN4ZiajeGYmo3hmJqN4ZiajeGYmo3hmJqN4ZiajeGY mo3hmJqN4ZiajeGYmo3hmJqN4ZiajeGYmo3h18wJGtrRCzje0Qxf1ssLkcvAKazCuU22vLNovreu e8azqYfMr6aH0aqjhtWnoYfYpJ+H2qGeh9yenYjdmpyJ3pWbjOCVm4zglZuM4JWbjOCVm4zglZuM 4JWbjOCVm4zglZuM4JWbjOCVm4zglZuM4JWbjOCVm4zglZuM4JWbjOCVm4zg1swJGdnRCzja0wxf 1MwLkcnAKa3AuU62urNpv7WufMayqYfMraaG0amjhtSloYbXoqCG2Z+fhtqbnofcl52I3ZOci96T nIvek5yL3pOci96TnIvek5yL3pOci96TnIvek5yL3pOci96TnIvek5yL3pOci96TnIvek5yL3pOc i96TnIve1cwJGdjSCzfY0wte0swLk8e/K62+uFC3ubJqv7StfMawqYfMq6aG0KekhdSjooXWn6GF 2JyghdmYn4balJ6H3JCdit2QnYrdkJ2K3ZCdit2QnYrdkJ2K3ZCdit2QnYrdkJ2K3ZCdit2QnYrd kJ2K3ZCdit2QnYrdkJ2K3ZCdit2QnYrd1M0JGdbSCzfW1Ate0MsKlcS+La68uFG4t7JqwLOtfMau qYfMqaaG0KWkhdOgo4TVnaKE1pmhhdiVoIXZkZ+H2o6eiduOnonbjp6J246eiduOnonbjp6J246e iduOnonbjp6J246eiduOnonbjp6J246eiduOnonbjp6J246eiduOnonb080KGNXTCzbU1AtfzssJ l8G+MK+6t1O4tbJswLCtfcesqobLp6eFz6KlhNGepITTmqOE1ZaihNaToYXXj6CG2IugidmLoInZ i6CJ2YugidmLoInZi6CJ2YugidmLoInZi6CJ2YugidmLoInZi6CJ2YugidmLoInZi6CJ2YugidmL oInZ0s4KF9PUCzXR0wpiy8wJmb69M7G3t1W5srFtwa2tfcaqqobLpKiEzp+nhNCbpYPSl6SD05Oj hNSQo4XVjKKG1omhiNeJoYjXiaGI14mhiNeJoYjXiaGI14mhiNeJoYjXiaGI14mhiNeJoYjXiaGI 14mhiNeJoYjXiaGI14mhiNeJoYjX0M8KFtHUCzfO0wplxsoLnbm8OLK0tli6rbFuwaqufcanq4XJ oamEzJyog86Xp4PPk6aD0ZClhNKNpYXTiqSG04ejiNSHo4jUh6OI1IejiNSHo4jUh6OI1IejiNSH o4jUh6OI1IejiNSHo4jUh6OI1IejiNSHo4jUh6OI1IejiNSHo4jUztAKFc7UCjrK0wpowMgPobW7 PrSttVu7qbFvwaavfcSjrYTHnauDypiqg8uTqYPNkKiEzo2nhM+Kp4XPh6aH0IWmiNGFpojRhaaI 0YWmiNGFpojRhaaI0YWmiNGFpojRhaaI0YWmiNGFpojRhaaI0YWmiNGFpojRhaaI0YWmiNGFpojR zNAJGMrUCj7F0wptuMUWpa65RLWntV67o7JwwKGwfcOfroTFma2Dx5SshMmQq4TKjaqFy4qqhcuI qYbMhamHzYOoic2DqInNg6iJzYOoic2DqInNg6iJzYOoic2DqInNg6iJzYOoic2DqInNg6iJzYOo ic2DqInNg6iJzYOoic2DqInNyNEJG8XVCkK/0wpyscQep6W5SbahtmC7nrNwvp2xfcGbsITDla+E xJGuhMaNrYXHiq2Gx4ishsiGrIfIhKuJyYKrismCq4rJgquKyYKrismCq4rJgquKyYKrismCq4rJ gquKyYKrismCq4rJgquKyYKrismCq4rJgquKyYKrismCq4rJxNIIIMDWCUi41Ap4qc8XmJ6+R66a tmK6mLVxvJezfL6XsoTAkrGFwo2whcOKr4bEiK+HxIaviMWEronFg66KxYGui8WBrovFga6LxYGu i8WBrovFga6LxYGui8WBrovFga6LxYGui8WBrovFga6LxYGui8WBrovFga6LxYGui8WBrovFv9QH JbrXCU6u2gtwoNsTh5fNOZqSw1iokbxsspG3ermStIO9jrOGv4uyh8CIsYfAhrGIwYSxicGDsYrB grGLwoCwjMKAsIzCgLCMwoCwjMKAsIzCgLCMwoCwjMKAsIzCgLCMwoCwjMKAsIzCgLCMwoCwjMKA sIzCgLCMwoCwjMKAsIzC98AQFfjAFjH5vSBT6rcofMyoRKrGpV20wqNwur6if7+8oIjDuZuIxreY iMq1lYnNs5KK0LGPi9KwjI3Ur4qQ1q6Ik9ithpjZrIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd 2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3a98AQFfjAFjH5vSBT6rcofMyoRKrGpV20 wqNwur6if7+8oIjDuZuIxreYiMq1lYnNs5KK0LGPi9KwjI3Ur4qQ1q6Ik9ithpjZrIWd2qyFndqs hZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3a98AQFfjA FjH5vSBT6rcofMyoRKrGpV20wqNwur6if7+8oIjDuZuIxreYiMq1lYnNs5KK0LGPi9KwjI3Ur4qQ 1q6Ik9ithpjZrIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3a rIWd2qyFndqshZ3a98AQFfjAFjH5vSBT6rcofMyoRKrGpV20wqNwur6if7+8oIjDuZuIxreYiMq1 lYnNs5KK0LGPi9KwjI3Ur4qQ1q6Ik9ithpjZrIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyF ndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3a98AQFfjAFjH5vSBT6rcofMyoRKrGpV20wqNw ur6if7+8oIjDuZuIxreYiMq1lYnNs5KK0LGPi9KwjI3Ur4qQ1q6Ik9ithpjZrIWd2qyFndqshZ3a rIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3a98AQFfjAFjH5 vSBT6rcofMyoRKrGpV20wqNwur6if7+8oIjDuZuIxreYiMq1lYnNs5KK0LGPi9KwjI3Ur4qQ1q6I k9ithpjZrIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd 2qyFndqshZ3a98AQFfjAFjH5vSBT6rcofMyoRKrGpV20wqNwur6if7+8oIjDuZuIxreYiMq1lYnN s5KK0LGPi9KwjI3Ur4qQ1q6Ik9ithpjZrIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqs hZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3a98AQFfjAFjH5vSBT6rcofMyoRKrGpV20wqNwur6i f7+8oIjDuZuIxreYiMq1lYnNs5KK0LGPi9KwjI3Ur4qQ1q6Ik9ithpjZrIWd2qyFndqshZ3arIWd 2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3a98AQFfjAFjH5vSBT 6rcofMyoRKrGpV20wqNwur6if7+8oIjDuZuIxreYiMq1lYnNs5KK0LGPi9KwjI3Ur4qQ1q6Ik9it hpjZrIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyF ndqshZ3a98AQFfjAFjH5vSBT6rcofMyoRKrGpV20wqNwur6if7+8oIjDuZuIxreYiMq1lYnNs5KK 0LGPi9KwjI3Ur4qQ1q6Ik9ithpjZrIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3a rIWd2qyFndqshZ3arIWd2qyFndqshZ3a98AQFfjAFjH5vSBT6rcofMyoRKrGpV20wqNwur6if7+8 oIjDuZuIxreYiMq1lYnNs5KK0LGPi9KwjI3Ur4qQ1q6Ik9ithpjZrIWd2qyFndqshZ3arIWd2qyF ndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3a98AQFfjAFjH5vSBT6rco fMyoRKrGpV20wqNwur6if7+8oIjDuZuIxreYiMq1lYnNs5KK0LGPi9KwjI3Ur4qQ1q6Ik9ithpjZ rIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqs hZ3a98APFfjAFjD5vSBT6rgnfMyoRKvGpV20wqRwur6if7+8oIjDuZuIx7eYiMq1lYnOs5KK0LGP i9OwjY3Vr4qP162Ik9mthpjaq4ad2quGndqrhp3aq4ad2quGndqrhp3aq4ad2quGndqrhp3aq4ad 2quGndqrhp3aq4ad2quGndqrhp3a98EPFffBFjD4vh9T6rgmfMupQ6vGply0wqRvur6ifr+7oIjD uZ2HyLaah8yzl4jPsZSJ0rCSitWuj4zXrY2O2ayKktyriZndp4ic26eInNuniJzbp4ic26eInNun iJzbp4ic26eInNuniJzbp4ic26eInNuniJzbp4ic26eInNuniJzb9sEOFPfBFTD4vx5T6rklfMup QqvGp1uzwqVuur6jfr+7oYjEuJ6HybWch82ymYfRsJaI1K6Uidetkovaq5CN3KmNkt+ojZrfo4uc 3KOLnNyji5zco4uc3KOLnNyji5zco4uc3KOLnNyji5zco4uc3KOLnNyji5zco4uc3KOLnNyji5zc 9sEOFPbCFTD3vx5T6rokfMupQazGp1qzwqVtur6jfb+7o4jEt6CHybSdh86xm4fTr5mI1q2Xidqr lYrcqZON36eSkeKkkZngoI6c3KCOnNygjpzcoI6c3KCOnNygjpzcoI6c3KCOnNygjpzcoI6c3KCO nNygjpzcoI6c3KCOnNygjpzc9cIOFPXCFDD2wB1T6rojfMuqQazGqFmzwqZtur6kfb+6pIfFt6GH yrOfh8+wnYfUrpuI2KuZidypmIvfp5iO4qWXkuaglpngnJOb3ZyTm92ck5vdnJOb3ZyTm92ck5vd nJOb3ZyTm92ck5vdnJOb3ZyTm92ck5vdnJOb3ZyTm92ck5vd9MINFPXDFDD2wBxT6rsifMqqQKzG qFizwqZsur6kfL+6pYXFtqOHy7Ohh9Cwn4fVrZ2I2qqdit2nm4zgpJqO4p+Yj+OdmpjhmZeb3ZmX m92Zl5vdmZeb3ZmXm92Zl5vdmZeb3ZmXm92Zl5vdmZeb3ZmXm92Zl5vdmZeb3ZmXm92Zl5vd8sMN FPTDEzD1wRtT6rwhfMqrP63GqVezwqdrur6le7+6poTFtqWHy7Kjh9GvoYfWq5+I2qedid2knIrf oJuL4JuajeKXmpPhl5yb3pecm96XnJvel5yb3pecm96XnJvel5yb3pecm96XnJvel5yb3pecm96X nJvel5yb3pecm96XnJve8MMNFPTEEy/1whpS6r0gfMqrPqzGqlazwqhrur6neb+6qIPFtqeHzLKl h9GsoofWqKCH2aSeiNyhnYjdnJyJ3pebi+CTm4/gkp2X3pKdl96SnZfekp2X3pKdl96SnZfekp2X 3pKdl96SnZfekp2X3pKdl96SnZfekp2X3pKdl96SnZfe7cQME/PFEi/0whlS6r0ffMqsPKzGq1Wz wqhqub6pd7+6qoDFtamHzK+lh9KqoofWpaCG2KGfhtqdnofbmZ2H3ZSdid6QnI3ejp2T3Y6dk92O nZPdjp2T3Y6dk92OnZPdjp2T3Y6dk92OnZPdjp2T3Y6dk92OnZPdjp2T3Y6dk92OnZPd6sUME/LF ES/zwxhS6r4dfMutOqzGrFSzwqlpub6sc7+6rX7FsqmHzKylhtGno4bVoqGF156ghdiaoIXalp+G 25GeiNyNnovci56P3Iuej9yLno/ci56P3Iuej9yLno/ci56P3Iuej9yLno/ci56P3Iuej9yLno/c i56P3Iuej9yLno/c5sULE/HGES/yxBdS6sAbfMuvOKzGrVKywqtmub+wb763rX7GsKmHzaqmhtGk pIXTn6OE1ZuihNaXoYXYk6CF2Y+gh9mLn4raiJ+N2oifjdqIn43aiJ+N2oifjdqIn43aiJ+N2oif jdqIn43aiJ+N2oifjdqIn43aiJ+N2oifjdqIn43a4cYKE/DHEC7wxhZR6sEZfMuwNavHr0+yw7Bg uLyybL+yrX7HramGzKenhc+hpYTSnKSE05ijhNSUo4TVkKKF1o2hhteJoYjYh6GL2Iehi9iHoYvY h6GL2Iehi9iHoYvYh6GL2Iehi9iHoYvYh6GL2Iehi9iHoYvYh6GL2Iehi9iHoYvY28cJEu7JDy7u yBRR68QWfMyzMKvHsUyxxLhWt7axbsGurX/HqaqGy6OohM6ep4PPmaaD0ZWlg9KRpITTjqSF1Iuj htSIo4jVhaOK1YWjitWFo4rVhaOK1YWjitWFo4rVhaOK1YWjitWFo4rVhaOK1YWjitWFo4rVhaOK 1YWjitWFo4rV2sgJEuvLDS3ryhFQ68cSfMy2KqrIt0SwurZZuq+xcMKqrX/HpquFyqCqhMyaqIPN lqiDzpKng8+PpoTQjKaF0YmlhtGHpYfShaWJ0oWlidKFpYnShaWJ0oWlidKFpYnShaWJ0oWlidKF pYnShaWJ0oWlidKFpYnShaWJ0oWlidKFpYnS2MkJEd/NCyznzQ9P6MsOe828IqjCvDyxsbVevKmx csKmrn/Foq2Ex5yrg8mXqoPKk6qEy5CphMyNqYTNi6iFzYiohs6Gp4fOhKeJz4Snic+Ep4nPhKeJ z4Snic+Ep4nPhKeJz4Snic+Ep4nPhKeJz4Snic+Ep4nPhKeJz4Snic+Ep4nP1ckJENjPCiva0wtO 2NALes3DFqizuka1qbRivaSxdMGhsH/Dnq6ExZmthMeUrITIkKuEyY6rhMqLqoXLiaqGy4eph8yF qYjMg6mJzIOpicyDqYnMg6mJzIOpicyDqYnMg6mJzIOpicyDqYnMg6mJzIOpicyDqYnMg6mJzIOp icyDqYnM0ssJD9TRCinV1QtM0NAKfri/Ja6ouE+4obRmvJ6ydb+dsX/Bm7CEw5auhMWRroTGjq2F x4ushceJrIbIh6yHyYarh8mEq4nJgquKyoKrisqCq4rKgquKyoKrisqCq4rKgquKyoKrisqCq4rK gquKyoKrisqCq4rKgquKyoKrisqCq4rKz8wJDdDSCijO1ApSxdEKg6rDLaiet1e4m7Vou5q0db6Z sn+/l7GEwZOwhcKPr4XDjK+FxIquhsWIrofFhq6IxoStiMaDrYrGga2Lx4Gti8eBrYvHga2Lx4Gt i8eBrYvHga2Lx4Gti8eBrYvHga2Lx4Gti8eBrYvHga2Lx4Gti8eBrYvHzM0JDMvTCi3H1ApZstgL gJ7NK5qYwVCrlrhnt5W1dbyUtH6+lLOFv5CyhcCMsYbBirGHwoiwh8KGsIjChbCJw4OwisOCr4vD ga+Mw4GvjMOBr4zDga+Mw4GvjMOBr4zDga+Mw4GvjMOBr4zDga+Mw4GvjMOBr4zDga+Mw4GvjMOB r4zDx88IEMXUCTS42QpboucSdpfaJYmQz0WYjsddo43BbquNvXmxjLqBtIm4g7eGt4W5hLaGuoO1 h7uCtYi8gbSJvYC0ir1/tIu+frOMvn6zjL5+s4y+frOMvn6zjL5+s4y+frOMvn6zjL5+s4y+frOM vn6zjL5+s4y+frOMvn6zjL5+s4y+wtEHFr3WCDqn8Q5Vm/EbaJHmLXiJ3UCFhdVWj4PPZ5eCy3Od fsh4oXvGfKR5xH+md8OCqHXChKl0woWqc8GHq3LBiKtywIqsccCLrHHAi6xxwIusccCLrHHAi6xx wIusccCLrHHAi6xxwIusccCLrHHAi6xxwIusccCLrHHAi6xxwIus/7gUDv+4Hif/tCpG9682ad6n Qo/Hm2KxxJtytsKbf7nAm4i9vpmJwLyVisO6kYvGuI2NyLeKj8q2iJHMtYWTzbSDls+zgZnQs4Cd 0bJ/o9GwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTR /7gUDv+4Hif/tCpG9682ad6nQo/Hm2KxxJtytsKbf7nAm4i9vpmJwLyVisO6kYvGuI2NyLeKj8q2 iJHMtYWTzbSDls+zgZnQs4Cd0bJ/o9GwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+ pNGwfqTRsH6k0bB+pNGwfqTR/7gUDv+4Hif/tCpG9682ad6nQo/Hm2KxxJtytsKbf7nAm4i9vpmJ wLyVisO6kYvGuI2NyLeKj8q2iJHMtYWTzbSDls+zgZnQs4Cd0bJ/o9GwfqTRsH6k0bB+pNGwfqTR sH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTR/7gUDv+4Hif/tCpG9682ad6nQo/H m2KxxJtytsKbf7nAm4i9vpmJwLyVisO6kYvGuI2NyLeKj8q2iJHMtYWTzbSDls+zgZnQs4Cd0bJ/ o9GwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTR/7gU Dv+4Hif/tCpG9682ad6nQo/Hm2KxxJtytsKbf7nAm4i9vpmJwLyVisO6kYvGuI2NyLeKj8q2iJHM tYWTzbSDls+zgZnQs4Cd0bJ/o9GwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGw fqTRsH6k0bB+pNGwfqTR/7gUDv+4Hif/tCpG9682ad6nQo/Hm2KxxJtytsKbf7nAm4i9vpmJwLyV isO6kYvGuI2NyLeKj8q2iJHMtYWTzbSDls+zgZnQs4Cd0bJ/o9GwfqTRsH6k0bB+pNGwfqTRsH6k 0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTR/7gUDv+4Hif/tCpG9682ad6nQo/Hm2Kx xJtytsKbf7nAm4i9vpmJwLyVisO6kYvGuI2NyLeKj8q2iJHMtYWTzbSDls+zgZnQs4Cd0bJ/o9Gw fqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTR/7gUDv+4 Hif/tCpG9682ad6nQo/Hm2KxxJtytsKbf7nAm4i9vpmJwLyVisO6kYvGuI2NyLeKj8q2iJHMtYWT zbSDls+zgZnQs4Cd0bJ/o9GwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTR sH6k0bB+pNGwfqTR/7gUDv+4Hif/tCpG9682ad6nQo/Hm2KxxJtytsKbf7nAm4i9vpmJwLyVisO6 kYvGuI2NyLeKj8q2iJHMtYWTzbSDls+zgZnQs4Cd0bJ/o9GwfqTRsH6k0bB+pNGwfqTRsH6k0bB+ pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTR/7gUDv+4Hif/tCpG9682ad6nQo/Hm2KxxJty tsKbf7nAm4i9vpmJwLyVisO6kYvGuI2NyLeKj8q2iJHMtYWTzbSDls+zgZnQs4Cd0bJ/o9GwfqTR sH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTR/7gUDv+4HSf/ tSlG97A1ad6oQZDHnGGxxJxxtsKbfrm/nYa9vZqJwbuXicS5k4rHt4+MyrWMjsy0iZDOs4eS0LKE ldKxgpnTsYGe1K6AotSsgKPSrICj0qyAo9KsgKPSrICj0qyAo9KsgKPSrICj0qyAo9KsgKPSrICj 0qyAo9KsgKPS/7kTDv+5HCf/tihG97A0at2oQJDHnWCxxJxxtsKcfLq/noW+vJyIwrqZiMW4lYnJ tpGKzLSOjM+yi47RsYiR07CGlNWvhJnWr4Of16qCodWngqLTp4Ki06eCotOngqLTp4Ki06eCotOn gqLTp4Ki06eCotOngqLTp4Ki06eCotOngqLT/7kTDv+5HCf/tihG97Ezat2pP5HHnWCxxJ1wtsKe e7q/n4O+vJ6IwrmbiMe3l4jKtZSJzrOQi9GxjY3Tr4qQ1q6Ik9ithpnZqoWe2aWEodWkhKLUpISi 1KSEotSkhKLUpISi1KSEotSkhKLUpISi1KSEotSkhKLUpISi1KSEotSkhKLU/7oSDv+6Gyf/tydG 97Eyat2pPpHHnl+xxJ1vtsGfebq+oIK/u6CIw7ich8i2mYjMs5aI0LGSitOvj4zWroyO2KyKk9ur iZncpoed2qKGoNaghqLUoIai1KCGotSghqLUoIai1KCGotSghqLUoIai1KCGotSghqLUoIai1KCG otSghqLU/7oSDv+6Gyb/tyZG9rIxat2qPZHHnl6xxJ1vtsGgeLq+oYG/u6GIxLieh8m1m4fNspiI 0bCVidWukovYrI+N26qNkt6ojJrfooqd2p6JoNaciaHUnImh1JyJodSciaHUnImh1JyJodSciaHU nImh1JyJodSciaHUnImh1JyJodSciaHU/roRDv+7Gib/uCZG9rIwat2qPJHHnl2xxJ5utsGhdrq+ on+/u6OIxLegh8q0nYfPsZqH066YiNeslYrbqpON3qiRkuKkkJngno2d25qMoNeZi6HVmYuh1ZmL odWZi6HVmYuh1ZmLodWZi6HVmYuh1ZmLodWZi6HVmYuh1ZmLodWZi6HV/rsRDv67Gib/uCVG9rMw atyrO5LHn12xxJ9stsGidLq+pH6/uqSHxbeih8qzn4fQsJyH1a2aiNmqmYreqJiO4qWXk+aflZng mpGc25ePn9eWjqHVlo6h1ZaOodWWjqHVlo6h1ZaOodWWjqHVlo6h1ZaOodWWjqHVlo6h1ZaOodWW jqHV/bsRDv67Gib/uSVG9rMvatyrOpLHn1yxxKBqtsGjc7q+pXzAuqWFxbajh8uzoYfRr5+H1qye iduonIvfpJqN4Z+Zj+Ocmpjhl5ac3JSTn9iTkqDWk5Kg1pOSoNaTkqDWk5Kg1pOSoNaTkqDWk5Kg 1pOSoNaTkqDWk5Kg1pOSoNaTkqDW/bsRDf28GSb+uSRG9rQuatyrOpLHoFyxxKFotsGlcbq+p3rA uqeExbamh8yypIfRrqKH16mfiNuknYneoJuK4JqajOGWm5PhlZub3ZKXntiRlaDXkZWg15GVoNeR laDXkZWg15GVoNeRlaDXkZWg15GVoNeRlaDXkZWg15GVoNeRlaDX/LwQDf28GSb+uiNG9rQtatys OZLHoFuxxKNmtcGmbrq+qXjAuqmCxbaoiMywpYfSqqKH16afh9qhnofcm52I3pacit+Rm5DfkZ2Z 3Y+bntmPmZ/Xj5mf14+Zn9ePmZ/Xj5mf14+Zn9ePmZ/Xj5mf14+Zn9ePmZ/Xj5mf14+Zn9ePmZ/X /LwQDfy8GCb9uiJF9rUsatytN5PHoVqxxaVjtcKpa7q+rHW/uq1/xbOph8ytpYbSp6KG1qKhhtid n4bamJ6H25Kdid2OnY3djJ6U3I2gntmMnp/XjJ6f14yen9eMnp/XjJ6f14yen9eMnp/XjJ6f14ye n9eMnp/XjJ6f14yen9eMnp/X+70QDfu9FyX9uyJF9rYratutNpPHolmxxadftcKtZrm/sXC+t61+ xrCph82qpobRpKSF1J6ihdaZoYXYlKCG2Y+fh9qLn4vbiJ+Q24igmNiIoZ3XiKGd14ihndeIoZ3X iKGd14ihndeIoZ3XiKGd14ihndeIoZ3XiKGd14ihndeIoZ3X+r0ODfq+FiX8vCBF9rcqatuvNJTI pFWxxqtYtMOzX7e7sm6/sq1+x6yphsymp4XQoKWE0pukhNSWo4TVkaKF1o2hhteJoYnYhqGN2ISh k9eEopfWhKKX1oSil9aEopfWhKKX1oSil9aEopfWhKKX1oSil9aEopfWhKKX1oSil9aEopfW+b4O DPm/FSX6vR9F9rgnatuwMZTIqE2vx7JOssG4WLi0sXDBra1/x6mqhcuiqITOnaeD0Jemg9GSpYTS jqSF04ujhtSIo4jVhKOL1YKjkNWBo5PVgaOT1YGjk9WBo5PVgaOT1YGjk9WBo5PVgaOT1YGjk9WB o5PVgaOT1YGjk9WBo5PV9MANDPfAEyT5vx1E9rolatqyLpXKr0CtyL09r7e2XbqusXLCqa1/xqWr hcmfqoPLmamDzZSog86Qp4TPjKaF0ImmhtGGpYfShKWK0oGljdKApY/SgKWP0oClj9KApY/SgKWP 0oClj9KApY/SgKWP0oClj9KApY/SgKWP0oClj9KApY/S7MELDPXCEiT2wRpE970hatq0KZbNvCip u7tDs661YbyosXPBpa5/xaGthMebrIPJlquDypGqhMuOqYTMi6mFzYiohs6GqIfOg6iJzoGnjM+A p43PgKeNz4Cnjc+Ap43PgKeNz4Cnjc+Ap43PgKeNz4Cnjc+Ap43PgKeNz4Cnjc+Ap43P38QJC/LF ECPzxBZD9MEcad7CFY/BwCOsr7lMtqa0Zb2isnXAoLCAw52uhMWXrYTGk62Ex4+shMiMq4XJiauG yoerhsqFqojKg6qJy4Gqi8uAqozLgKqMy4CqjMuAqozLgKqMy4CqjMuAqozLgKqMy4CqjMuAqozL gKqMy4CqjMuAqozL2sUICuvJDSLuyBJC78YVaNDSCoexvi+upbhUuJ+1aLyds3a/m7F/wZmwhMKU r4TDkK+FxI2uhcWKrobGiK2Gxoeth8aFrYjHg62Jx4Gti8eArIvHgKyLx4Csi8eArIvHgKyLx4Cs i8eArIvHgKyLx4Csi8eArIvHgKyLx4Csi8eArIvH1cYICdnMCiDlzw1A2NULX73WC4ilxDSmnLda uJm1a7uXtHe9lrN/vpWyhcCRsYXBjrGFwYuwhsKJsIfCiLCHw4awiMOFr4nDg6+KxIKvi8SBr4vE ga+LxIGvi8SBr4vEga+LxIGvi8SBr4vEga+LxIGvi8SBr4vEga+LxIGvi8SBr4vE0sgIB9PPCh3V 1As9wtkLY6veEIObzjOZlMRTppG+Z6+QunS0kLd9uZG1hLyOs4a+jLKGv4qyh8CIsojAhrGIwYWx icGEsYrBgrGLwYGxjMKAsYzCgLGMwoCxjMKAsYzCgLGMwoCxjMKAsYzCgLGMwoCxjMKAsYzCgLGM woCxjMKAsYzCzsoIBs7RChzG1wpBr+oOYZ3mHHiQ2jKIi9JMlInLX5yIxm6jiMN4qIXAfKuDv3+u gL2BsH+8g7F9vISyfLuGs3u7h7R6uoi0ebqJtXi5i7V4uYy2eLmMtni5jLZ4uYy2eLmMtni5jLZ4 uYy2eLmMtni5jLZ4uYy2eLmMtni5jLZ4uYy2ycsIBsjSCSKz3wlCoPwVWpPwKGqL5jl3hN9JgoHY W4uA02mRfNBxlnnNdpp2y3qddMp9nnLJf6BxyIGhcMeDom/HhaNuxoajbcaIpGzFiqVsxYulbMWL pWzFi6VsxYulbMWLpWzFi6VsxYulbMWLpWzFi6VsxYulbMWLpWzFi6VsxYulxM4HCrfZByaj+w49 lv8eTo36L1uG8j9ngOtOcXvlW3l24GWAcd1shG7acohr2XeLadd6jWfWfo5m1YCPZdSCkGTUhJFj 04aRYtOJkmHSi5Nh0oyTYdKMk2HSjJNh0oyTYdKMk2HSjJNh0oyTYdKMk2HSjJNh0oyTYdKMk2HS jJNh0oyT/7EYCf+xIx7/rjE6/6k+We2iS3nZmlyXyJVysMWVfbXDl4W4wZeLu7+TjL2+j47AvIyP wruJksS6hpTFuYOWxrmBmce4gJvIuH6eybd9osq3fKfKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nK tHupyrR7qcq0e6nKtHupyrR7qcq0e6nK/7EYCf+xIx7/rjE6/6k+We2iS3nZmlyXyJVysMWVfbXD l4W4wZeLu7+TjL2+j47AvIyPwruJksS6hpTFuYOWxrmBmce4gJvIuH6eybd9osq3fKfKtHupyrR7 qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nK/7EYCf+xIx7/rjE6/6k+ We2iS3nZmlyXyJVysMWVfbXDl4W4wZeLu7+TjL2+j47AvIyPwruJksS6hpTFuYOWxrmBmce4gJvI uH6eybd9osq3fKfKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0 e6nK/7EYCf+xIx7/rjE6/6k+We2iS3nZmlyXyJVysMWVfbXDl4W4wZeLu7+TjL2+j47AvIyPwruJ ksS6hpTFuYOWxrmBmce4gJvIuH6eybd9osq3fKfKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHup yrR7qcq0e6nKtHupyrR7qcq0e6nK/7EYCf+xIx7/rjE6/6k+We2iS3nZmlyXyJVysMWVfbXDl4W4 wZeLu7+TjL2+j47AvIyPwruJksS6hpTFuYOWxrmBmce4gJvIuH6eybd9osq3fKfKtHupyrR7qcq0 e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nK/7EYCf+xIx7/rjE6/6k+We2i S3nZmlyXyJVysMWVfbXDl4W4wZeLu7+TjL2+j47AvIyPwruJksS6hpTFuYOWxrmBmce4gJvIuH6e ybd9osq3fKfKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nK /7EYCf+xIx7/rjE6/6k+We2iS3nZmlyXyJVysMWVfbXDl4W4wZeLu7+TjL2+j47AvIyPwruJksS6 hpTFuYOWxrmBmce4gJvIuH6eybd9osq3fKfKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7 qcq0e6nKtHupyrR7qcq0e6nK/7EYCf+xIx7/rjE6/6k+We2iS3nZmlyXyJVysMWVfbXDl4W4wZeL u7+TjL2+j47AvIyPwruJksS6hpTFuYOWxrmBmce4gJvIuH6eybd9osq3fKfKtHupyrR7qcq0e6nK tHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nK/7EXCf+yIh7/rjA6/6k9WeyjSnnY m1uYx5VyscWXe7XDmIO4wZmKu7+Vi769kYzBu46Ow7qKkMW5h5LHuISVybeCmMq2gJvLtn6ezLV9 o8yzfKfNr3yoy698qMuvfKjLr3yoy698qMuvfKjLr3yoy698qMuvfKjLr3yoy698qMuvfKjL/7IX Cf+yIR7/ry86/6o8WeykSXrYm1qZxpZxssSYeLXCmYG5wJuIvL6Xir+8lIvCupCNxbmMjse3iJHJ toWUy7WDl820gZrOtH+fz7N+pM+ufabOq32ozKt9qMyrfajMq32ozKt9qMyrfajMq32ozKt9qMyr fajMq32ozKt9qMyrfajM/7IWCf+zIR7/sC46/6s7WeykSHrXnFmaxpdvssSZdrbCm3+5wJyHvb2a icC7lorDuZKLxreOjcm2io/MtIeSzrOEltCygZrRsoCf0q5/o9Kqf6XPpn+nzaZ/p82mf6fNpn+n zaZ/p82mf6fNpn+nzaZ/p82mf6fNpn+nzaZ/p82mf6fN/7MWCf+zIB7/sC06/6s6WeylR3rWnFma xphtssSadLbCnH25v52Fvb2ciMG7mInFuJSKyLaQi8u0jI7Os4iR0bGFldOwg5rUsIKg1aqBotOm gaXQo4GnzaOBp82jgafNo4GnzaOBp82jgafNo4GnzaOBp82jgafNo4GnzaOBp82jgafN/7MVCP+0 IB7/sS06/6w5WeulRnvWnFibxplrssSccrbCnXu5v5+DvryeiMK6mojGt5aJyrWSis2zjozQsYqP 06+HlNauhZrYq4Of16aDotSig6TQn4OmzZ+Dps2fg6bNn4OmzZ+Dps2fg6bNn4OmzZ+Dps2fg6bN n4OmzZ+Dps2fg6bN/7QVCP+0Hx7/sSw6/6w5WeumRXvVnVibx5ppssSdcLbCn3m6v6CCvryfiMK5 nIjHtpiIy7SUic+xkIvTr4yO1q2Jk9msh5vbpoae2aKFodWehaTRnIWmzpyFps6chabOnIWmzpyF ps6chabOnIWmzpyFps6chabOnIWmzpyFps6chabO/7QUCP+0Hx3/sSw6/604WeumRXvVnVecx5tn ssSebrbCoHe6v6GAvruhiMO4nofItZqHzbKXiNGwk4rVrY+N2auMk92oipveooie2Z6IodWbh6TR mYemzpmHps6Zh6bOmYemzpmHps6Zh6bOmYemzpmHps6Zh6bOmYemzpmHps6Zh6bO/7QUCP+1Hh3/ sis6/604WuumRHvVnVecx5xlssSfbLXCoXW6vqJ+v7ujh8S4oIfJtJ2HzrGZiNOulonYq5OM3KiQ kuGjjprfnoye2pqLodWXiqTRlommzpaJps6WiabOlommzpaJps6WiabOlommzpaJps6WiabOlomm zpaJps6WiabO/7QUCP+1Hh3/sio6/603WuunQ3zVnlWdx51jssSgarXCo3O6vqR8v7ukhcS3oofK s5+H0LCdh9WsmonbqZiM4KWXk+aelJrfmZGd2paPoNaUjaPSk4ylz5OMpc+TjKXPk4ylz5OMpc+T jKXPk4ylz5OMpc+TjKXPk4ylz5OMpc+TjKXP/7UTCP+1Hh3/syo6/642WuunQ3zVn1Odx55gssWi aLXCpXC6vqZ6v7umg8W3pYfLs6KH0a+gh9eqnoncpJuL4J2ZjuOam5nglZac25OToNeRkaPTkI+l z5CPpc+Qj6XPkI+lz5CPpc+Qj6XPkI+lz5CPpc+Qj6XPkI+lz5CPpc+Qj6XP/7UTCP+2HR3/syk6 /642WuuoQnzVoFGdx59escWkZLXCp225vql3v7upgcS2qIjLsaWH0auih9eln4jbnp2I3Zebi+CS m5Pfkpyc3I+Yn9eOlaLTjZOk0I2TpNCNk6TQjZOk0I2TpNCNk6TQjZOk0I2TpNCNk6TQjZOk0I2T pNCNk6TQ/7UTCP+2HR3/tCk6/681WuqoQXzVok6cx6FascWmYLTCqmm5v61zvruufcS0qofLraWG 0aeihtWgoIbYmZ+G25Kdid2NnY7djJ6Y24yen9iLmqLUipek0YqXpNGKl6TRipek0YqXpNGKl6TR ipek0YqXpNGKl6TRipek0YqXpNGKl6TR/7YSCP+3HB3/tCg5/7A0WuqpQH3VpEmcyKRVsMaqW7PD r2O3wLNsvbaufMWwqYfMqaaG0KOkhdScooTWlaGF2I+fh9qKn4vbh5+S2oihnNeIn6HUh5yk0Yec pNGHnKTRh5yk0YecpNGHnKTRh5yk0YecpNGHnKTRh5yk0YecpNGHnKTR/7YSCP+3Gx3/tSc5/7Az WuqqPn3WqESbyahPr8ewU7LFuFm1ubNtv7GtfcasqobLpaeFz5+mhNGYpITT/+LwAElDQ19QUk9G SUxFAAUKkqOE1YyihteIoYrXhaGO14OiltaEpJ/UhKKj0YSio9GEoqPRhKKj0YSio9GEoqPRhKKj 0YSio9GEoqPRhKKj0YSio9GEoqPR/7cRB/+4Ghz/tiU5/7ExWuqrPH7XrDuZyq1Ercm5Ra69uFm4 srJvwKyufsaoq4XKoamEzZung8+VpoPQj6WE0oqkhtOGo4jUg6OM1IGjkdSApJnTgKah0YCmodGA pqHRgKah0YCmodGApqHRgKah0YCmodGApqHRgKah0YCmodGApqHR/7gQB/+5GRz/tyQ5/7MvWumt OX7ZtC+WzLgyqcK9QLCztl26rLFxwaeufsWkrIXInauDypepg8ySqITOjaeEz4mnhtCFpojQgqaL 0YCmjtF+ppTQfaeaz32nms99p5rPfaeaz32nms99p5rPfaeaz32nms99p5rPfaeaz32nms99p5rP /7kPB/+6Fxz/uSI5/7UtWuyzMHrdwB+QycMhqLW6SLSrtWK8prJzwKOvfsOgroTGmayDyJSrhMmP qoTKi6qFy4iphsyFqYjNgqiKzYCojc5+qJHNfKmWzXypls18qZbNfKmWzXypls18qZbNfKmWzXyp ls18qZbNfKmWzXypls18qZbN/LsOB/y8FRv+ux84/7cpWvC9JHTf0w6GucEqqqq5T7aktWW8oLJ0 v56xf8Kbr4TDlq6ExZGthMaNrYXHiqyGyIesh8mFq4jJgquKyoCrjMp+q4/KfKuSynyrksp8q5LK fKuSynyrksp8q5LKfKuSynyrksp8q5LKfKuSynyrksp8q5LK8b0MBvm+Ehr6vhs3/LolWufOE2jI 2QuJrcMyp6G4VridtWi7m7N1vpmyf8CYsYTBk7CFwo+vhcOMr4bEia6GxYauh8WErojGg62KxoGt i8Z/rY7Hfa2Qx32tkMd9rZDHfa2Qx32tkMd9rZDHfa2Qx32tkMd9rZDHfa2Qx32tkMd9rZDH38AI BfXCDxn2whY27sgVUM3cDGa12g+Iosk2oJq+VrCXt2q5lbV2vJS0fr6Us4S/kLKFwI2xhsGKsYbB iLGHwoawiMKEsInCg7CKw4Gwi8OAr43Dfq+Pw36vj8N+r4/Dfq+Pw36vj8N+r4/Dfq+Pw36vj8N+ r4/Dfq+Pw36vj8N+r4/D2cIHBeTHCxjvyBA00doLRbrpDmim3hiCmNE3lZHIU6GPwmWpjr5yro28 e7KMuoG1ibiCt4e4hLiFt4W5g7aGuoK2h7qBtYi7gLWJu361irx9tIy8fLSNvXy0jb18tI29fLSN vXy0jb18tI29fLSNvXy0jb18tI29fLSNvXy0jb18tI291MQHBNbLCRXT1AsnveIMSan0FGWZ5iV4 jtw5hojUT5CGz2CXhMxtnIPJdaB/x3iifcZ7pHrFfaZ5xICnd8OBqHbCg6l1woSqdMGGq3PBh6ty wImscb+LrXG/i61xv4utcb+LrXG/i61xv4utcb+LrXG/i61xv4utcb+LrXG/i61xv4utz8YHAtDN CRLA2QksrPcPSJv6HlyP7zFrhudCdoDiUH5+3V+Fe9lpinfVbo9003OScdF3lHDQepZuz32Xbc5/ mWzNgZlrzYOaasyFm2nMh5xoy4mdZ8qMnWfKjJ1nyoydZ8qMnWfKjJ1nyoydZ8qMnWfKjJ1nyoyd Z8qMnWfKjJ1nyoydysgIAcLSBxOu5gktnf8VQZH/KFCH+jlcgfNIZnztVG536F51ceRlem3ha35q 33CBaN51hGbceIVl23uHY9p+iGLagYlh2YOKYNmFimDYh4te2IqMXtaNjV7WjY1e1o2NXtaNjV7W jY1e1o2NXtaNjV7WjY1e1o2NXtaNjV7WjY1e1o2NxMoHA7HaBBWf/w0okv8dN4n/LkOC/z1OfP1L V3f4Vl9v811laPBiamTtaW5h629xX+lzc13od3Vc53t2W+Z+d1rmgHhZ5YN5WOWFeljkiHpX5It7 VuOOfFbjjnxW4458VuOOfFbjjnxW4458VuOOfFbjjnxW4458VuOOfFbjjnxW4458/6ocBf+qJxf/ pzYv/6JESvqdUmXql19+3JNuk8+SeKXGkoK0xJKJtsORjrjBjpC6wIqSvL+HlL2+hJa/voKZwL2A m8G9fp7BvH2hwrx7pMK8eqjDvHmtw7h5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmv wrh5r8K4ea/C/6ocBf+qJxf/pzYv/6JESvqdUmXql19+3JNuk8+SeKXGkoK0xJKJtsORjrjBjpC6 wIqSvL+HlL2+hJa/voKZwL2Am8G9fp7BvH2hwrx7pMK8eqjDvHmtw7h5r8K4ea/CuHmvwrh5r8K4 ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/C/6ocBf+qJxf/pzYv/6JESvqdUmXql19+3JNuk8+S eKXGkoK0xJKJtsORjrjBjpC6wIqSvL+HlL2+hJa/voKZwL2Am8G9fp7BvH2hwrx7pMK8eqjDvHmt w7h5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/C/6ocBf+qJxf/pzYv /6JESvqdUmXql19+3JNuk8+SeKXGkoK0xJKJtsORjrjBjpC6wIqSvL+HlL2+hJa/voKZwL2Am8G9 fp7BvH2hwrx7pMK8eqjDvHmtw7h5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5 r8K4ea/C/6ocBf+qJxf/pzYv/6JESvqdUmXql19+3JNuk8+SeKXGkoK0xJKJtsORjrjBjpC6wIqS vL+HlL2+hJa/voKZwL2Am8G9fp7BvH2hwrx7pMK8eqjDvHmtw7h5r8K4ea/CuHmvwrh5r8K4ea/C uHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/C/6ocBf+qJxf/pzYv/6JESvqdUmXql19+3JNuk8+SeKXG koK0xJKJtsORjrjBjpC6wIqSvL+HlL2+hJa/voKZwL2Am8G9fp7BvH2hwrx7pMK8eqjDvHmtw7h5 r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/C/6obBf+qJxf/pzUv/6NE SvqdUWXpl15+25RtlM+Sd6bFkoG0xJOItsOSjbjBj4+6wIuRvL+Ik76+hZa/vYKYwbyAm8K8fp7C vH2hw7t7pMS7eqnEunmtxLV5rsO1ea7DtXmuw7V5rsO1ea7DtXmuw7V5rsO1ea7DtXmuw7V5rsO1 ea7D/6sbBf+rJhf/qDQv/6RDSvmeUGXpmF1/2pVplc2UdKjFlH60xJWGtsKVjLnBkY67v42Qvb6J kr+9hpTBvIOXw7uBmsS6fp3Fun2hxrp7pca5eqrGtXqsxrF6rcSxeq3EsXqtxLF6rcSxeq3EsXqt xLF6rcSxeq3EsXqtxLF6rcSxeq3E/6saBf+rJRf/qTQv/6RCSvmfT2bomVyA2pZmlsyVcanFlXy0 xJaDt8KXi7rAk4y8vo+Ov72LkMG8h5PDuoSWxbmBmca5f53HuH2hyLh8psm1eqrJsHurx6x7rcWs e63FrHutxax7rcWse63FrHutxax7rcWse63FrHutxax7rcWse63F/6wZBf+sJBb/qTMv/6VBSvmf T2bomVuB2ZhjlsyWb6rFlnm0w5eBt8GYibq/lYu9vpGNwLyNj8K6iJLFuYWVx7iCmMm3f53Ktn2i y7Z8qMuwe6nKrHyqyKh9rMWofazFqH2sxah9rMWofazFqH2sxah9rMWofazFqH2sxah9rMWofazF /6wZBf+sJBb/qjIv/6VBS/mgTmfnmlmB2Zlhl8uXbavFl3e0w5l/t8Gah7u/l4q+vZOMwbuOjsS5 ipDHuIaTybaCmMu1f53NtH6jzrF8ps6sfajLqH2qyaV+rMalfqzGpX6sxqV+rMalfqzGpX6sxqV+ rMalfqzGpX6sxqV+rMalfqzG/6wZBf+tIxb/qjIv/6ZAS/igTWfnnFeB2Zpel8uYaqzFmXS0w5p9 t8Gbhbu+mYm/vJWKwrqQjMW4jI/ItoeSy7SDl86zgJ3Qsn+k0ax+pc+ofqfMpH+pyaGArMahgKzG oYCsxqGArMahgKzGoYCsxqGArMahgKzGoYCsxqGArMahgKzG/60YBf+tIxb/qzEv/6Y/S/igTWfn nVWB2Zxcl8qZaKzFmnK0w5x6uMCcg7u+nIm/u5eJw7mTi8e3jo3LtImQzrKEltGxgZ3TrICi06eA pdCkgKfNoIGpyp6Bq8aegavGnoGrxp6Bq8aegavGnoGrxp6Bq8aegavGnoGrxp6Bq8aegavG/60Y Bf+tIhb/qzEv/6c/S/ihTGfnnlOB2Z1Zl8qbZazFnG+0w514uMCegby9nojAu5qIxLiVicm1kIvN souP0bCGldWuhJ7Xp4Kh1KOCpNGfgqfNnIOpypqDq8eag6vHmoOrx5qDq8eag6vHmoOrx5qDq8ea g6vHmoOrx5qDq8eag6vH/60XBf+uIhb/qzAv/6c+S/ihS2jnn1GB2Z9Wl8qcYqzFnWy0w591uMCg fry9oIfBup2IxreYiMuzk4nPsI6N1K2JlNmohp3aooWh1Z6FpNGbhabOmYWpypeFq8eXhavHl4Wr x5eFq8eXhavHl4Wrx5eFq8eXhavHl4Wrx5eFq8eXhavH/64XBP+uIhb/rDAv/6c+S/iiS2jooU+B 2aBTl8qeX6zGn2m0w6FyuMCifLy9ooTBuaCHx7Wch82yl4jSrpOL2KqOk9+ii5zcnImg1pmIo9KX iKbOlYipypSIq8eUiKvHlIirx5SIq8eUiKvHlIirx5SIq8eUiKvHlIirx5SIq8eUiKvH/64XBP+u IRb/rC8v/6g9S/iiSmjook2A2aJQl8ugXKzGoWWzw6Rut8CleLy8pYLCuKSHyLSgh86wnYjVq5mK 3aWXk+abkZvdlo+g15SNo9OSjKbPkYuoy5CKq8iQiqvIkIqryJCKq8iQiqvIkIqryJCKq8iQiqvI kIqryJCKq8iQiqvI/64WBP+vIRb/rS8v/6g8S/eiSWjopEqA2aRNlsuiWKvGpGGzxKdqt8CpdLy8 qX7CuKiHyLOmh8+soofXpJ2J3ZqajeGVmpvekZWf2I+TotOOkKXQjo+ozI2OqsmNjqrJjY6qyY2O qsmNjqrJjY6qyY2OqsmNjqrJjY6qyY2OqsmNjqrJ/68WBP+vIRb/rS4v/6k8S/ejSWnopkh/2qdI lcylU6rHqFyyxKxktsGubru9r3jAtqyEya6nh9Cmo4bVnaCG2ZOdid2NnZTdjZ2f2IuZodSLlqTQ ipOnzYqRqcmKkanJipGpyYqRqcmKkanJipGpyYqRqcmKkanJipGpyYqRqcmKkanJ/68VBP+wIBb/ ri4v/6k7S/ekR2npqER+26tDlM2pTKnIrVSwxrNcs8K3Zrm3sHfCsKuEyamnhs+hpITTl6KE1o6g h9mIn4/ah6Ga2IegodSHm6TRh5imzoeVqcqHlanKh5WpyoeVqcqHlanKh5WpyoeVqcqHlanKh5Wp yoeVqcqHlanK/7AVBP+wIBX/ri0v/6o6S/imRGjqq0B93K88ks+vQqbKtUmtxrxSsbm1Z7uwsHjD q6yEyaSphM2cpoPQk6SE04ujhtWFoozWgqKU1oOkndSDoqTRg56mzoSaqMuEmqjLhJqoy4SaqMuE mqjLhJqoy4SaqMuEmqjLhJqoy4SaqMuEmqjL/7AUBP+xHxX/rywu/6s5S/ipQGfrrzt73rYzj9K6 NKHMwjmqu7pVtbC0ar2qsHnDp62Ex5+qhMuYqIPNkKeE0ImlhtKEpIrTgKSQ03+ll9J/pqDQf6Wm zoCgqMuAoKjLgKCoy4CgqMuAoKjLgKCoy4CgqMuAoKjLgKCoy4CgqMuAoKjL/7ETBP+yHhX/sCsu /6w3TPqsO2XttTR44r8pidjMIJi+vz2usLhZuKmzbL6lsHrCoq6ExZusg8iUqoTKjqmEzIiohs6D p4nPgKeNz36nk898qJrOfKmizXynqMt8p6jLfKeoy3ynqMt8p6jLfKeoy3ynqMt8p6jLfKeoy3yn qMt8p6jL/7ISBP+zHRX/sSku/602TPyxNWLxvSpy5s0fgMjMIZuxvEWyqLdeuaOzb76gsXvBnq+E w5euhMaRrITHjKuFyYeqh8qDqonLgKqMzH2pkMx8qpXLeqqcynmrpMp5q6TKeaukynmrpMp5q6TK eaukynmrpMp5q6TKeaukynmrpMp5q6TK/7MRBP+0GxT/syYu/68zTP25K13ryh9p0t8Rf7nMJ5yn vUyxoLdiuZ20cb2bsny/mrGEwZSwhMOPr4XFiq6Gxoath8eDrInHgKyLyH6sjsh8rJLIe6yXyHmt nsd5rZ7Hea2ex3mtnsd5rZ7Hea2ex3mtnsd5rZ7Hea2ex3mtnsd5rZ7H/7UQA/+2GRT/tSQt/7Qs SfLFH1TW3RJiwd8TgazNLpqfwE+rmrhlt5e1cruWtHy9lbKDv5GxhcGNsYbCibCHw4aviMODr4nE ga+LxH+ujcV9rpDFe66UxXqvmcR6r5nEeq+ZxHqvmcR6r5nEeq+ZxHqvmcR6r5nEeq+ZxHqvmcR6 r5nE/7cOA/+4FhP/tyAt+b8fQdzZEUTE6xJmsd8YgaDQM5WXxlCjk8BjrZG7cbORuHu4kLaCu460 hb2Ls4a/iLKHwIayicCEsYrBgrGLwYCxjcF+sY/CfLGSwnuxlcF7sZXBe7GVwXuxlcF7sZXBe7GV wXuxlcF7sZXBe7GVwXuxlcF7sZXB9LoLA/27EhL+uxss5dAPMsjpD0q08hVnouIifZbWN42Pzk+Y jMhhoIrEbqaKwXiqh799rYS+gLCBvIKxf7uEs327hbR7uoe1ermJtXm5i7Z3uY22driPt3S4k7d0 uJO3dLiTt3S4k7d0uJO3dLiTt3S4k7d0uJO3dLiTt3S4k7d0uJO33L4GAvjADhHuyA4iy9sLLrb4 EUyl9R1jl+gsdY3fPYGH2FCLg9NgkoLPbJd/zXObfMt3nXnJeqB3yH2hdcd/o3PGgqRyxYSlcMWG pW/EiKZuxIqnbcONp2vDkKhrw5Coa8OQqGvDkKhrw5Coa8OQqGvDkKhrw5Coa8OQqGvDkKhrw5Co 18AGAdvGCA7L0woVuOgMMqb/FUqY+iZcjfA3aYXpRnR/5FN7fN9ggXjcaIV02m2JcNhxi27WdY1s 1XiPatR7kGnTfpFn04CSZtKDk2XShZRk0YeUY9CKlWLQjpZi0I6WYtCOlmLQjpZi0I6WYtCOlmLQ jpZi0I6WYtCOlmLQjpZi0I6W0cIGAc3LCQW62gcZqP4OMZn/HUOO/y9Rhfo/XH70TWR58Fhqc+xf b23qY3Np52l2Z+VueWXkcntj43Z9YuJ5fmDhfH9f4H6AXt+BgV3fg4Jc3oaDW92JhFrdjYVa3Y2F Wt2NhVrdjYVa3Y2FWt2NhVrdjYVa3Y2FWt2NhVrdjYVa3Y2Fy8QGALvRBgep5wYamv8TK47/JDmF /zZEfv9ETXn/UVVx+1dba/ddYGX0YmRi8mhnX/Btal3vcWxb7XVtWu14b1nse3BY635xV+qBclbq hHJV6YdzVOmKdFPojnVT6I51U+iOdVPojnVT6I51U+iOdVPojnVT6I51U+iOdVPojnVT6I51vMkF AKvbAQia/wsWj/8ZI4X/Ky1+/zk3eP9GQHD/Tkdp/1RNYv9aUl7+YVZa/GZZWPtrW1X5cF1U+HRe Uvd4X1H3e2BQ9n5hT/WBYk/1hGNO9IdkTfSLZUzzkGZM85BmTPOQZkzzkGZM85BmTPOQZkzzkGZM 85BmTPOQZkzzkGZM85Bm/6AYA/+iLBD/oDsl/5xJPP+XV1P4kmRn7JBseeKPdYnZjn6X0Y2HosyM jarHipGxxIiUtsOFlrjCg5m5woGbucF/nrrBfaG7wXuku8B6p7vAeaq8wHiuvMB3tLu8eLS7vHi0 u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7/6AYA/+iLBD/oDsl/5xJPP+XV1P4kmRn 7JBseeKPdYnZjn6X0Y2HosyMjarHipGxxIiUtsOFlrjCg5m5woGbucF/nrrBfaG7wXuku8B6p7vA eaq8wHiuvMB3tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7/6AYA/+i LBD/oDsl/5xJPP+XV1P4kmRn7JBseeKPdYnZjn6X0Y2HosyMjarHipGxxIiUtsOFlrjCg5m5woGb ucF/nrrBfaG7wXuku8B6p7vAeaq8wHiuvMB3tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7 vHi0u7x4tLu8eLS7/6AYA/+iLBD/oDsl/5xJPP+XV1P4kmRn7JBseeKPdYnZjn6X0Y2HosyMjarH ipGxxIiUtsOFlrjCg5m5woGbucF/nrrBfaG7wXuku8B6p7vAeaq8wHiuvMB3tLu8eLS7vHi0u7x4 tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7/6AYA/+iLBD/oDsl/5xJPP+XV1P4kmRn7JBs eeKPdYnZjn6X0Y2HosyMjarHipGxxIiUtsOFlrjCg5m5woGbucF/nrrBfaG7wXuku8B6p7vAeaq8 wHiuvMB3tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7/6EYA/+jKxD/ oDol/5xIPP+XVlP4k2No7JJpeuGRc4rYj3yY0I6EpMqOjK3GjZC0xIqTt8OGlbjChJi5wYGbusF/ nbvAfaC8wHukvMB6p73Aeay9wHiwvb14s7y4eLO8uHizvLh4s7y4eLO8uHizvLh4s7y4eLO8uHiz vLh4s7y4eLO8/6EYA/+jKhD/oTkl/51IPf+YVVT3lGFp65Rme+CSb4zWkXiazpCCpsiPibDEj4+2 w4uRt8KIlLnBhJe6wIKavMB/nb2/faC+v3ukvr56qL++eK2/vXixvrh4sr60ebO9tHmzvbR5s720 ebO9tHmzvbR5s720ebO9tHmzvbR5s720ebO9/6IYA/+kKRD/oTgl/51HPf+ZVVT3ll5p65Vje+CU bI3VknWczZF/qMeRh7LEkY62w42QuMGJk7rAhpa8v4KZvb9/nL6+faC/vXulwL15qsC9eLDAuHmw wLR5sb+verK9r3qyva96sr2verK9r3qyva96sr2verK9r3qyva96sr2verK9/6MYA/+kKRD/ojgl /55GPf+ZVFX3l1xp65dgfN+WaY3Vk3KdzJJ8qsWShbTEkoy2wo+PucGLkrvAh5W9voOYv72AnMC9 faDBvHulwrx5q8K5ea/CtHmvwbB6sMCse7K+rHuyvqx7sr6se7K+rHuyvqx7sr6se7K+rHuyvqx7 sr6se7K+/6MYAv+lKBD/ojcl/59GPf+aU1X3mVpp65lefN+XZY7UlW+dy5R5q8WTgrTElIq3wpGO ucCMkLy/iJO+vYSXwLyAm8K7faDDu3umxLp6rcW0eq7Er3qvwqx7sMCofLG/qHyxv6h8sb+ofLG/ qHyxv6h8sb+ofLG/qHyxv6h8sb+ofLG//6QYAv+lKBD/ozYl/59FPf+aU1X3mldp65tbfN+ZYo7U l2uey5V2rMWUgLTDlYi3wZONusCOj72+iZLAvIWVwruBmsS5faDGuXuox7R6q8eve63Fq3uuw6d8 r8GkfbG/pH2xv6R9sb+kfbG/pH2xv6R9sb+kfbG/pH2xv6R9sb+kfbG//6QYAv+mJxD/ozYl/6BE Pf+bUlb3nFVp65xYfN+bXo7UmWeeypdzrMWWfLTDl4W3wZaLu7+Rjb69i5DBu4aUxLmBmce3fqDJ tnypyq57qsiqfKzGpn2txKN+r8GgfrG/oH6xv6B+sb+gfrG/oH6xv6B+sb+gfrG/oH6xv6B+sb+g frG//6UYAv+mJg//pDUl/6BEPf+cUVb3nlNp655Ve9+eWo3Um2SeyplvrMWYebTDmYK4wZmKu76U jL+8jo7DuYiSx7eCmMu1fqHNr3ynzal9qcqlfqvHon+txJ9/r8KdgLG/nYCxv52Asb+dgLG/nYCx v52Asb+dgLG/nYCxv52Asb+dgLG//6YYAv+nJg//pDUl/6BDPv+dUFX3n1Fo66BTe+CgV43Unl+e yptrrMWbdbTDm364wJuHvL2XisC6kYzFt4qQyrSEl8+ygKPSqH+lz6OAqMuggKvHnYGtxZuBr8KZ grG/mYKxv5mCsb+ZgrG/mYKxv5mCsb+ZgrG/mYKxv5mCsb+ZgrG//6YYAv+nJQ//pTQl/6FDPv+e TlX4oU5o7KJQeuCjUozVoVudy55mrMadcbTDnnq4wJ6EvLybiMK5lYrHtY2NzrCGltSpgqDWoYKk 0J2CqMuag6rImYOtxZeEr8KWhLDAloSwwJaEsMCWhLDAloSwwJaEsMCWhLDAloSwwJaEsMCWhLDA /6YYAv+nJQ//pTQl/6FCPv+fTFX4okxn7KVNeeGmTovVpFaczKFhqsahbLPDona3wKKAvbygh8O3 mojKspOK0qyLlNugh5/Ymoak0ZeGp8yVhqrIlIesxZOHrsOSh7DAkoewwJKHsMCSh7DAkoewwJKH sMCSh7DAkoewwJKHsMCSh7DA/6cYAv+oJA//pjMl/6JCPv+gSlT5pEpm7adKeOKpS4rWqFGazaZb qcelZbLEp3C2wKd6vLymg8O2oofLr52I1qWXleaXj57ak42j0pGLp82Qi6rJkIqsxo+KrsOPibDB j4mwwY+JsMGPibDBj4mwwY+JsMGPibDBj4mwwY+JsMGPibDB/6cYAv+oJA//pjMl/6JBPv+iSFT5 pkdm7qpHd+OtR4jZrUuYz6xUpsisXq/Gr2izwrFzub6yfcCyqofLpaKG1ZSci96Pmp3ajZWi04yS ps6LkKnKi46rx4uNrcSMjK/BjIyvwYyMr8GMjK/BjIyvwYyMr8GMjK/BjIyvwYyMr8GMjK/B/6gY Av+pJA//pzIl/6NBPv+kRlP6qURk761DdeSxQoXbtESU0rVKocu3U6vKvl+tvbduuLKwfMKpqobL nKWE0o2gh9iGoJfZh56i04eYpc+HlajLh5OqyIiRrcWIkK/CiJCvwoiQr8KIkK/CiJCvwoiQr8KI kK/CiJCvwoiQr8KIkK/C/6gYAv+pIw//pzIl/6NAPv+mQ1L7q0Fj8LE/c+e3PYLevjuP1sQ/mszF Sqa8vF2ysbVvu6qwfcOjq4TJlqeDzoqkhtOBo5DVgaWf0oKhpc+CnKjMg5mqyYSWrMaFlK7DhZSu w4WUrsOFlK7DhZSuw4WUrsOFlK7DhZSuw4WUrsOFlK7D/6kYAv+qIw//qDEl/6Q/Pv+oQFH8rzxh 87Y5cOq/N33jyjWH1NE3lb7CS6mwuWC1qLRwvaOwfsKdrYTHkqqEy4inhs6Apo3QfaeY0H2opM5+ pKjLf5+qyYCbq8aBmK3EgZitxIGYrcSBmK3EgZitxIGYrcSBmK3EgZitxIGYrcSBmK3E/6oXAv+q Ig//qDAl/6U+Pv+rO0//tDdd9r0zauvKMXXc2imCxM44mbLBT6unuGO3obRzvJ6xf8GYr4TEj6yE yIeqh8qAqYzMfKmTzHqqnMt5q6bKeqeqyHyiq8d9nq3EfZ6txH2ercR9nq3EfZ6txH2ercR9nq3E fZ6txH2ercR9nq3E/6oWAv+rIQ7/qS4l/6c8Pv+wNkz8ujBZ78gsYt7ZJ23L3CaGtsw8m6jBVKuf uWa2m7V0vJmyf7+VsITCja+FxIath8aBrIvIfayQyHusmMh5rZ/Hd62nx3eqrMZ5pa3EeaWtxHml rcR5pa3EeaWtxHmlrcR5pa3EeaWtxHmlrcR5pa3E/6sVAv+sIA7/qy0k/6s2O/+2L0jzxChR4NYm VszkInG72iiIqsxBm5/DV6mZvGmylrd2uZS0gL2RsoXAi7GGwYawiMOBr4vEfq6PxXuulMV6r5rE eK+gxHWvp8R0ra7DdK2uw3StrsN0ra7DdK2uw3StrsN0ra7DdK2uw3StrsN0ra7D/6wUAv+tHw7/ rCsk/7AvN/q/JUHk0SBFzuQdW73pInSt2iyJn85FmZfGWqSTwGqtkbt2s5C4f7eNtoS7ibSGvYWy iL+CsYvBf7GOwXyxksJ6sZbBebGbwXiyocB0safBdLGnwXSxp8F0safBdLGnwXSxp8F0safBdLGn wXSxp8F0safB/64SAf+vHQ3/rigk/7gkMerLGjXQ4hdDv/AdXq/oJXWg2zGHltFIlJDKXJ6NxWql i8F2qom+fa+FvICygrqDtH65hrZ8uIm3ebeMuHe3j7l2tpO6dbaXunS2nbpzt6S5c7ekuXO3pLlz t6S5c7ekuXO3pLlzt6S5c7ekuXO3pLlzt6S5/7AQAf+xGg3/sSUj88QXJ9TfECvB7xdIsPcgYKHq K3OV3zmCjddMjYjRXZWGzGqbhMl0oIDGeaR9xH2mesKAqXfBg6p1wIasc7+KrXG/ja5vvpCvbr6U r2y+ma9rvqCva76gr2u+oK9rvqCva76gr2u+oK9rvqCva76gr2u+oK9rvqCv/7MOAf+0Fgz8vBca 1tYLFsPtEDCy/BlKovklXpbtM26M5UF6hd5Pg4HZXop/1WqPetJwk3bPdZdzznmZccx9m2/LgJ1t yoSea8mHn2nJiqBoyI6hZ8eSomXHlqJkx5yjZMeco2THnKNkx5yjZMeco2THnKNkx5yjZMeco2TH nKNkx5yj9LYKAf+4EgvVzAoLxNsKGbL8ETOj/x1IlvwsWIzzO2WE7ElvfudVdnrjYHx132eBcd1t hG3bcodq2XaJaNh6i2bXfY1k1oGOY9WEj2HUiJBg04uRX9OPkl7SlJJc0pmTXNKZk1zSmZNc0pmT XNKZk1zSmZNc0pmTXNKZk1zSmZNc0pmT3LsEANjDBwTE0QgHs+gKHKP/FDGW/yRDjP80UIT7Qlp9 9k9iePFaaHHuX21r62RxZ+lpdGTnbnZi5nN4YOV3eV/kentd4358XOKBfVvihX5a4Yh/WeCLgFfg kIBW35WBVt+VgVbflYFW35WBVt+VgVbflYFW35WBVt+VgVbflYFW35WB1L0FAMTIBwC02QUKo/4N HJb/GiyL/ys6g/86RHz/SE11/1JTbv1XWGf6XVxj92JfYPZnYl30a2Rb829lWfJzZ1fxd2hW8Xpp VfB9alTvgGtT74RrUu6HbFDui21P7ZBuT+2Qbk/tkG5P7ZBuT+2Qbk/tkG5P7ZBuT+2Qbk/tkG5P 7ZBuxsAFALTQBAGj4wIKlv8QGIv/ICSC/zAvev8/N3L/SD5q/05DZP9USF7/WUxb/19PWP9kUlX/ aVRT/21VUv5xV1D9dFhP/HhZTvt7Wk37f1tM+oNcS/mGXUn5i15I+JBfSPiQX0j4kF9I+JBfSPiQ X0j4kF9I+JBfSPiQX0j4kF9I+JBftccCAKTaAAGW/wYHiv8UEYH/JBp5/zMicP87Kmj/QjFh/0o2 XP9RO1f/Vz9T/11CUP9iRE7/Z0ZM/2xISv9wSUn/dEpI/3dLRv97TEX/f01E/4NOQ/+HTkL/i09B /5FQQf+RUEH/kVBB/5FQQf+RUEH/kVBB/5FQQf+RUEH/kVBB/5FQ/5ESAf+VJwv/lTsc/5NLL/+P WUP/jGRU+4xrY/KKcnHqiHx944aEh96Cio/af4+W1n2Um9N6mJ/ReJyi0HefpM51oqbNdKaozXKp qcxxrarMcLKry3C2q8tvvKvIcMCrxHHAqsRxwKrEccCqxHHAqsRxwKrEccCqxHHAqsRxwKrEccCq /5ESAf+VJwv/lTsc/5NLL/+PWUP/jGRU+4xrY/KKcnHqiHx944aEh96Cio/af4+W1n2Um9N6mJ/R eJyi0HefpM51oqbNdKaozXKpqcxxrarMcLKry3C2q8tvvKvIcMCrxHHAqsRxwKrEccCqxHHAqsRx wKrEccCqxHHAqsRxwKrEccCq/5ESAf+VJwv/lTsc/5NLL/+PWUP/jGRU+4xrY/KKcnHqiHx944aE h96Cio/af4+W1n2Um9N6mJ/ReJyi0HefpM51oqbNdKaozXKpqcxxrarMcLKry3C2q8tvvKvIcMCr xHHAqsRxwKrEccCqxHHAqsRxwKrEccCqxHHAqsRxwKrEccCq/5ESAf+VJwv/lTsc/5NLL/+PWUP/ jGRU+4xrY/KKcnHqiHx944aEh96Cio/af4+W1n2Um9N6mJ/ReJyi0HefpM51oqbNdKaozXKpqcxx rarMcLKry3C2q8tvvKvIcMCrxHHAqsRxwKrEccCqxHHAqsRxwKrEccCqxHHAqsRxwKrEccCq/5IS Af+WJwr/ljsc/5RLMP+QWUP/j2NU+o5pZPGNcHLpi3p+4omCidyFiZLYgo6Z1H+TntF9l6LPe5um zXmeqMx3oqrLdqWsynSprclzra7JcrKvyXG3r8hxvK/Cc72uvnS9r750va++dL2vvnS9r750va++ dL2vvnS9r750va++dL2v/5MSAf+XJwr/mDsc/5VLMP+RWUT/kWBV+pBmZPCPbXPojXeA4YyAi9uI h5TVhY2c0oKRoc9/lqbMfZmpy3udrMl5oa7Id6Wwx3apscZ1rbLGdLKzxnO5s8J1urO8dbqzuHa6 s7h2urO4drqzuHa6s7h2urO4drqzuHa6s7h2urO4drqz/5QRAf+YJwr/mTsc/5ZLMP+SWUT/kl5V +pJkZfCRanTnj3OB4I59jNmLhZbUiIue0IWQpM2ClKnKf5ityH2csMd7oLLGeaS0xXiotcR2rrbE dbS2wXa3trx3t7a3d7e2s3i3trN4t7azeLe2s3i3trN4t7azeLe2s3i3trN4t7azeLe2/5URAf+Z Jwr/mTsc/5dKMP+TWET/lFxV+pRhZfCTZ3TnkXCC3496jtiNg5jSi4qgzoePp8uEk6zIgZewxn+b s8R9n7XDe6S3wnmpucJ3r7nCdrW5vHi2uLh4trizeLa3sHm3t7B5t7ewebe3sHm3t7B5t7ewebe3 sHm3t7B5t7ewebe3/5YRAf+aJwr/mjsc/5dKMf+UVUT/lllV+pZeZfCVZHTnk2yC3pF2jtiPf5nR jYiizYqOqcmHkq7GhJazxIGatsJ+n7nCe6S6wXmqusF3sbq9eLW6t3i1ubN5tbmveba4rHq2t6x6 tresera3rHq2t6x6tresera3rHq2t6x6tresera3/5cRAf+bJgr/mzsc/5hJMf+WU0T/mFdV+phb ZfCXYXTnlmiC3pNyj9aRe5rQj4Sjy42Mq8eKkbHEhpW2w4OZuMF/nrrBe6S7wHmrvL93s7y4eLO7 snm0u655tbqrerW5qHu2uKh7trioe7a4qHu2uKh7trioe7a4qHu2uKh7trioe7a4/5cRAf+bJgr/ nDoc/5hJMf+YUUT/mlRU+ptYZPCaXXTnmGOC3pZtj9aTd5rQkYCkyo+JrMaNj7PDiZS3woSYusB/ nry/e6W+v3muvrl4sr6yebK9rXqzvKl7tLqme7W5pHy2uKR8trikfLa4pHy2uKR8trikfLa4pHy2 uKR8trikfLa4/5gRAf+cJgr/nDkc/5lIMf+ZT0T/nFJU+51VY/GdWnPnm1+B3plpj9aWcprPk3yl ypGFrcWQjbTDi5K4wYWWu7+Anb69e6XBu3mvwbJ6sMCse7G+qHuzvaV8tLuifbW5oH22uKB9trig fba4oH22uKB9trigfba4oH22uKB9trigfba4/5kRAf+dJgr/nTkc/5lHMf+bTUP/nk9T+59SY/Gg VnLon1uA351kjteabZrQl3ekypSBrcWSirXCjpC5v4eVvb2AnMG7e6fEs3qtxKt7r8KmfLG/o32y vaB+tLuef7W5nH+2uJx/tricf7a4nH+2uJx/tricf7a4nH+2uJx/tricf7a4/5kRAf+eJgr/nTgc /5pHMf+cS0L/oE1S/KJQYvKjU3Hpo1d/4KFejNieZ5jQm3Gjyph7rcWVhbTCko26voqSv7qBm8W3 fKnJq3yrx6R9rsOgfrDAnX+yvZuAs7uZgbW6mIG2uJiBtriYgba4mIG2uJiBtriYgba4mIG2uJiB triYgba4/5oRAf+eJgr/njgc/5pGMv+eSUL/okpR/aRNYPOmUG/qp1R94aZYitqkYpbSoWuhy511 q8aagLPCmIq6vI6PwraDmcusfabOon+qyZ2ArcSagbDAmIKyvpeDs7yVg7W6lIO2uJSDtriUg7a4 lIO2uJSDtriUg7a4lIO2uJSDtriUg7a4/5oRAf+fJgr/njcc/5tGMv+fR0H/pEhQ/qdKX/SpTG3r q1B746xUh9yrXJPUqWWdzqZvp8ijerDDn4S4u5aLxLCMmc6gg6TRmYSpypaFrcWUha/Bk4WxvpKF s7yRhbS6kYW1uZGFtbmRhbW5kYW1uZGFtbmRhbW5kYW1uZGFtbmRhbW5/5sRAf+fJgr/nzcc/5tF Mv+hRUD/pkZP/6pHXfatSWvtsEx45rNPg9+0VY7ZtV+X07VpoM61dqfBq3y2sJ+FxKGVks6UjqPS kIuoy4+KrMaOiq/Cjomxv46Jsr2OiLS7joi1uY6ItbmOiLW5joi1uY6ItbmOiLW5joi1uY6ItbmO iLW5/5sRAf+gJgr/nzYc/5xEMf+jQz//qENO/61EW/ixRWjwtkh06btMfuPAUYffxluO1shrlMa9 caa1s3i1paiBw5Sfjc2JnKLSh5SnzIiRq8eJj67DiY6wwImNsr6KjLO8iou0uoqLtLqKi7S6iou0 uoqLtLqKi7S6iou0uoqLtLqKi7S6/5wQAf+hJgr/oDYc/55CMf+lQD7/q0BM/7FAWfq3QWTzvURv 7sVJd+XOUnzd1mJ/zM5okrzFbqSru3a0mrF/wYqqist/p53PgJ+ozIKZq8eDla3EhJOvwYWRsb+G j7O9h460u4eOtLuHjrS7h460u4eOtLuHjrS7h460u4eOtLuHjrS7/50QAf+iJgr/oDUc/6A/MP+n PT3/rjxK/7U8Vfq9PWDwxkJn5tFKbN7eTnbN2leHvtBilq7FbqWhvHmylbSDvYatiMZ7qpTKeKuo yXuiq8d+nK3EgJmvwoGWsMCClLK+g5KzvIOSs7yDkrO8g5KzvIOSs7yDkrO8g5KzvIOSs7yDkrO8 /54QAf+iJgr/oTQc/6I8Lv+qOjv/sjhH/Ls3UfLFOljm0UFc295Cac3iRny+11GMrsxfm6HDbaiY vHmykbWEu4WxicJ8rpHFeK6fxXWtrMV4pa7EeqCvwnycsMB+mbG+f5ayvX+Wsr1/lrK9f5ayvX+W sr1/lrK9f5ayvX+Wsr1/lrK9/54QAf+jJQn/ojQc/6U5Lf+uNTj/uDNC9MMzSufQOE7Z3jlay+Y9 br7gQoCu1FCQoctfnZjDbaiRvXmxi7iDuIO0iL19sZDBebGawXWxpcFyr6/CdaivwXejsMB5n7G/ e5yyvXucsr17nLK9e5yyvXucsr17nLK9e5yyvXucsr17nLK9/6AQAf+kJAn/ozIc/6g0K/+zLzT5 vy086c0vQNneL0rK5zRfveo6c6/eQYOh01GRl8tgnZDEbqaMv3qthruBs3+4h7h6to27d7WVvHW1 n7xytKi9brOyvnGssr50p7K+dqOyvXajsr12o7K9dqOyvXajsr12o7K9dqOyvXajsr12o7K9/6EQ Af+lIwn/pDEc/60uJ/+5KS/uyCYz2twmN8rnLE+98jJjr+g5daHdQoSW1FOQj81imorHcKKGw3qo gL+ArXu9hbF2u4u0c7mStXG5mrZwuaO1bbmrtmq4tLhrsra4bqy2uG6strhurLa4bqy2uG6strhu rLa4bqy2uG6strhurLa4/6MQAf+nIgn/pS8b/7MnIvTCISbd2B0ky+cjPL3yKlOv8zJmoec7dpXe RoON1laNh9BkloTLcZx/yHihesV+pXbCg6lywYmrb7+PrWy/lq5rvp2uar+mrmi/rq5lvbiwZbm7 sGW5u7BlubuwZbm7sGW5u7BlubuwZbm7sGW5u7Blubuw/6UQAf+oIAj/rCYX/LsdGuPRExnM5Rkp vfIiQa/9KlWh8zRmluk/dIzhS3+F21mIgNVmj3zRb5R3znaZc8t8nHDJgZ9tyIehaseMo2jGkqRm xZmlZMWgpWTFqKVjxrKkYMS7pmDEu6ZgxLumYMS7pmDEu6ZgxLumYMS7pmDEu6ZgxLum/6gQAP+q Hgj/sx0R7MkOD87jDhW+8hgtr/4iQ6H/LVWW9DlkjOxFb4TlUXl+4FyAedxnhnTZbopw1nSObNN5 kWnSf5Nn0ISVZM+Kl2LOj5hgzZWZX82cml7NoptdzaubXM20mlzNtJpczbSaXM20mlzNtJpczbSa XM20mlzNtJpczbSa/6sPAP+tGgfywA0IztMKBr7wDhqv/hkwof8kQ5X/MlKL+D9eg/FLaH3sVnB3 6F92ceRlemzhbH5p33KBZt14hGPcfYZh24KIX9qHiV3ZjItb2JKMWdeYjVjWno1X1qWOVtWsjlbV rI5W1ayOVtWsjlbVrI5W1ayOVtWsjlbVrI5W1ayO/68NAP+3DgPNyQgBvtgJCa79EByh/xwvlf8p P4v/N0yC/kVWfPlQXnX0WWRu8V9paO5kbWTranBh6nBzX+h1dV3nendb5n94WeWEeVjkiXtW4458 VeKTfVTimH5S4Z5+UeGlf1HhpX9R4aV/UeGlf1HhpX9R4aV/UeGlf1HhpX9R4aV/8bQIAM7ABgC9 zgcBruAHC6D/EhyU/yAriv8vOIH/PUN6/0lLc/9SUWz+V1dl+11bYfljXl73aGBb9W1iWPRyZFbz d2ZV8ntnU/GAaFHwhGlQ8IlqT++Oa07uk2xM7pltS+2fbkvtn25L7Z9uS+2fbkvtn25L7Z9uS+2f bkvtn25L7Z9u0bkDALzFBQCt1gMBn/gLC5P/FhiJ/yQkgP80L3n/QTdw/0g+aP9PQ2L/VUdd/1pL Wf9gTVb/ZVBT/2pRUf9uU0//clRO/3ZVTP57Vkv9f1dJ/YRYSPyIWUf7jVpG+5NbRfqYXEX6mFxF +phcRfqYXEX6mFxF+phcRfqYXEX6mFxF+phcvb0DAK3NAQCe3wABkv8NCIf/GRJ+/ykbdf81I2z/ PCpk/0MvXv9KNFj/UDdU/1Y6Uf9bPE7/YD5L/2RASv9oQUj/bEJG/3BDRf90RET/eEVC/31GQf+B R0D/hkg//4xJPf+RSj3/kUo9/5FKPf+RSj3/kUo9/5FKPf+RSj3/kUo9/5FKrsUAAJ7XAACP9QAB hv8PBHz/Gwtx/yQRZ/8sF1//NRxZ/z0hVP9FJk//SylM/1IsSP9XL0b/XTBE/2EyQv9mM0D/ajU/ /242Pf9zNzz/dzg7/3w5Ov+BOjj/hjo3/4w7Nv+SPDb/kjw2/5I8Nv+SPDb/kjw2/5I8Nv+SPDb/ kjw2/5I8/4MTAf+EIgb/hTUU/4NGJP9/VTT/gV5C/4FmUP9/blz5fHdm83qAb+53iHfqdY9953KV guRwmoXjbp6I4Wyii+Brp43faauO3mivkN1ntJHdZrqR3GXBktxlyZLbZdCS0mfSkc5o0pHOaNKR zmjSkc5o0pHOaNKRzmjSkc5o0pHOaNKR/4MTAf+EIgb/hTUU/4NGJP9/VTT/gV5C/4FmUP9/blz5 fHdm83qAb+53iHfqdY9953KVguRwmoXjbp6I4Wyii+Brp43faauO3mivkN1ntJHdZrqR3GXBktxl yZLbZdCS0mfSkc5o0pHOaNKRzmjSkc5o0pHOaNKRzmjSkc5o0pHOaNKR/4MTAf+EIgb/hTUU/4NG JP9/VTT/gV5C/4FmUP9/blz5fHdm83qAb+53iHfqdY9953KVguRwmoXjbp6I4Wyii+Brp43faauO 3mivkN1ntJHdZrqR3GXBktxlyZLbZdCS0mfSkc5o0pHOaNKRzmjSkc5o0pHOaNKRzmjSkc5o0pHO aNKR/4QTAf+FIgb/hjUU/4RGJP+AVTT/hF1D/4VlUP+DbV34gHVo8n1+cex6hnnod41/5XWTheJy mIngcJ2M326ijt1sppDca6uS22mvlNpotZXaZ7uV2mbDltpmzJbTaM+WzGnPlchqz5bIas+WyGrP lshqz5bIas+WyGrPlshqz5bIas+W/4USAf+HIgb/hzUU/4VGJP+EVDX/iFxD/4hkUf6Ha173g3Jp 8YB8c+t9hXvneoyC43eSh+B0l4zecpyP3HChkttuppTZbKqW2WqwmNhptpnXaL2Z12jGmtNozJrM asyZxmvMmsJszJrCbMyawmzMmsJszJrCbMyawmzMmsJszJrCbMya/4YSAf+IIQb/iDUU/4ZGJf+H UzX/i1tD/4xiUf6Kal72h3Fq8IR6dOqAg33lfYqE4nqQit52lo/cdJuS2nGgldhvpZjWbaua1Wuw m9Vqt5zUab+d1GnJncxryp3GbMmdwG3Jnb1uyZ29bsmdvW7Jnb1uyZ29bsmdvW7Jnb1uyZ29bsmd /4cSAf+JIQb/ijUU/4hGJf+KUjX/jlpD/49hUf6OaF72i29q74d4demEgX7kgIiG4HyPjN15lJHa dpqV2HOfmdVwpZvUbqqe022xn9JruKDSa8KhzWzHocZux6HAbsehu2/Hobhwx6G4cMehuHDHobhw x6G4cMehuHDHobhwx6G4cMeh/4gRAf+KIQb/izUU/4lGJf+NUTX/klhD/5JeUf6QZV72jmxr74t1 duiHfoDjhIaI3n+Nj9t7k5TYeJmZ1XWenNNypJ/RcKqi0G6yo9BtuqTObMSlxm/EpL9wxKW6ccSl tXHEpbJyxKSycsSksnLEpLJyxKSycsSksnLEpLJyxKSycsSk/4kRAf+LIQb/jDQU/4pGJf+QTzT/ lFZD/5RbUf6TYV72kWhr7o5wduiLe4Dih4OJ3YOKkdl+kZfVepec03edoNB0pKPPcaqmzm+zp81u vajHcMKovnHBqbhywam0c8Gpr3TCqK10wqetdMKnrXTCp610wqetdMKnrXTCp610wqetdMKn/4oR Af+MIQb/jTQU/4tGJv+TTjT/llNC/5dYUP6WXl72lGRq7pJsduePdoHhjICK3IeIktiCj5nTfZWf 0Hmco851o6fMcquqy3C0q8hwv6y/c76st3S+rbJ1vqyudr+sqna/q6h3wKqod8CqqHfAqqh3wKqo d8CqqHfAqqh3wKqod8Cq/4sRAf+NIAb/jjQU/41FJv+WTTP/mVBB/5pVT/+aWl33mGBp75VodeiS cIDhj3uK3IuEk9aGjJrSgJOhznuapsx3oqrKdKuuyHK4r8B0vK+3dbywsHa8sKt3vK+oeL2vpXm+ raN5vq2jeb6to3m+raN5vq2jeb6to3m+raN5vq2jeb6t/4sQAf+OIAb/jzQU/49EJf+YSjP/m01A /51RTv+dV1v4nFxo8JpjdOiXan/ik3WK3I+Ak9aKiZvRhJCjzX6Yqcl5oq7Hda2xxHS6s7d2ubOv eLmzqnm6s6Z6urKje7uxoHu8sJ98va6ffL2un3y9rp98va6ffL2un3y9rp98va6ffL2u/4wQAf+P IAb/kDQU/5JDJf+aSDL/nUo//59OTf+gU1r5oFhm8Z9fcuqcZX3jmG+I3JN6ktaPhJvQiI2jy4GW q8d7obHFdrC1une3tq95t7aoeri2o3y4tKB8ubOefbqynH67sZt+vLCbfrywm368sJt+vLCbfryw m368sJt+vLCbfryw/40QAf+PIAb/kTQU/5RDJP+bRjH/oEg+/6JLS/+kUFj6pFVk86RacOuiYXvk n2mF3ppzkNeVfpnQjoijyoWTrMR9oLS9eLC5r3m1uaZ7trihfbe2nX64tZt/ubSZf7qzmIC6speA u7GXgLuxl4C7sZeAu7GXgLuxl4C7sZeAu7GXgLux/40QAf+QIAb/kTQU/5dCJP+dQzD/okU9/6VI Sf+oTFX8qVFh9apXbO6pXXfnqGOB4aRti9aeeZbLlYOiwIuOrbaDmraufqq7pHyzvJ5+tbqagLe3 mIG4tZaBubSVgrqzlIK6spOCu7GTgruxk4K7sZOCu7GTgruxk4K7sZOCu7GTgrux/44QAf+RIAb/ kjQU/5lBI/+fQS//pEI7/6hFR/+sSVP+rk5e9bBTaOyyWnLks2F7269uhMymdpTAnH6itJKIrqmK lLeghaS9mYKxvpWDtLuThLa4koS4tpGEubSQhLmzkIS6spCEurKQhLqykIS6spCEurKQhLqykIS6 spCEurKQhLqy/48PAf+SIAb/kzQU/5o/Iv+hPy7/p0A6/6xCRf+wRlD5s0ta8LdSY+i7WWvfvWRy 0bZsgsSsc5O2o3qhqpmDrp6SkLeUjZ++jouxv4yJs7yMibW5jIi3toyIuLWMh7m0jIe6s4yHurKM h7qyjIe6soyHurKMh7qyjIe6soyHurKMh7qy/48PAf+SHwb/lDQU/5w9If+jPC3/qj04/69AQv+0 REz1uklV7L9RXOTGWmHYxWJvybxpgbuycJKtqnegoKGArZObi7eJlpu9g5Wvv4SRs7yGjrW5h422 t4eMt7aIi7i1iYq5tImKurKJirqyiYq6somKurKJirqyiYq6somKurKJirqy/5APAf+THwb/lTQV /547IP+lOSv/rDo1/7M9P/u6QkfxwUhO6MlRUt/RW1nPymBtwcJngLK5bZCksXSfl6p9q4qkiLV/ oJe7eJ+svnyas7x/lbS6gZK2uIOQt7eEj7i1hI25s4WNurKFjbqyhY26soWNurKFjbqyhY26soWN urKFjbqy/5EOAf+UHwb/ljMV/6A4H/+oNin/sDgy/7g6O/bAP0HsykdF49ZURdbZV1jH0F5ruMhk fqrBa46cunKcjrR6qICuhbJ2q5S4b6upunKltbp3nbW5epm2t32Wt7Z+k7m0f5G6soCQu7GAkLux gJC7sYCQu7GAkLuxgJC7sYCQu7GAkLux/5IOAf+VHwb/lzMV/6I1Hv+rMyf/tDQv+b42Ne3JPTji 1kg42eBNRc3fVla/2FxpsNBie6HJaIuTw2+Zhb53pHi6g61uuJOzaLiotmmyuLZvp7e2c6G4tXac ubR4mbqzepa7sXuVvLB7lbywe5W8sHuVvLB7lbywe5W8sHuVvLB7lbyw/5MOAf+WHwX/mTMU/6Uw HP+vMCP9ui8p8MYyLePUOyzW4EA6y+VITMDhTlyz3VZspdhdepjSZYiKzm2Ufcl2n3PEg6dswJGs Z76hr2W+tq9mtLuxa6u7sW6lu7FxoLywc529r3Sava50mr2udJq9rnSava50mr2udJq9rnSava50 mr2u/5QOAf+YHgX/nTES/6ktGf+0Kh71wiki5NEtIdXgMyzJ6Dw/vuhDUbHlSWGk4k9wl99WfYra YIiA02uSeM13mnDIgqFqxY6lZsObqGXDrKdhwr2qY7i/q2awv6xpqr+sbKW/q22iwKptosCqbaLA qm2iwKptosCqbaLAqm2iwKptosCq/5UNAP+aHgX/oiwQ/60oFfu7IxjozSAX1d8lHcjoMDG87zlE sOxAVaPqRmSX6E1xi+NVfYHcYYZ51WyOctF3lWzNgZpnyoueZMiWoGHIo6FgyLOhXcfDo1++xKVh tsOlZLDDpWWsw6VlrMOlZazDpWWsw6VlrMOlZazDpWWsw6VlrMOl/5cNAP+cHgX/piYN/7QgD+/G Fw/W3RYOyOkjIrvzLjav9DZIovI+WJfxRmWL609wgeVYenrfZIJz2m2IbdZ2jWjTf5Jk0IiVYM+S mF7OnZlczamaW865mVnNyJpaxcqcXL3JnV64yZ5euMmeXrjJnl64yZ5euMmeXrjJnl64yZ5euMme /5oMAP+fHQX/rB8I+L4TCNjWCwTI6BUTuvQiJ676LTmi+jZKlvo/WIv1SGOC7lJteuhcdXLkZHtt 4G2AaN11hWTafohg2IaLXdaPjVrVmI9Y1KKQV9SukVbUvJBW1M2QVs3RklfI0ZNXyNGTV8jRk1fI 0ZNXyNGTV8jRk1fI0ZNXyNGT/5wLAP+jHQT/tRID1MkKAsjaCwa59BYXrP8jKqH/LjuV/zhJi/9C VYL4TF968lZnc+5ebWvqZHJm52x3YuR0el/ifH1c4YN/Wt+Lglfek4NV3ZyFVNylhlLcr4ZS3LuG UdzMhVLa2oVS2tqFUtrahVLa2oVS2tqFUtrahVLa2oVS2tqF/6AKAP+tEwHUwAgAxs4IALnjCwir /xcZn/8kKpT/MDmK/zpFgf9GT3r9UVhy+Fhea/VeY2XyZWhg72xrXe1yblrreXBX6oByVemHdFPn j3ZR5pZ3UOaeeE7lp3lN5a96TeS7ekzkxXpM5MV6TOTFekzkxXpM5MV6TOTFekzkxXpM5MV6/6QH ANi4BADExAYAt9MHAarzDQue/xoak/8nKIn/MzWA/z8/ef9KR3D/UU5p/1dTYv1dV177ZFta+Wpe V/dwYFT2dmJS9HxkUPODZU7yimdM8ZFoS/CYaUrwn2pJ76drSO+wbEfut2xH7rdsR+63bEfut2xH 7rdsR+63bEfut2xH7rds3a8AAMW8BAC1ygQAqNsFApz/EAuR/x0Xh/8qI37/Ni12/0E2bf9IPGb/ T0Jg/1VGW/9bSlf/YUxT/2dPUf9tUU7/clJM/3hUSv9+VUj+hFZH/YtYRfySWUT7mFpD+59bQvqn XEH6rFxB+qxcQfqsXEH6rFxB+qxcQfqsXEH6rFxB+qxcyLYBALXBAwCn0QEAmesFAo//EgmF/yAS fP8sG3P/NSNq/z0qYv9EMFz/SzRX/1I4U/9YO0//Xj1M/2M/Sv9oQEf/bUJF/3JDRP93REL/fUVA /4NGP/+KSD3/kEk8/5dJO/+eSjv/o0s7/6NLO/+jSzv/o0s7/6NLO/+jSzv/o0s7/6NLtroCAKbK AACY3AAAjP8IAYP/FAV4/x4Mbv8mEmX/Lxld/zceV/8/IlL/RiZN/0woSv9SK0b/WC1E/10uQv9h L0D/ZjE+/2syPP9wMzr/dTQ5/3o1N/+ANjb/hjc1/4w4M/+UODP/mDkz/5g5M/+YOTP/mDkz/5g5 M/+YOTP/mDkz/5g5p8MAAJfUAACI5AAAgP8KAXL/DgJn/xMFX/8dCVf/Jg1R/y8RTP83FUf/PhdD /0UZQP9LGz3/UB07/1UeOf9ZHzf/XiE1/2IiNP9nIzL/bCQx/3IlL/93Ji7/fSct/4QoK/+LKSv/ kSkr/5EpK/+RKSv/kSkr/5EpK/+RKSv/kSkr/5Ep/3YVAv9zIAT/cjEM/3FDGf9xUCb/dVkz/3Vi P/9zakn/cHRT/25+W/xrh2H5aY9n9meWa/RlnG7yY6Fx8WKmc+9hq3XuYLB27l61d+1eu3jsXcN5 7FzLeutb2HrmXd56317hedhg43nVYON51WDjedVg43nVYON51WDjedVg43nVYON5/3YVAv9zIAT/ cjEM/3FDGf9xUCb/dVkz/3ViP/9zakn/cHRT/25+W/xrh2H5aY9n9meWa/RlnG7yY6Fx8WKmc+9h q3XuYLB27l61d+1eu3jsXcN57FzLeutb2HrmXd56317hedhg43nVYON51WDjedVg43nVYON51WDj edVg43nVYON5/3YVAv9zHwT/dDEN/3JCGf90Tyf/eFgz/3lgP/93aUr/c3FU/3F8XPtuhmP3a45p 9GmUbfJnm3HwZaB072Sldu1iqnjsYbB562C1e+tfvHzqXsR96l3Nfedd2X3hX9592mDgfNFi4X3P YuF9z2Lhfc9i4X3PYuF9z2Lhfc9i4X3PYuF9/3cVAv90HwT/dTEN/3NCGv93TSf/e1Y0/3xfQP96 Z0v/d29V/nN6Xvpxg2X2boxr82uTcPBpmXPuZ5937GWleetkqnvqYq996WG1fuhgvX/oX8WA6F7Q geJf2oDbYd6A0mLfgMtj34HKZN+BymTfgcpk34HKZN+BymTfgcpk34HKZN+B/3gUAv91HwT/djEN /3RCGv96TCf/f1U0/4BdQP9+ZUz/em5W/nZ3X/l0gWb1cIpt8W2Rcu5rmHbsaZ5562ekfOllqX7o Y6+A52K2guZhvYPmYMeE5V/ThN1h2oTTY92DzGTchMZl3ITFZdyExWXchMVl3ITFZdyExWXchMVl 3ITFZdyE/3kUAf92HgP/dzAN/3ZCGv9+Syf/glM0/4NcQP+CZEz/f2xW/Xp0YPh3f2jzc4hv8HCP dO1tlnnqa5186Gijf+dmqYLlZa+E5GO2heRiv4fjYcmH4GHVh9Vk2ofNZdqIx2bZiMFn2Yi/Z9mI v2fZiL9n2Yi/Z9mIv2fZiL9n2Yi/Z9mI/3oUAf94HgP/eTAN/3hBGv+BSSf/hlIz/4haQP+HYkz/ g2lX/H5xYfd7e2nyd4Vx7nONd+twlHzobZuA5mqig+RoqIbjZq+I4mS3iuFjwYvhYs6L2GTWi81m 1ovGZ9aMwGjWjLtp1oy6adaMumnWjLpp1oy6adaMumnWjLpp1oy6adaM/3sTAf95HQP/ejAN/3w/ Gv+FSCb/ilAz/4xYQP+LX0z/iGdX/IRuYfZ/eGrxe4Jy7XeKeelzkn7mb5mD5Gyhh+JqqIrgZ6+M 32W4jt5kxI/bZNKPzmfTj8Zo05C/atOQumvTkLVs05C0bNOPtGzTj7Rs04+0bNOPtGzTj7Rs04+0 bNOP/3wTAf96HQP/ezAN/38+Gv+JRib/j04y/5FWP/+QXUv/jmRW/IlrYfaEc2vwf35z7HuHeuh2 kIHkcpeG4W6fit9rp47daLCQ3Ga7kttlypPQaNGTxmrQlL5r0JS4bNCUs23QlK9u0ZOubtGTrm7R k65u0ZOubtGTrm7Rk65u0ZOubtGT/30SAf97HAP/fC8N/4M8Gf+NRSX/k00x/5VTPv+UWUr/kmBV /Y9oYPaKcGrwhHl063+DfOZ6jIPidZWI33Gejd1tp5HbabGU2We/ltRnzpfHa82YvWzNmLZuzZiw b82YrHDOl6lxzpaocc+WqHHPlqhxz5aocc+WqHHPlqhxz5aocc+W/34SAf98HAP/fi8N/4Y7Gf+R QyT/lksw/5hQPP+YVUj/llxU/ZNjX/ePa2nwinRz64R/fOZ+iYTheJKL3XOckNpuppXYarOZ1mjF m8lry5u9bsqctG/KnK5xypyqcsubpnPLmqNzzJmidM2YonTNmKJ0zZiidM2YonTNmKJ0zZiidM2Y /38SAf99GwP/fy8N/4k6GP+UQiP/mUcv/5tMO/+cUkb/m1hS/5lfXfiVZmjxkG5y64p5e+WDhITg fI+M3Haak9hvppnSa7WdzmrIn75uyJ+zccegrHLHoKd0yJ+jdcmeoHbKnZ52y5uddsuanXbLmp12 y5qddsuanXbLmp12y5qddsua/4ARAf9+GwP/gC8N/4w4GP+XQCL/nEQt/59JOf+gTkT/oFVP/J5b WvWcYmXul2pv6JF0eeGKf4PZg4qMz3uVlch1oJzDcK6hvm+/o7NyxaOqdMWjpHbFo6B3xqGdeMeg m3jInpl5yp2YecqcmHnKnJh5ypyYecqcmHnKnJh5ypyYecqc/4ARAf9/GwP/gS8N/483F/+aPyH/ n0Is/6JGN/+kTEL/pFJM96RYV++jX2HnoGZr4JpxddWTfIHLioWNw4KPlrt7mp61dqeksHS4p6h2 wqeheMOmnXnEpZp6xaOYe8ailnvHoJR7yZ6UfMmdlHzJnZR8yZ2UfMmdlHzJnZR8yZ2UfMmd/4ER Af+AGwP/gi4O/5E2Fv+cPCD/oUAq/6VENP+oSj/6qVBJ8qpWUuqqXVziqWZm16JvcsuZeIHBkIGN uIiKl6+BlaCofKKmo3qyqZ56wamZfMGoln3DppR+xKSSfsWjkX7HoZB+yJ+QfsmekH7JnpB+yZ6Q fsmekH7JnpB+yZ6Qfsme/4IRAf+BGwP/hC4N/5Q1Fv+eOh7/pD4o/6hCMv+sRzv2r01E7bFUTeWz W1XcsGVhzqhsccOfdIC4lnyNro+GmKWIkaGdg52nl4Ctq5OAv6uRgcGpj4HCp46Bw6WNgcWjjYHG ooyByJ+MgcifjIHIn4yByJ+MgcifjIHIn4yByJ+Mgcif/4IRAf+BGgP/hi0N/5Y0Ff+gOR3/pjwm /6tAL/uwRTjytEs/6blTRuG9XE3TtmJgxq1pcLulcX+wnXmMpZWCl5uPjaGTipmnjIepq4iHv6yI h8CqiIbCqIiFw6aIhcWkiITGooiEyKCIhMifiITIn4iEyJ+IhMifiITIn4iEyJ+IhMif/4MQAf+C GgP/iCsM/5kyFP+iNxv/qTkk/689LPe1QjPtu0k55cJSPtrCWEzMumBfv7Jnb7Orbn6oo3aLnZx+ l5KXiaCJkpango+lq36PuqyAjcCqgYvCqIKKw6aDicWkg4jGooSHyKCEh8ifhIfIn4SHyJ+Eh8if hIfIn4SHyJ+Eh8if/4QQAf+DGgP/iyoM/5wxEv+lNBr/rDYh/rM6KPO7QC3pw0gx4ctRN9LHVkvF wF5duLhlbqyxbH2gqnOKlKR7lYqfhp6Am5KleZiiqnSYt6t3lcGpepHCp3yPw6V9jcWjfozGoX+K yJ9/isiff4rIn3+KyJ9/isiff4rIn3+KyJ9/isif/4UQAf+EGgP/jigL/58xEf+nMhf/sDMd+bk2 Iu7CPSbmzUcm29NMNcvMVEm+xVxbsb5jbKS4anqYsnGHjKx5k4Gogpx3pI+jcKKfp2yitKhun8Kn cpnDpnWVxKR3ksaieJDHoXqOyJ96jsmeeo7JnnqOyZ56jsmeeo7JnnqOyZ56jsme/4YQAf+FGQP/ kSYK/6EvD/+rLhX/tS8Z9L8yHOnLOhzf2UQd0dpKM8TSUke3y1pZqcZhaZzAZ3iQum6EhLZ2j3my gJhvr42faK2do2StsqRlqsWkaqLFo22dxqJwmcehcpbIn3STyZ11k8qddZPKnXWTyp11k8qddZPK nXWTyp11k8qd/4cPAf+HGQP/lSQJ/6QrDf+vKRH6uykT7MgsE97YNxDT4UEeyd9JMLzaUUSv01hW oc1fZpTIZXSIxGyAfMB0inG9f5Npu4yZYrmcnV66sZ5duMmeYq7In2amyJ9pocmea53KnW6ay5tu mcubbpnLm26Zy5tumcubbpnLm26Zy5tumcub/4gPAf+JGQP/miMH/6gnCv+1IgzxxCAM4NUkCdHh MBTH5j0kveNGNLLgTkSm3FZSmdddYYzSY2+Az2t6dMxzhGvKfotiyIyRXMiclVnIsZZXyM6WW7vN mF6yzJlhq8yZZKbNmWeizZhnoM2XZ6DNl2egzZdnoM2XZ6DNl2egzZdnoM2X/4oOAf+LGAP/nyEF /64gBvi9GAbj0RME0OEeCcXqLhm66TopsOdDOaTkSkiY4lBWjOBXYoDdX2x222h1bNpyfWPYfoNc 2IyIV9idi1TXsI1U2M2MVcvTj1fA0pFauNGTXLLRk1+s0ZNgqtGTYKrRk2Cq0ZNgqtGTYKrRk2Cq 0ZNgqtGT/4wOAf+PFgL/pR4D/7UVA9rKCwLQ4Q4CxOseDbjvLB2t7jcuouxAPZfrSEqM6U9WgehW YHbnXmls52VwZOZwd17jfHxZ4ImAVt6Xg1PdpoRR3LiFUd3UhFPQ2odUxtiJVr/Xili41otZttaL WbbWi1m21otZttaLWbbWi1m21otZttaL/44NAP+XEgH/rRUB2b8JAMzOCQDD6w4EtvUeEav1LCGh 9DcwlvNAPovzSEqB81BUd/NXXW3zXWRl8GZqX+1wblrqenJW54V2U+WReVHknntP46x8TeO9fE3j 2XxQ2OB8Uc7gf1LG3oFTxN6BU8TegVPE3oFTxN6BU8TegVPE3oFTxN6B/5IMAP+gDQDbtwYAysMH AMDSCQC19BAGqfsfFJ/8LCOU/DcxivxBPYH9SUd4/VFQbv1XV2X6Xlxg9mZhW/RvZVbxeGhT74Jr UO6MbU7sl29M66NxSuqwcknqwXJI6thyS+Pkck7Y5nNO1ed0TtXndE7V53RO1ed0TtXndE7V53RO 1ed0/5YKAN6sAgDLugUAvccGALLYCAGn/xIInP8hFpL/LiOJ/zkvgP9COXf/SkJt/1BJZf9WTl// XlNa/mVWVfxtWlL6dVxP+H5fTPeHYUr1kWJI9JxkRvOmZUXys2ZE8sFnQ/LUZ0Xu52dG6+hnRuvo Z0br6GdG6+hnRuvoZ0br6GdG6+hn7qIAAM20AgC8vgQAr80EAKTeBwGa/xUJkP8kFYf/MCB+/zsq dP9CMmv/SDlj/04/Xf9VQ1j/XUdT/2RKUP9rTU3/ck9K/3lRR/+CU0X/i1RD/pRWQf2eV0D9qFg/ /LNZPvy/Wj770Vo9+9taPfvbWj3721o9+9taPfvbWj3721o9+9ta0q0AAL24AgCuxQIAodUCAJb3 CwKN/xgIhP8mEXz/MRpx/zgiaP8+KWD/RS9a/0wzVP9TN1D/WjpM/2A8Sf9mPkb/bUBE/3RCQf97 Qz//g0U9/4xGO/+VRzr/nkk5/6dKOP+xSjf/vks3/8JLN//CSzf/wks3/8JLN//CSzf/wks3/8JL v7MAAK6+AACgzQAAkt4AAIn/DQGB/xoFd/8jDG3/KhNk/zEZXP84HlX/QCJQ/0gmTP9PKUj/VStE /1stQv9hLz//ZzE9/20yO/9zMzn/ejU3/4I2Nf+LNzP/lDgy/5w5Mf+kOjD/rzsw/7I7MP+yOzD/ sjsw/7I7MP+yOzD/sjsw/7I7sLgAAKDHAACR2AAAhO8AAHz/DQFv/xEDZv8ZBl7/IQpW/ykPUP8y E0v/OhZG/0EZQv9IGz//Th08/1MeOf9ZIDf/XiE1/2QiM/9pIzH/cCQv/3clLf9+Jiz/hycq/48o Kf+XKSj/oCoo/6MqKP+jKij/oyoo/6MqKP+jKij/oyoo/6MqocIAAJHRAACC4QAAeP8AAGz/CAFg /w0CV/8RA0//GAVI/yAGQ/8pCD//MQo7/zgMOP8+DjX/RA8y/0kQMP9OES7/UxIs/1gTKv9dFCn/ YxUn/2kWJf9vFyT/dxci/34YIf+FGR//jxof/5EaH/+RGh//kRof/5EaH/+RGh//kRof/5Ea/2gZ Av9kIwT/Xy8G/15AEP9jSxr/Z1Ql/2hdL/9mZzn/ZHJB/2J9SP9gh07/XZBS/1uYVv9anln/WKRb /1eqXf5WsF/9VbVg/FS8YfxUxGL7U81j+VLcY/ZS5mPxU+pj7FTtY+ZW72LgV/Bj4FfwY+BX8GPg V/Bj4FfwY+BX8GPgV/Bj/2kYAv9lIwT/YC4G/19AEP9mSRr/alMl/2tcMP9pZTr/Z3BC/2R7Sf9i hU//X45U/12WWP9bnVv/WqNd/VipX/xXr2H7VrVi+lW8ZPpVxGX5VM5l91PdZvNT5mbuVepm51bt ZeFY7mXbWe9m21nvZttZ72bbWe9m21nvZttZ72bbWe9m/2oYAv9mIgT/YS4H/2A/EP9pSBv/bVEm /25bMP9sZDr/aW5D/2d5S/9kg1H/YYxW/1+VWv9dnF39W6Jg+1qpYvpZr2T5WLVl+Ve8Z/hWxWj3 Vc9o9VTgafBV5mnpV+po4lnsaNta7WnTW+5p01vuadNb7mnTW+5p01vuadNb7mnTW+5p/2oYAv9n IgT/Yi4H/2M+EP9sRhv/cVAm/3JZMf9wYjv/bGtE/2l2TP9ngVL/ZItY/2GTXP1fm2D7XaFi+luo Zflarmf4WbVo91i8afZXxmr1VtFr8lXhbOxX52zkWelr3Fvra9Rc7GzNXe1szV3tbM1d7WzNXe1s zV3tbM1d7WzNXe1s/2sXAv9oIQP/Yy0H/2c8EP9wRRv/dE4m/3ZXMf90YDv/cGlF/21zTf9qflT/ Zoha/mORXvthmWL5X6Bl+F2naPZcrWr1WrRs9Fm9bfRYx27yV9Rv7lfib+ZZ5m/dXOlu013qb81e 63DHX+twx1/rcMdf63DHX+twx1/rcMdf63DHX+tw/2wXAv9pIQP/ZS0H/2s6EP90Qxv/eUwm/3pV Mf95XTz/dWZF/3BwTv9te1b/aoVc/GaPYfpkl2X3YZ9o9l+ma/RdrW3zXLRv8lq9cfFZyXLvWNpz 6Frjc95d5nLTXuhzy1/odMZg6HTBYeh0wWHodMFh6HTBYeh0wWHodMFh6HTBYeh0/20WAv9qIAP/ Zi0H/284EP94QRr/fUol/39SMf9+Wzz/e2NG/3ZsT/9xd1f+bYJe+2qMY/hmlWj1ZJ1s82Gkb/Jf rHHwXbRz71y/de5by3bqW9134F3jdtNg5XfKYeV4xGLleL5j5Xi6ZOV4umTleLpk5Xi6ZOV4umTl eLpk5Xi6ZOV4/24WAv9rIAP/aCwH/3M2EP99Pxr/gkcl/4RQMP+EWDv/gWBF/3xpT/92clf+cX1f +W2IZfZqkmrzZptv8WOjcu9hq3XtX7V47F3Beexc0HrjXd971GHie8pi4nzCZOF9vGXhfbdm4nyz Z+J8s2fifLNn4nyzZ+J8s2fifLNn4nyzZ+J8/3AVAf9sHwP/aSwH/3c0D/+BPBn/h0Uk/4pNL/+J VTr/h11F/4JlT/98blj9dnhg+HKEZ/Vtjm3xaZhy72ahduxjq3nrYLZ86V7Efude2H/YYd9+ymPf gMFl3oG5Z96BtGjegbBp34Csad9/rGnff6xp33+sad9/rGnff6xp33+sad9//3EVAf9tHwP/aysH /3syD/+GOhj/jEMi/49LLf+PUzj/jVpD/4liTf+DaVf9fHJg+HZ/Z/Rxim7wbJV07Wifeepkqn3o YbeA5l/Igt1h24PMZNyEwGbchbho24WxatuFrWvchKls3YOmbN2CpmzdgqZs3YKmbN2CpmzdgqZs 3YKmbN2C/3IUAf9vHgP/bykH/38wDv+KOBf/kUEh/5RKLP+VUTb/k1hB/5BgS/uLZ1X1hG9f8H16 Z+t3hW/ncpB2422bfN5opoHaZbOE1WPEhs9k2ofBZ9mIt2nYia9r2ImqbdmIpm7ah6Nu2oagb9uF oG/bhaBv24Wgb9uFoG/bhaBv24Wgb9uF/3IUAf9wHgP/cigH/4IuDf+ONhb/lUAf/5lIKf+ZTzT/ mFU++pZcSfSSZFPtjGtd54V2ZuF/gW/beIx303KWfs1toYTJaq2JxWi7i8Fo0Iy2a9WNrm3Vjadv 1oyjcNaLn3HYip1x2YmbctqHm3Lah5ty2oebctqHm3Lah5ty2oebctqH/3MUAf9wHQP/dSYG/4Ys Df+RNhX/mUAd/5xGJ/+dTDH8nVI79JxZRe2ZYE/mlGhZ345zY9WGfW7Nf4d4xniRgMBzm4e7b6eM tm20j7NsyJGsbtKRpXDTkKBy1I+cc9WNmXTWjJd02IqWddmJlnXZiZZ12YmWddmJlnXZiZZ12YmW ddmJ/3QTAf9xHQP/eCQG/4krDP+VNRP/nD4b/6BDJP+iSS73o1A376JWQeehXUrfnWdU1JVvYsuN eG7DhYJ5u3+MgrV5lomvdaGOqnKvkqZxwZShc9CUnHTRkph20pGWd9OPlHfVjZJ31oyReNiKkXjY ipF42IqReNiKkXjYipF42IqReNiK/3UTAf9yHAP/eyMG/4wpC/+YNBL/nzwZ/6NBIvumRiryqE0z 6qlUPOKpW0TXo2NTzJpsYsKTdW66i355soWHg6p/kYqke5yQnniqlJp2u5aXd8+WlHnQlJF60ZKP etOQjnrUj4161Y2MeteLjHrXi4x614uMeteLjHrXi4x614uMeteL/3UTAf9zHAP/fSEF/44pCv+b NBD/ojkX/6Y+H/eqRCburkou5bFSNdyvWUHPqGFSxaBpYbuYcm6xkXp5qYuDg6GFjYuagZiRlH6l lpB8tpiNfc2XjH7PlYp+0JOKftKRiX7Tj4l91Y2IfdaLiH3Wi4h91ouIfdaLiH3Wi4h91ouIfdaL /3YSAf90HAP/gCAF/5EoCf+eMw//pDcV/qo7G/OvQSLqtEgo4rlQLtS0VkDJrV9RvqVnYLSeb22q l3d4oZGAgpmMiouRh5WRi4SiloaDspmDhMuYhIPOloSD0JSEgtKShIHTkISB1I6EgNaMhIDWjISA 1oyEgNaMhIDWjISA1oyEgNaM/3cSAf90GwP/gh4E/5QnCP+gMg3/pzQT+q44GO+1PRzmvEYh3L9M LM65VD/DsV1Qt6plX62kbGyjnXR3mZh8gZGThoqJj5KRgoyfln2Kr5h6i8eYfInOln2I0JR+htKS f4XTkH+E1I6Ag9aMgIPWjICD1oyAg9aMgIPWjICD1oyAg9aM/3gSAf91GwP/hRwE/5cmB/+jLwv/ qzAQ9bM0FOu7OhfixEQY1cRIK8i9Uz28tltOsbBjXaaqamqcpHF2kp96gImag4mBlo6QeZOclXSS rJdxksOYc5HPlnaO0JR4i9KReYrTkHqI1Y57h9aMe4fWjHuH1ox7h9aMe4fWjHuH1ox7h9aM/3gS Af92GwP/iBsD/5olBv+mKwn+rywM8bkvDubDNg/dzTwWzshHKcLCUTu2vFlMqrZhW5+waGiVq290 i6Z3foGigIZ5n4uNcZyZkmybqZVpm7+Wa5nQlG6U0ZJxkdKRc4/Uj3WN1Y12i9aLdovWi3aL1ot2 i9aLdovWi3aL1ot2i9aL/3kRAf94GgL/jBkD/54jBP+qJgb4tCUI68AoCOHNMAfU0jcUyM1FJ7vI TzmvwldKo71fWJi4ZmWNs21xg691e3qrfoNxqImKaqaWj2Wlp5Jipr2SY6PSkWed05BqmNSPbZXV jW6S1oxwkNiKcJDYinCQ2IpwkNiKcJDYinCQ2IpwkNiK/3sRAf98FwL/kBcC/6IhA/+uIATyux0E 5coeA9rbJAPM2TUSwNNDJLTOTTaoyVVHnMRdVZHAZGKGvGtte7hzdnK1fH5qs4eFY7GVil6wpYxb sbyNW6/VjV+n1Y1jodaMZpzXi2iZ2IpqltmIapbZiGqW2YhqltmIapbZiGqW2YhqltmI/3wQAf+B FAL/lRUB/6cdAvy1FgLrxhAB2tsPAM3gJQTD3zYPuNtBIazVSzOg0VNDlM1aUYnJYl1+xmlndMNx cGvBe3hkv4Z+Xb6Ugli9pYVWvruGVb3bhliz2odcq9qHX6bah2Gh24ZjnduFY53bhWOd24VjnduF Y53bhWOd24VjnduF/34QAf+HEQH/mhEA/60UANq+CgDRzQoAy+QQAcHkJQe34zUTreFAIaPeSS+X 21I+i9dZS4DUYFd20Whhbc9waWXNenBezIZ1WMyVeVTMpntRzbx8UMzifFPB4H9Vt9+AWLHegVqr 3oFcpt+BXKbfgVym34Fcpt+BXKbfgVym34Fcpt+B/4APAf+ODgH/og0A27UIAM7BCADG0AkAvukS ArTpJQqq6DMXoOY+JZblRzKL404/gOFVSXbgXVNt3mZbZd1vYV7demdY3IZrU9yVb1DdpnFN3rty Td/hcU7R53RQxuZ3Ur7keFO45HlVsuN6VbLjelWy43pVsuN6VbLjelWy43pVsuN6/4MOAf+WCwDd qwQAzbgGAMLEBgC61AkAse8UA6fuJQ2e7jMalO09J4rsRjOA604+dutVR2zqW05k6mNVXeptWljq d15T6oNiTuqRZUrroWdH7LNpRu3QaUjm6GlL2etqTM/sbU7H629PwOpwT8DqcE/A6nBPwOpwT8Dq cE/A6nBPwOpw/4kLAOmgAQDQsQQAwbwFALfJBgCu2gkApPUXBZv1JxCS9TQciPY+J3/2RzJ29k47 bPZUQmT2Wkhd9mJNV/ZrUVL2dVVN94BYSPiNWkX4m1xC+KteQfe+X0D332BD7uxgR+PxX0jb8WFJ 0vJjSdLyY0nS8mNJ0vJjSdLyY0nS8mNJ0vJj/pUAANSpAADCtQMAtcEDAKrPBQCg5wsBmP0aBo/+ KRCG/zUbfv9AJXT/Ri1r/0w1Y/9SOlz/WT9W/2BDUP9oR0z/cUpH/3tMQ/+HTkD/lFA+/6FSPf+w VDv/w1U7/uFVPPnwVUDw9FVD5/dUQ+f3VEPn91RD5/dUQ+f3VEPn91RD5/dU26EAAMWwAAC1ugIA qMcCAJ3WBACT/A4Bi/8dBoP/Kw96/zUXcf88H2j/QiZg/0ksWf9PMVP/VjVO/104Sf9lO0X/bT1B /3Y/Pv+AQTv/i0M5/5hFOP+kRjb/skc1/8RINf/dSTT/8Ek3/vhJN/74STf++Ek3/vhJN/74STf+ +Ek3/vhJyasAALa0AACowQAAm88AAI7fAQCH/xEBfv8dBHX/Jwts/y8SZP83GFz/Ph1W/0UiUP9L JUv/UihG/1grQf9fLT7/Zy87/28xOP94Mzb/gjQz/402Mf+ZNzD/pTgv/7I6Lv/AOy7/0zst/+s8 Lf/rPC3/6zwt/+s8Lf/rPC3/6zwt/+s8uLAAAKi8AACayQAAjNkAAIH1AwB5/xABbv8WA2X/HwZe /ycLV/8wD1H/NxNL/z4XRv9FGUH/TBs9/1IdOf9YHzb/XyE0/2YiMf9uJC//dyUt/4AmK/+MKCn/ lyko/6IqJ/+tKyb/uSwm/8ktJv/JLSb/yS0m/8ktJv/JLSb/yS0m/8ktqrcAAJrFAACL0wAAfeIA AHX/BQBp/wwBX/8RAlf/FwNQ/x8FSf8mB0T/Lgk//zYLO/89DTf/Qw8z/0kRMP9PEi7/VRMs/1sU Kv9iFSf/aRYl/3IXI/97GCH/hhkf/5EaHv+cGx7/pRwd/7AdHf+wHR3/sB0d/7AdHf+wHR3/sB0d /7AdnMAAAIzOAAB83gAAcPUAAGX/AABa/wYBUf8NAUn/EQJD/xcDPf8fBDj/JgU0/y0GMP8zBy3/ OQcq/z4IJ/9DCCX/SQkj/04JIf9UCR//Wgod/2EKG/9pCxn/cgwX/3wNFv+GDRT/jw4U/5oPFP+a DxT/mg8U/5oPFP+aDxT/mg8U/5oP/1wcAv9XJgP/UTIG/048CP9XRRD/W04Z/1xYIv9bYyv/WW8y /1d6OP9UhT3/UpBB/1CZRf9PoEf/TqdJ/02uS/9MtEz/S7tN/0rDTv9JzU//Sd1Q/0jpUP9I8lD7 SfZQ9kv5UPBN+0/qT/tQ50/8UOdP/FDnT/xQ50/8UOdP/FDnT/xQ/1wcAv9YJgP/UjIG/1E6CP9a QxD/X00Z/19XI/9eYSv/XG0z/1l5Ov9XhD//VI5D/1KXR/9Qn0n/T6ZL/06tTf9NtE//TLtQ/0vD Uf9LzlL/St9S/0nqU/1K8lP4S/ZT8U34UutP+lLlUPpT4lH6U+JR+lPiUfpT4lH6U+JR+lPiUfpT /10bAv9ZJgP/UzEG/1Q5CP9dQhD/Yksa/2JVI/9gXyz/X2s0/1x3O/9ZgkD/VoxF/1SVSP9Snkv/ UaVO/1CsT/9Ps1H/TrtS/03EU/9Mz1T/S+BV/0vrVfpM8lX0TfZV7FD4VOZR+FXfUvlW3FP5VtxT +VbcU/lW3FP5VtxT+VbcU/lW/14bAv9aJQP/VDEG/1g3CP9hQBH/ZUka/2ZTI/9kXS3/Ymg1/190 PP9cf0L/WYpH/1aTS/9UnE7/U6RQ/1GrUv9Qs1T/T7pV/07EVv9N0Ff/TeJY/EztWPZO8ljuUPVY 5lP2WN9U91nXVfhZ01X4WdNV+FnTVfhZ01X4WdNV+FnTVfhZ/18aAv9bJQP/VTAG/1w0CP9lPRH/ akca/2tRJP9pWi3/ZmQ2/2NwPf9ffEP/XIdJ/1mRTf9XmlD/VaJT/1OqVf9Sslf/UbpZ/1DFWv9P 0lv8TuRb+E/tXPBR8lvnVPRb3lX1XNVW9l3OWPddy1j3XctY913LWPddy1j3XctY913LWPdd/2Aa Av9cJAP/Vi8F/2AyCP9qOxD/b0Qa/3BOI/9vVy3/a2E2/2dsPv9jeEX/YINL/1yOT/9amFP/V6BW /1apWf9UsVv/U7pc/lHGXvxQ1l/5UOdf8lLuX+dV8V/dV/Jg0ljzYctZ9WLFW/Viw1v1YsNb9WLD W/Viw1v1YsNb9WLDW/Vi/2EZAv9dIwP/Wi0F/2UvCP9vOBD/dEEZ/3ZLI/91VC3/cV02/2xnP/9o c0b/ZH9M/2CKUv9dlVb/Wp5Z/1inXP5WsF/9VLpg/FPHYvlS3GPzU+hj6VXuY95Y8GTQWvFlyFzy ZsJd8ma9XvJmu17yZrte8ma7XvJmu17yZrte8ma7XvJm/2IZAv9eIwP/XioF/2ktCP90NQ//ej4Y /3xIIv97USz/eFo2/3NjP/9tbUf/aXpO/2SGVP9gkVj/XZxc/VqlYPtYsGL6Vrtl+FXKZvVU4Gfs Vupn31rtZ9Bc72nGXe9qv1/varlg72q1Ye9qs2HvarNh72qzYe9qs2HvarNh72qzYe9q/2MYAv9g IgP/YicF/24qB/95Mg7/fzwX/4JGIf+CTyv/f1g1/3tgPv91aUf/b3RO+2qBVfhmjFv1Ypdf81+h Y/Bcq2buWrZp7FnEaulY2mvhWupr0F3sbcVf7G68YetvtmLsb7Fj7G6tZOxuq2Ttbatk7W2rZO1t q2Ttbatk7W2rZO1t/2QYAv9hIgP/ZiUE/3InB/9+MA3/hTsW/4hFH/+ITSn/hlUz/4JePft9Zkb2 dnBO8nJ8Ve5th1zqaJJi5mScZuNhpmrgX7Jt3V2/b9pd03DSXupwxGDpcrpi6HOzZOhzrWXpc6lm 6XKmZ+pxpGfqcKRn6nCkZ+pwpGfqcKRn6nCkZ+pw/2UXAv9iIQP/aSME/3clBv+CLwz/ijkU/45D Hf+PTCb/jVMw+YpbOvOFY0Ttf2xN6Hl3VeN0gl3ebo1j2WmXadNmoW7PY6xxy2G5dMhhynXFYeV2 uWTmd7Bm5XeqaOZ3pWnmdqJq53Wfauhznmvpc55r6XOea+lznmvpc55r6XOea+lz/2YXAf9jIQP/ bSAE/3sjBf+HLgv/jzgS/5NBGv+VSiP6lFEt85FZN+yNYEHlh2lK34F0U9Z6fl3PdIhlym+RbMVr m3HBaKZ1vWayeLplwnq3Zd17rmjje6dq43uia+R6nmzleJtt5XeZbed2mG7ndZhu53WYbud1mG7n dZhu53WYbud1/2cWAf9kIAP/cB4D/34iBf+LLAn/kzcQ/5hAGP2aSCD0mk4p7JhVM+WVXTzdj2ZH 04hvU8uBeV7Fe4Nmv3WMbrlxlnS1bqF4sGusfK1qu36qatJ/pGzgfp5t4X2ab+J8l3DjepVw5HmT cOV3k3Hmd5Nx5neTceZ3k3Hmd5Nx5neTceZ3/2gWAf9kIAP/cxwD/4EgBP+OKwj/lzUO/50+Ffif RBzvoEsl559SLd+dWjfTlWNGyo5sU8OHdV67gX5ntXuIb693kXWqc5x6pXCofqFvtoGeb8qCm3De gZZx34CTcuF+kXPifJBz43qOc+R5jnPleI5z5XiOc+V4jnPleI5z5XiOc+V4/2kWAf9mHgP/dhoD /4QfA/+SKgf/mzQM/qA7EvOjQRjqpkgg4qdPJ9iiVjbMmmBFw5NpUruNcl6zhnpnrIGEb6Z9jXag eZh8m3ajgJd0sYOUdMWEkXXdg4923oGNduB/i3fhfYp34nuJduR6iXbkeYl25HmJduR5iXbkeYl2 5HmJduR5/2kVAf9pHQP/eBkC/4ceA/+VKAb/njIK+qQ3D++oPRTmrEQa3a1LJNCmVDXGn15EvJlm UrSSb12sjHdnpIeAb56CineYfpR9knuggY16rYSKecCFiHrchId63YKGet+AhnrgfoV64nyFeeN6 hXnkeYV55HmFeeR5hXnkeYV55HmFeeR5/2oVAf9rGwL/excC/4ocAv+YJgX/ojAI9agzDOuuORDi s0EU1rFHI8qrUjTApFxDtp5kUa2YbFylknRmnY19b5aIhnaPhZF9ioKcgoWAqoWBf7yGgIDbhYCA 3YOAf96BgH7gf4B94X2AfeN7gHzkeoB85HqAfOR6gHzkeoB85HqAfOR6/2sVAf9tGQL/fhUC/40b Av+bJAP+pSwG8awvCOezNAvdujoQ0LVGIcWvUTK6qVpCsKNiT6edaluemHJllpN6bo+Pg3aIi458 goiZgXyGp4V5hrmGd4fXhXiF3YN6g96BeoLgf3uB4X18gON7fH/jenx/43p8f+N6fH/jenx/43p8 f+N6/2sUAf9wGAL/gRQB/5AZAf+fIgL6qSYE7bEpBeK6LwbWvzYPyrpEIL+0TzG0rlhAqqhgTqGj Z1qYnm9kj5p3bYiWgHWAkot7eo+WgHSOpIRxjbaFb47RhXGL3YNzid+BdYfgfnaF4X13hON7d4Pk eneD5Hp3g+R6d4PkeneD5Hp3g+R6/2wUAf9zFgL/hRMB/5QWAf+iHgH1rSAC57ghAt3DJgLQwzQN xL5CHrm5TS+us1Y+pK5eTJqpZVeRpW1iiaF1a4CdfnJ5moh5cpeUfm2WooJplbOEZ5bNg2mT3oJs j9+Ab4zhfnCK4nxyiON6cofkeXKH5Hlyh+R5cofkeXKH5Hlyh+R5/20TAf92EwH/iBIB/5gTAP+n GQHvsxYB4sAVANXKHgHJxzIMvsNAHLO+SyyoulQ8nrVcSZSwY1WKrGtfgalyaHmle29yo4V2a6CR e2afn39in7GBYJ/KgGKc4H9ll+F+aJPifGqQ43tsjeR5bYzleG2M5XhtjOV4bYzleG2M5XhtjOV4 /24TAf97EQH/jRAA/50QAPqsEQDauwsA1ckLAM3OGwHCzC8Kt8k9GazFSSmhwFI4l7xaRo24YVGD tWhberJwZHKveWtrrINxZKuPdl+pnnpbqa98WarJfFqn4nteoON7YZvjemOX5HlmlOV3ZpLmd2aS 5ndmkuZ3ZpLmd2aS5ndmkuZ3/3ASAf+ADgH/kg4A8qMLANmzCQDPvgkAy8wJAMTTFwC60iwHsM87 FqXMRiaayFA1j8RYQYXBX018vmdWc7xvXmu5d2VkuIJrXraOcFm1nXNVta51VLbIdVOz53ZXq+Z2 WqTmdlyg53VfnOd0YJrodGCa6HRgmuh0YJrodGCa6HRgmuh0/3ISAf+GDAD7mAkA2akGAM61BwDG wQcAwM8JALrbEwCx2ikFp9g3EpzURCGS0U0wh85VPH3LXUd0yWVQbMdtV2XFdl5exIFjWcOOaFTD nWtRw65sT8TIbU7C7W1QuOtvU7DrcFWr6nBYputwWaPrcFmj63BZo+twWaPrcFmj63BZo+tw/3cP Af+NCADeoAIAz64FAMS5BQC7xQYAtdMKAK7hFgGm4SkGneA3EZPeQh2J3Ewpf9pUNXXXXD9t1WRI ZdNsT1/SdlRZ0oFZVNGOXVDRnWBN0rBiS9PJYkrS7WJLyPJmTb/xaE+48GlRsvBpUq/vaVKv72lS r+9pUq/vaVKv72lSr+9p/38KAO2WAADSpgEAxLIDALm8AwCwyQYAqdgKAKHnGQKZ5yoJkOc3FIfm Qh995UopdORRM2vjWTpk4mFBXuJrR1jidUtT4YBPT+KNU0vim1VJ46xXR+TEV0bj6VdG3fZZR9D3 XEnI915KwfZgS732YEu99mBLvfZgS732YEu99mBLvfZg/4kAANmeAADHrAEAubYCAK7BAwClzgYA nOQMAJXvHQON7ywLhe85FXzvQR5z70knau5QL2LuVzVc7l86Vu5oP1LucUJN73xGSe+JSUbwlktD 8KZNQPG5Tj/y208+8PdOQub7T0Pd+1FE1PxTRc/8VEXP/FRFz/xURc/8VEXP/FRFz/xU4ZUAAMum AAC7sAAArrsBAKLIAgCY1QUAkPgPAYn4IASC+C4Lefk3E3D5Pxto+UYiYPpNKFr6VC1U+lwxT/tl NUv7bThH/Hc7Q/yDPT/9kD88/Z9BOv6vQzj/xkQ3/+pFNvz9RTvy/0Q+6v9EPub/Rj7m/0Y+5v9G Pub/Rj7m/0Y+5v9G0J8AAL2sAACutQAAosIAAJXPAACK3QMAhP8SAXv/HgN0/yoJbP8zD2T/OxZd /0MbV/9KIFH/USRM/1gnSP9gKkT/aCxA/3EuPP97MTn/iDI1/5Y0M/+kNjH/tjcv/9A4Lv/vOS3/ /zkx//85M/z/OTP8/zkz/P85M/z/OTP8/zkz/P85wagAAK+xAACivQAAlMoAAIfYAAB98wcAdv8S AW3/GgNl/yQFXv8tClj/Ng9S/z0TTP9FFkj/TBlD/1MbP/9aHjz/YSA4/2khNf9yIzH/fSUu/4om K/+ZKCn/pykn/7krJv/SLCX/7ywk//8tJP//LST//y0k//8tJP//LST//y0k//8tsa4AAKO5AACU xgAAhtMAAHnhAABx/wgAZ/8PAV//FQJX/x4DUf8mBUv/LgdG/zYKQf89DD3/RA45/0sQNv9REjL/ WBMv/18VLP9nFin/cRcm/3wYI/+JGiD/mBsf/6YcHf+3HRz/yh4c/+YfG//wHxv/8B8b//AfG//w Hxv/8B8b//AfpLUAAJXCAACGzwAAd94AAGv0AABi/wMAWf8LAVH/EQFK/xcCRP8fAz//JgQ6/y0F Nv80BjL/Ogcu/0AIK/9GCCj/TAkl/1IJIv9ZCiD/Ygsd/2sMGv92DRf/hA4V/5IPFP+gEBP/rRET /7oRE//DEhP/wxIT/8MSE//DEhP/wxIT/8MSl74AAIbMAAB32wAAaecAAFz9AABU/wAAS/8FAEP/ DAE9/xECN/8XAjL/HgMu/yQDKv8qBCX/LwQi/zUFH/86BR3/PwUa/0UGGP9LBhb/UgYU/1oHEv9i BxD/bAcP/3cIDf+ECAz/kAgM/5wIDP+iCAz/oggM/6IIDP+iCAz/oggM/6II/1AgAv9LKgP/RDYF /0c6Bv9KPwj/TkkP/09UF/9PYB7/TWwk/0p5Kv9IhS7/RpAy/0SaNP9Dojf/Qqo4/0GxOv9AuTv/ QME8/z/LPf8+3D7/Pug+/z3zPv89+z//Pv8+/0D/PvpD/z30RP8+7kb/P+5G/z/uRv8/7kb/P+5G /z/uRv8//1AgAv9LKgP/RTUF/0o4Bv9NPQj/UUgP/1JSF/9RXh7/T2ol/013K/9Kgy//SI4z/0aY Nv9EoTj/Q6k6/0KwPP9CuD3/QcE+/0DLP/9A3ED/P+lA/z/0QP8+/UH/QP9A/UL/QPZF/0DwRv9B 6Uj/QelI/0HpSP9B6Uj/QelI/0HpSP9B/1EfAv9MKQP/RzQF/002Bv9ROwj/VUYQ/1ZQGP9VXB// Umgm/1B0LP9NgDH/Sow1/0iXOP9GoDv/Rag8/0SwPv9DuD//Q8FB/0LMQf9B3kL/QetD/0D1Q/9A /UP/Q/9D+Eb/QvBI/0PqSf9E40r/ReNK/0XjSv9F40r/ReNK/0XjSv9F/1IfAv9NKQP/SjIE/1Az Bv9VOQj/WUMQ/1pNGP9ZWCD/VmQn/1NxLf9QfTP/TYk3/0uUOv9Jnj3/R6Y//0auQf9Ft0L/RMFE /0TMRf9D30X/Qu1G/0L3Rv9D/Ub5Rv9G8En/RulL/0fiTP9I203/SNtN/0jbTf9I203/SNtN/0jb Tf9I/1MeAv9OKAP/Ti8E/1QwBv9aNgj/XkAQ/2BKGP9eVSD/W2Ao/1htL/9UeTT/UYU5/06RPf9M m0D/SqRC/0mtRP9Itkb/R8FH/0bNSP9F4Un/RO9K/0X4SvtH/UrxSv9J6E3/S99O/0zXT/9Mz1H/ TM9R/0zPUf9Mz1H/TM9R/0zPUf9M/1QdAv9QJwP/UiwE/1ktBf9fMgj/ZDwQ/2ZHGP9kUiD/YVwo /11oMP9adTb/VoE7/1KNP/9PmEP/TaJF/0yrSP9KtUn/Sb9L/0jMTP9I4U3/SO5N/Ej5TvJL/E3n Tv1P3VD9UNJS/lDMU/9RxlT/UcZU/1HGVP9RxlT/UcZU/1HGVP9R/1UdAv9RJwP/VikE/14qBf9k Lwj/ajoP/2xFF/9sTyD/aFko/2RjMP9gcDf/XHw9/1iIQv9Vk0b/U51J/1GmS/9PsE3/TrpP/U3G UPpN2VH2TOpR8k33UedQ+lLbUvtUzlT8VcdW/VXBV/5VvFj+VbxY/lW8WP5VvFj+VbxY/lW8WP5V /1ccAv9SJgP/WiYE/2ImBP9qLAf/cTcO/3NCFv9zTB//cFYo/2tgMP9mazj/Y3c+/l+DRPtbjkj5 WJhM91ahT/VVq1HzU7VT8VLBVO9R0FXrUedV5lL2VtpU+VjMVvpZw1j7Wrxa+1q3W/tZs1z7WbNc +1mzXPtZs1z7WbNc+1mzXPtZ/1gbAv9TJQP/XiMD/2cjBP9wKgb/dzUN/3pAFf96Sh3/eFMm/3Nc L/xuZjf4aXI/9GV+RfFhiUruXpNO61ydUuhZplXmWLBX5Fe8WOJWzFneVuRZ2Fb0W8pY913AWvhe uFz4XrNd+F6uXvhdq1/5XKtf+VyrX/lcq1/5XKtf+VyrX/lc/1kbAv9WIwP/YiAD/2wgA/91KAX/ fTML/4A9E/+BRxv/f1Ak+XtZLfR2YjbucW0+6mx5ReZohEviZI5R3mGYVdteolnWXKxb01u4XtBa xl/NWt9gyFryYb5c9WK1XvRirmD1Yqph9WGmYvZho2P3X6Nj91+jY/dfo2P3X6Nj91+jY/df/1oa Av9ZIQL/Zh0C/3AeA/96JgT/gjEJ/4Y7EP+IRBn5hk0h8oNWK+t+XjTleWk94HR0Rdpvf0zTaolT z2aSWMtjnF3HYaZgxF+xY8Fev2S+XtJlul/sZrJg8marYvJmpWTyZaFl82SfZfRjnGb1Ypxm9WKc ZvVinGb1Ypxm9WKcZvVi/1saAv9cHwL/aRsC/3UcAv9+JAP/hy4I/4w4DvuOQhbyjkoe64tSJ+SH WzDdgWY603pwRc11ek7IcINVw2yNW75plmC6ZqBkt2SrZ7RjuGmxYspqrmPmaqhk72qiZu9pnWfw aJpo8WeYafJmlmnzZJZp82SWafNklmnzZJZp82SWafNk/1sZAv9fHAL/bBgC/3kbAv+DIQP/jCwG /5E2C/WUPxLslUcZ5JNPItyOWC3Sh2I6yoFsRcN7dU6+dn9WuHKIXbRukWKva5tmq2mmaqhns2yl Z8Nuomfgbp5p7W2Zau5slmvvapNs8GmSbPFnkGzyZpBs8maQbPJmkGzyZpBs8maQbPJm/1wZAf9i GgL/cBYC/3wZAv+GHwL/kCkE+pYzCfCaPA7nm0QV35pLHdOUVSzKjV85wodpRbuBcU+1fHtXr3iE Xqp0jWOlcZdooW6ibJ1srm+abL5wmGzZcZVt62+Rbuxuj2/tbI1v72qMb/Bpi2/xZ4tv8WeLb/Fn i2/xZ4tv8WeLb/Fn/10ZAf9kGQL/chQB/38YAf+KHQH/lCYD9pswBuufOArioj8Q2J9HHM2ZUivE kl05u4xmRLSHbk6tgndXp32AXqJ5iWSddpNpmHOebZRxqnGQcbpyjnHRc4xy6nGKc+tviHPtbYdz 7muHc+9qhnLwaIZy8GiGcvBohnLwaIZy8GiGcvBo/14YAf9nFwH/dRMB/4MWAf+OGgH+mCMC8Z8s BOelMwfdqDkM0aNFG8edUCq+l1o4tZJjRK2MbE6mh3RXoIN8Xpp/hmSVfI9qkHmabot3pnKIdrZ0 hXbMdIR36XKDd+pwgnfsboJ27WyCdu9qgXbwaYF28GmBdvBpgXbwaYF28GmBdvBp/14YAf9pFQH/ eBIB/4YUAf+RGAH6nB8B7aQnAuKqLATWrDQLy6dDGsGiTim4nFg2r5dhQ6eRaU2gjXFWmYh5XpOF gmSNgYxqiH+Xb4N9pHJ/fLN0fXzIdXx96HN8fOpxfHvsb3167W19ee5rfXnwaX158Gl9efBpfXnw aX158Gl9efBp/18YAf9rEwH/exEB/4kTAP+VFQD1oBoB6KkgAd2wJAHQsDIKxqxBGLymTCezoVY1 qpxfQaKXZ0yakm9Vk453XYyLgGSGiIppgYWVbnyDoXJ3grB0dYLFdXSD53N1gepxdn/rb3d+7W14 fe5reHzwaXh88Gl4fPBpeHzwaXh88Gl4fPBp/2AXAf9uEgH/fhAA/4wRAP+ZEQDxpBMA464WANa2 HAHLtDAIwbA/F7erSyWtplQzpKFdQJydZUqUmGxTjJV0W4aRfWJ/jodoeYySbXSKnnFwiK10bYjB dG2J5HNvh+pxcITsb3KD7W1zge5rdIDwaXSA8Gl0gPBpdIDwaXSA8Gl0gPBp/2EXAf9xEAH/gg4A /5AOAPWdDQDjqQwA2bUMAM+5GgDFuC4Hu7Q9FbGwSSOnq1IxnqdbPpajY0iOn2pRhptyWX+YemB4 lYRmcpOPbG2RnG9pkKpyZpC+c2WR4XJojutwaorsbmyI7Wxthu9rboTwaW6E8GluhPBpboTwaW6E 8GluhPBp/2MVAf91DgH/hg0A+JQLANyiCADUrQkAz7gKAMm9FwC/vCsGtbk7E6u2RyGhsVAvmK1Z O4+qYUaHpmhPf6NwV3igeF5ynoFka5uMaWaamW1imahvX5m8cF6Z329gluxuY5HtbWaO7mtni+9q aYnwaGmJ8GhpifBoaYnwaGmJ8GhpifBo/2cSAf95DAD/igoA35oEANOmBwDMsQgAx7sIAMHCEwC4 wigErr84EKW8RB6buE4skbVXOIixXkKArmZLeKttU3Gpdlprp39gZaWKZGCjl2hbo6ZrWaO6bFij 3GtZoO5rXJrval+W8GlhkvFoY4/xZmOP8WZjj/FmY4/xZmOP8WZjj/Fm/2sQAf9+CQDxkAQA1p4D AMyqBgDEtAYAvr4FALjIEACwyCQDp8Y1DZ3DQhuTwEwoir1UM4G6XD55t2RGcbVrTmuzdFRksX5a X7CJX1qvlmJWrqVlU665ZlKv22VSq/JmVaTyZlif8mZam/NlXJfzZFyX82Rcl/NkXJfzZFyX82Rc l/Nk/3ANAP+EBADdlgAAzqMDAMSuBAC7twQAtMIFAK7NDACnziACns0xCpXLPhaLyEkjgsZSLnrD WjhywWJAa8BqR2S+c01evXxTWbyIV1S7lVtQu6VdTru5Xk28211LufdfTrH2YFGq9mBTpfZgVaH2 YFWh9mBVofZgVaH2YFWh9mBVofZg/3cIAOuMAADTmwAAxqgCALuxAgCyuwIAqscGAKLTCgCd1hoB ldYsBozUOhGD0kYdetBPJ3LOWDFqzWA4ZMtoP17KckVYynxJVMmITU/JlVFMyaVTSsm5VEnK3FNH yPdVSMD8WEq4+1lMsvtaTq36Wk6t+lpOrfpaTq36Wk6t+lpOrfpa/38AANyTAADKogAAvKwBALG1 AACowAMAn8sGAJbZCwCR4BsBit8sBoLfOQ553kMXcd1NIGrcVihj218vXdpnNVjZcTpT2Xs+T9mI QkvZlkVI2aZHRtq6SEXb20dE2PRJQtP/TUTJ/09Fwv9QR7v/Uke7/1JHu/9SR7v/Uke7/1JHu/9S 5ooAAM+bAAC/pwAAsrAAAKe7AACcxgMAk9EGAIvqDgCF6B8CfugtBnboOA5u6EEWZudKHV/nUiNZ 51spVedkLVDnbTFM53g1SeeEOEbokTpD6KA8QOmyPj/qyz4+6O8+Peb/Pz3g/0I/1/9EQM7/RkDO /0ZAzv9GQM7/RkDO/0ZAzv9G1pMAAMSjAAC0rAAAp7YAAJvBAACQzAIAhtkGAIDyEgB58h8CcfIr BmryNgxj8z8SXfNHGFfzTx1S81chTfRgJEn0aShG9HMqQvV+LT/1iy889pkxOvapMzj3vjQ2+OE1 NvX5NTXz/zQ37P82OeX/ODnl/zg55f84OeX/ODnl/zg55f84yJ4AALapAACosgAAm70AAI/IAACD 1AAAeegHAHP8EgFr/R0CZP0nBF7+MQhY/jsNU/9DEU3/SxVJ/1MYRf9aGkH/Yx0+/2wfO/92ITf/ giM0/5AlMv+fJzD/sCgu/8gpLf/qKiz//yos//8qL/n/Ki/5/yov+f8qL/n/Ki/5/yov+f8quaYA AKquAACcuQAAjsUAAIHRAAB13gAAbfoJAGX/EQFe/xoCV/8jA1L/LAVM/zQHSP88CkP/RAw//0wO PP9TEDj/WxI1/2MUMv9sFi//dxcs/4QZKf+TGif/ohwl/7QdJP/MHiP/7R4i//0fIv//HyL//x8i //8fIv//HyL//x8i//8frKsAAJ22AACPwgAAgM4AAHPcAABn6QAAX/8GAFj/DgBR/xUBS/8dAkb/ JgNB/y0EPP81BTj/PAY0/0IHMf9JCC7/UAkr/1cKKP9fCiX/aQwj/3QNIP+CDh3/kg8b/6IQGv+y ERn/yBIY/+UTF//6FBf/+hQX//oUF//6FBf/+hQX//oUn7MAAJC/AACAzAAActoAAGTkAABY9QAA Uf8BAEr/CwBE/xABPv8XATn/HgI0/yUCMP8sAyz/MgQo/zgEJf8+BSL/RAUf/0oFHP9RBhr/WQYX /2MHFP9uBxL/fAgQ/4wID/+cCA7/rAkO/7sJDf/TCQ3/0wkN/9MJDf/TCQ3/0wkN/9MJkbwAAIHJ AABy1wAAZOQAAFTrAABL/wAARP8AAD3/BAA3/wwAMf8QASz/FgEo/xwBJP8iAiD/JwIc/ywCGf8x Axb/NgMT/zwDEf9CAw//SQQN/1EEC/9aBAn/ZgQG/3MFA/+BBQL/kAUB/5wFAf+rBQH/qwUB/6sF Af+rBQH/qwUB/6sF/0QkAv8/LgP/PDYE/0A4BP9BPQb/QUUI/0FRDf9AXRP/P2oY/zx3HP86hCD/ N5Ej/zabJf81pCf/NKwo/zS1Kv8zviv/Msgr/zLVLP8x5S3/MfEt/zH7Lf8w/y3/MP8t/zP/Lf82 /yz+OP8t+Tr/LvY7/y72O/8u9jv/LvY7/y72O/8u/0UjAv8/LgP/PjQD/0I2BP9EOwb/REMI/0VP Df9EWxP/QWgZ/z91Hf88giH/Oo8k/ziaJ/83oyn/Nqwq/za0LP81vS3/NMgu/zTWLv8z5i//M/Iv /zL8MP8y/zD/M/8v/zb/L/85/y/5O/8w9D3/MfE9/zHxPf8x8T3/MfE9/zHxPf8x/0YjAv9ALQP/ QTID/0YzBP9IOAb/SEAI/0lMDv9IWBT/RWUa/0JyH/9AfyP/PYwm/zuYKf86oSv/Oaot/zizLv83 vS//Nscw/zbVMf825jL/NfEy/zX7Mv81/zL/Nv8y/zr/Mfo9/zPzPv807UD/NOpB/zTqQf806kH/ NOpB/zTqQf80/0ciAv9BLAP/RS8D/0kwBP9MNQb/TT0I/05IDv9NVBX/S2Eb/0huIP9FeyX/Qogo /z+UK/8+ni7/Pacv/zyvMf88uDL/O8Mz/zrPNP864TX/Ou41/zr4Nf86/zX/Ov81+z7/NfJB/zfr Qv845UT/OOFF/zjhRf844UX/OOFF/zjhRf84/0giAv9DLAP/SCwD/04tBP9RMQX/UzkI/1VFDv9T URX/UV0c/05qIf9Ldyb/SIMr/0WPLv9EmTD/QqIz/0GrNP9BtDb/QL03/z/JOP8/2zj/P+o5/z/1 Of8//zn7QP848UP/OuhF/zzhR/882kj/PdVJ/z3VSf891Un/PdVJ/z3VSf89/0khAv9EKgP/TSgD /1MpBP9XLQX/WTYI/1xCDv9bThX/WFkc/1VlIv9Scij/T34t/0yKMP9KlDP/SJ42/0emOP9Grzn/ Rbg7/0XEPP9E0jz8ROU9+ETyPfVF/jzxRf8+5kj/QNxK/0HSS/9BzE3/QclN/0HJTf9ByU3/QclN /0HJTf9B/0ogAv9IJwL/USUD/1glA/9dKgT/YDMH/2M/Dv9iShX/YFUc/1xhI/9ZbSn/VXku/1KE M/9Qjzb9Tpk5+0yiO/pLqj34SrQ/90q+QPVJzEDxSeFB7UrwQepK/ELkSv9E2Ez/RcxP/0bGUP9G wFH/Rr5R/0a+Uf9GvlH/Rr5R/0a+Uf9G/0wgAv9MJAL/VSEC/10hA/9jJwT/ZzEG/2o8DP9qRxT/ Z1Ib/2NcI/9faCr7XHQw91l/NfVWijnyVJQ88FKdP+5RpkHsUK9D6k+6ROhOx0TmT91F4U/uRd1O +0jUT/9JyFH/SsBT/0q6VP9KtlX/SrRW/0q0Vv9KtFb/SrRW/0q0Vv9K/00fAv9QIQL/Wh4C/2Ie Av9pJQP/bS0F/3E5C/9xRBL/b04a+2tYIvVmYynxY28w7WB6NulchTvmWo8/5FiYQuFWokTfVatG 3FO2SNpSw0rWUthK0VPsS8xT+k3FVP9OvFb/T7VX/0+wWP9OrFn/Tapa/02qWv9Nqlr/Tapa/02q Wv9N/04eAv9THgL/XhsC/2cbAv9uIgP/cyoE/3c1Cf94QBD5d0oY8nNUIOxvXijna2ow4md1Nt5j gDzZX4pB1F2TRtFbnUnOWaZMy1iwTshXvFDGVs1Rw1fmUb5X91K4WP9TsFr/U6tc/1KnXf9So13/ UaJd/1CiXf9Qol3/UKJd/1CiXf9Q/08eAv9XGwL/YhcB/2wZAv90IAL/eScD/34yB/mAPA3xf0YV 6ntQHeR3Wybdc2Yu1W1wN9Bpej7LZYREx2KOScRgl03AXqBQvV2qU7tbtlW4W8VWtVvfVrJc81es Xf1Xpl79VqFg/lWeYP9UnGH/U5ph/1OaYf9TmmH/U5ph/1OaYf9T/1AdAv9aGQH/ZRUB/3AXAf94 HQH/fyQC/YQuBfOGOArqhkIR44RLGdt/VyPReWIvy3RsOMVvdkDAbH9GvGiIS7hmkVC1Y5tTsWGl Vq5gsFmrX79aqV/UW6Zg71uiYfpanWP7WZlk/FiWZP1XlWX+VZRl/lWUZf5VlGX+VZRl/lWUZf5V /1AdAv9dFwH/aRIB/3QVAf99GgH/hCEB94kqA+2NNAfkjT0N3ItIFtGFVCPJf14uwnpoOLx1cUC3 cXpHsm6ETa5rjVKqaJZWp2agWaNlq1ygZLlenmTNXptk6l6YZvhdlGf5XJJo+1qQaPxZjmj9V45o /VaOaP1Wjmj9Vo5o/VaOaP1W/1IcAf9fFAH/bBEB/3gTAf+BFwH/iB0B8o8lAueTLwTelTgJ05BF FcqLUSLChVsuu4BlOLR7bkGvd3dIqnR/TqVwiFOhbpJXnWucW5lqp16WabVglGjIYZJp5mCPavdf jWv4XYtr+VyJbPtaiGz8WIhr/FiIa/xYiGv8WIhr/FiIa/xY/1QaAf9iEwH/bxAB/3sSAP+FFAD6 jRkA7ZMfAeKZKALYmTMIzJVCFMSQTiG8i1kttIViN66Ba0CofHNIonl8Tp12hVSZc45YlXGYXJFv pGCNbrFii23DY4lu4mKHb/Zhhm/3X4Vv+V2Eb/pbg2/7WYNv/FiDb/xYg2/8WINv/FiDb/xY/1YY Af9kEQH/cg4A/34QAP+IEQD1kRQA6JgZAN2eIAHRnjEHx5pAE76VTCC2kFYsrotgN6eGaEChgnBI nH55TpZ7glSSeItZjXaVXYl0oGGFc65jgnK/ZIBz3mSAdPVif3T2YH9z+F5+c/lcfnL6Wn5y+1l+ cvtZfnL7WX5y+1l+cvtZ/1gXAf9nEAH/dQ4A/4EOAP+MDgDxlRAA450RANajGwDLoS8Gwp4+ErmZ Sh6wlFQrqZBdNqKLZj+bh25HlYR2TpCAf1SLfohZhnuSXYF5nmF9eKtkeni8ZXl42WV4efRieXj2 YHl3+F55dvlceXX6Wnl1+1p5dftaeXX7Wnl1+1p5dfta/1oVAf9pDgD/eAwA/4QMAO+QCwDdmgoA 2aILANCmGADGpSwFvaI8ELSeSB2rmVIpo5VbNJyRYz6VjWtGj4lzTYmGfFOEhIVYf4GQXXp/m2F2 fqhkc325ZXF+02VxfvJjcn32YHN79150evlcdHn6W3V5+1p1eftadXn7WnV5+1p1efta/10TAf9s DQD/ewsA9ogJANyTBgDVnQkA0aUKAMqqFQDBqSoEt6Y6D66iRhumnlAonppZM5aWYTyPk2lEiY9x TIONeVJ9ioNXeIiNXHOGmWBvhKZjbIS3ZGqEz2RqhPBibIL2YG2A915vf/lcb336W3B8+1pwfPta cHz7WnB8+1pwfPta/18RAf9vCgD/fggA44wDANaXBQDPoAcAyqgIAMSuEwC7rScDsqs3DamnRBmg pE4mmKBXMZGcXzqKmWdDg5ZvSn2Td1B3kYBWco+KWm2Nll5oi6NhZYu0Y2OLzGNji+5hZYn3X2eG +F5phPlcaoL6WmuB+1prgftaa4H7WmuB+1prgfta/2IQAP9yBwD4ggMA248CAM+aBQDJowYAw6wG AL2yEAC1siQCrLA1C6OtQhebqkwjkqZVLoqjXTiDoGVAfZ1sR3abdE1wmX1Ta5aIWGaVlFxilKFf X5OyYF2TyWBdk+1fXpD4XmGM+VxjivpbZIf7WmWG+1llhvtZZYb7WWWG+1llhvtZ/2YNAP93AwDj hwAA05MBAMqeBADCpwQAu68EALW2DQCutyECpbYyCZ2zPxWUsEogjK1TK4SqWzR9qGM8dqVqQ3Cj ckpqoXtPZaCGVGCekVhbnZ9bWJ2wXVadx11WnetcV5r6W1qV+lpckftZXo78WF+N/FdfjfxXX438 V1+N/FdfjfxX/2oKAP98AADcjAAAzZgAAMOjAwC6qgIAs7MBAKy8CgCmvR0BnrwvBpa6PBGNuEcc hbVQJ32zWTB2sWA4b69oP2mtcEVjq3lKXqqET1qpkFJVqJ5VUqevV1GoxldQp+pXUKX8V1Of/VdV mv1WV5b+VliV/lVYlf5VWJX+VViV/lVYlf5V/28EAOaCAADSkQAAxp0AALumAQCyrgAAqrcBAKLC BQCcxBgAlcMqBI3COQ2FwEQYfb5OIXW8Vipuul4yaLlmOGK3bj5dtnhDWLWCR1S0j0tQtJ1OTbOu UEu0xVBLs+pQSrH/UUyr/1JOpf9SUKH/UlGe/1FRnv9RUZ7/UVGe/1FRnv9R/3YAAN2JAADKlwAA vqIAALOqAACpswAAoLwCAJjGBgCRzBIAi8wlAoTLNAl8yUASdchKG23HUyNnxVwqYcRkMFzDbTZX wnY6U8KBP0/BjkJLwZ1FSMGuRkfBxUZHwepGRL7/SUW5/0pHs/9LSa3/TEqr/0xKq/9MSqv/TEqr /0xKq/9M6X8AANGQAADCngAAtacAAKqvAACguAAAlsECAIzLBwCE1Q0AgNUeAXnVLgVy1DwMbNNH FGXSUBtf0VkhWtFiJ1XQayxR0HUwTc+BNEnPjjdGz505RNCuO0LQxjtD0Oo6QM39Pj7L/0BAw/9C Qb3/Q0K5/0RCuf9EQrn/REK5/0RCuf9E3YgAAMeYAAC4owAAq6sAAKC0AACVvgAAi8gDAIDRBwB4 4Q0AdOEdAW7hKwNo4DcIYeBCDlzgTRRX4FYZU+BfHU/gaSJL4HMlR+B+KETgiytC4JotP+GrLz7i wS8+4uUvPN/6MTne/zQ52f82OtD/ODvM/zk7zP85O8z/OTvM/zk7zP85zZIAALygAACtqAAAobEA AJW7AACJxQAAfs8CAHTaBgBu6xEAaOseAWLrKgNd7DUGV+w/C1LsSA9N7FETSu1aFkbtYxlD7W0c QO14Hj3uhSE67pMjOO+jJDbwtiY18dImNO/zJjTs/yYy6/8oMuf/KzPk/ywz5P8sM+T/LDPk/ywz 5P8swZwAALCmAACjrgAAlrgAAInDAAB9zQAAcdgAAGfmBgBi9hEAXPcdAVf3JwJS9zEETfg6Bkj5 QglE+UsLQfpUDj76XBA7+2USOPtvFDX7exYy/IkYMP2YGS79qhss/r8cK//jHSr8+h0q+v8dKvf/ HCr3/x0q9/8dKvf/HSr3/x0q9/8ds6MAAKSrAACXtgAAicEAAHvLAABv1gAAY98AAFv1BgBV/xAA UP8ZAUv/IwJG/ywDQv80BD7/PAU6/0MGN/9LBzT/Uwgx/1sJLv9kCiv/bwwo/3wNJv+LDiT/nBAi /64RIf/FEiD/6RMf//wTHv//Ex7//xMe//8THv//Ex7//xMe//8TpqkAAJizAACKvwAAe8oAAG7V AABg3wAAVOcAAE7/BABJ/w4AQ/8UAD//HQE6/yUCNv8sAjL/MwMv/zoDK/9BBCj/SAQl/08FIv9X BSD/YAYd/2wHGv95Bxj/iggW/5sIFf+tCRT/wwkT/+MJE//4CRP//woT//8KE///ChP//woT//8K mrEAAIu9AAB8yAAAbdQAAF/gAABR5gAAR/UAAEH/AAA8/wkAN/8QADL/FQEu/x0BKv8jASb/KQEi /y8CH/81Ahz/OwIZ/0IDFv9JAxP/UQMR/1oDD/9mBA3/dAQL/4UECv+WBQn/qAUI/7kFB//QBQf/ 4wUH/+MFB//jBQf/4wUH/+MFjboAAH3HAABt0wAAX+AAAFDnAABC7QAAOv8AADX/AAAv/wIAKv8K ACb/DwAi/xQAHv8aARr/HwEW/yMBE/8oARD/LQEO/zMBDP85Agr/QQIH/0kCA/9TAgD/XgIA/2wC AP98AwD/jQMA/50DAP+sAwD/tQMA/7UDAP+1AwD/tQMA/7UD/zknAv8zMgL/NTQD/zg2A/84OwT/ NkMF/zNOB/8xWwn/L2gN/y12Ef8rhBT/KZEW/ymbGP8opBn/KK0a/yi1G/8nvhz/J8gc/yfUHf8n 5B3/J+8e/yf5Hv8n/x7/J/8e/yf/Hf8o/x3/K/8e/y3/H/wv/x/8L/8f/C//H/wv/x/8L/8f/zon Av80MQL/ODED/zs0A/87OQT/OkEF/zdLB/81WAr/M2UO/zFzEv8vgRX/LY4X/y2YGf8soRv/LKoc /yuyHf8rux7/K8Qf/yvQH/8q4SD/Ku0g/yr3IP8q/yD/K/8g/yv/H/8s/x//L/8h/DH/Ivcz/yL3 M/8i9zP/Ivcz/yL3M/8i/zsmAv81MAL/Oy8C/z4xA/8/NgT/Pj0F/zxIB/87VQv/OWIP/zdvE/81 fRf/M4oZ/zKVG/8xnh3/MKce/zCvH/8wtyD/L8Ah/y/LIv8v3CL/L+oj/y/1I/8v/iP/L/8i/zD/ Iv8w/yP7M/8l9TX/JfA3/ybwN/8m8Df/JvA3/ybwN/8m/zwmAv85LQL/PywC/0MtA/9EMgT/QzkF /0NFB/9CUgv/QF8Q/z5rFf87eBj/OYUb/zeQHv83miD/NqMh/zWrIv81syP/NLwk/zTGJf801CX/ NOYm/zTxJv80+yb/Nf8l/jX/Jvo2/yjzOP8p7Dr/KeY8/yrmPP8q5jz/KuY8/yrmPP8q/z0lAv89 KgL/QygC/0cpA/9JLQT/SjYF/0pBB/9JTQz/R1oR/0VnFv9CdBr/QIAd/z6MIP89lSL/PJ4k/zum Jv87rif/Orco/zrBKP86zSn/OuEp/jruKfs6+Sn3O/8p9jr/K/A7/y3oPf8u4T//LttB/y7bQf8u 20H/LttB/y7bQf8u/z4lAv9BJgL/SCQC/0wlAv9PKQP/UjMF/1E+B/9RSQz/T1YS/0xiF/9Kbxz/ R3sg/0WGI/9DkSX/Qpon/0GiKf9Bqir9QLIr/EC8LPs/yC34P9st9EDrLfBA9y3tQP8v6z//MeRB /zLbQ/8z0UT/M8tG/zPLRv8zy0b/M8tG/zPLRv8z/0AkAv9FIwL/TCAC/1IhAv9WJgP/WS8E/1k6 B/9ZRgz/VlES/1RdGP9Rah3+TnUh/EyBJflKiyj3SZUr9UedLPNHpi7yRq4v8EW4MO9FxDHtRdMx 6EboMeVG9jLiRf8130T/NtNH/zfKSP84xEr/OL9L/ze/S/83v0v/N79L/ze/S/83/0EjAf9JHwH/ URwB/1ccAv9cIwL/YCwD/2A2Bv9gQQv/Xk0R/VtYGPhYZB30VXAj8VN8J+5QhivrT5Au6U2ZMOdM oTLlTKoz40u0NOJLwDXgS88120vmNtVK9DjRSv86zkr/PMRM/zy9Tf88uE//PLRP/zu0T/87tE// O7RP/zu0T/87/0IiAf9MHAH/VRgB/1wZAf9jIAL/ZigD/2gyBf9oPQn6ZkgQ9GNTF+5gXx3qXWsj 5lp2KOJXgS3fVYsw3FOUM9lRnTbVUKY400+vOtBPuzvOTsk8y0/hPcdP8j7DT/9AwE//QbdR/0Gx Uv9ArVP/QKpU/z+qVP8/qlT/P6pU/z+qVP8//0YfAf9QGQH/WRUB/2IXAf9oHQH/bCQC/28uA/lv OAfxbkQO62tOFeVoWxzfZGcj2mBxKtRdey/QW4U0zFiOOMlXlzvHVaA9xFSpP8JTtEG/U8JCvVPW Q7lT7US2U/1Fs1T/RaxW/0SnV/9EpFj/Q6FY/0KhWP9CoVj/QqFY/0KhWP9C/0gdAf9TFgH/XRIB /2YUAf9tGQH/ciEB+3UpAvJ2MwXpdj4L4nNKEttvVxrSa2IjzWdsK8hkdjHEYX83wF6JO71ckj66 W5pBt1mkRLVYrkayV7tHsFfNSK1Y6EiqWPpJp1n/SKFa/0idW/9Hm1z/Rplc/0WZXP9FmVz/RZlc /0WZXP9F/0saAf9XEwH/YRAA/2sSAP9yFgD/eBwB9XskAet9LQPifjkH2XtGENB2UxrJcV4kw21o LL5qcTO6Z3s4tmSDPbJijEGvYJVFrF6fR6ldqUqmXLZLpFzHTKJc4k2fXfdMnF7/TJhf/0qVYP9J k2D/SJFg/0eRYP9HkWD/R5Fg/0eRYP9H/04YAf9aEQH/ZA4A/28QAP92EwD8fRcA74EeAeSEJwLb hDQF0IFDD8h8TxnBeFoju3NkLLVwbTOxbHY6rWp/P6lniEOlZZFHomObSp9ipU2cYbFPmWDBUJdg 3FCVYfNPk2L/TpBj/0yOZP9LjGT/Sotk/0iLZP9Ii2T/SItk/0iLZP9I/1AWAf9cEAD/aA0A/3IO AP96EAD2gRIA6YYXAN6KIAHSijAEyYZADsGCTRm6fVcjtHlhLK51ajSpcnI6pG97QKBshESdao1I mWiXTJVnoU+SZq1RkGW9Uo5l1FOMZvBRi2f/UIhn/06HaP9Mhmj/S4Vn/0mFZ/9JhWf/SYVn/0mF Z/9J/1IUAf9fDgD/awsA/3UMAPl+DQDwhQ4A44sQANaPGgDMji4Ew4s9DbuHShi0g1UirX5eK6d7 ZzOid286nXR4QJlygEWVb4lJkW2TTY1snlCKaqpTh2q5VIVqz1SEa+5Tg2z/UYJs/0+Ba/9NgGv/ TIBr/0qAa/9KgGv/SoBr/0qAa/9K/1QSAf9hDAD/bgoA/XgJAOiCCADciQkA2I8LANCTFwDGkysD vpA7DLaMSBeuiFIhp4RcK6GAZDOcfG06l3l1QJJ3fUWOdYZKinKQToZxm1GCb6dUf2+2VX1vy1Z8 b+tUfHD/Untw/1B7b/9Oe2//TXtu/0t7bv9Le27/S3tu/0t7bv9L/1cRAP9jCgD/cAcA8HwFANyF BQDUjAgA0JMJAMqWFADBlykDuZQ5C7GQRhapjVAgoolaKpyFYjKWgmo5kX9yP4x8ekWHeoNKg3iN Tn92mFF7daRUeHSzVnZ0yFZ1dOhVdXX9U3V0/1F1c/9PdnL/TXZx/0x2cf9MdnH/THZx/0x2cf9M /1kQAP9mBwD/cwQA4X8BANaIBADPkAYAypYIAMSaEgC8myYCtJg3CayVRBSkkU4fnY5XKJaKYDGQ h2g4i4RwP4aCeESBf4FJfX2LTXh7llF0eqJUcXmxVm95xVZueuZVbnr8U295/1Fwd/9PcXb/TXF1 /0xxdf9McXX/THF1/0xxdf9M/1sOAP9pBAD2dwAA3YIAANCLAwDJkwUAxJkGAL6eEAC2nyQCrp00 CKaaQROflkwdmJNVJ5GQXi+LjWU3hYptPYCIdUN7hX5IdoOITHKCk1BugKBTa3+uVWh/wlZnf+NV aID6U2l+/1FqfP9Pa3v/TWx5/0xsef9MbHn/TGx5/0xsef9M/14MAP9sAQDmegAA1oYAAMuPAgDE lwQAvp0EALiiDgCxoyEBqaIyB6GfPxGZnEobkplTJYuWXC2Fk2M1f5FrO3qOc0F1jHxGcIqFS2uI kU9nh51SZIasVGKGv1VhhuFUYYb5UmOE/1Blgf9PZn//TWd+/0xnfv9MZ37/TGd+/0xnfv9M/2EK AP9vAADgfgAA0IkAAMaTAQC/mwMAuKECALGmCwCqqB4Bo6cvBZulPQ+UokgZjJ9RIoWcWSt/mmEy eZhpOXSVcT9vk3lEapKDSGWQjkxhj5tPXo6qUluOvVJajt5SW434UFyL/09eiP9OYIX/TGGD/0th g/9LYYP/S2GD/0thg/9L/2QFAPV0AADaggAAy44AAMGXAAC4ngEAsaUAAKmrBwCjrRoAnKwsBJWr OgyNqEUWhqZPH3+kVyh5ol8vc6BmNW2ebjtonHdAY5qBRV+ZjElbmJlMV5eoTlWXu09Ul9xOVJb2 TlWU/01YkP9MWY3/S1uK/0pbiv9KW4r/SluK/0pbiv9K/2gAAOV5AADRhwAAxZIAALucAACxogAA qakAAKGxAgCbsxUAlbMoAo6yNgmGsEISf65MG3isVCNyqlwqbKhkMWenbDZipXU7XaR/QFmjikNV opdHUaGnSU+hukpOotlJTqD1SU6f/0lQmf9JUpb/SFSS/0dUkv9HVJL/R1SS/0dUkv9H/24AAN5/ AADKjQAAvpgAALOgAACqpwAAoa4AAJe2AACRuhAAjLojAYW5MgZ+uD4Od7ZJF3G1Uh5rs1olZbJi K2CxajBbsHM1V699OVOuiT1PrZZATK2lQkqtuUNJrthCSKv1Q0eq/0RJpf9ES6D/RE2c/0RNnP9E TZz/RE2c/0RNnP9E6nUAANKGAADDkwAAt50AAKykAACiqwAAmLMAAI67AQCFwQwAgcIdAHvCLQN1 wToJb8BFEWm/TxhjvlceXr1fI1m8aChVu3EtUbt7ME26hzRKupU3R7qlOUW6uDpEutc5Q7j1O0K2 /z1Cs/8+RK7/PkWp/z5Fqf8+Ran/PkWp/z5Fqf8+4H0AAMmNAAC7mgAArqIAAKOpAACYsQAAjrkA AITBAgB5yQcAdMsUAHDMJgFryzUFZctACmDKSxBbylQWV8ldGlLJZR9OyG8jS8h6JkfIhilEyJQs QsikLkDIuC8/ydcvP8f1MD3E/zM7w/81PL7/Nj24/zc9uP83Pbj/Nz24/zc9uP830YYAAMCVAACy nwAApacAAJqvAACOtwAAg78AAHjHAwBuzwcAZdcNAGPYHQBg2C0CW9g6BFfYRglT2FANT9hZEUvX YhVH12wYRNd3G0HXhB4+2JMgPNijITvZtyI62tUiOtbyIzfU/yc20v8pNNH/KzbK/y02yv8tNsr/ LTbK/y02yv8txZAAALadAACopQAAnK0AAI+2AACDvgAAd8cAAGzPAgBi1gcAWuQOAFjkHABU5CkB UOQ1A0zlPwVI5UkHReVTCkLmXA0/5mYPPOZxEjrnfhQ354wWNeecFzPorhky6cYZMujqGTHl/hkv 5P8cLuT/Hi3i/yAt4v8gLeL/IC3i/yAt4v8gupoAAKqjAACdqwAAkLQAAIO9AAB3xgAAa88AAF/W AABU3gQAUfAQAE3wGwBK8CYBRvEwAkLyOgM+8kMEO/NLBTjzVAc29F0IM/RoCTD1dAsu9YEMLPaR Dir2og8o97cQJ/jWESf29BEm8/8RJvH/ESXx/xMl8f8TJfH/EyXx/xMl8f8TraEAAKCpAACSswAA hLwAAHbGAABpzwAAXdgAAFHfAABJ7gQARvwOAEL9FwA+/iEAO/4qATf/MwI0/zoCMP9CAy3/SgMr /1MEKP9cBSX/ZgUi/3MGIP+DBx//lAgd/6YIHP+8CBv/4gka//kJGv//CRn//wkZ//8JGf//CRn/ /wkZ//8JoqcAAJOxAACFuwAAdsYAAGnQAABb2gAATuAAAEPlAAA++wEAOv8MADb/EwAy/xsAL/8j ACv/KgEo/zEBJP83ASH/PwIf/0YCHP9OAhn/WAMW/2MDE/9wAxL/gQQR/5MEEP+nBA//vQUO/+AF Dv/2BQ7//wUO//8FDv//BQ7//wUO//8Fla8AAIa6AAB3xQAAaNAAAFrbAABM4QAAQOcAADfzAAAy /wAALv8HACr/DgAm/xMAI/8aAB//IAAb/yYAGP8rARX/MgES/zgBEP9AAQ7/SAEM/1IBCf9dAgb/ awIE/30CAv+QAgH/owIA/7YCAP/NAwD/7AMA/+wDAP/sAwD/7AMA/+wDiLkAAHjEAABp0AAAW90A AEvjAAA+6QAAMu4AACv/AAAm/wAAIf8AAB3/CAAa/w0AFv8RABP/FgAQ/xoADv8fAAv/JAAJ/yoA Bv8wAAL/NwEA/0ABAP9KAQD/VgEA/2QBAP91AQD/iAEA/5oBAP+qAQD/uwEA/7sBAP+7AQD/uwEA /7sB/y8rAf8rMgL/LzEC/zA0Av8vOQP/K0ED/ydMBP8jWAX/IWYG/yB0B/8eggn/Ho4L/x6YDP8e oQ3/HqkO/x6wD/8duA//HcEQ/x3LEP8d2xH/HegR/x3yEf8d/BH/Hv8R/x7/EP8e/xD/H/8R/x// Ev8h/xP/Iv8T/yL/E/8i/xP/Iv8T/y8rAf8uMAL/Mi8C/zMxAv8yNgP/Lz4D/ytJBf8pVgb/J2MH /yVxCP8kfgv/I4oM/yOVDv8ing//IqYQ/yKtEf8itRH/Ir0S/yLHEv8i1BP/IuUT/yLwE/8i+hP/ Iv8T/yP/Ev8j/xL/I/8U/yT/Ff4m/xb8J/8W/Cf/Fvwn/xb8J/8W/zAqAf8xLQL/NSsC/zctAv82 MgP/NDoD/zJFBf8vUgb/LWAH/yxtCv8qegz/KYYO/yiREP8omhH/KKIS/yeqE/8nsRT/J7kU/yfD Ff8nzxX/J+EV/yftFf8n+BX/KP8V/yj/Ff8o/xb/J/8X/Cn/GPYr/xn0LP8Z9Cz/GfQs/xn0LP8Z /zEpAf80KQH/OSgC/zsqAv88LgL/OjYD/zlCBf83Twb/NVwI/zNpC/8xdg7/MIIQ/y+NEv8ulhT/ Lp4V/y2mFv8trRb/LbUX/y2+GP8tyhj/LdwY/y3qGP8t9Rj9Lv8Y+i7/GPkt/xr5Lf8c8y//HO0x /x3qMv8d6jL/Heoy/x3qMv8d/zMpAf84JgH/PSQB/0AlAv9BKQL/QjMD/0E+Bf8/Sgb/PVcJ/ztk DP85cA//N30S/zaIFP81kRb/NZoX/zSiGf80qRn/M7Ea/zO6G/8zxRv9M9Mb+jPmG/c08xvzNf4b 8TT/HfAz/x/uM/8g5zb/IeE3/yHeOP8h3jj/Id44/yHeOP8h/zUnAf89IgH/QiAB/0YgAf9IJQL/ Si8D/0k6BP9HRgb/RVIJ/0NfDf9BaxH/P3cU/z2CF/48jBn8PJUa+zudHPk7pR34Oq0e9jq2HvU6 wB/zOs4f8DrjH+s78R/oOv0h5jr/I+Q6/yXhOv8l2Dz/JtA9/ybNPv8mzT7/Js0+/ybNPv8m/zkk Af9BHgH/RxsB/0sbAf9PIgH/USsC/1E2BP9PQQb/TE0J/0taDvxJZhL4R3IW9UV9GfNDhxvxQpEd 70KZH+1BoSDsQakh6kCyIuhAvCLnQMoj5EHfI+BB7yTcQPwn2ED/KdQ//yrPQP8qx0L/KsJD/yrA Q/8qwEP/KsBD/yrAQ/8q/zwgAf9FGgH/SxcB/1EXAf9WHwH/WCcC/1gxA/9XPAX8VUgJ9lJUDvJQ YRPuTm0X6kx4G+dKgh7lSYwg4kiVIuBHnSTeR6Ul3EauJtpFuSfYRcYo1EXcKc9G7irLRfstyEX/ LsVF/y/ARv8vukj/L7VJ/y60Sf8utEn/LrRJ/y60Sf8u/0AdAf9JFgH/UBMB/1YUAP9cGwH/XyMB /2AsAvpfNwTzXUII7VpPDedYXBPiVmgY3lNyHNpRfSDWT4Yk0k6PJ9BNmCnNTKAry0upLclKsy7H Sr8vxUrQMMJL6DC9S/gyukr/M7hL/zOzTP8zrk3/M6pO/zKpTv8yqU7/MqlO/zKpTv8y/0MaAf9M EwD/VBAA/1wSAP9hFwD/ZR4B+2YnAfJmMQPqZT0G42NKC9xgVxLVXWIZ0FptH8xXdyPIVYAnxVSJ K8JSki7AUZowvlCjMrtPrTS5T7k1t0/INrRP4jaxT/Q3rlD/OKxQ/zinUf83o1L/NqBT/zWfU/81 n1P/NZ9T/zWfU/81/0YXAf9QEQD/WA0A/2AQAP9mEwD/ahkA9GwhAeptKwLhbDcE2WpFCtBnUhLK Y14axWBoIMFecia9XHsqulqELrdYjDG0V5U0sVWeNq9UqDitVLM6qlPCO6hT2julVPA8olX/PKFV /zudVv86mlf/OZdX/ziXV/83l1f/N5dX/zeXV/83/0kUAP9TDgD/XAwA/2UNAP9rDwD6bxMA7HIZ AOJ0IwHYczIDznFCCcdtTxLBaloau2dkIbdkbSezYnYsr19/MKxehzSpXJA3p1uZOqRZozyhWa4+ n1i9P51Y0UCaWew/mFn+P5da/z6UW/88kVv/O49b/zqPW/86j1v/Oo9b/zqPW/86/0wSAP9WDQD/ YAkA/2gKAPpvDADzcw4A5XcRANp5GwDPeS4Cx3c+Cb90SxG5cFYas21gIa9qaSiqZ3Itp2V6MqNj gzagYYw5nWCVPJpenz+XXapBlV24QpNdy0OQXehDj178QY5f/0CLX/8+il//PYhf/zyIX/87iF// O4hf/zuIX/87/04RAP9YCgD/YwcA+mwGAOdzBgDdeAgA2nsLANF+FwDIfisCwHw7CLl5SBGydlMZ rHJdIadvZiijbW4un2p3M5tofzeYZog7lWWRPpFjm0GOYqdDjGG0RYlhx0WIYuVFhmL6Q4Zj/0KE Y/9Ag2P/PoJj/z2CY/88gmP/PIJj/zyCY/88/1APAP9bBwD/ZgMA7G8CANx2AwDUfAcA0YAJAMqC FADCgygCuoE5B7N+RhCse1EZpndaIaF0YyiccmsumG9zM5RtfDeRa4Q7jWqOP4pomEKGZ6NEhGax RoFmw0d/ZuFHf2f4RX5o/0N+aP9BfWf/P3xn/z58Z/89fGf/PXxn/z18Z/89/1IOAP9dAwD9aQAA 4XIAANZ6AgDOfwUAyoMIAMWGEgC8hyYBtYY2Bq6DQw+ngE4YoXxYIJt5YCeWd2ktknRwM45yeTeK cIE8hm6LP4NtlUN/bKFFfGuuR3prv0h4a91IeGz2Rnhs/0R3bP9Cd2v/QHdq/z93av8+d2r/Pndq /z53av8+/1QMAP9fAADybAAA3XYAANB9AgDJgwQAxIcGAL+KEAC3jCMBsIo0BamIQQ6ihUwXnIFV H5Z/XiaRfGYtjHluMoh3djeEdX87gHSIP3xykkN4cZ5GdXCsSHNvvUlxcNlJcXD0R3Fx/0RycP9C cm//QXJu/z9ybv8+cm7/PnJu/z5ybv8+/1YKAP9iAADmbwAA13kAAMyBAQDFhwMAv4sEALmODgCy kCABq48xBaSMPw2dikoWlodTHpGEXCWLgWQshn9rMYJ9czZ+e3w7enmGP3Z3kEJydpxFb3WpSGx1 uklrddRJa3XyR2t1/0Vsdf9DbXP/QW1y/z9tcv8/bXL/P21y/z9tcv8//1kHAP9lAADicgAA0XwA AMeEAADAigIAuY8CALOSDACslB0AppMvBJ6RPAuYj0gUkYxRHIuJWiSGh2IqgYVpMHyCcTV4gXo6 dH+DPnB9jkJsfJpFaXunR2Z6uEhke9BIZHvwR2V7/0Rmev9DZ3j/QWh2/z9odv8/aHb/P2h2/z9o dv8//1sEAPdpAADddgAAzYAAAMOIAAC7jgAAtJMBAK2XCQCnmBoAoJgsA5mWOgqSlEUSjJJPGoaP VyKAjV8oe4tnLnaJbzNyh3c4bYWBPGmEi0BmgpdDYoGlRmCBtkdegc1HXoHvRl+B/0Rgf/9CYX3/ QWJ7/z9jev8/Y3r/P2N6/z9jev8//14AAOltAADWeQAAyIQAAL6MAAC2kwAArpcAAKabBACgnRcA mp0pApOcNwiMmkMQhphNGICWVR96lF0mdZJlLHCQbDFsjnU2Z41+OmOLiT5fipVBXImjRFqJtEVY ictFWIjtRFiI/0NZhv9BW4P/QF2B/z5dgP8+XYD/Pl2A/z5dgP8+/2IAAORxAADPfgAAw4gAALmR AACwlwAAp5sAAJ6hAACYoxMAk6MlAY2iNAaGoUANgJ9KFXmdUxx0m1ojb5liKGqYai5mlnIyYZV8 N12UhjpZkpM+VpKhQFORskFSkslCUpHrQVKQ/0BSj/8/VYv/PlaI/z1Xh/89V4f/PVeH/z1Xh/89 +WcAAN12AADJgwAAvY0AALOVAACpmwAAoKAAAJanAACPqQ8Ai6ohAYWpMAR/qDwKeKdHEnOlUBht o1geaKJgJGShZylfoHAuW555MledhDZTnJE5UJyfO06bsD1MnMc9TJvqPEyZ/zxMmP88TZX/PE+R /ztQj/87UI//O1CP/ztQj/87620AANN8AADDiQAAt5MAAKyaAACinwAAmaUAAI6rAACFsAsAgbEb AHyxKwJ3sDgHca9DDWuuTRRmrVUZYaxdHl2rZSNZqm4nVal3K1Gogi9Np48ySqeeNUinrzZHp8Y2 RqbpNkWk/jdFo/83RqD/N0ic/zdJmv83SZr/N0ma/zdJmv834nQAAMqDAAC8jwAAsJgAAKWeAACb pAAAkKsAAIWxAAB6uAQAdrkUAHK5JQFtuTMEaLg/CGO4SQ5et1ITWrZaGFa2YhxStWsgTrR1JEu0 gCdIs44qRbOdLEKzri1Bs8UuQbPpLUCw/i8/r/8xPq3/MkCo/zJBpv8yQab/MkGm/zJBpv8y1XwA AMKKAAC1lgAAqJ0AAJ2jAACSqgAAh7EAAHy3AABwvgMAaMIOAGbDHQBjwy0BXsM5BFrDRAhWwk4M UsJXEE/BXxRLwWkXSMFzGkXAfh1CwIwgP8CbIj3ArSM8wcQjPMDpIzq+/iY4vP8oN7v/KTi4/yo4 tv8rOLb/Kzi2/ys4tv8ryYUAALmTAACsnAAAoKIAAJSqAACIsQAAfLgAAHG+AABmxQMAW8sIAFfN EwBWziMAU84yAVDOPgNNz0gFSc9SCEbPWwtDz2UOQM9vED7PexM7z4kVOc+ZFzfPqxg20MMYNs/o GDTN+xsyy/8dMcr/HzDJ/yEvyP8hL8j/IS/I/yEvyP8hvo8AAK+aAACioQAAlqkAAIqwAAB9uAAA cb8AAGbGAABbzAIAUNIHAEfaDABG3BgARdwnAETdNQFB3UACP95LAz3eVQQ6318GON9pBzXfdgkz 4IQLMeCUDC/hpg0u4bwOLeLgDi3e+A8r3f8SKtz/FCna/xYo2v8WKNr/Fija/xYo2v8Ws5gAAKWg AACZpwAAi7AAAH64AABxwAAAZcgAAFnOAABO0wAARNsEAD/pDQA96RcAO+ojADnqLgA26zgBNOtC ATHsSwIv7VUDLe1fAyruawQo7ngFJu+IBiXvmgcj8K4HIvHIByLw7Qch7P8HIev/CCDr/wof6v8L H+r/Cx/q/wsf6v8LqJ8AAJumAACNrwAAf7gAAHHBAABkygAAWNAAAEzWAABB3QAAOOQAADX2DAAz 9xQAMPceAC74JwAr+TAAKPk4ASb6QAEj+0kBIftSAR78XQIc/WkCGv15Axj+iwMX/54DFf+zBBT/ 0wQU/vQEE/z/AxP6/wMT+f8DE/n/AxP5/wMT+f8DnaUAAI+uAACAuAAAcsIAAGTLAABW0wAASdoA AD7fAAA05AAALvQAACv/CgAo/xAAJf8XACL/HwAf/yYAHP8tABn/NAAX/zwAFP9EARL/TgEQ/1kB Dv9nAQz/dwEL/4oCCv+fAgn/tQII/9UCB//0Agf//wIH//8CB///Agf//wIH//8Cka0AAIK4AABz wgAAZMwAAFbVAABI3QAAO+IAADDnAAAn7gAAI/8AACD/BAAc/wwAGf8RABb/FgAT/xsAEf8hAA7/ JwAN/y4ACv82AAf/PgAE/0gAAP9UAAD/YgEA/3MBAP+HAQD/nQEA/7IBAP/KAQD/6gEA//MBAP/z AQD/8wEA//MBhLcAAHTBAABlzAAAVtgAAEffAAA55QAALeoAACPuAAAc/QAAGP8AABX/AAAR/wQA D/8LAA3/DgAJ/xEABv8VAAP/GgAA/yAAAP8mAAD/LgAA/zcAAP9BAAD/TQAA/1wAAP9tAAD/ggAA /5YAAP+oAAD/ugAA/8MAAP/DAAD/wwAA/8MA/yQvAf8lLwH/KC8B/ycxAf8kNgL/ID4C/xpJA/8X VgP/FWQD/xNyBP8SfwT/EooE/xKUBP8SnQX/EqQF/xKsBv8Sswb/EroG/xLDBv8Tzgf/E98H/xPr B/8T9gf/E/8H/xP/Bv8T/wb/FP8H/xT/CP8T/wj/Ff8J/xX/Cf8V/wn/Ff8J/yUuAf8pLQH/KywB /ysuAf8pMwL/JDsC/x9GA/8dUwP/G2EE/xluBP8XewT/F4cF/xeRBf8Xmgb/F6EG/xepB/8XsAf/ F7cI/xfACP8Yygj/GNsI/xjoCP8Y9Aj/GP0I/xn/CP8Z/wj/Gf8J/xn/Cv8Y/wv/Gv8L/xr/C/8a /wv/Gv8L/yYtAf8sKQH/LigB/y8qAf8tLwL/KTcC/ydDA/8kUAP/Il0E/yBqBf8edwX/HoMG/x6N B/8elgf/Hp4I/x6lCf8erAn/HrMJ/x68Cv8exgr/HtMK/x7lCv8e8Qr/H/wK/h//Cv0f/wv8H/8M /B7/Dfwf/w73If8O9yH/Dvch/w73If8O/yoqAf8vJgH/MiQB/zMlAf8yKgH/MTQC/y8/A/8tTAP/ KlkE/yhmBf8mcgb/JX4H/yWJCP8lkgn/JZoK/yWhC/8lqAv/JLAM/yS4DP8lwQz/Jc4N/yXhDfwl 7w35JvoM9ib/DfUm/w/0Jf8Q9CX/EfIm/xLtJ/8S7Sf/Eu0n/xLtJ/8S/y4mAf80IgH/NyAB/zkh Af84JQH/OS8C/zg7Av81RwP/M1QF/zFhBv8vbQf/LnkJ/y2ECv8tjQz/LJYN/yydDf8spQ79LKwP /Cy0D/ssvQ/5LMkQ9izdEPMt7A/vLfgP7S3/Euss/xTqLP8V6Sz/FuUt/xbgLv8W4C7/FuAu/xbg Lv8W/zIjAf84HQH/PBsB/z4bAf9AIgH/QSsB/0A2Av8+QgP/PE8F/zlcBv84aAj9NnML+zV+DPg1 iA73NJEP9TSZEPM0oBHyM6gS8DOwEu8zuRPuM8UT6zTXE+c06hLjNPcU4TT/F94z/xncM/8a2zP/ GtQ0/xrONf8azjX/Gs41/xrONf8a/zYfAf88GQH/QRYA/0QWAP9HHgH/SScB/0gyAv9GPQP/REkF +kJWB/ZAYgnyP24M7z15D+08gxDqPIwS6DuUE+c7nBTlO6QV4zqtFeI6thbgO8IW3zvSFto76BfU OvYa0Dr/HM06/x7LOv8eyjr/H8Q7/x/APP8ewDz/HsA8/x7APP8e/zkbAf9AFQD/RREA/0oTAP9O GQD/UCIB/1AsAf1ONwL2S0ME8ElQB+tIXQrnRmkN40V0EOBEfhPdQ4cV20KQF9hBmBjVQKAZ00Cp G9FAshzPQL0dzUDMHcpB5B7GQPQgwkD/Ir9A/yO9QP8ju0D/I7ZB/yOzQv8is0L/IrNC/yKzQv8i /z0XAP9EEQD/Sg4A/1AQAP9UFQD/Vh0A/VYmAfNVMQHrUz0D5VJLBt9QWAraTmMO1ExuE9BKeBbN SYEZy0iKG8hHkh3GR5ofxEajIcJGrCLARbcjvkXFJLxF3CS4RvAltUb/J7JG/yewRv8nrkb/J6pH /yanSP8mp0j/JqdI/yanSP8m/0AUAP9IDgD/TgsA/1UOAP9ZEQD/XBYA9F0fAOpcKgHiWzcC2lpG BdJXUwvMVV4QyFNoFcRRchnBUHscvk+EH7xNjCK5TZUkt0ydJrVLpyezS7EpsUq/Kq9K0SqsS+sr qUv8LKZL/yylTP8ro0z/Kp9N/yqdTf8pnU3/KZ1N/ymdTf8p/0MRAP9LDAD/UwgA/1oLAP9eDQD5 YBAA62EWAOFiIQDWYjEBzmFBBcdfTgvCXFkRvVpkF7lYbRu2VnYfs1V+IrBThyWuUo8oq1GYKqlQ oiynUKwtpU+5L6NPyy+gUOYvnlD5MJxQ/y+aUf8umFH/LZZS/yyUUv8rlFL/K5RS/yuUUv8r/0YQ AP9OCQD/VgUA/l4GAO9iBwDnZQoA5GYOANZnGQDNaC0BxWc9Bb9lSgu5Y1UStGBfF7BeaRysXHEh qVp6JKZZgiikWIsroVaULZ9VnS+cVagxmlS0M5hUxTOWVOE0k1X2M5JV/zKRVv8xj1b/MI1W/y6M V/8tjFf/LYxX/y2MV/8t/0kOAP9RBQD/WgEA7mIAAN9nAwDYagYA1WsKAM1tFQDFbikBvm05BLdr RwuxaFIRrGZcGKhkZR2kYm0ioWB1Jp5efimbXYYtmFyPL5VamTKTWaQ0kFmwNo5ZwDaMWds3ilnz Nola/zSIW/8zh1v/MYZb/zCFW/8vhVv/L4Vb/y+FW/8v/0sMAP9UAAD7XgAA4mUAANhrAQDPbgUA zHAIAMZyEgC+cyYBt3M2BLFwRAqrbk8RpmtZGKFpYR2dZ2oimWVyJ5ZjeiqTYoMukGCMMY1flTSK XqA2h16tOIVdvDmDXdQ5gl7wOIFf/zaAX/80gF//M39f/zF+X/8wfl//MH5f/zB+X/8w/00JAP9W AADuYQAA3WkAANFvAADKcwMAxXUGAMB2EAC4eCMAsXgzA6t2QQmlc0wQn3BWF5tuXx2WbGcik2pv J49odyuMZ38viWWIMoVkkjWCY503gGKqOX1iuTp7Ys87emLuOXpj/zh6Y/82eWP/NHlj/zJ5Yv8x eWL/MXli/zF5Yv8x/08HAP9ZAADmZAAA12wAAMxzAADEdwIAv3kEALl6DgCyfCAArHwxA6V6Pgmf eEoQmnVTF5VzXB2RcWQijW9sJ4ltdCuFbHwvgmqFMn9pjzV8aJs4eWenOnZmtjt0Zsw8c2frO3Nn /zhzaP82c2j/NXNn/zNzZv8yc2b/MnNm/zJzZv8y/1EEAP9cAADiZwAA0nAAAMd2AADAegAAun0C ALR/DACtgR0Ap4EuAqB/PAiafUcPlXpRFpB4WhyLdmIhh3RpJoNycSt/cXovfG+DMnhujTV1bZg4 cmylO3BrtDxua8k8bWvpO21s/jltbP83bmz/NW5r/zRuav8ybmr/Mm5q/zJuav8y/1MAAPRfAADe agAAzXMAAMN6AAC7fgAAtYEAAK6DCQCohRoAooUrApuEOgeVgkUOkH9PFYp9WBuGe18ggXlnJX13 byp6dncudnSAMnNzizVvcpY4bHGjOmlwsjxocMY8Z3DnO2dx/Dlocf83aHD/NWlv/zRpbv8zaW7/ M2lu/zNpbv8z/1YAAOtiAADYbgAAyXYAAL99AAC3ggAAsIUAAKiHBgCiiRcAnIopAZaJNwaQh0MM i4VNE4WCVRmAgF0ffH9lJHh9bSl0e3UtcHp+MW15iDRpd5Q3ZnahOmN2sDthdsQ8YXblO2F2+zli dv83Y3X/NWNz/zRkcv8zZHL/M2Ry/zNkcv8z/1gAAOZmAADScQAAxXoAALuBAACyhwAAq4oAAKKM AgCcjhQAl48mAZGONAWLjEALhYpKEYCIUxh7hlsddoVjInKDaidugnIraoB7L2d/hjNjfpE2YH2e OV18rjpbfME7W3zjOlt8+jhce/83XXv/NV55/zRfd/8zX3f/M193/zNfd/8z/lwAAOFqAADNdQAA wH4AALaGAACuiwAApY4AAJuRAACVkxEAkJQiAYuTMQOFkj0Jf5FID3qPURZ1jVkbcYxgIGyKaCVo iXApZId5LWGGgzFdhY80WoScNleDrDhVg785VYPhOFWC+TdWgv81VoH/NFh//zNZff8yWX3/Mll9 /zJZff8y72AAANtuAADHegAAu4MAALKLAACokAAAn5MAAJSWAACNmQ4AiZoeAISaLgJ+mToHeZdF DXSWThNvlVYYapNeHWaSZSFikW0mXo92KluOgS1XjY0wVIyaM1GMqjVPjL01T4zeNU+L9zRPiv8z UIn/MlGG/zFShP8xUoT/MVKE/zFShP8x6mUAANJzAADCfwAAtogAAKyQAACilAAAmJgAAIycAACE nwoAgKAZAHyhKQF3oDYFcp9BCm2eSw9onVMUZJxbGWCbYx1cmmshWJl0JVWYfilRl4osTpaYLkuW qDBKlrwxSZbcMEmU9jBJk/8wSZL/MEqQ/y9Ljf8vS43/L0uN/y9Ljf8v4msAAMp5AAC8hQAAsY8A AKaUAACbmQAAkZ0AAIaiAAB6pgMAdqcTAHOoJABuqDIDaqg9BmWnRwthplAPXaVYFFmkYBhVo2gc UqNxH06ifCNLoYgmSKGWKEWgpipEoborQ6HaKkOf9StCnf8rQpz/LEKb/yxEl/8rRJf/K0SX/ytE l/8r13IAAMOAAAC2jAAAqpQAAJ+ZAACUngAAiaMAAH6oAABwrgAAarAOAGixHQBlsSwBYbE4A12w QwZZsEwKVa9UDlKvXRFOrmUVS65vGEiteRtFrYYeQqyVID+spSI+rbkjPa3YIj2r9SM8qf8lO6f/ Jjum/yY7pP8mO6T/Jjuk/yY7pP8mzHoAALuIAACukgAAopkAAJeeAACMpAAAgKoAAHWvAABptAAA XrkGAFu6FABZuyQAVrsxAVO7PQNQu0cFTbtQB0q6WQpHumINRLpsEEG6dxM+uYQVPLmTFzm5oxg4 ubcZN7rWGTe49Bo1tv8cNLT/HjOz/x8zsv8gM7L/IDOy/yAzsv8gwYMAALSRAACmmAAAm54AAI+l AACCqwAAdrEAAGu2AABfvAAAVMEDAEzFDQBLxRkAScYoAEjGNQBFx0ABQ8dKA0DHUwQ+x10GO8dn CDnHcwo3x4AMNMeQDTLHoQ4xyLUPMMjTDzDG9BAuxP8TLcL/FSzB/xYrwP8XK8D/FyvA/xcrwP8X uI0AAKqXAACengAAkaUAAISsAAB4sgAAa7kAAGC/AABUwwAASsgCAEDNBwA60g4AOdIbADjTKAA3 0zUANtRAADTVSwEz1VUBMdZgAi/WbAMt13oEK9iLBSrYnQUo2bEGJ9rNBifX7wYm1P8JJdL/CyTR /wwj0P8NI9D/DSPQ/w0j0P8NrpYAAKCdAACUpAAAhqwAAHm0AABsuwAAYMIAAFTGAABIywAAPtAA ADXVBAAt3QoALOETACviHwAp4yoAKOQ1ACfkPwAm5UoAJOZVACPmYQEh524BIOd+Ah7okAId6aQC G+m8Ahrq4gIa5vwCGeX/Axnk/wQY4/8FGOP/BRjj/wUY4/8Fo50AAJakAACIrAAAerUAAGy9AABf xAAAU8oAAEfOAAA80wAAMtoAACrfAAAl7gkAI/ARACHxGQAf8SIAHfIrABvzNAAZ9D4AF/RIABX1 UgAT9l8AEvZuARH3gAEQ+JQBD/mqAQ75xgEO+e0BDfb/AQ30/wEN8/8BDfP/AQ3z/wEN8/8BmaMA AIusAAB8tQAAbb4AAF/GAABSzQAARdIAADnYAAAv3gAAJuIAAB/qAAAc+wYAGf8OABf/EwAU/xoA Ev8hABD/KAAO/zAADf85AAv/QwAJ/04ABv9cAAT/bAAC/4AAAf+WAAD/rQAA/8oAAP/wAAD//wAA //8AAP//AAD//wAA//8AjasAAH21AABuvwAAYMgAAFLQAABD1wAAN90AACviAAAi5gAAGeoAABX5 AAAS/wAAEP8IAA7/DgAM/xEACf8WAAb/HAAD/yIAAP8qAAD/MwAA/z0AAP9JAAD/VwAA/2kAAP9+ AAD/lQAA/6wAAP/HAAD/6AAA//oAAP/6AAD/+gAA//oAgLUAAHC/AABhyQAAUtMAAEPbAAA14QAA KeYAAB7qAAAV7gAAEPgAAA7/AAAL/wAACP8AAAT/BgAA/woAAP8OAAD/EQAA/xUAAP8bAAD/IwAA /ysAAP82AAD/QwAA/1MAAP9lAAD/egAA/5EAAP+mAAD/uAAA/88AAP/PAAD/zwAA/88A/xwvAf8g LAH/ISwB/x4uAf8aMwH/FDwB/w9GAf8NVAL/C2EC/wlvAv8JewL/CYYC/wmQAv8JmQL/CaAC/wmn Av8JrQL/CbQC/wm8Af8JxQH/CdEC/wnjAv8J7wL/CfkB/wr/Af8K/wH/Cv8C/wr/Av8K/wL/C/8D /wv/A/8L/wP/C/8D/x8tAf8jKQH/JCkB/yIrAf8eMAH/GDgB/xRDAf8RUAL/EF4C/w5rAv8OdwL/ DoMC/w6NAv8OlQL/Dp0C/w6kAv8OqgL/DrEC/w65Av8OwQL/Ds0C/w7fAv8O7AL/DvgC/w7/Av8O /wL/D/8D/w//A/8P/wT/EP8E/xD/BP8Q/wT/EP8E/yMqAf8mJgH/KCUB/ycnAf8jKwH/HjMB/xtA Af8ZTQL/FloC/xRnAv8TcwL/E34C/xOJA/8TkQP/E5kD/xOgAv8TpwP/E64D/xO1A/8TvgP/E8kD /xPaA/8U6QP+FPYD+xT/A/kV/wP5Ff8E+BX/BfgV/wb4Ff8G+BX/BvgV/wb4Ff8G/yYmAf8qIgH/ LCAA/ysiAf8oJgH/JzAB/yQ8Af8iSQL/H1UC/x1iAv8bbgP/G3oD/xqEA/8ajQP/GpUD/xqcBP8a owT/G6oE/xuyBP8bugT/G8UE/BvTBPkb5wT1HPQE8hz/BfEc/wbwHP8H7x3/CO8d/wnvHP8J7hz/ Ce4c/wnuHP8J/yoiAf8uHQD/MBsA/zAcAP8wIgD/MCwB/y43Af8rRAL/KFEC/yZdA/8kaQP/I3UE /yN/BP4jiAT9I5EF+yOYBfojoAX4I6cG9yOuBvUjtwb0I8EG8iTPBu4k5AbqJfIG6CX+COYk/wrk Jf8L4yX/DOMk/wziJP8M4ST/DeEk/w3hJP8N/y4eAP8zGAD/NRYA/zUVAP84HQD/OCcB/zczAf80 PwH/MksC/y9YA/suZAT4LW8E9Sx6BfMsgwbxLIwG7yyUB+0snAjsLKMI6iyrCOksswjnLL4J5izM CeIt4gjeLfEK2yz+DNYt/w7ULP8P0iz/ENEs/xDPLP8Qzi3/EM4t/xDOLf8Q/zIZAP83FAD/OhEA /zwSAP8/GQD/QCIA/z4tAf88OQH6OkUC9DhSA/A3XgTsNmoF6TV0BuY1fgjkNIcI4jSQCeA0mAre NJ8K3DOnC9ozsAzYM7sM1TPJDdI03w3ONPAPyjT9Esc0/xPFNP8UwzT/FcMz/xXANP8VvzT/FL80 /xS/NP8U/zYVAP87EAD/Pg0A/0MPAP9GFAD/RhwA/0YmAPZEMgHvQj8B6UBMA+Q/WQTfPmQG2z1v CNg8eQrUPIIM0TuLDc87kw/NOpoQyzqiEck6qxLIOrUTxjrCE8Q61RTAO+sVvDr7F7k6/xi3Ov8Z tjr/GbU6/xiyO/8YsTv/GLE7/xixO/8Y/zkSAP8/DQD/QwkA/0gMAP9LEAD/TBUA9UwfAOtKKgDk STcB3UlGAtVHUwTQRl8IzEVpC8lEcw3GQ3wQw0KEEsFCjBO/QZUVvUGdFrtAphe6QLAYuEC8GbZA zBqzQeYar0H3HK1B/x2rQf8dqUH/HKlB/xymQf8bpUH/G6VB/xulQf8b/z0QAP9CCQD/SAUA/00I AP9QCwD5UQ8A61AVAOFPIADYUDEAz1BBAslPTgXETloJwExkDb1LbRC6SnYTt0l+FbVIhxezR48Z sUeXG69GoBytRqoeq0W2H6lFxh+nRuAgpEb0IKFG/yGfR/8gnkf/IJ5H/x+bR/8emkf/HppH/x6a R/8e/0ANAP9GBAD/TAAA+FICAOhVBADhVQgA4lUNANVVGQDMVywAxVc8Ar9WSga6VVUKtlNfDrJS aBKvUHEVrE95GKpOgRqoTYodpUySH6NMnCChS6Yin0uxI51LwCSbS9glmUvwJZZM/ySVTP8klEz/ I5NM/yKRTf8hkU3/IZFN/yGRTf8h/0IKAP9JAAD/UQAA5lcAAN1bAQDVXAUA0lsJAMtcFADDXigA vF44ArZdRgaxW1EKrVlbD6lYZBOmVmwXo1V0GqBUfR2eU4Ufm1KOIplRlySXUKEmlVCtJ5JQvCiR UNAojlDsKI1R/ieLUf8mi1H/JYpS/ySJUv8jiFL/I4hS/yOIUv8j/0UHAP9LAADwVQAA31sAANNg AADMYQMAyGEGAMNhEQC7ZCQAtWQ0Aq9jQgWqYU4KpV9XD6FdYBSeXGgYm1twG5hZeB6VWIEhk1eK JJBWkyaOVZ4oi1WpKolUtyuHVMsrhVXpK4RV/CqDVv8og1b/J4JW/yWBVv8kgVb/JIFW/ySBVv8k /0cDAP9PAADnWAAA2WAAAM1kAADGZgEAwWYEALtmDgC0aSAArmkxAqhoPwWjZkoKn2VUD5pjXRSX YWUYk2BtHJBedR+OXX0ii1yGJYhbkCiFWpoqg1mmLIBZtC1/WccufVnmLXxa+ix7Wv8qe1v/KHtb /yd7Wv8melr/JXpa/yV6Wv8l/0kAAPtSAADjXAAA0mMAAMdoAADAawAAumsCALVrDQCubR0AqG4u AaNtPAWda0gKmWpRD5RoWhSQZmIYjWVqHIpjciCHYnojhGGDJoFgjCl+X5cre16jLXlesS93XcQv dV7iL3Ve+S11X/8rdV//KXVf/yh1Xv8mdV7/JnVe/yZ1Xv8m/0sAAPBVAADeXwAAzWcAAMNsAAC7 bwAAtXAAAK9vCgCocRoAo3IrAZ1yOQSYcEUJk25PDo9tWBSLa2AYh2lnHIRobyCBZ3cjfWaAJnpk iil3Y5QsdWOhLnJiry9wYsEwb2LfMG5j9y5vY/8sb2P/Km9j/yhvYv8nb2L/J29i/ydvYv8n/00A AOtYAADZYwAAyWoAAL9wAAC3cwAAsHQAAKl0BwCjdhcAnncoAZh2NwSTdUIIjnNMDolxVROFcF0Y gW5lHH5tbB97bHQjeGp9JnRphylxaJIsbmeeLmxnrDBqZ74xaWfcMGln9S5pZ/8saWf/Kmpn/ylq Zv8oamb/J2pm/ydqZv8n/1AAAOdbAADTZgAAxW4AALtzAACzdwAAq3kAAKR4AwCdehQAmHslAZN7 NAOOekAHiXhKDYR2UxKAdVsXfHNiG3hyah91cXIicm97Jm9uhSlsbZAsaWycLmZsqjBkbLwxY2zZ MGNs9C9jbP8tZGz/K2Rr/yllav8oZWr/KGVq/yhlav8o/VMAAONfAADOaQAAwXEAALd3AACvewAA p30AAJ59AACYfhEAk4AiAI6AMQKJfz4GhH1IDH98URF7elkWd3lgGnN3aB5vdnAhbHV4JWl0gihm c44rY3KaLmBxqC9ecbowXXHUMF1x8i5ecf8sXnD/K19w/ylgb/8oYG7/KGBu/yhgbv8o8VUAAN5i AADKbQAAvXUAALN7AACrgAAAooIAAJiBAACRgw8AjYUfAIiFLgKDhDsFfoNFCnqBTg91gFYUcX9e GG59ZhxqfG0gZ3t2I2N6gCdgeYsqXXiYLFp3pi5Yd7gvV3fRL1d38S5Ydv8sWHb/Kll1/yladP8o WnT/J1p0/ydadP8n7VkAANdmAADFcQAAuXoAAK+AAACmhAAAnYYAAJGHAACKiQwAhoobAIKLKwF9 ijgEeIlCCHSITA1vh1QSbIVbFmiEYxpkg2seYYJ0IV2BfSRagIkoV3+WKlV+pCxSfrYtUX7OLVF9 7yxSff8rUnz/KVN7/yhUev8nVHr/J1R6/ydUev8n6F4AANBrAADAdgAAtH4AAKuFAAChiQAAl4sA AImNAACDjwgAfpAXAHuRJwF2kTQDcpA/Bm2PSQtpjlEPZY1ZE2KMYBdei2gbW4pxHleJeyFUiIYk UYeUJ0+GoilNhrQqS4bMKkuF7ilMhP8pTIP/KEyD/ydNgf8mToH/Jk6B/yZOgf8m4WMAAMlwAAC7 ewAAsIQAAKaKAACbjgAAkZEAAISTAAB6lQIAdZcSAHKYIgBvmDACapc7BGaXRQhilk4MX5VWD1uU XRNYk2UXVZNuGlGSeB1OkYQgS5CRI0mQoSRHkLImRZDKJkWP7SVFjf8lRYz/JUaL/yRGiv8kRor/ JEaK/yRGiv8k2GkAAMN2AAC1gQAAq4oAAJ+PAACVkwAAipYAAH6aAABwnQAAa58OAGifHABmoCoB YqA3Al+fQQVbn0oIWJ5SC1SeWg5RnWISTpxrFUucdRhIm4EaRZuPHUKanx9AmrAgP5rIID+Z6x8/ mP8gPpb/IT6V/yE/lP8hP5T/IT+U/yE/lP8hzXAAALx9AACwiAAApI8AAJmUAACOmAAAg50AAHeg AABppAAAYKcIAF2oFABbqSQAWakxAVapPAJTqUUEUKhOBk2oVwlKqF8MR6doDkSncxFBpn8UPqaN FjymnRc6pq8YOabHGDml6hg4o/8aN6H/Gzeg/xw3n/8cN5//HDef/xw3n/8cxHgAALWFAACpjwAA nZUAAJKaAACGnwAAeqMAAG6oAABirAAAVbAAAFCyDgBOshsATbMoAEuzNQBJsz8BRrNJAkSzUgRB s1sGP7NkCDyzbwo6s3sMN7OKDjWymg8zs60QMrPFEDKy6RAxsP4SMK7/FC+t/xUvrP8WL6z/Fi+s /xYvrP8Wu4EAAK6OAAChlQAAlpoAAImgAAB9pgAAcasAAGWvAABZtAAATrcAAEO8BQBAvREAP70e AD6+KwA8vjYAO79BADm/SwE3v1QCNcBfAjPAagQxwHcFL8CGBi3AlwcrwKoIKsHCCCrA5wcpvf0K KLz/DCe6/w0nuf8OJ7n/Die5/w4nuf8OsowAAKWUAACZmgAAjaEAAH+nAAByrQAAZrMAAFq4AABP uwAARL8AADrEAgAwyQgALsoRAC3KHQAsyykAK8s1ACvMQAAqzUoAKM1WACfOYQAmzm8BJM5/ASPP kQIhz6UCINC9AiDP5AIfzfoDHsv/BB7K/wUdyf8GHcn/Bh3J/wYdyf8GqJQAAJyaAACQoQAAgqgA AHSvAABntgAAW7wAAE7AAABDwwAAOccAAC/MAAAn0AQAH9YKABvaEAAb2xoAGtsmABrcMQAZ3TwA GN1IABjeVQAX32IAFuByABXghQAU4ZoAE+KxABLjzwAS4PQAEt7/ARHd/wER2/8CEdv/AhHb/wIR 2/8CnpoAAJKhAACEqQAAdrEAAGi4AABbvwAATsQAAELIAAA3zAAALdAAACTVAAAc2wAAFd8FABTp DgAS6hQAEesdABDrJgAO7DAADu06AA3uRgAL7lMACu9iAAnwdAAI8YkAB/KgAAXyugAE8eQAAvH9 AALv/wAD7f8AA+3/AAPt/wAD7f8AlaEAAIapAAB4sgAAaboAAFvCAABNyAAAQMwAADTRAAAq1gAA IdsAABngAAAS5AAAD/ABAA35CgAL+g8ACfsVAAf7HAAE/CQAAfwsAAD8NwAA/EIAAPxQAAD8YQAA /XUAAPyMAAD8pAAA/MEAAPzrAAD8/wAA/f8AAP3/AAD9/wAA/f8AiakAAHmyAABquwAAXMQAAE7M AAA/0QAAMtcAACfdAAAd4QAAFeUAAA7oAAAK8QAACP0AAAX/AwAB/wkAAP8OAAD/EgAA/xcAAP8f AAD/JwAA/zEAAP8+AAD/TQAA/18AAP91AAD/jQAA/6YAAP/CAAD/5wAA//wAAP//AAD//wAA//8A fLMAAGy8AABdxgAATs8AAD/WAAAx3QAAJeIAABrmAAAR6gAADO4AAAXyAAAA/wAAAP8AAAD/AAAA /wAAAP8FAAD/CgAA/w4AAP8SAAD/GAAA/yEAAP8rAAD/OQAA/0oAAP9dAAD/cwAA/4wAAP+kAAD/ uQAA/9QAAP/eAAD/3gAA/94A/xgsAP8ZKQD/GSgA/xUrAP8QMAD/CzgB/wNEAf8AUQH/AF4B/wBs Af8AeAH/AIIB/wCMAf8AlAH/AJwA/wCiAP8AqAD/AK8A/wC2AP8AvgD/AMgA/wDXAP8A5wD/APMA /wD9AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/xspAP8dJgD/HCUA/xknAP8TLAD/ DjQA/wtAAf8ITgH/BVsB/wNoAf8CdAH/An8B/wKIAf8CkQH/ApgB/wKfAf8BpQD/AawA/wGyAP8B ugD/AcQA/wHRAP8A5AD/APEA/wD8APwB/wD8Av8A/AP/APwE/wH8Bf8B/AX/AfwF/wH8Bf8B/x8m AP8hIgD/ICEA/x4jAP8YJwD/EzAA/xE8Af8OSgH/DVcB/wtjAf8KbwH/CnoB/wqEAf8KjQH/CpQB /wqbAf8KogH/CqgB/wqvAf8KtwH/CsAA/wrMAP8K4AD7Cu8A9wr6APUL/wH1DP8B9A3/AfQN/wL0 Df8C9A3/AvQN/wL0Df8C/yIiAP8kHQD/JBwA/yIdAP8eIgD/HCwA/xk4AP8WRQH/E1IB/xJeAf8Q agH/EHUB/xB/Af8QiAH/EJAB/xCXAf8QngH/EKUB/RCsAfwQswH6EL0B+RHJAfUR3QHxEe0B7hH5 AewS/wLrE/8C6hP/A+kT/wPpE/8D6RP/A+kT/wPpE/8D/yYdAP8oGAD/KBYA/yYWAP8mHQD/JigA /yM0AP8gQAD/HU0B/xtZAf8ZZQH+GXAB/Bh6AfkYgwH3GIwB9hiTAfQYmgHzGKEB8RmoAfAZsALu GboC7RnGAuoa2QLmGusB4hv5AuAb/wPeHP8E3Rz/Bdwc/wXcHP8F2xz/Bdsc/wXbHP8F/yoZAP8t EwD/LREA/y0RAP8uGQD/LSIA/ywuAP8pOgD/JkcB+iRUAfYjYAHyImsB7yJ1Au0ifgLrIocC6SKP AucilgLlIp4C5CKlAuIirQLhI7cC3yPDAt0j1gLYJOoD0iT5Bc8l/wbNJf8HyyX/CMol/wjKJP8I yiT/CMok/wjKJP8I/y4UAP8xEAD/Mg0A/zQOAP81FAD/NRwA/zMnAPoxNADzL0EA7i1OAeksWgHl LGUC4ixwAt8reQLdK4ID2iuLA9grkgTVK5oE0yuiBNErqgXPK7MFzSu/BswszwbILecHxC33CcEt /wq/Lf8LvS3/DLwt/wy8LP8Muyz/DLss/wy7LP8M/zERAP81DAD/NgcA/zoLAP88EAD/OxUA+Dkf AO83KwDnNjkA4TVHANw1VAHVNWAC0TVqA840cwTMNHwFyjSFBsg0jQfGM5QIxDOcCcIzpQnBM64K vzO5C70zyAu7NOELtzTzDbQ0/w+xNP8PsDT/EK80/xCuNP8PrjT/D640/w+uNP8P/zUOAP84BwD/ PAIA/0AGAP9BCwD6QQ8A7T8WAOM8IgDaPTEA0j5BAMw+TwLIPloDxD1kBcE9bge/PHYIvDx+Cro7 hwu4O48MtzuXDbU6nw6zOqkPsTq0EK86whGuOtkRqjvvEqc7/xOlO/8UpDv/E6M7/xOiO/8Tojv/ EqI7/xKiO/8S/zgKAP88AAD/QQAA9UUAAOZGAgDhRQcA40INANVDGQDMRSwAxkc8AcFHSQK8RlUE uUVfBrVEaAmzQ3ELsEN5Da5CgQ+sQokQqkGREqhBmhOnQKQUpUCvFaNAvBahQNAWnkHqF5xB/Bea Qf8XmEH/F5hB/xaXQf8Vl0H/FZdB/xWXQf8V/zsGAP8/AAD5RgAA5UsAANxOAADTTQQA0UoJAMpK FADCTScAvE43AbdORQKyTVAFr0xaCKtLYwqoSmwNpkl0D6RJfBGhSIQTn0eMFZ1HlRebRp8YmUaq GZdGuBqWRsobk0bmG5FH+RuPR/8ajkf/GY5H/xiNR/8YjUf/F41H/xeNR/8X/z4CAP9DAADrSwAA 3VEAANFUAADKVAEAxlIFAMFREQC5UyIAs1UzAa5UQQKqVEwFplNWCKJRXwyfUGcPnU9vEZpOdxSY Tn8Wlk2IGJNMkRmRTJsbj0umHY1Lsx6LS8UeiUviHodM9x6GTP8dhUz/HIVN/xqFTP8ZhUz/GYVM /xmFTP8Z/0AAAPxHAADlUAAA1VYAAMpZAADCWgAAvVgDALhXDgCxWR4ArFovAadaPQKiWUkFnlhT CZtXWwyXVmQQlVVrEpJUcxWPU3sXjVKEGotRjRyIUZcehlCjH4RQsCCCUMEhgFDdIX5R9CB9Uf8f fVH/HX1R/xx9Uf8bfVH/Gn1R/xp9Uf8a/0IAAPBKAADfVAAAzloAAMReAAC8XwAAtl4AALFcCwCr XhoApWArAKBgOgKcX0UFl15QCZRcWAyQW2AQjVpoE4tZcBaIWHcYhVeAG4NWiR2AVpQfflWfIXtV rSJ5VL0jeFXXI3dV8iJ2Vv8gdlb/H3ZW/x12Vv8cdlb/G3ZW/xt2Vv8b/0UAAOxOAADaWAAAyV4A AL9iAAC3ZAAAsWMAAKthCACkYxcAn2QoAJplNwKWZEMFkWNNCI5hVQyKYF0Qh19lE4RebBaBXXQZ flx9HHxbhh55WpEgd1qdInRZqiRyWbolcVnSJXBa8CNvWv8ib1r/IHBa/x5wWv8dcFr/HHBa/xxw Wv8c/0gAAOdSAADTWwAAxWIAALtmAACzaAAArGgAAKVmBQCfZxQAmmklAJVpNAKQaEAEjGdKCIhm UwyEZVsQgWRiE35jahZ7YnIZeGF6HHZghB5zX44hcF6aI25eqCVsXbglal7OJmle7iRpXv8ial7/ IGpe/x9qXv8eal7/HWpe/x1qXv8d+UoAAONVAADPXwAAwWUAALdqAACvbAAAp2wAAJ9qAQCZaxEA lG0iAJBuMQGLbT0Eh2xHB4NrUAt/algPfGhgE3hnZxZ2Z28Zc2Z4HHBlgR5tZIwhamOYI2hipiVm YrYmZGLMJmRi7CVkYv8jZGL/IWVi/x9lYv8eZWL/HWVi/x1lYv8d8kwAAN9YAADKYgAAvWkAALNu AACrcAAAonAAAJluAACTcBAAj3IfAIpyLgGGcjsDgnFFB31wTgt6blYOdm1eEnNsZRVwa20YbWp1 G2ppfx5naYohZWiWI2JnpCVgZ7QmX2fJJl5n6iVeZ/4jX2f/IV9m/x9gZv8eYGb/HmBm/x5gZv8e 708AANpcAADGZQAAum0AALByAACndQAAnXQAAJRzAACNdA0AiXYcAIV3KwGBdzgDfHZDBnh1TAl0 dFQNcXNbEW5yYxRrcWsXaHBzGmVvfB1ibocgX22UIl1soiRabLIlWWzHJVhs6CVZbP0jWWv/IVpr /x9ba/8eW2r/Hltq/x5bav8e61MAANNgAADCaQAAtnEAAKx2AACjeQAAmXkAAI13AACHeQsAg3sY AH98KAB7fDUCd3tABXN6SQhveVEMbHhZD2h3YRNldmgWYnVwGV90ehxcdIUfWnORIVdyoCNVcrAk U3LFJFNy5yRTcfwiVHH/IFRw/x9VcP8eVW//HVVv/x1Vb/8d5VcAAM1kAAC+bQAAsnUAAKh7AACf fgAAk30AAId9AACAfwcAfIAVAHiBJAB1gjIBcYE9BG2ARgdpgE8KZn9WDWN+XhFgfWYUXXxuF1p7 dxpXeoIdVHqPH1F5nSFPea4iTnnDIk145SJNd/shTnf/H052/x5Pdf8dT3X/HU91/x1Pdf8d31wA AMhoAAC5cgAArnoAAKWAAACaggAAjoIAAICDAAB5hQIAdIYRAHGIIABuiC4Baog5AmeHQwVjh0wI YIZTC12FWw5ahGMRV4RrFFSDdRdRgoAaToGNHEuBmx5JgawfSIDBIEeA4x9Hf/oeSH7/Hkh9/x1J fP8cSXz/HEl8/xxJfP8c1mEAAMJuAAC0eAAAqoAAAJ+FAACUhwAAiIcAAHuJAABwjAAAa44NAGiP GgBmjykAYpA1AV+PPwNcj0gFWY5QCFaOWAtTjWAOUIxoEE2MchNKi30WSIqKGEWKmRpDiqobQoq/ G0GK4RtBiPkbQYb/G0GF/xtChf8aQoT/GkKE/xpChP8azWcAALx0AACvfgAApYYAAJqKAACOjAAA go0AAHWQAABnlAAAYZUIAF6XFABclyMAWpgvAFeYOgFUmEQDUpdMBU+XVAdMl1wJSZZlDEeWbw5E lXoRQZWIEz+UlxU9lKgWO5S9FjuU3xY6kvgXOpD/FzqP/xc6jv8XOo7/FzqO/xc6jv8XxW4AALZ7 AACqhQAAnosAAJSPAACIkgAAe5QAAG6XAABimwAAV54AAFKgDgBRoBsAT6EoAE2hNABLoT4BSaFH AkehUANEoVgFQqFhBz+gawk9oHcLOqCFDTiglA42oKYPNaC7EDSg3Q//4vAASUNDX1BST0ZJTEUA Bgo0nfcQM5z/EjOa/xIzmf8TM5n/EzOZ/xMzmf8TvXcAAK+DAACjiwAAmJEAAI2VAACBmQAAc5wA AGefAABbogAAT6YAAEepCABEqhIAQ6ofAEGrKwBAqzcAP6xBAD2sSgE7rFMCOaxcAzesZwQ1rHMF MqyBBjCskQcurKMILay4CSys2QgsqvUKK6j/Cyqm/wwqpf8NKqX/DSql/w0qpf8NtYAAAKiLAACc kQAAkZYAAIWcAAB4oAAAa6UAAF+oAABTrAAASK8AAD2yAAA2tQsANLUVADO2IQAytiwAMbc3ADC3 QQAvuEsALrhVACy4YAEquG0BKbl7Aie5jQIluZ8DJLm0AyO50gMjt/QEIrX/BSG0/wYhs/8HIbL/ ByGy/wchsv8HrYoAAKCRAACVlwAAiJ0AAHujAABuqAAAYa0AAFWxAABKtAAAP7cAADS7AAArvgMA JMIMACLCFAAiwx8AIcMqACDENAAfxD8AHsVKAB3GVgAcxmMAG8dzABrHhQAZx5kAGMiuABfIywAX xvEBF8T/ARbD/wIWwf8DFsH/AxbB/wMWwf8Do5EAAJiYAACLngAAfaUAAHCrAABisQAAVrYAAEq5 AAA+vQAANMAAACrEAAAiyAAAGcwEABPQCgAR0hEAENIaABDTJQAP0zAADtQ8AA7USAAN1VYADdVl AAzWeAAM1o0AC9ikAArYvgAJ2eYACtb+AAvU/wAL0v8AC9L/AQvS/wEL0v8BmpgAAI6fAACApgAA cq0AAGS0AABXugAASb8AAD3CAAAyxgAAKMkAAB/NAAAX0QAAEdYAAAzbBQAI3gsABt8RAAXfGgAE 4CQAAuEuAAHiOgAA40cAAORWAADkZwAA5XsAAOaSAADmqgAA58gAAOfwAADo/wAA6P8AAOj/AADo /wAA6P8AkZ8AAIKnAAB0rwAAZbcAAFe+AABJwwAAPMcAADDLAAAlzwAAHNQAABTZAAAO3QAACeEA AALlAAAA6QYAAOkNAADpEQAA6hgAAOshAADtKwAA7zcAAPFFAADyVgAA82gAAPN+AAD0lwAA9bAA APbQAAD38wAA9/8AAPf/AAD3/wAA9/8AhacAAHawAABmuAAAWMEAAErIAAA7zAAALtEAACPWAAAZ 3AAAEeAAAAzjAAAE5wAAAOoAAAD1AAAA9AAAAPUFAAD1CwAA9g8AAPYUAAD4HQAA+icAAPw0AAD/ QwAA/1UAAP9pAAD/gQAA/5oAAP+yAAD/zwAA/+0AAP/5AAD/+QAA//kAeLAAAGi6AABZwwAAS8sA ADvRAAAt2AAAId0AABbiAAAO5gAACOoAAADtAAAA8AAAAPgAAAD/AAAA/wAAAP8AAAD/AAAA/wYA AP8MAAD/EAAA/xgAAP8iAAD/MAAA/0AAAP9TAAD/aQAA/4EAAP+ZAAD/rwAA/8MAAP/VAAD/1QAA /9UA/xMoAP8TJQD/ESUA/w0nAP8GLQD/ADUA/wBBAP8ATwD/AFwA/wBpAP8AdAD/AH4A/wCIAP8A kAD/AJcA/wCdAP8ApAD/AKoA/wCwAP8AtwD/AMAA/wDMAP8A3wD/AOwA/wD4AP8A/wD/AP8A/wD/ AP8A/wD/AP8A/wD/AP8A/wD/AP8A/xYlAP8WIgD/FCEA/xAjAP8KKAD/ADAA/wA9AP8ASwD/AFgA /wBkAP8AcAD/AHoA/wCEAP8AjAD/AJMA/wCaAP8AoAD/AKYA/wCtAP8AtAD/ALwA/gDIAP0A2QD7 AOkA+gD2APkA/wD4AP8A+AD/APgA/wD4AP8A+QD/APkA/wD5AP8A/xoiAP8aHgD/GB0A/xMeAP8O IgD/CiwA/wc5AP8DRgD/AFMA/wBgAP8AawD/AHYA/wB/AP8AiAD/AI8A/wCWAP8AnQD/AKMA/gCp APwAsAD6ALkA9wDEAPUA0gDzAOYA8gD0APEA/wDwAP8A7wD/AO8A/wDvAP8A8AD/APAA/wDwAP8A /x4dAP8eGQD/HBcA/xcYAP8THgD/ESgA/w40AP8MQQD/Ck4A/whbAP8HZgD/BnEA/wZ6AP8GgwD+ BosA/AaSAPoGmQD4Bp8A9gamAPQGrQDyBrUA8AXAAO0FzgDrBeQA6QbzAOYI/wDlCv8A5Av/AOQL /wHkC/8B5Av/AeQL/wHkC/8B/yEYAP8hEwD/IBEA/xsSAP8cGgD/GiQA/xYvAP8TPAD/EUkA/xBV APwOYQD5DmsA9g51APQOfgDyDoYA8A6OAO4OlQDtDpsA6w6iAOoOqgDoDrMA5g+9AOUPzADhD+MA 3RDzANkR/wHWEv8B1BP/AdMT/wLSE/8C0hP/AtIT/wLSE/8C/yUTAP8lEAD/JA0A/yMOAP8jFAD/ Ih4A/x8pAP8cNQD5GUMA9BhPAO8XWwDsF2YA6RdwAOYXeQDkF4EA4heJAOAXkQDfF5gA3RefANsX pwDZGLEA1hi7ANQZygDQGuEBzBvzAckc/wLGHP8CxBz/A8Mc/wPDHP8Dwxz/A8Mc/wPDHP8D/ygQ AP8pCwD/KAYA/ysLAP8rEAD/KRcA/SYiAPQjLgDsITsA5iBJAOIgVQDeIGAA2iFqANYhdADTIXwB 0CGEAc8ijAHNIpMByyKbAckiowHII6wCxiO2AsQjxALCJNsCviXuA7sl/gS4Jf8FtiX/BbUl/wa1 Jf8GtSX/BbUl/wW1Jf8F/ywNAP8tBQD/LgEA/zEFAP8xCwD9LxAA8SsYAOcpJQDfKDMA2ChCANEq TwDNK1oAyStlAccrbgHELHYCwix+AsAshgO+LI4DvSyWA7ssngS5LKcEuCyxBbYsvwW1LdEFsS3q Bq4u+werLv8IqS7/CKgu/wioLf8IqC3/CKgt/wioLf8I/y8IAP8xAAD/NQAA9jcAAOo2AgDnMwgA 5C8PANkuGwDPMSwAyTM8AMQ0SQDANVUBvDVfAro1aAK3NXADtTR4BLM0gAWxNIgGsDSQBq40mQes NKIIqzSsCak0uQmnNMoKpTXlCqE1+AufNf8MnTX/DJ01/wucNf8LnDX/C5w1/wucNf8L/zMCAP81 AAD2OgAA5T4AANxAAADUPQQA0jcJAMs4FQDDOiYAvT02ALg+RAG0PlABsT1aA649YwSsPWsFqTxz Bqc8ewimPIMJpDuLCqI7lAugO50MnjuoDZ07tA6bO8UOmTvgDpY79A+UPP8Pkjz/D5I8/w6RPP8N kTz/DZE8/w2RPP8N/zUAAP85AADqQQAA3UYAANBHAADJRgAAxkEFAMBAEQC5QiEAs0QyAK9FQAGr RUsCp0VVA6REXgWhRGYHn0NuCJ1DdgqbQn4LmUKGDZdBjw6VQZkPk0GkEZFBsBKQQcASjkHZEotB 8RKJQv8SiEL/EYhC/xCHQv8Qh0L/D4dC/w+HQv8P/zgAAPM9AADjRwAA0kwAAMhOAADATQAAu0oC ALZHDgCwSR0Aq0stAKZMOwGiTEcCnktRBJtLWgaZSmIIlklqCpRJcQySSHkOj0iCD41HixGLR5US iUagFIdGrBWFRrsWhEbRFoJH7haAR/8Vf0f/FH9H/xJ/R/8Rf0f/EX9H/xF/R/8R/zsAAO5DAADc TAAAzFEAAMFUAAC5VAAAtFEAAK5NCwCoTxkAo1EpAJ5SNwGaUkMCl1FOBJRRVgaRUF4Jjk9mC4xO bQ2JTnUPh01+EYVNhxOCTJEVgEycFn5LqRd8S7gYe0vNGHlM6xh4TP4Xd0z/FXdM/xR3TP8Td0z/ EndM/xJ3TP8S/z4AAOhHAADVUAAAxlYAALxYAAC0WQAArVYAAKdTBwChVBUAnFYlAJhXNAGUV0AC kFdKBI1WUwaKVVsJh1RjC4RUag6CU3IQgFJ6En1SgxR7UY4WeFCZGHZQphl0ULUac1DJGnFQ6Bpw UfwYcFH/F3BR/xVwUf8UcVD/E3FQ/xNxUP8T9UAAAORLAADPVAAAwVoAALddAACvXgAAp1sAAKFY AwCbWRIAllsiAJJcMQGOXD0CilxHBIdbUAaDWlgJgVlgDH5ZZw57WG8QeVd3E3ZWgBV0VosXclWW GW9VoxptVLIbbFTGG2pV5htqVfsZalX/F2pV/xZqVf8Va1X/FGtV/xRrVf8U8kMAAN9PAADLWAAA vV0AALNhAACrYgAAomAAAJtcAACVXhAAkGAfAIxhLgCIYToChGBFBIFgTgZ+X1YJe15dC3hdZQ52 XGwQc1x0E3BbfRVuWogXa1qUGWlZoRtnWbAcZVnDHGRZ4xxkWfoaZFn/GGRZ/xdlWf8VZVn/FGVZ /xRlWf8U70YAANpSAADGWwAAumEAALBlAACmZgAAnWMAAJVhAACPYg4Ai2QcAIdlKwCDZTcBf2VC A3xkSwZ4Y1MIdWNbC3NiYg5wYWoQbWByE2tgexVoX4YXZl6RGWNenxthXa4cYF3BHF9d4RxfXfga X13/GF9d/xdgXf8WYF3/FWBd/xVgXf8V60oAANRWAADDXgAAtmUAAKxpAACiaQAAmGcAAI9lAACJ ZgwAhWgZAIFpKAB+ajUBemk/A3ZpSQVzaFEIcGdZCm1nYA1rZmcQaGVwEmVkeRVjZIMXYGOPGV5i nRtcYqwcWmK/HFli3xxZYvcaWmL/GVph/xdbYf8WW2H/FVth/xVbYf8V500AAM9ZAAC/YgAAs2gA AKltAACebQAAk2sAAIlpAACDawkAf20VAHxuJQB4bjIBdW49AnFuRgRubU8Ha2xWCWhsXgxla2UP Y2ptEWBpdhRdaYEWW2iNGFhnmxpWZ6obVWe9HFRn3BxUZ/YaVGb/GFVm/xdVZf8WVmX/FVZl/xVW Zf8V4lEAAMpdAAC7ZgAAr2wAAKZxAACZcAAAjm8AAINuAAB9cAUAeHISAHVzIQBycy8Bb3M6Amxz RARpckwGZnJUCGNxWwtgcGMNXXBrEFtvdBNYbn8VVW6LF1NtmRlRbagaT227G05t2RpObPQZT2v/ GE9r/xdQav8WUGr/FVBq/xVQav8V3VUAAMVhAAC3agAArHEAAKJ1AACUdAAAiXQAAHxzAAB2dQAA cXcQAG94HQBseSsAaXk3AWZ5QANjeUkFYHhRB113WAlbd2AMWHZoDlV1cRFSdXwTUHSIFk10lxdL c6YYSXO5GUhz1RlJcvMYSXH/F0px/xZKcP8VS3D/FEtw/xRLcP8U1FoAAMBmAACzbwAAqHYAAJ15 AACPeAAAhHgAAHd5AABvfAAAan0NAGd+GQBkfyYAYoAyAV+APQJcgEYDWn9OBVd/VQdUfl0JUn1l DE99bw5MfHkRSnyGE0d7lBVFe6QWRHu3FkN70hZDevIWQ3n/FUN4/xREd/8URHb/E0R2/xNEdv8T zV8AALtrAACudAAApHwAAJd+AACKfQAAf34AAHJ/AABmgwAAYYQIAF6GEwBchyEAWocuAFiHOAFV h0ICU4dKA1CHUgVOhloHS4ZiCUmFbAtGhXcNQ4SDD0GEkhE/hKISPYS1EzyEzxM8gvASPIH/Ej2A /xI9f/8SPX7/ET1+/xE9fv8RxWYAALVxAACqewAAn4IAAJKCAACFggAAeYMAAG2GAABfigAAWI0B AFSODwBSjxsAUI8nAE+QMwBNkD0BS5BFAkmQTgNGkFYERI9fBUKPaAc/j3MJPY6ACzqOjww4jqAN N46zDjaOzA42je8ONYv/DjWJ/w81iP8PNof/DzaH/w82h/8Pvm0AALB5AAClggAAmYcAAIyIAAB/ iAAAcooAAGaNAABakQAAUJUAAEmXCQBHmBMARZggAESZKwBDmTYAQZpAAECaSAE+mlECPJpaAjqa ZAM3mm8FNZl9BjOZjAcxmZ0IL5mwCC6ZyggumO0ILpb/Ci2U/wotk/8LLZL/Cy2S/wstkv8LtnUA AKqBAACeiAAAk40AAIaOAAB4jwAAa5IAAF+VAABUmQAASZ0AAECgAAA6og0AOKMXADejIgA2pC0A NaQ3ADSkQQAzpUsAMaVUATClXgEupWoBLKV4AiqliAMopZoDJ6WtBCalxgMmpOsEJaL/BSWg/wYk n/8GJJ7/BySe/wcknv8Hr34AAKOIAACXjgAAjZMAAH6VAABwmAAAY5sAAFefAABMogAAQqYAADip AAAvrAMAKq4OACmuGAAoryMAJ68tACawNwAlsEEAJLBLACOxVgAisWMAIbFxAB+xggAespQBHLKp ARuywQEbsecBG6/+Ahqt/wIarP8DGqv/Axqr/wMaq/8DqIgAAJuPAACRlAAAhJoAAHafAABoogAA W6UAAE+pAABErQAAObAAAC+zAAAmtgAAHrkFABi7DgAXuxYAF7wgABa8KgAVvTUAFL1AABO+SwAS vlgAEr5nABG/eAAQv4wAEMCiAA7AugAOwOEAD737AA+8/wAQuv8BELr/ARC6/wEQuv8Bn48AAJSV AACHmwAAeaEAAGunAABerAAAUrEAAEW0AAA6tgAAL7kAACW8AAAdvwAAFcMAAA/GBQALyg0ACcoU AAjKHQAHyicAB8oyAAbLPgAFy0sABMxaAAPMagACzH4AAcyUAADMqwAAzcgAAMztAADM/wAAy/8A Acr/AAHK/wAByv8Al5YAAIqcAAB8owAAbqoAAGCwAABStgAARbkAADm8AAAuvwAAI8MAABvGAAAT ygAADc0AAAjRAAAB1AkAANQOAADVFQAA1h4AANgnAADZMQAA2z4AANxLAADdWwAA3m4AAN6EAADf mwAA37QAAN7ZAADf9wAA3/8AAN//AADf/wAA3/8AjZ0AAH+lAABwrAAAYbMAAFO6AABFvwAAOMIA ACzGAAAhyQAAGM0AABDRAAAL1QAABNoAAADeAAAA4AEAAOEJAADiDgAA5BMAAOUbAADnJAAA6S8A AOs8AADtSwAA7l0AAO5xAADviQAA8KIAAPC8AADw4wAA7/kAAPD/AADw/wAA8P8AgaUAAHKtAABj tQAAVL0AAEbEAAA3yAAAKswAAB/QAAAV1QAADtoAAAfeAAAA4gAAAOYAAADpAAAA6gAAAOwAAADu BQAA7wwAAPEQAADzFwAA9SAAAPgrAAD7OQAA/UoAAP5eAAD/dAAA/40AAP+mAAD/wAAA/+EAAP/1 AAD/9QAA//UAdK4AAGW3AABWwAAAR8gAADjNAAAq0gAAHdgAABPdAAAM4gAAA+YAAADpAAAA7AAA APAAAADzAAAA9AAAAPYAAAD4AAAA+gAAAP0HAAD/DQAA/xIAAP8bAAD/KAAA/zcAAP9KAAD/XgAA /3YAAP+PAAD/pgAA/7oAAP/RAAD/0QAA/9EA/w8kAP8OIgD/CyEA/wMkAP8AKQD/ADIA/wA+AP8A TAD/AFkA/wBlAP8AcAD/AHoA/wCEAP8AjAD/AJIA/wCZAP8AnwD/AKUA/wCrAP8AsgD/ALoA/wDF AP8A0wD/AOcA/wD0AP8A/wD+AP8A/wD/AP4A/wD+AP8A/gD/AP4A/wD+AP8A/xEhAP8QHgD/DR0A /wcfAP8AIwD/AC0A/wA6AP8ASAD/AFUA/wBhAP8AbAD/AHYA/wB/AP8AhwD/AI4A/wCVAP8AmwD/ AKEA/wCnAP4ArgD9ALYA/ADAAPsAzQD5AOIA+ADwAPcA/AD2AP8A9QD/APUA/wD1AP8A9QD/APUA /wD1AP8A/xUdAP8TGgD/EBkA/wsZAP8AHQD/ACkA/wA2AP8AQwD/AFAA/wBcAP8AZwD/AHEA/wB6 AP4AgwD8AIoA+gCRAPkAlwD4AJ0A9wCjAPUAqgD0ALIA8gC7APEAyADvANwA7gDsAO0A+gDrAP8A 6gD/AOoA/wDqAP8A6gD/AOoA/wDqAP8A/xgZAP8WFQD/ExMA/w4TAP8LGgD/ByQA/wIwAP8APgD/ AEsA/wBXAP8AYgD8AGwA+AB1APUAfgDyAIUA8QCMAO8AkwDuAJkA7ACgAOsApgDpAK4A5wC3AOYA wwDkANQA4gDpAOEA9wDfAP8A3QD/AN0A/wDdAP8A3QD/AN0A/wDdAP8A/xsTAP8aEAD/Fg4A/xIO AP8SFQD/Dx8A/wwrAP8JOAD/BkUA+wNRAPcCXADyAmYA7gJwAOoCeADnAoAA5gOHAOQDjgDiA5UA 4QOcAN8EowDdBKsA2wS0ANgFwADWBdAA0wbnANAI+ADOCv8AzAv/AMsM/wDLDP8Aywv/AMsL/wDL C/8A/x8QAP8eCwD/GgcA/xkLAP8YEQD/FhkA/xIkAPoQMADzDj4A7g1KAOkMVgDlDGEA4gxqAN4N cwDbDXsA2Q2DANYNigDUDZEA0g2ZANAOoADPDqkAzQ6zAMsOvwDKD9AAxhHpAMIS+QC/E/8AvRP/ AbwT/wG8E/8BvBP/AbsT/wG7E/8B/yIMAP8hBAD/IAAA/yEFAP8fDAD/HBEA9hgcAOwVKADlEzYA 3xJDANkTTwDTFFoA0BVkAM0WbQDLFnUAyRd9AMcXhQDFGIwAxBiUAMIZnADAGaUAvhmvAL0auwC7 GssAuBvlAbQc9gGyHf8CsB3/Aq8d/wKuHf8Crh3/Aq4d/wKuHf8C/yYGAP8lAAD/JgAA+ycAAPEl AwDwIQsA6BwSAN4ZHQDUGy0AzR08AMgfSQDFIFUAwSFfAL8iaAC8InAAuiN4ALkjfwG3I4cBtSOP AbQklwGyJKABsSSqAq8ktgKtJcYCqyXfAqgm8wOlJv8Doyb/A6Im/wShJv8DoSb/A6Em/wOhJv8D /ykAAP8oAAD2LQAA5zAAAN8vAADZKwQA1iIKAM4jFgDGJicAwCg2ALsqRAC4K08AtSxZALIsYgGw LGoBri1yAawtegKqLYECqS2KAqctkgOlLZsDpC2lBKItsQSgLcAEny3YBJwu7wWZLv8Gly//BpYv /waVLv8FlS7/BZUu/wWVLv8F/ywAAP8uAADqNQAA3TkAANE5AADKNgAAxy8GAMEtEQC6MCEAtDIx ALA0PgCsNUoAqTVUAac1XQGkNWUCojVtAqA1dAOfNXwEnTWEBJs1jQWaNJcGmDShBpY0rQeUNbsI kzXQCJA17AiONv4IjDb/CIs2/wiLNv8HijX/B4o1/weKNf8H/y8AAPI0AADiPAAA0kEAAMdCAADA QAAAuzoBALY2DgCwORwAqjssAKY8OgCjPUYAnz1QAZ09WQKaPWEDmD1oBJY8cAWUPHcGkjyAB5E8 iAePO5IIjTudCYs7qQqJO7cLiDvKC4U86AuDPPsLgjz/CoE8/wqBPP8JgTz/CIE8/wiBPP8I/zMA AOw6AADaQwAAykcAAL9JAAC3RwAAsUIAAK0+CgCmQBcAokInAJ5DNQCaREIBl0RMAZREVQKRQ10D j0NkBY1DawaLQnMHiUJ7CIdChAqFQY4Lg0GZDIFBpQ1/QbMOfkHGDnxB5A56QvkNeUL/DHhC/wt4 Qv8LeEL/CnhB/wp4Qf8K9jYAAOZAAADRSAAAw00AALlOAACxTQAAqUkAAKRFBgCfRhMAmkgjAJZJ MgCSSj4Bj0pIAoxKUQOKSVkEh0lgBYVJaAeDSG8IgUh3Cn9HgAt9R4oNekeVDnhGog92RrAQdUbC EHNG4BByR/cPcUf/DnFH/w1xR/8McUf/C3FG/wtxRv8L8zkAAOBEAADMTAAAvlEAALRTAACqUgAA ok4AAJ1KAQCXSxEAk00gAI9PLgCMTzoBiE9FAoVPTgODT1YEgE5dBn5OZAd8TWwJeU10C3dMfQx1 TIcOc0ySD3FLnxFvS60SbUu/EmxL3BJrTPURakz/D2pM/w5qS/8Nakv/DGpL/wxqS/8M8D0AANtI AADHUAAAulUAALBYAAClVgAAnFMAAJdPAACRUA4AjFIcAIlUKwCFVDcAglRCAX9USwN8VFMEelNa BnhTYgh1UmkJc1JxC3FReg1uUYQPbFCQEGpQnBJoUKsTZlC8E2VQ2BNkUPMSZFD/EGRQ/w9kUP8O ZU//DWVP/wxlT/8M7EEAANRMAADDVAAAtlkAAKxcAACgWgAAl1cAAJFUAACLVQwAhlcZAINYJwCA WTQAfVk/AXpZSAN3WFAEdFhYBnJXXwdvV2YJbVZuC2tWdw1oVYEPZlWNEWRUmhJiVKkTYFS6FF9U 0xReVPITXlT/EV9U/w9fVP8OX1P/DV9T/w1fU/8N50QAAM9QAAC/WAAAs10AAKhfAACcXQAAklsA AItYAACFWgoAgVsWAH1cJAB6XTEAd108AXRdRgJxXU4Eb1xVBWxcXQdqXGQJaFtsC2VadQ1jWn8P YVmLEV5ZmBJcWKcUW1i4FFlZ0BRZWPATWVj/EVpY/xBaWP8OWlf/DVpX/w1aV/8N40gAAMtTAAC7 WwAAsGEAAKRiAACXYQAAjl8AAIVcAAB/XgcAe18TAHhhIQB1Yi4AcmI5AW9iQwJsYUsDamFTBWdh WgdlYGIJY2BqC2Bfcw1eXn0PW16JEVldlhJXXaUTVV22FFRdzhRUXe4TVF3/EVVc/xBVXP8OVVv/ DlZb/w1WW/8N3kwAAMdWAAC4XwAArWQAAKBlAACTZAAAiWMAAH9hAAB5YgMAdWQRAHJlHgBvZisA bGc3AWpnQAJnZkkDZWZRBGJlWAZgZWAIXWRnCltkcAxZY3sOVmOGEFRilBJSYqMTUGK0E09izBNP Yu0ST2H/EU9h/xBQYP8OUGD/DlBg/w1QYP8N2U8AAMNaAAC0YwAAqWkAAJtoAACPZwAAhGcAAHll AABzZwAAb2kOAGxqGwBpaygAZ2w0AGRsPQFibEYCX2tOBF1rVgVaal0HWGplCVZpbgtTaXgNUWiE D05okhBMZ6ESS2eyEklnyRJJZ+sSSWb/EEpm/w9KZf8OS2X/DUtk/w1LZP8N0VQAAL5eAACxZwAA pm0AAJdsAACKawAAf2sAAHNrAABtbQAAaG4MAGVwFwBicSQAYHEwAF5xOgFccUMCWXFLA1dxUwRV cFoGUnBiB1BwawlOb3ULS2+CDUlujw9Hbp8QRW6wEURuxxFDbeoQRGz/D0Rr/w5Fa/8NRWr/DUVq /w1Fav8Ny1gAALpjAACtbAAAoXEAAJJwAACFbwAAem8AAG5wAABlcwAAYHUHAF12EgBbdx8AWXgr AFd4NgBVeD8BU3hIAlF4TwNPd1cETHdfBUp3aAdIdnMJRXZ/C0N1jQxBdZ0OP3WuDj51xQ49degO PnP9DT5y/w0+cf8MP3H/DD9w/ww/cP8MxV4AALVpAACpcQAAnHUAAI10AACAdAAAdXQAAGl2AABe eQAAWHwBAFR9DgBSfhoAUX8mAE9/MQBNgDsATIBDAUqASwJIf1QCRn9cBEN/ZQVBf3AGP358CDx+ igk6fpoKOX6sCzd+wws3feYLN3v8Czd6/ws3ef8KOHj/Cjh4/wo4eP8KvmQAALBvAACleAAAlnkA AId5AAB7eQAAcHoAAGR8AABYgAAAUIMAAEuFCgBIhhQAR4cgAEWIKwBEiDUAQ4g+AEGJRwFAiU8B PohYAjyIYQM6iGwEN4h4BTWIhwYziJgHMoeqBzCIwAcwh+QHMIX7CDCD/wgwgv8IMIH/CDCB/wgw gf8It2sAAKp2AACgfwAAkH4AAIJ+AAB2fwAAaoAAAF6DAABThwAASosAAEGOAgA9kA4AO5AYADqR IwA5kS0AOJI3ADeSQAA2kkkANJNSADOTXAExk2cBL5N0Ai2SgwMrkpQDKpKnAyiSvQQokuEDJ5D6 BCeO/wUnjf8FJ4z/BSeM/wUnjP8FsXQAAKV+AACZhQAAioQAAH2EAABvhQAAY4gAAFiLAABNjwAA Q5MAADqXAAAymgcALpsQAC2bGgAsnCQAK5wuACqdOAApnUEAKJ1LACeeVQAmnmEAJZ5uACOefgEi npABIJ6jAR+euQEent0BHpz4Ah6a/wIemf8DHpf/Ax6X/wMel/8Dqn0AAJ6FAACTiwAAhYoAAHWL AABojgAAW5EAAFCVAABGmQAAO50AADKgAAAqowAAIqYJAB+nEQAepxoAHagkAByoLQAbqDcAGqlB ABmpTAAYqVgAF6pmABaqdgAVqokAFKqeABOrtAASq9MAEqj1ABOn/wETpf8BE6X/AROk/wETpP8B o4YAAJeMAACNkQAAfZIAAG2VAABgmAAAVJwAAEigAAA+pAAANKcAACqrAAAhrgAAGbEAABKzBwAP tRAADrUXAA61IQANtSsADbU2AAy2QQALtk4ACrZcAAm2bAAItn8AB7aUAAa2qgAFtsUABrbqAAe1 /wAItP8ACLP/AAmy/wAJsv8Amo0AAJCTAACEmAAAdJwAAGWgAABXpAAAS6gAAECsAAA1sAAAKrMA ACG1AAAYuAAAEbsAAAy+AgAGwAsAAsARAAHBGQAAwSIAAMIrAADCNgAAw0IAAMNQAADEXwAAxHEA AMSHAADEnQAAxLUAAMTaAADE9gAAw/8AAMP/AADD/wAAw/8Ak5QAAIeaAAB4oAAAaqYAAFysAABP sQAAQbUAADW3AAApugAAH70AABbAAAAQwwAACsYAAAPKAAAAzAUAAMwMAADNEQAAzhgAAM4hAADQ KgAA0TUAANNDAADUUgAA1GMAANV4AADVjwAA1acAANbCAADW6QAA1v0AANb/AADW/wAA1v8AipsA AHuiAABsqQAAXrAAAFC2AABCugAANL0AACjBAAAdxAAAFMcAAA3LAAAGzgAAANIAAADXAAAA2QAA ANoFAADcCwAA3RAAAN8VAADhHQAA4ycAAOUzAADnQgAA6FQAAOhnAADpfgAA6ZcAAOqvAADqzgAA 6+8AAOv+AADr/wAA6/8AfaMAAG6rAABfsgAAUboAAELAAAA0wwAAJ8cAABvLAAASzwAAC9MAAALY AAAA3QAAAOEAAADkAAAA5QAAAOcAAADpAAAA6wcAAO0NAADvEQAA8RkAAPQkAAD3MQAA+UEAAPpV AAD6agAA+4QAAPudAAD8tgAA/NIAAP3tAAD99AAA/fQAcawAAGG1AABSvQAARMQAADTJAAAmzQAA GtIAABDYAAAI3QAAAOEAAADlAAAA6AAAAOwAAADvAAAA8QAAAPMAAAD1AAAA9wAAAPkBAAD7CAAA /g4AAP8VAAD/IQAA/y8AAP9BAAD/VgAA/20AAP+HAAD/oAAA/7YAAP/KAAD/1AAA/9QA/wsgAP8H HgD/AB0A/wAgAP8AJQD/AC4A/wA7AP8ASQD/AFYA/wBiAP8AbQD/AHYA/wB/AP8AhwD/AI4A/wCU AP8AmgD/AKAA/wCmAP8ArQD/ALUA/wC+AP8AywD/AOEA/wDwAP4A/QD9AP8A/QD/AP0A/wD9AP8A /AD/APkA/wD5AP8A/w0dAP8LGgD/BBkA/wAaAP8AHwD/ACoA/wA3AP8ARQD/AFEA/wBeAP8AaAD/ AHIA/wB6AP8AggD/AIkA/wCQAP8AlgD/AJwA/gCiAPwAqQD7ALAA+QC5APgAxgD2ANkA9QDrAPQA +QDzAP8A8gD/APMA/wDzAP8A8wD/APMA/wDzAP8A/xAZAP8OFQD/CBQA/wAUAP8AGQD/ACUA/wAy AP8AQAD/AEwA/wBZAP8AYwD+AG0A/AB1APoAfQD5AIQA9wCLAPYAkQD0AJcA8wCeAPIApADwAKwA 7gC0AO0AwADrAM8A6QDmAOgA9QDmAP8A5wD/AOYA/wDlAP8A5QD/AOUA/wDlAP8A/xIUAP8QEAD/ DA8A/wMQAP8AFQD/ACAA/wAsAP8AOgD/AEcA+gBTAPcAXgD0AGcA8QBwAO8AeADtAH8A6wCGAOoA jADoAJMA5wCZAOUAoADjAKcA4QCwAN8AugDdAMkA2wDgANgA8ADXAP4A1QD/ANQA/wDTAP8A0wD/ ANMA/wDTAP8A/xUQAP8SDAD/DgkA/wsMAP8JEgD/AxoA/wAmAP0AMwD0AEAA7wBNAOsAWADoAGEA 5QBqAOIAcgDgAHoA3gCAANwAhwDaAI4A2ACVANQAnADSAKMA0ACsAM4AtgDMAMQAygDZAMgA7QDH APsAxQD/AMQB/wDDAf8AxAH/AMQB/wDEAf8A/xgLAP8VBQD/EAAA/xAGAP8PDQD/DBQA/AcfAPED KwDnADkA4gBGAN4BUQDaAlsA1QJkANIDbADPA3QAzQR7AMsEggDKBIkAyAWQAMYFmADEBaAAwgap AMEGtAC/BsEAvQjVALsJ7AC4C/0Atgz/ALUN/wC0Df8AtA3/ALQN/wC0Df8A/xsFAP8YAAD/FwAA /xYAAPsTBgD6EA4A7gwWAOMJIgDaCTAA0wo+AM4LSgDKDFUAxw1eAMUNZwDCDm8AwQ52AL8OfgC9 D4UAvA+NALoQlQC4EJ0AtxCnALURsgCzEcAAshHVAK4T7gCrFP4AqRX/AKcV/wCnFf8AphT/AaYU /wGmFP8B/x8AAP8cAAD6HgAA6x4AAOMcAADfFQUA3g4NANMOGADLESgAxRM3AMAURAC8Fk8AuRdZ ALcXYQC0GGkAsxlxALEZeACvGoAArhqIAKwbkACrG5kAqRujAKccrgCmHLwApB3PAKEe6gGeHvwB nB//AZsf/wGaH/8Bmh7/AZke/wGZHv8B/yIAAP8hAADsJwAA4CoAANQpAADNJAAAyhwIAMQZEgC9 HCIAtx4xALMgPgCvIUkArSJTAKojXACoJGQApiRsAKQkcwCjJHoAoSWCAaAliwGeJZQBnSWeAZsm qgGZJrcBmCbJApUn5gKSJ/kCkCj/Ao8o/wKOJ/8Cjif/Ao4n/wKOJ/8C/yYAAPIpAADjMQAA0jQA AMg0AADAMAAAuykCALgjDgCxJhwArCgrAKgqOACkK0QAoSxOAJ8tVwCdLV8Amy1nAZktbgGYLnUB li59ApQuhgKTLpACkS6aA48upgONLrMDjC7FA4ov4QSHL/YEhS//BIQv/wOEL/8Dgy//A4Mv/wOD L/8D+ykAAOsxAADZOAAAyTwAAL88AAC2OQAAsDIAAKwtCwCnLxcAojEmAJ4zNACaNEAAmDVKAJU1 UwCTNVsBkTViAY81aQKNNXECjDV5A4o1ggOINYsEhjWWBIQ1ogWCNa8FgTXABn823AZ9NvQGezb/ BXs2/wV6Nv8Eejb/BHo1/wR6Nf8E9S0AAOQ3AADQPwAAwkMAALdEAACtQAAApzoAAKM2BgCdNxMA mTkiAJU6LwCSPDsAjzxGAIw8TwGKPFcBiDxeAoY8ZQKEPG0Dgjx1BIA8fQR/PIcFfTySBns7ngd5 O6wHdzu8CHY81Qh0PPEIczz/B3I8/wZyPP8Fcjz/BXI7/wVyO/8F8TIAAN49AADJRAAAvEgAALBJ AACmRgAAn0EAAJs9AQCVPRAAkT8dAI1BKwCKQjgAh0NCAIRDSwGCQ1MBgENbAn5CYgN8QmkEekJx BXhCegZ2QYQHdEGPCHJBmwhwQakJb0G5Cm1B0ApsQe4Ja0L/CGpC/wdqQf8GakH/BmpB/wVqQf8F 7TcAANZCAADESQAAt00AAKtNAACgSgAAmEcAAJNCAACOQw0AiUUaAIZGKACDRzQAgEg/AH5ISAF7 SFACeUhXAndIXwN1SGYEc0duBXFHdgZvR4AHbUaMCWtGmAppRqYLZ0a2C2ZGzAtlRuwLZEf/CWRG /whkRv8HZEb/BmRF/wZkRf8G6DsAANBGAAC/TQAAs1EAAKVRAACaTgAAkksAAI1HAACHSAsAg0oW AH9LJAB9TDEAek08AHdNRQF1TU0Cc01VAnFNXANvTWMEbUxrBWtMcwdpS30IZkuJCWRLlgpiS6QL YUu0DF9LygxeS+oLXkv+Cl5L/wleSv8IXkr/B15K/wdeSv8H4z8AAMtJAAC8UQAAsFUAAKFUAACW UgAAjVAAAIdMAACBTQgAfU8TAHpQIQB3US4AdFI5AHJSQgFvUksBbVJSAmtRWQNpUWEEZ1FoBmVQ cQdjUHsIYVCGCl9PkwtdT6EMW0+yDVlPxw1ZT+gMWE/9C1hP/wlZT/8IWU7/B1lO/wdZTv8H30MA AMdNAAC4VAAArFkAAJ1XAACRVQAAiFQAAIFQAAB7UgQAd1MRAHRUHgBxVSsAb1Y2AGxWQAFqVkgB aFZQAmZWVwNkVl4EYlVmBWBVbwddVXgIW1SECllUkQtXVKAMVVOwDVRTxQ1TU+YMU1P8C1NT/wlU Uv8IVFL/CFRS/wdUUv8H2kYAAMNQAAC1WAAAqFsAAJlaAACNWAAAhFcAAHtUAAB2VgEAcVcPAG5Z GwBsWigAaVozAGdbPQFlW0UBY1tNAmFaVQNfWlwEXVpkBVtZbAZYWXYIVlmCCVRYjwtSWJ4MUFiu DU9Yww1OWOQMTlj7C09X/wlPV/8IT1b/CFBW/wdQVv8H00oAAMBUAACyXAAAo14AAJVdAACJXAAA f1sAAHZZAABwWgAAa1wNAGhdGABmXiQAZF8wAGJfOgBgX0MBXl9LAlxfUgJaX1oDWF9hBVVeagZT XnQHUV1/CU9djQpNXZwLS12sDEpdwQxJXeMMSVz6Cklb/wlKW/8ISlr/CEpa/wdKWv8Hzk4AALxY AACuYAAAn2EAAJFgAACFXwAAe18AAHBdAABqXwAAZWEKAGJiFABgYyEAXmQtAFxkNwBaZEABWGRI AVZkUAJUZFcDUmRfBFBkZwVOY3EGTGN9CEliiwlHYpoKRmKqC0RivwtEYuELRGH5CkRg/wlEYP8I RV//B0Vf/wdFX/8HyFIAALhcAACrZAAAm2QAAIxjAACAYwAAdmMAAGpiAABjZAAAX2YGAFtnEQBZ aB0AV2kpAFZqMwBUajwAUmpFAVBqTAFOalQCTGpcA0pqZQRIaW8FRml6B0RpiAhCaJgJQGipCj9o vQo+aN4JPmf3CT5m/wg/Zf8HP2X/Bz9k/wc/ZP8Hw1cAALNhAACnaQAAlmgAAIdnAAB7ZwAAcWcA AGVoAABcagAAWGwBAFRuDgBSbxgAUG8kAE5wLgBNcDgAS3FBAEpxSQFIcVEBRnFZAkRwYgNCcGwE QHB4BT5whgY8b5UHOm+mCDhvuwg4b9sHOG72Bzht/wc4bP8GOWv/Bjlq/wY5av8GvVwAAK9mAACi bQAAkWwAAIJrAAB3awAAbGwAAGFuAABXcAAAUHMAAEx1CgBJdhMAR3cfAEZ3KQBFeDMAQ3g8AEJ4 RABBeE0BP3hVAT14XgI7eGgCOXh0Azd4ggQ1eJMFM3ekBTJ3uQUxeNcFMXb1BTF0/wUxc/8FMXL/ BTJy/wUycv8Ft2MAAKptAACccQAAi3AAAH1wAABycAAAZ3EAAFxzAABRdwAASnoAAEJ9AwA/fg4A PX8YADx/IwA7gC0AOoA2ADmBPwA4gUgANoFQADWBWgEzgWQBMYFwAS+BfwItgY8DLIGhAyqBtgMp gdIDKX/zAyl9/wMpfP8DKXv/Ayl7/wMpe/8DsWoAAKV0AACVdgAAhXUAAHh1AABtdQAAYXcAAFd6 AABMfgAAQ4EAADuFAAA1iAkAMokRADGJGwAwiSUAL4ovAC6KOAAti0EALItKACqLVAApi18AKItr ACaLegEki4sBI4ueASKLswEhjM4BIYrxASCI/wIghv8CIIX/AiGF/wIhhf8Cq3IAAKF8AACPewAA gHoAAHN6AABmfAAAW38AAFCCAABGhgAAPIoAADSNAAAskQAAJpMMACSUEwAjlBwAIpUmACGVLwAg lTgAH5ZCAB6WTAAdllgAHJZkABqXdAAZl4YAGJeZABeXrgAVl8kAFpXuABaT/wEWkv8BFpH/ARaQ /wEWkP8BpXsAAJmDAACJgQAAe4AAAGyCAABfhAAAVIgAAEmLAAA/kAAANZQAAC2XAAAlmgAAHZ4B ABagDAAUoRIAFKEbABOhJQASoS4AEaI4ABGiQwAQok8AD6JcAA6jawANo30ADaOSAAyjpwAKosAA C6LmAAyg/gANn/8ADZ7/AA2d/wANnf8AnoQAAJKJAACDiAAAc4gAAGWLAABYjgAATJIAAEGXAAA3 mwAALp4AACSiAAAcpQAAFagAAA+rBAAKrgwAB60SAAatGwAFrSQABK4uAAKuOQABrkUAAK5SAACu YQAArnMAAK6HAACunQAArrQAAK7VAACt9AAArf8AAKz/AACr/wAAq/8AlosAAIyQAAB7kAAAa5IA AF2WAABQmgAARJ8AADmjAAAvpwAAJasAAByuAAAUsQAADrQAAAm3AAABuAkAALgOAAC5FAAAuRwA ALolAAC6LwAAuzoAALxHAAC8VgAAvGcAALx7AAC8kQAAvKkAALzEAAC86wAAu/4AALv/AAC7/wAA u/8AkJIAAIOYAABzmwAAY58AAFWjAABHqAAAO60AADCxAAAltAAAG7cAABK6AAAMvQAABb8AAADD AAAAxAIAAMUKAADFDgAAxhQAAMcbAADIJAAAyi4AAMw6AADNSQAAzVkAAM1sAADOgwAAzpsAAM21 AADO2gAAzvYAAM3/AADN/wAAzf8AhpkAAHegAABppgAAWqwAAEyyAAA+tgAAMLkAACS8AAAZvwAA EcIAAArFAAACyQAAAMwAAADQAAAA0QAAANIBAADTCAAA1Q0AANcRAADaGAAA3CEAAN8sAADhOgAA 4koAAONdAADkcgAA5IsAAOWlAADlwAAA5eYAAOX4AADl/wAA5f8AeqEAAGupAABcrwAATbYAAD+8 AAAwvwAAI8MAABfHAAAPygAAB84AAADRAAAA1gAAANwAAADfAAAA4AAAAOIAAADkAAAA5gMAAOgJ AADpDgAA7BUAAO4eAADxKwAA9DoAAPVNAAD2YQAA93kAAPiTAAD4rQAA+cYAAPnkAAD58wAA+fMA baoAAF6yAABPugAAQMEAADHFAAAiyQAAFs4AAA3SAAAE2AAAAN0AAADhAAAA5AAAAOgAAADrAAAA 7QAAAO8AAADxAAAA8wAAAPYAAAD4AwAA+gsAAP0RAAD/GwAA/ykAAP87AAD/TwAA/2YAAP9/AAD/ mQAA/68AAP/DAAD/1gAA/9YA/wQcAP8AGQD/ABkA/wAcAP8AIgD/ACsA/wA4AP8ARgD/AFMA/wBe AP8AaQD/AHIA/wB6AP8AggD/AIkA/wCPAP8AlQD/AJsA/wChAP8AqAD/AK8A/wC5AP8AxQD/ANkA /gDsAP0A+wD7AP8A+wD/APsA/wD6AP8A9AD/APAA/wDwAP8A/wcYAP8BFQD/ABQA/wAWAP8AGwD/ ACYA/wA0AP8AQgD/AE4A/wBaAP8AZAD/AG0A/wB1AP8AfQD/AIQA/wCKAP0AkAD8AJYA+gCdAPkA owD4AKsA9wC0APUAvwD0AM4A8wDmAPEA9gDwAP8A7wD/AO8A/wDuAP8A7gD/AOoA/wDqAP8A/wsU AP8GEQD/ABAA/wAQAP8AFgD/ACIA/wAuAP8APAD/AEkA/wBUAP4AXwD7AGgA+QBwAPcAeAD1AH8A 8wCFAPIAiwDwAJIA7wCYAO0AnwDsAKYA6gCuAOgAuQDnAMcA5QDeAOMA8ADiAP4A4AD/AOAA/wDh AP8A4QD/AOEA/wDhAP8A/w0QAP8JDQD/AQwA/wAMAP8AEgD/ABwA/wAoAPwANgD5AEMA9gBOAPIA WQDvAGIA7ABrAOoAcgDoAHkA5gCAAOQAhgDiAIwA4QCTAN8AmgDdAKEA2wCqANgAtADVAMAA0gDT ANAA6gDOAPoAzQD/AM0A/wDNAP8AzAD/AMwA/wDMAP8A/xAMAP8MBwD/AwIA/wAIAP8ADgD/ABYA 9gAiAPAALwDsADwA6QBIAOUAUwDhAFwA3gBlANsAbADXAHMA1AB6ANIAgADQAIcAzgCOAMwAlQDK AJ0AyAClAMYArwDEALsAwgDLAMAA5QC+APUAvQD/ALwA/wC8AP8AvAD/ALwA/wC8AP8A/xEFAP8O AAD/CgAA/wgBAP8ECgD4ABAA6QAaAOMAKADeADUA2QBBANMATADPAFYAywBfAMkAZgDGAG4AxAB0 AMIAewDBAIIAvwCJAL0AkAC8AJgAugChALgAqwC2ALcAtADHALIA4ACxAfIArwL/AK4D/wCtBP8A rQT/AK0E/wCtBP8A/xQAAP8QAAD/DwAA8g0AAOoKAADpAwkA3QASANQAHwDNAS0AyAI6AMQDRQDA A1AAvQRZALsFYQC5BWgAtwZvALUGdgC0B30AsgeEALEIjACvCJUArQmeAKsJqACqCrUAqArFAKYL 3wCkDfQAog7/AKAO/wCfDv8Anw7/AJ8O/wCfDv8A/xcAAP8TAADvGAAA5BkAANsWAADSEAIAzwkL AMgIFgDBCiQAvAwyALcNPgC0DkkAsQ5TAK8QWwCtEGMAqxBqAKkRcQCoEXgAphGAAKURiACjEpEA oRKbAKATpgCeE7MAnBPDAJsU3gCXFvQAlRb/AJQX/wCTF/8Akhf/AJIW/wCSFv8A/xoAAPQdAADl IwAA1SUAAMokAADCHQAAvhYEALsQEAC0Ex0ArxUrAKsWOACnGEMApRlNAKIZVgCgGl0AnhtlAJ0b bACbHHMAmhx7AJgcgwCXHY0AlR2XAJMeogCSHq8AkB6/AI8f2ACMIPEBiSD/AYgg/wGHIP8BhyD/ AYYg/wGGIP8B+h4AAOsmAADaLQAAyjAAAL4uAAC1KAAAsCIAAK4bDACoHRcAox8mAJ8hMwCcIj4A mSNIAJckUQCVJFkAkyVgAJIlZwCQJm4AjiZ2AI0mfwCLJogBiieTAYgnngGGJ6sBhCe7AYMo0QGA KO4Bfin/AX0p/wF8KP8BfCj/AXwo/wF8KP8B9SQAAOMuAADPNQAAwTgAALQ2AACrMQAApSwAAKIm BgCeJhMAmSghAJUqLgCSKzkAjyxEAI0tTACLLVQAiS5cAIcuYwCGLmoBhC5yAYIuegGBL4QBfy+P An0vmgJ7L6cCei+3AngvzAJ2MOoCdTD+AnMw/wJzMP8Ccy//AnMv/wJzL/8C8CoAANw1AADHOwAA uj8AAKw8AACiOAAAnDMAAJgvAACVLhAAkDAcAIwyKQCJMzUAhjQ/AIQ1SQCCNVEAgDVYAH41XwF9 NWYBezZuAXk1dgJ4NYACdjWLA3Q1lwNyNqQDcDa0BG82yARtNucEbDb8A2s2/wNrNv8Cajb/Amo1 /wJqNf8C6jAAANM6AADCQQAAs0MAAKVBAACbPgAAlToAAJA2AACMNQ0AiDcYAIQ4JQCBOjEAfzs8 AHw7RQB6PE0AeDxVAXc8XAF1PGMBczxqAnE8cwJwPHwDbjuHA2w7lARqO6EEaDuxBWc8xQVlPOUF ZDz6BGQ8/wNjO/8DYzv/A2M7/wJjO/8C5TUAAM0/AAC9RgAArkcAAJ9FAACVQwAAjkAAAIk8AACE PAoAgD0UAH0+IgB6Py4AeEA4AHVBQgBzQUoAckFRAXBBWQFuQWACbEFnAmpBcANoQXkDZ0GEBGVB kQVjQZ8FYUGuBmBBwgZeQeIGXkH5BV1B/wRdQP8DXUD/A11A/wNdQP8D3zkAAMhDAAC5SgAAqUsA AJtJAACQRwAAiEQAAINBAAB+QQYAekIRAHZDHgB0RSoAcUU1AG9GPwBtRkcAa0ZPAWpGVgFoRl0C ZkZlAmRGbQNiRnYEYEaCBF5GjgVcRZwGW0WsBllGvwdYRt8GWEb3BVdF/wRXRf8EV0T/A1hE/wNY RP8D2j0AAMRHAAC1TgAApE4AAJZMAACLSwAAg0kAAH1FAAB4RgIAdEcQAHBIGwBuSScAa0oyAGpL PABoS0QAZktMAWRLUwFiS1oCYEtiAl9LagNdS3QEW0p/BVlKjAVXSpoGVUqqB1RKvQdTStwHUkr2 BlJK/wVSSf8EUkn/A1JI/wNTSP8D1EEAAMBLAACyUQAAoFAAAJJPAACHTgAAfkwAAHhIAABySgAA bksNAGtNGABoTiQAZk4vAGRPOQBiT0IAYVBJAV9QUQFdUFgCW09gAllPaANXT3IEVU99BVNPigVS TpgGUE6oB05OuwdNTtkHTU71Bk1O/wVNTf8ETU3/BE5M/wNOTP8DzkQAALxOAACuVAAAnFMAAI5S AACDUQAAelAAAHJNAABsTwAAaFALAGVRFQBjUiEAYVMsAF9TNgBdVD8AW1RHAFpUTgFYVFYBVlRd AlRUZgNSU28DUFN7BE5TiAVMU5cGS1OnB0lTugdIU9UHSFLzBkhS/wVIUf8ESVH/BElQ/wNJUP8D ykgAALlSAACqVwAAmFYAAIpVAAB/VAAAdlMAAGxRAABnUwAAYlQIAF9WEgBdVx4AW1cpAFlYMwBY WDwAVllEAFVZTAFTWVMBUVlbAk9YZAJNWG0DS1h4BElYhgVHV5UGRVelBkRXuAZDWNIGQ1fyBkNW /wVDVf8ERFX/BERU/wNEVP8DxkwAALVWAAClWgAAlFkAAIZYAAB7WAAAcVcAAGZWAABhWAAAXVkE AFlaEABXWxsAVVwmAFNdMABSXTkAUV5BAE9eSQBNXlEBTF5YAUpeYQJIXWsDRl12A0RdgwRCXZIF QF2jBj9dtgY+XdAGPVzxBT5b/wQ+Wv8EPlr/Az5Z/wM/Wf8DwVAAALFaAAChXQAAkFwAAIJbAAB2 WwAAbVsAAGFbAABbXQAAVl4AAFJgDQBQYRcATmIiAE1iLABMYzUASmM+AEljRgBHY04ARmNWAURj XgFCY2gCQGNzAz5jgQM8Y5AEOmKhBDlitAU4Y80FOGLvBDhh/wQ4YP8DOF//Azle/wM5Xv8DvFUA AK1fAACcYAAAi18AAH1fAAByXwAAaF8AAF1gAABVYgAAT2QAAEtmCgBJZxIAR2gdAEVoJwBEaTEA Q2k5AEJqQgBAakoAP2pSAD1qWwE8amUBOmpwAjhqfgI2aY0DNGmfAzNpsgMxacsDMWjtAzFn/wMx Zv8DMmX/AzJk/wMyZP8Dt1sAAKlkAACWZAAAhmMAAHhjAABtYwAAZGQAAFllAABQaAAASWsAAENt BABAbg4APm8YAD1vIgA8cCsAOnA0ADlxPQA4cUUAN3FOADZxVwA0cWEBMnFtATFxegEvcYoCLXGc AitxrwIqccgCKnDrAipv/wIqbf8CKmz/Aits/wIrbP8CsWEAAKRpAACQaAAAgGcAAHRnAABpZwAA X2gAAFVrAABLbgAAQ3EAADx0AAA3dgoANHcSADN4HAAyeCUAMXkuADB5NwAveT8ALnlIACx6UgAr elwAKnpoACh6dgAmeocBJXqZASN6rAEiesUBInnpASJ3/wEidv8BInX/AiJ0/wIjdP8CrGgAAJ1u AACKbQAAe2wAAG9sAABlbAAAWm4AAFBxAABFdQAAPXgAADZ8AAAufwIAKYENACeCFAAmgh4AJYIn ACSCLwAjgzgAIoNCACGDSwAghFYAH4RiAB6EcQAchIIAG4SVABqEqQAYhMEAGIPmABiB/QAZgP8B GX//ARl+/wEZfv8BpnAAAJVzAACEcgAAdnEAAGtxAABecwAAVHYAAEl5AAA/fQAAN4EAAC+EAAAn iAAAIIsFABuNDgAajRUAGY0eABiOJwAXjjAAFo45ABWOQwAUj08AE49bABKPagARj3sAEI+PAA+P pAAOj7sADY/gAA6N+gAPi/8AEIr/ABCJ/wAQif8AoXoAAI55AAB+dwAAcncAAGR4AABYewAATX4A AEKCAAA5hgAAL4oAACeOAAAgkQAAGJUAABKYBQAOmg4ADZoUAAyaHQALmiYAC5owAAqaOwAJmkYA CJpTAAabYQAFmnIABJqGAAKamwAAmrEAAZnPAAKZ8AACmP8ABJf/AAWW/wAFlv8AmYEAAId/AAB6 fgAAa34AAF2BAABQhQAARYkAADuNAAAxkgAAKJYAAB+ZAAAYnQAAEaAAAAyjAgAGpQoAAaUQAACl FgAAph8AAKYoAACmMgAApz0AAKdKAACnWAAAp2gAAKd8AACnkQAApqgAAKbDAACl6QAApfwAAKX/ AACk/wAApP8AkYcAAIKGAAByhgAAY4gAAFWMAABJkQAAPZYAADKaAAAongAAH6IAABemAAAQqQAA C6wAAASvAAAAsQYAALEMAACyEQAAshcAALMfAACzKAAAtDIAALU/AAC1TQAAtV0AALVwAAC1hgAA tZ0AALW2AAC13AAAtPcAALT/AAC0/wAAtP8Ai48AAHqOAABqkQAAW5UAAE2aAABAnwAANaQAACqo AAAgrAAAFrAAAA+0AAAJtwAAAbkAAAC9AAAAvgAAAL4GAAC/DAAAwBAAAMEWAADCHQAAwycAAMUy AADGQAAAxlEAAMdjAADHeAAAx5EAAMepAADHxwAAx+wAAMf+AADH/wAAx/8Ag5cAAHGaAABhngAA UqMAAEWpAAA4rgAALLMAACC3AAAWugAADr0AAAbAAAAAwwAAAMcAAADJAAAAygAAAMwAAADNAwAA zgkAANAOAADSEwAA1BsAANglAADbMgAA3UIAAN1UAADeaQAA3oEAAN6cAADftQAA39kAAN/zAADf /wAA3/8Ad58AAGimAABZrQAASrMAADu4AAAtuwAAH78AABTCAAAMxgAAA8kAAADMAAAA0AAAANUA AADZAAAA2gAAANwAAADeAAAA4AAAAOIFAADkCwAA5xAAAOoYAADtJAAA8DIAAPFEAADyWAAA828A APSKAAD0pAAA9L8AAPTfAAD08wAA9PQAaqgAAFuvAABMtwAAPb0AAC3BAAAfxgAAE8oAAAvOAAAA 0gAAANcAAADcAAAA4AAAAOUAAADnAAAA6QAAAOsAAADtAAAA7wAAAPEAAADzAAAA9gcAAPkOAAD8 FgAA/yIAAP8zAAD/RwAA/10AAP92AAD/kQAA/6kAAP++AAD/2AAA/9sA/wAYAP8AFgD/ABUA/wAY AP8AHgD/ACcA/wA2AP8AQwD/AE8A/wBaAP8AZAD/AG0A/wB1AP8AfQD/AIQA/wCKAP8AkAD/AJYA /wCcAP8AowD/AKsA/wC0AP4AvwD9AM8A+wDnAPoA+AD5AP8A+QD/APkA/wD1AP8A7gD/AOkA/wDn AP8A/wAUAP8AEQD/ABEA/wASAP8AFwD/ACMA/wAxAP8APgD/AEoA/wBWAP8AYAD/AGgA/wBwAP8A eAD9AH4A/ACFAPoAiwD5AJEA+ACYAPcAngD1AKYA9ACuAPIAuQDxAMcA7wDgAO4A8gDsAP8A7AD/ AOwA/wDrAP8A5QD/AOAA/wDeAP8A/wMQAP8ADgD/AA0A/wANAP8AEwD/AB4A/wArAP8AOAD/AEUA /gBQAPsAWgD4AGMA9QBrAPMAcgDxAHkA7wB/AO4AhgDsAIwA6gCSAOkAmQDnAKAA5gCpAOQAswDh AMAA4ADTAN4A6wDcAPsA2wD/ANoA/wDaAP8A2QD/ANQA/wDSAP8A/wcNAP8ACQD/AAYA/wAJAP8A DwD/ABgA+wAlAPgAMgD1AD8A8gBKAO0AVADqAF0A5wBlAOQAbADiAHMA4AB6AN4AgADcAIYA2gCN ANcAlADUAJsA0gCkAM8ArQDNALkAywDJAMkA5ADIAPYAxgD/AMUA/wDGAP8AxwD/AMcA/wDHAP8A /woGAP8BAAD/AAAA/wAEAP8ACwD0ABIA7wAfAOoALADlADgA4gBDAN0ATgDZAFcA1ABfANEAZwDO AG0AzAB0AMoAegDIAIAAxgCHAMUAjgDDAJYAwQCeAL8AqAC9ALMAugDCALkA2wC3APAAtQD/ALYA /wC1AP8AtQD/ALUA/wC1AP8A/wwAAP8EAAD/AAAA/gAAAPYAAwDoAA0A4AAXANkAJADRADEAzQA8 AMoARwDGAFEAwwBZAMAAYAC+AGcAvABuALoAdAC5AHsAtwCCALUAiQCzAJEAsgCaALAApACuAK8A rAC9AKoA0ACoAOsApwD7AKYA/wCmAP8ApQD/AKUA/wClAP8A/w0AAP8HAAD0CQAA6gkAAOIEAADa AAcAzwARAMgAHADCACkAvgA1ALsAQAC3AEoAtABTALIAWwCwAGIArgBoAKwAbwCrAHUAqQB9AKgA hACmAI0ApACWAKMAoAChAKsAnwG5AJ0DzACcBOgAmgb5AJkH/wCYCP8Alwj/AJcI/wCXCP8A/xAA APcQAADoFAAA3BUAAM4RAADGDQAAwgQLALwAFAC3ASEAsgMuAK4FOgCrBkQAqAhNAKYIVQCkCVwA ogpjAKAKagCfC3EAnQt4AJwLgACaDIkAmQyTAJcMngCVDaoAlA24AJINzACQDuoAjhD8AIwQ/wCL EP8AixD/AIsQ/wCKEP8A+xMAAO0aAADdIAAAzCEAAL8dAAC3FwAAsxEAALILDQCrDRkApw4mAKMP MwCfED4AnRFHAJoRUACYElcAlhJeAJUTZQCTE2wAkhNzAJAUfACPFIUAjRWPAIsVmgCKFacAiBa1 AIYWyQCEF+cAghj7AIAZ/wB/Gf8Afxn/AH8Y/wB/GP8A9RoAAOQjAADPKQAAwCoAALMmAACqIgAA pRwAAKQVCACgFBMAmxYhAJcYLQCUGTgAkRpCAI8bSwCNHFIAixxZAIkdYACIHWcAhh5vAIUedwCD H4AAgh+LAIAflwB+IKMAfSCyAHsgxQB5IeQAdyL5AHYi/wB1Iv8AdCH/AHQh/wB0If8A7yEAANsr AADHMQAAtjEAAKkuAACgKgAAmyYAAJghAQCVHhAAkCAbAI0hKACJIzMAhyQ9AIUkRgCDJU4AgSZV AH8mXAB+JmMAfCdrAHsncwB5J3wAeCiHAHYokwB0KKABciivAXEpwQFvKeABbSn3AWwp/wFrKf8B ayn/AWso/wFrKP8B6CgAANAyAADAOAAArjcAAKE1AACYMgAAki0AAI4pAACLJwwAhygXAIMqIwCA Ky8Afiw5AHwsQgB6LUoAeC5RAHcuWAB1LmAAcy9nAHIvbwBwL3kBby+DAW0vkAFrL50BaS+sAWgw vgFnMNsBZTD1AWQw/wFjMP8BYy//AWMv/wFjL/8B4i4AAMo4AAC6PQAAqDwAAJo6AACRNwAAijMA AIYwAACDLgkAfy8TAHswHwB4MisAdjM1AHQzPgByNEYAcDROAG81VQBtNVwAbDVkAGo1bAFoNXUB ZzWAAWU1jAFjNZoCYTapAmA2uwJfNtYCXTbzAl02/wJcNv8BXDX/AVw1/wFcNP8B3DMAAMU8AAC0 QQAAokAAAJU+AACLPAAAhDkAAH82AAB7NAQAdzUQAHQ3HABxOCcAbzkyAG05OwBrOkMAajpLAGg7 UgBnO1kAZTthAWM7aQFiO3IBYDt9AV47igJcO5cCWzunAlk7uANYO9IDVzvxAlY7/wJWO/8CVjr/ AVY6/wFWOf8B1DcAAMBBAACvRAAAnUMAAJBCAACFQAAAfj4AAHk7AAB0OgAAcToOAG08GABrPSQA aT4vAGc/OABlP0AAZEBIAGJATwBhQFcAX0BeAV1AZgFcQG8BWkB6AlhAhwJWQJUCVECkA1NAtgNS QM8DUUDvA1BA/wJQP/8CUD//AlE+/wFRPv8BzzsAAL1FAACqRwAAmUYAAItFAACBRAAAeUIAAHQ+ AABvPwAAa0AMAGdBFQBlQiEAY0MrAGFDNQBfRD4AXkRFAF1FTQBbRVQAWUVcAVhFZAFWRW0BVEV4 AlJFhQJRRJMDT0SjA01FtANMRcwDS0XtA0tE/wJLRP8CS0P/AkxC/wJMQv8Cyj8AALlIAACmSgAA lUkAAIdIAAB9RwAAdUUAAG5CAABpQwAAZUQJAGJFEwBfRh4AXUcoAFxIMgBaSDsAWUlDAFdJSgBW SVIAVElZAVNJYQFRSWsBT0l2Ak1JggJLSZEDSkmhA0hJswNHScoDRknsA0ZI/wJGSP8CR0f/AkdG /wJHRv8CxkMAALZMAACiTAAAkUwAAIRLAAB5SgAAcEkAAGlGAABkRwAAX0kGAFxKEABaSxsAWEwl AFZMLwBVTTgAU01AAFJNSABRTk8AT05XAE5OXwFMTmkBSk5zAkhNgAJGTY8DRU2fA0NNsQNCTcgD QU3qA0FM/wJBTP8CQkv/AkJK/wJCSv8CwkcAALNPAACeTwAAjU4AAIBOAAB1TQAAbEwAAGNKAABe TAAAWk0CAFZODgBUTxgAUlAiAFFRLABPUTUATlI9AE1SRQBMUk0ASlJUAElSXQFHUmYBRVJxAUNS fgJBUo0CP1KdAz5SrwM9UsYDPFLpAjxR/gI8UP8CPU//Aj1P/wI9Tv8CvksAAK5TAACaUgAAiVEA AHxRAABxUAAAaFAAAF5OAABYUQAAVFIAAFFTDABOVBQATFUfAEtWKQBJVjIASFY6AEdXQgBGV0oA RFdSAENXWgBBV2QBQFduAT5XewI8V4sCOlebAjhXrQI3V8QCN1fnAjdW/QI3Vf8CN1T/AjdT/wI4 U/8Cuk8AAKlWAACVVQAAhVQAAHhUAABtVAAAZFQAAFhUAABSVgAATlcAAEpZCQBHWhEARlobAERb JQBDWy4AQlw2AEFcPgA/XEYAPl1PAD1dVwA7XWEAOl1sAThdeQE2XYgBNF2ZAjNdqwIxXcICMVzl AjFb/AIxWv8CMVn/AjJZ/wEyWP8BtlQAAKRZAACQWAAAgFgAAHNXAABpVwAAYFgAAFRZAABOWwAA SF0AAENfBABAYA4APmEXAD1hIAA7YikAOmIyADliOgA4Y0IAN2NLADZjVAA0Y10AM2NoADFjdgEv Y4UBLmOWASxjqQErY78BKmPjASpi+wEqYP8BK1//AStf/wErXv8BsVkAAJ5cAACLXAAAe1sAAG9b AABlWwAAXFwAAFFeAABJYAAAQ2IAADxlAAA4ZwoANWgSADRoGwAzaSQAMmktADFpNQAvaj0ALmpG AC1qTwAsalkAK2tlAClrcgAoa4IAJmuTACRrpwAja70AImrgACNp+QEjZ/8BI2b/ASNm/wEkZf8B rGAAAJhgAACFYAAAdl8AAGpfAABhYAAAV2AAAE1jAABEZgAAPWgAADZrAAAwbgQALHAOACpxFQAp cR4AKHEmACdyLwAmcjcAJXJAACRySgAiclQAIXNgACBzbQAec30AHXOQABtzowAac7kAGXPcABpx 9wAacP8AG2//ABtu/wEbbf8BpmYAAJFlAAB/ZAAAcWQAAGZkAABdZAAAUmYAAEhpAAA/bAAAN28A ADBzAAApdgAAInkIAB97EAAeexcAHHsfABt7KAAaezAAGXw5ABh8QwAXfE4AFnxaABV8ZwAUfXgA En2LABF9nwAQfbUAD33VABB79QARef8AEXj/ABJ3/wASd/8AnmsAAIpqAAB6aQAAbWkAAGJpAABX agAATG0AAENwAAA5dAAAMXgAACl7AAAifwAAG4IAABSFCQARhhAAEYYXABCHHwAQhygADocxAA6H OwANh0YADIdTAAuHYQAKh3EACYeEAAeHmAAGhq4ABYbJAAaF7AAHhP8ACIP/AAmC/wAJgv8AlXEA AINvAAB0bgAAaW4AAFxvAABQcgAARnUAADx5AAAyfQAAKoEAACKFAAAbiQAAFIwAAA+PAwAKkgsA BpIRAASSGAACkiAAAZIpAACSMwAAkz4AAJNLAACTWQAAk2kAAJN7AACSkAAAkqYAAJG/AACR5QAA kPoAAI//AACP/wAAj/8AjXcAAH11AABwdAAAYnUAAFV4AABJfAAAP4AAADSEAAAriQAAIo0AABqR AAATlAAADpcAAAmbAAABnQgAAJ0OAACdEwAAnhoAAJ4iAACfKwAAnzUAAKBCAACgUAAAoF8AAKBx AACghwAAn50AAJ+1AACe2gAAnfYAAJ3/AACc/wAAnP8Ahn0AAHh8AABpfAAAW38AAE6DAABBiAAA NowAACyRAAAjlgAAGpoAABKeAAANoQAABqQAAACnAAAAqQMAAKkKAACqDgAAqxMAAKwZAACtIgAA risAAK83AACvRQAAr1QAAK9mAACvewAArpQAAK6rAACuyQAAru8AAK3/AACt/wAArf8AgYQAAHGE AABhhwAAU4sAAEaQAAA5lgAALpsAACOgAAAapAAAEqgAAAysAAAErwAAALIAAAC2AAAAtwAAALcC AAC4CAAAuQ0AALoSAAC7GAAAvSEAAL4rAADAOAAAwEgAAMBaAADBbgAAwYYAAMGgAADBugAAweMA AMD5AADA/wAAwP8AeY0AAGiQAABZlAAAS5oAAD2gAAAxpQAAJasAABqvAAARswAAC7gAAAK7AAAA vgAAAMEAAADEAAAAxQAAAMYAAADHAAAAyAUAAMoLAADMDwAAzhUAANAfAADTKwAA1ToAANVMAADW YAAA2HcAANiSAADYrAAA2ckAANnsAADZ+wAA2P8AcJkAAGCeAABRpAAAQ6oAADWwAAAotgAAHLoA ABG+AAAJwQAAAMUAAADIAAAAywAAAM8AAADSAAAA0wAAANYAAADYAAAA2wAAAN0AAADfBwAA4g0A AOUTAADoHQAA7CoAAO08AADtUQAA7mcAAO+BAADvnAAA8LcAAPDTAADw7AAA8PQAZ6YAAFitAABJ tAAAOroAACq+AAAcwgAAEMYAAAfKAAAAzgAAANIAAADWAAAA3AAAAOAAAADjAAAA5AAAAOYAAADo AAAA6wAAAO0AAADvAAAA8gIAAPUKAAD4EQAA/BwAAP8sAAD/PwAA/1UAAP9uAAD/igAA/6QAAP+6 AAD/0QAA/+EA/wAUAP8AEgD/ABIA/wAUAP8AGQD/ACUA/wAyAP8APwD/AEsA/wBWAP8AYAD/AGgA /wBwAP8AeAD/AH8A/wCFAP8AiwD/AJEA/wCYAP8AngD+AKYA/QCuAPwAuQD6AMgA+QDiAPgA9AD3 AP8A9gD/APYA/wDvAP8A5wD/AOIA/wDeAP8A/wARAP8ADgD/AA4A/wAPAP8AFAD/ACAA/wAtAP8A OgD/AEYA/wBRAP8AWwD/AGMA/gBrAPwAcwD6AHkA+QCAAPcAhgD2AIwA9QCSAPMAmQDyAKAA8ACp AO4AswDtAMEA6wDWAOoA7gDpAP4A5wD/AOcA/wDlAP8A3QD/ANUA/wDRAP8A/wANAP8ACgD/AAgA /wAJAP8AEAD/ABsA/wAoAP8ANQD/AEAA+gBLAPYAVQDzAF4A8QBmAO4AbQDsAHQA6wB6AOkAgADn AIYA5gCNAOQAkwDiAJsA4ACjAN4ArQDcALkA2gDKANcA5gDUAPgA0gD/ANIA/wDSAP8AzgD/AMkA /wDGAP8A/wAIAP8AAwD/AAAA/wADAP8ADQD8ABYA9wAiAPMALgDvADoA7ABFAOgATwDkAFgA4QBg AN4AZwDbAG0A2QB0ANUAegDTAIAA0QCHAM8AjgDNAJUAywCeAMkApwDHALMAxQDCAMMA3ADBAPEA vwD/AL8A/wC+AP8AvgD/AL0A/wC7AP8A/wAAAP8AAAD/AAAA/wAAAPYACADuABEA5wAbAOEAJwDd ADMA2QA+ANMASQDPAFIAywBZAMgAYQDGAGcAxABtAMIAcwDAAHoAvwCAAL0AiAC7AJAAuQCYALgA ogC1AK0AswC7ALEAzgCwAOoArwD8AK0A/wCtAP8ArgD/AK4A/wCuAP8A/wIAAP8AAAD9AAAA8gAA AOgAAADeAAwA0wAVAMwAIQDIACwAxAA4AMEAQgC9AEsAugBTALgAWgC2AGEAtABnALIAbQCwAHQA rwB6AK0AggCsAIoAqgCTAKgAnQCmAKgApAC1AKIAxgChAOMAnwD2AJ4A/wCeAP8AngD/AJ4A/wCe AP8A/wYAAPsAAADuBQAA4gQAANUAAADLAAYAwwAPAL0AGQC4ACUAtAAxALEAOwCuAEUArABNAKkA VQCnAFsApQBiAKQAaACiAG4AoQB1AJ8AfACeAIUAnACOAJoAmACYAKQAlgCwAJUAwQCTANwAkgDy AJEA/wCQAP8AkAD/AI8A/wCPAP8A/QoAAPAOAADhEQAAzhAAAMINAAC7BwAAtwAKALEAEgCsAB4A qAApAKUANACiAD4AnwBHAJ0ATwCbAFYAmQFcAJcBYwCWAmkAlAJwAJMDeACRA4AAkASKAI4ElQCM BaEAigWuAIkGvgCHCNgAhgnwAIQK/wCDC/8Agwv/AIML/wCDC/8A9hAAAOYXAADSHAAAwBoAALMW AACsEgAAqA0AAKYHDQCiBRYAnQciAJkJLgCWCjgAlAtBAJIMSgCQDFEAjg1YAIwNXgCLDWUAiQ1s AIgOdACGDn0AhQ6HAIMOkwCBD58AgBCtAH4QvgB9ENsAehH0AHgS/wB3Ev8AdxL/AHcS/wB3Ev8A 7xcAANshAADGJAAAtCMAAKggAACgHAAAmxcAAJkRBACYDhAAkxAbAI8RJwCMEjIAiRM8AIcTRACF FEwAgxRTAIEVWgCAFWAAfhZoAH0WbwB7FngAeReDAHgXjwB2GJwAdBiqAHMZuwByGdQAbxrxAG4b /wBtG/8AbRr/AG0a/wBtGv8A5yAAANApAAC8KwAAqyoAAJ4oAACWJAAAkCAAAI0cAACMFwwAiBgW AIQaIgCBGy0Afhw3AHwdQAB6HUgAeR5PAHceVQB2H1wAdB9jAHMfawBxIHQAcCB/AG4hiwBsIZgA ayGnAGkiuABoIs8AZiLuAGUj/wBkI/8AZCL/AGQi/wBkIf8A4CYAAMgvAAC0MQAAozAAAJYuAACN KwAAhygAAIQkAACCIAgAfiASAHsiHgB4IykAdSQzAHMlPABxJUMAcCZLAG4mUgBtJ1kAaydgAGon aABpKHEAZyh7AGUoiABkKZUAYimkAGAptQBfKcsAXirsAFwq/wBcKf8AXCn/AFwp/wBcKP8A2CwA AMM1AACtNQAAnTQAAJAzAACGMQAAgC0AAHwrAAB5KAMAdicQAHIpGgBwKiUAbSsvAGssOABqLEAA aC1HAGctTgBlLlUAZC5dAGMuZQBhL24AXy94AF4vhABcL5IAWi+hAVkvsgFYMMgBVjDpAVUw/gFV L/8AVS//AFUu/wBVLv8A0DEAAL06AACoOQAAlzgAAIo3AACANgAAejIAAHUwAAByLgAAbi4NAGsv FgBpMCEAZjErAGQyNABjMj0AYTNEAGAzSwBfNFIAXTRaAFw0YgBaNGsAWTV1AFc1ggBVNZABVDWf AVI1sAFRNcYBUDXnAU81/QFPNf8BTzT/AU80/wFPM/8ByzYAALg9AACjPAAAkjwAAIU7AAB7OgAA dDcAAG81AABsMwAAaDQKAGU1EwBiNh4AYDcoAF43MQBdODoAWzhBAFo5SABZOVAAVzlXAFY6XwBU OmgAUzpzAFE6fwFPOo0BTjqdAUw6rgFLOsMBSjrlAUk6/AFJOf8BSTn/AUk4/wFKOP8BxzoAALNA AACePwAAjj8AAIE+AAB3PQAAcDsAAGo4AABmOAAAYjkHAF86EQBcOxsAWjslAFk8LgBXPTcAVj0+ AFQ+RgBTPk0AUj5VAFE+XQBPP2YATT9wAEw/fQFKP4sBSD+bAUc/rAFFP8EBRD/jAUQ++wFEPv8B RD3/AUQ9/wFFPP8Bwz4AAK9DAACaQgAAikIAAH1BAABzQAAAaz8AAGU8AABgPAAAXD4EAFk+DwBX PxgAVUAiAFNBKwBSQTQAUEI8AE9CQwBOQksATUNSAEtDWgBKQ2QASENuAEdDewFFQ4kBQ0OZAUJD qwFAQ8ABP0PhAT9D+QE/Qv8BP0H/AUBB/wFAQP8Bv0EAAKpFAACWRQAAhkUAAHlEAABvRAAAZ0IA AGA/AABbQQAAV0IAAFRDDQBRRBUAT0UfAE5FKABMRjEAS0Y5AEpHQQBJR0gASEdQAEZHWABFR2EA Q0hsAEJIeAFASIcBPkiXATxIqQE7SL4BOkjfATpH+AE6Rv8BOkX/ATtF/wE7RP8Bu0UAAKZIAACS RwAAgkcAAHZHAABrRwAAY0YAAFtDAABWRQAAUkcAAE5ICgBMSRIASkkcAEhKJQBHSi4ARks2AEVL PgBDS0YAQkxNAEFMVgBATF8APkxqADxMdgA7TIUBOUyVATdMpwE2TLwBNUzdATVL9wE1S/8BNUr/ ATZJ/wE2Sf8BuEkAAKJLAACOSgAAfkoAAHJKAABoSgAAX0kAAFVIAABQSgAATEsAAElMBwBGTRAA RE4ZAEJPIgBBTysAQFAzAD9QOwA+UEMAPFFKADtRUwA6UVwAOFFnADdRcwA1UYIAM1GTATJRpQEw UboBL1HaAS9Q9gEvT/8BME7/ATBO/wEwTf8BtE0AAJ1NAACKTQAAek0AAG5NAABkTQAAW00AAFFN AABLTwAARlAAAEJSAwA/Uw0APVQVADxUHgA6VScAOVUvADhVNwA3Vj8ANlZHADVWUAAzVlkAMldk ADBXcQAvV4AALVeRACtXowAqV7gAKVfWAClW9QApVf8AKlT/ASpT/wEqUv8Br1EAAJhRAACFUQAA dlAAAGpQAABgUAAAWFEAAE5SAABHUwAAQVUAADtYAAA4WQoANVoRADRaGgAzWyIAMlsrADFbMwAv XDsALlxDAC1cTAAsXFYAK11gACldbQAoXXwAJl2OACRdoQAjXbUAIl3SACJc8wAiW/8AI1r/ACNZ /wAkWP8AqFUAAJJUAACAVAAAcVQAAGZUAABcVAAAVFUAAEpWAABDWAAAPFsAADZdAAAwYAUALWEO ACthFQAqYh0AKWIlAChiLgAnYzYAJmM+ACVjRwAjY1EAImRcACFkaQAfZHkAHmSKABxkngAbZLMA GWTOABpj8QAbYf8AG2D/ABxg/wAcX/8AoVkAAIxYAAB7WAAAbVgAAGJYAABZWAAAUFkAAEdbAAA+ XgAAN2AAADFjAAAqZgAAJGkJACFqEAAgahcAH2ogAB5rKAAdazAAHGs5ABtrQgAabEwAGWxYABds ZQAWbHQAFGyGABNsmgASbK8AEWzKABFr7wASaf8AE2j/ABNo/wATZ/8AmV0AAIVdAAB1XAAAaFwA AF5cAABVXAAAS14AAEJhAAA5ZAAAMmcAACtqAAAkbQAAHnABABdzCwAVdBEAFHQYABN0IQASdSkA EXUyABF1OwAQdUYAD3VSAA51XwANdW4ADHWBAAt1lQAKdaoACHTDAAl05wAKc/0AC3H/AAxx/wAM cP8AkWIAAH9hAABwYQAAZGEAAFphAABPYgAARWUAADxoAAAzbAAAK28AACRyAAAddgAAF3kAABF8 BAANfwwAC38SAAp/GQAJfyIACH8qAAZ/NAAFfz8ABH9LAAJ/WAABf2cAAH95AAB/jgAAf6MAAH67 AAB94AAAffcAAHz/AAB7/wAAe/8AiWcAAHhnAABrZgAAYWYAAFRnAABJaQAAP20AADVxAAAsdQAA JHkAAB18AAAWgAAAEIMAAAyGAgAGiQoAAYkPAACJFAAAihsAAIojAACLLAAAizcAAItDAACLUAAA i18AAItxAACLhgAAi5wAAIqzAACJ0wAAiPMAAIj/AACH/wAAh/8Agm0AAHNsAABobAAAWm0AAE5v AABCcwAAOHcAAC57AAAlgAAAHYQAABWIAAAQjAAAC48AAASSAAAAlAYAAJUMAACVEAAAlhUAAJcc AACYJAAAmC4AAJk5AACZRwAAmVYAAJloAACZfQAAmZQAAJirAACXyAAAlu4AAJb/AACV/wAAlf8A e3QAAG9zAABhcwAAU3YAAEZ6AAA7fwAAMIQAACaIAAAdjQAAFJIAAA6WAAAJmQAAAZwAAACgAAAA oQAAAKIGAACiDAAApBAAAKUUAAClHAAApyQAAKgvAACoPQAAqUwAAKleAACpcgAAqIkAAKiiAACo vAAAp+UAAKb7AACm/wAApf8Ad3sAAGh7AABZfgAAS4IAAD6HAAAyjQAAJ5IAAB2XAAAUnAAADqAA AAekAAAAqAAAAKsAAACuAAAArwAAALAAAACxBAAAswoAALQOAAC1EwAAthsAALgkAAC6MQAAukAA ALpSAAC7ZQAAu30AALqXAAC6sQAAutIAALrzAAC5/wAAuf8Ab4MAAF+GAABRiwAAQ5AAADaXAAAq nQAAH6IAABWnAAANrAAABbAAAAC0AAAAtwAAALsAAAC+AAAAvwAAAMAAAADBAAAAwwEAAMQHAADF DQAAxxEAAMoZAADNJAAAzjMAAM9EAADQWAAA0G4AANGIAADQpAAA0MEAANHmAADR+AAA0f8AZ48A AFeUAABJmgAAO6EAAC6nAAAhrQAAFrMAAA64AAAGvAAAAMAAAADDAAAAxgAAAMsAAADNAAAAzgAA ANAAAADRAAAA1AAAANYAAADaAgAA3AkAAN8PAADjFwAA5iQAAOc2AADoSQAA6V8AAOp4AADrlAAA 668AAOvMAADs6AAA7PYAX54AAFCkAABCqwAANLIAACa5AAAZvgAADsIAAATFAAAAygAAAM0AAADR AAAA2AAAANsAAADfAAAA4AAAAOIAAADkAAAA5gAAAOkAAADrAAAA7gAAAPEFAAD1DQAA+RYAAPwl AAD9OQAA/k8AAP9nAAD/ggAA/50AAP+1AAD/ywAA/+QA/wARAP8ADwD/AA8A/wARAP8AFgD/ACIA /wAvAP8AOwD/AEcA/wBSAP8AWwD/AGQA/wBsAP8AcwD/AHoA/wCAAP8AhgD/AIwA/gCTAP0AmQD7 AKEA+gCpAPgAtAD3AMIA9gDaAPUA8QD0AP8A8wD/APMA/wDpAP8A4AD/ANgA/wDTAP8A/wAOAP8A CwD/AAoA/wALAP8AEQD/AB0A/wAqAP8ANgD/AEEA/wBMAP8AVgD+AF8A+wBmAPkAbQD3AHQA9QB6 APQAgADyAIYA8ACNAO8AlADtAJsA7ACkAOoArgDpALoA5wDNAOUA6QDkAPsA4wD/AOIA/wDeAP8A 0QD/AMwA/wDIAP8A/wAJAP8ABAD/AAEA/wAEAP8ADgD/ABgA/wAkAP0AMAD7ADsA9wBGAPMAUADv AFkA7ABgAOoAZwDnAG4A5gB0AOQAegDiAIAA4ACHAN4AjgDcAJUA2gCeANYAqADUALMA0QDDAM8A 3wDOAPQAzAD/AMsA/wDLAP8AxQD/AL8A/wC8AP8A/wACAP8AAAD/AAAA/wAAAP0ACwD3ABMA8QAe AO0AKgDqADUA5wBAAOIASgDdAFIA2QBaANUAYQDSAGcA0ABtAM4AcwDMAHoAygCAAMgAhwDGAI8A xACYAMIAoQDAAK0AvgC7ALwA0AC6AO0AuQD+ALgA/wC4AP8AtwD/ALMA/wCwAP8A/wAAAP8AAAD/ AAAA+QAAAO4ABQDlAA4A3gAYANgAIwDSAC4AzwA5AMsAQwDHAEwAxABUAMEAWwC/AGEAvABnALsA bQC5AHMAtwB6ALUAgQC0AIkAsgCSALAAmwCvAKcArAC0AKsAxgCpAOQApwD4AKYA/wCmAP8ApQD/ AKUA/wCkAP8A/wAAAP8AAAD1AAAA6gAAAN4AAADQAAoAyAASAMIAHQC+ACgAuwAzALkAPQC1AEYA sgBNALAAVQCtAFsArABhAKoAZwCoAG0ApwBzAKUAegCkAIIAogCMAKAAlgCfAKEAnQCuAJsAvgCZ ANgAlwDxAJYA/wCWAP8AlwD/AJcA/wCXAP8A/wAAAPUAAADnAQAA1AAAAMkAAADAAAQAuAAOALMA FgCvACEAqwAsAKgANgCmAD8AowBHAKEATwCfAFUAnQBbAJsAYQCaAGcAmABuAJcAdQCVAH0AlACG AJIAkQCQAJwAjgCpAIwAuACLAM0AiQDrAIgA/QCIAP8AiAD/AIgA/wCIAP8A+QYAAOkMAADUDgAA wwwAALcJAACwAgAAqwAJAKYAEACiABoAngAlAJsAMACYADkAlgBBAJQASQCSAFAAkABWAI4AXACN AGIAiwBpAIoAcACIAHgAhwCBAIUAjACEAJgAggClAIAAtAB+AMgAfQHnAHwC+QB7A/8AewT/AHsE /wB7BP8A8Q4AAN4VAADFFQAAtBQAAKkRAAChDgAAngoAAJsDDACXABMAkwAeAJABKQCNAjMAigM8 AIgEQwCGBUsAhQZRAIMGVwCCB14AgAdkAH8IbAB9CHQAfAh+AHoJiQB4CZYAdwqjAHUKswBzC8cA cgzmAHAN+wBwDf8Abw3/AG8N/wBvDf8A6BYAANAeAAC5HQAAqRwAAJ0aAACVFgAAkBMAAI8OAwCO Cg4AiQsXAIYMIwCDDS0AgA02AH4OPgB8DkYAew5NAHkPUwB4EFoAdhBhAHUQaABzEHEAcRF7AHAR hwBuEZQAbBGiAGsSsgBpEscAaBPnAGYT/QBlFP8AZRT/AGUT/wBlE/8A3x4AAMYkAACwJAAAoCMA AJQhAACLHwAAhhsAAIMXAACCEggAfxESAHwSHQB5FCgAdhQxAHQVOgByFkEAcRZIAG8XTwBuF1YA bBddAGsYZABpGG0AaBl3AGYZgwBkGZAAYxqfAGEarwBgGsQAXhvkAF0c+wBcHP8AXBv/AFwb/wBc G/8A1SUAAL0qAACoKQAAmCkAAIwoAACDJQAAfSIAAHkfAAB4GwMAdhkPAHIaGABvHCMAbR0tAGsd NQBpHj0AaB5EAGYfSwBlH1IAYyBZAGIgYQBhIGkAXyFzAF0hfwBcIY0AWiKcAFkirABXIsAAViPh AFUj+QBUI/8AVCL/AFQi/wBUIv8AzSsAALYuAACiLgAAki4AAIUtAAB8KwAAdigAAHImAABvIwAA bSEMAGoiFQBnIx8AZSQpAGMkMQBiJTkAYCZBAF8mSABdJk8AXCdWAFsnXQBZJ2YAWChwAFYofABU KIoAUymZAFEpqgBQKb4ATyneAE4p9wBNKf8ATSn/AE0o/wBOKP8AyDAAALAyAACcMgAAjDIAAIAx AAB2MAAAcC0AAGsrAABoKQAAZigJAGMoEQBgKRwAXiolAFwrLgBbKzYAWSw9AFgsRABXLUwAVS1T AFQtWwBTLWMAUS5uAFAuegBOLogATC+XAEsvqABJL7sASC/bAEgv9gBHL/8ARy7/AEct/wBILf8A xDQAAKs1AACXNQAAhzUAAHs1AAByNAAAazIAAGYvAABiLgAAXy0FAFwuEABaLxgAWDAiAFYwKwBV MTMAUzE6AFIyQgBRMkkAUDJQAE4zWABNM2EASzNrAEozdwBINIUARzSVAEU0pgBDNLkAQjTWAEI0 9ABCNP8AQjP/AEIy/wBCMv8AwDgAAKc4AACTOAAAgzgAAHc4AABtNwAAZjYAAGEzAABdMgAAWTIC AFczDQBUNBUAUjUfAFE1KABPNjAATjY4AEw3PwBLN0YASjdOAEk4VgBHOF8ARjhpAEQ4dQBDOIMA QTmTAEA5pAA+ObgAPTnTADw58wA8OP8APTf/AD03/wA9Nv8AuzsAAKI7AACPOwAAfzsAAHM7AABq OgAAYjkAAF03AABYNgAAVDcAAFE4CwBPORMATTkcAEs6JQBKOi0ASDs1AEc7PABGPEQARTxLAEQ8 UwBCPFwAQT1nAD89cwA+PYEAPD2RADo9owA5PbYAOD3RADc98gA3PP8AODv/ADg7/wA4Ov8Atj0A AJ4+AACLPgAAfD4AAG8+AABmPQAAXj0AAFg7AABTOgAATzsAAEw8CABJPREARz4ZAEY/IgBEPyoA Qz8yAEJAOgBBQEEAQEBJAD5BUQA9QVoAPEFkADpBcAA4QX8AN0GPADVCoQA0QrQAMkLOADJB8AAy QP8AM0D/ADM//wA0Pv8AsUAAAJpAAACHQAAAeEEAAGxBAABiQAAAW0AAAFQ/AABOPwAASkAAAEZB BQBEQg4AQkMWAEBDHwA/RCcAPkQvADxENwA7RT4AOkVGADlFTgA4RlgANkZiADVGbgAzRnwAMUaN ADBGnwAuRrMALUbMAC1G7wAtRf8ALkT/AC5D/wAuQ/8ArEMAAJZDAACDQwAAdEMAAGhDAABfQwAA V0MAAFBDAABIQwAAREUAAEFGAQA+RwwAPEgTADpIHAA5SSQAOEksADZJNAA1SjsANEpDADNKTAAy SlUAMEtfAC9LawAtS3oALEuLACpLnQAoS7EAJ0vKACdL7QAnSv8AKEn/AChI/wApR/8Ap0YAAJFG AAB/RgAAcEYAAGVGAABbRgAAVEYAAExHAABESAAAP0oAADtLAAA3TAkANU0QADNOGAAyTiAAMU8o ADBPMAAvTzgALk9AACxQSAArUFIAKlBcAChQaAAnUHcAJVCIACRQmwAiUK8AIVDIACBQ6wAhT/8A Ik7/ACJN/wAjTf8AoUkAAIxJAAB6SQAAbEoAAGFKAABYSgAAUEoAAElLAABATAAAO04AADVQAAAx UgQALVMNACxUFAAqVBwAKVUkAChVLAAnVTMAJlU8ACVWRQAkVk4AIlZZACFWZQAfVnQAHlaFABxW mAAbVqwAGVbFABlW6QAaVf8AG1T/ABtT/wAcUv8Am00AAIZNAAB1TQAAaE0AAF1NAABUTQAATU4A AEVPAAA8UQAANlMAADFVAAArWAAAJloJACNbEAAiWxcAIVwfACBcJwAfXC4AHVw3ABxdQAAbXUoA Gl1VABhdYQAXXXAAFV2BABRdlQATXaoAEV3CABFd5wASW/4AE1r/ABNa/wAUWf8AlFEAAIBRAABw UQAAZFEAAFlRAABRUQAASVIAAEFTAAA4VgAAMlkAACtbAAAlXgAAH2EDABpjDAAYZBEAF2QZABZk IQAVZCkAFGUxABNlOgASZUQAEWVQABBlXQAPZWsADmV9AA1lkQAMZaUACmS8AApk4AALY/kADGL/ AA1h/wANYf8AjVUAAHpVAABrVQAAX1UAAFZVAABOVQAARFcAADxZAAA0XAAALF8AACZiAAAfZQAA GWgAABNrBQAQbQ0ADm4SAA1uGgAMbiIADG4rAAtuNAAKbj4ACG5KAAduVwAGbmUABG52AAJuigAA bZ8AAG22AABs1gAAbPMAAWv/AAJq/wADav8AhVoAAHRaAABmWgAAXFkAAFNZAABIWgAAP10AADZg AAAuYwAAJmcAAB9qAAAZbQAAE3EAAA50AwAKdwoABXcQAAF3FQAAdxwAAHckAAB4LQAAeDcAAHhD AAB4UAAAeF4AAHhvAAB4hAAAeJkAAHewAAB2zQAAdfAAAHX/AAB0/wAAdP8Afl8AAG5fAABiXgAA WV4AAE1fAABCYgAAOWUAADBoAAAnbAAAH3AAABh0AAASdwAADXsAAAh+AAACgAgAAIENAACBEQAA ghcAAIMeAACDJgAAhDAAAIQ7AACESAAAhFcAAIRoAACEfAAAhJMAAIOqAACCxQAAgesAAIH+AACA /wAAgP8Ad2UAAGlkAABfYwAAUmQAAEdnAAA8awAAMW8AAChzAAAgdwAAGHwAABF/AAAMgwAABocA AACKAAAAjAMAAIwJAACNDgAAjhEAAI8XAACQHgAAkScAAJIyAACSPwAAkk4AAJJfAACScwAAkosA AJGiAACRvAAAkOUAAI/8AACO/wAAjv8AcWsAAGZqAABYawAAS20AAD9xAAA0dgAAKnsAACCAAAAX hQAAEIkAAAuNAAAEkQAAAJUAAACYAAAAmQAAAJoDAACbCAAAnA0AAJ4RAACfFgAAoB4AAKIoAACi NQAAo0QAAKNVAACjaQAAooAAAKKaAAChswAAoNgAAKD2AACf/wAAn/8AbnEAAF9yAABRdQAARHkA ADd+AAAshAAAIYoAABePAAAQlAAACpkAAAGdAAAAoAAAAKQAAACnAAAAqAAAAKkAAACqAAAArAYA AK0LAACvEAAAsBUAALIeAAC0KQAAtDkAALRKAAC1XQAAtXMAALWOAAC1qAAAtMYAALPtAACy/wAA sv8AZnoAAFd9AABJggAAPIcAAC+OAAAjlAAAGJoAABCfAAAJpAAAAKkAAACtAAAAsAAAALQAAAC3 AAAAuAAAALkAAAC7AAAAvAAAAL4CAADACAAAwg4AAMQUAADHHgAAyCwAAMk9AADKUAAAymYAAMp/ AADKmwAAyrgAAMrdAADK9QAAyv8AXoYAAE+LAABBkQAAM5gAACefAAAbpQAAEasAAAmwAAAAtQAA ALkAAAC9AAAAwQAAAMYAAADIAAAAyQAAAMsAAADMAAAAzgAAANAAAADSAAAA1AUAANkMAADdEgAA 4R4AAOIuAADjQgAA5FcAAOVvAADmjAAA5qgAAOXFAADl5wAA5vYAVpQAAEibAAA6ogAALKkAAB+w AAATtgAAC7wAAADBAAAAxQAAAMkAAADNAAAA0gAAANYAAADaAAAA2wAAAN4AAADgAAAA4gAAAOQA AADnAAAA6QAAAO0AAADwCgAA9BEAAPgfAAD5MgAA+kgAAPtfAAD8egAA/ZcAAP2vAAD9xwAA/eQA /wAOAP8ADQD/AAwA/wAOAP8AEwD/AB4A/wAqAP8ANgD/AEIA/wBNAP8AVwD/AF8A/wBnAP8AbgD/ AHQA/wB6AP8AgQD9AIcA/ACNAPoAlAD5AJwA9wClAPUArwD0ALwA8wDPAPEA7ADwAP4A7wD/AO8A /wDjAP8A1wD/AM4A/wDKAP8A/wAKAP8ABgD/AAQA/wAIAP8AEAD/ABkA/wAlAP8AMQD/AD0A/wBH AP4AUQD7AFkA+QBhAPYAaAD0AG4A8wB0APEAegDvAIEA7gCHAOwAjgDqAJYA6ACfAOYAqQDjALUA 4gDGAOAA4wDfAPgA3QD/AN0A/wDUAP8AyQD/AMIA/wC+AP8A/wADAP8AAAD/AAAA/wABAP8ADQD/ ABQA/QAgAPoAKwD3ADYA8wBBAO8ASwDsAFQA6ABbAOYAYgDjAGgA4QBuAN8AdADcAHoA2gCBANgA iADUAJAA0gCYAM8AogDNAK4AywC8AMkA0wDHAPAAxgD/AMQA/wDEAP8AuwD/ALYA/wCzAP8A/wAA AP8AAAD/AAAA/wAAAPcACADwABAA6wAaAOcAJQDkADAA4QA7ANwARQDVAE0A0QBVAM4AWwDLAGIA yQBnAMcAbQDFAHMAwwB6AMEAgQC/AIkAvQCSALsAnAC5AKcAtwC1ALUAyACzAOYAsgD7ALEA/wCw AP8ArgD/AKoA/wCnAP8A/wAAAP8AAAD+AAAA8QAAAOUAAgDcAA0A0wAUAM0AHwDKACoAxwA0AMQA PgDAAEcAvABOALoAVQC3AFsAtQBhALMAZwCyAG0AsABzAK4AegCsAIIAqgCLAKgAlQCnAKAApQCt AKMAvgChANsAoAD0AJ8A/wCeAP8AnwD/AJ0A/wCbAP8A/wAAAPwAAADuAAAA4AAAANAAAADFAAgA vgAQALkAGQC1ACMAswAuALAANwCtAEAAqgBIAKgATwClAFUAowBbAKIAYACgAGYAnwBsAJ0AcwCb AHsAmgCEAJgAjgCWAJoAlQCnAJMAtwCRAMwAkADsAI8A/wCOAP8AjgD/AI4A/wCPAP8A/AAAAO8A AADbAAAAyQAAAL0AAAC1AAIArgAMAKkAEwClAB0AogAnAKAAMQCdADoAmgBCAJgASQCWAE8AlABV AJMAWwCRAGAAkABnAI4AbQCNAHUAiwB+AIkAiQCIAJUAhgCiAIUAsQCDAMQAgQDkAIAA+QB/AP8A gAD/AIAA/wCAAP8A9AIAAOAJAADHCAAAtwcAAKwDAACmAAAAoAAHAJsADwCYABcAlQAhAJIAKgCP ADMAjQA8AIsAQwCJAEkAhwBQAIYAVQCEAFsAgwBhAIEAaACAAHAAfgB5AHwAhAB7AJAAeQCdAHgA rAB2AL4AdQDdAHMA9ABzAP8AcwD/AHMA/wBzAP8A6Q0AAM8QAAC5EAAAqRAAAJ4OAACXCwAAkwYA AJAACwCMABEAiQAaAIYAJACDAC4AgQA2AH8APgB9AEQAfABLAHoAUQB5AFcAdwBdAHYAZAB0AGwA cwF1AHEBgABvAo0AbgKaAGwDqgBrA7sAaQTWAGgG8QBoB/8AZwf/AGcH/wBnB/8A3xQAAMMXAACu FwAAnhYAAJMVAACLEgAAhhAAAIQMAgCDBg0AgAMUAHwFHgB5BygAdwgwAHUIOABzCUAAcglGAHAK TABvClMAbQtZAGwLYQBqC2kAaQxyAGcMfgBmDIsAZA2ZAGINqQBhDbsAYA3YAF4O8wBdDv8AXQ7/ AF0O/wBdDv8A1BwAALkdAACkHgAAlR0AAIkcAACBGgAAexcAAHgTAAB4EAYAdw0PAHMOGABwDiIA bg8rAGwQMwBqEDsAaRBCAGcRSQBmEU8AZBFWAGMSXQBhEmYAYBJvAF4SewBcE4gAWxOXAFkTpwBX FLoAVhTVAFUV8wBUFf8AVBX/AFQV/wBUFP8AyiIAALAiAACdIwAAjSMAAIEiAAB5IQAAcx4AAG8b AABuFwAAbRMMAGoUFABnFR4AZRYnAGMWLwBhFzcAYBc+AF4YRQBdGEsAXBlSAFoZWgBZGWIAVxps AFYadwBUGoUAUhuUAFEbpABPG7cAThvQAE0c8QBMHP8ATBz/AE0c/wBNG/8AwyYAAKonAACWJwAA hygAAHsnAAByJgAAbCQAAGghAABmHgAAZBsIAGIbEQBfHBoAXR0jAFseKwBaHjMAWB86AFcfQQBW IEgAVCBPAFMgVwBRIV8AUCFpAE4hdABNIYIASyKRAEkiogBIIrQARyLNAEYj7wBFI/8ARSL/AEYi /wBGIf8AvCoAAKQrAACRKwAAgiwAAHYrAABtKgAAZikAAGImAABfJAAAXSIEAFshDgBYIhYAViMf AFQkKABTJDAAUiU3AFAlPgBPJkUATiZMAEwmVABLJ1wASSdmAEgncQBGJ38ARSiPAEMooABBKLIA QCjLAD8o7QA/KP8APyj/AEAn/wBAJ/8Aty0AAJ8uAACMLwAAfS8AAHEvAABoLgAAYS0AAF0rAABa KAAAVycAAFQnDABSKBMAUCkcAE4pJQBNKiwASyo0AEorOwBJK0IASCxJAEYsUQBFLFoARCxkAEIt bwBALX0APy2NAD0tngA8LbAAOi3IADot6wA6Lf8AOi3/ADos/wA6LP8AsjAAAJsxAACIMgAAeTIA AG0yAABkMgAAXTEAAFgvAABVLAAAUSwAAE8tCQBMLREASi4ZAEkvIgBHLyoARjAxAEUwOABDMD8A QjFHAEExTwBAMVcAPjFhAD0ybQA7MnsAOTKLADgynAA2Mq8ANTLHADQy6QA0Mv8ANTH/ADUx/wA1 MP8ArTMAAJY0AACENQAAdTUAAGk1AABgNQAAWTQAAFQzAABQMAAATDEAAEkxBgBHMg8ARTMWAEMz HwBCNCcAQDQuAD81NgA+NT0APTVEADw2TAA6NlUAOTZfADc2awA2NngANDeJADI3mgAxN60ALzfF AC836AAvNv4AMDX/ADA1/wAwNP8AqTYAAJI2AACANwAAcjgAAGY4AABdNwAAVjcAAFA2AABLNAAA RzUAAEQ2AwBBNw0APzgUAD44HAA8OSQAOzksADo5MwA5OjoAODpCADY6SgA1OlMANDtdADI7aAAw O3YALzuHAC07mQAsO6wAKjvDACk75gAqOv0AKjr/ACs5/wAsOP8ApDgAAI45AAB8OgAAbjoAAGM6 AABaOgAAUzoAAE06AABGOAAAQjoAAD87AAA8PAsAOjwRADg9GQA3PSEANj4pADQ+MAAzPjcAMj8/ ADE/RwAwP1AALj9aAC1AZgArQHQAKUCEAChAlwAmQKoAJUDBACRA5QAkP/wAJT7/ACY9/wAmPf8A nzsAAIo8AAB4PQAAaj0AAF89AABWPQAATz0AAEk9AABCPQAAPD4AADk/AAA2QQgANEEPADJCFgAx Qh4AL0MlAC5DLQAtQzQALEQ8ACtERAAqRE0AKERYACdFYwAlRXEAI0WCACJFlQAgRagAH0W/AB5E 4wAfRPsAH0P/ACBC/wAhQf8Amj4AAIU/AAB0QAAAZ0AAAFxAAABTQAAATEAAAEZAAAA+QQAAOEMA ADRFAAAwRgMALUcNACtIEgAqSBoAKUgiAChJKQAnSTEAJUk5ACRJQQAjSkoAIkpVACBKYQAfSm8A HUp/ABtKkgAaSqYAGEq9ABdK4AAYSfoAGUj/ABpH/wAaR/8AlUIAAIBCAABwQwAAY0MAAFhDAABQ QwAASUMAAEJEAAA7RQAANUcAADBJAAArSwAAJk0JACROEAAiThYAIU8dACBPJQAfTywAHk81AB1P PQAcUEcAGlBRABlQXQAXUGsAFlB8ABRQjwATUKQAEVC6ABFQ3gART/gAEk7/ABNN/wAUTf8Aj0UA AHtGAABrRgAAX0cAAFVHAABNRwAARkcAAD9HAAA3SgAAMUwAACtOAAAmUAAAIFMDABxVDAAaVhEA GVYYABdWIAAWVicAFVYwABRWOQATV0IAEldNABFXWQAQV2gAD1d5AA5XjAANV6AAC1e2AAtW1AAL VvQADFX/AA1U/wAOU/8AiEkAAHZKAABnSgAAW0oAAFFKAABKSgAAQ0oAADtMAAAzTgAALFEAACZU AAAhVgAAG1kAABVcBwARXg0AEF4TABBeGgAOXiIADl4qAA1eMwAMXj0AC15IAApeVAAIXmIAB15z AAVehgADXpsAAl6xAAJdzAACXe4AA1z/AARb/wAFW/8AgU4AAHBOAABiTgAAV04AAE5OAABHTgAA Pk8AADZRAAAuVAAAJ1cAACFaAAAbXQAAFWAAABBjAwAMZgsACGcQAAZnFQAFZxwABGckAAJnLQAB ZzcAAGdCAABnTgAAZ1wAAGdtAABngAAAZpUAAGasAABlxwAAZesAAGT8AABk/wAAY/8AelIAAGpT AABdUgAAVFIAAEtSAABCUwAAOVUAADBYAAAoWwAAIV8AABpiAAAUZQAAEGgAAAxrAQAGbgkAAG8O AABvEgAAbxgAAHAfAABwJwAAcTAAAHE7AABxSAAAcVYAAHFmAABxeQAAcY8AAHCnAABvwQAAb+cA AG78AABt/wAAbf8Ac1gAAGVXAABaVwAAUVYAAEZXAAA8WgAAMl0AACphAAAiZAAAGmgAABRsAAAO bwAACnIAAAR2AAAAeAUAAHgLAAB5DgAAehMAAHsZAAB8IAAAfSkAAH0zAAB9QAAAfU4AAH1eAAB9 cgAAfYgAAHyhAAB8ugAAe+IAAHr6AAB5/wAAeP8AbV0AAGBcAABXXAAAS10AAEBfAAA1YwAAK2cA ACNrAAAabwAAE3MAAA53AAAIewAAAn4AAACCAAAAgwEAAIQGAACFCwAAhg8AAIgTAACJGQAAiiEA AIsrAACLNwAAjEYAAItWAACLaQAAi4AAAIuZAACKswAAidgAAIj3AACI/wAAh/8AaGMAAF5iAABR YgAARGUAADhpAAAubgAAJHMAABp4AAATfQAADYEAAAaFAAAAiQAAAI0AAACQAAAAkgAAAJIAAACU BQAAlQoAAJcOAACYEgAAmhgAAJshAACcLQAAnTwAAJ1MAACcXwAAnHYAAJuRAACbqwAAmskAAJrw AACZ/wAAmP8AZWkAAFdpAABJbAAAPXEAADB2AAAlfAAAG4EAABKHAAAMjAAABJEAAACVAAAAmQAA AJ0AAACgAAAAoQAAAKIAAACkAAAApQEAAKcHAACpDAAAqhEAAK0YAACvIgAArzAAAK9BAACvVAAA r2sAAK6FAACuoQAArr4AAK3mAACs/AAArP8AXnEAAE90AABCeQAANX8AACiFAAAdjAAAE5IAAAyY AAADnQAAAKIAAACmAAAAqgAAAK4AAACwAAAAsQAAALMAAAC0AAAAtgAAALgAAAC6BAAAvAoAAL4Q AADBFwAAwyQAAMM1AADESQAAxF4AAMV3AADFkwAAxa8AAMXRAADD8gAAw/8AVnwAAEeCAAA6iAAA LI8AACCWAAAUnQAADaMAAAOpAAAArgAAALIAAAC3AAAAuwAAAL8AAADCAAAAwgAAAMUAAADGAAAA yAAAAMoAAADNAAAAzwAAANIIAADVDgAA2xgAAN0nAADeOgAA31AAAOBoAADghAAA4aEAAOG9AADh 4gAA4PQATosAAECSAAAymQAAJaEAABioAAAOrwAABbUAAAC6AAAAvwAAAMQAAADIAAAAzgAAANEA AADUAAAA1QAAANgAAADaAAAA3QAAAN8AAADiAAAA5AAAAOcAAADrBQAA7w4AAPQZAAD1KwAA9kEA APdYAAD4cgAA+ZAAAPmrAAD4xAAA+OEA/wALAP8ACAD/AAkA/wAMAP8AEgD/ABoA/wAmAP8AMgD/ AD4A/wBIAP8AUgD/AFoA/wBiAP8AaQD/AG8A/wB1AP4AewD8AIEA+wCIAPkAjwD3AJcA9QCgAPMA qgDyALcA7wDJAO0A5gDsAPsA6wD/AOsA/wDdAP8AzgD/AMYA/wDCAP8A/wAEAP8AAAD/AAAA/wAF AP8ADQD/ABUA/wAhAP8ALAD/ADgA/wBDAP0ATAD5AFQA9wBcAPQAYwDyAGkA8ABvAO4AdQDsAHsA 6gCCAOgAiQDnAJEA5ACaAOIApADgALAA3QDAANoA3ADYAPQA1QD/ANMA/wDLAP8AwQD/ALsA/wC3 AP8A/wAAAP8AAAD/AAAA/wAAAP8ACgD9ABEA+QAbAPYAJwD0ADIA8AA8AOwARgDoAE4A5ABWAOEA XADeAGMA3ABoANkAbgDVAHQA0gB7ANAAggDNAIoAywCTAMgAnQDGAKgAxAC3AMEAzADAAOsAvgD/ AL0A/wC9AP8AtAD/AK4A/wCrAP8A/wAAAP8AAAD/AAAA+gAAAPIABQDqAA4A5QAWAOAAIQDdACsA 2wA2ANMAPwDOAEgAygBPAMcAVgDEAFwAwgBhAMAAZwC+AG0AvABzALoAegC4AIIAtgCLALQAlgCy AKEAsACvAK4AwQCtAOAAqwD3AKoA/wCpAP8ApgD/AKEA/wCfAP8A/wAAAP8AAAD3AAAA6AAAANwA AADQAAoAygARAMUAGwDCACUAvwAvALwAOAC4AEEAtQBIALIATwCwAFUArgBbAKwAYQCqAGYAqABs AKcAcwClAHsAowCEAKEAjgCfAJoAnQCnAJsAuACaANAAmQDvAJgA/wCXAP8AlgD/AJQA/wCSAP8A /wAAAPYAAADkAAAA0gAAAMUAAAC7AAUAtQAOALAAFQCsAB8AqgApAKgAMgClADoAogBCAKAASQCe AE8AnABVAJoAWgCYAGAAlgBmAJUAbACTAHQAkgB9AJAAhwCOAJMAjAChAIsAsACKAMUAiADmAIcA +wCGAP8AhwD/AIcA/wCGAP8A+AAAAOUAAADNAAAAvQAAALMAAACqAAAAowAKAJ8AEQCbABkAmQAj AJcALACVADQAkgA8AJAAQwCOAEkAjABPAIoAVACJAFoAhwBgAIYAZgCEAG4AgwB3AIEAgQB/AI0A fgCbAHwAqgB7ALwAegDbAHgA9QB4AP8AeAD/AHgA/wB4AP8A7QAAANECAAC7AgAArAEAAKIAAACb AAAAlgAFAJEADQCNABQAiwAdAIgAJgCGAC4AhAA2AIIAPQCAAEMAfgBJAH0ATwB8AFUAegBbAHkA YQB3AGkAdQBxAHQAfAByAIgAcQCWAG8ApQBuALYAbQDOAGwA7gBrAP8AawD/AGsA/wBrAP8A3wsA AMIMAACuDAAAngwAAJMLAACMBwAAiAIAAIUACQCBABAAfwAXAHwAIAB6ACgAeAAwAHYAOAB0AD4A cwBEAHEASgBwAFAAbgBWAG0AXQBsAGQAagBtAGgAdwBnAIQAZQCSAGQAoQBjALIAYQDJAGAA6QBg APwAYAD/AGAA/wBgAP8A0BAAALYRAACiEgAAkxIAAIgRAACADwAAfA0AAHkJAQB4AwsAdQARAHMA GgBwACMAbgErAGwBMwBqAjkAaQNAAGcDRgBmBEwAZQRSAGMFWQBiBWEAYAVqAF8GdABdBoEAXAeP AFoHnwBZB7AAVwfGAFYJ5wBWCvsAVQr/AFUK/wBWCv8AxhUAAK0XAACZGAAAihgAAH8XAAB2FgAA cRMAAG4QAABtDQUAbQkNAGoJFABnCh0AZQomAGMLLgBiDDUAYAw8AF8MQgBeDUgAXA1PAFsNVgBZ DV4AWA5oAFYOcwBVDoAAUw6PAFEOnwBQDrEATg7IAE0Q6gBNEP0ATRD/AE0Q/wBNEP8AvBsAAKUc AACSHQAAgx4AAHcdAABvHAAAaRoAAGYXAABkFAAAZBAIAGIPEABfEBgAXRAhAFsRKQBaETEAWBI4 AFcSPgBWEkUAVBJMAFMTUwBRE1sAUBNlAE4UcABMFH0ASxSMAEkUnABHFa4ARhXFAEUV6ABFFv4A RRb/AEUV/wBFFf8AtR8AAJ4hAACLIgAAfCIAAHEiAABoIQAAYh8AAF8dAABcGgAAWxcCAFoVDQBX FhQAVRYdAFQXJQBSGC0AURg0AE8YOwBOGUIATRlIAEsaUABKGlgASBpiAEcabQBFG3oAQxuJAEIb mgBAG6wAPxvCAD4c5QA9HPwAPhz/AD4b/wA+G/8AryMAAJgkAACGJQAAdyYAAGwmAABjJQAAXSQA AFkiAABWHwAAVB0AAFMcCwBRHBIATh0aAE0dIgBLHikASh4xAEkfNwBHHz4ARiBFAEUgTQBDIFUA QiBfAEAhagA/IXcAPSGHADshmAA5IaoAOCLAADci4wA3IvsANyL/ADgh/wA4If8AqiYAAJQnAACB KQAAcykAAGcpAABfKQAAWCgAAFQmAABRIwAATyIAAEwiBwBKIhAASCIXAEcjHwBFJCYARCQuAEIk NABBJTsAQCVDAD8lSgA9JlMAPCZcADomZwA5JnUANyeEADUnlgA0J6gAMie+ADEn4QAxJ/kAMib/ ADIm/wAzJf8ApSkAAI8qAAB9LAAAbywAAGQtAABbLAAAVSsAAFAqAABMKAAASiYAAEcnBABEJw0A QigUAEEoHAA/KSMAPikrAD0pMgA8KjkAOypAADkqSAA4K1AANitaADUrZQAzK3IAMSuCADAslAAu LKcALCy8ACss3gAsLPgALCv/AC0q/wAtKv8AoSwAAIstAAB5LgAAay8AAGAvAABYLwAAUS4AAEwu AABILAAARSsAAEErAAA/LAsAPSwRADstGQA6LiEAOS4oADcuLwA2LzYANS8+ADQvRQAzL04AMTBY ADAwYwAuMHAALDCAACowkgApMKUAJzC6ACYw3AAmMPcAJy//ACgv/wAoLv8AnC4AAIcwAAB2MQAA aDIAAF0yAABVMgAATjEAAEgxAABEMAAAQC8AADwwAAA6MQkANzEQADYyFgA1Mh4AMzMlADIzLAAx MzMAMDQ7AC80QwAtNEwALDRWACo1YQApNW4AJzV+ACU1kAAjNaMAIjW5ACE12QAhNPYAIjT/ACMz /wAjMv8AmDEAAIMzAAByNAAAZTQAAFo1AABRNQAASzQAAEU0AABANAAAOjMAADc0AAA0NQYAMjYO ADA3EwAvNxsALjciAC04KQArODEAKjg4ACk5QAAoOUkAJjlTACU5XwAjOWwAITp8ACA6jgAeOqIA HDq3ABs51QAcOfUAHTj/AB04/wAeN/8AkzQAAH82AABuNwAAYTcAAFc3AABONwAASDcAAEI3AAA8 NwAANTgAADI5AAAvOgIALDsLACo8EQApPBgAKD0fACY9JgAlPS4AJD01ACM+PQAiPkYAID5QAB8+ XAAdP2kAGz95ABo/jAAYP6AAFj+1ABU+0gAWPvMAFz3/ABg8/wAYPP8AjjcAAHo4AABqOQAAXjoA AFM6AABLOgAARToAAD86AAA5OgAAMjwAAC4+AAApQAAAJkEIACRCDgAiQhQAIUIbACBDIwAfQyoA HkMyABxDOgAbREMAGkRNABhEWQAXRGcAFUR3ABNEigASRJ4AEUSzABBE0AAQQ/IAEUL/ABJC/wAT Qf8AiTsAAHY8AABmPQAAWj0AAFA9AABIPQAAQj0AADw9AAA2PgAAL0AAACpCAAAlRAAAIUYDAB1I DAAbSREAGUkXABhJHgAXSSYAFkkuABVKNgAUSkAAE0pKABFKVgAQSmQAD0p0AA5KhwANSpsADEqw AApKygALSewADEj/AA1H/wANR/8Agz4AAHE/AABiQAAAVkAAAE1AAABFQAAAP0AAADlBAAAyQgAA K0UAACZHAAAhSQAAHEsAABZOBwATUA4AElATABFQGQAQUCEAD1ApAA5QMQANUDsADVFGAAtRUQAK UV8ACVFvAAdQgQAFUJYAA1CrAAJQxQADT+gAA0/7AAVO/wAGTf8AfUIAAGtDAABdRAAAUkQAAEpE AABDQwAAPEQAADVFAAAuRwAAJ0oAACFMAAAcTwAAF1EAABJUAwAOVwoAC1gQAApYFQAIWBwAB1gk AAZYLAAFWDYAA1hAAAFYTAAAWFoAAFhpAABYfAAAWJEAAFenAABXwAAAVuUAAFb5AABV/wAAVf8A dkcAAGZHAABZSAAAT0cAAEdHAABARwAAOEgAADBKAAApTQAAIlAAABxTAAAWVQAAEVgAAA1bAgAJ XgkABF8OAABfEgAAXxgAAGAfAABgJwAAYDAAAGA7AABgRwAAYFQAAGBjAABgdgAAYIsAAF+iAABf uwAAX+IAAF75AABd/wAAXf8Ab0sAAGFMAABVTAAATEsAAERLAAA7TAAAMk4AACtRAAAjVAAAHFcA ABZbAAARXgAADWAAAAhjAAACZgcAAGcMAABnDwAAaBMAAGkZAABqIQAAaikAAGo0AABqQAAAak0A AGpdAABqbwAAaoUAAGqdAABptgAAaN0AAGj3AABn/wAAZv8AaVEAAFxQAABSUAAASk8AAD9QAAA1 UwAALVYAACRZAAAdXQAAFmAAABBkAAAMZwAABmoAAABuAAAAbwMAAHAIAABxDQAAchAAAHQUAAB1 GwAAdiMAAHcsAAB3OAAAdkYAAHZWAAB2aAAAdn4AAHaXAAB1sQAAdNMAAHP1AABz/wAAcv8AY1YA AFhVAABQVAAARFUAADlYAAAvWwAAJl8AAB1jAAAVZwAAEGwAAApwAAAEcwAAAHYAAAB6AAAAfAAA AHwDAAB+CAAAfwwAAIEQAACCFAAAhBsAAIUkAACGLwAAhj0AAIZNAACFXwAAhXUAAIWPAACEqQAA g8kAAILxAACB/wAAgP8AX1sAAFZaAABJWwAAPV4AADJhAAAnZgAAHmsAABVwAAAOdQAACXkAAAF+ AAAAgQAAAIUAAACIAAAAigAAAIsAAACNAQAAjgYAAJALAACRDwAAkxQAAJUbAACXJgAAlzQAAJdE AACXVgAAlmwAAJWGAACVogAAlMEAAJPqAACS/wAAkv8AXWEAAE9hAABCZAAANmkAACpuAAAfdAAA FXkAAA5/AAAHhAAAAIkAAACOAAAAkgAAAJYAAACYAAAAmgAAAJsAAACdAAAAnwAAAKEDAACjCAAA pQ0AAKcTAACpHAAAqigAAKo5AACqSwAAqmEAAKl6AAComQAAqLUAAKfdAACn+AAApv8AVmgAAEhs AAA6cAAALnYAACJ9AAAXhAAADooAAAeQAAAAlgAAAJoAAACfAAAAowAAAKcAAACqAAAAqwAAAK0A AACvAAAAsQAAALMAAAC1AAAAuAUAALoMAAC9EgAAwBwAAMAtAADAQAAAv1UAAL9uAAC+iwAAvqgA AL7JAAC97wAAvP4ATnQAAEB5AAAyfwAAJYcAABmOAAAQlQAAB5wAAACiAAAApwAAAKwAAACwAAAA tQAAALkAAAC8AAAAvQAAAL8AAADBAAAAwwAAAMYAAADIAAAAygAAAM0CAADQCwAA1RIAANYhAADX NAAA2EkAANlgAADafAAA2poAANu1AADb2QAA2/IARoIAADiJAAArkAAAHZgAABKgAAAKpwAAAK4A AAC0AAAAuQAAAL4AAADCAAAAyAAAAMsAAADOAAAAzwAAANIAAADUAAAA1gAAANoAAADdAAAA3wAA AOIAAADmAAAA6goAAO8TAADwJQAA8joAAPNRAAD0awAA9IkAAPWlAAD1vwAA9d0A/wAGAP8AAwD/ AAUA/wALAP8AEAD/ABcA/wAiAP8ALQD/ADkA/wBEAP8ATQD/AFUA/wBdAP8AZAD/AGoA/wBwAP0A dgD7AHwA+QCDAPcAigD1AJIA8wCbAPAApgDuALMA6wDEAOkA5ADnAPkA5gD/AOUA/wDTAP8AxwD/ AL8A/wC7AP8A/wAAAP8AAAD/AAAA/wACAP8ACwD/ABIA/wAdAP8AKAD/ADMA/wA+APwARwD4AE8A 9ABXAPEAXQDuAGMA7ABpAOoAbwDoAHUA5gB8AOQAgwDiAIsA3wCVANwAnwDZAKsA1QC7ANIA1ADP APIAzQD/AMwA/wDFAP8AugD/ALQA/wCwAP8A/wAAAP8AAAD/AAAA/wAAAP8ABgD5AA8A9QAXAPMA IgDxAC0A7QA3AOcAQADiAEkA3wBQANsAVwDXAF0A1ABjANEAaADPAG4AzAB1AMoAfADIAIQAxQCN AMIAmADAAKQAvQCyALsAxgC5AOgAuAD9ALcA/wC2AP8ArQD/AKcA/wCjAP8A/wAAAP8AAAD/AAAA 9QAAAOsAAQDkAAwA3gATANkAHADTACYA0QAwAMwAOgDIAEIAxABKAMAAUAC9AFYAuwBcALkAYQC3 AGcAtQBtALMAdACxAHwArwCFAK0AkACqAJwAqACqAKYAuwClANoAowD1AKMA/wCiAP8AngD/AJoA /wCXAP8A/wAAAP4AAADvAAAA3wAAANAAAADHAAcAwQAPALwAFwC5ACAAtwAqALUAMwCwADsArQBD AKsASQCoAE8ApgBVAKQAWgCjAGAAoQBmAJ8AbQCdAHQAnAB9AJoAiACYAJQAlgCiAJQAsgCSAMkA kQDrAJEA/wCQAP8AkAD/AIwA/wCKAP8A/AAAAOwAAADZAAAAxwAAALoAAACxAAIAqwAMAKcAEgCk ABsAoQAkAKAALACeADUAmwA8AJgAQwCWAEkAlABPAJIAVACQAFoAjwBfAI0AZgCLAG0AiQB2AIgA gACGAIwAhACaAIIAqgCBAL4AgADgAIAA+QB/AP8AfwD/AH8A/wB+AP8A8QAAANgAAADCAAAAswAA AKgAAACgAAAAmQAHAJUADgCSABUAkAAeAI4AJgCNAC4AigA2AIcAPQCFAEMAhABJAIIATgCBAFQA fwBZAH4AYAB8AGcAegBvAHkAegB3AIYAdQCUAHQAowByALUAcgDPAHEA8QBwAP8AcAD/AHAA/wBx AP8A4QAAAMQAAACwAAAAogAAAJcAAACRAAAAiwACAIYACwCDABEAgQAYAH8AIQB9ACkAfAAwAHkA NwB4AD0AdgBDAHQASQBzAE4AcgBUAHAAWgBvAGIAbQBqAGsAdABqAIAAaACOAGcAnQBlAK8AZQDG AGQA6ABkAP0AYwD/AGMA/wBkAP8AzwUAALYHAACjCAAAlAgAAIkHAACCAwAAfgAAAHsABgB3AA4A dQATAHIAGwBxACMAbwArAG0AMgBsADgAagA+AGkARABnAEkAZgBPAGUAVgBjAF0AYgBlAGAAbwBf AHsAXQCJAFwAmQBbAKoAWQC/AFkA4QBYAPgAWAD/AFgA/wBZAP8AwgwAAKoNAACXDgAAiQ4AAH0O AAB2DQAAcQoAAG8GAABtAAoAawAQAGkAFgBnAB4AZQAmAGMALQBhADMAYAA5AF8APwBdAEUAXABL AFsAUgBaAFkAWABiAFcAbABVAHgAUwCGAFIAlgBRAKcAUAC7AE8B2wBOAvQATgP/AE4E/wBOA/8A uBAAAKESAACOEwAAfxMAAHQTAABsEgAAZxAAAGUOAABjCwMAYwYMAGEEEQBeAxkAXAQhAFsFKABZ Bi8AWAY1AFYHOwBVB0IAVAdIAFMITwBRCFYAUAlfAE4JaQBNCXYASwqEAEkKlABICqYARwq6AEYK 2ABFC/MARQz/AEUM/wBFDP8AsBQAAJkWAACHGAAAeBkAAG0YAABlFwAAXxYAAFwTAABaEQAAWg4G AFoMDQBXDBQAVQwcAFMNJABSDSsAUA0xAE8OOABODj4ATQ5FAEsOTQBKDlUASA9eAEcPaABFD3UA QxCEAEEQlQBAEKYAPhC7AD0Q3AA9EfYAPRH/AD0Q/wA+EP8AqRkAAJIbAACBHAAAch0AAGcdAABf HAAAWRsAAFUZAABTFgAAUhMAAFIRCgBQEBAAThEYAEwRIABKEicASRIuAEgTNABHEzsARRNCAEQT SQBDFFIAQRRbAD8UZQA+FXIAPBWBADoVkgA4FaQANxW5ADUV2AA1FvUANhb/ADYW/wA3Ff8AoxwA AI0eAAB7IAAAbSEAAGIhAABaIQAAVB8AAFAeAABNGwAATBkAAEsWBgBJFg4ARxcVAEUXHABEGCQA QhgqAEEYMQBAGTgAPxk/AD0ZRgA8Gk8AOhpYADkaYwA3G28ANRt+ADMbkAAyG6IAMBu3AC8b0wAv HPMALxv/ADAb/wAwG/8AnR8AAIgiAAB3IwAAaSQAAF4kAABWJAAAUCMAAEsiAABIIAAARh0AAEUc AgBDHAwAQRwSAD8dGQA+HSEAPB4nADseLgA6HzUAOR88ADcfRAA2H0wANCBWADMgYAAxIG0ALyB8 AC0hjgAsIaAAKiG1ACkh0AApIfIAKSH/ACog/wArIP8AmSIAAIQlAABzJgAAZScAAFsnAABTJwAA TCYAAEclAABEJAAAQiEAAD8hAAA9IQkAOyEQADkiFgA4Ih4ANiMlADUjKwA0JDIAMyQ5ADIkQQAw JEoALyVTAC0lXgArJWsAKiV6ACgljAAmJZ8AJCWzACMlzgAjJfAAJCX/ACUk/wAlJP8AlCUAAIAn AABvKQAAYioAAFcqAABPKgAASSkAAEQoAABAJwAAPSYAADolAAA3JgYANSYOADQnFAAyJxsAMSgi ADAoKQAvKDAALSk3ACwpPwArKUcAKSlRACgqXAAmKmkAJCp4ACMqigAhKp0AHyqyAB4qzAAeKu8A Hyn/ACAp/wAhKP8AkCgAAHwqAABsKwAAXywAAFQsAABMLAAARiwAAEErAAA8KwAAOCoAADUqAAAy KwMAMCsMAC4sEQAtLBgALCwfACotJgApLS0AKC00ACcuPAAmLkUAJC5PACMuWgAhL2cAHy92AB0v iAAcL5sAGi+wABgvygAYLu0AGS7/ABst/wAbLf8AjCsAAHgtAABoLgAAWy8AAFEvAABJLwAAQy8A AD4uAAA5LgAANC4AADAuAAAtLwAAKzAKACkxEAAnMRUAJjEcACUyIwAkMioAIzIxACEzOQAgM0IA HzNMAB0zVwAbM2QAGjR0ABg0hgAWNJoAFDOuABMzyAATM+wAFDP/ABUy/wAWMf8Ahy4AAHQvAABl MQAAWDEAAE4yAABGMgAAQDEAADsxAAA2MQAAMTEAACszAAAoNAAAJTUGACM2DQAhNhIAIDcZAB83 IAAeNycAHTguABs4NgAaOD8AGThJABc5VQAVOWIAFDlxABI5hAAROZgAEDmtAA44xwAOOOsAEDj/ ABA3/wARNv8AgzEAAHAyAABhNAAAVTQAAEs0AABENAAAPTQAADg0AAAzNAAALTUAACg3AAAkOQAA IDoCAB07CwAbPBAAGT0VABg9HAAXPSMAFj0rABU+MwAUPjwAEj5GABE+UgAQPl8ADz5vAA4+gQAM PpUACz6pAAo+wQAKPeQACz37AAw8/wANO/8AfTQAAGs2AABdNwAAUTcAAEg3AABBNwAAOzcAADU3 AAAwNwAAKjkAACU7AAAgPQAAHD8AABdBBgAUQw0AEkMSABFDGAARQx8AEEQnAA9ELwAORDkADURD AAxETgALRFsACURqAAdEfAAGRJAABEOlAAJDvQADQ+AAA0P2AARC/wAGQf8AeDgAAGc5AABZOgAA TjoAAEU6AAA+OgAAODoAADM6AAAtOwAAJz0AACFAAAAcQgAAF0QAABNGAwAPSQoADUoPAAxKFAAL ShsACUojAAhKKwAHSjQABUo+AARKSQACSlYAAEplAABKdwAASosAAEqhAABJuQAASd0AAEn1AABI /wAASP8AcjwAAGI9AABVPgAASj4AAEI9AAA8PQAANj0AAC8+AAApQAAAI0IAAB1FAAAXRwAAE0oA AA9MAgALTwkAB1ANAANREQAAURcAAFEeAABRJgAAUS8AAFE5AABRRAAAUlEAAFJgAABRcgAAUYcA AFGdAABRtQAAUNgAAFD1AABP/wAAT/8AbEAAAF1BAABRQQAAR0EAAEBAAAA5QAAAMkEAACpDAAAk RgAAHkgAABdLAAASTgAADlEAAAtTAQAGVgcAAFcMAABYEAAAWBMAAFkZAABaIQAAWikAAFozAABa PwAAWkwAAFpaAABabAAAWoEAAFmZAABZsQAAWNEAAFj0AABX/wAAV/8AZUUAAFhFAABNRQAARUQA AD5EAAA1RQAALUcAACVKAAAeTQAAGFAAABJTAAAOVgAAClkAAARcAAAAXgQAAF8JAABgDQAAYRAA AGIVAABjGwAAZCMAAGQtAABkOAAAZEUAAGRUAABkZgAAZHsAAGOTAABjrQAAYswAAGHyAABh/wAA YP8AX0oAAFNKAABKSQAAQ0gAADlJAAAvTAAAJ08AAB9SAAAYVQAAElkAAA1dAAAIYAAAAmMAAABm AAAAaAEAAGkFAABqCgAAaw0AAG0RAABuFgAAcB0AAHEmAABxMQAAcD4AAHBOAABwXwAAcHMAAG+N AABvpwAAbsYAAG3vAABs/wAAbP8AWk8AAFBOAABITQAAPU4AADNRAAApVAAAIFgAABhcAAARYAAA DGQAAAZoAAAAawAAAG8AAAByAAAAdAAAAHUAAAB3BAAAeAkAAHoNAAB8EAAAfRYAAH8eAACAKAAA gDUAAIBFAAB/VgAAf2sAAH+EAAB+oAAAfb4AAHzpAAB7/wAAev8AVlQAAE5TAABCVAAAN1YAACxa AAAiXwAAGGMAABFoAAALbQAAA3IAAAB2AAAAegAAAH0AAACAAAAAgwAAAIQAAACGAAAAhwIAAIkH AACLDAAAjRAAAJAWAACSHwAAkiwAAJI7AACSTQAAkWIAAJF6AACPlwAAj7QAAI7hAACM+wAAjP8A VVkAAEhaAAA7XQAAL2EAACRmAAAZbAAAEXIAAAp3AAACfQAAAIIAAACGAAAAiwAAAI4AAACRAAAA kwAAAJUAAACXAAAAmQAAAJsAAACdBAAAnwoAAKIPAACkFgAApiEAAKYxAACmQwAApVcAAKRwAACj jgAAo6sAAKHQAACg9QAAn/8ATmEAAEBkAAAzaQAAJ24AABt1AAARfAAAC4MAAACJAAAAjgAAAJMA AACYAAAAnQAAAKEAAACkAAAApQAAAKcAAACpAAAAqwAAAK0AAACwAAAAsgAAALUIAAC4DgAAvBYA ALwlAAC8NwAAu0wAALpkAAC5gQAAt6IAALfAAAC36gAAt/wARmsAADlwAAArdwAAH38AABOGAAAL jgAAAZUAAACbAAAAoQAAAKYAAACrAAAAsAAAALMAAAC3AAAAtwAAALoAAAC8AAAAvwAAAMEAAADE AAAAxwAAAMoAAADNBQAA0Q4AANQZAADUKwAA1EAAANNYAADTdAAA05IAANKwAADS0wAA0vIAPnkA ADGAAAAjiAAAF5EAAA2ZAAADoAAAAKcAAACuAAAAswAAALgAAAC9AAAAwgAAAMYAAADKAAAAygAA AM0AAADPAAAA0gAAANUAAADZAAAA3QAAAN8AAADjAAAA5wUAAOsPAADsHwAA7TMAAO5LAADvZAAA 74IAAPCfAADxuQAA8dgA/wAAAP8AAAD/AAQA/wAJAP8ADgD/ABUA/wAeAP8AKQD/ADQA/wA/AP8A SAD/AFAA/wBYAP8AXgD/AGUA/QBrAPsAcQD5AHcA+AB+APYAhQDzAI0A8QCXAO4AogDrAK8A6ADA AOYA4ADjAPgA4gD/ANsA/wDLAP8AwQD/ALkA/wC0AP8A/wAAAP8AAAD/AAAA/wAAAP8ACQD/ABAA /wAZAP8AIwD/AC4A/QA5APkAQgD1AEoA8gBSAO4AWADrAF4A6QBkAOYAagDkAHAA4gB2AN8AfQDd AIYA2QCPANUAmgDRAKcAzgC2AMsAzgDJAPAAxwD/AMUA/wC7AP8AtAD/AK0A/wCpAP8A/wAAAP8A AAD/AAAA/wAAAPsAAgD2AA0A8QATAO0AHgDsACgA6QAyAOMAOwDdAEQA2ABLANMAUQDQAFgAzQBd AMsAYwDJAGgAxgBvAMQAdgDCAH4AvwCHALwAkgC6AJ8AtwCtALUAwQCyAOQAsQD9AK8A/wCsAP8A pQD/AKAA/wCcAP8A/wAAAP8AAAD7AAAA7gAAAOQAAADcAAgA0wAQAM8AGADLACIAyQArAMYANADB AD0AvQBEALoASwC3AFEAtQBWALIAXACwAGEArgBnAKwAbgCqAHYAqAB/AKYAigCjAJYAoQClAJ8A tgCdANEAnADzAJsA/wCcAP8AlgD/AJMA/wCQAP8A/wAAAPYAAADnAAAA0wAAAMYAAAC9AAMAuAAN ALMAEwCxABwArwAlAK4ALgCpADYApgA9AKMARAChAEoAnwBPAJ0AVQCbAFoAmgBgAJgAZgCWAG4A lAB3AJIAgQCQAI4AjgCcAIwArQCKAMMAiQDoAIgA/wCJAP8AhwD/AIUA/wCCAP8A8wAAAOMAAADM AAAAvAAAALAAAACnAAAAoQAIAJ4ADwCbABYAmQAfAJgAJwCWAC8AkwA3AJEAPQCOAEMAjABJAIsA TgCJAFQAhwBZAIUAYACEAGcAggBvAIAAegB+AIYAfACUAHoApAB5ALgAeADYAHcA9wB4AP8AeAD/ AHcA/wB1AP8A5gAAAMsAAAC3AAAAqAAAAJ4AAACWAAAAjwAEAIsADACIABIAhwAZAIUAIQCEACkA ggAwAH8ANwB9AD0AfABDAHoASAB5AE0AdwBTAHYAWQB0AGEAcgBpAHEAcwBvAH8AbQCNAGwAnQBq AK8AaQDIAGgA7QBpAP8AaQD/AGkA/wBpAP8A0gAAALgAAAClAAAAlwAAAI0AAACGAAAAgQAAAHwA CAB5AA4AdwAUAHYAHAB0ACMAcwArAHEAMQBvADcAbgA9AGwAQwBrAEgAagBOAGgAVABnAFsAZQBj AGMAbQBiAHgAYACHAF8AlgBdAKgAXQC+AFwA5ABcAPsAXAD/AFwA/wBcAP8AwgAAAKoBAACYAwAA iQQAAH8CAAB4AAAAdAAAAHAABABtAAwAawARAGkAFwBoAB4AZgAlAGUALABjADIAYgA4AGAAPQBf AEMAXgBJAFwATwBbAFYAWgBeAFgAaABXAHMAVQCBAFQAkQBSAKMAUQC3AFEA1gBRAPUAUQD/AFEA /wBSAP8AtgcAAJ8JAACNCwAAfgwAAHMLAABsCgAAaAcAAGUDAABjAAcAYQANAF8AEwBdABoAXAAh AFsAJwBZAC0AWAAzAFYAOQBVAD8AVABFAFMASwBRAFIAUABaAE8AZABNAG8ATAB9AEoAjQBJAJ8A SACyAEcAzABHAO8ARgD/AEcA/wBHAP8ArAwAAJUOAACDEAAAdRAAAGsQAABjDwAAXg4AAFsMAABa CQIAWQQKAFcADwBVABUAUwAcAFIAIwBRACkATwAvAE4ANQBNATsATAFBAEoCSABJAk8ASAJXAEYD YQBFA20AQwN6AEIDiwBAA5wAPwOvAD4DyAA9BOoAPQX8AD0G/wA+Bv8ApBAAAI4SAAB8EwAAbhQA AGQUAABcEwAAVhIAAFMRAABRDgAAUAwFAFAJDABPBxEATQcXAEsIHwBJCCUASAkrAEcJMQBGCTgA RAo+AEMKRQBCCk0AQAtVAD8LXwA9C2sAPAt5ADoMigA4DJwANwyvADUMxwA1DOkANQ39ADUN/wA2 DP8AnRMAAIcVAAB2FwAAaRgAAF4YAABWGAAAUBcAAE0VAABKEwAASREAAEkOBwBIDQ4ARg0TAEQN GgBDDiEAQg4oAEAOLgA/DjUAPg88AD0PQwA7EEsAOhBUADgQXgA2EGsANBB5ADIQigAxEJwALxCw AC0QyQAtEewALRH/AC4R/wAvEP8AlxYAAIIZAABxGwAAZBwAAFkcAABRHAAATBsAAEcaAABEGAAA QxUAAEITAgBBEgsAQBEQAD4SFwA8Eh4AOxMlADoTKwA4EzIANxM5ADYUQAA0FEgAMxRRADEUXAAw FWgALhV3ACwViAAqFZoAKBWuACcVxwAmFeoAJxX/ACgV/wApFf8AkRoAAH0cAABtHgAAYB8AAFYf AABOHwAASB4AAEMdAABAHAAAPhoAAD0YAAA7FwcAORYOADgXFAA2FxsANRgiADMYKAAyGC8AMRk2 ADAZPQAuGUYALRpPACsaWQAqGmYAKBp0ACYahgAkGpkAIhqtACEaxQAgGugAIRr+ACIa/wAjGv8A jR0AAHkfAABpIQAAXCIAAFIiAABKIgAARCEAAD8hAAA8IAAAOR4AADgbAAA1HAQANBwNADIcEgAw HRgALx0fAC4dJQAtHiwAKx4zACoeOwApH0MAJx9NACYfVwAkH2QAIh9yACAfhAAfH5cAHR+rABsf wwAbH+cAGx/9AB0f/wAeHv8AiSAAAHUiAABlIwAAWSQAAE8lAABHJQAAQSQAADwjAAA4IwAANSIA ADMgAAAwIAEALiEKACwhEAArIRUAKiIcACgiIwAnIikAJiMwACUjOAAjI0EAIiRKACEkVQAfJGEA HSRwABskggAZJJUAFySqABYkwQAVJOUAFiT8ABcj/wAZI/8AhSIAAHEkAABiJgAAVicAAEwnAABE JwAAPicAADkmAAA1JgAAMSUAAC4kAAArJQAAKSUHACcmDgAlJhMAJCcZACMnIAAiJycAISguACAo NgAeKD4AHShIABspUwAZKV8AGCluABYpgAAUKZQAEimoABEpwAARKOQAESj7ABMo/wAUJ/8AgCUA AG4nAABfKAAAUykAAEkqAABCKQAAOykAADYpAAAyKAAALigAACooAAAmKQAAJCoEACIrDAAgKxEA HywWAB0sHQAcLCQAGy0rABotMwAYLTwAFy1FABYuUAAULl0AEi5sABEufgAQLpIADi6nAA0tvQAN Ld8ADS35AA4s/wAQLP8AfCgAAGoqAABbKwAAUCwAAEYsAAA/LAAAOSwAADQrAAAvKwAAKysAACYs AAAiLgAAHy8AABwwCQAaMQ4AGTETABcxGgAWMiEAFTIoABQyMAATMjkAEjNDABEzTgAQM1sADjNp AA0zegAMM44ACjOiAAgyuQAIMtkACDL0AAox/wALMf8AdysAAGYtAABYLgAATS8AAEMvAAA8LgAA Ni4AADEuAAAtLgAAKS4AACMwAAAfMgAAGzMAABc1BQAUNgwAEjcRABE3FgARNx0AEDgkAA84LAAO ODUADTg/AAw4SgALOFcACThlAAc4dgAFOIoAAzifAAE3tQABN9MAAjfxAAM2/wAFNv8Acy4AAGIw AABUMQAASTEAAEExAAA5MQAANDEAAC8wAAArMAAAJTIAACAzAAAbNgAAFzgAABM6AgAQPAkADT0O AAw9EwALPRkACj0hAAk9KQAIPTEABj47AAU+RgADPlIAAT5hAAA+cgAAPoYAAD2cAAA9sgAAPdAA ADzwAAA8/wAAPP8AbTIAAF0zAABQNAAARjQAAD40AAA3NAAAMjMAAC0zAAAnNAAAIjYAAB04AAAY OgAAFD0AABA/AgANQQgACUMNAAZEEQADRBYAAkQdAABEJAAARC0AAEQ2AABEQQAARE4AAERcAABE bQAARIEAAESYAABDrwAAQ80AAELwAABC/wAAQv8AaDYAAFg3AABMOAAAQzgAADs3AAA1NgAAMDYA ACk3AAAjOQAAHjsAABg9AAATQAAAEEIAAA1FAQAIRwcAA0kMAABJDwAAShMAAEsZAABLIAAASygA AEsyAABLPQAATEkAAExXAABLaAAAS30AAEuUAABKrAAASsoAAEnvAABJ/wAASf8AYjoAAFQ7AABJ OwAAQDsAADk6AAAzOQAALDoAACU8AAAfPwAAGUEAABNEAAAQRwAADEkAAAhMAAACTwUAAFAKAABQ DQAAURAAAFIVAABUGwAAVCMAAFQsAABUNwAAVEQAAFRSAABUYwAAVHcAAFSPAABTqAAAUsYAAFLt AABR/wAAUf8AXD8AAE8/AABFPwAAPj4AADc9AAAvPgAAJ0AAACBDAAAZRgAAE0kAAA9MAAALTwAA BlIAAABUAAAAVwIAAFgHAABZCwAAWg4AAFsRAABdFgAAXh0AAF8mAABfMQAAXj0AAF5MAABeXQAA XnEAAF2JAABdowAAXMEAAFvrAABa/wAAWv8AVkQAAEtDAABDQgAAPEEAADJCAAApRQAAIUgAABpL AAATTgAADlIAAApVAAADWQAAAFsAAABeAAAAYAAAAGICAABjBgAAZQoAAGYOAABoEQAAahcAAGsf AABrKQAAazYAAGtFAABrVgAAamoAAGqCAABpnQAAaLsAAGfnAABm/wAAZf8AUUgAAEhIAABBRgAA N0cAACxKAAAjTQAAG1EAABNVAAAOWQAACF0AAAFhAAAAZAAAAGcAAABqAAAAbAAAAG4AAABwAAAA cgUAAHMJAAB1DQAAdxEAAHoYAAB7IQAAey4AAHo9AAB6TgAAeWIAAHl5AAB4lgAAd7MAAHXgAAB0 /AAAc/8ATk0AAEdMAAA7TQAAME8AACZTAAAcWAAAE1wAAA1hAAAGZgAAAGoAAABvAAAAcgAAAHYA AAB5AAAAfAAAAH0AAAB/AAAAgQAAAIMCAACGBwAAiAwAAIsRAACOGAAAjiQAAI4zAACNRAAAjFgA AItvAACKjAAAiaoAAIjPAACG9wAAhf8ATVEAAEFTAAA0VQAAKVoAAB5fAAAUZQAADWoAAAVwAAAA dgAAAHsAAAB/AAAAgwAAAIcAAACKAAAAjQAAAI4AAACRAAAAkwAAAJUAAACYAAAAmgUAAJ0MAACg EQAAoxoAAKMoAACiOgAAoU4AAKBlAACggQAAnqAAAJ3BAACb7gAAmv8ARlkAADlcAAAtYQAAIWcA ABZuAAAOdQAABXsAAACBAAAAhwAAAI0AAACSAAAAlgAAAJoAAACdAAAAnwAAAKEAAACkAAAApgAA AKgAAACrAAAArgAAALEDAAC0CwAAuBEAALkeAAC5LwAAuEMAALdaAAC1dgAAtJcAALS1AACx4gAA sPwAP2QAADFpAAAlbwAAGHcAAA9/AAAGhwAAAI4AAACUAAAAmgAAAKAAAAClAAAAqgAAAK4AAACx AAAAsgAAALUAAAC3AAAAugAAALwAAAC/AAAAwwAAAMYAAADJAAAAzgoAANITAADSIwAA0TcAANBP AADOagAAzYoAAMqrAADLywAAy+8AN3EAACl4AAAdgAAAEYkAAAiRAAAAmgAAAKEAAACnAAAArQAA ALMAAAC5AAAAvgAAAMIAAADFAAAAxgAAAMkAAADMAAAAzgAAANIAAADVAAAA2gAAAN4AAADhAAAA 5QAAAOoLAADrFwAA6isAAOpDAADqXgAA6noAAOuZAADrtQAA69UA/wAAAP8AAAD/AAEA/wAHAP8A DQD/ABIA/wAbAP8AJQD/AC8A/wA6AP8AQwD/AEsA/wBTAP8AWgD9AGAA+wBmAPoAawD4AHIA9gB4 APQAgADxAIkA7wCSAOwAnQDpAKoA5gC8AOMA3ADfAPcA3QD/AMwA/wC+AP8AtQD/ALAA/wCtAP8A /wAAAP8AAAD/AAAA/wAAAP8ABgD/AA0A/wAUAP8AHwD/ACkA+wAzAPcAPQDzAEUA7wBNAOwAUwDo AFkA5QBfAOMAZQDgAGoA3QBxANoAeADWAIAA0gCKAM8AlQDMAKIAyACyAMUAyQDCAO0AwAD/ALsA /wCwAP8AqAD/AKQA/wChAP8A/wAAAP8AAAD9AAAA+gAAAPgAAADwAAkA7AARAOgAGQDnACMA5QAt AN4ANgDWAD4A0QBGAM0ATADKAFIAyABYAMUAXQDDAGMAwABpAL4AcAC8AHgAuQCBALcAjQC0AJoA sQCpAK4AvACsAOEAqgD8AKgA/wCgAP8AmQD/AJYA/wCUAP8A/wAAAPkAAADyAAAA5wAAANsAAADR AAQAygANAMcAFADEAB0AwgAmAL8ALwC7ADcAtwA/ALQARQCxAEsArgBRAKwAVgCqAFwAqABhAKYA aACjAHAAoQB5AJ8AhACdAJEAmgCgAJgAsQCWAMwAlQDxAJQA/wCRAP8AiwD/AIgA/wCGAP8A9wAA AOwAAADeAAAAyQAAALwAAAC0AAAArwAKAKsAEACpABcAqAAgAKcAKACiADAAnwA4AJwAPgCaAEQA mABKAJYATwCUAFUAkwBaAJEAYQCPAGgAjQBxAIsAewCJAIgAhwCXAIUAqACDAL4AgQDkAIAA/wCA AP8AfAD/AHsA/wB5AP8A6QAAANcAAADBAAAAsQAAAKYAAACdAAAAlwAFAJQADQCSABIAkAAaAI8A IgCOACoAiwAxAIkAOACHAD4AhQBDAIMASACBAE4AfwBUAH4AWgB8AGEAegBpAHgAcwB2AH8AdQCO AHMAnwBxALMAcADQAG8A9gBvAP8AbwD/AG0A/wBsAP8A2gAAAL8AAACsAAAAngAAAJMAAACMAAAA hQAAAIIACQB/AA8AfgAVAH0AHAB8ACQAegArAHcAMQB1ADcAdAA9AHIAQgBxAEgAbwBNAG4AUwBs AFoAawBiAGkAbABnAHgAZgCGAGQAlwBiAKoAYQDCAGAA6wBhAP8AYQD/AGEA/wBgAP8AxQAAAK0A AACbAAAAjQAAAIMAAAB8AAAAdwAAAHIABQBwAAwAbgARAGwAFwBsAB4AawAlAGkALABnADEAZgA3 AGQAPQBjAEIAYgBIAGAATgBfAFUAXQBdAFwAZgBaAHIAWQCAAFcAkABWAKMAVQC5AFQA3gBUAPsA VAD/AFUA/wBVAP8AtgAAAJ8AAACNAAAAfwAAAHUAAABuAAAAaQAAAGYAAQBjAAkAYQAOAGAAEwBf ABkAXgAgAF0AJgBbACwAWgAyAFgANwBXAD0AVgBDAFUASQBTAFAAUgBYAFEAYQBPAGwATgB6AEwA igBLAJwASgCxAEkAzgBJAPMASQD/AEkA/wBKAP8AqgEAAJQFAACCBwAAdAgAAGoIAABjBgAAXgQA AFsAAABZAAUAVwAMAFYAEABUABUAUwAbAFIAIgBRACgAUAAtAE4AMwBNADgATAA+AEsARQBKAEwA SABUAEcAXQBGAGgARAB1AEMAhQBBAJgAQACrAEAAxQA/AOoAPwD/AEAA/wBAAP8AoAgAAIoLAAB5 DQAAbA0AAGENAABaDQAAVQsAAFIJAABQBgAATwIIAE4ADQBMABIASwAXAEoAHgBJACMARwApAEYA LwBFADQARAA6AEIAQQBBAEgAQABQAD4AWgA9AGQAPAByADoAggA5AJQAOACnADcAvgA2AOMANgD5 ADYA/wA3AP8AmA0AAIMOAAByEAAAZREAAFsRAABTEAAAThAAAEoOAABIDQAARwoDAEcHCgBFBA4A RAITAEICGgBBAiAAQAMlAD4DKwA9BDEAPAQ3ADsEPgA6BUUAOQVOADcFVwA2BWIANAZwADIGgAAx BpIAMAalAC8FuwAuBd0ALgb1AC0H/wAuB/8AkRAAAH0RAABsEwAAXxQAAFUUAABOFAAASBMAAEQS AABBEAAAQA4AAEANBgBACgwAPgkQADwJFgA7ChwAOQoiADgKKAA3Cy4ANgs1ADULOwAzC0MAMgxM ADAMVgAvDGEALQxvACsMfwAqDJIAKAylACcMuwAlDN0AJQ31ACYN/wAnDf8AixIAAHcUAABnFgAA WxcAAFEYAABJFwAAQxcAAD8VAAA8FAAAOhIAADkRAQA5DwgAOA4NADcOEgA1DhgANA4fADIOJQAx DywAMA8yAC8QOgAtEEIALBBLACoQVQAoEGEAJhBvACQQgAAjEJMAIRCnAB8QvQAeEOAAHhH3AB8Q /wAgEP8AhhQAAHMXAABjGQAAVxoAAE0bAABFGgAAQBoAADsZAAA4GAAANRYAADQUAAAzEgQAMhIL ADESEAAvEhUALRIcACwTIgArEykAKhMwACgTNwAnFD8AJhRIACQUUwAiFF8AIBVtAB8VfgAdFZEA GxWlABkVuwAYFd4AGBX4ABkU/wAaFP8AghcAAG8aAABfHAAAUx0AAEodAABCHQAAPB0AADccAAA0 GwAAMRoAAC8ZAAAuFgAALBcIACsWDgApFxMAKBcZACcYIAAlGCYAJBgtACMYNAAiGT0AIBlGAB4Z UQAdGV0AGxprABkafAAXGo8AFRqjABQZugASGdsAExn2ABQZ/wAVGP8AfRoAAGsdAABcHwAAUCAA AEcgAAA/IAAAOR8AADQfAAAxHgAALR0AACscAAApGwAAJxsFACUbDAAkHBEAIhwWACEcHQAgHSMA Hx0qAB4dMgAcHjoAGx5EABkeTgAXHlsAFh5pABQfegASHo0AER6iABAeuAAOHtgADx71ABAd/wAR Hf8Aeh0AAGcfAABZIQAATSIAAEQiAAA8IgAANiIAADIhAAAuIQAAKiAAACcgAAAkHwAAIiACACAg CgAeIQ8AHSEUABwhGgAbIiEAGSInABgiLwAXIjgAFSNBABQjTAASI1gAESNnABAjeAAOI4sADSOf AAwjtAALI9AACyLwAAwi/wANIf8Adh8AAGQiAABWIwAASyQAAEEkAAA6JAAANCQAAC8jAAArIwAA KCMAACQjAAAgIwAAHSQAABslBwAZJg0AFyYRABYmFwAVJx4AFCclABMnLAASJzUAESg/ABAoSgAO KFYADShkAAwodAAKKIcACSibAAcnsQAFJ8wABifsAAcm/gAIJv8AcSIAAGAkAABTJgAASCcAAD8n AAA3JgAAMSYAAC0mAAApJQAAJSUAACIlAAAdJwAAGSgAABYqBAAUKwsAEiwQABEsFAAQLBsAECwi AA4sKQAOLTIADS07AAstRgAKLVIACC1gAAYtcAAELYMAAi2YAAAsrgAALMkAACzrAAEr/AACK/8A bSUAAF0nAABPKAAARSkAADwpAAA1KQAALygAACsoAAAnJwAAIycAAB8oAAAbKgAAFywAABMuAgAQ MAgADjENAA0xEgAMMRcACzEeAAoxJgAIMi4ABzI3AAUyQgADMk4AATJcAAAybAAAMn8AADKVAAAx rAAAMccAADDqAAAw/AAAMP8AaCkAAFgqAABMKwAAQSwAADksAAAyKwAALSsAACkqAAAlKgAAICsA ABwsAAAXLgAAEzAAABAyAgAONAcACjcMAAc3EAAFNxQAAzcbAAI3IgAANyoAADgzAAA4PgAAOEoA ADhYAAA4aAAAOHwAADeSAAA3qQAANsUAADbqAAA2/QAANf8AYywAAFQuAABILwAAPi8AADYuAAAw LgAAKy0AACctAAAiLQAAHS8AABgxAAAUMwAAEDUAAA43AQAKOgcABjsLAAI8DgAAPRIAAD4XAAA+ HgAAPiYAAD4vAAA+OgAAPkYAAD5UAAA+ZAAAPncAAD6PAAA9pwAAPcMAADzpAAA8/QAAO/8AXjAA AFAxAABEMgAAOzIAADQxAAAuMAAAKS8AACQwAAAeMgAAGTQAABQ2AAAQOQAADTsAAAo9AAAFQAUA AEEKAABCDQAAQxAAAEQUAABFGgAARiIAAEYrAABGNQAARkEAAEZPAABGXwAARnMAAEWKAABFpAAA RMAAAEPoAABD/gAAQv8AWDQAAEs1AABBNQAAOTUAADI0AAAtMwAAJjQAACA1AAAaOAAAFDoAABA9 AAANQAAACUIAAARFAAAARwMAAEgHAABKCwAASw4AAEwRAABOFQAATxwAAE8lAABPLwAATzwAAE9K AABPWgAATm0AAE6FAABNoAAATLwAAEvnAABL/gAASv8AUzkAAEc5AAA+OQAANzgAADE3AAApNwAA ITkAABs8AAAVPwAAEEIAAAxFAAAHSAAAAkoAAABNAAAATwAAAFEEAABSBwAAVAsAAFUOAABXEQAA WRcAAFofAABZKQAAWTYAAFlEAABZVAAAWGcAAFh/AABXmgAAVrcAAFXjAABU/QAAVP8ATj0AAEM9 AAA8PAAANTsAACw8AAAkPgAAHEEAABVEAAAQSAAAC0sAAAVOAAAAUQAAAFQAAABXAAAAWQAAAFsA AABdAgAAXgYAAGALAABiDgAAZBIAAGcYAABnIgAAZi4AAGY8AABmTQAAZWAAAGV3AABkkwAAY7EA AGHdAABg/AAAX/8ASUIAAEFBAAA6PwAAMEAAACZDAAAeRgAAFUoAABBOAAAKUgAAA1YAAABaAAAA XQAAAGAAAABjAAAAZQAAAGcAAABpAAAAawEAAG0FAABvCgAAcg4AAHUSAAB3GwAAdiYAAHY1AAB1 RgAAdFkAAHRvAABziwAAcqkAAHDNAABv9wAAbv8ARkYAAEBFAAA1RgAAKkgAACBMAAAXUQAAEFYA AAlaAAABXwAAAGMAAABoAAAAawAAAG8AAAByAAAAdQAAAHcAAAB5AAAAewAAAH0AAACAAwAAgwgA AIYNAACJEwAAih0AAIorAACJPAAAiE8AAIZmAACFgQAAhKAAAILCAACB8AAAf/8ARksAADpMAAAu TwAAI1MAABhYAAAQXgAACWQAAABpAAAAbwAAAHQAAAB4AAAAfAAAAIEAAACEAAAAhwAAAIgAAACL AAAAjgAAAJAAAACTAAAAlgAAAJkHAACdDQAAoRQAAKAhAACgMQAAnkQAAJ1bAACcdgAAmZYAAJm1 AACW5QAAlf4AP1IAADJVAAAmWgAAG2AAABFnAAAJbQAAAHQAAAB7AAAAgQAAAIYAAACLAAAAkAAA AJQAAACXAAAAmQAAAJwAAACfAAAAoQAAAKQAAACnAAAAqgAAAK0AAACxBgAAtQ0AALgWAAC3JgAA tjkAALVQAAC0agAAsokAALCqAACuzwAArfUAN1wAACthAAAeaAAAE3AAAAt4AAAAgAAAAIcAAACO AAAAlQAAAJoAAACfAAAApAAAAKgAAACsAAAArQAAALAAAACzAAAAtQAAALgAAAC7AAAAvwAAAMMA AADHAAAAywUAANEOAADRGwAA0C4AAM9FAADNXwAAy34AAMmeAADIvgAAxekAL2kAACNwAAAWeQAA DYEAAAGLAAAAkwAAAJsAAACiAAAAqAAAAK4AAAC0AAAAuAAAAL0AAADAAAAAwgAAAMUAAADIAAAA ywAAAM4AAADRAAAA1gAAANsAAADfAAAA5AAAAOgGAADrEQAA6iMAAOo6AADpVAAA53IAAOWTAADj swAA49QA/wAAAP8AAAD/AAAA/wAEAP8ACwD/ABAA/wAXAP8AIQD/ACsA/wA1AP8APgD/AEcA/wBO AP8AVQD8AFsA+gBhAPgAZgD2AG0A9ABzAPIAewDvAIQA7QCOAOoAmQDmAKcA4wC5AN8A1QDbAPcA 1gD/AMAA/wCyAP8AqgD/AKUA/wCiAP8A/wAAAP8AAAD+AAAA/AAAAPwAAwD+AAsA/wARAP8AGgD9 ACQA+QAuAPQAOADwAEAA7ABIAOkATgDmAFQA4gBaAN8AXwDcAGUA2ABrANQAcgDQAHsAzQCFAMoA kQDHAJ4AwwCuAMAAxQC9AOsAuwD/ALAA/wCkAP8AnAD/AJgA/wCVAP8A/wAAAPoAAAD0AAAA8QAA APIAAADqAAUA5wAOAOIAFQDhAB4A4QAoANgAMQDQADkAywBAAMgARwDFAE0AwgBTAL8AWAC9AF4A uwBkALkAawC2AHMAtAB8ALEAiACuAJUAqwCkAKgAuACmANwAowD7AJ8A/wCVAP8AjwD/AIsA/wCJ AP8A+QAAAO8AAADnAAAA3wAAAM8AAADIAAAAwQAKAL8AEQC8ABgAuwAhALkAKgC0ADIAsQA6AK4A QACrAEYAqABMAKYAUQCjAFYAoQBcAJ8AYwCdAGoAmwBzAJkAfgCWAIwAlACbAJIArQCQAMcAjgDw AI0A/wCGAP8AgAD/AH0A/wB8AP8A7QAAAOAAAADRAAAAvwAAALMAAACqAAAApgAFAKIADQChABMA oAAbAJ8AIwCbACsAmAAyAJUAOQCTAD8AkQBEAI8ASgCOAE8AjABVAIoAWwCIAGMAhgBrAIQAdgCC AIIAgACSAH4AowB8ALoAegDhAHkA/wB3AP8AcgD/AHAA/wBvAP8A3QAAAMsAAAC2AAAApwAAAJ0A AACUAAAAjgABAIsACgCJABAAiAAVAIcAHQCHACUAhAAsAIIAMgB/ADgAfQA9AHsAQwB5AEgAeABO AHYAVAB1AFsAcwBjAHEAbgBvAHoAbQCJAGwAmgBqAK4AaQDMAGgA9gBnAP8AZQD/AGQA/wBjAP8A ygAAALQAAAChAAAAkwAAAIkAAACCAAAAewAAAHgABQB2AAwAdQARAHQAGABzAB8AcgAlAHAALABu ADIAbAA3AGoAPABpAEIAaABIAGYATgBlAFUAYwBdAGIAZgBgAHIAXgCAAF0AkgBbAKUAWgC+AFkA 6QBZAP8AWQD/AFgA/wBYAP8AuQAAAKIAAACQAAAAgwAAAHkAAABxAAAAbQAAAGkAAQBmAAkAZQAO AGQAEwBjABkAYwAgAGEAJgBgACwAXgAxAFwANwBbADwAWgBCAFgASABXAE8AVgBXAFQAYABTAGwA UQB5AFAAigBPAJ4ATgC0AE0A2gBNAPsATQD/AE0A/wBNAP8AqgAAAJQAAACCAAAAdQAAAGsAAABk AAAAYAAAAF0AAABaAAUAWAAMAFcAEABWABUAVgAbAFUAIQBTACcAUgAsAFEAMQBPADcATgA9AE0A QwBMAEoASgBSAEkAWwBIAGYARgBzAEUAhABEAJcAQwCsAEIAyQBCAPEAQgD/AEMA/wBDAP8AngAA AIkAAAB4AwAAagQAAGEEAABaAwAAVQEAAFIAAABQAAIATgAJAE0ADQBMABEASwAXAEoAHABJACIA SAAnAEcALQBFADIARAA4AEMAPgBCAEUAQQBNAD8AVgA+AGEAPQBuADsAfgA6AJEAOQCmADgAvwA4 AOgAOAD/ADkA/wA5AP8AlQMAAIAHAABvCQAAYgoAAFgLAABRCgAATAgAAEkGAABHAwAARgAGAEQA CwBDAA8AQgATAEEAGABBAB4APwAjAD4AKQA9AC4AOwA0ADoAOgA5AEEAOABJADcAUgA2AF0ANABq ADMAegAyAIwAMQChADAAuAAvAN4ALwD5AC8A/wAwAP8AjAkAAHgMAABoDQAAXA4AAFIOAABLDgAA RQ0AAEEMAAA/CgAAPggCAD0ECAA8AQ0AOwAQADoAFQA5ABoAOAAgADYAJQA1ACsANAAwADMANwAy AD4AMQBGAC8AUAAuAFoALQBnACsAdwAqAIkAKQCdACgAswAnANEAJwDyACcA/wAnAP8AhgwAAHIO AABjEAAAVhEAAE0RAABFEQAAQBAAADwPAAA5DgAANw0AADYLBAA2CAoANQYOADQFEgAyBBcAMQUc ADAFIgAvBSgALgYuAC0GNAArBjwAKgZEACkHTgAnB1kAJgdlACQHdQAjB4cAIgebACAGsAAgBssA HwXtAB8G/gAfB/8AgA4AAG0RAABeEgAAUhMAAEgTAABBEwAAOxMAADcSAAA0EQAAMhAAADAPAQAw DQYAMAsLAC8KEAAtChQALAsZACoLHwApCyUAKAwrACcMMgAmDDoAJAxDACMMTQAhDVgAIA1lAB4N dQAcDYgAGg2cABkNsQAYDMoAFwzrABcN/AAYDP8AexEAAGkTAABaFQAAThYAAEUWAAA9FgAAOBUA ADMVAAAwFAAALRMAACsSAAAqEAMAKg8IACkODQAoDhEAJg4WACUPHQAkDyMAIw8pACEQMQAgEDkA HhBCAB0QTAAbEFgAGRBmABcQdgAVEIkAFBCeABIQswAREM4AERDuABIQ/gASEP8AdxMAAGUVAABX FwAASxgAAEIZAAA6GQAANBgAADAXAAAsFwAAKRYAACcVAAAmFAEAJRIEACMSCwAiEg8AIRIUACAS GgAeEyAAHRMnABwTLgAaEzYAGRRAABcUSgAWFFYAFBRkABIUdAARFIcAEBScAA4UsQANFMoADRTr AA4T/gAOE/8AcxUAAGEYAABTGgAASBsAAD8bAAA3GwAAMhoAAC0aAAApGQAAJhgAACQYAAAiFwAA IBYBAB4WCAAdFg0AGxcSABoXFwAZFx0AGBgkABYYKwAVGDQAFBg9ABIZSAARGVQAEBliAA4ZcgAN GYQADBmYAAoZrQAJGMYACRjnAAkY+gAKF/8AbxgAAF4aAABQHAAARR0AADwdAAA1HQAALx0AACoc AAAmGwAAIxsAACEaAAAeGgAAHBoAABobBQAYGwwAFhwQABUcFQAUHBsAExwiABIdKQARHTEAEB07 AA4dRQANHlEADB5eAAoebQAJHoAABx6UAAUdqgADHcIAAx3mAAQc+AAFHP8AaxoAAFsdAABNHgAA Qh8AADofAAAyHwAALR8AACgeAAAkHgAAIR0AAB4dAAAcHQAAGB4AABUfAgATIAkAEiEOABAhEgAQ IRgADiEfAA4iJgANIi4ADCI3AAoiQQAJIk0AByJaAAUiaQADInwAASKRAAAiqAAAIcAAACHlAAAg +AAAIP8AZx0AAFcfAABKIQAAQCEAADciAAAwIQAAKiEAACYgAAAiIAAAHx8AABwfAAAZIAAAFiEA ABIjAgAQJAcADiYMAAwmEAALJhUACiYcAAkmIgAIJioABiczAAQnPQADJ0kAASdWAAAnZgAAJ3kA ACePAAAmpgAAJr8AACXkAAAl+QAAJP8AYyAAAFQiAABHIwAAPSQAADQkAAAuIwAAKCMAACQiAAAh IgAAHiEAABoiAAAXIwAAEyQAABAmAgAOKAcACyoLAAgrDgAGKxMABCsYAAIrHwABLCcAACwwAAAs OgAALEUAACxTAAAsYwAALHYAACyMAAArpAAAK74AACrkAAAq+gAAKf8AXyMAAFAlAABEJgAAOiYA ADImAAArJgAAJiUAACMkAAAfJAAAGyQAABclAAAUJwAAESkAAA4rAgALLQYABy8LAAQwDgAAMBEA ADEVAAAxHAAAMSMAADIsAAAyNgAAMkIAADJPAAAyXwAAMnIAADGJAAAxogAAMLwAADDkAAAv+wAA L/8AWicAAEwoAABAKQAANykAAC8pAAApKAAAJScAACEmAAAcJwAAGCgAABQqAAARLAAADi4AAAsw AQAHMgUAAzQJAAA1DAAANg8AADcSAAA4GAAAOCAAADgoAAA4MgAAOT0AADlLAAA5WwAAOG4AADiF AAA3nwAAN7oAADbkAAA1/AAANf8AVSoAAEgsAAA9LAAANCwAAC0rAAAoKgAAJCkAAB4qAAAZKwAA FC0AABEvAAANMQAACjQAAAc2AAACOAQAADoHAAA7CgAAPQ0AAD4QAABAFAAAQBsAAEAkAABALgAA QDkAAEBHAABAVgAAQGkAAECAAAA/mwAAPrcAAD3jAAA8/AAAPP8AUC8AAEMvAAA5LwAAMi8AACwt AAAnLAAAIC0AABovAAAVMQAAETMAAA02AAAJOAAABTsAAAA9AAAAQAEAAEEEAABDBwAARQsAAEYO AABIEQAAShYAAEoeAABKKAAASjQAAElCAABJUQAASWQAAEh7AABIlwAAR7QAAEbgAABF/AAARP8A SjMAAD8zAAA2MwAAMDEAACowAAAjMQAAHDMAABY1AAAROAAADTsAAAg+AAADQQAAAEMAAABGAAAA SAAAAEoAAABMBAAATgcAAE8LAABRDgAAVBIAAFUZAABVIgAAVC4AAFQ8AABUSwAAU14AAFN0AABS kAAAUa4AAFDXAABP+wAATv8ARTcAADw3AAA1NgAALzQAACY1AAAeNwAAFzoAABE9AAAMQQAAB0QA AABIAAAASgAAAE0AAABQAAAAUwAAAFUAAABXAAAAWAIAAFsGAABdCwAAXw4AAGITAABiGwAAYicA AGI0AABhRQAAYFcAAGBtAABfiQAAXacAAFzMAABa+AAAWf8AQTwAADo7AAA0OQAAKjoAACE8AAAY QAAAEUMAAAxHAAAGSwAAAE8AAABTAAAAVgAAAFkAAABcAAAAXwAAAGEAAABjAAAAZQAAAGcBAABq BQAAbQoAAHAOAABzFQAAciAAAHItAABxPQAAcE8AAG9lAABugAAAbZ8AAGvBAABp8QAAaP8AP0AA ADk+AAAuPwAAJEIAABpGAAASSgAADE8AAARUAAAAWAAAAF0AAABhAAAAZQAAAGgAAABrAAAAbgAA AHEAAABzAAAAdQAAAHgAAAB7AAAAfgMAAIEKAACFDwAAhxcAAIYkAACFNAAAhEYAAIJdAACBdgAA f5YAAH62AAB85wAAev8AP0QAADNFAAAoSAAAHUwAABNSAAAMVwAAA10AAABjAAAAaAAAAG0AAABx AAAAdgAAAHoAAAB+AAAAgQAAAIMAAACGAAAAiQAAAIsAAACOAAAAkgAAAJUBAACZCQAAnhAAAJ4a AACdKQAAnDwAAJpSAACYbAAAlosAAJSqAACS1AAAkPoAOEsAACxOAAAgUwAAFVkAAA1gAAADZwAA AG4AAAB0AAAAegAAAIAAAACEAAAAigAAAI4AAACSAAAAlQAAAJcAAACaAAAAnQAAAKAAAACjAAAA pwAAAKsAAACvAAAAtAkAALgQAAC3HgAAtTAAALNGAACxYAAAr34AAKygAACrwQAAqe4AMVUAACRb AAAYYQAADmkAAAVxAAAAeQAAAIEAAACIAAAAjwAAAJQAAACaAAAAnwAAAKQAAACoAAAAqQAAAKwA AACvAAAAswAAALUAAAC5AAAAvQAAAMEAAADGAAAAywAAANEKAADTFAAA0SUAANA7AADNVAAAynEA AMiSAADFswAAw94AKWIAABxpAAARcQAAB3sAAACEAAAAjQAAAJUAAACdAAAAowAAAKkAAACvAAAA tAAAALkAAAC8AAAAvgAAAMIAAADFAAAAyAAAAMwAAADQAAAA1AAAANoAAADfAAAA5AAAAOoAAADu DAAA7RoAAOwvAADqSQAA6GUAAOaGAADkpQAA4sYA/wAAAP8AAAD/AAAA/AABAPwACAD+AA4A/wAU AP8AHQD/ACYA/wAwAP8AOgD/AEIA/wBJAP4AUAD7AFYA+QBcAPYAYgD0AGgA8gBvAPAAdgDtAH8A 6gCJAOcAlQDkAKMA4AC1ANsA0ADVAPYAygD/ALYA/wCoAP8AnwD/AJoA/wCWAP8A/wAAAPsAAAD2 AAAA8wAAAPMAAAD2AAkA+gAOAP0AFgD7ACAA9wAqAPIAMwDtADsA6QBDAOYASQDiAE8A3gBVANsA WwDWAGAA0gBnAM8AbgDMAHYAyQCAAMYAjADCAJoAvwCqALsAwQC4AOkAtgD/AKcA/wCaAP8AkgD/ AI0A/wCKAP8A+gAAAPEAAADqAAAA5wAAAOcAAADkAAEA4AALANsAEQDaABoA2wAjANEALADKADQA xgA7AMIAQgC/AEgAvABOALoAUwC4AFkAtgBfALMAZgCxAG4ArgB3AKwAgwCpAJEApgChAKMAtQCg ANgAngD7AJUA/wCLAP8AhQD/AIAA/wB+AP8A7wAAAOMAAADaAAAA0wAAAMYAAAC/AAAAuQAGALcA DgC0ABQAtAAdALMAJQCuAC0AqwA0AKcAOwCkAEEAoQBGAJ8ATACdAFEAmwBXAJkAXgCXAGUAlQBu AJMAeQCQAIcAjgCXAIwAqQCJAMQAiADvAIUA/wB8AP8AdgD/AHMA/wByAP8A4AAAANAAAADGAAAA tgAAAKkAAAChAAAAnQABAJkACgCYABAAmAAWAJcAHgCUACYAkQAtAI8ANACMADoAigA/AIgARQCH AEoAhQBQAIMAVgCBAF4AgABmAH4AcQB8AH0AeQCNAHcAoAB1ALYAcwDfAHIA/wBuAP8AaQD/AGcA /wBlAP8AzAAAAL4AAACrAAAAnQAAAJMAAACKAAAAhQAAAIIABQCAAA0AfwARAH8AGACAACAAfQAm AHoALQB3ADMAdQA4AHQAPgByAEMAcABJAG8ATwBtAFYAbABeAGoAaABoAHUAZwCEAGUAlgBkAKsA YgDJAGEA9gBgAP8AXAD/AFsA/wBaAP8AvQAAAKkAAACXAAAAiQAAAH4AAAB4AAAAcwAAAG8AAQBt AAkAbAAOAGsAEwBrABkAagAgAGgAJgBmACwAZQAyAGMANwBiADwAYABCAF8ASABdAE8AXABXAFoA YQBZAG0AVwB7AFYAjgBVAKIAUwC7AFIA6QBSAP8AUAD/AE8A/wBPAP8ArQAAAJgAAACGAAAAeAAA AG4AAABnAAAAYwAAAGAAAABdAAUAXAALAFsAEABbABUAWwAbAFoAIQBYACYAVgAsAFQAMQBTADYA UgA8AFEAQgBPAEkATgBRAE0AWwBLAGYASgB0AEkAhQBIAJkARwCxAEYA2ABGAPwARQD/AEUA/wBF AP8AnwAAAIkAAAB4AAAAbAAAAGIAAABbAAAAVgAAAFMAAABRAAIATwAIAE8ADQBOABEATgAWAE0A HABMACEASgAmAEkALABIADEARwA3AEUAPQBEAEQAQwBMAEIAVQBAAGAAPwBuAD4AfgA9AJIAPACp ADsAxwA7APMAOwD/ADsA/wA8AP8AkwAAAH4AAABuAAAAYQAAAFgAAABRAAAATAAAAEkAAABHAAAA RQAFAEQACwBDAA4AQwASAEMAFwBCAB0AQAAiAD8AJwA+ACwAPQAyADsAOAA6AD8AOQBHADgAUAA3 AFsANQBoADQAeAAzAIwAMgCiADEAvAAxAOcAMQD/ADIA/wAzAP8AiQAAAHYDAABmBQAAWQcAAFAH AABJBgAAQwUAAEADAAA+AQAAPAADADsACAA6AA0AOgAQADkAFAA5ABkANwAeADYAIwA1ACgANAAu ADMANAAyADsAMABDAC8ATAAuAFcALQBkACwAcwArAIcAKgCcACkAtQApANwAKQD7ACkA/wAqAP8A gQQAAG4IAABfCgAAUwsAAEoLAABCCwAAPQoAADkJAAA2CAAANQUAADQCBgAzAAoAMgAOADEAEQAx ABUAMAAaAC8AHwAuACQALAAqACsAMAAqADcAKQA/ACgASQAnAFQAJgBgACQAbwAjAIIAIgCXACEA rgAhAMwAIQDzACEA/wAiAP8AewkAAGgMAABaDQAATg4AAEUOAAA9DgAAOA0AADMNAAAwDAAALgsA AC0JAwAtBggALAQMACsCDwAqARIAKQEXACgBHAAnACEAJgAnACUALQAkADQAIwE9ACIBRgAhAVEA HwFdAB4BbAAcAX8AGwCUABoAqgAaAMUAGgDrABkA/wAaAP8AdQwAAGQOAABVDwAAShAAAEAQAAA5 EAAAMxAAAC8PAAAsDgAAKQ4AACcNAQAnDAUAJwoKACYIDQAlBxAAJAYUACIGGQAhBh8AIAckAB8H KwAeBzIAHQc6ABwIRAAaCE8AGQhcABcIawAWCH0AFQeRABQHpwATBr8AEgXkABIF+gASBf8AcQ4A AF8QAABREQAARhIAAD0SAAA2EgAAMBIAACsRAAAoEQAAJRAAACMQAAAiDgQAIQ0HACEMCwAgCw4A HwsSAB0LFwAcDBwAGwwiABoMKQAZDDEAGAw5ABYNQwAVDU8AEw1cABINawAQDX4ADw2SAA4NpwAN DL4ADQzgAA0M9QANDP8AbRAAAFwRAABOEwAAQxQAADoUAAAyFAAALRQAACgTAAAlEwAAIhIAACAR AAAeEQMAHBAFABwPCAAbDwwAGg4QABkPFAAXDxoAFg8hABUQKAAUEDAAEhA5ABEQRAAQEFAADhBd AA0QawAMEHwACxCQAAkQpQAIELwABxDfAAcQ9AAHD/8AaREAAFgUAABLFQAAQBYAADcWAAAwFgAA KhYAACYVAAAiFQAAHxQAAB0TAAAaEwIAGRIEABcSBgAWEgoAFRIOABQSEgASEhgAERMeABETJQAQ Ey4ADhM3AA0UQAAMFEsACxRYAAkUZwAHFHgABhSNAAQUowADE7sAAhPdAAES9AACEv8AZRMAAFUW AABIFwAAPRgAADQYAAAtGAAAKBgAACMXAAAgFwAAHRYAABoVAAAYFQIAFhUEABQVBQASFggAERYN ABAXEAAOFxUADhcbAA0XIgAMFykACxgyAAkYPAAHGEcABRhUAAQYYwACGHUAARiLAAAXoQAAF7kA ABfdAAAW9QAAFv8AYRYAAFIYAABFGgAAOxoAADIaAAArGgAAJRoAACEZAAAeGAAAGxgAABgXAAAW FwIAFBcDABIYBQAQGQcADhsLAAwbDwALGxMAChsYAAgcHwAHHCYABRwvAAQcOAACHEQAAB1RAAAd YAAAHXIAAByIAAAcoAAAG7kAABveAAAa9gAAGv8AXhgAAE8aAABCHAAAOBwAAC8dAAApHAAAIxwA AB8bAAAcGgAAGRkAABcZAQAUGQIAEhoDABAbBAAOHQcADB4LAAkfDgAGIBEABSAWAAMgHAABISMA ACErAAAhNQAAIUAAACFOAAAhXQAAIW8AACGGAAAgngAAILgAAB/eAAAe+AAAHv8AWhsAAEsdAAA/ HgAANR8AAC0fAAAnHgAAIh0AAB4dAAAbHAAAGBsAABUbAAASHAAAEB0CAA4fBAAMIQYACSIKAAUj DQACJBAAACUTAAAlGQAAJiAAACYoAAAmMgAAJj0AACZKAAAmWgAAJmwAACaDAAAlnAAAJbcAACTf AAAj+QAAI/8AVR4AAEcgAAA8IQAAMiEAACshAAAlIAAAIB8AAB0eAAAaHQAAFh4AABMeAAAQIAAA DiEAAAwjAgAIJQUABScJAAAoCwAAKg4AACsRAAAsFgAALB0AACwlAAAsLgAALDoAACxHAAAsVgAA LGkAACyAAAArmgAAKrUAACnfAAAp+wAAKP8AUSIAAEQjAAA4JAAALyQAACgjAAAjIgAAHyEAABwg AAAXIAAAEyEAABAjAAAOJAAACyYAAAgoAAAEKgQAACwHAAAuCQAAMAwAADEPAAAzEwAAMxkAADMh AAAzKgAAMzUAADNDAAAzUgAAM2UAADJ7AAAylwAAMbMAADDeAAAv+wAALv8ATCUAAD8mAAA1JwAA LSYAACclAAAiJAAAHiMAABkjAAAUJAAAESYAAA4oAAALKgAABywAAAMvAAAAMQIAADMEAAA1BwAA NwoAADkNAAA6EAAAOxUAADsdAAA7JgAAOzEAADs+AAA7TgAAO2AAADp3AAA5kgAAOLAAADfbAAA2 /AAANf8ARykAADsqAAAyKgAAKykAACUnAAAhJgAAGycAABUoAAARKgAADiwAAAovAAAGMQAAATQA AAA2AAAAOAAAADsBAAA9BAAAPwcAAEEKAABDDgAARREAAEUYAABFIQAARSwAAEQ5AABESAAARFsA AENxAABCjQAAQasAAEDSAAA/+gAAPv8AQi0AADguAAAvLQAAKSsAACQqAAAdKgAAFywAABEuAAAN MQAACTQAAAQ3AAAAOgAAADwAAAA/AAAAQQAAAEQAAABGAAAASAMAAEoHAABMCwAATg4AAFATAABQ HAAAUCcAAE80AABPQwAAT1UAAE5qAABNhgAATKQAAErKAABJ+AAASP8APjIAADUxAAAuLwAAKS4A ACAuAAAZMQAAEjMAAA43AAAJOgAAAj0AAABAAAAARAAAAEcAAABJAAAATAAAAE8AAABRAAAAUwAA AFUBAABYBgAAWgsAAF0OAABfFQAAXiAAAF4sAABdPAAAXE4AAFtjAABafgAAWJ0AAFfAAABV8gAA VP8AOjYAADM0AAAtMgAAJDMAABs2AAATOQAADj0AAAhBAAAARQAAAEkAAABMAAAAUAAAAFMAAABW AAAAWQAAAFsAAABdAAAAYAAAAGIAAABlAAAAaAUAAGsLAABvEAAAbxgAAG4lAABtNAAAbUYAAGtb AABqdQAAaJQAAGa2AABk6QAAYv8AODkAADI3AAAoOQAAHjsAAP/i8ABJQ0NfUFJPRklMRQAHChU/ AAAORAAAB0kAAABNAAAAUgAAAFYAAABaAAAAXgAAAGIAAABlAAAAaAAAAGsAAABtAAAAcAAAAHMA AAB2AAAAeQAAAH0EAACBCwAAhREAAIQdAACCLAAAgD4AAH5UAAB+awAAe4oAAHqqAAB31gAAdf0A OD0AACw+AAAiQQAAF0YAAA9LAAAHUQAAAFcAAABcAAAAYgAAAGYAAABrAAAAbwAAAHQAAAB4AAAA ewAAAH4AAACAAAAAgwAAAIYAAACKAAAAjQAAAJEAAACWAwAAmwwAAJ0TAACbIQAAmjMAAJdJAACU YgAAk38AAJCgAACOxQAAjPMAMUQAACVIAAAaTQAAEFMAAAhaAAAAYQAAAGgAAABuAAAAdAAAAHkA AAB/AAAAhAAAAIkAAACNAAAAkQAAAJMAAACWAAAAmQAAAJ0AAACgAAAApAAAAKgAAACsAAAAsgMA ALcNAAC3FwAAtSgAALI+AACwVgAArHMAAKqUAACptAAApeUAKk8AAB5UAAASWwAACmIAAABqAAAA cwAAAHsAAACCAAAAiQAAAI4AAACUAAAAmgAAAJ8AAACkAAAApgAAAKkAAACtAAAAsAAAALMAAAC3 AAAAuwAAAMAAAADFAAAAywAAANEEAADVDgAA0x0AANAyAADNSwAAymYAAMaHAADCqQAAwcsAIlsA ABZiAAAMawAAAXQAAAB9AAAAhwAAAJAAAACXAAAAngAAAKQAAACrAAAAsQAAALYAAAC6AAAAvAAA AMAAAADEAAAAyAAAAMsAAADPAAAA1AAAANoAAADgAAAA5gAAAOsAAADxBgAA8BMAAO4nAADsPwAA 6lsAAOd6AADkmwAA4LsA/wAAAPsAAAD2AAAA8wAAAPQABQD2AAwA+gARAP8AGQD/ACIA/wAsAP8A NQD/AD0A/wBFAPwATAD6AFIA9wBYAPUAXgDzAGQA8QBqAO4AcgDsAHoA6QCFAOUAkQDhAKAA3QCy ANgAzgDSAPYAwQD/AK0A/wCeAP8AlgD/AJAA/wCMAP8A+gAAAPIAAADsAAAA6QAAAOkAAADsAAUA 8gAMAPgAEgD3ABsA9QAlAPAALgDrADcA5gA+AOIARQDdAEsA2ABQANMAVgDQAFwAzQBiAMoAagDI AHIAxQB8AMIAiAC+AJYAugCoALcAvwC0AOgArgD/AJ0A/wCQAP8AiAD/AIMA/wCAAP8A8AAAAOUA AADeAAAA2gAAANsAAADcAAAA2AAHANEADgDRABUA0gAeAMsAJwDFAC8AwAA3AL0APQC6AEQAtwBJ ALUATwCyAFUAsABbAK4AYQCsAGkAqQBzAKcAfwCkAI0AoQCeAJ4AsgCbANUAmQD8AIwA/wCCAP8A ewD/AHYA/wB0AP8A4gAAANMAAADKAAAAxwAAALwAAAC2AAAAsAABAK8ACwCsABEArQAYAK0AIACo ACgApAAvAKAANgCdADwAmwBCAJkARwCXAE0AlQBTAJMAWQCRAGEAjwBqAIwAdQCKAIMAiACUAIYA pwCDAMIAggDwAHwA/wBzAP8AbQD/AGoA/wBoAP8AzwAAAMEAAAC5AAAArQAAAKAAAACYAAAAlAAA AJEABgCQAA0AkAASAI8AGQCOACEAiwAoAIgALwCGADUAhAA6AIIAQACAAEUAfgBLAHwAUgB6AFkA eABiAHYAbAB0AHkAcgCJAHEAnQBvALQAbQDfAGwA/wBlAP8AYAD/AF4A/wBcAP8AvgAAALEAAACg AAAAkgAAAIkAAACCAAAAfAAAAHoAAQB4AAkAdwAOAHgAFAB3ABoAdAAhAHIAJwBwAC0AbgAzAGwA OABrAD4AaQBEAGgASgBmAFEAZABaAGMAZABhAHAAXwB/AF4AkwBdAKkAXADIAFsA9wBXAP8AVAD/ AFIA/wBRAP8AsAAAAJ8AAACNAAAAfwAAAHQAAABuAAAAagAAAGYAAABlAAQAYwALAGMAEABjABUA YwAbAGEAIQBfACcAXQAsAFwAMgBaADcAWQA9AFcAQwBWAEsAVQBTAFMAXABSAGgAUAB3AE8AiQBO AJ8ATQC6AEwA6QBLAP8ASQD/AEcA/wBHAP8AogAAAI0AAAB8AAAAbgAAAGUAAABeAAAAWQAAAFcA AABVAAEAVAAHAFMADQBTABEAVAAWAFIAGwBRACEATwAmAE4AKwBMADEASwA3AEoAPQBJAEQARwBM AEYAVgBEAGEAQwBwAEIAgQBBAJcAQACvAD8A1wA/AP8APgD/AD0A/wA+AP8AlAAAAH8AAABvAAAA YwAAAFkAAABRAAAATQAAAEoAAABIAAAARwAEAEcACgBGAA4ARgARAEcAFgBFABwARAAhAEIAJgBB ACsAQAAxAD4ANwA9AD4APABHADoAUAA5AFsAOABpADcAegA2AI8ANQCnADUAxgA0APUANAD/ADQA /wA1AP8AiAAAAHQAAABlAAAAWAAAAE8AAABIAAAAQwAAAD8AAAA9AAAAPAACADwABwA7AAwAOwAP ADsAEgA6ABcAOQAcADcAIQA2ACYANQAsADQAMgAzADkAMQBBADAASwAvAFYALgBjAC0AcwAsAIgA LACgACsAuwArAOoAKwD/ACsA/wAsAP8AfwAAAGwAAABdAQAAUQIAAEgDAABAAwAAOwIAADcAAAA0 AAAAMwAAADIABQAyAAkAMgANADEAEAAxABMAMAAYAC8AHQAtACIALAAoACsALgAqADUAKQA9ACgA RgAnAFEAJgBeACUAbgAkAIIAIwCZACMAswAiAN4AIgD/ACMA/wAkAP8AdwAAAGUEAABWBgAASwcA AEIIAAA6CAAANQcAADAGAAAtBQAALAMAACsAAwAqAAcAKQALACkADgApABEAKAAVACcAGQAmAB4A JQAkACQAKgAjADEAIgA5ACEAQwAgAE4AHwBaAB4AaQAdAHwAHACTABsArAAbAM0AGwD2ABsA/wAc AP8AcAUAAF8IAABRCgAARgsAAD0LAAA1CwAAMAsAACsKAAAoCQAAJQgAACQHAgAjBAYAIwIJACIB DAAiAA8AIQASACAAFgAfABsAHgAgAB0AJgAcAC4AGwA2ABoAPwAZAEoAGABXABcAZgAWAHgAFQCP ABUApgAUAMMAFADuABQA/wAVAP8AawgAAFsLAABNDAAAQg0AADkNAAAxDQAALA0AACcNAAAjDAAA IQwAAB8LAQAeCgUAHQgIAB0GCwAcBQ0AHAQQABsEFAAZBBgAGQQeABgEIwAXBCsAFgQzABUEPAAU BEcAEwNUABIDYwARA3UAEAKKABABogAPALwADwDlAA8A/gAQAP8AZwsAAFcNAABJDgAAPg8AADUP AAAuDwAAKA8AACQOAAAgDgAAHQ4AABsNAQAZDQQAGAwHABgLCQAXCQwAFwkOABYJEgAVCRYAFAkb ABMJIQASCSgAEgkwABEJOgAQCUUADwlSAA4JYQANCXMADAiIAAsInwAKB7cACgbbAAoF9gAKBP8A Yw0AAFMOAABGEAAAOxEAADIRAAArEQAAJRAAACEQAAAdEAAAGg8AABgPAQAWDgQAFQ4HABQNCQAT DQsAEwwNABIMEAARDBQAEAwZABAMHwAPDCcADg0vAA0NOQAMDUUACw1RAAkNYAAIDXEABg2GAAUN nQAEDLQAAwzSAAIM8QACC/8AXw4AAFAQAABDEQAAOBIAAC8SAAAoEgAAIxIAAB4RAAAbEQAAGBEA ABUQAgAUEAUAEhAHABEPCQAQDwoAEA4MAA4ODgAODxIADQ8XAAwQHQAMECQAChAsAAkQNgAIEEEA BhBOAAUQXQADEG8AARCEAAAQnAAAD7QAAA7UAAAO8wAADv8AXBAAAE0SAABAEwAANhQAAC0UAAAm FAAAIRMAABwTAAAZEgAAFhIAABQRAwASEQYAEREIABAQCgAOEAsADRELAAwRDQALEhEAChIVAAkS GgAIEiEABhMpAAUTMwADEz4AAhNLAAATWgAAE2wAABOCAAASmwAAErQAABHXAAAR9QAAEf8AWBIA AEkUAAA9FQAAMxYAACsWAAAkFQAAHxUAABoUAAAXFAAAFBMBABMSBAAREgcAEBIJAA4SCQANEgkA CxMKAAkUDQAHFQ8ABhYTAAQWGAADFh8AAhYnAAAXMAAAFzsAABdIAAAXWAAAF2oAABaAAAAWmQAA FbQAABXZAAAU9wAAE/8AVRQAAEYWAAA6FwAAMBgAACgYAAAiFwAAHRYAABkWAAAWFQAAExQDABIT BgAQEwcADxMHAA0UBwALFQgACRYJAAYYDAADGg4AARoRAAAaFgAAGxwAABskAAAbLQAAGzgAABtG AAAcVQAAG2cAABt9AAAblwAAGrMAABnbAAAY+QAAF/8AURYAAEMYAAA3GQAALhoAACYaAAAgGQAA GxgAABgXAAAVFgEAExUFABEVBAAPFQQADRYEAAsXBQAJGQYABhoIAAIcCgAAHg0AACAQAAAgEwAA IBkAACAhAAAhKgAAITUAACFCAAAhUgAAIGQAACB6AAAflQAAH7EAAB7bAAAd+gAAHP8ATRkAAD8b AAA0HAAAKxwAACQcAAAeGwAAGhoAABcYAAAUFwIAEhcCABAYAQANGQEACxoCAAgcAwAFHQQAAh8G AAAhCAAAIwsAACUOAAAmEQAAJhYAACYeAAAnJwAAJzIAACc/AAAmTgAAJmAAACZ3AAAlkgAAJK8A ACPaAAAi+wAAIf8ASB0AADweAAAxHwAAKB4AACIeAAAdHAAAGRsAABYaAAASGgAAEBsAAA0cAAAL HQAACB8AAAQhAAABIwIAACUEAAAnBgAAKQkAACwMAAAuDwAALhMAAC4aAAAuIwAALi4AAC47AAAu SgAALVwAAC1yAAAsjgAAK6wAACrUAAAp+wAAKP8ARCAAADghAAAuIQAAJiEAACAgAAAcHgAAGB0A ABQdAAAQHgAADh8AAAshAAAHIwAAAyUAAAAnAAAAKQAAACwBAAAuAwAAMAYAADMKAAA1DQAANhEA ADYXAAA2HwAANikAADY2AAA2RQAANVcAADVtAAA0iQAAMqgAADHPAAAw+gAAL/8APyQAADQkAAAr JAAAJCMAAB8hAAAbIAAAFiAAABEhAAAOIwAACiUAAAYoAAACKgAAAC0AAAAvAAAAMgAAADQAAAA3 AAAAOQMAADsGAAA+CgAAQA4AAEESAABBGgAAQCUAAEAxAABAQAAAP1IAAD5nAAA9ggAAPKIAADrH AAA5+AAAOP8AOigAADAoAAApJwAAIyUAAB8jAAAYJAAAEiUAAA4oAAAKKgAABS0AAAAwAAAAMwAA ADYAAAA4AAAAOwAAAD4AAABAAAAAQgAAAEUCAABHBgAASgoAAE0OAABNFQAATB8AAEwrAABLOgAA SkwAAElhAABIfAAAR5sAAEW/AABD8wAAQv8ANiwAAC0rAAAnKQAAIycAABsoAAAUKgAADi0AAAow AAAEMwAAADcAAAA6AAAAPQAAAEAAAABDAAAARgAAAEgAAABLAAAATQAAAFAAAABTAQAAVgYAAFkL AABbEAAAWxkAAFolAABZNAAAWEYAAFdaAABVdAAAVJMAAFK1AABQ6gAAT/8AMzAAACwuAAAnLAAA Hi0AABYvAAAQMgAACjYAAAM6AAAAPwAAAEIAAABGAAAASQAAAEwAAABPAAAAUgAAAFUAAABYAAAA WgAAAF0AAABgAAAAYwAAAGcGAABrDAAAbBIAAGseAABrLAAAaT0AAGdSAABmagAAZIkAAGGrAABf 3AAAXf8AMTMAACwxAAAiMgAAGTUAABE5AAAKPQAAAkIAAABHAAAATAAAAFAAAABUAAAAWAAAAFsA AABfAAAAYgAAAGUAAABoAAAAawAAAG4AAABxAAAAdQAAAHkAAAB9BgAAgg0AAIIWAACAJAAAfjUA AHxJAAB7YQAAeH8AAHafAABzxgAAcPcAMTYAACY4AAAcOwAAEkAAAAtFAAACSwAAAFEAAABWAAAA WwAAAGAAAABlAAAAaQAAAG4AAAByAAAAdgAAAHkAAAB8AAAAfgAAAIIAAACFAAAAiQAAAI4AAACT AAAAmAYAAJwOAACbGgAAmCsAAJZAAACSWQAAkXMAAI2VAACLtQAAiOgAKz4AACBBAAAVRwAADU0A AAJUAAAAWwAAAGEAAABoAAAAbgAAAHMAAAB5AAAAfgAAAIMAAACIAAAAjAAAAI8AAACSAAAAlQAA AJkAAACdAAAAoQAAAKUAAACqAAAAsAAAALcHAAC4EQAAtSEAALI1AACvTQAAqmkAAKiIAACmqAAA otEAI0gAABhOAAAOVAAABFwAAABkAAAAbQAAAHUAAAB8AAAAgwAAAIkAAACPAAAAlQAAAJsAAACg AAAAowAAAKYAAACpAAAArQAAALEAAAC1AAAAuQAAAL4AAADEAAAAygAAANIAAADaCgAA1hYAANIp AADOQQAAylwAAMV8AADCnQAAwb0AHFUAABFcAAAHZQAAAG4AAAB3AAAAfwAAAIgAAACQAAAAmAAA AJ8AAAClAAAArQAAALMAAAC4AAAAugAAAL4AAADCAAAAxgAAAMoAAADOAAAA0wAAANoAAADgAAAA 5wAAAO0AAADzAAAA9A4AAPIeAADvNgAA7FEAAOhuAADkkAAA37EAAAAAAAAAAAAAAAAAAAAAAAED BAUGCAkKCw0ODxESExQWFxgaGxwdHyAhIiQlJigpKistLi8wMjM0Njc4OTs8PT5AQUJERUZHSUpL TU5PUFJTVFVXWFlbXF1eYGFiY2VmZ2lqa2xub3Bxc3R1d3h5enx9foCBgoOFhoeIiouMjo+QkZOU lZaYmZqcnZ6foaKjpKanqKqrrK2vsLGztLW2uLm6u72+v8HCw8TGx8jJy8zNz9DR0tTV1tfZ2tvd 3t/g4uPk5ufo6evs7e7w8fL09fb3+fr7/P7///////////////////////////////////////// /////////////wAAAAAAAAAAAAAAAAAAAAABAwQFBggJCgsNDg8REhMUFhcYGhscHR8gISIkJSYo KSorLS4vMDIzNDY3ODk7PD0+QEFCREVGR0lKS01OT1BSU1RVV1hZW1xdXmBhYmNlZmdpamtsbm9w cXN0dXd4eXp8fX6AgYKDhYaHiIqLjI6PkJGTlJWWmJmanJ2en6Gio6Smp6iqq6ytr7Cxs7S1tri5 uru9vr/BwsPExsfIycvMzc/Q0dLU1dbX2drb3d7f4OLj5Obn6Onr7O3u8PHy9PX29/n6+/z+//// //////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAQME BQYICQoLDQ4PERITFBYXGBobHB0fICEiJCUmKCkqKy0uLzAyMzQ2Nzg5Ozw9PkBBQkRFRkdJSktN Tk9QUlNUVVdYWVtcXV5gYWJjZWZnaWprbG5vcHFzdHV3eHl6fH1+gIGCg4WGh4iKi4yOj5CRk5SV lpiZmpydnp+hoqOkpqeoqqusra+wsbO0tba4ubq7vb6/wcLDxMbHyMnLzM3P0NHS1NXW19na293e 3+Di4+Tm5+jp6+zt7vDx8vT19vf5+vv8/v////////////////////////////////////////// ////////////AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4v MDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdo aWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6Ch oqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna 29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/21mdDEAAAAAAwQhAAABAAAAAAAA AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhsc HR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RV VldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SFhoeIiYqLjI2O j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbH yMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8A AQECAgMDBAQFBgYHBwgICQkKCwsMDA0NDg8PEBARERITExQUFRYWFxcYGRkaGhscHB0eHh8gICEi IiMkJCUmJicoKSkqKywtLS4vMDEyMjM0NTY3ODk6Ozw9Pj9AQkNERUZISUpMTU9QUlNVV1haXF5g YmRmaGptb3F0dnl8foGDhomLjpCSlZeZm52foaOlp6iqrK2vsLKztba3ubq7vL2/wMHCw8TFxsfI ycrLzM3Nzs/Q0dLS09TV1tbX2NnZ2tvb3N3d3t/f4OHh4uPj5OXl5ubn6Ojp6err6+zs7e7u7+/w 8PHy8vPz9PT19vb39/j4+fn6+/v8/P39/v7/AAEBAgIDAwQEBQYGBwcICAkJCgsLDAwNDQ4PDxAQ ERESExMUFBUWFhcXGBkZGhobHBwdHh4fICAhIiIjJCQlJiYnKCkpKissLS0uLzAxMjIzNDU2Nzg5 Ojs8PT4/QEJDREVGSElKTE1PUFJTVVdYWlxeYGJkZmhqbW9xdHZ5fH6Bg4aJi46QkpWXmZudn6Gj paeoqqytr7Cys7W2t7m6u7y9v8DBwsPExcbHyMnKy8zNzc7P0NHS0tPU1dbW19jZ2drb29zd3d7f 3+Dh4eLj4+Tl5ebm5+jo6enq6+vs7O3u7u/v8PDx8vLz8/T09fb29/f4+Pn5+vv7/Pz9/f7+//+l JQb/pDAO/6Y6GP+xQyP/u0sy/8FVRf7DXlryxGVw5MJshte6cJnMsnSqw6t2t72mecK3oX3LsZ2C 06uaidyll5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5v+lJQb/pDAO/6Y6GP+xQyP/u0sy/8FVRf7DXlryxGVw5MJshte6cJnM snSqw6t2t72mecK3oX3LsZ2C06uaidyll5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5v+lJQb/pDAO/6Y6GP+xQyP/u0sy/8FV Rf7DXlryxGVw5MJshte6cJnMsnSqw6t2t72mecK3oX3LsZ2C06uaidyll5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5v+lJQb/ pDAO/6Y6GP+xQyP/u0sy/8FVRf7DXlryxGVw5MJshte6cJnMsnSqw6t2t72mecK3oX3LsZ2C06ua idyll5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5v+lJQb/pDAO/6Y6GP+xQyP/u0sy/8FVRf7DXlryxGVw5MJshte6cJnMsnSq w6t2t72mecK3oX3LsZ2C06uaidyll5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5v+lJQb/pDAO/6Y6GP+xQyP/u0sy/8FVRf7D XlryxGVw5MJshte6cJnMsnSqw6t2t72mecK3oX3LsZ2C06uaidyll5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5v+lJQb/pDAO /6Y6GP+xQyP/u0sy/8FVRf7DXlryxGVw5MJshte6cJnMsnSqw6t2t72mecK3oX3LsZ2C06uaidyl l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5v+lJQb/pDAO/6Y6GP+xQyP/u0sy/8FVRf7DXlryxGVw5MJshte6cJnMsnSqw6t2 t72mecK3oX3LsZ2C06uaidyll5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5v+lJQb/pDAO/6Y6GP+xQyP/u0sy/8FVRf7DXlry xGVw5MJshte6cJnMsnSqw6t2t72mecK3oX3LsZ2C06uaidyll5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5v+lJQb/pDAO/6Y6 GP+xQyP/u0sy/8FVRf7DXlryxGVw5MJshte6cJnMsnSqw6t2t72mecK3oX3LsZ2C06uaidyll5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5v+lJQb/pDAO/6Y6GP+xQyP/u0sy/8FVRf7DXlryxGVw5MJshte6cJnMsnSqw6t2t72m ecK3oX3LsZ2C06uaidyll5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5v+lJQb/pDAO/6Y6GP+xQyP/u0sy/8FVRf7DXlryxGVw 5MJshte6cJnMsnSqw6t2t72mecK3oX3LsZ2C06uaidyll5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5v+lJQb/pDAO/6Y6GP+x QyP/u0sy/8FVRf7DXlryxGVw5MJshte6cJnMsnSqw6t2t72mecK3oX3LsZ2C06uaidyll5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5v+lJQb/pDAO/6Y6GP+xQyP/u0sy/8FVRf7DXlryxGVw5MJshte6cJnMsnSqw6t2t72mecK3 oX3LsZ2C06uaidyll5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5v+lJQb/pDAO/6Y6GP+xQyP/u0sy/8FVRf7DXlryxGVw5MJs hte6cJnMsnSqw6t2t72mecK3oX3LsZ2C06uaidyll5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5v+lJQb/pDAO/6Y6GP+xQyP/ u0sy/8FVRf7DXlryxGVw5MJshte6cJnMsnSqw6t2t72mecK3oX3LsZ2C06uaidyll5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5v+lJQb/pDAO/6Y6GP+xQyP/u0sy/8FVRf7DXlryxGVw5MJshte6cJnMsnSqw6t2t72mecK3oX3L sZ2C06uaidyll5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5v+mJQb/pDAO/6c6GP+yQyL/vEsy/8NURfzGXVrxyGRx48Zqh9bA b5vLuHKswrF0urutd8S0qXvNq6N/1KKehduZmo7hmZqO4ZmajuGZmo7hmZqO4ZmajuGZmo7hmZqO 4ZmajuGZmo7hmZqO4ZmajuGZmo7hmZqO4ZmajuGZmo7hmZqO4f+mJQb/pTAO/6g6F/+zQyL/vksx /8VURfnJXFvvzWNx48xpiNXGbZzJv3CuvbZyurSwdcOrqnjKoqV80ZmhgdiQnYndkJ2J3ZCdid2Q nYndkJ2J3ZCdid2QnYndkJ2J3ZCdid2QnYndkJ2J3ZCdid2QnYndkJ2J3ZCdid2QnYndkJ2J3f+m JQb/pTAO/6o6F/+1QyL/wEsx/chTRfbNW1vt0WFy4dBnidHLa53CwG6ttrdxuKyxc8GjrHbImqh5 zpKkftSJoIXYiaCF2ImghdiJoIXYiaCF2ImghdiJoIXYiaCF2ImghdiJoIXYiaCF2ImghdiJoIXY iaCF2ImghdiJoIXYiaCF2P+nJQb/pTAO/6s6F/+2QyH/wUsx+stSRPPRWlrq2WBy3tZlicvMapy7 wW2rr7lwtqW0cr6cr3TElKt3youne8+EpIHUhKSB1ISkgdSEpIHUhKSB1ISkgdSEpIHUhKSB1ISk gdSEpIHUhKSB1ISkgdSEpIHUhKSB1ISkgdSEpIHUhKSB1P+nJQb/pjAO/606Fv+4QiH+xEow985S RPDWWFrn4F5y1tpkiMTNaZq0w2yoqLtvsp62cLqWsnLAjq52xoaqesp/p3/Of6d/zn+nf85/p3/O f6d/zn+nf85/p3/Of6d/zn+nf85/p3/Of6d/zn+nf85/p3/Of6d/zn+nf85/p3/Of6d/zv+oJQb/ pzAO/645Fv+6QiD7xkov9NNRQ+vdV1rj5lxxzttkh73PaZiuxWulor5ur5i5b7aQtXG8iLF0wYGu eMV7rH3Je6x9yXusfcl7rH3Je6x9yXusfcl7rH3Je6x9yXusfcl7rH3Je6x9yXusfcl7rH3Je6x9 yXusfcl7rH3Je6x9yf+oJAb/pzAN/7A5Ff+9Qh/3yUov79hQQubjVVnc6Ftwxt1jhbbRaJWnyGuh nMFtqpO8b7GKuXG2hLV0u32yd793sHzCd7B8wnewfMJ3sHzCd7B8wnewfMJ3sHzCd7B8wnewfMJ3 sHzCd7B8wnewfMJ3sHzCd7B8wnewfMJ3sHzCd7B8wv+pJAX/qDAN/7M5FP7AQh7zzUot6d1PQOHp U1nT6ltvv99jgq/TZ5Ghy2qdlsVtpY3Ab6uGvXGwf7pztXq3d7h0tXu7dLV7u3S1e7t0tXu7dLV7 u3S1e7t0tXu7dLV7u3S1e7t0tXu7dLV7u3S1e7t0tXu7dLV7u3S1e7t0tXu7dLV7u/+qJAX/qS8N /7Y4E/nEQR3t0kkr4uNNQNvvUljK7Vptt+Fif6jWZ42bz2qXkcltn4jFb6WCwnGpe790rXa9d7Bx u3uzcbt7s3G7e7Nxu3uzcbt7s3G7e7Nxu3uzcbt7s3G7e7Nxu3uzcbt7s3G7e7Nxu3uzcbt7s3G7 e7Nxu3uzcbt7s/+rJAX/qy8N/7o4EvPJQRvk2kko2OhMQM7zUVfA71lrruRheqDcZ4aU1GuQi89u l4TMcJx9yXOgeMZ1o3PEeKZuwnypbsJ8qW7CfKluwnypbsJ8qW7CfKluwnypbsJ8qW7CfKluwnyp bsJ8qW7CfKluwnypbsJ8qW7CfKluwnypbsJ8qf+tJAX/sC8L+8A4D+rQQRfa4kYozO5MQcP5UFW1 81hmpelhdJfhZ36N22uGhddvjH/UcpF60XWUdc94l3HNe5pszH6cbMx+nGzMfpxszH6cbMx+nGzM fpxszH6cbMx+nGzMfpxszH6cbMx+nGzMfpxszH6cbMx+nGzMfpxszH6cbMx+nP+vIwT/ti0J8cg2 DN3cPRPN6kYqwfZLQLb/T1Gq91hgm+9ha4/oaHSF5G17f+BxgHnedIN13HiGctp7iW7Yfotr1oKN a9aCjWvWgo1r1oKNa9aCjWvWgo1r1oKNa9aCjWvWgo1r1oKNa9aCjWvWgo1r1oKNa9aCjWvWgo1r 1oKNa9aCjf+xIwT6vywG49QvB87mOxbB80UrtP9JPaj/Tkye/VdYkfZhYYbxaWl/7W9ueep0cnXo d3Vx53p3buV9eWvkgHtp44R8aeOEfGnjhHxp44R8aeOEfGnjhHxp44R8aeOEfGnjhHxp44R8aeOE fGnjhHxp44R8aeOEfGnjhHxp44R8aeOEfP+1IgPryyIC0OMnB8LxOhm0/kIqpv9GOZv/TUWS/1ZP hv5iVn76alx393Bgc/V1Y2/zeGVt8nxnavF/aGjwgmpm74VrZu+Fa2bvhWtm74VrZu+Fa2bvhWtm 74VrZu+Fa2bvhWtm74VrZu+Fa2bvhWtm74VrZu+Fa2bvhWtm74VrZu+Fa/bCGwHU3xEBwu8mC7X8 Ohqn/z4nmf9EM43/Sz2F/1VFfP9hS3X/ak9w/3BSbP91VGr+eVZo/XxXZvx/WGT8glpj+4ZbY/uG W2P7hltj+4ZbY/uGW2P7hltj+4ZbY/uGW2P7hltj+4ZbY/uGW2P7hltj+4ZbY/uGW2P7hltj+4Zb Y/uGW9TPCgDE7RICtfsmDaj/NhmZ/zsjjP9BLID/SjR4/1M6cf9fP2z/aUNo/29FZf90R2P/d0hi /3tJYf9+Sl//gUpe/4RLXv+ES17/hEte/4RLXv+ES17/hEte/4RLXv+ES17/hEte/4RLXv+ES17/ hEte/4RLXv+ES17/hEte/4RLXv+ES/+fIgX/nS0M/544Ff+oQR7/sUkr/7ZTPP+4XU/7tmZj7rRv d+KsdYnYpHuZzpt/psiThLHCjYi5voiMv7qDkcW3f5fLtH2gz655pNGueaTRrnmk0a55pNGueaTR rnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0f+fIgX/nS0M/544Ff+oQR7/ sUkr/7ZTPP+4XU/7tmZj7rRvd+KsdYnYpHuZzpt/psiThLHCjYi5voiMv7qDkcW3f5fLtH2gz655 pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk 0f+fIgX/nS0M/544Ff+oQR7/sUkr/7ZTPP+4XU/7tmZj7rRvd+KsdYnYpHuZzpt/psiThLHCjYi5 voiMv7qDkcW3f5fLtH2gz655pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGu eaTRrnmk0a55pNGueaTRrnmk0f+fIgX/nS0M/544Ff+oQR7/sUkr/7ZTPP+4XU/7tmZj7rRvd+Ks dYnYpHuZzpt/psiThLHCjYi5voiMv7qDkcW3f5fLtH2gz655pNGueaTRrnmk0a55pNGueaTRrnmk 0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0f+fIgX/nS0M/544Ff+oQR7/sUkr /7ZTPP+4XU/7tmZj7rRvd+KsdYnYpHuZzpt/psiThLHCjYi5voiMv7qDkcW3f5fLtH2gz655pNGu eaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0f+f IgX/nS0M/544Ff+oQR7/sUkr/7ZTPP+4XU/7tmZj7rRvd+KsdYnYpHuZzpt/psiThLHCjYi5voiM v7qDkcW3f5fLtH2gz655pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTR rnmk0a55pNGueaTRrnmk0f+fIgX/nS0M/544Ff+oQR7/sUkr/7ZTPP+4XU/7tmZj7rRvd+KsdYnY pHuZzpt/psiThLHCjYi5voiMv7qDkcW3f5fLtH2gz655pNGueaTRrnmk0a55pNGueaTRrnmk0a55 pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0f+fIgX/nS0M/544Ff+oQR7/sUkr/7ZT PP+4XU/7tmZj7rRvd+KsdYnYpHuZzpt/psiThLHCjYi5voiMv7qDkcW3f5fLtH2gz655pNGueaTR rnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0f+fIgX/ nS0M/544Ff+oQR7/sUkr/7ZTPP+4XU/7tmZj7rRvd+KsdYnYpHuZzpt/psiThLHCjYi5voiMv7qD kcW3f5fLtH2gz655pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk 0a55pNGueaTRrnmk0f+fIgX/nS0M/544Ff+oQR7/sUkr/7ZTPP+4XU/7tmZj7rRvd+KsdYnYpHuZ zpt/psiThLHCjYi5voiMv7qDkcW3f5fLtH2gz655pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGu eaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0f+fIgX/nS0M/544Ff+oQR7/sUkr/7ZTPP+4 XU/7tmZj7rRvd+KsdYnYpHuZzpt/psiThLHCjYi5voiMv7qDkcW3f5fLtH2gz655pNGueaTRrnmk 0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0f+fIgX/nS0M /544Ff+oQR7/sUkr/7ZTPP+4XU/7tmZj7rRvd+KsdYnYpHuZzpt/psiThLHCjYi5voiMv7qDkcW3 f5fLtH2gz655pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55 pNGueaTRrnmk0f+fIgX/nS0M/544Ff+oQR7/sUkr/7ZTPP+4XU/7tmZj7rRvd+KsdYnYpHuZzpt/ psiThLHCjYi5voiMv7qDkcW3f5fLtH2gz655pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTR rnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0f+fIgX/nS0M/584Ff+qQB7/s0kr/7lSPP+7XE/6 umVk7bhteOGwc4vVqHmczJ99qsWXgbW/kYW+uoyJxbaHj8yyg5bSr4Gg1qd+otOnfqLTp36i06d+ otOnfqLTp36i06d+otOnfqLTp36i06d+otOnfqLTp36i06d+otOnfqLTp36i0/+fIgX/ni0M/6A3 FP+rQB7/tEkr/7tSPP+9W1D6vmRk7LxseeC1co3TrXeeyqR6rcKcfrm8loLDt5CHyrKLjNKuh5XY poOd2qGCodWhgqHVoYKh1aGCodWhgqHVoYKh1aGCodWhgqHVoYKh1aGCodWhgqHVoYKh1aGCodWh gqHVoYKh1f+gIgX/ni0M/6E3FP+sQB3/tkgr/71RPP/AWlD6wWNl7MFqet65cI/SsXWhyKh4sMCh e7y5m3/HtJaEz7CUjdWrkZfaoImc3JqIoNeaiKDXmoig15qIoNeaiKDXmoig15qIoNeaiKDXmoig 15qIoNeaiKDXmoig15qIoNeaiKDXmoig1/+gIgX/ni0M/6I3FP+tQB3/t0gq/79RPP/CWlD5xGJl 68Vpe96+bpDRtnOjxq52s76necC4o3/JtKGGz6ycjdWjlpTampGc3JWOn9iVjp/YlY6f2JWOn9iV jp/YlY6f2JWOn9iVjp/YlY6f2JWOn9iVjp/YlY6f2JWOn9iVjp/YlY6f2P+gIgX/ny0M/6M3FP+u QB3/uEgq/8FQPP7FWVD3yGBm68pnfN3DbZHPvHGlxbR0tb2wecC2rH/IrqeFz6WhitWcnJHalZmc 3I+Un9iPlJ/Yj5Sf2I+Un9iPlJ/Yj5Sf2I+Un9iPlJ/Yj5Sf2I+Un9iPlJ/Yj5Sf2I+Un9iPlJ/Y j5Sf2P+hIgX/ny0M/6Q3FP+wPxz/ukgq/8NQO/vIWFD1y19m6c9mfNzJa5LOw2+mwbpytbaydsCs rHvIpKh/zpykhdSUoI3YjZ+Z24qcn9iKnJ/Yipyf2Iqcn9iKnJ/Yipyf2Iqcn9iKnJ/Yipyf2Iqc n9iKnJ/Yipyf2Iqcn9iKnJ/Yipyf2P+hIgX/oC0M/6Y2E/+xPxz/u0gp/sZPO/jLV1Dy0F5m59Rk fdrPaZPIxW2murtwtK2zc7+jrXbHmqh6zZKlf9KKoobXhKCR2YSinNeEopzXhKKc14SinNeEopzX hKKc14SinNeEopzXhKKc14SinNeEopzXhKKc14SinNeEopzXhKKc1/+hIgX/oC0M/6c2E/+zPxz/ vUcp/MhOO/XOVk/u1V1m5NpifdPSaJLBxmyks7xvsaa1crycr3TEk6t3youne8+DpIHUfaKL1nuj ldV7o5XVe6OV1XujldV7o5XVe6OV1XujldV7o5XVe6OV1XujldV7o5XVe6OV1XujldV7o5XVe6OV 1f+iIQX/oC0M/6g2Ev+0Pxv/v0co+ctOOvLTVU/q3Ftm4OBhfczTZ5G7yGuirL5ur6C3cLiVsnPA ja52xYWqesp+qH/OeKaH0XWlj9J1pY/SdaWP0nWlj9J1pY/SdaWP0nWlj9J1pY/SdaWP0nWlj9J1 pY/SdaWP0nWlj9J1pY/SdaWP0v+iIQX/oSwL/6o2Ev+2Phv9wkco9c1OOe7ZVE7m41ll2OJge8XV Zo+0ymqfpcFtq5m6b7SQtXK7iLF1wIGueMV6rH3JdKqEy3Gpi8xxqYvMcamLzHGpi8xxqYvMcamL zHGpi8xxqYvMcamLzHGpi8xxqYvMcamLzHGpi8xxqYvMcamLzP+jIQX/oiwL/6w1Ef+5Phr5xUcn 8NFNOOngUkzi6VdkzuRfer3XZoytzGqbn8Rsp5O+b6+KuXG1g7Z0unyzd752sXzCca+CxG6uh8Zu rofGbq6Hxm6uh8ZurofGbq6Hxm6uh8ZurofGbq6Hxm6uh8ZurofGbq6Hxm6uh8ZurofGbq6Hxv+k IQX/oywL/681EP+8Phj0yUYl6thNNuLnT0zc71VjxuZfeLTaZYml0GmWmMhsoY3Db6iFv3Gufrt0 sni5d7Zzt3u5brWAvGu0hb5rtIW+a7SFvmu0hb5rtIW+a7SFvmu0hb5rtIW+a7SFvmu0hb5rtIW+ a7SFvmu0hb5rtIW+a7SFvv+lIQT/pCwL/7M1D/vBPhftz0Yi4d9LNNjrT0zP81RivOhedKveZISd 1GmQkc5tmYfJb6CAxXKlesJ0qXTAeKxwvnuva7yAsmi7hLNou4SzaLuEs2i7hLNou4SzaLuEs2i7 hLNou4SzaLuEs2i7hLNou4SzaLuEs2i7hLNou4SzaLuEs/+mIQT/qCsK/7g0DfPHPRTk2EUe1uZJ NcvxTkzE91NfsexdcKHiZH2V22mHitVuj4LQcZV7zXSadst3nXHJeaBtx32iacWBpWbEhaZmxIWm ZsSFpmbEhaZmxIWmZsSFpmbEhaZmxIWmZsSFpmbEhaZmxIWmZsSFpmbEhaZmxIWmZsSFpv+oIAT/ rioI/L8zC+nPPBDX4UIeyu1JNb/4TUq3+1JbpvFdaZjpZXSM4mp9g91vhHzac4l313eMc9V6j2/T fZFs0YCUaNCElmXPh5dlz4eXZc+Hl2XPh5dlz4eXZc+Hl2XPh5dlz4eXZc+Hl2XPh5dlz4eXZc+H l2XPh5dlz4eXZc+Hl/+qIAP/tSkG8MgxB9rdMwzL6kIhvvZINbL/TEap/1FVm/ddYI7wZWqF62xx fedxdnfkdnpz4nl9b+F8f2zfgIFp3oODZ92HhWXciYZl3ImGZdyJhmXciYZl3ImGZdyJhmXciYZl 3ImGZdyJhmXciYZl3ImGZdyJhmXciYZl3ImGZdyJhv+tHwP5vyUD39YiAsvoMg++9EEisP9FM6T/ SkGc/1FNj/5dVoX5Zl599G5kdvJzaHLveGtu7nxtbO1/b2rsgnBn6oVyZeqJc2PpjHRj6Yx0Y+mM dGPpjHRj6Yx0Y+mMdGPpjHRj6Yx0Y+mMdGPpjHRj6Yx0Y+mMdGPpjHRj6Yx0Y+mMdP+2HALozRQB zOYdBL7zMRKx/z4io/9CL5b/SDqN/1BEhP9cS3v/Z1F0/m5Wb/xzWWz7eFtp+XxdZ/h/Xmb4g19k 94ZgYvaJYWH2jGJh9oxiYfaMYmH2jGJh9oxiYfaMYmH2jGJh9oxiYfaMYmH2jGJh9oxiYfaMYmH2 jGJh9oxiYfaMYvPEDwDO2gsAvfMdB7H/MhSj/zoflf8/Kon/RjOA/086eP9bQHH/ZkVs/21IaP9z Smb/d0xk/3tNYv9/TmH/gk9g/4VQXv+JUV7/i1Fe/4tRXv+LUV7/i1Fe/4tRXv+LUV7/i1Fe/4tR Xv+LUV7/i1Fe/4tRXv+LUV7/i1Fe/4tRXv+LUczLCQC+5gwBr/8eCaT/MBOV/zUch/88JHz/RCtz /00xbP9YNWf/Yzlj/2s7Yf9xPV//dT5d/3k/XP98QFv/f0Fa/4JBWf+GQlj/iEJY/4hCWP+IQlj/ iEJY/4hCWP+IQlj/iEJY/4hCWP+IQlj/iEJY/4hCWP+IQlj/iEJY/4hCWP+IQv+ZHwX/lisL/5U2 Ev+gPhr/qEcm/65RNP+vW0X/rWVX+KlvaO2jeHnjm3+H25KFlNSLjJ7PhZGmy4CVrMd8mbHFeZ61 wnajucB0qry9cbK+uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5 b7G/uW+xv/+ZHwX/lisL/5U2Ev+gPhr/qEcm/65RNP+vW0X/rWVX+KlvaO2jeHnjm3+H25KFlNSL jJ7PhZGmy4CVrMd8mbHFeZ61wnajucB0qry9cbK+uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+x v7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv/+ZHwX/lisL/5U2Ev+gPhr/qEcm/65RNP+vW0X/rWVX +KlvaO2jeHnjm3+H25KFlNSLjJ7PhZGmy4CVrMd8mbHFeZ61wnajucB0qry9cbK+uW+xv7lvsb+5 b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv/+ZHwX/lisL/5U2Ev+g Phr/qEcm/65RNP+vW0X/rWVX+KlvaO2jeHnjm3+H25KFlNSLjJ7PhZGmy4CVrMd8mbHFeZ61wnaj ucB0qry9cbK+uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/ uW+xv/+ZHwX/lisL/5U2Ev+gPhr/qEcm/65RNP+vW0X/rWVX+KlvaO2jeHnjm3+H25KFlNSLjJ7P hZGmy4CVrMd8mbHFeZ61wnajucB0qry9cbK+uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lv sb+5b7G/uW+xv7lvsb+5b7G/uW+xv/+ZHwX/lisL/5U2Ev+gPhr/qEcm/65RNP+vW0X/rWVX+Klv aO2jeHnjm3+H25KFlNSLjJ7PhZGmy4CVrMd8mbHFeZ61wnajucB0qry9cbK+uW+xv7lvsb+5b7G/ uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv/+ZHwX/lisL/5U2Ev+gPhr/ qEcm/65RNP+vW0X/rWVX+KlvaO2jeHnjm3+H25KFlNSLjJ7PhZGmy4CVrMd8mbHFeZ61wnajucB0 qry9cbK+uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+x v/+ZHwX/lisL/5U2Ev+gPhr/qEcm/65RNP+vW0X/rWVX+KlvaO2jeHnjm3+H25KFlNSLjJ7PhZGm y4CVrMd8mbHFeZ61wnajucB0qry9cbK+uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5 b7G/uW+xv7lvsb+5b7G/uW+xv/+ZHwX/lisL/5U2Ev+gPhr/qEcm/65RNP+vW0X/rWVX+KlvaO2j eHnjm3+H25KFlNSLjJ7PhZGmy4CVrMd8mbHFeZ61wnajucB0qry9cbK+uW+xv7lvsb+5b7G/uW+x v7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv/+ZHwX/lisL/5U2Ev+gPhr/qEcm /65RNP+vW0X/rWVX+KlvaO2jeHnjm3+H25KFlNSLjJ7PhZGmy4CVrMd8mbHFeZ61wnajucB0qry9 cbK+uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv/+Z HwX/lysL/5c2Ev+hPhr/qkYl/7BQNP+xWkX/sGRX96xtaeynd3vhnn2K2ZaDl9GOiaLLiI6rx4KT scR+l7fBepy7vneiv7x1qsK1ca7Ds3KvwbNyr8Gzcq/Bs3KvwbNyr8Gzcq/Bs3KvwbNyr8Gzcq/B s3KvwbNyr8Gzcq/Bs3Kvwf+ZHwX/lyoK/5g1Ev+jPRr/rEYl/7NPNP+0WUb/tGNY9rFsa+qtdX3f o3uN1ZuBnM2ShqjHi4qxwoWPub+AlL67fJrDuXmhx7V2qcqtdazGq3atxKt2rcSrdq3Eq3atxKt2 rcSrdq3Eq3atxKt2rcSrdq3Eq3atxKt2rcSrdq3Eq3atxP+aHwT/mCoK/5o0Ev+lPRn/rkYl/7VO NP+3WEb/t2FZ9bVqbOmyc3/dqHiQ059+oMqWgqzEjoe3voiMv7qDkcW3f5jLtHyhz6t4pc+learI pHmsxqR5rMakeazGpHmsxqR5rMakeazGpHmsxqR5rMakeazGpHmsxqR5rMakeazGpHmsxv+aHwT/ mCoK/5s0Ef+mPRn/r0Ul/7dONP+6V0b/u2BZ9Llpbee2cYHcrHaT0KR7o8iaf7HAk4S8u4yJxbeI kMu0hpnOsoak0aR8pNGffanKnn2qyJ59qsiefarInn2qyJ59qsiefarInn2qyJ59qsiefarInn2q yJ59qsiefarInn2qyP+bHwT/mSoK/5w0Ef+nPBn/sUUk/7lNNP+8V0b+vl9Z9L1nbue6b4LasXSV z6h5psWffbS+l4HAuZSKxrWRksuvjZjPqoqh0p6Co9OZgajMmIKpypiCqcqYgqnKmIKpypiCqcqY gqnKmIKpypiCqcqYgqnKmIKpypiCqcqYgqnKmIKpyv+bHwT/mSoK/500Ef+pPBj/skUk/7tNM/+/ Vkb9wV5a88Fmb+a/bYPZtnOXza13qMSle7e+oYPAtpuJxq6Vj8yokZXPoo6e0pmHotOUhqfNk4ao y5OGqMuThqjLk4aoy5OGqMuThqjLk4aoy5OGqMuThqjLk4aoy5OGqMuThqjLk4aoy/+bHwT/mSoK /54zEf+qPBj/s0Uk/7xMM//BVUb7xF1a88Vlb+XDbITYu3GYzLJ1q8OtfLa5pYG/sJ6GxqiZjMuh lZLQm5Kb05SOotSPiqbOj4qoy4+KqMuPiqjLj4qoy4+KqMuPiqjLj4qoy4+KqMuPiqjLj4qoy4+K qMuPiqjLj4qoy/+bHwT/mioK/58zEP+rPBj/tUQj/75MM/7DVUX5x1xa8clkb+XIaoXWwW+ayrl0 qr6werazqX+/qqKExqKdisubmpDPlZeZ0o+UotSKkKbOio+ozIqPqMyKj6jMio+ozIqPqMyKj6jM io+ozIqPqMyKj6jMio+ozIqPqMyKj6jMio+ozP+cHwT/mioK/6AzEP+sPBj/tkQj/79MMvzGVEX2 ylxa781icOTNaIbTxW2axbxzqrm0eLWurX2+paeCxZ2iiMuVn47Pj5yW0oucotOGlabOhpSnzIaU p8yGlKfMhpSnzIaUp8yGlKfMhpSnzIaUp8yGlKfMhpSnzIaUp8yGlKfMhpSnzP+cHwT/mikK/6Iz EP+tOxf/t0Qj/8FMMvnJU0XzzVpa7NJgcODQZobOyGyawL9xqbS4d7WpsXy+n6yBxZeohsqQpIzO iqKV0YWiodKBnKbOgZqnzIGap8yBmqfMgZqnzIGap8yBmqfMgZqnzIGap8yBmqfMgZqnzIGap8yB mqfMgZqnzP+cHgT/mykK/6MzEP+vOxf/uUQi/cNLMfbMUkTw0llZ6NpfcNvVZIbJzGqZusNvqK27 dLSitHm9mK99w5Csg8iJqYnMg6eRz36mnNB9pKbNfKKoy3yiqMt8oqjLfKKoy3yiqMt8oqjLfKKo y3yiqMt8oqjLfKKoy3yiqMt8oqjLfKKoy/+dHgT/mykK/6UyD/+xOxb/vEQh+sZLMfPRUUPr2ldZ 499db9PbY4XCz2mXscRtp6S8cLKYtXS7jrF4woatfcaAq4LKeqmKzXaolM52qaPMd6uoynerqMp3 q6jKd6uoynerqMp3q6jKd6uoynerqMp3q6jKd6uoynerqMp3q6jKd6uoyv+dHgT/nCkK/6cyD/+z Oxb/vkMg9cpLL+7WUELm4VZX3ORbbsveY4O60WiUqcdso5u+bq6QuHG3hrR0vX6weMJ3rnzGcqyD yW2rjMptq5nJbqyfx26sn8durJ/Hbqyfx26sn8durJ/Hbqyfx26sn8durJ/Hbqyfx26sn8durJ/H bqyfx/+eHgT/nSkJ/6kyDv+2OhT6wkMf8M5KLufdT0Di6VJX0uhabcHgYoCx1GeRocprnpTDbqiJ vXGwgLl0tnm2d7p0tHu9brKBwGqwiMJnsJLDZrCWw2awlsNmsJbDZrCWw2awlsNmsJbDZrCWw2aw lsNmsJbDZrCWw2awlsNmsJbDZrCWw/+fHgT/nikJ/60xDf+6OhP0x0Id6NVKK9/kTD/X7FFWye5Z a7fjYXyo2GeLms9rl43JbqCDxHGne8B0rHW9eLBwu3uzbLmAtmi4hrhkt4+5Y7aRumO2kbpjtpG6 Y7aRumO2kbpjtpG6Y7aRumO2kbpjtpG6Y7aRumO2kbpjtpG6Y7aRuv+gHgT/oSgI/7EwC/vAORHs zkIZ399HKNPpTEDK8VFVvvJYaK3mYXee3WeEktVsj4fPb5Z+y3OceMh2oXLGeaRuxHynacKBqWbA hqxiv42tYb+PrmG/j65hv4+uYb+PrmG/j65hv4+uYb+PrmG/j65hv4+uYb+PrmG/j65hv4+uYb+P rv+iHQP/picH/7cvCfLHOA3h2EEU0uZGKsfwTEC++FBTsvVXY6LrYXCV42d7it1thIHYcYt61HWQ dNJ5k3DQfJZszn+ZaMyDm2TLiJ1hyo2fYMmPn2DJj59gyY+fYMmPn2DJj59gyY+fYMmPn2DJj59g yY+fYMmPn2DJj59gyY+fYMmPn/+kHQP/rSYF+74tBubQNAjT4jwWx+5GK7v5Sj6w/k9PpvpXXJjx YWiM62hxg+ZueHvic31133iBcd17hG3bf4dq2oOJZ9mGimTXi4xh1pCOYNWRjmDVkY5g1ZGOYNWR jmDVkY5g1ZGOYNWRjmDVkY5g1ZGOYNWRjmDVkY5g1ZGOYNWRjv+nHAP/tSMD7skmA9XfKQfH7DwZ uvhEK63/SDuj/01Jmv9XVI35YV2E9GplfPBwanbtdm5x63pxbel+dGvognZo5oV3ZuWIeWPkjHph 45F8YOOSfGDjknxg45J8YOOSfGDjknxg45J8YOOSfGDjknxg45J8YOOSfGDjknxg45J8YOOSfP+r GwL3wB0B2dwSAcfrKAq69zsarP9BKaD/RjaV/0xBjf9WS4P/YVJ7/WtXdPpxXG/4dl9s9nthafV/ Y2f0g2Rl84ZmY/KKZ2Hxjmhf8JJpX/CTal/wk2pf8JNqX/CTal/wk2pf8JNqX/CTal/wk2pf8JNq X/CTal/wk2pf8JNqX/CTav+3FQHWzwsAx+oTArn3KQ2s/zkanv8+JpL/RDCH/0s5gP9UQHj/YUZy /2pKbP9wTWn/dlBm/3tRZP9/U2P/g1Rh/4ZVYP6JVl7+jVdd/ZJYXP2TWFz9k1hc/ZNYXP2TWFz9 k1hc/ZNYXP2TWFz9k1hc/ZNYXP2TWFz9k1hc/ZNYXP2TWNbECADG1AkAuPcUBKv/KQ6e/zQYkP86 IYT/QSl6/0kwcv9SNmz/Xjpo/2g9ZP9vQGH/dEFf/3lDXv99RF3/gEVc/4RFW/+HRlr/ikdY/49H WP+QSFj/kEhY/5BIWP+QSFj/kEhY/5BIWP+QSFj/kEhY/5BIWP+QSFj/kEhY/5BIWP+QSMTHBwC3 2wcBqf8WBp//Kg2Q/zAVg/82HHf/PiJu/0coZv9QLGH/Wi9d/2QxW/9sM1n/cTVY/3U2Vv95Nlb/ fDdV/383VP+COFP/hTlS/4k5Uv+KOVL/ijlS/4o5Uv+KOVL/ijlS/4o5Uv+KOVL/ijlS/4o5Uv+K OVL/ijlS/4o5Uv+KOf+SHQT/kCkJ/401EP+YOxf/oEQh/6ZOLf+nWTz/pWRM/6FuW/ebeGrulYF3 546JguGGj4vcgJWT2HybmdR4oJ7RdaSiz3Oppc1xrqjMb7Wqym2+rcNpva7Dab2uw2m9rsNpva7D ab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rv+SHQT/kCkJ/401EP+YOxf/oEQh/6ZOLf+n WTz/pWRM/6FuW/ebeGrulYF3546JguGGj4vcgJWT2HybmdR4oJ7RdaSiz3Oppc1xrqjMb7Wqym2+ rcNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rv+SHQT/kCkJ /401EP+YOxf/oEQh/6ZOLf+nWTz/pWRM/6FuW/ebeGrulYF3546JguGGj4vcgJWT2HybmdR4oJ7R daSiz3Oppc1xrqjMb7Wqym2+rcNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNp va7Dab2uw2m9rv+SHQT/kCkJ/401EP+YOxf/oEQh/6ZOLf+nWTz/pWRM/6FuW/ebeGrulYF3546J guGGj4vcgJWT2HybmdR4oJ7RdaSiz3Oppc1xrqjMb7Wqym2+rcNpva7Dab2uw2m9rsNpva7Dab2u w2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rv+SHQT/kCkJ/401EP+YOxf/oEQh/6ZOLf+nWTz/ pWRM/6FuW/ebeGrulYF3546JguGGj4vcgJWT2HybmdR4oJ7RdaSiz3Oppc1xrqjMb7Wqym2+rcNp va7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rv+SHQT/kCkJ/401 EP+YOxf/oEQh/6ZOLf+nWTz/pWRM/6FuW/ebeGrulYF3546JguGGj4vcgJWT2HybmdR4oJ7RdaSi z3Oppc1xrqjMb7Wqym2+rcNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7D ab2uw2m9rv+SHQT/kCkJ/401EP+YOxf/oEQh/6ZOLf+nWTz/pWRM/6FuW/ebeGrulYF3546JguGG j4vcgJWT2HybmdR4oJ7RdaSiz3Oppc1xrqjMb7Wqym2+rcNpva7Dab2uw2m9rsNpva7Dab2uw2m9 rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rv+SHQT/kCkJ/401EP+YOxf/oEQh/6ZOLf+nWTz/pWRM /6FuW/ebeGrulYF3546JguGGj4vcgJWT2HybmdR4oJ7RdaSiz3Oppc1xrqjMb7Wqym2+rcNpva7D ab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rv+THQT/kCkJ/480EP+a Oxf/okQg/6lNLf+qWDz/qGJM/6RsXPWfdmzsmX965JGHht6JjZDYg5OY036Zn9B6naTNdqKpy3Sn rMlxra/Hb7SywWy5tLxsu7G8bLuxvGy7sbxsu7G8bLuxvGy7sbxsu7G8bLuxvGy7sbxsu7G8bLux vGy7sf+UHQT/kSgJ/5EzEP+cOhb/pEMg/6xMLf+tVj3/rWBN/qlqXvSldG7qn3194ZaDi9mOipbT h5CgzoGVp8p8mq3HeJ+yxHWltsJyq7nAcLS7t261ubNvuLWzb7i1s2+4tbNvuLWzb7i1s2+4tbNv uLWzb7i1s2+4tbNvuLWzb7i1s2+4tf+UHQT/kigJ/5MyD/+eOhb/p0Mg/65LLf+xVT3/sF9O/a5o X/KqcnDnpHqB3pqAj9WSh5zOi4ymyYSRr8R+l7XBeZy7vnajv7x0q8K0b67DrnKzvKtztrirc7a4 q3O2uKtztrirc7a4q3O2uKtztrirc7a4q3O2uKtztrirc7a4q3O2uP+VHAT/kigJ/5UyD/+gOhb/ qUIf/7BKLf+0VD3/tF5O/bNnYPGvcHLmqXiD259+k9KXg6HLjomsxIaOtcCAlL28e5rDunqjxbd5 q8esc6zGp3Wxv6V3tbqld7W6pXe1uqV3tbqld7W6pXe1uqV3tbqld7W6pXe1uqV3tbqld7W6pXe1 uv+VHAT/kygJ/5YxD/+hORX/qkIf/7JKLP+2Uzz/t11O+7ZlYfC0bnTkrXWG2aR7ls+bgKXHkoWx wYqLu72HlMC7hZ3EtoKkx7B+qsild6rIoXmwwZ96s7yferO8n3qzvJ96s7yferO8n3qzvJ96s7yf erO8n3qzvJ96s7yferO8n3qzvP+VHAT/kygJ/5cxD/+jORX/rEIf/7RKLP+5Uzz/ulxO+LpkYu+4 bHXjsnOI2Kl5mc2ffqnFmIS0v5OMvLiNk8GziZnFroahyKqEqcmffKnKm32uwpl+sr2ZfrK9mX6y vZl+sr2ZfrK9mX6yvZl+sr2ZfrK9mX6yvZl+sr2ZfrK9mX6yvf+WHAT/kygJ/5gwDv+kORX/rUEe /7VJLP+7Ujz9vVtO9r1jYu69a3bitnGJ1a53m8ulfKrCnYO0uZaJvLKRkMGsjJbGp4mdyKOHpsqZ gKjLloGuxJWBsb6VgbG+lYGxvpWBsb6VgbG+lYGxvpWBsb6VgbG+lYGxvpWBsb6VgbG+lYGxvv+W HAT/lCcJ/5kwDv+lORT/rkEe/7dJK/+9UTz8v1pO9MFiYuzBaXfhu3CL0rF0nceoe6q8oIG0tJqH vKyUjcKmkJTGoI2byZyLpMuVhqjLkYWtxZCFsb+QhbG/kIWxv5CFsb+QhbG/kIWxv5CFsb+QhbG/ kIWxv5CFsb+QhbG/kIWxv/+WHAT/lCcI/5owDv+mOBT/sEEd/7hJK/+/UTz6wllO8sRhY+nFaHfd vm2MzbRzncKreaq3pH60rp2EvKaYisGglJHGmpGYyZaPocuQi6jMjImsxYyJsMCMibDAjImwwIyJ sMCMibDAjImwwIyJsMCMibDAjImwwIyJsMCMibDAjImwwP+XHAT/lScI/5swDv+nOBT/sUEd/7pJ K//CUDv4xlhO8MhfY+bIZnjYwWuNybdxnb2vd6myp3yzqaGCu6GciMGamI/GlJaWyZCUn8uLkajM h46sxoeNsMGHjbDBh42wwYeNsMGHjbDBh42wwYeNsMGHjbDBh42wwYeNsMGHjbDBh42wwf+XGwP/ lScI/50vDf+pOBP/s0Ad/7xIKvzFTzv2yVdO7c1eY+LLZHjSxGqMxLtvnLiydamtq3uzo6aAu5uh hsGUnY3FjpuUyIqZncqGmajLgpOsxoKSr8GCkq/BgpKvwYKSr8GCkq/BgpKvwYKSr8GCkq/BgpKv wYKSr8GCkq/BgpKvwf+XGwP/lScI/54vDf+qOBP/tUAc/75IKfnITjrzzVZN6tNcYt7PYnjNx2iL v75um7K3c6insHmynqt+upWnhMCOo4vEiKGSx4OfmsmAoKfKfZqsxn2Yr8F9mK/BfZivwX2Yr8F9 mK/BfZivwX2Yr8F9mK/BfZivwX2Yr8F9mK/BfZivwf+YGwP/licI/6AvDf+sNxL/t0Ab/cFIKPbL Tjnv01RM5tlaYtjUYXfHy2eKucNsmq28cqehtnexmLF9uI+tgr6IqonDgqiQxn2nmch6p6XJd6Ks xXifsMF4n7DBeJ+wwXifsMF4n7DBeJ+wwXifsMF4n7DBeJ+wwXifsMF4n7DBeJ+wwf+YGwP/lyYI /6IvDP+uNxL/uT8a+cRHJ/HOTTjq21NL4N9ZYNDaX3bB0GWJs8lrmabCcKWbvXWvkbh7toi1gLyB sobAe7CNw3aulsVzrqHGcq2txHKpsMByqbDAcqmwwHKpsMByqbDAcqmwwHKpsMByqbDAcqmwwHKp sMByqbDAcqmwwP+ZGwP/mCYI/6QuC/+xNhH+vT8Z9MhHJevUTTbl41BJ2eNXX8nfXnS612SGrM9p lp3HbaORwHGshrt1s363erl3tH+9crKFv22xjcFqsJfCabGlwWy0sr1stLK9bLSyvWy0sr1stLK9 bLSyvWy0sr1stLK9bLSyvWy0sr1stLK9bLSyvf+aGwP/mSYI/6ctCv+1Ng/5wT8X7s5GI+TcTDLd 509Jz+hWXsDkXXKy3mSCo9RpkZXLbZyJxXClf8BzrHe8d7FwuXy1a7eBuGe2h7pjtZC7YbWbvGO3 prljt6a5Y7emuWO3prljt6a5Y7emuWO3prljt6a5Y7emuWO3prljt6a5Y7emuf+bGwP/myUH/6st Cf+5NQ3yxz4V5dVGH9rjSTPP605Jxu1UXbfqXG6o4mN9mtlpio7SbZSEzHGbe8h1oXPEeKZuwnyp acCBrGW+h65ivY6wX72XsV68nrFevJ6xXryesV68nrFevJ6xXryesV68nrFevJ6xXryesV68nrFe vJ6xXryesf+cGgP/oCQG/7AsCPnANAvpzz0Q2t9CHc7pSTPE8U5Iu/JSWq3wW2me52N2kuBpgYfa b4l+1HOQd9F3lXHOe5lszH+caMqDnmTJiKBhx46iXsaVpFzGm6RcxpukXMabpFzGm6RcxpukXMab pFzGm6RcxpukXMabpFzGm6RcxpukXMabpP+eGgP/pSMF/7cqBfDIMgfc2zUMzudCH8LxSDS4+UxG r/dRVaL1W2KV7WRtiudrdoDicH153nWCc9t6h27Zfopr14KMZ9WGjmTUi5Bh05CSXtGWlFzRm5Vc 0ZuVXNGblVzRm5Vc0ZuVXNGblVzRm5Vc0ZuVXNGblVzRm5Vc0ZuVXNGblf+hGQL/rSED+L8mA+LU JQPO5TMPwvBCIbb6RzOr/ktCov5QT5f7W1qL9WVjgvBsanrscnB06Xh0b+d8d2zlgXpo44R8ZuKI fWPhjH9g4JGBXt+WglzemoNc3pqDXN6ag1zemoNc3pqDXN6ag1zemoNc3pqDXN6ag1zemoNc3pqD XN6ag/+jGQL/th0B6cwXAc/jHgPC8DMStfpAIqn/RDCd/0k9lf9QSIv/W1CC/WVXevltXXT2c2Fv 9Hlka/J+Z2jxgmlm8IZqZO+KbGLujm1g7ZJuXeyXcFzrm3Fc65txXOubcVzrm3Fc65txXOubcVzr m3Fc65txXOubcVzrm3Fc65txXOubcf+sFQHzwxAA0doLAMHvHwa0+zMTqP88IJv/QiyQ/0g2h/9P P3//WkZ4/2VLcf9tT2z/c1Jp/3lVZv5+V2T9glhi/IZZYfuKWl/6jlte+pJcXPmXXVv4m15b+Jte W/ibXlv4m15b+JteW/ibXlv4m15b+JteW/ibXlv4m15b+JteW/ibXvq5DgDNywkAwOYNAbL8IAin /zMTmv85HY3/PyaC/0Yuev9ONXP/WDpt/2M/af9sQmX/ckRi/3dGYP98R1//gUhd/4VJXP+ISlv/ jEta/5BMWP+VTVf/mU1X/5lNV/+ZTVf/mU1X/5lNV/+ZTVf/mU1X/5lNV/+ZTVf/mU1X/5lNV/+Z Tc3BBgC+0AcAsfYOAqX/IQmZ/y4SjP80GYD/OyB2/0Mnbf9MLGb/VDBi/2AzXv9pNVz/bzda/3Q4 Wf95OVj/fTpX/4A7Vv+EO1X/hzxU/4s9U/+QPVL/kz5S/5M+Uv+TPlL/kz5S/5M+Uv+TPlL/kz5S /5M+Uv+TPlL/kz5S/5M+Uv+TPr3FBQCw1wUAo/8QA5n/IgmL/ykPfv8wFXP/OBpp/0AfYv9JI1v/ USZX/1ooVf9iKlL/aStR/28sUP9zLU//dy5O/3ouTv99L03/gC9M/4QwS/+IMEv/izBL/4swS/+L MEv/izBL/4swS/+LMEv/izBL/4swS/+LMEv/izBL/4swS/+LMP+LHAT/iCgI/4Q0Dv+POhT/l0Ic /55LJ/+eVzT/nWJC/5ltT/+TeFz4jYJn8oiLceyCk3nofJmA5HiehuF0o4rfcaiO3W+ukdtts5Ta bLmW2GvCmNVpzJrMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm/+L HAT/iCgI/4Q0Dv+POhT/l0Ic/55LJ/+eVzT/nWJC/5ltT/+TeFz4jYJn8oiLceyCk3nofJmA5Hie huF0o4rfcaiO3W+ukdtts5TabLmW2GvCmNVpzJrMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcub zGXLm8xly5vMZcubzGXLm/+LHAT/iCgI/4Q0Dv+POhT/l0Ic/55LJ/+eVzT/nWJC/5ltT/+TeFz4 jYJn8oiLceyCk3nofJmA5HiehuF0o4rfcaiO3W+ukdtts5TabLmW2GvCmNVpzJrMZcubzGXLm8xl y5vMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm/+LHAT/iCgI/4Q0Dv+POhT/l0Ic/55L J/+eVzT/nWJC/5ltT/+TeFz4jYJn8oiLceyCk3nofJmA5HiehuF0o4rfcaiO3W+ukdtts5TabLmW 2GvCmNVpzJrMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm/+LHAT/ iCgI/4Q0Dv+POhT/l0Ic/55LJ/+eVzT/nWJC/5ltT/+TeFz4jYJn8oiLceyCk3nofJmA5HiehuF0 o4rfcaiO3W+ukdtts5TabLmW2GvCmNVpzJrMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXL m8xly5vMZcubzGXLm/+LHAT/iCgI/4Q0Dv+POhT/l0Ic/55LJ/+eVzT/nWJC/5ltT/+TeFz4jYJn 8oiLceyCk3nofJmA5HiehuF0o4rfcaiO3W+ukdtts5TabLmW2GvCmNVpzJrMZcubzGXLm8xly5vM ZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm/+LHAT/iSgI/4UzDv+QORT/mEIc/55LJ/+f VjT/nmFC/5ptUP+Vd133j4Fo8YmLcuuDknvnfZiC43idiOB0o4zdcqiQ22+tk9pus5bYbLqY1mvC m9FpypzKZsqcymbKnMpmypzKZsqcymbKnMpmypzKZsqcymbKnMpmypzKZsqcymbKnP+MHAP/iScI /4gyDv+TOBT/m0Ec/6JKJ/+kVDT/ol9D/59qUf2adF/1lH5s7Y6IeOeHj4HigJWK3XuakNp3oJbW dKaa1HGsntJvsqHQbbmjz2zDpsVnw6bAacehwGnHocBpx6HAacehwGnHocBpx6HAacehwGnHocBp x6HAacehwGnHof+NHAP/iicI/4oxDf+WNxP/nkAb/6VJJ/+nUzT/p11D/6RoU/ygcmLymnxw6pSF feOLi4jdhJKR2H6YmNN6np/QdaSkzXKqqMtvsKvJbbiuwmm8sLxrwKq3bcSlt23EpbdtxKW3bcSl t23EpbdtxKW3bcSlt23EpbdtxKW3bcSlt23Epf+NGwP/iycI/4wwDf+YNxP/oEAb/6dIJv+rUjT/ q1xE/6lmVPqlcGTwn3lz55iCgd+PiI3ZiI+X0oGVoM57m6fKdqGtx3OoscVwr7XBbbe3uWu4tbNu va6wcMGosHDBqLBwwaiwcMGosHDBqLBwwaiwcMGosHDBqLBwwaiwcMGosHDBqP+OGwP/iyYI/44w Df+aNhL/oj8a/6lIJv+uUTT/rltE/6xkVfmqbmXvpXd25Z1/hdyUhZLUjIydzoSSp8l9mK/EeJ61 wnWnucF0sbu4cLO7sW+2uKxxu7Gpc7+rqXO/q6lzv6upc7+rqXO/q6lzv6upc7+rqXO/q6lzv6up c7+rqXO/q/+OGwP/jCYI/5AvDf+bNhL/pD8a/6tHJv+xUDT/sVlE/LBjVfaubGftqnV446F8iNmY g5bRkImjyoePrcWCl7TCf6C4vnyou7t6sL2xdLK9qXK0u6Z0ubOjdr6to3a+raN2vq2jdr6to3a+ raN2vq2jdr6to3a+raN2vq2jdr6to3a+rf+PGwP/jCYH/5EuDP+dNhL/pj4a/61HJf+zTzT/tFhE +rRhVvOyamjsr3N64aZ6i9adgJrNlIanxo2Nr7+HlLW6gpy5tX+kvLJ9rL6rebG/o3ayvaB4uLWe eb2vnnm9r555va+eeb2vnnm9r555va+eeb2vnnm9r555va+eeb2vnnm9r/+PGwP/jSYH/5MuDP+e NRH/qD4Z/69GJf+2TjP+t1dE97dgVvC2aGnos3B73qp3jdCffJ3Hl4Onv5CKr7iLkbayhpi6rYOg vamBqb+lfrDAnHmxv5p7t7eYfbuwmH27sJh9u7CYfbuwmH27sJh9u7CYfbuwmH27sJh9u7CYfbuw mH27sP+QGgP/jSYH/5QtDP+gNRH/qT4Z/7FGJP+4TTP8u1ZE9btfVu27Z2njtW591qxzj8qjep3B m4CnuJSHsLGPjraripW7poedvqKFpcCfhK/Bln6wwZR/triTgLuyk4C7spOAu7KTgLuyk4C7spOA u7KTgLuyk4C7spOAu7KTgLuyk4C7sv+QGgP/jiYH/5UtDP+hNRH/qz0Y/7NGJP+6TTP6vlVE879d Vuq/ZWrfuGt+0K9xj8WmeJy7n36nspiFr6uTi7aljpO7n4uavpuJosGYiKzCkIKvwo+DtbmPhLqz j4S6s4+EurOPhLqzj4S6s4+EurOPhLqzj4S6s4+EurOPhLqzj4S6s/+QGgP/jiUH/5YsC/+iNRD/ rD0Y/7VFI/+8TDL4wVRD8MNcVufDY2rau2l+zLJwj8Cqdpy2onynrZyCr6WXibaek5C7mY+YvpSN oMGRjKnCi4iuwoqItLqKiLm0ioi5tIqIubSKiLm0ioi5tIqIubSKiLm0ioi5tIqIubSKiLm0ioi5 tP+RGgP/jyUH/5gsC/+kNBD/rj0Y/7dFI/+/TDL2xVND7shbVuPGYWrUv2h+x7ZujrutdJyxpnqm p6CAr5+bhrWYl467k5WVvo6SncGKkqfCho6uwoSNtLuFjLm0hYy5tIWMubSFjLm0hYy5tIWMubSF jLm0hYy5tIWMubSFjLm0hYy5tP+RGgP/jyUH/5ksC/+mNA//sDwX/7lEIvzBSzH0yVJC681ZVd/J YGrPwmZ9wrlsjbaxcpurq3imoqV+rpmghLWSnYu6jJqTvoeYm8CEl6XCgJavwn+Ss7yAkbi1gJG4 tYCRuLWAkbi1gJG4tYCRuLWAkbi1gJG4tYCRuLWAkbi1gJG4tf+SGgP/kCUH/5ssCv+nNA//sjwW /7tEIfnFSzDxzlFB59JYVNrOXmnKxmV8vb1rjLC2cJqlsHalnKp8rZOmgrSMo4m5hqCQvYGemb99 nqLBe56vwXmZs7x6l7i1epe4tXqXuLV6l7i1epe4tXqXuLV6l7i1epe4tXqXuLV6l7i1epe4tf+S GQP/kCUH/50rCv+qMw7/tTwV/L9EIPTISi7t01A/49hWU9PSXWjFymN7t8Jpi6q7b5iftnSjlbF6 rI2tgLKFqoe3f6eOu3qml753pqC/dKatv3OhtLt0nri1dJ64tXSeuLV0nri1dJ64tXSeuLV0nri1 dJ64tXSeuLV0nri1dJ64tf+TGQP/kSQH/58rCf+sMw3/uDsU+MNDHu/NSizn2k893d5VUc3YW2e+ z2J6sMhniaTCbZeZvHKhj7h4qYa1frB/soW1ebCMuHSvlbtwr5+8bq+svG2rtblup7m0bqe5tG6n ubRup7m0bqe5tG6nubRup7m0bqe5tG6nubRup7m0bqe5tP+UGQP/kiQH/6IqCP+wMgz+vDoS8sdC HOjTSSnh4Uw71ONTUcbdWmW31WB4qc9mh53Ja5SRxXCeh8F2pn++fKx4vISxcrqLtG25k7ZquJy4 Z7enuGe3t7ZosruxaLK7sWiyu7FosruxaLK7sWiyu7FosruxaLK7sWiyu7FosruxaLK7sf+VGAP/ lSMG/6UpB/+0MQr4wToQ685CGODdRyXV5Us7y+dRUL3jWWOv3l90othlg5bTao+Kzm+Zf8hzoXXE eKduwX2rab6ErmW9i7FhvJOyX7ydsl+8rLFiv76tYr++rWK/vq1iv76tYr++rWK/vq1iv76tYr++ rWK/vq1iv76tYr++rf+WGAP/mSEF/6ooBv+5MAjwyDgN4dhAE9TjRSbK60s7wexPT7PoV2Cm5V9v muJmfI7cbIaE1XGPetB1lXPNeptsyn+fZ8eEomPGiqRfxJGmXMSZp1rDpKdaxLCnWsSwp1rEsKda xLCnWsSwp1rEsKdaxLCnWsSwp1rEsKdaxLCnWsSwp/+YFwL/niAE/68mBfjALgbm0DMI1eE8FMnq RSi/8ko7tfFOTKnvVlud7V9okupnc4fjbXx+3nKCdtp4iHDXfYxr1IKQZtKHkmPRjJVfz5KWXM6Z mFnOoplYzauaWM2rmljNq5pYzauaWM2rmljNq5pYzauaWM2rmljNq5pYzauaWM2rmv+aFwL/pR4D /7cjA+3JJgPW3ikGyek7F77zRCmz+Ek6qPdNSJ/2VVWU9V9gifFoaIDsb3B46HV1cuV6eW3if31p 4ISAZd+JgmLdjoRf3JOGXduZh1raoYlY2aiJWNmoiVjZqIlY2aiJWNmoiVjZqIlY2aiJWNmoiVjZ qIlY2aiJWNmoif+cFgL/rRsC9sEdAdvaEwHJ6CkJvfM7GbL9Qyim/kc2nP1MQ5P9VU2K/V9Wgflp XXn1cGJz8nZnbvB8amrugW1n7IZvZOuLcWHqj3Jf6ZR0XeiZdVrnoHdY5qZ4WOameFjmpnhY5qZ4 WOameFjmpnhY5qZ4WOameFjmpnhY5qZ4WOameP+iFQH/txUA2M8LAMrnEwK88ykLsf07GaT/QCaZ /0Uyj/9LPIf/VER//19LeP9pUHH/cFRs/XZYaft8Wmb6gVxj+IZeYfeLX1/2kGFe9pViXPWaY1r0 oGRY86VlWPOlZVjzpWVY86VlWPOlZVjzpWVY86VlWPOlZVjzpWVY86VlWPOlZf+tEADWwwgAyNMK ALv0FQOv/yoNo/83GJf/PSKL/0Msgf9KNHr/Ujpz/14/bv9oQ2n/b0dm/3VJY/97S2H/gUxf/4VO Xf+KT1z/j1Ba/5NRWf+YUlf/nlNW/6NUVv+jVFb/o1RW/6NUVv+jVFb/o1RW/6NUVv+jVFb/o1RW /6NUVv+jVNm6BQDFxwcAudkIAKz/FwWi/ysNlf8zFon/OR5+/0Aldf9IK23/UDBn/1o0Y/9lN2D/ bTle/3M7XP94PVr/fT5Y/4I/V/+GQFb/i0BV/49BVP+UQlP/mkNR/59DUf+fQ1H/n0NR/59DUf+f Q1H/n0NR/59DUf+fQ1H/n0NR/59DUf+fQ8a+BQC3zQUAquQIAZ//GQaU/ygMh/8uE3v/NRlx/z0e af9FI2L/TSZb/1YpWP9fLFb/aC1U/24vU/9zMFL/eDFR/3wxUP+AMk//hDNO/4gzTf+MNEz/kjRL /5Y1S/+WNUv/ljVL/5Y1S/+WNUv/ljVL/5Y1S/+WNUv/ljVL/5Y1S/+WNbfEAwCp1AIAnPkLApP/ GwWF/yMKef8pD27/MRRl/zkYXf9BG1f/Sh5T/1IgUP9ZIk3/YCNL/2YkSv9rJUn/byVI/3MmR/93 Jkb/eydF/34nRf+CKET/hyhD/4spQ/+LKUP/iylD/4spQ/+LKUP/iylD/4spQ/+LKUP/iylD/4sp Q/+LKf+DHAP/gCcH/3szDf+GOBH/jkAZ/5NJIv+VVS3/k2E5/5BtRf+LeE//hoRZ/IKOYfd9lmj0 eJ1u8XSjc+5xqXfsbq566myzfelquX/naMCB5mfHg+Nlz4XdY9iG02Dah9Ng2ofTYNqH02Dah9Ng 2ofTYNqH02Dah9Ng2ofTYNqH02Dah/+DHAP/gCcH/3szDf+GOBH/jkAZ/5NJIv+VVS3/k2E5/5Bt Rf+LeE//hoRZ/IKOYfd9lmj0eJ1u8XSjc+5xqXfsbq566myzfelquX/naMCB5mfHg+Nlz4XdY9iG 02Dah9Ng2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2ofTYNqH02Dah/+DHAP/gCcH/3szDf+GOBH/ jkAZ/5NJIv+VVS3/k2E5/5BtRf+LeE//hoRZ/IKOYfd9lmj0eJ1u8XSjc+5xqXfsbq566myzfelq uX/naMCB5mfHg+Nlz4XdY9iG02Dah9Ng2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2ofTYNqH02Da h/+DHAP/gCcH/3szDf+GOBH/jkAZ/5NJIv+VVS3/k2E5/5BtRf+LeE//hoRZ/IKOYfd9lmj0eJ1u 8XSjc+5xqXfsbq566myzfelquX/naMCB5mfHg+Nlz4XdY9iG02Dah9Ng2ofTYNqH02Dah9Ng2ofT YNqH02Dah9Ng2ofTYNqH02Dah/+DHAP/gCcH/3szDf+GOBH/jkAZ/5NJIv+VVS3/k2E5/5BtRf+L eE//hoRZ/IKOYfd9lmj0eJ1u8XSjc+5xqXfsbq566myzfelquX/naMCB5mfHg+Nlz4XdY9iG02Da h9Ng2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2ofTYNqH02Dah/+DHAP/gCcH/30yDP+INxH/kD8Y /5VJIv+XVC3/ll85/5NrRf+Od1H/iIJb+oSMZPV/lGvxepty7naid+typ3vpb61/52yyguVquITk ab+H4mjHieBmz4rWY9aMz2LYis9i2IrPYtiKz2LYis9i2IrPYtiKz2LYis9i2IrPYtiKz2LYiv+E GwP/gScH/4AxDP+LNhH/kz4Y/5lHIv+cUi3/ml06/5hpR/+TdFP+jn5f94iJafGCkXLtfZh56Xif f+V0pITjcKqI4G2wjN5rt4/dar+R22nIk9Vmz5XLZNGTxmXUjsZl1I7GZdSOxmXUjsZl1I7GZdSO xmXUjsZl1I7GZdSOxmXUjv+FGwP/giYH/4IwDP+ONRD/lj0Y/5xGIf+gUC3/n1s7/5xmSP+YcVb7 k3xi9I2Gbe6HjnfogJWA5Hqch+B1oozdcqiR2m+vldhtt5nVa8Cc0mnJnsllyZ7CZ82YvmnRk75p 0ZO+adGTvmnRk75p0ZO+adGTvmnRk75p0ZO+adGTvmnRk/+GGwP/gyYH/4UvC/+QNBD/mT0X/59G If+jTy3/o1o7/6BkSf+db1j6mHll8ZKDceqLjHzkg5KG332Zjtp4oJXWdKea03Cun9FttqPPa8Cl x2bCp8BoxqK7asubt2zOlrdszpa3bM6Wt2zOlrdszpa3bM6Wt2zOlrdszpa3bM6Wt2zOlv+GGwP/ gyYH/4cuC/+TNBD/mzwX/6FFIP+nTS3/plg7/6RiSvyhbFn3nHZo75aAdeePiYHgh5CM2oCWldV6 np3RdaWjzXCsqMtttazHa76tvWi/rLhrw6azbcifsG/MmbBvzJmwb8yZsG/MmbBvzJmwb8yZsG/M mbBvzJmwb8yZsG/Mmf+HGgP/hCUH/4ktC/+VMw//nTwW/6REIP+qTC3/qlc7/qhgS/ilalrzoXRq 7Zx+eeSThobci42S1YOUnM98m6XLd6Oqx3SrrcRzta+/cLywtWu8sLBuwamscMaiqXLKnKlyypyp csqcqXLKnKlyypypcsqcqXLKnKlyypypcsqcqXLKnP+HGgP/hCUH/4ssCv+XMw//nzsW/6ZEH/+s Syz/rlU7+6xfS/WqaFzupnFs56B6fN+XgorVjoiYzYWPoceAl6fCe56svXinr7p2sLG3dbqyrXC6 sqlxv6yldMSko3XJnqN1yZ6jdcmeo3XJnqN1yZ6jdcmeo3XJnqN1yZ6jdcmeo3XJnv+IGgP/hSUH /4wrCv+YMg7/oTsV/6lDH/+vSyz/sVQ7+LFdS/GvZlzqq29u4aN2f9WZfY/MkYSZxYqMor6Ek6i5 f5qttHyjsLB6q7Oteba0pnS5tKJ1va+fd8OmnXnHoJ15x6CdecegnXnHoJ15x6CdecegnXnHoJ15 x6CdecegnXnHoP+IGgP/hSUH/44qCv+aMg7/ozoV/6tCHv+xSiv9tVM79rVcS+6zZF3lrmxv26Vz gc6deo/FlYGZvo6IoreIkKmxhJeurICfsah+qLSlfbK1n3q4tpt5u7GZe8GomHzGoph8xqKYfMai mHzGoph8xqKYfMaimHzGoph8xqKYfMaimHzGov+JGgP/hiUG/5AqCv+cMQ3/pToU/61CHv+0Siv7 uFI687laS+q4Yl7hsWpw06lwgcigd4+/mX6Zt5KForCMjKmqiJSupYScsqCCpLWdga62mX+3t5R9 urOTf8Cqkn/Fo5J/xaOSf8Wjkn/Fo5J/xaOSf8Wjkn/Fo5J/xaOSf8Wjkn/Fo/+JGQP/hiQG/5Ep Cf+dMQ3/pzkU/69CHf+2SSr4vFA68L1ZS+e8YV7ctWdxzqxvgcOkdY65nHyZsZaCoqqRiqmjjJGu nomZspmGobWWhau3k4W2t46BubSOg7+rjYPEpY2DxKWNg8SljYPEpY2DxKWNg8SljYPEpY2DxKWN g8SljYPEpf+JGQP/hyQG/5MpCf+fMQ3/qTkT/7FBHP+5SSn2wE857cJXSuS/X13WuWZwybBtgL6o c460oHqZq5qAoqSVh6mdkY6ul46WspKLn7WPiqm3jIq0uIiGuLWIh76siIfDpoiHw6aIh8OmiIfD poiHw6aIh8OmiIfDpoiHw6aIh8OmiIfDpv+KGQP/hyQG/5QpCf+hMAz/qzkS/7RBHPy7SCj0w044 68dWSuDDXl3RvGVvxLNrgLmrcY2vpHeYpp5+oZ6ahKiXloyukZOUsoyRnLWIj6a3hY+xuIKMt7aC jL6tg4zDpoOMw6aDjMOmg4zDpoOMw6aDjMOmg4zDpoOMw6aDjMOmg4zDpv+KGQP/iCQG/5YoCP+j MAz/rTgS/7ZAG/q+SCfxx04358xVSNzHXFzMv2Nvv7dpf7SwcIypqXWXoKN7oJifgqiRm4mtipmS soWWmrWBlaS3fpWvt3uSt7Z9kb2ufZDCp32Qwqd9kMKnfZDCp32Qwqd9kMKnfZDCp32Qwqd9kMKn fZDCp/+LGQP/iSQG/5goCP+lLwv/sDgR/7lAGfjCRybuy0015NBURtXLW1vHw2Juurtofq60bouj rnOWmql6n5KlgKaKoYeshJ+PsX6dmLR6nKG2eJustnWat7Z3mL2ueJbCp3iWwqd4lsKneJbCp3iW wqd4lsKneJbCp3iWwqd4lsKneJbCp/+MGAP/iiMG/5onB/+nLwr/szcP/L0/GPPGRiPq0Ewy4NVS Rc/PWVrByGBstMBmfKi6bIqdtHKVlLB4nousfqWDqIWqfaaMr3iklbJ0o5+0caOqtW+kubRwoL6t cp3Cp3KdwqdyncKncp3Cp3KdwqdyncKncp3Cp3KdwqdyncKncp3Cp/+MGAP/jCIG/50nB/+qLgn/ tjYO98E+Fu3MRiDk2Esu2dxQRMnUWFi7zV5rrsZleqLAaoiXu3CSjbd1m4SzfKJ9sYOodq+KrHGt k69trZ2xaq2psmmtt7Fqqb+sa6bDpmumw6ZrpsOma6bDpmumw6ZrpsOma6bDpmumw6ZrpsOma6bD pv+NGAL/jyAF/6AmBv+uLQj9uzUM8cc9E+XTRBzd4Egt0OFPQsLbVla0011op81jeJrIaIWPw26P hcB0mH29ep52uoGkcLmJqGu4kqpnt5ysZbiorWO4tq1ktcGpZbDFpGWwxaRlsMWkZbDFpGWwxaRl sMWkZbDFpGWwxaRlsMWkZbDFpP+OFwL/kx8E/6QlBf+zLAb3wTMJ6M48D9zeQBnQ5Ugux+VNQrng VVSs21tln9VhdJLQZoGHzWyLfspyk3bIeZlvxoGeasWJomXFkqRixJ2mX8Snp13EtKdew8SkX73I oF+9yKBfvcigX73IoF+9yKBfvcigX73IoF+9yKBfvcigX73IoP+QFwL/mB0E/6kjBP+5KQTuyDEG 3do0CtDkQRvG60cuvOpMQbDmU1Kj41phl+BhbozdaHmC226Cetl1iXLVfI9r0oKTZc+Il2DNj5pc zJecWsugnVjLq51Xy7qdWczMmVnMzJlZzMyZWczMmVnMzJlZzMyZWczMmVnMzJlZzMyZWczMmf+S FgL/nRwD/68gAvbAJQLi0yQD0OMyDMXsQB268UcvsO9LP6XtUU6a61paj+piZYXoam5953J1deN4 e2/gfoBp3YSEZNuKh2DZkYld2JiLWtagjVjWqI5W1bSOVNXBjlTVwY5U1cGOVNXBjlTVwY5U1cGO VNXBjlTVwY5U1cGOVNXBjv+UFQL/pBkC/7ccAenLFgHR4R0CxewxDrr1QB6u90Uuo/VKPJr0UEiQ 81pThvNjW37ybGJ38XNoce56bWzrgHBn6YZzY+eMdmDmknhd5Jh6WuOee1jjpX1W4q9+VOG4flTh uH5U4bh+VOG4flThuH5U4bh+VOG4flThuH5U4bh+VOG4fv+YEwH/rRQB88MPANLYCwDE7B4EuPYx Ea39Ph6i/UMrl/xIN478T0GF/FlJffxjUHf8bVZw+3Raa/l6Xmj3gWFk9YdjYfONZV/yk2dd8Zlo WvCeaVjvpWtW761sVO60bVTutG1U7rRtVO60bVTutG1U7rRtVO60bVTutG1U7rRtVO60bf+jEADx uQwAzskJAMTfCwC29x8GrP8yEqD/Ox2U/0Eniv9HMYH/Tjl6/1g/c/9iRW7/bElp/3NMZv96T2P/ gFFg/4ZTXv+MVFz/klVa/phXWf2dWFf8pFlV+6taVPuxW1T7sVtU+7FbVPuxW1T7sVtU+7FbVPux W1T7sVtU+7FbVPuxW/CvCADNvwcAwM0IALTuDgKp/yEIn/8xEZL/NxqH/z4iff9FKXX/TTBu/1U1 af9gOWX/ajxh/3E+X/93QFz/fkJa/4RDWf+JRFf/j0VW/5RGVf+aR1P/oEhS/6dJUf+tSlH/rUpR /61KUf+tSlH/rUpR/61KUf+tSlH/rUpR/61KUf+tSs+4BAC+wwUAstQGAKb+EAOc/yMIkP8tD4T/ MxZ5/zsccP9DImn/Sidi/1IqXf9cLVr/ZTBY/20xVv9zM1T/eTRT/341Uv+ENlD/iTdP/444Tv+T OE3/mTlM/6A6S/+mOkv/pjpL/6Y6S/+mOkv/pjpL/6Y6S/+mOkv/pjpL/6Y6S/+mOr+8AwCwygMA o9wDAZn/EgOP/yIIgv8oDXb/LxJt/zcXZf8/G17/Rx5Y/04hVP9XI1H/XyVO/2UmTf9sJ0v/cShK /3YpSf97Kkj/gCpH/4UrRv+JK0X/jixE/5QsQ/+aLUP/mi1D/5otQ/+aLUP/mi1D/5otQ/+aLUP/ mi1D/5otQ/+aLbHCAQCj0gAAlesDAYz/EwOA/xwGdP8jCmn/Kg5g/zISWf86FVP/QhdO/0kZS/9R Gkj/WBxG/10dRP9jHUP/Zx5B/2wfQP9wHz//dCA+/3ggPf98IDz/gSE7/4chO/+MIjv/jCI7/4wi O/+MIjv/jCI7/4wiO/+MIjv/jCI7/4wiO/+MIv96HQP/digG/3IzC/98Nw//hD8V/4hIHf+LUyf/ iWAx/4ZtO/+CeUT/foZM/3uRU/93mlj/dKJd/HGoYfpurmT4a7Rn92m6afVowWvzZsht72PNb+xh 03DnX91x4l3lc91b5nPdW+Zz3Vvmc91b5nPdW+Zz3Vvmc91b5nPdW+Zz3Vvmc/96HQP/digG/3Iz C/98Nw//hD8V/4hIHf+LUyf/iWAx/4ZtO/+CeUT/foZM/3uRU/93mlj/dKJd/HGoYfpurmT4a7Rn 92m6afVowWvzZsht72PNb+xh03DnX91x4l3lc91b5nPdW+Zz3Vvmc91b5nPdW+Zz3Vvmc91b5nPd W+Zz3Vvmc/96HQP/digG/3IzC/98Nw//hD8V/4hIHf+LUyf/iWAx/4ZtO/+CeUT/foZM/3uRU/93 mlj/dKJd/HGoYfpurmT4a7Rn92m6afVowWvzZsht72PNb+xh03DnX91x4l3lc91b5nPdW+Zz3Vvm c91b5nPdW+Zz3Vvmc91b5nPdW+Zz3Vvmc/96HQP/digG/3IzC/98Nw//hD8V/4hIHf+LUyf/iWAx /4ZtO/+CeUT/foZM/3uRU/93mlj/dKJd/HGoYfpurmT4a7Rn92m6afVowWvzZsht72PNb+xh03Dn X91x4l3lc91b5nPdW+Zz3Vvmc91b5nPdW+Zz3Vvmc91b5nPdW+Zz3Vvmc/96HAP/dycG/3QyC/9/ Ng//hj0V/4tHHf+OUSf/jF4x/4lrPP+Fd0b/gYNO/32PVv95mFz8daBh+XKmZfdvrWn1bLNs82q5 b/JowHHwZshz7GTNdehh1HbjX953213jedVd5XbVXeV21V3ldtVd5XbVXeV21V3ldtVd5XbVXeV2 1V3ldv97HAP/dycG/3cwCv+CNQ7/ijwV/49GHf+STyf/kVwy/45oPf+KdEj/hoBS/4GLWvx9lWH4 eJ1n9XSkbfJxqnHwbrB07mu2d+xpvnrqZ8d952XOf+Ji1oDZX92B0F/gfsxg43vMYON7zGDje8xg 43vMYON7zGDje8xg43vMYON7zGDje/98HAP/eCYG/3ovCv+FMw7/jTsU/5JEHP+WTif/lVoy/5Jl Pv+OcUr/in1V/oWIXvmAkmf0e5pu8Hahc+1yp3jqb6596Gy0gOZpvIPkZ8aG4WXPiNli14rPYdmI yGLdgsRj4H/EY+B/xGPgf8Rj4H/EY+B/xGPgf8Rj4H/EY+B/xGPgf/99GwP/eSYG/3wuCv+IMg7/ kDoU/5VDHP+aTCf/mVgz/5ZjP/+Sbkz/jnpX/ImFYvWEj2vwfpdz7Hmeeuh0pYDlcKuF4myzieBq u4zeaMaP2mbRks5i0ZLHZNWMwWXbhr1m3YK9Zt2CvWbdgr1m3YK9Zt2CvWbdgr1m3YK9Zt2CvWbd gv99GwP/eiYG/38sCv+LMQ3/kzoT/5hCHP+dSyb/nVYz/5thQP+XbE37knZa942BZvKIjHDsgpR5 53ubgeN1oojfcamO3G2xktlru5bXaciZzGTLm8VlzpfAZ9KRumjYirZp24a2aduGtmnbhrZp24a2 aduGtmnbhrZp24a2aduGtmnbhv9+GwP/eyYG/4ErCf+NMQ3/lTkT/5tCG/+gSib/oVQz/59fQfuc aU/2l3Nd8ZJ+auyMiHXnhZGA4n6Yid14oJHYcqeX0m2vnc9suZ/Ma8Wgw2fHoLxoy5u3atCUsmzV ja9s2YmvbNmJr2zZia9s2YmvbNmJr2zZia9s2YmvbNmJr2zZif9+GgP/eyUG/4MqCf+PMAz/mDgS /55BG/+jSSb/plIz/aRdQfehZ1DxnHFf65d7beWPg3reh4uG1X6Skc94mZfKdKGcx3Gqn8Nvs6HB br+jumvFo7NryJ+vbc2Yq2/Skalw1oypcNaMqXDWjKlw1oypcNaMqXDWjKlw1oypcNaMqXDWjP9/ GgP/fCUG/4YpCP+SLwz/mzgS/6FAGv+nSCX/qlEy+albQfOmZFHsom5h5Zp2cNyRfn/SiYaLy4KN k8V9lZnAeJ2evHWloblzrqS2crmlsnDDpqtvxqKoccubpHPQk6J01I6idNSOonTUjqJ01I6idNSO onTUjqJ01I6idNSOonTUjv+AGgP/fCUG/4goCP+ULwv/nTcR/6Q/Gf+qRyT9rk8y9q1ZQe+rYlLn pmti3p5yc9KVeoHKjYKLw4eKk72BkZq3fZmfs3mho693qqasdrSnqnbBqKNzw6WgdcmennfPlpx3 0pGcd9KRnHfSkZx30pGcd9KRnHfSkZx30pGcd9KRnHfSkf+AGgP/fSUG/4onCP+WLgv/nzYQ/6c/ GP+tRyP7sk4x87JXQeuxYFLiqmhk1qJwdMyZd4HDkn+LvIuGlLWGjpqvgZWgqn6dpKZ7pqejerCp oXm8qZt3waiZecegmHrNmJd70ZOXe9GTl3vRk5d70ZOXe9GTl3vRk5d70ZOXe9GTl3vRk/+BGgP/ fiQG/4wmB/+YLgr/ojYQ/6k+GP+vRiP4tU0w8LdWQOe1XlLdrmZk0KVuc8addYC9lnyLtZCDlK6K i5uohpKgo4KapZ9/o6ibfq2qmH25q5R7wKqTfcaikn7MmZF/0JSRf9CUkX/QlJF/0JSRf9CUkX/Q lJF/0JSRf9CUkX/QlP+BGQP/fiQG/40mB/+aLQr/pDUP/6w9F/6yRSL2uEww7bxUQOS4XVHXsmRj y6lsc8Chc4C3mnqLr5SAk6iPiJuiio+gnIeXpZeEoKiUgqmqkYK1q42Bv6uNgcWkjILLm4yCz5WM gs+VjILPlYyCz5WMgs+VjILPlYyCz5WMgs+VjILPlf+CGQP/fyQG/48lB/+cLQn/pjUO/649Fvy1 RSHzvEsu6sFSP+C8W1HRtWNjxq1qcrulcX+ynneKqZh+k6KThZqbj42gloyVpZGJnaiNh6erioey rIeHv6yGhsSlh4bKnIeGzpeHhs6Xh4bOl4eGzpeHhs6Xh4bOl4eGzpeHhs6Xh4bOl/+CGQP/gCMF /5ElBv+eLAn/qDQN/7E8Ffq4RB/wv0st58VRPdzAWlDNuGFiwbBocbapb36sonWJpJ18kpyYgpqV lIqgj5GSpYqOm6iGjaWrg4ywrIGNvqyAi8OmgYvJnYGLzZiBi82YgYvNmIGLzZiBi82YgYvNmIGL zZiBi82YgYvNmP+DGQP/giIF/5MkBv+gLAj/qzMN/7Q8FPe8Qx7uxEor5MlRO9XEWE/IvGBhvLRn cLGtbX2np3OJnqJ5kpadgJmPmoifiZeQpIOUmKh/k6KqfJKtq3qSu6x6kcOme5DJnnyPzZh8j82Y fI/NmHyPzZh8j82YfI/NmHyPzZh8j82YfI/NmP+DGAL/hCEF/5UkBv+iKwj/rTML/rc7EvTAQhzq yUko4M1POdDHV07DwF5gt7hlb6uya3yhrHGHmKd4kJCjfpiJoIWegp2No32blqd4maCpdZmrqnOZ uKtzmMOmdZbJnnaVzZl2lc2ZdpXNmXaVzZl2lc2ZdpXNmXaVzZl2lc2ZdpXNmf+EGAL/hyAF/5cj Bf+lKgf/sTIK+7s6EPHFQRnnz0gl29JNOMvLVUy9xF1esb5jbqW4anubsm+Gkq52j4mqfJaCp4Oc e6SLoXailKVxoZ2nbqCpqWyhtqltocOmb53JnnCczZhwnM2YcJzNmHCczZhwnM2YcJzNmHCczZhw nM2YcJzNmP+FGAL/ih4E/5oiBP+oKQb/tTAI9sA4DuvLQBXh2EYg09hLNsXQVEu3yVtcq8NibJ++ aHiUuW6Di7VzjIOyepN7r4GZda2Jnm+rkqJrqpykaKqnpWaqtKZmq8WkaKbKnGmkzZdppM2XaaTN l2mkzZdppM2XaaTNl2mkzZdppM2XaaTNl/+GFwL/jRwE/54hBP+sJwX9ui8G78c2CuPUPhDY30Mf y95KNL7WUkiw0FpapMpgaZjGZnaNwWyAhL5yiXu7eJB0uX+VbreHmmm2kJ1ltZugYrSmoWC1s6Ff tsWgYbHMmmKuz5Virs+VYq7PlWKuz5Virs+VYq7PlWKuz5Virs+VYq7Plf+HFwL/kRoD/6IgA/+y JQP1wCsE5s8xBtjeOA/M5UMgw+JJM7beUUap2FhXnNJeZZDOZHKGy2p8fMhwhHTGd4puxH6PaMOH lGPCkJdfwZuZXMGmmlvCs5taw8WaW77PlVy60pFcutKRXLrSkVy60pFcutKRXLrSkVy60pFcutKR XLrSkf+JFgL/lhkC/6gdAv64IQLsySIC2d0lBMzlNxHC6kMit+dIM6zkT0Sg4FZTlN1dYIjaY2t+ 1mp1ddRwfW7Sd4Nn0X+IYtCHi17QkY5a0JyQWNCnkVbQtZJV0seRVs3UjlbI1otWyNaLVsjWi1bI 1otWyNaLVsjWi1bI1otWyNaLVsjWi/+LFQL/nRcB/68ZAfTBGAHd2BEAzOUmBcHuNxO270Ijq+1H MqHrTECW6VVNi+ddWILmZWF55GxpcuR0b2zjfHRn4oR4YuKNe17ilX5b4J6AWN+nglXesYNT3r6D Ut7Sg1HZ3IJR2dyCUdncglHZ3IJR2dyCUdncglHZ3IJR2dyCUdncgv+PEwL/pBMB/rgSANbMCwDM 5BEBwO8mB7X1OBWq9EAin/NGMJXySzyM8VRGgvBdT3rwZlZ08G5cbu92YWnvfmRl74ZoYe+Oal7u lm1b7Z5vWOulcFbrrnFU6rhyUurHc1Hp1XNR6dVzUenVc1Hp1XNR6dVzUenVc1Hp1XNR6dVzUenV c/+YEAH/rg4A1MEJAMnPCQC+8BICs/knCqn7OBWe+z4hk/tELIn6SjWB+lM+efpdRXL6Zkpt+m9O aPp2UmT6flVh+oZXX/uOWlz6llta+Z1dV/ilXlX3rGBT97VhUvbBYVD2ymJQ9spiUPbKYlD2ymJQ 9spiUPbKYlD2ymJQ9spiUPbKYv+jCwDWuAYAxsQHALvUCQCw/BQDpv8pC5z/NRWQ/zsehv9CJn3/ SS51/1E0b/9bOmn/ZT5l/25BYv91RF//fEZc/4NIWv+LSVj/k0tW/5tMVf+iTVP/qU5R/7FPUP+7 UE//w1FP/8NRT//DUU//w1FP/8NRT//DUU//w1FP/8NRT//DUdqvAgDGvAUAuckFAK3bCACj/xcE mv8rC47/MRKD/zgaef9AIHD/RyZp/08rY/9YL1//YjJc/2s0Wv9yNlj/eDhW/385VP+GO1L/jTxR /5U9T/+cPk7/oz5N/6o/S/+zQEr/uUFK/7lBSv+5QUr/uUFK/7lBSv+5QUr/uUFK/7lBSv+5Qci1 AgC4wQQAq9ADAJ/rCQGW/xoFi/8mCn//LQ91/zUVbP89GmX/RB5e/0wiWP9UJVX/XSdS/2UpUP9s Kk7/cytN/3ksTP9/LUr/hS5J/4wvSP+SMEf/mTBF/6AxRP+pMkP/rjJD/64yQ/+uMkP/rjJD/64y Q/+uMkP/rjJD/64yQ/+uMri6AgCqyAAAndkAAJL/DAKJ/xoEff8hCHL/KAxo/zAQYP84FFr/QBdU /0gaT/9PHEz/Vx1J/10eR/9jIEX/aSBE/28hQv90IkH/eiJA/4AjP/+GJD7/jCQ9/5IlPP+ZJTv/ niY7/54mO/+eJjv/niY7/54mO/+eJjv/niY7/54mO/+eJqvBAACd0AAAj+EAAIb/DgJ6/xUDbv8c BmT/Iwlc/ysMVf8zD0//OxFJ/0ITRv9JFEL/TxZA/1UWPv9aFzz/Xxg7/2QYOf9oGTj/bRk3/3Ia Nv93GjX/fBo0/4EbM/+IGzL/jRsy/40bMv+NGzL/jRsy/40bMv+NGzL/jRsy/40bMv+NG/9wHgP/ bCkG/2kzCf9yNw3/eT4S/31HGf+AUSH/fl8p/3xtMv95ezn/dohA/3OTRf9wnUr/bqZO/2utUf9p tFP/aLtV/2bDV/9jx1n7Ycxb91/TXPNe3V3wXONe61vpX+dZ72DlWfFf5VnxX+VZ8V/lWfFf5Vnx X+VZ8V/lWfFf5VnxX/9wHgP/bCkG/2kzCf9yNw3/eT4S/31HGf+AUSH/fl8p/3xtMv95ezn/dohA /3OTRf9wnUr/bqZO/2utUf9ptFP/aLtV/2bDV/9jx1n7Ycxb91/TXPNe3V3wXONe61vpX+dZ72Dl WfFf5VnxX+VZ8V/lWfFf5VnxX+VZ8V/lWfFf5VnxX/9wHgP/bCkG/2kzCf9yNw3/eT4S/31HGf+A USH/fl8p/3xtMv95ezn/dohA/3OTRf9wnUr/bqZO/2utUf9ptFP/aLtV/2bDV/9jx1n7Ycxb91/T XPNe3V3wXONe61vpX+dZ72DlWfFf5VnxX+VZ8V/lWfFf5VnxX+VZ8V/lWfFf5VnxX/9wHgP/bCgG /2sxCf91Ng3/ezwS/39GGf+DUCH/gV4q/35rM/97eDv/eIZC/3WSSP9ym03/cKRR/22sVP9rslf/ abla/2fBXPxlx174Ysxf9WDTYfBe3WLsXORj6FvpZOJa72TgWvBi4FrwYuBa8GLgWvBi4FrwYuBa 8GLgWvBi4FrwYv9xHQP/bSgG/24wCf94NAz/fzsS/4NEGf+HTiH/hlsr/4NoNP9/dT3/fIJF/3mO TP92mVL/cqFW/2+pWv5tsF78ardh+2i+Y/lmxmX0Y8xn8GHTaetf3mvmXeVs4Fvpbdlc7mjWXO9n 1lzvZ9Zc72fWXO9n1lzvZ9Zc72fWXO9n1lzvZ/9yHQP/bigG/3EuCf97Mgz/gzoR/4dDGP+KTCH/ ilkr/4dlNf+Dcj//f35I/3yLUP95llb/dZ9c/XKmYPpurWT4bLRo9mm8a/RnxW3wZMxw62HTcuVf 33PeXOV01lzocc9e7WzNXu5rzV7ua81e7mvNXu5rzV7ua81e7mvNXu5rzV7ua/9zHAP/bycG/3Qt CP9+MQz/hjkR/4tCGP+OSyH/jlYr/4tjNv+Hb0H/g3tL/3+HU/58klv8eJxh+XSkZ/Zwq2vzbbJv 8Wq6c+9ow3brZcx45mLVet5f33zTXeN7zV/mdsdg6nDGYOxuxmDsbsZg7G7GYOxuxmDsbsZg7G7G YOxuxmDsbv90HAP/cCcG/3YrCP+BLwv/iTgQ/45AGP+SSSH/k1Qs/5BgN/+MbEP/h3dN+4ODV/h/ jmD2epdn83agbvByqHPtbq9462u4fOhown/mZs2C32LYhNFf3IXKYOB/xWHjer9j6HS+Y+lyvmPp cr5j6XK+Y+lyvmPpcr5j6XK+Y+lyvmPpcv90HAP/cCYG/3kqCP+FLgv/jTcQ/5I/F/+WSCD/l1Is /5VeOP6RaUT6jHRQ9Yd/W/KCiWXufZNu6nebdedyo3zkbquB4Wqzht5nvYraZcqN0mLUjshi2IrC Y9yEvGXgfrdm5Xi2ZuZ2tmbmdrZm5na2ZuZ2tmbmdrZm5na2ZuZ2tmbmdv91GwP/cSYG/3woB/+I LQr/kDYP/5Y+Fv+aRyD/nFAr/5pbOPmXZkX0knBS74x7X+qFhWrlfo104HiVfdtynYXUbaSL0Gqt js1ot5DLaMORyGfRkr9l1I+5Z9mJtGjdgrBp4nyuauR5rmrkea5q5HmuauR5rmrkea5q5HmuauR5 rmrkef92GwP/ciYF/38nB/+KLAr/kzUO/5k9Fv+eRh//oU4r+6BZOPWcY0bvmG1U6JB3YuKIf2/a gId70nqPg811l4nJcZ+NxW6okcJssZO/a7yVvWvLlbZp0JSxa9WNrGzbhqht4H+nbeJ8p23ifKdt 4nynbeJ8p23ifKdt4nynbeJ8p23ifP92GwP/cyUF/4EmB/+NLAn/ljQO/508Ff+hRB7+pUwq96VX OPCiYUfpnGpW4ZRyZdiMe3PPhYN8yX+LhMN6k4q/dpuPunOjk7dwrJa0b7eXsW/EmKxtzZipb9OQ pXDYiaFx3oKgceB/oHHgf6Bx4H+gceB/oHHgf6Bx4H+gceB/oHHgf/93GwP/dCUF/4MlBv+QKwn/ mTMN/6A7FP+lQx37qUsp86pUOOyoXkfjoWdX2plvZ8+ReHPHioB9wYSIhbt/j4u1epeQsXeflK10 qJeqc7KZp3K/mqRyy5qhc9CTnnTWjJt13ISadd6BmnXegZp13oGadd6BmnXegZp13oGadd6BmnXe gf94GgP/diQF/4YjBv+SKgj/mzIM/6M6E/+oQhz4rUoo8K9SN+esXEfepWRY0Z1tZsiVdXPAjnx9 uYmEhbODjIytf5ORqXublaV5pJmhd66bnna6nJ13ypyZd8+Wl3jUjpV424aUeN2DlHjdg5R43YOU eN2DlHjdg5R43YOUeN2DlHjdg/94GgP/eCMF/4gjBv+UKgj/njEL/6Y6Ev6rQhv1sEkn7LVQNuOw WkbYqWNXzKFrZsKacnK6k3p8s42BhayIiYymhJCRoYCYlp19oZqZe6qclnu2nZR7xp6Se82YkXzT kI982YiPfNyFj3zchY983IWPfNyFj3zchY983IWPfNyFj3zchf95GgP/eiIF/4oiBf+WKQf/oDEL /6g5EfuvQRrytEgm6blPNN+0WUXSrWFWx6VpZb2ecHK0l3d8rZF+haaMhoygiI2RmoWVlpaCnpqS gKedj3+zno2Awp6LgMyai4HSkoqA2ImJgNuGiYDbhomA24aJgNuGiYDbhomA24aJgNuGiYDbhv95 GgL/eyEE/4siBf+YKAf/ozAK/6s4EPmyQBjvuEck5r1OM9u4V0TNsGBWwqlnZLiibnGvm3V7p5Z8 hKCRg4uajYuRlIqTlo+Hm5qLhaWdiISwn4WEv5+FhcubhYXRk4WF2IqEhNqHhITah4SE2oeEhNqH hITah4SE2oeEhNqHhITah/96GQL/fSAE/40hBf+bKAb/pS8J/643Dva2PxfsvEYi48FOMNW8VkPI tF5VvaxmY7OmbHCqn3N7oZp6hJqWgYuUkoiRjo+QlomMmZqEiqOdgYqun36KvJ9+isqcf4rQlH+J 1ot/iNmIf4jZiH+I2Yh/iNmIf4jZiH+I2Yh/iNmIf4jZiP96GQL/fx4E/5AhBP+dJwX/qC4I/rI2 DfO6PhXpwUUf38VML9C/VELEt11TuLBkYq6qam+kpHF6nJ93g5SbfoqOmIaQh5WOlYKSl5l9kKCc eo+rnniPuZ93kcqdeZDPlXmO1ox5jdiJeY3YiXmN2Il5jdiJeY3YiXmN2Il5jdiJeY3Yif97GQL/ gR0E/5IgBP+gJgX/qy0H+7U1C/C+PRLmx0Qc2slJLsvDU0G+vFtSs7ViYaivaW6fqm94lqV1gY6h fImHnoOPgZuLlHuZlJh3l56bc5apnXGWtp5wl8idcpbPlXOU1Yx0k9iJdJPYiXST2Il0k9iJdJPY iXST2Il0k9iJdJPYif98GAL/hBwD/5UfA/+jJQT/rywG97ozCezEOw/izkIY085ILMbHUkC5wFpR rbphX6O0Z2yZsG13kKt0gIioeoeBpYGNeqKJknWgkpZwnpuZbJ6nm2qetJxpn8WbbJ7QlG2a1oxt mdiJbZnYiW2Z2IltmdiJbZnYiW2Z2IltmdiJbZnYif99GAL/hxoD/5geA/+mIwP/sykE88AxB+fL OAvd2DoWzdJGKsDMUD6zxlhPp8BfXZy7ZWqSt2t0ibNxfYGveIR6rX+KdKqHj26pj5Npp5qWZqel mGOnspliqMOYZafRk2aj1otnodmJZ6HZiWeh2YlnodmJZ6HZiWeh2YlnodmJZ6HZif9+FwL/ixgC /5wcAv+rIQL7uSYD7ccsBN/VMQbT3jkUxthEKLnRTjuszFZMoMddWpXCY2eLv2lxgrtveXq4doBz tn2GbbSFi2izjo9jspiSYLGkk16ysZRcssKUXrLTkF+s2YlgqtqGYKrahmCq2oZgqtqGYKrahmCq 2oZgqtqGYKrahv9/FwL/kBYC/6EaAf+xHQH0wCAB49EgAdPfLAbJ4jsUvt9EJbLZTDil01RJmc9b V47LYWOEyGhse8VudXPDdXtswXyBZ8CEhWK/jolevpiLWr6kjVi+sY5Xv8KNWL/Xi1m43IVZtt2D Wbbdg1m23YNZtt2DWbbdg1m23YNZtt2DWbbdg/+BFgL/lRQB/6cWAf24FwDpyxEA098WAcjnLAe+ 5jsWs+REJajhSzWc3VJEkdlZUobVYF1802ZmdNFtbmzPdHRmznx5Yc2FfVzMjoBZzJmDVsylhFTM s4VTzcSFU83dg1PG4H5Uw+F9VMPhfVTD4X1Uw+F9VMPhfVTD4X1Uw+F9VMPhff+HEwH/nBIB/64R ANrCCgDQ0goAx+gYAbzsLAqy6zwXqOpDJZ3oSDOS5lBAiORZS37iYFR24Whcb+BvYmjfd2hj3n9s Xt6IcFrekXNX3pt1VN6nd1LftHhQ38R4T+DeeE/W5XVP0+d0T9PndE/T53RP0+d0T9PndE/T53RP 0+d0T9PndP+PDwH/pA4A27gIAM3FCQDF1QoAuvEaA7DyLQym8TsYm/BBJJHvRy+H7k46fu5YQ3ft YUpw7WlQauxxVWXseVlh7IFcXeyKX1rsk2FX7Z1jVe2nZVLts2ZR7sBnT+/UaE7r5mhN6OhoTejo aE3o6GhN6OhoTejoaE3o6GhN6OhoTejoaP+ZCwDdrgQAzLwGAMHJBwC42woArfgcBKT4Lw2Z+DkX j/g/IYX4Rip8+E0ydfdXOW73YD9p92lDZPhxR2H4eUpd+IFMWviJT1j4klFW+ZtSU/mlVFH6r1VQ +rtWTvrKV03741dM++lXTPvpV0z76VdM++lXTPvpV0z76VdM++lXTPvpV+WlAADOtAQAv78FALTO BgCq6w0BoP8fBpf/Lw2M/zYVgv89HXj/RCRw/0wqav9UL2X/XjNh/2c3Xf9vOVr/djxY/34+Vv+G P1P/jkFR/5dCUP+gQ07/qUVN/7NFS/++Rkr/0EdJ/9xHSf/cR0n/3EdJ/9xHSf/cR0n/3EdJ/9xH Sf/cR9GuAAC/uQMAssUDAKfVBQCc/Q8ClP8iBon/Kwx+/zISdf86GGz/Qh1l/0kiX/9RJVr/WihX /2MrVP9rLVL/ci9Q/3kwT/+AMU3/iDJL/5A0Sv+YNUj/oTVH/6o2Rv+zN0T/vzhE/8U4RP/FOET/ xThE/8U4RP/FOET/xThE/8U4RP/FOMGzAACyvgIApcwBAJndAwCQ/xIChv8fBXv/Jwpx/y4OaP82 E2H/Phda/0YaVf9NHVH/VR9O/10gS/9kIkn/ayNH/3EkRv94JUT/fyZD/4YnQf+OKED/lig//54p Pf+nKTz/sCo8/7QqPP+0Kjz/tCo8/7QqPP+0Kjz/tCo8/7QqPP+0KrO4AQClxgAAl9UAAIvvBAGE /xMCd/8aBG3/Igdk/yoLXP8yDlX/ORFQ/0ETS/9IFUj/TxdF/1YYQv9cGUD/YRo+/2caPP9tGzv/ cxw5/3kcOP+AHTb/iB01/48eNP+XHjL/oB8y/6QfMv+kHzL/pB8y/6QfMv+kHzL/pB8y/6QfMv+k H6bAAACXzgAAid4AAH//BwF0/xACaf8VA1//HAVX/yQIUP8sCkr/MwxF/zsOQf9BDz3/RxA6/00R OP9SETb/VxI0/1wTMv9hEzH/ZhQv/2sULv9xFS3/dxUs/30VKv+DFin/ixYp/44WKf+OFin/jhYp /44WKf+OFin/jhYp/44WKf+OFv9mIAP/YSoF/2EzCP9pNgv/bj0P/3FGFf9zURz/c14j/3BtKf9u fDD/a4k1/2mWOf9noT3/ZqpA/2SyQv9juUT/YcJG/2DIR/9ezUj/XNRK/1veS/tZ5Ez3WOpM9Ffv TfBW803sVfhN7FX4TexV+E3sVfhN7FX4TexV+E3sVfhN7FX4Tf9mIAP/YSoF/2EzCP9pNgv/bj0P /3FGFf9zURz/c14j/3BtKf9ufDD/a4k1/2mWOf9noT3/ZqpA/2SyQv9juUT/YcJG/2DIR/9ezUj/ XNRK/1veS/tZ5Ez3WOpM9FfvTfBW803sVfhN7FX4TexV+E3sVfhN7FX4TexV+E3sVfhN7FX4Tf9m IAP/YioF/2MxCP9rNQv/cDwP/3NFFf91Txz/dl0j/3NsKv9wejH/bYc2/2uUO/9pnz//aKhC/2aw Rf9kuEf/Y8BJ/2HHSv9fzEz/XdNN/FzeTvla5E/1WepQ8VjvUe1X9FHpV/lQ6Vf5UOlX+VDpV/lQ 6Vf5UOlX+VDpV/lQ6Vf5UP9nHwP/YyoF/2UwCP9uMwv/dDoP/3dDFf95Thz/elok/3doK/90djP/ cYQ5/26QP/9sm0P/aqVH/2itSv9ntkz/Zb5O/2PFUP9hy1L9X9JU+V3dVfRb5FbwWupX61jwWOdY 9VfjWfpU41n6VONZ+lTjWfpU41n6VONZ+lTjWfpU41n6VP9oHwP/YykF/2guB/9xMgr/dzgP/3tC Ff99TBz/flgk/3tmLf93czX/dIA8/3GMQv9vl0f/bKFL/2qqT/9oslL/Z7tU/2XEVv5iylj5YNFa 9V7cXPBc5F3qWute5lnxX+Ja9VvcW/lX3Fv5V9xb+VfcW/lX3Fv5V9xb+VfcW/lX3Fv5V/9pHgP/ ZCkF/2stB/90MAr/ezcO/39BFf+BShz/glUl/39jLv97cDb/eHw+/3WJRf9xlEv/b55Q/2ymVP9q rlj9aLdb/GbAXfpkyWD1YdBi8F7cY+pc5WXlW+xm3lrwY9hb9GDRXfhb0V34W9Fd+FvRXfhb0V34 W9Fd+FvRXfhb0V34W/9pHgP/ZSgF/24rB/94Lgr/fzYO/4M/FP+FSBz/h1Ml/4RgL/+AbDj/fHlB /3iFSf50kFD7cZlW+W6iWvhrql/2aLJi9Ga7ZfNkxWjwYtBr6l/dbeNd527bW+pt01zvaM1e82TI X/dfyF/3X8hf91/IX/dfyF/3X8hf91/IX/dfyF/3X/9qHgP/ZigF/3EpB/97LAn/gzUN/4c+FP+K Rxv/jFAl/4ldL/+FaTr9gXVE+nyATfd4i1X0c5Vc8W+dYu9spWftaa1r62a2b+hjwHLmYcx142Df d9Zc5HjOXulyyV/tbcRg8Gi/YvRjv2L0Y79i9GO/YvRjv2L0Y79i9GO/YvRjv2L0Y/9rHQP/ZycF /3QnBv9/Kwj/hzMN/4w8E/+PRRv/kU4l/49aMPyLZjv4hnFG84F8Ue98h1rsdpBi6HGYaeVsoHDh aKh13mSwettiun7YYcd/1GHaf8tf4X7EYeV3v2Lpcrtj7W22ZPFntmTxZ7Zk8We2ZPFntmTxZ7Zk 8We2ZPFntmTxZ/9sHQP/aiYF/3cmBv+CKgj/ijIM/5A7Ev+TQxr/lkwk/ZVXMPeRYjzyjG1J7IZ4 VOd/gV/ieIpp3HKSctZtmnjSaqJ8zmerf8tmtIHJZb+Dx2TOhMFj3YO6ZOJ8tmbmdrJn6nGuaO9q rmjvaq5o72quaO9qrmjvaq5o72quaO9qrmjvav9tHAP/bCQF/3okBf+FKQf/jjEL/5Q5Ef+YQhn/ m0ok+JtUMPKXXz3rkmpL5YpzWN6CfGTVfIVuz3aNdcpylXrGbp1+w2ylgr9qr4S9abmGumjHh7do 2oexaN6BrWnjeqlr6HSma+xtpmztbaZs7W2mbO1tpmztbaZs7W2mbO1tpmztbf9tHAP/biME/30i Bf+IKAf/kTAK/5g4EP+cQBj7n0kj9KFSL+2dXD3llmZM3Y5vWtOHeGXMgYFuxnuJdsF3kXu8c5mA uHChhLVuqoeybbSJr2zBiq1s0oqobNyFpW3hfqJu5Xefb+twn2/rcJ9v63Cfb+twn2/rcJ9v63Cf b+twn2/rcP9uHAP/cSIE/38hBf+LJwb/lC8J/5s3D/+gPxf4pEch8KdPLuiiWj3fm2NN1JRsWsuM dWXEhn1vvoCFdrh8jXyzeJWBr3WdhatypYmoca+LpXC7jKNwy42gcdmInXHfgZty5HqZc+lymXPp cplz6XKZc+lymXPpcplz6XKZc+lymXPpcv9vGwP/cyAE/4IgBP+OJgb/ly4I/582Dv2kPhX0qEYg 7KxNLeOnWDzZoGFMzZhqWcWRcmW9i3putoWCdrCAiX2rfZGCp3mZhqN3ooqfdauNnHS3jpp0xo+Y ddaLlnbdg5R24nyTdud0knbodJJ26HSSduh0knbodJJ26HSSduh0knbodP9vGwL/dR8E/4QfBP+Q JQX/mi0I/6I1DPqoPRTxrEUe6LBMK9+rVzvSpF9LyJxoWb+Vb2S3j3dusIp/dqqFhn2kgY6Cn36W h5t7nouXeaiOlHizj5J4wpCRetWNj3rbhY564X6NeuZ2jXrmdo165naNeuZ2jXrmdo165naNeuZ2 jXrmdv9wGwL/dh4D/4YeBP+TJQX/nSwH/6U0C/erPBLusUMc5bRLKdqvVTrNqF5KwqBmWLmabWSx k3Vuqo58dqOKg32ehouCmYKTh5SAm4uQfqWOjX2wkIp9vpGKf9OPiX7ah4h+33+HfuV3h37ld4d+ 5XeHfuV3h37ld4d+5XeHfuV3h37ld/9wGwL/eB0D/4geA/+VJAT/oCsG/6gyCvSvOhHrtUIa4bhK J9SzUznIq1xJvqRkV7Sea2OsmHJtpJN5dZ6OgXyYi4iCkoeQh42FmYuJg6KOhoKukYOCvJGCg86R g4PZiIKC34GCguR5goLkeIKC5HiCguR4goLkeIKC5HiCguR4goLkeP9xGgL/ehwD/4odA/+XIwT/ oikF/KwxCfGzOQ/oukAX3bxIJc+2UjjDr1tIuahiVq+iamKnnHBsn5d3dZiTfnySkIaCjI2Oh4eK l4uDiKCOf4erkXyHuZF7h8uRfIjYiX2H3oJ9huR6fYbkeX2G5Hl9huR5fYbkeX2G5Hl9huR5fYbk ef9xGgL/fBoD/40cA/+aIgP/pSgE+a8vB+64Nwzkvz8U2MBGJMq6UDe/s1lHtKxhVaqmaGGhoW5r mZx1dJKYfHuMlYOBhpKLhoGQlIt8jp6OeI2pkHaMtpF0jciRdo7YineM3YJ3iuN6d4rjeneK43p3 iuN6d4rjeneK43p3iuN6d4rjev9yGgL/fxkC/48bAv+dIAP/qSYD9rMtBeq9NQngxjwQ0sREI8W9 TzW6t1hGr7FfVKWrZmCcpm1qlKJzc4yeenqGm4GAgJiJhXqWkol1lJuNcpOmj2+TtJBtlMWQcJXY inCS3YNxkON7cZDje3GQ43txkON7cZDje3GQ43txkON7cZDje/9zGQL/ghcC/5IaAv+gHwL/rSQC 8rgqBObDMQbbzDUPzMhCIcDCTTS0vFZEqbZeUp+xZF6WrGtojqlxcYaleHh/on9+eaCHg3Sdj4hv nJmLa5ukjWibso5nm8KOaZ3YimqZ3YJrluN7a5bje2uW43trluN7a5bje2uW43trluN7a5bje/90 GQL/hRUC/5YYAf+kHAH7siAB7b8lAuHMKgPU0TINx8xBH7rHTDGuwVRCo7xcUJm3YlyQs2lmh7Bv boCtdnV5qn17c6iEgG2mjYVopZeIZaSjimKksItgpMGLYqbZiGOi3oFlnuN6ZZ7jemWe43plnuN6 ZZ7jemWe43plnuN6ZZ7jev92GAL/iRMB/5oWAf+pGAH2uBsB58caAdvZHAHN1jALwNI/HbTNSi+o yFI/ncNaTZK/YViJu2digLhta3m2dHFys3t3bLGDfGewjIBir5aDXq6hhlyur4dar7+HW7DahF2s 4H9ep+V4XqfleF6n5Xhep+V4XqfleF6n5Xhep+V4XqfleP96FQL/jhIB/58TAP+wEwDvwBAA2dQM AM7fHAHE3S8Judk9Gq3TSCyhz1A7lctYSYvHX1SCxGVeecJsZnLAcmxrvnpyZr2CdmG7i3pcu5V9 Wbqhf1e6r4BVu7+AVbzZf1a443pYsud1WLLndFiy53RYsud0WLLndFiy53RYsud0WLLndP+AEgH/ lBAA/6YPAOO4CwDSxgoAzNcLAMPjHgK54jEKr+A9GKTdRieZ2U43jdRWRIPRXU96z2RYcs1qX2vL cmVlynlqYMmCb1vJi3JXyJZ1VMiid1LIr3hRycB4UMrbd1HG6HNSwOtvUr/sb1K/7G9Sv+xvUr/s b1K/7G9Sv+xvUr/sb/+HDgH/mw0A364HANC8CADHyQgAwdsLALfoIAOt5zENpOY9GZnkRCaO4kwz hOBUPnveXEdz3WNPa9xqVmXaclxg2npgW9mDZFfZjGdT2ZdqUNmjbE7ZsW1N2sJtTNvcbE3Y7GpO z/BnTs/wZ07P8GdOz/BnTs/wZ07P8GdOz/BnTs/wZ/+PCwDppAQA0bQGAMW/BgC8zQgAtOkOAaru IgWi7jMOl+07GY3sQiSD60kue+pTNnPpXD5s6WREZ+lsSWLodE1e6HxRWuiFVFbojlZT6ZhZUemj Wk7psFxN6r5cTOvSXUvq6V1K4/NcSuPzXErj81xK4/NcSuPzXErj81xK4/NcSuPzXPmZAwDUrAIA xbcEALnDBQCw0ggAp/YRAZ71JAaV9TIOivU6F4H1QSB49UgncPVQLmr0WjRl9GM4YPRrPF31dD9Z 9XxCV/WERFT1jUZR9pdIT/ahSk32rEtL97lMSvfITUn44E1I9/NNSPf0TUj39E1I9/RNSPf0TUj3 9E1I9/RNSPf0TdqjAADHsQIAuLsDAK3JBACj2QcAmv0UApL9JweH/i8Nff43FHT/Pxts/0cgZv9O JWD/Vylc/2AtWf9pMFb/cTJT/3g0Uf+ANk//iTdN/5I5S/+cOkn/pjtI/7E8Rv+9PUX/zD1E/+Y+ RP/nPkT/5z5E/+c+RP/nPkT/5z5E/+c+RP/nPsusAAC5tgEArMIBAKDQAgCV5QcAjv8YA4T/JAZ6 /ywLcP80EGj/PBVh/0QZW/9LHVb/UyBT/1siUP9jJE3/ayZL/3MnSf96KUj/gipG/4orRP+ULEL/ ni1B/6cuQP+xLj//vC8+/80wPv/NMD7/zTA+/80wPv/NMD7/zTA+/80wPv/NMLuxAACsvAAAn8kA AJPZAACJ/AsBgP8XAnb/IAVs/ygJZP8wDV3/OBBX/0ATUf9HFk3/ThhK/1YZR/9cGkT/YxxC/2kd QP9wHj//eB49/4AfO/+IIDr/kSE4/5siN/+kIjb/rSM1/7gjNf+5IzX/uSM1/7kjNf+5IzX/uSM1 /7kjNf+5I622AACfxAAAktIAAIThAAB9/w0Bcv8TAmj/GwRf/yMGWP8rCVH/MwtM/zoNR/9BD0P/ SBFA/04SPf9UEzv/WhQ5/18UN/9lFTX/axYz/3IWMf96Fy//ghcu/4sYLP+TGCv/nBkq/6cZKv+n GSr/pxkq/6cZKv+nGSr/pxkq/6cZKv+nGaG/AACSzAAAhNwAAHj3AABu/woBY/8QAlr/FQNS/x0E S/8kBkb/LAhB/zMJPP86Cjn/QAs1/0UMMv9KDTD/UA0u/1QOLP9ZDir/Xg8o/2QPJv9qDyX/cRAj /3gQIv+AESD/iBEf/5ERH/+RER//kREf/5ERH/+RER//kREf/5ERH/+REf9cIgP/Vy0F/1gzB/9f Ngn/Yz0N/2VGEv9mUBf/ZV4c/2RuIv9hfCf/X4or/16WLv9coTH/W6oz/1qyNf9Zujb/WMM3/1jN Of9X2Dn/VuA6/1XmO/9U7Dz/U/E8/FL1PfhS+T31Uf0981H/PfNR/z3zUf8981H/PfNR/z3zUf89 81H/Pf9cIgP/VywF/1oyB/9hNQn/ZTwN/2dFEv9oTxf/aFwd/2ZtIv9jeyj/YYgs/1+UL/9enzL/ Xak1/1uxN/9auTj/WsE6/1nLO/9Y1Tz/V989/1bmPv9V6z79VPA/+VP1P/ZS+UDzUv1A8FL/PvBS /z7wUv8+8FL/PvBS/z7wUv8+8FL/Pv9dIQP/WCwF/1wwB/9kMwn/aDoN/2tDEv9sThf/bFod/2pq JP9neCn/ZIUu/2KRMv9hnDb/X6Y4/16uOv9dtjz/XL4+/1vIP/9a0kH/Wd1C/1flQ/1W6kT5VfBE 9VT1RfFU+kXuVP5E7FT/QuxU/0LsVP9C7FT/QuxU/0LsVP9C7FT/Qv9eIQP/WSwF/18uBv9mMgn/ bDgM/29BEf9vTBf/cVce/25nJf9rdSv/aIIw/2WONf9kmTn/YqM8/2CrPv9fs0H/XrtC/13ERP9c zkb/WtxH/lnkSPpX6kn1VvBK8FX2Su1V+krpVv5H51b/RedW/0XnVv9F51b/RedW/0XnVv9F51b/ Rf9eIQP/WSsF/2ItBv9qMAj/bzYM/3JAEf90Shj/dVUe/3JkJv9vci3/bH8z/2mLOP9mljz/ZaBA /2OoQ/9hsEb/YLhI/17BSv9dy0v/XNpN+lrjTvVZ6k/wV/FQ61b2UedX+07kWP9L4Vn/SeFZ/0nh Wf9J4Vn/SeFZ/0nhWf9J4Vn/Sf9fIAP/WisF/2UrBv9tLgj/czUM/3c+Ef94SBf/eVIf/3dgJ/90 bi7/cHs1/22HO/9qkkH/Z5tF/2WkSf5jrEz9YbRO+2C8UfpexlP5XdRV9VvjVu9a6ljpWPJZ5Vn3 VuBa+1PbW/9P11v/Tddb/03XW/9N11v/Tddb/03XW/9N11v/Tf9gIAP/XSkF/2gpBv9xKwf/eDML /3w8EP99Rhf/flAf/31dKP95ajD/dXY4/3GCP/xtjUX6apdL+GefT/Zlp1P0Yq9W82C4WfFfwVzw Xc1e7VzgYOha7GHhWvJg2lv2W9Nc+lfPXf1TzF7/Ucxe/1HMXv9RzF7/Ucxe/1HMXv9RzF7/Uf9h HwP/YCcE/2smBf91KQf/fDEK/4E6EP+DRBf/hE0f/4NZKP9/ZjL8enI7+HV+Q/VxiEvybZJR72ma Vu1molvqY6pf6GCyY+ZevGbkXMhp4Vvaa91a6mvTXPBmzV71Ychf+VzEYPxYwWH+VcFh/lXBYf5V wWH+VcFh/lXBYf5VwWH+Vf9iHwP/YyUE/28kBf95KAb/gTAK/4U5D/+IQhb/iUse/4lWKPqFYjP1 gG498Hp5R+x1g1DpcIxY5WuVXuFmnWTeY6Rp22Ctbddft2/UXsNw0V7Scc1d53HHX+5rwmHyZr5i 9mG6Y/lct2P8WLdj/Fi3Y/xYt2P8WLdj/Fi3Y/xYt2P8WP9jHwP/ZiME/3IiBP99Jwb/hS4J/4o3 Dv+NQBX/j0ke+o9TKPSMXzTuhmo/6X90S+N4flXecoZe2G2PZdNqmGrPZ6BtzGWocMljsXPGYrx0 xGHJdcFh4Ha8Y+pxt2TvarRl82WwZvZgrmf5XK5n+VyuZ/lcrmf5XK5n+VyuZ/lcrmf5XP9jHgP/ aCEE/3UgBP+BJQX/iS0I/481DP+SPhT8lEcd9ZZPKO6RWzTni2ZB4IRvTtl9eVjRd4JgzHOKZ8dv k2zEbJtwwGmjc71nrHa6ZrZ4uGXCebZl1XmyZuZ2rmjsb6pp8GmoafRjpmr3X6Zq91+mavdfpmr3 X6Zq91+mavdfpmr3X/9kHgP/ayAD/3geBP+EJAX/jSwH/5M0C/+XPBL4mUUb8JtNJ+iXWTThkGJC 14lsTs6DdVjIfX5hw3iGaL50jm25cJZytm6edbJsp3ivarF7rWm9fKppzX2oauN6pWzpcqJs7Wyg bfJmnm71Yp5u9WKebvVinm71Yp5u9WKebvVinm71Yv9lHQL/bR4D/3sdA/+HIwT/kCoG/5cyCv2c OxD0n0MZ7KFLJeOcVjPalmBBz45pTseIcljAgnphun2CaLV5im6xdZJzrHKad6lwo3qmbqx9o224 fqFtx3+fbuB+nHDndZpw62+ZcfBol3HzZJdx82SXcfNkl3HzZJdx82SXcfNkl3HzZP9lHQL/bx0D /34cA/+KIgT/kykF/5sxCfmgOQ/wo0EY56ZJI96hVDHSml5AyJNnTcCMb1i5h3dhs4J/aK59h26p eo5zpHeWeKB0n3udc6h+mnG0gJhxwoGWctiBlXTleJN06nGSde9rkXXyZpF18maRdfJmkXXyZpF1 8maRdfJmkXXyZv9mHQL/cRsD/4AbA/+MIQP/ligF/54vCPakNw3sqD8V46tIINimUjDMnlxAw5dl TbuRbVezi3RhrYZ8aKeCg26ifot0nXuTeJl5nHyVd6V/knawgZB1voKOdtGCjnjjeo146HOMeO1s i3jxaIt48WiLePFoi3jxaIt48WiLePFoi3jxaP9nHAL/cxoC/4IaAv+PIAP/mSYE/qIuBvOoNQvp rT0T369GHtKpUS/Holo/vptjTLWValeuj3Jgp4t5aKGHgW6cg4h0l4CQeJJ9mXyOfKKAi3qtgoh6 u4OHes2Dh3zifId853WGfOxuhnzwaYZ88GmGfPBphnzwaYZ88GmGfPBphnzwaf9nHAL/dRkC/4UZ Av+SHwL/nCUD+6UsBfCsNAnmsjsQ27NEHc2tTy7Dplk+uZ9hS7CZaFaolHBfoY93Z5uLfm6WiIZz kIWOeIyClnyIgKCAhH+rgoF/uIN/f8qEgYHhfYGB5naBgOtvgIDvaoCA72qAgO9qgIDvaoCA72qA gO9qgIDvav9oHAL/eBcC/4cYAv+UHQL/nyMD+KkqBOyxMQfitzkN1bdCHMmwTi2+qlc9tKNfSque Z1WjmG5fnJR1ZpaQfG2QjYNzi4qLeIaIlHyBhp6AfYSognuEtYR5hMeEeobgf3uF5nd7hetwe4Tu a3uE7mt7hO5re4Tua3uE7mt7hO5re4Tua/9pGwL/ehYC/4oXAv+XHAL/oyEC9K0nA+i1LgXevTUK 0LpAG8S0TCy6rlY7r6heSaaiZVSenWxdl5lzZpCVeWyKkoFyhZCJd3+Nknx7i5t/d4qmgnSJs4Ny isSDdIzgf3SL5Xh1iepxdojtbHaI7Wx2iO1sdojtbHaI7Wx2iO1sdojtbP9rGgL/fRQC/40WAf+a GgH/ph4B8LEjAuS7KQPZwjAJy70/GcC4Siq1slQ6qqxcR6GnY1KZo2pckZ9xZIqbd2uEmH9xfpaG dnmTj3t0kpl+cJCkgW2QsYJrkMGCbZLdf26R5Xhvj+pxcI7tbHCO7Wxwju1scI7tbHCO7Wxwju1s cI7tbP9uGAL/gBIB/5AVAf+eFwH7qxoB7LceAeDDIQHSxi0IxsE9GLq8SSivt1I4pbJaRZytYVGT qWhai6VvYoSidWl+n3xveJ2EdHObjXlumZZ8apiif2eXroBlmL+BZZnYf2iY5XhplupxapTtbGqU 7WxqlO1sapTtbGqU7WxqlO1sapTtbP9xFgL/gxEB/5QTAf+iFAD1sBQA5r4UANnMFQDMyisHwMY7 FrXBRyaqvFE2n7hYQ5azYE6NsGZYhaxtYH6qc2d3p3pscqWCcmyji3ZoopR5ZKGgfGCgrX1fob1+ XqLUfWGh5nZinetwY5vubGOb7mxjm+5sY5vubGOb7mxjm+5sY5vubP90EwH/hxAB/5gQAP6nEADn tw0A1sULANDQEQDFzygFucs5FK7HRSOjw08zmb9XQI+7XkuGuGRUfrVrXHeycWNxsHhpa66AbWat iXJhq5N1XaueeFuqrHlZq7x5WKzSeVqr6HNcp+xuXaTval2k72pdpO9qXaTval2k72pdpO9qXaTv av95EQH/jA4A/54NANyuCADSuwkAzMgJAMfWDgC91SUEstI2EafOQiCcykwvksdUPIjDXEd/wWJQ d75pV3C8cF5qu3djZbl/aGC4iGxct5JvWLaecVW2q3NTt7tzUrfSc1S3629Wsu9qV6/xZ1ev8WdX r/FnV6/xZ1ev8WdXr/FnV6/xZ/9/DgH/kwsA4aUFANKzBwDJvgcAwssIALzdDgC03SMDqtozDZ/W QByU00oqitBSN4DNWkF4y2FKcMloUWrIb1dkxnZcX8V/YFrFiGRWxJJnU8SeaVDErGpPxLxrTsXT ak/F7WhQwPNkUb31YVG99WFRvfVhUb31YVG99WFRvfVhUb31Yf+GCgDwmgQA1KoEAMi2BgC+wQUA t88JALDjEQCo4yUEn+I1DZXgPhmL3kglgdxQMHjaWDpw2F9CadZnSWPVbk9e1HZTWdN/V1XTiVpS 05NdT9OgX03TrWBL1L5gStXYYEvU7V5M0fdcTMz5WkzM+VpMzPlaTMz5WkzM+VpMzPlaTMz5Wv+P AwDaogAAyq8DAL25BAC0xgUAq9QJAKTqFAGc6SgGk+k0DonoPRh/50Qid+ZOKm/mVzJp5V84Y+Vn PV/kb0Ja5HdFVuSASVPkiktQ5JROTeSfUEvlrFFJ5btSSObPUkjm6FJI5PhRSOH8T0jh/E9I4fxP SOH8T0jh/E9I4fxPSOH8T+GZAADNqQAAvrMCALO+AwCoywUAn9oJAJjyGAKQ8ioHhvIzDnzxOxZ0 8UMdbPFLI2bxVClh8V0tXfFmMVnxbjVW8XY3U/F/OlDyiDxN8pI+S/KdQEnzqUFH87ZCRvTHQ0X0 30NE9PBDRPL6QkTy+kJE8vpCRPL6QkTy+kJE8vpCRPL6QtGiAADArgAAsrgBAKfEAgCc0gQAku0M AIz7HAOC+ygHefsxDHD8ORJp/EEXYvxJHFz8UCBX/FkjVP1iJlH9aihP/XMqTP57LEr+gy5I/o0v Rv+YMUT/ojJD/64zQf+7NED/yzQ//+M0P//vNT//7zU//+81P//vNT//7zU//+81P//vNcSqAACz swAAp78AAJrLAACP2gIAhv8PAX7/HAN1/yUGbP8tCmT/Ng5d/z4SWP9FFVL/TRhP/1UaTP9cHEn/ ZB5H/2sfRP9zIEL/fCJB/4UjP/+PJD3/miU7/6QmOv+vJjn/uic4/8onOP/cKDj/3Cg4/9woOP/c KDj/3Cg4/9woOP/cKLWvAACnugAAmsYAAI3UAACB5gEAev8QAXD/GAJn/yEFX/8pB1j/MQpS/zkN Tf9BD0n/SBFF/08TQv9VFED/XBU9/2IWO/9pFzn/cBg3/3kZNf+CGTP/jBoy/5cbMP+hGy//qhwv /7UcLv+/HC7/vxwu/78cLv+/HC7/vxwu/78cLv+/HKm1AACawgAAjM8AAH/eAAB2/wUAbP8OAWL/ FAJa/xsDU/8kBU3/KwdH/zMJQ/86Cj//QQs7/0cMOP9NDTX/Uw4z/1gPMf9eDy//ZBAt/2sRK/9z ESn/fBIn/4YSJf+QEyT/mRMj/6MUIv+rFCL/qxQi/6sUIv+rFCL/qxQi/6sUIv+rFJy+AACNywAA ftoAAHDmAABn/wAAXf8KAVT/EAFN/xUCR/8dA0H/JAQ8/ysFN/8yBjT/OAcw/z0ILf9DCCr/SAko /00JJv9SCiT/Vwoi/10LIP9jCx7/awsc/3MMGv98DBj/hAwX/44NFf+VDRX/lQ0V/5UNFf+VDRX/ lQ0V/5UNFf+VDf9SJQP/TS8E/1EyBv9XNQf/WjwK/1tFDv9aTxP/WV0X/1htG/9Wex//VYki/1OV Jf9SoCf/Uagp/1CxKv9QuCv/T8Es/0/KLf9O1i7/TuQu/07tL/9O8y//Tfgw/038MP9M/zD8TP8w +Uz/L/hM/y/4TP8v+Ez/L/hM/y/4TP8v+Ez/L/9TJAP/TS8E/1QwBf9ZNAf/XToK/19DDv9eThP/ XVoY/1tqHP9aeSH/WIYk/1aSJ/9VnSn/VKYr/1OuLf9Sti7/Ur4v/1HHMP9R0jH/UOEy/1DrMv9P 8jP/T/cz/078NPtO/zT4Tf809U7/MvRO/zL0Tv8y9E7/MvRO/zL0Tv8y9E7/Mv9TJAP/Ti4E/1Yv Bf9cMgf/YDgK/2JBDv9iTBP/YFgY/19oHf9ddiL/W4Mm/1mPKf9Ymiz/VqMu/1WsMP9VszH/VLsz /1PENP9TzjX/Ut42/1LpN/9R8Tf/UfY4+1D7OPdP/zj0T/838VD/NfBQ/zTwUP808FD/NPBQ/zTw UP808FD/NP9UIwP/UC0E/1ktBf9fMAf/YzYK/2ZADv9mShP/ZVUZ/2NlHv9hcyP/XoAo/1yMLP9b ly//WaEx/1ipNP9XsDX/Vrg3/1XBOP9Vyzn/VNo6/1TnO/9T8Dz7UvY99lH7PfJR/z3vUv877FL/ OOtS/zjrUv8461L/OOtS/zjrUv8461L/OP9VIwP/UisE/1wrBf9jLgf/ZzQK/2o+Dv9rSBP/alMZ /2hhH/9mcCX/Y30q/2CIL/9ekzP/XJ02/1ulOP9arTr/WLU8/1e9Pv9Xxz//VtNB/FXkQvlV7kP1 VPZE8FP8ROxU/0HpVf8/5lX/POVV/zvlVf875VX/O+VV/zvlVf875VX/O/9WIgP/VSkE/18oBf9n Kwb/bDIJ/288Df9wRhP/cFAZ/25dIP9rayf/aHkt/2WEMv9ijzf/YJk7/l6hPv1cqUH7W7FD+lm5 RflYwkf3V85I9VbgSvFW7EvuVfZM6Vb8SuVX/0biWP9D3ln/QN1Z/z/dWf8/3Vn/P91Z/z/dWf8/ 3Vn/P/9XIgP/WScE/2MmBP9rKAb/cTAI/3Q5Df91QxP/dU0Z/3VZIf9xZyn/bXQw/WqANvpmijz4 Y5RA9mGcRPRepEjyXKxL8Vu0Te9ZvVDtWMlS61faU+dW6VXkV/VU4Vn9T9ta/0vVW/9I0Fz/RM9c /0TPXP9Ez1z/RM9c/0TPXP9Ez1z/RP9YIgP/XCQD/2YjBP9vJgX/di4I/3o3DP97QRL/e0sZ/3tV If53Yyr5c28y9m57OvJqhUHvZo9H7GOXTOpgn1DoXadU5VuvV+NZuFrhV8Nd31fSXtpW5l7WWfNa 0lz8Vc1e/1DJXv9MxV//ScRf/0jEX/9IxF//SMRf/0jEX/9IxF//SP9ZIQL/XyID/2ohBP90JAX/ eywH/381C/+BPhH/gkgZ/YJSIfd+XyvyeWs17XN1PulugEblaYlN4WWRVN5hmVnaX6Jc1l2qX9Nc s2HQW75izlvMY8ta4mPIXPFgxl/6WsFg/lW9Yf9RumL/Tbli/0u5Yv9LuWL/S7li/0u5Yv9LuWL/ S/9ZIQL/YiAD/24fA/94IwT/fysG/4QzCv+HPBD+iEUX94hOIfCEWyvqfmY25HhwQd9yekvZbYNS 02mMWM9mlVzMZJ1fyWKlYsZgrmTDX7hmwV7EZ79e2Gi8X+tmumP3X7Zk+1mzZf5VsGX/UK9l/0+v Zf9Pr2X/T69l/0+vZf9Pr2X/T/9aIAL/ZR4D/3EcA/98IgP/hCkF/4kxCf+MOg75jkMW8Y5MIOqK WCvjhGI3235sQ9N4dkzNc39TyG+HWcRrkF7AaZhivWagZbplqGi3Y7JqtWK+a7NizmywYuVrr2b0 ZKxn+F2paPxYp2n/U6Zp/1Kmaf9Spmn/UqZp/1Kmaf9Spmn/Uv9bIAL/ZxwC/3QaAv9/IAP/iCcE /44vB/2SNwz0lEAU7JVJHuSQVSrbil830YRpQ8p9ckzEeHtUv3SDWrpxi1+2bpNks2ubZ69ppGqt Z61sqma4bqhmx2+lZt9vpWrxaKJr9mGgbPlbnmz9Vp5s/lWebP5Vnmz+VZ5s/lWebP5Vnmz+Vf9c HwL/ahoC/3cZAv+DHwP/jCUE/5ItBvmXNQvvmT4S55tGHN6WUinSkFw3yolmQsODb0y8fndUt3l/ W7J1h2Cuco9lqnCXaKZtn2yjbKluoGu0cJ5qwnGcatdxnG7ua5pv82SZb/hel3D8WJdw/VeXcP1X l3D9V5dw/VeXcP1Xl3D9V/9eHgL/bBkC/3oYAv+GHQL/jyMD/5YrBfWbMwnrnzsQ4qBFGdebUCjM lFo2xI1jQryIbEy1gnRUsH58W6t6hGCmd4tlonSTaZ5ynG2bcKVwmG+wcpVuvXOTb9BzlHLrbpNz 8maSc/ZgkHP6WpBz+1mQc/tZkHP7WZBz+1mQc/tZkHP7Wf9fHQL/bhcC/30XAv+JHAL/kiIC/Zop BPGgMAfnpDkN3qVDF9GfTifHmFg1vpJhQbaMaUuvh3FUqYJ5W6R/gGCffIhlm3mQapd2mW2TdaJx kHOsc41zunSLc8t1jHbncIx38GiLd/Viinf5XIp3+lqKd/painf6Wop3+lqKd/painf6Wv9hGwL/ cRYC/38WAf+LGgH/lSAC+Z4mA+2kLgXjqTYK2KlAFsyjTCbCnFY0uZZfQLGQZ0qqi29TpId2Wp6D fmCZgIVllH2NapB7lm6MeZ9xiXiqdIZ3tnWEd8d2hXrkcoZ772qFe/RkhXv4XYV7+VyFe/lchXv5 XIV7+VyFe/lchXv5XP9jGgL/cxQB/4EVAf+OGQH/mR4B9qEjAuqpKgTgrzIH0qw+FcemSyS9oFUz tJpeP6yVZUqlkG1Snox0WZiIe2CThYNljoKLaoqAk26Gfp1xgn2ndH98tHZ9fMV2fX7gc39/7mt/ f/Nlf373Xn9++F1/fvhdf374XX9++F1/fvhdf374Xf9lGAL/dRMB/4QUAf+RFwH/nBsB8qUgAeau JgLbtC4Gzq89FMOqSSO5pFMxr55cPqeZZEmglGtRmZByWZONeV+OioBkiYeIaYSFkW6Ag5pxfIKl dHmBsnZ3gcJ2doLddHmE7Wx5g/JmeoL3X3qC+F56gvheeoL4XnqC+F56gvheeoL4Xv9nFwL/dxEB /4cTAf+UFQD+nxgA7qocAeKzIQHVtyoFybM7E76uSCK0qFIwq6NaPaKeYkebmWlQlJVwWI6Sd16I j35kg42GaX6Lj215iZhxdoejc3KGr3Vwhr92b4fXdXOJ7W1ziPJmdIf2YHSH9190h/dfdIf3X3SH 9190h/dfdIf3X/9pFQH/ehAB/4oRAP+XEgD5oxQA6q4VAN25FwDPuigExLc5EbmyRiCvrFAvpqdY O52jYEaVn2dPjptuVoiYdV2ClXxjfZOEaHiRjGxzj5Zwb46gcmyNrXRqjb11aY3SdWyQ7W1tjvFn boz2YG6M919ujPdfboz3X26M919ujPdfboz3X/9sEwH/fQ8B/40QAP+bEAD0qA8A5bUNANW/EADK viYDv7s3ELS2RB6qsU4toa1XOZipXkSQpWVNiaJsVYKfc1t8nHphd5qBZnKYimptlpRuaZWecWaU q3NjlLpzYpXPc2aX7GxnlfFmaJP2YGiS919okvdfaJL3X2iS919okvdfaJL3X/9vEQH/gQ4A/5EO APKgDADarQkA07gKAM7DDgDEwiMDub81Dq+7Qhykt0wqm7NVN5KvXEGKrGNKg6lqUnymcVl2pHhe cKJ/Y2ugiGdnnpFrY52dbl+dqXBdnblwXJ3NcF+f62thnfJlYpr2YGKZ915imfdeYpn3XmKZ915i mfdeYpn3Xv9zEAH/hQwA+pYKANulBgDRsQgAy7sIAMbHCwC9xyACssUyC6jBQBmevkonlLpTNIu2 Wj6DtGFHfLFoT3Wvb1VvrXZaaqt9X2WphmNhqJBnXaebalmnqGtXp7hsVqfMbFio6Whap/RjW6P4 Xlyj+V1co/ldXKP5XVyj+V1co/ldXKP5Xf94DQD/iwkA35wDANKpBgDJtAcAwr4GALzMCAC1zRwB q8svCaHIPRaXxUgjjcJRL4S/WDp8vF9DdbpmSm+4bVBpt3RVZLV8Wl+0hV5bs49hV7OaZFSyp2VS srdmUbPMZlKz6WNUsvdfVa76W1at+1pWrftaVq37Wlat+1pWrftaVq37Wv9+CQDykQIA1qECAMqt BQDAtwUAuMIFALLPCQCr1BcAo9MrBpnQOhKPzkUfhctOKn3JVjR1x109bsVlRGjEbEljwnNOXsF7 U1nBhFZVwI9ZUr+bXE+/qF1Nv7heTMDNXkzA6lxOv/lZT7z+VVC6/lVQuv5VULr+VVC6/lVQuv5V ULr+Vf+FAgDdmAAAzaYCAMGxAwC3ugMArsYGAKfTCgCg3RUAmd0oBJDbNw6G2UIZfdZLJHXUVC1t 0lw1Z9FjPGHQa0Fcz3JGWM97SVTOhE1Qzo9QTc6bUkvOqVNJzrlUSM/PVEjO61NJzvhQSsv/TkrK /01Kyv9NSsr/TUrK/01Kyv9NSsr/TeePAADRnwAAw6sBALe0AgCtvwMAo8sGAJvZCgCU5RoBjeUr BoTkNQ174z8Wc+JIHmzhUiZm4VosYOBiMlvgajZX4HI6U997PVDfhUBN349DSuCbRUjgqEZG4LhH ReHMR0Xg6EdF3/ZGRd7/REXe/0RF3v9ERd7/REXe/0RF3v9ERd7/RNmXAADHpgAAuLAAAKy5AQCi xQIAmNEGAI/rDQCJ7h8CgO4rBnjtNAxw7T0TaO1GGWLtTh5d7VcjWe1gJ1XtaCpS7XEtT+15L0zt gzJK7o00R+6YNUXupTdD77M4QvDEOEHw3zlB7+84QO39OEDs/zhA7P84QOz/OEDs/zhA7P84QOz/ OMugAAC6qwAArbQAAKHAAACWzAEAi9kFAIT4EQF8+B8CdPgpBmz4Mgpk+DsPXvlDE1j5SxdT+VMa UPlbHU36ZB9K+mwhSPp0I0b6fiVE+4gmQfuTKED7nik+/KsqPfy5Kzv9yys7/eIrOvz0Kzr89ys6 /PcrOvz3Kzr89ys6/PcrOvz3K72oAACusAAAobwAAJXIAACJ1AAAfugFAHf/EgFv/xwCZ/8mBWD/ LwhZ/zcLVP8/Dk//RxFL/04TR/9WFUT/XRZC/2QYQP9sGT3/dRo7/34bOf+JHDf/lB02/6AeNf+s HzP/uR8z/8gfMv/iIDL/5yAy/+cgMv/nIDL/5yAy/+cgMv/nILCtAACitwAAlcQAAIfQAAB73QAA cv0JAGr/EQFh/xkCWv8iA1T/KgVO/zIHSf86CUX/QQtB/0gMPv9ODjv/VQ84/1sQNv9iETT/aREy /3ISL/97Ey3/hhQr/5IVKv+eFSn/qRYo/7MWJ//CFif/xxYn/8cWJ//HFif/xxYn/8cWJ//HFqS0 AACWwAAAh8wAAHraAABt6wAAZP8FAFz/DgFU/xQBTf8cAkj/JARC/ywFPv8zBjr/OQc2/0AIM/9F CDD/Swku/1EKK/9XCin/XQsn/2QLJP9sDCL/dg0g/4ANHv+MDh3/lw4c/6EOG/+sDxv/rg8b/64P G/+uDxv/rg8b/64PG/+uD5e8AACIyQAAedYAAGvjAABf9gAAVv8AAE7/CgBH/xABQf8WAjz/HQI3 /yQDMv8qAy//MAQr/zYFJ/87BSX/QAUi/0UGIP9KBh7/UAYb/1YHGf9cBxf/ZAgV/20IE/93CBH/ gQkQ/4sJEP+VCQ//mAkP/5gJD/+YCQ//mAkP/5gJD/+YCf9JJwL/RDEE/0sxBP9QNAb/UjoI/1JD C/9RTg//T1wT/01rFv9MeRn/S4cb/0mTHf9InR//SKYg/0euIf9HtSL/Rr0j/0bGI/9G0CT/RuAk /0bqJf9G8yX/Rvol/0b/Jf9G/yX/Rv8l/0b/JP1G/yP9Rv8j/Ub/I/1G/yP9Rv8j/Ub/I/9JJwL/ Ri8D/00vBP9SMgb/VTkI/1VCC/9UTQ//UlkT/1BoF/9Pdxr/ToQd/0yRH/9LmyH/SqQi/0qsI/9J syT/Sbsl/0jEJv9IzSb/SN0n/0joJ/9I8Sj/SPko/0j/KP9I/yj+SP8o+0j/J/lI/yb5SP8m+Uj/ JvlI/yb5SP8m+Uj/Jv9KJwL/SC0D/1AtBP9VMAb/WDYI/1lAC/9YSw//VVYT/1RmGP9SdBv/UYEe /0+OIf9OmCP/TaEl/02pJv9MsSf/S7go/0vBKf9Lyir/Stkq/0rmK/9K8Cv/Svgs/0r/LP1K/yz6 Sv8r90r/KfVK/yj1Sv8o9Ur/KPVK/yj1Sv8o9Ur/KP9LJgL/SysD/1IrBP9YLgX/WzQI/10+C/9d SQ//WlQU/1liGP9XcR3/VX4g/1OKI/9SlSb/UZ4o/1CmKv9Priv/TrUs/069Lf9Nxy7/TdMv/0zj MP9M7TD8TPYx+kz+MfdM/zH1Tf8v8k3/LfBN/yvwTf8r8E3/K/BN/yvwTf8r8E3/K/9LJgL/TikD /1YpBP9cKwX/YDEH/2I7C/9iRg//YFEU/15fGf9cbR7/Wnoj/1iGJv9WkSn/VZos/1OiLv9SqjD/ UbEx/1G5M/9QwzT+T841+0/fNvhO6zf1TvU48k79OPBP/zXuUP8z61H/MelR/y/pUf8v6VH/L+lR /y/pUf8v6VH/L/9MJQL/UScD/1omA/9gKAX/ZS8H/2g5Cv9oQw//Z04V/2VaGv9iaCD/X3Yl/12B Kv9ajC7+WJYx/FeeNPtVpjb5VK04+FO1OvdSvjv1Uck981HaPvBQ6D/sUPNA6VH9PuhT/zvmVP84 41X/NeFV/zPhVf8z4VX/M+FV/zPhVf8z4VX/M/9NJAL/VCQD/10jA/9lJQT/ai0G/202Cv9uQA7/ bUsU/2tWG/9oZCH+ZXEo+2J9LfhfhzL2XJE281qZOvJYoT3wV6lA7lWxQuxUuUTrU8RG6VLSSOVR 5UniUvJI31T8RN1W/0DbWP891ln/OtJZ/zjSWf840ln/ONJZ/zjSWf840ln/OP9OJAL/WCED/2Eg A/9qIwT/cCsF/3M0Cf90Pg7/dEgU/3JSG/tvXyP2a2wq8md3Me9jgjfsYIs96V2UQeZanEXkWKRJ 4lasTOBUtE7dVL9Q21TNUNdT4lHSVPBO0Ff7Ss5a/0XNXP9CyVz/PsVc/zzFXP88xVz/PMVc/zzF XP88xVz/PP9PIwL/Wx8C/2UdAv9uIQP/dSkF/3kxCP96Owz/ekQT+nlOG/R2WyPucWcs6WxyNeVo fDzhY4VD3WCOSNldl0zVXJ9P0lqnUc9ZsFPNWLpUy1jGVclX2lbFV+xVw1v5T8Je/0rAX/9GvWD/ Qrpg/0C6YP9AumD/QLpg/0C6YP9AumD/QP9SIQL/Xh0C/2kaAv9zHwP/eiYE/34vBv+BOAv7gUES 84BLGux8VyPmd2Mt4HFtONptd0DTaYBGz2WJS8tjkU/IYJlSxV+hVcJdqlfAXLNZvly/Wrxbzlu4 W+Vbt171Vbdi/0+1Y/9KsmT/RrBk/0OwZP9DsGT/Q7Bk/0OwZP9DsGT/Q/9VHwL/YRoC/20YAv93 HQL/fiQD/4QsBf6HNQn1iD4Q7YdIGOWDVCLefl8u1HhpOM5zc0DJbnxHxGuETMBojFG9ZZRUumOc V7dipVq0YK5csmC5XrBfx16tX99frGLxWaxl/lOqZ/9OqGf/SqZn/0amZ/9Gpmf/RqZn/0amZ/9G pmf/Rv9XHQL/ZBgC/3AWAv97HAL/gyIC/4kqBPmMMgfvjjsN545EFt6KUSHUhFwtzH5mOMV4b0HA dHdIu3CATbdtiFKzapBWsGiYWaxmoFyqZalfp2S0YKVjwmGjY9ViomXtXaJp+1ehav9Rn2v/TJ5r /0mea/9Jnmv/SZ5r/0mea/9Jnmv/Sf9ZHAL/ZxYB/3MVAf9+GgH/hyAC/40nA/SSLwbqlDgL4ZRC E9aPTiDMiVktxYNjN759a0C4eXRIs3V8Tq5yhFOqb4xXp22UW6NrnF6gaaVgnmiwY5tnvWSZZ85k mGnoYZpt+VqZbv9Ul27/T5Zu/0uWbv9Llm7/S5Zu/0uWbv9Llm7/S/9bGgL/aRQB/3YUAf+BGAH/ ih0B/JEkAvCXLATlmjQI3Jo/Ec+UTB/GjlcsvohgN7eCaUCxfnFIrHp5Tqd3gFOjdIhYn3GQXJtv mF+YbaFilWysZJNsuWaRa8lmkG3kZJFx9lyRcv5WkHL/UZBy/02Qcv9NkHL/TZBy/02Qcv9NkHL/ Tf9dGAH/axMB/3kTAf+EFgH/jhsB+JUhAeubKAPhoDAG1Z49EMqYSh7BklQruYxeNrGHZj+rgm5H pn52TqF7fVOceIVYmHaNXJR0lV+Rcp5jjnGpZYtwtWeJcMVniHDgZop09F6LdvxYinb/Uol2/06J dv9OiXb/Tol2/06Jdv9OiXb/Tv9fFwH/bhEB/3sSAf+HFAD/kRgB9JkdAeegIwLdpSsEz6E7D8Wc SB28llMqtJBcNayLZD+mh2xHoINzTZuAelOWfYJXknqKXI54kmCKdpxjh3WmZoR0smiCdMJogHTb aIN48mCEevtZhHn/VIR5/0+Eef9PhHn/T4R5/0+Eef9PhHn/T/9hFQH/cBAB/34RAP+KEgD/lBUA 8J0ZAOOlHgHXqCgDy6U5DsGfRhu3mlEpr5VaNKeQYj6hi2pGm4dxTJWEeFKQgX9XjH+HXIh9kGCE e5ljgHqjZn15sGh7eb9pennWaXx88GF+fvpafn3+VX59/1F+ff9Rfn3/UX59/1F+ff9Rfn3/Uf9j FAH/cg8B/4EQAP+NEQD8mBIA7KETAN+qFgDRrCYDx6g3DbyjRBqznk8nqplYM6OUYD2ckGhFloxv TJCJdlKLhn1XhoSFW4KCjl9+gJdjen+hZnd+rWh1fr1pc37SaXaB7mJ4gvpbeIL+VnmB/1F5gf9R eYH/UXmB/1F5gf9ReYH/Uf9lEwH/dQ4A/4MOAP+QDgD1mw4A6KYOANmvDwDMryQCwqs1DLinQxmu ok4mpp1WMZ6ZXjuXlWZEkJFtS4uOdFGGjHtWgYmDW3yHi194hpVidISfZXGDq2hug7ppbYPOaW+G 62Nyh/lcc4b9VnOF/1Jzhf9Sc4X/UnOF/1Jzhf9Sc4X/Uv9oEQH/eA0A/4YNAPaTDADeoAkA1qkK ANKyDQDHsiICva8zCrOrQReqp0wkoaJVMJmeXTqSmmRCi5drSYWUclCAknlVe4+BWnaNiV5yjJJi boqdZWuJqWdoibhoZ4nLaGmL6WNsjflcbYz9V22K/1Jtiv9SbYr/Um2K/1Jtiv9SbYr/Uv9rEAH/ ewsA/4oKAOKYBgDWowgA0KwJAMu1CwDBth8BuLQxCa6wPxakrEoinKhTLpSkWziMoGJAhp5pSICb cE56mXdTdZZ+WHCUh1xsk5BgaJKbY2SRp2VikLZmYJHJZmKS52JllPhcZ5L9V2eR/1Jnkf9SZ5H/ UmeR/1Jnkf9SZ5H/Uv9uDgD/fwkA8Y4FANmbBQDPpgcAya8HAMS5CAC7uhwBsrgvB6i1PROfsUgg lq5RK46qWTWGp2A+gKVnRXqibkt0oHVRb558VWqchVlmm45dYpqZYF6ZpmJcmbRjWpnHY1ua5WBf m/dbYJr+VmGY/1JhmP9SYZj/UmGY/1JhmP9SYZj/Uv9yCwD/gwUA35MBANGfBADJqgYAwbIFALu9 BAC0vxgAq74sBaK7OhGZuEUdkLVPKIeyVzKAr146ea1lQnOrbEhuqXNNaad6UWSmg1ZfpI1ZXKOY XFijpF5Wo7NfVaPGX1Wk5F1YpPZYWqP/VFuh/1Bbof9QW6H/UFuh/1Bbof9QW6H/UP93BwDwiQAA 1pgAAMukAwDBrQQAubYDALLABACrxRQAo8UoBJvCNw6RwEMZib1MJIC6VS55uFw2crZjPW20akNn s3FIYrF5TF6wgVBar4tUVq+XVlOuo1hQrrJZT67GWU+u5FhRrvZUU67/UFSs/01UrP9NVKz/TVSs /01UrP9NVKz/Tf99AADfjwAAzp0AAMOoAgC5sAIAsLoCAKjEBQChzA8Am8wjApLKMwqJyD8VgcZJ H3nEUihywlowa8FhN2a/aDxhvnBBXL14RVi8gUlUvItMUbuWT067o1FMu7NSSrvGUkq75FFMu/ZO Tbr/S065/0lOuf9JTrn/SU65/0lOuf9JTrn/Se+FAADUlQAAx6MAALqsAQCwtAAAp78DAJ7JBgCV 1AsAkNUdAYnULgaA0jwQeNBGGXHPTyFqzlgpZM1fL1/MZzRay245Vsp3PVLKgEBPyYtDTMmXRUnJ pEdHybNIRsrISEbK5kdHyfdFR8j/Q0jH/0JIx/9CSMf/QkjH/0JIx/9CSMf/Qt6NAADLnAAAvacA ALGwAACmugAAnMQDAJPPBwCK3QwAhd8dAX7fLAV23jcLb95DE2jdTRpi3FUgXdtdJljbZSpU2m0u UNp2Mk3agDVK2os3R9qXOUXapDtD27Q8QtzIPELb5TtC2vQ6Qtn+OkPY/zlD2P85Q9j/OUPY/zlD 2P85Q9j/OdCWAADBowAAsqwAAKe1AACcwAAAkcoDAIfWBwCA6REAeekgAnLpLAVr6TYKZOk/D17p SBRZ6VEZVehaHFHpYiBO6WsjS+l0JUjpfSdG6YgqQ+mTK0HqoC1A6q8uPuvALj3s2y496u8uPej8 Lj3n/y095/8tPef/LT3n/y095/8tPef/LcWfAAC1qQAAqLEAAJy8AACQxwAAhNIBAHrfBgB09BMA bfQgAmb0KgRf9DQIWvU9C1T1RQ9P9UwSTPVVFEn2XRdG9mUYRPZuGkH2dxw/94EdPfeNHzv3mSA5 +KYhOPi1Ijf5yCI2+eMiNvjzIjb3/CI29/wiNvf8Ijb3/CI29/wiNvf8IremAACprgAAnLkAAJDE AACDzwAAd9sAAG/2CgBn/xMBYP8dAlr/JwNU/zAFT/84CEr/QApG/0gMQ/9PDkD/Vg89/14QO/9l Ejj/bhM2/3cUNP+CFTL/jxYw/5sXL/+pFy7/txgt/8gYLP/hGCz/7xgs/+8YLP/vGCz/7xgs/+8Y LP/vGKurAACetQAAkMEAAILMAAB12QAAaeQAAGH/CQBb/xEAVP8ZAU7/IgJJ/ysERP8yBUD/OgY8 /0EHOf9HCDb/Tgkz/1QKMf9bCy7/Ygws/2sMKf91DSf/gA4l/40OJP+aDyP/phAi/7MQIf/BECH/ 0BAh/9AQIf/QECH/0BAh/9AQIf/QEJ+yAACRvgAAg8oAAHXWAABn4gAAW/EAAFT/BgBO/w4ASP8U AUL/HAI9/yQCOf8rAzX/MgQx/zgELv8+BSv/QwUo/0kGJf9PBiP/Vgch/10HHv9lCBz/bwgZ/3oJ F/+HCRb/lAkV/58KFP+qChT/swoU/7MKFP+zChT/swoU/7MKFP+zCpO7AACExwAAddMAAGfhAABY 6AAATvsAAEj/AABB/woAO/8QATb/FQEx/xwBLf8iAin/KAIl/y0CIv8yAx//OAMc/z0DGv9CAxf/ SAQV/04EE/9VBBH/XQUP/2cFDf9yBQz/fQUK/4kGCv+TBgn/nAYJ/5wGCf+cBgn/nAYJ/5wGCf+c Bv8/KgL/PzAD/0QwA/9IMwT/STkG/0hCCP9GTQv/RVsO/0NpEf9BdxP/QIUV/z+RFv8+mxj/PqQY /z2rGf89sxr/Pboa/z3DGv88zBv/PNsb/zznG/888Bv/PPgb/z3/G/89/xv/Pf8b/z3/Gv89/xn/ Pf8Z/z3/Gf89/xn/Pf8Z/z3/Gf9AKgL/QS4D/0cuA/9KMQT/TDcG/0tACP9KSwv/SFkP/0ZnEf9E dRT/Q4IW/0KPGP9BmRn/QaIa/0CpG/9AsRv/P7gc/z/AHP8/yR3/P9Yd/z/lHf8/7x3/P/ce/z/+ Hf8//x3/P/8d/0D/HP5A/xv+QP8b/kD/G/5A/xv+QP8b/kD/G/9AKgL/QywD/0ksA/9NLwT/TzUG /1A+CP9OSQz/TFYP/0pkEv9IchX/R38Y/0aLGf9Flhv/RJ8c/0SnHf9Drh7/Q7Uf/0K9H/9CxiD/ QtEg/0LiIf9C7SH/QvUh/0L9If1C/yH7Q/8g+kP/H/lD/x75Q/8e+UP/HvlD/x75Q/8e+UP/Hv9B KQL/RioD/0wpA/9RLAT/UzIG/1Q8CP9URwz/UVIP/09gE/9Nbxf/THwZ/0qIHP9Jkh7/SJsf/0ej If9HqyL/RrIj/0a6I/9GwyT/Rc0l/0XeJf9F6ib8RfQm+UX8JvZF/yb1Rv8k9Eb/I/NH/yHzR/8h 80f/IfNH/yHzR/8h80f/If9CKAL/SScC/1AmA/9VKAT/WC8F/1o5CP9aRAz/V08Q/1VcFP9Tahj/ UXcb/0+DH/9OjiH/TZcj/0yfJf9Lpyb/Sq4n/0q2Kf5Jvir9Sckq+kjZK/dI5yz0SPIs8Uj7LO9J /yrtSv8o7Er/J+tL/yXrTP8l60z/JetM/yXrTP8l60z/Jf9DKAL/TSQC/1QjA/9aJQP/XiwF/2A2 B/9gQQv/XkwQ/1tXFf9ZZhn/V3Ie/1V+Iv5TiSX8UZMo+lCbKvlPoyz3Tqou9k2yL/RMujDzTMQy 8kvRM+5L5DTqSvA050v6M+VN/zDkTv8t4k//K+FQ/ynhUP8p4VD/KeFQ/ynhUP8p4VD/Kf9GJQL/ UCEC/1ggAv9fIQP/ZCoE/2YzB/9mPQv/ZUgQ/2JTFf9gYRv8XW0g+Fp5JfVYhCnzVo0t8FSWMO5S njPtUaU161CtN+lOtTnnTr875k3MPONM4D3fTe483E/5OdlR/zXWUv8y1FP/MNNU/y3TVf8t01X/ LdNV/y3TVf8t01X/Lf9KIwL/VB4C/1wcAv9kHwL/aScE/2wwBv9tOgr/bEQP/WpPFfhnXBzzY2gi 72B0KOtdfi7oWogz5VeRN+NVmTrgU6A+3lKoQNxRsUHZULtC1lDIQ9NQ3ETPUOxDzFL4P8tV/zvJ V/83yFj/NMdZ/zLGWf8xxln/McZZ/zHGWf8xxln/Mf9NIAL/VxsC/2AZAv9pHQL/byUD/3ItBf90 Nwj9c0EO9nFLFPBuWBzqamQk5WVuK+BheTPcXoI42FyLPNNalD/QWJxCzlejRMtVrEbJVbVHx1TA ScVU0EnCU+ZJwFb1Rb5Z/0C9W/88vFz/Obtd/zW6Xf81ul3/Nbpd/zW6Xf81ul3/Nf9QHgL/WxkB /2QWAf9tGwL/dCIC/3gqBP96Mwf2ej0M73hHE+d1VBvhcF8l2mtqLdNndDTOZH06ymGGP8dfjkLE XZZFwVueSL9apkq8Wa9Muli6TbhYyE62WN9OtFnwS7Nc/UWyX/9AsmD/PLBh/zmwYf84sGH/OLBh /ziwYf84sGH/OP9SGwH/XhYB/2gUAf9yGQH/eR8C/34nA/mAMAXwgTkK54BDEeB8UBrWd1skz3Jm LsltbzXEang7wGeBQLxkiUS5YpFItmCZSrNfoU2xXapPrly0UaxcwVKqXNRSqF3rUKhg+kmoY/9E qGT/QKZl/zymZf87pmX/O6Zl/zumZf87pmX/O/9VGQH/YRQB/2wSAf92FwH/fRwB/4MjAvSGLATq iDUH4YdADtaCTBnNfVgkxndiLcBzazW7b3Q8t2x8QbNphEavZ4xJrGWUTKljnE+mYqVRpGGvU6Jg vFWgYM1VnmDmVJ5k902fZ/9Hn2n/Q55p/z+daf89nWn/PZ1p/z2daf89nWn/Pf9XFwH/YxIB/28R Af95FAH/gRkB+4cgAe+MJwLkjjAF2o09DM+HShjHglUjv31fLbl4aDWzdHA8r3F4QqtugEanbIhK pGmQTqBomFGdZqFTm2WrVZhkuFeWZMhYlGThWJVo9FCWa/9Kl2z/RZZt/0GWbf9Alm3/QJZt/0CW bf9Alm3/QP9ZFQH/ZhAB/3IQAP99EgD/hRYA9owbAeqRIgHflCsD05E6C8mMRxfAh1MiuYJcLLJ9 ZTWteW08qHV1QqNzfUegcIRLnG6MTplslVKVa55UkmmoV5BptFmOaMNZjGjcWo1s8lOPbv9MkHD/ R49x/0OPcf9Bj3H/QY9x/0GPcf9Bj3H/Qf9bFAH/aA8A/3UPAP+AEQD/iRMA8pAXAOWWHADZmSYC zZU4CsSQRRa7i1Ehs4ZaLK2CYzSnfms7oXpyQZ13ekaZdYFLlXOJT5JxkVKOb5tVi26lWIhtsFqG bL9bhG3VW4Zv71WIcv1OiXT/SYl0/0SIdP9DiHT/Q4h0/0OIdP9DiHT/Q/9dEgH/aw4A/3gOAP+D DwD9jBAA7ZQSAOCaFQDTnCQCyJk2Cb+UQxW2j08gropYK6eGYTOhgmg7nH9wQZd8d0aTeX5Lj3eG T4t1j1KIc5hWhHKiWIFxrlp/cbxcfXHQXH9z7FaBdvtPg3j/SoN4/0WCeP9Egnj/RIJ4/0SCeP9E gnj/RP9fEQH/bQwA/3oNAP+FDQDyjw0A55gNANufDgDOnyIBxJ00CLqYQhSyk00fqo9WKqOKXzKc hmY6l4NtQJKAdUWNfnxKiXyEToV6jFKCeJVWfnegWXt2q1t5dbpcd3bNXHh36lh7evpRfXz/S318 /0Z9fP9FfXz/RX18/0V9fP9FfXz/Rf9hEAH/bwsA/30LAPWICgDfkwgA2JsKANOiDADJox8Bv6Ay B7acQBOtl0sepZNUKJ6PXTGYi2Q5kohrP42FckWIg3pK/+LwAElDQ19QUk9GSUxFAAgKhICBToB/ ilJ8fZNVeHydWHV7qVtyerhccXrKXHJ86Fh1fvlRd4D/THeA/0d3gP9Gd4D/RneA/0Z3gP9Gd4D/ Rv9kDwD/cgkA/38IAOWMBQDYlgcA0Z4JAM6lCgDEph0BuqQvBrGgPhGonEkdoJhTJ5mUWzCTkGI4 jY1pPoiKcESDiHhJfoZ/TXqEiFF2gpFVcoGbWG+Ap1psf7Vca4DIXGuB5Vlug/dScYT/TXKE/0hy hP9HcoT/R3KE/0dyhP9HcoT/R/9mDQD/dQcA9oMFANyPAwDSmAYAzKEHAMioCAC/qRoAtagtBayk PBCkoEcbnJ1RJZSZWS+OlmA2iJNnPYKQbkN9jnZIeYx9THSKhVBwiI9UbIeZV2mGpVlmhrNbZYbF W2WG41loiPZSa4r/TWyK/0hsif9HbIn/R2yJ/0dsif9HbIn/R/9pCwD/eAQA5YcAANaSAwDNnAUA xqQGAMGrBgC5rRcAsKwrBKepOg6fpkUZlqJPI4+fVy2InF81gplmO32XbEF4lXNGc5N7S26Rg09q j41SZo6XVWONo1hgjbFZX43DWl6N4Fhij/VSZJD/TWaQ/0hmj/9HZo//R2aP/0dmj/9HZo//R/9s CAD+fAAA3ooAANCWAgDInwQAwKcEALmuAwCyshQAqrEoA6GvNwyZrEMXkahNIYmlVSqCo1wyfKBj OXeeaj5ynHFEbZp5SGiZgUxkl4tQYJaVU12WolValbBXWZXBV1iV3lZblvNQXZf/TF+X/0dglv9G YJb/RmCW/0Zglv9GYJb/Rv9wAwDrgQAA1o8AAMqaAQDBowMAuaoCALGyAQCqtxEAo7ckApu1NAqT skAUiq9KHoOtUyd8q1oudqhhNXCnaDtrpW9AZ6N3RGKif0heoYlMWqCUT1efoFFUn65TU5/AU1Kf 3VJVn/NOV6D/Slmg/0ZZn/9FWZ//RVmf/0VZn/9FWZ//Rf91AADghgAAz5MAAMSfAQC6pwEAsa4A AKm2AAChvQ0Am70gAZS8MQeLuj0Qg7dIGny1UCJ1s1gqb7JfMGqwZjZlr207YK11P1ysfkNYq4dH VaqTSlGqn0xPqq5NTarATU2q3E1OqvJJUKr+RlKp/0NSqf9CUqn/QlKp/0JSqf9CUqn/QvJ8AADX jAAAyJkAAL2jAACyqwAAqbIAAKC7AgCXxAkAksUbAIvELASDwjoMe8FEFXS/Th1uvVYkaLxdKmO7 ZDBfumw0Wrl0OVa4fDxTt4c/T7eSQky2n0RKtq1GSLbARki33UVJtvJDSrX/QUu1/z5LtP89S7T/ PUu0/z1LtP89S7T/PeKDAADNkgAAwZ8AALSnAACqrwAAoLgAAJbAAwCMygcAhs0UAIHNJgJ6zDUI c8tBD2zKShdmyVMdYchbI1zHYihYxmosVMZyMFDFfDNNxYY2SsSSOUfEnztFxK48RMXBPEPF3zxE xPM7RMP/OUXC/zdFwf83RcH/N0XB/zdFwf83RcH/N9WLAADFmgAAt6QAAKusAACgtAAAlr4AAIvH BACB0AgAeNkOAHXZIAFv2C8Eadg8CWPWRhBe1lAVWdVYGlXUYB9R1GgiTtRxJkvTeylI04UrRdOS LkLUny9B1K8wP9XCMT/V4TA/0/IwP9L9Lz/R/y4/0P8uP9D/Lj/Q/y4/0P8uP9D/LsqUAAC7oQAA rakAAKKxAACWuwAAi8QAAIDNAwB12AgAb+QRAGrkIAFk5C0DXuQ4B1nkQQtV5EsPUeRUEk3kXRZK 5GUYR+RuG0Xkdx1C5IIfQOSOIT7lmyM85aokO+a8JDrm0yQ55e4kOeP6Izni/yQ54v8kOeL/JDni /yQ54v8kOeL/JL+eAACvpgAAo64AAJe4AACKwgAAfswAAHPWAgBp5QkAZO8UAF/wIAFZ8CsDVPA1 BU/wPgdL8UYKR/FODETxVw5C8V8QP/JnEj3ycBQ68nsVOPOHFjbzlBg19KIZM/SxGTL1xRox9eIa MfTxGTHx/hkx8f8ZMfH/GTHx/xkx8f8ZMfH/GbKkAAClqwAAmLYAAIvAAAB+ygAAcdUAAGXeAABe 9QoAWfwTAFP8HgFO/CcCSv0wA0X9OQVB/UAGPv5IBzv+Twk4/1cKNv9eCzP/Zwwx/3ANLv98Diz/ iQ8r/5YQKf+kECj/tBEn/8cRJ//hESb/8hEm//YRJv/2ESb/9hEm//YRJv/2EaepAACZswAAi74A AH7JAABw0wAAZN4AAFjnAABS/wkATf8RAEf/GQFD/yIBPv8qAjr/MgM3/zkDM/8/BDD/RgUt/00F K/9UBij/Wwcm/2MHI/9tCCH/eQkf/4cJHv+VCh3/owoc/7EKG//ACxr/1gsa/98LGv/fCxr/3wsa /98LGv/fC5uxAACNvAAAfscAAHDSAABj3gAAVeQAAEv1AABG/wUAQP8OADv/FAA3/xsBM/8jAS// KQIr/zACKP81AiX/OwMi/0EDH/9HAx3/TgMa/1UEGP9eBBX/aAUT/3QFEf+CBRD/kAYQ/50GD/+p Bg7/tQYO/7oGDv+6Bg7/ugYO/7oGDv+6Bo66AAB/xQAAcNEAAGLeAABU5QAARusAAD/+AAA5/wAA NP8JAC//DgAr/xQAJ/8aASP/IQEf/yUBHP8qARn/LwEW/zQCFP86AhH/QAIQ/0YCDv9OAgz/VgIJ /2ADB/9sAwT/eAMD/4YDAv+RAwH/nQMB/6EDAf+hAwH/oQMB/6EDAf+hA/82LQL/OS4C/z4uA/9A MgP/QDgE/z5BBv88TAj/OloK/zhoDP82dg7/NYMP/zSPEP8zmRH/M6ER/zOpEv8ysBL/MrcS/zK/ Ev8yyBP/MtMT/zLjE/8y7RP/MvYS/zP+Ev8z/xL/M/8S/zP/Ef8z/xH/M/8Q/zP/EP8z/xD/M/8Q /zP/EP82LQL/OywC/0AsA/9DLwP/QzUE/0I+Bv9ASgj/PlcL/zxlDf86cw//OIAQ/zeMEf83lhL/ Np8T/zanE/82rhT/NrUU/za8FP81xRX/NdAV/zXgFf826xX/NvQV/zb9FP82/xT/Nv8U/jf/E/42 /xP9Nv8S/Tb/Ev02/xL9Nv8S/Tb/Ev83LAL/PioC/0MqAv9GLQP/RzIE/0Y8Bv9FSAj/Q1UL/0Fi Df8/cBD/PX0R/zyJE/87kxT/O5wV/zqkFv86qxb/OrIX/zq5F/85whf/OcwX/zndGP856Rj/OfMY /zr7GPw6/xf6Ov8X+Tr/Fvg6/xb4Ov8V+Dr/Ffg6/xX4Ov8V+Dr/Ff85KwL/QScC/0YnAv9KKQP/ Sy8E/0w5Bv9LRQj/SFEL/0ZeDv9EbBH/QnkT/0GFFf9Ajxf/QJgY/z+gGP8/pxn/Pq4a/z62Gv8+ vhv/Psgb/z3WHP495hz7PvEc+D76HPU+/xzzPv8a8j//GfE//xnxP/8Y8T//GPE//xjxP/8Y8T// GP89KAL/RSQC/0ojAv9OJQP/USwE/1I2Bv9RQQj/T00M/0xaD/9KZxL/SHQV/0eAF/9Gixn/RZQb /0ScHP9DpB3+Q6se/UKyH/xCuiD6QsQg+ULQIfZB4iHyQu4i70L5Iu1C/yDrQ/8f6kP/HelE/xzo RP8b6ET/G+hE/xvoRP8b6ET/G/9AJQL/SCEC/08gAv9TIQL/VykD/1kzBf9YPgj/VkkM/1JVEP9R YxT/T28X/k17GvtLhh35So8f90mYIfZInyL0R6Yk80euJfFGtibwRr8n70XLKOxF3inoRewp5Ub4 KOJH/ybhSP8k30n/It5J/yDdSf8f3Un/H91J/x/dSf8f3Un/H/9DIgL/TB4B/1McAv9ZHgL/XSYD /18wBP9fOgf/XUUL/1pQEP1YXhX4VWoZ9VN2HfJRgCHvT4ok7U2TJutMminpS6Ir50qpLOVJsS7k SLsv4kjHMeBI2THcSOox2En2LtRL/yvSTP8p0E3/Js9O/yXOTv8jzk7/I85O/yPOTv8jzk7/I/9H HwH/UBoB/1cYAf9eHAH/YyMC/2YsBP9mNgb/ZEEK+mJMD/RfWRXvXGUb61lwIOdWeyXkVIQp4VGN Ld5QlTDcT50y2U6lM9ZNrTXTTbc20UzCN89M0TjMTOY4yU30NcdP/zHFUf8uxFL/K8NT/ynCU/8n wlP/J8JT/yfCU/8nwlP/J/9KHAH/VBcB/1wVAf9jGQH/aSAC/2wpA/9tMgX5bD0J8mlHDutmVBXl Y2Ac4F9rIttcdSjWWX8t0leIMM9VkDPMVJg2ylOgOMdSpzrFUbA7w1C7PMFQyT2/UN89vFHwO7pT /De5Vf8zuFf/L7dY/y23WP8rt1j/K7dY/yu3WP8rt1j/K/9NGgH/VxQB/2ASAf9oFwH/bh0B/3Il AvtzLgPyczgH6XFDDeJuUBTbaVwc02VmJM5icCrJX3ovxlyCM8NbijbAWZI5vViaO7tWoj64Vas/ tlW1QbRUwkKyVNRCsFXqQa5X+TyuWf83rVv/M61c/zCtXf8urV3/Lq1d/y6tXf8urV3/Lv9QFwH/ WhIB/2QQAP9tFAD/cxoB/3chAfR5KQLqejMF4ng/Ctl0TBPPcFgcyWtiJMRobCu/ZXUwu2J9Nbhg hTi1Xo08slyVPq9bnUGtWqZDq1mvRKlZvEWnWMxGpFjlRqRb9kCjXv87o1//N6Ng/zOjYf8xo2H/ MaNh/zGjYf8xo2H/Mf9TFQH/XRAA/2gPAP9wEgD/dxYA+3wcAe5/JAHkgC0D2n87CM96SRLHdVQb wXFfJLttaCu2anAxsmd5Nq9lgDqrY4g9qGGQQKZgmEOjXqFFoF6rR55dt0icXcZJmlzfSZpf8kSa Yv8+mmP/OZtl/zabZf8zm2X/M5tl/zObZf8zm2X/M/9VEwH/YA4A/2sOAP90EAD/exIA9YEXAOiE HgDehycB0YQ3B8h/RhHAe1EbuXZbI7RyZSuvb20xqmx1NqdqfDqjaIQ+oGaMQZ1klESaY51Hl2Kn SZVhskuTYcFMkWHYTJFj70eSZf1Bkmf/PJNp/ziTav81k2r/NZNq/zWTav81k2r/Nf9XEQH/Yw0A /24MAP93DgD/fw8A8IURAOOJFgDWiyMBy4g1BsKEQxC6gE8as3tZI613YiqodGoxo3FxNp9ueTuc bIE/mGqIQpVpkUWSZ5pIj2ajSo1lr0yKZb1NiWXRToln7EqKaftDi2v/Poxt/zqMbv83jG7/N4xu /zeMbv83jG7/N/9ZEAD/ZQsA/3ELAP96CwDxggwA6IkNAN2ODgDPjyABxo0yBr2JQQ+1hE0ZroBW Iqd8XyqieGcwnXVvNplzdjqVcX0/km+FQo5tjkaLbJZJiGqgS4VqrE2DabpPgWnMT4Fq6EyDbflF hG//P4Vw/zuGcf84hnH/OIZx/ziGcf84hnH/OP9bDwD/ZwgA/3MIAPN9CADehgcA2YwJANWRCwDK kh4AwZAwBbiNPw6wiEoYqYRUIaKAXSmdfWUwmHpsNZN3czqPdXs+jHOCQohyi0aFcJRJgm+eTH9u qU58bbdPe23JUHpu5k18cfhGfnP/QX90/z2Adf86gHX/OoB1/zqAdf86gHX/Ov9dDgD/agYA/3YG AOSAAwDZiQYA0o8IAM+UCgDFlhsAvJQuBLORPQ2rjUgXpIhSIJ6FWyiYgWMvk35qNY58cTmKeng9 hniAQoN2iEV/dZFJfHObTHlyp052crVQdHLGUHRy4092dfZHeHf/Qnp4/z57ef86e3n/Ont5/zp7 ef86e3n/Ov9fDAD/bAQA9XkCAN6DAgDTiwUAzZIHAMmXCADAmRkAt5gsA6+VOwynkUcWn41QH5mJ WSeThmEujoNoNImBbzmFf3Y9gX1+QX17hkV5eo9JdniZTHN3pU5wd7JQbnfEUG134E9wefVIcnv/ Q3R8/z51ff87dX3/O3V9/zt1ff87dX3/O/9hCgD/bwIA6HwAANmGAQDPjgQAyJUGAMOaBgC7nBYA s5wqA6qZOQuilUUUm5FOHZSOVyaOi18tiYhmM4SGbTiAhHQ9e4J7QXeAhEV0f41IcH2XS218o05q fLBPaHzBUGd83VBqfvNJbYD/Q26B/z9vgf88b4H/PG+B/zxvgf88b4H/PP9kCAD/cgAA4X8AANOJ AQDKkgMAw5gEAL2eBAC2oBMArqAnAqWdNgmdmkMTlpdNHI+TVSSJkV0rhI5kMX+Mazd6inI7doh5 QHKGgkRuhYtHaoOVSmeCoU1kgq5PYoK/T2GC2k9khPJJZoX/Q2iG/z9qhv88aob/PGqG/zxqhv88 aob/PP9nBAD2dgAA3IIAAM6NAADFlQIAvpwDALehAgCvpBEAqKQkAqCiNAiYn0ARkZxKGoqZUyKE l1spfpViMHmSaTV1kHA6cI93PmyNf0JojIlGZYqTSWGJn0teiaxNXYm9TlyJ1k1eivBIYIv+Q2KL /z9jjP88Y4z/PGOM/zxjjP88Y4z/PP9qAADmegAA1YYAAMmRAADAmQEAuJ8BALClAACoqQ4Aoqkh AZqoMQaTpT4Pi6NIGISgUSB+nlkneJxgLXOaZzJvmG43apZ1PGaVfT9ilIdDX5KRRluSnUlZkatK V5G7S1aR00tXku9HWpL9QlyT/z5dk/87XZP/O12T/ztdk/87XZP/O/9uAADgfgAAzosAAMSVAAC6 nQAAsaMAAKmpAAChrgsAm68dAZSuLgSMrDsMhapGFX6oThx4plYjcqRdKm2iZC9poWs0ZJ9zOGCe ezxcnYU/WZyPQlWbnEVTm6pHUZu6R1Cb0UdRm+5EU5v8QFWb/zxWm/86Vpv/Olab/zpWm/86Vpv/ OvF0AADZgwAAyJAAAL6aAACzoQAAqqcAAKGuAACXtQYAkrYYAIy1KgOFtDcJfrJCEXewTBhxrlQf bK1bJWerYipiqmkvXqlxM1qoejdWp4M6U6aOPVCmm0BNpalBS6W6Qkum0UJLpe0/TaX8PE6k/zlP pP83T6T/N0+k/zdPpP83T6T/N+R6AADPiQAAwpUAALafAACspQAAoqwAAJizAACOuwIAiL0SAIO9 JQF8vDMGdrs/DW+6SRRquFEaZbdZH2C2YCRctWcpWLRvLFSzeDBRs4IzTbKNNkqymjhIsag6RrK5 OkWy0TpGse05R7D8Nkew/zRIr/8zSK//M0iv/zNIr/8zSK//M9uCAADHkAAAu5wAAK6jAACkqgAA mbEAAI+5AACEwAMAe8YNAHjGHgBzxi4DbcU6CGfERQ5iw04TXcNWGFnCXh1VwWYhUcFuJE7AdyhL wIErSL+MLUW/mi9Dv6gxQb+6MUHA0jFBvu4wQb39L0G8/y5BvP8tQbz/LUG8/y1BvP8tQbz/Lc6K AAC/mAAAsaAAAKaoAACbsAAAkLgAAIW/AAB6xwQAb88JAGvRFQBn0SYBY9E0BF7QQAhZ0EoMVc9T EFHPWxROz2MYS85rG0jOdR5Fzn8gQs6MIkDOmSQ+zqgmPM66JjzP1CY8ze8lO8z7JTvL/yU7yv8l O8r/JTvK/yU7yv8lO8r/JcOTAAC1ngAAqKYAAJ2uAACRtgAAhb8AAHnHAABvzgQAZNYJAF7eEQBb 3iAAV94tAlPfOgRQ30QGTN9OCUnfVwxG318PQ99oEUHfcRM+33wVPN+JFzrglhk44KUaN+C3Gjbh zRo23+waNd75GjTd/xs03P8bNNz/GzTc/xs03P8bNNz/G7mcAACqpAAAnqsAAJK1AACFvgAAeccA AG3PAABi1gMAWOEIAFXqEwBR6yAATesrAUnrNQJF7D4EQuxHBT/sTwc97VgJOu1gCjjtagw27nQN M+6ADjLujg8w750QLu+tES3wwBEt8N4RLO7xESzs/hEs6/8QLOv/ECzr/xAs6/8QLOv/EK2iAACg qQAAk7MAAIa9AAB5xgAAbM8AAGDYAABV3gAATvMKAEr3EwBG+B0AQ/gnAT/4MAI7+TgCOPlAAzX6 RwQz+k8FMPtXBS77XwYr/GkHKfx0CCf8ggkl/ZAJJP2gCiP+sAoi/sQLIf/gCyH98gog/PwKIPz8 CiD8/Aog/PwKIPz8CqKnAACVsQAAh7sAAHnGAABszwAAX9kAAFLfAABI6AAAQ/8IAD//EAA7/xkA N/8hADT/KQEw/zABLf83Air/PgIn/0QCJf9LAyL/UwMg/1wDHf9mBBv/cgQZ/4AFF/+PBRb/nwYV /68GFP/ABhT/1gYT/+kGE//pBhP/6QYT/+kGE//pBpevAACIugAAesUAAGzPAABe2gAAUOAAAETm AAA89QAAN/8EADP/DQAv/xMAK/8aACj/IQAl/ycBIf8tAR7/MgEb/zgBGf8/ARb/RgIU/00CEf9W AhD/YAIO/2wCDP97Awv/iwMK/5oDCv+oAwn/tQMI/8IDCP/CAwj/wgMI/8IDCP/CA4q4AAB7wwAA bM4AAF7bAABP4gAAQucAADbsAAAx/wAALP8AACf/BwAj/w4AIP8SABz/GAAY/x0AFf8hABL/JgAQ /ywBDv8xAQ3/NwEK/z4BCP9GAQX/TwEB/1kBAP9mAQD/dAEA/4ICAP+QAgD/nAIA/6YCAP+mAgD/ pgIA/6YCAP+mAv8uLwL/MywC/zctAv84MAL/NzYD/zQ/BP8xSwb/L1gH/yxmCP8qdAn/KYEK/yiN C/8olwv/KJ8L/yimDP8nrQz/J7QM/ye7DP8nxAz/J84M/yjeC/8o6Qv/KPML/yj7C/8o/wr/Kf8K /yn/Cv8p/wr/KP8K/yj/Cv8o/wr/KP8K/yj/Cv8wLQL/NioC/zkqAv87LgL/OjQD/zg8BP82SQb/ M1YH/zFjCf8vcQr/LX4L/y2KDP8slAz/LJwN/yykDf8sqw3/LLEN/yy5Df8rwQ3/LMsN/yzaDf8s 5w3/LPEN/yz6Df8s/wz+Lf8M/S3/DP0t/wz9LP8L/Sz/C/0s/wv9LP8L/Sz/C/8yKwH/OSgC/z0o Av8/KgL/PjAD/z06BP88Rgb/OVMI/zdgCf81bQv/M3oM/zKGDf8xkA7/MZkO/zGhD/8xqA//MK4P /zC1D/8wvRD/MMcQ/zDUEP8w5BD/Me8Q/jH5D/sx/w/5Mf8P+DH/Dvcx/w73Mf8O9jH/DvYx/w72 Mf8O9jH/Dv81KAH/PCUB/0AkAv9DJwL/QywD/0Q3BP9CQwb/QE8I/z1cCv87aQz/OXYN/ziCD/83 jBD/N5UR/zadEf82pBL/NqsS/zayE/81uhP/NcMT/zXPE/w14RP5Nu0T9jb3E/M2/xPxNv8S8Db/ EvA3/xHvN/8R7zf/EO83/xDvN/8Q7zf/EP85JQH/QCEB/0UgAf9HIgL/SSkC/0o0BP9JPwX/RksI /0RYCv9CZQ3/QHEP/z59Ef89hxL/PZEU/jyZFf08oBX8O6cW+juuF/k7thf4O78X9jvKGPQ73Bjw O+oY7Tv2GOo7/xfoPP8X5zz/FuY9/xXlPf8U5T3/FOU9/xTlPf8U5T3/FP89IgH/RB4B/0kcAf9N HgH/UCYC/1EwA/9QOwX/TkYI/0tTC/9IYA7/RmwR+0V4E/hEghX2Q4wX9EKUGPNBnBnxQaMb70Cq G+5AshztP7sd6z/GHuk/1R7lP+gf4kD0Ht9A/h3dQf8b20L/GtlC/xjYQv8X2EL/F9hC/xfYQv8X 2EL/F/9AHwH/SBoB/04YAf9SGwH/ViMC/1gsA/9XNwT/VUIH/1JNC/lQWg71TWcS8UxyFu5KfRjr SIYb6UePHedGlx/lRZ4g40SmIuFEriPgQ7ck3kPCJdxD0CbXQ+Um00TzJNBF/iLNRv8gzEf/HspH /xzJSP8byUj/G8lI/xvJSP8byUj/G/9EGwH/TBYB/1IUAf9YGAH/XR8B/18oAv9eMgP9XT0G9lpJ CvBXVQ/qVWIT5lJtGOJQdxzfToEf3EyKItlLkiTVSpom00mhKNFJqSnPSLIqzUi8K8tIySzISN8s xUjvK8JK/CjAS/8lv0z/Ir5N/yC9Tf8fvU3/Hr1N/x69Tf8evU3/Hv9HGAH/TxMB/1YRAP9eFQD/ YhwB/2UkAf5lLQL0ZDgF7WFDCeZfUQ7gXF0U2lhoGtRWch7QVHsizFKEJspQjCjHT5QqxU6bLMNO oy7BTawvv0y2ML1MwjG7TNMyuEzpMbZO+C20UP8qs1H/J7NS/ySyUv8islL/IrJS/yKyUv8islL/ Iv9KFQH/UxEA/1sPAP9iEgD/aBcA/2ofAfZrKAHsazID5Gk+B9xmTA3TYlgUzV9jG8hcbSDEWnYk wVh+KL5Whiu7VY4uuVOWMLZSnjK0UqYzslGwNbBRvDauUMs3rFDjN6pS9DOpVP8uqFb/K6hX/yio V/8lqFf/JahX/yWoV/8lqFf/Jf9NEwD/Vg4A/18NAP9nEAD/bBMA+3AZAO9xIgHkcSwC23A6BdFs SAzJaFQUw2VfG75iaCG6X3Emtl15KrNbgS2wWokwrliRM6tXmTWpVqE3p1arOKVVtjqjVcU7oVXd O59W8DefWP4yn1r/Lp5b/yueXP8onlz/KJ5c/yieXP8onlz/KP9QEQD/WQwA/2MMAP9rDQD/cBAA 9XQTAOh2GgDddyUB0XY2BMhyRAzBblAUu2tbG7ZnZCGxZW0nrWJ1K6pgfC+nX4QypF2MNKJclDef W505nVqmO5pZsT2YWb8+l1nTPpVa7DuVXfs1ll7/MZZf/y2WYP8qlmD/KpZg/yqWYP8qlmD/Kv9S DwD/XAoA/2YJAP9uCgD2dAwA73gOAOF7EgDUfCAAynszBMF3QQu6dE0TtHBYG65sYSGpamknpmdx K6JleC+fZIAznGKINplhkDiWX5k7lF6iPZFerT+PXbtAjV3NQYxe6D+NYfk4jWL/M45k/zCOZP8s jmX/LI5l/yyOZf8sjmX/LP9VDgD/XwYA/2kGAPRyBgDieAYA23wJANl/DADNgR0AxH8wA7t8Pwq0 eEsSrXVVGqhxXiGjbmYmn2xuK5tqdS+YaH0zlWeENpJljDmPZJU8jGOfPoliqkCHYbdChWHJQoRi 5EGFZPc7hmb/NYdn/zGHaP8uh2n/LYdp/y2Haf8th2n/Lf9XDAD/YQQA/mwDAOR1AQDbewUA04AI ANCDCgDHhRoAvoQtA7aBPAmvfUgSqHlSGaJ2WyCdc2MmmXBrK5Vuci+RbXkzjmuBNotpiTqIaJI8 hWecP4Jmp0GAZrRDfmbFRHxm4UN+aPU8f2r/N4Br/zOBbP8vgWz/L4Fs/y+BbP8vgWz/L/9ZCwD/ YwEA9G8AAN94AADUfwQAzoMGAMqHCADCiBgAuYcrArGFOgiqgUYRo35QGJ16WR+Yd2Elk3VoKo9z by+LcXcziG9+NoVuhjqCbI89f2uZQHxqpUJ5arFEd2rCRHZq3UR4bPM+eW7/OHpv/zR7cP8wfHD/ MHxw/zB8cP8wfHD/MP9bCAD/ZgAA53IAANp7AADPggMAyYcFAMSKBgC8jBUAtIsoAqyJOAelhUQQ noJOGJh/Vx6TfF8kjnlmKop3bS6GdXQygnR8Nn9yhDl8cY09eXCXQHZvokJzbq9EcW7ARXBu2UVy cPE/c3L/OXVz/zV2dP8xdnT/MXZ0/zF2dP8xdnT/Mf9dBgD/aQAA4nQAANR9AADLhQIAxIoEAL+N BQC3jxMAsI8mAaiNNQegikIOmoZMFpODVR2OgV0kiX5kKYV8ay2BenIyfXh5NXp3gjl2dos8c3WV QHB0oEJtc61Ea3O9RWpz1UVsdO9Abnb+Om93/zZxeP8ycXj/MXF4/zFxeP8xcXj/Mf9fAgD3bAAA 3ncAANCBAADHiAEAwI0DALmRAwCykxEAq5MjAaORMwacjkANlYtKFY+IUxyJhlsihINiKICBaS18 f3AxeH53NXR8gDhxe4k8bnqTP2t5nkJoeKtEZni7RWR40UVmee5AaHv9Omp7/zZrfP8ya3z/Mmt8 /zJrfP8ya3z/Mv9hAADqbwAA2XoAAMyEAADDiwAAu5EBALSVAQCslw4ApZchAZ6WMQWXkz4MkJBI FIqOURuEi1khf4lgJ3uHZyt3hW4wc4R1NG+CfTdrgYc7aICRPmV/nEFifqlDYH65RF9+z0Rgf+xA YoD8OmSA/zZlgf8zZoH/MmaB/zJmgf8yZoH/Mv9kAADlcgAA034AAMeHAAC+jwAAtpUAAK6ZAACm mwwAoJweAJmbLgSSmTsKi5ZGEoWUTxl/kVcfeo9eJXWOZSpxjGwubYpzMmmJezZmiIQ5YoaPPV+F mj9chahBWoW3QlmFzEJaheo/XIb7Ol6G/zZfh/8yX4f/Ml+H/zJfh/8yX4f/Mv1oAADgdgAAzYIA AMKMAAC5kwAAsJkAAKidAACfoAkAmaEaAJOgKwOMnzgIhZ1DEH+aTBd5mFQddJdcInCVYydrk2os Z5JxMGSReTNgj4I3XI6NOlmNmT1XjaY/VI22QFONy0BUjek9Vo36OVeN/zVZjv8yWY7/MVmO/zFZ jv8xWY7/Me1tAADZewAAyIcAAL2QAAC0mAAAqp0AAKGhAACXpgQAkacVAIynJwKFpjUGf6RADXmi ShRzoFIabp9ZH2mdYCRlnGcoYZtvLF6adzBamIAzVpeLNlOXlzlRlqU7T5a0PE6WyTxOlug6T5b5 NlGW/zNSlv8wUpb/MFKW/zBSlv8wUpb/MOZyAADQgAAAwowAALiWAACtnAAAo6EAAJmmAACOrQAA iK4RAIOuIgF9rTEEd6w9CnKqRxBsqU8WZ6hXG2OnXh9fpmUkW6RtJ1ikdStUo38uUaKJMU6hljRL oaQ2SaG0NkihyDdIoOc1SaD5Mkqf/zBLn/8uS5//LUuf/y1Ln/8tS5//Ld15AADJhgAAvJIAALGa AACmoAAAnKYAAJGsAACGsgAAfbYNAHm2HQB1tiwCb7U5Bmq0Qwtls0wRYLJUFlyxWxpYsGMeVa9r IVGvcyVOrn0oS62IKkitlS1FraMuRK2zL0OtyC9CrOcvQ6v5LUSr/ytEqv8pRKr/KUSq/ylEqv8p RKr/KdGAAADBjQAAtZgAAKmfAACepQAAk6wAAIiyAAB9uAAAcb4GAG6/FQBqvyYBZr8zA2G+Pwdd vkgLWb1RD1W9WRNRvGAXTrxoGku7cR1Iu3sfRbqHIkK6lCRAuqImPrqzJj26yCY9uugmPbj5JT23 /yQ9tv8jPbb/Iz22/yM9tv8jPbb/I8eIAAC5lQAArJ0AAKGkAACWqwAAirIAAH+5AABzvwEAaMYF AGDKDgBeyh0AW8osAVfKOANUykMFUMpMCE3JVQtKyV0OR8lmEUTJbxRByXkWP8iFGDzIkxo6yKIb OcmzHDjJyRw4yOgcN8f5HDfF/xw2xP8cNsT/HDbE/xw2xP8cNsT/HL6RAACwmwAApKMAAJiqAACM sgAAgLkAAHTAAABoxwAAXc0FAFPTCgBP1xIATdgiAEvYMABJ2DwCRthGA0TZTwRB2VgGP9lhCDzZ awo62XYMN9mCDjXakA802qAQMtqxETHbxxEx2ucRMNj2EjDW/xMv1P8TL9T/Ey/U/xMv1P8TL9T/ E7OaAACmoQAAmqkAAI2xAACAugAAdMEAAGjJAABczwAAUtUDAEjcCABF5RIAQ+UeAEHmKgA+5jUB O+c+ATnnRwI351ADNOhZBDLoYgUw6G0GLul5Byzphwgr6pYJKeqnCijqugon69YKJ+nwCifn/Qkm 5v8KJub/Cibm/wom5v8KJub/CqigAACcpwAAj7AAAIK5AAB0wgAAaMoAAFvRAABP1wAARd0AAD7u CQA88hEAOfMbADbzJQA09C4AMfQ3AS71PwEs9UcBKfZPAif2VwIl92EDI/dsAyH4egQf+IkEHvma BRz5qwUb+sAFGvreBRr58gUa9/0FGfb/BRn2/wUZ9v8FGfb/BZ6mAACRrwAAg7kAAHXCAABnywAA WtMAAE3aAABC3wAAOOUAADX7BwAx/w8ALv8WACv/HwAp/yYAJf8tACP/NAAg/zsBHv9DARv/SwEZ /1MBFv9dAhT/agIS/3gCEf+IAhD/mgIQ/6sDDv++Aw7/1QMO/+0DDv/wAw7/8AMO//ADDv/wA5Ou AACEuAAAdsIAAGfMAABa1QAATNwAAD/hAAA15gAALfQAACr/AgAm/wsAI/8RACD/FwAd/x0AGf8j ABb/KQAU/y8AEv81ABD/PQAO/0UBDP9OAQr/WAEH/2UBBf90AQP/hQEC/5YBAf+mAQD/tQEA/8YB AP/KAQD/ygEA/8oBAP/KAYa3AAB3wQAAaMwAAFrXAABL3gAAPuQAADLpAAAn7QAAI/8AAB//AAAb /wUAF/8MABT/EAAR/xQAD/8YAA3/HQAL/yIACP8oAAX/LgAC/zUAAP89AAD/RwAA/1IAAP9eAAD/ bQAA/34BAP+OAQD/mwEA/6kBAP+rAQD/qwEA/6sBAP+rAf8qLQH/LisB/zArAf8wLgL/LjUC/yk9 A/8lSQT/I1cE/yFkBf8fcgb/HX8G/x2KBv8dlAb/HZwH/xyjB/8cqgf/HLEH/xy4Bv8cvwb/HMkG /xzWBv8d5Qb/He8G/x35Bf8d/wX/Hf8F/x3/Bf8d/wX/Hf8F/x3/Bf8d/wX/Hf8F/x3/Bf8sKwH/ MCgB/zMoAf8zKwL/MTEC/y06A/8rRwT/KFQF/yZhBf8kbwb/InwH/yKHB/8ikQf/IZkH/yGhCP8h pwj/Ia4I/yG1CP8hvAj/IcYH/yHRB/8h4gf/Iu0H/yL3B/8i/wb9Iv8G/CL/Bvwi/wb8Iv8G+yL/ Bvsi/wb7Iv8G+yL/Bv8uKAH/MyUB/zYlAf83JwH/NS0C/zQ4A/8yRAT/L1EF/yxeBv8qawf/KXcH /yiDCP8njQj/J5YJ/yedCf8npAn/J6sJ/yeyCf8nuQn/J8IJ/yfNCf8n3gn/J+sJ/Cf2CPko/gj3 KP8I9ij/CPUo/wj1KP8I9Sj/CPUo/wj1KP8I9Sj/CP8yJQH/NyIB/zohAf87IwH/OykC/zs0Av85 QAT/Nk0F/zRaBv8xZgf/MHMI/y5/Cf8uiQr/LpIK/y2ZC/8toQv/LacL/y2uC/8ttQz/Lb4M/i3J DPst2Qz4LegL9C70C/Eu/gvvLv8L7i7/C+0u/wvsLv8K7C7/Cuwu/wrsLv8K7C7/Cv81IgH/Ox4B /z8dAf9AHwH/QiYB/0IxAv9APAP/PkgF/ztVBv85Ygj/N24K/zZ5C/81hAz9NI0N/DSVDfo0nA75 M6MO9zOqD/Yzsg/1M7oP8zPFD/Iz0g/uM+UP6jTyD+c0/Q/lNP8P5DT/DuI1/w7iNf8N4TX/DeE1 /w3hNf8N4TX/Df85HgH/PxoB/0MYAf9GGgH/SSMB/0ktAv9IOAP/RUQF/0NQB/9AXQn7PmkL+D10 DfU8fw7zO4gP8TuQEO86mBHtOp8S7DmmE+o5rhPpObYU5znBFOY5zhXiOeMV3jnxFds6/BTYOv8T 1Tv/EtM7/xLSO/8R0jv/ENI7/xDSO/8Q0jv/EP89GwH/QxYA/0gUAP9MFwH/Tx8B/1AoAf9PMwL/ TT8E+0pKBvVHVwnxRmQM7URvDulDeRHnQoMT5EGLFOJAkxbgP5sX3z+iGN0+qhnbPrMa2D69GtY+ yhvSPt8bzj7vG8s/+xrJQP8Yx0D/F8ZB/xXFQf8UxEH/FMRB/xTEQf8UxEH/FP9BFwD/RxIA/0wQ AP9SFAD/VhsA/1ckAf9WLgL4VDkD8VFFButPUgnmTV4M4UtpEN1JdBPZSH0W1UaGGNJFjhrQRZYc zkSdHcxEpR7KQ60fyEO2IMZDwyHFQ9MhwUPpIb5E9x+8Rf8dukb/G7lH/xm4R/8YuEf/F7hH/xe4 R/8XuEf/F/9EFAD/SxAA/1EOAP9XEQD/WxYA/10eAPldKAHvWzMC51k/BOBXTQjaVFkN01JkEs5Q bhbKTncZx0yAHMVLiB7CSpAgwEqXIb5JnyO8SKckukiwJbhIvCa3SMsntEfjJ7JJ8yWwSv8irkv/ H65M/x2tTP8brU3/Gq1N/xqtTf8arU3/Gv9HEQD/Tw0A/1YMAP9cDgD/YBIA/WIYAPBjIQDmYiwB 3mA6A9ReSAfNW1QNx1hfE8NWaRe/VHIbvFJ6HrlRgiG2UIojtE+RJbJOmSewTaIork2rKqxMtiuq TMQsqEzbLKZN7yqkT/0mpFD/I6NR/yCjUv8eolL/HaJS/x2iUv8dolL/Hf9KDwD/UgoA/1oJAP9g CwD/ZQ4A9WcRAOhoGADdZyQA0mY1AspkRAfDYVANvV5bE7lcZBi1Wm0csVh1IK5XfSOsVYQlqVSM KKdTlCqlUp0so1KmLaFRsS+fUb4wnVHRMJtR6i+aU/oqmlX/JplW/yOZVv8hmVf/H5lX/x+ZV/8f mVf/H/9NDQD/VQYA/10FAPtkBwDvaQkA6WsMAOFsEADTbR4AyWwxAsJqQAe7Z0wNtWRXE7BhYBms X2kdqF1xIaVceCSiWoAnoFmHKp1YkCybV5gumVaiMJZVrDKUVbkzk1XKM5FV5TORV/ctkVn/KZFa /yWRW/8jkVv/IZFb/yGRW/8hkVv/If9PCwD/VwIA/2ECAOpoAQDebQQA2HAIANVwCwDLchsAwnEu ArpvPQa0bEkNrmlUE6lnXRmkZGUdoWJtIZ1hdCWaX3womF6DK5Vdiy2SW5QwkFueMo1aqDSLWbU1 ilnGNohZ4TaIXPQwiF3/K4le/yiJX/8liV//I4lf/yOJX/8jiV//I/9RCQD/WgAA9WQAAOBsAADX cQMA0HQGAM11CQDEdhcAvHYqAbR0OgWucUYMp25REqJrWhieaWIdmmdpIZZlcSWTZHgokGKAK41h iC6LYJExiF+aM4ZepTWDXrI3gl7CN4Be3DiAX/IzgWH/LYJi/ymCY/8mgmT/JYJk/yWCZP8lgmT/ Jf9TBgD/XQAA52cAANtvAADQdAIAyngFAMZ5BwC+ehUAtnooAa94NwWodkQLonNOEpxwVxiYbV8d lGtnIZBqbiWNaHUoimd9K4dlhS6EZI4xgWOXNH9iojZ8Yq84emK+OXli1Tl5Y+80emX+L3tm/yt8 Z/8ofGf/Jnxn/yZ8Z/8mfGf/Jv9VAwD/YAAA42oAANVyAADMeAEAxXsDAMB9BQC5fhIAsX4lAap9 NQSjekEKnXdMEZd0VReScl0cjnBkIIpuaySHbHIohGt6K4Fqgi5+aYsxe2eVNHhnoDZ2Zqw4dGa8 OXNm0TpzZ+02dGn9MHVq/yx2a/8pd2v/J3dr/yd3a/8nd2v/J/9XAAD2YwAA320AANF1AADIewAA wX8CALuAAwC0gRAArIIjAaWBMgSefj8JmHtKEJJ5UxaNdlsbiXRiIIVyaSSBcXAnfm93K3tufy54 bYgxdWySNHNrnjdwaqo5bmq5Om1qzjpta+s3b238MXBu/y1xbv8qcW//KHFv/yhxb/8ocW//KP9Z AADrZQAA23AAAM14AADEfgAAvIIBALaEAQCuhQ4Ap4YgAKCFMAOagj0Ik4BID459URWJe1kahHlg H4B3ZyN8dW4neXR1KnZzfS5zcoYxcHGQNG1wnDdqb6g5aG+3OmdvyzpncOk3aXH6Mmty/y1sc/8q bHP/KGxz/yhsc/8obHP/KP9cAADnaAAA1XMAAMl7AADAggAAuIYAALGIAACpiQ0AooodAJyJLgKV hzsHj4VFDomCTxSEgFcZf35eHnt8ZSJ4e2wmdHlzKnF4ey1ud4Qwa3aOM2h1mjZldKY4Y3S1OWF0 yTphdOc4Y3b5MmV2/y5md/8rZ3f/KWd3/ylnd/8pZ3f/Kf9fAADjbAAA0HYAAMV/AAC8hQAAtIoA AKyMAACjjgoAnY4aAJeOKwKQjDgGiopDDISHTBJ/hVUYeoRcHXaCYyFzgGolb39xKWx+eSxofYIv ZXyMMmJ7mDVfeqQ3XXqzOFx6xzlceuU3Xnv4Ml97/y5gfP8rYXz/KWF8/ylhfP8pYXz/KfViAADe bwAAzHoAAMCDAAC3iQAAr44AAKaRAACdkgYAl5MXAJGTKAGLkjYFhZBBC3+OShF6jFIWdYpaG3GI YR9th2gjaoZvJ2aEdytjg4AuYIKKMV2BljRagaM2WICyN1aAxTdWgOM2WIH3MVmB/y1bgv8qW4L/ KVuC/ylbgv8pW4L/KexmAADYcwAAx34AALyHAACzjgAAqZIAAKCVAACWmAEAkJkTAIqZJAGFmDIE f5Y+CXmUSA50k1AUb5FXGWuQXh1ojmUhZI1tJWCMdShdi34rWoqILleJlDFUiaEzUoiwNFGIwzVQ iOI0Uoj2MFOI/yxUiP8pVYj/KFWI/yhViP8oVYj/KOZrAADQeAAAwoMAALeMAACtkgAAo5YAAJqa AACOngAAh58QAIOfIAB+ny8CeJ07B3OcRQxum00RaZlVFmWYXBphl2MeXpZqIVuVciVXlHwoVJOG K1GSki5OkqAwTJKvMUuSwjFKkeAxTJH1LU2R/ypOkP8oTpD/Jk6Q/yZOkP8mTpD/Jt5wAADJfQAA vIkAALKSAACnlwAAnZsAAJOfAACGpAAAfqYMAHqmGwB1pioBcKY3BGylQQlno0oNY6JSEl+hWRZb oWEZWKBoHVSfcCBRnnojTp2EJkudkSlInJ4qRpyuLEWcwSxFnN8rRZv0KUaa/ydHmv8lR5r/JEea /yRHmv8kR5r/JNR3AADChAAAto8AAKuWAAChnAAAlqAAAIulAAB/qgAAdK4FAG+vFABsryQAaK8y AmSuPQVfrUYJW6xPDVisVhFUq14UUapmF06qbhpLqXgdSKmDIEWojyJDqJ0kQaitJUCowCU/qN8l P6b0I0Cl/yJApf8hQKT/IECk/yBApP8gQKT/IMp+AAC7iwAAr5UAAKSbAACZoQAAjqYAAIKsAAB3 sQAAarYAAGO4DgBhuB0AXrgsAVq4OAJXuEIFU7hLCFC3UwtNt1sOSrZjEEe2axNEtXUWQrWBGD+1 jho9tZwcO7WsHDq1wB05td8cObP0HDmy/xw5sf8bObD/Gzmw/xs5sP8bObD/G8GGAAC0kwAAp5oA AJygAACRpwAAha0AAHmzAABtuAAAYr0BAFbCBwBTwxQAUsMjAFDEMAFNxDsCSsRFA0fETgVFxFcH QsNfCUDDaAs9w3INO8N+DzjDjBE2w5sSNcOrEzPDwBMzw+ATM8H1EzLA/xQyv/8UMb7/FDG+/xQx vv8UMb7/FLiQAACrmQAAn6AAAJOnAACHrgAAe7QAAG67AABjwAAAWMUBAE3KBQBEzwwAQ9AXAELQ JQBA0DIAP9E9AT3RRwE70VACOdJZAzbSYwQ00m4FMtJ6BzDSiAgu0pgJLdOpCSzTvgos098JK9Hz CirP/gspzv8MKc3/DSnN/w0pzf8NKc3/Da6YAACinwAAlqYAAImuAAB8tgAAb70AAGPDAABXyAAA TM0AAELSAwA52QkANd8QADTfGwAy4CcAMeEyADDhPQAu4kcALeJQASviWgEq42UCKONxAibkfwMl 5I8DI+WhBCLltAQh5c0EIOTsBCDi+wQf4f8FH+D/BR/g/wUf4P8FH+D/BaSeAACYpQAAi64AAH22 AABwvgAAY8YAAFbLAABL0AAAQNUAADbcAAAv5QcALe0QACvuGAAp7iIAJ+8rACXvNAAj8DwAIfBF AB/xTgAd8lgBG/JkARnzcQEY84EBF/SSAhX0pQIU9boCE/XWAhP07wIS8vwCEvD/AhLw/wIS8P8C EvD/ApqkAACNrQAAf7YAAHG/AABjxwAAVs4AAEnTAAA92gAAM98AACrjAAAm9AUAJPsNACH8EwAe /RsAHP0iABn+KQAX/jEAFf85ABP/QQAR/0oAEP9VAA7/YQAM/28BDP+AAQr/kwEJ/6YBCP+6AQf/ 1AEH/+sBBv/2AQb/9gEG//YBBv/2AY+sAACAtgAAcr8AAGPJAABW0QAASNgAADvdAAAw4gAAJuYA AB/wAAAc/wAAGf8JABb/DgAU/xMAEf8ZAA//HgAN/yQAC/8rAAn/MgAG/zsAA/9EAAD/TwAA/1wA AP9rAAD/fQAA/5AAAP+jAAD/tAAA/8YAAP/WAAD/1gAA/9YAAP/WAIK1AABzvwAAZMkAAFbTAABH 2wAAOuAAAC7lAAAj6QAAGu0AABX9AAAS/wAAEP8CAA7/CQAL/w0ACP8QAAT/EwAB/xgAAP8eAAD/ JAAA/ysAAP8zAAD/PQAA/0kAAP9WAAD/ZgAA/3gAAP+KAAD/mwAA/6gAAP+xAAD/sQAA/7EAAP+x AP8lKwH/KCkB/ykpAf8oLAH/IzIB/x47Av8aRwL/F1UD/xViA/8TcAP/EnwD/xKHA/8SkQP/EpkD /xKgA/8SpwP/Eq0D/xG0A/8RuwP/EcQD/xHOA/8R3wP/EesC/xL2Av8S/gL/Ev8C/xL/Av8S/wL/ Ev8C/xL/Av8S/wL/Ev8C/xL/Av8oKQH/KyYB/ywmAf8rKQH/KC8B/yI4Av8gRAL/HVID/xtfA/8Y bAP/F3kE/xeEBP8XjgT/F5YE/xadBP8WpAT/FqoE/xaxBP8WuAT/FsAD/xbKA/8W2wP/FugD/xf0 A/8X/QP8F/8C+xf/A/sX/wP6F/8D+hf/A/oX/wP6F/8D+hf/A/8qJgH/LiMB/y8iAf8vJQH/LCsB /yo1Av8nQQL/JE4D/yJbA/8gaAT/HnQE/x2ABP8digT/HZIF/x2aBf8doQX/HacF/x2tBf8dtAT/ Hb0E/x3HBP8d1AT+HeYE+x3yBPce+wP1Hv8E9B7/BPMe/wTzHv8E8h7/BPIe/wTyHv8E8h7/BP8u IgH/Mh8B/zQeAf8zIAH/MiYB/zIyAf8vPgL/LEoD/ypXA/8nZAT/JnAF/yV7Bf8khQX/JI4G/ySW Bv8knQb/JKMG/ySqBv0ksQb8JLkG+yTDBvkkzwb2JOMG8iTwBe4l+gXtJf8G6yX/Buol/wbpJf8G 6SX/Bukl/wbpJf8G6SX/Bv8yHgH/NhsA/zgZAP84GwH/OiMB/zktAf84OgL/NUYD/zJSBP8wXwT/ LmsF/y12Bv0sgAf6LIkH+SuRB/crmQj1K58I9CumCPMrrQjxK7UI8Cu/CO4rywjrK98I5yzuCOQs +gjiLP8J4Cz/Cd4s/wjeLP8I3Sz/CN0s/wjdLP8I3Sz/CP81GgD/OhYA/z0UAP8/FwD/QR8A/0Ep Af9ANAH/PUEC/zpNA/w4WgX4NmUG9DVxB/E0ewjvM4QJ7TONCesylArpMpsK6DKiC+YyqgvkMrIM 4zK7DOEyyAzfMtwM2jLsDdUz+A3SM/8N0DP/DM4z/wzNNP8LzDT/C8w0/wvMNP8LzDT/C/85FgD/ PhIA/0EQAP9FEwD/SBsA/0gkAP9HLwH+RDsC90JHA/E/VAXsPmAG6DxrCOU7dgniO38L4DqIDN05 kA3bOZcO2TieD9Y4phDUOK4R0ji3EdA4wxLOONMSyjjoEsc59xLEOf8Rwjr/EME6/w/AOv8Ovzr/ Dr86/w6/Ov8Ovzr/Dv89EwD/Qg8A/0YNAP9LEAD/ThYA/08fAP1OKQH0TDQB7EhBAuZHTgTgRVsG 20RmCdZCcAzSQXkOz0CCEM1AihHKP5ETyT+ZFMc+oBXFPqgWwz6xF8E+vBfAPssYvT7iGLo+8he3 P/8WtUD/FLRA/xOzQf8Rs0H/ELNB/xCzQf8Qs0H/EP9AEAD/RgwA/0sKAP9RDQD/UxEA/1QYAPNU IgDpUi0B4VA7AdpPSQPSTVUHzEtgC8hJag7FSHMRwkd7E79GgxW9RYsXu0WTGLlEmhm3Q6IatUOr G7RDthyyQ8QdsEPZHq1D7R2rRfwaqUX/GKhG/xaoRv8Vp0f/E6dH/xOnR/8Tp0f/E/9EDgD/SggA /1AGAP9VCgD/WA0A91kRAOpYGADfVyQA1Fc1AcxVRATGVFAIwVJbDL1QZRC5Tm0Ttk12FrRMfRix S4Uar0qNG61JlR2rSZ0eqUimIKdIsCGlSL0ipEjPIqFI6CKgSfgen0v/G55L/xmdTP8XnUz/Fp1M /xadTP8WnUz/Fv9HCwD/TQIA/1QCAPdaBADrXQcA510LAOFcEADTXR4Ayl0wAcNcPwS9WkwIt1hX DLNWYBGvVGkUrFNxF6lReBqnUIAcpE+HHqJPjyCgTpghnk2hI5xNqySaTbglmUzIJpZM4iaVTvUi lE//H5RQ/xyUUf8alFH/GJRR/xiUUf8YlFH/GP9JCAD/UAAA+1gAAOVeAADdYgMA1mMHANRhCgDK YhkAwmMsAbtiOwO0YEgIr11TDKpbXBGmWmQVo1hsGKBXdBudVXsdm1SDIJlUiyKWU5MklFKdJZJR pyeQUbMojlHDKY1R3SqMUvImi1T/IotV/x6LVv8ci1b/GotW/xqLVv8ai1b/Gv9MBAD/UwAA7FwA AN9iAADUZgEAzmgFAMtnCADCZxYAumgoAbNnOAOtZUUHqGNQDKNhWRGfX2EVm11oGJhccBuVWnce k1l/IZBYhyOOV48ljFeZJ4lWoymHVq8qhVW/K4RW1SyDV+8pg1j+JINZ/yCEWv8ehFr/HIRa/xyE Wv8chFr/HP9OAQD/VwAA5V8AANhmAADOagAAx2wDAMNrBQC8bBIAtG0lAK1sNQOnakIHoWdNDJxl VhGYY14VlGJlGJFgbBuOX3QejF57IYldgySGXIwmhFuVKIFaoCp/WqwsfVq7LXxazy57W+wrfFz8 Jnxd/yJ9Xv8ffV7/HX1e/x19Xv8dfV7/Hf9QAAD1WQAA4WMAANJqAADJbgAAwnABAL1wAwC2cBAA rnEiAKhwMgKhbj8GnGxKC5dqUxCSaFsUjmZiGItlaRuIY3AehWJ4IYJhgCSAYIkmfV+SKXtenSt4 Xqktdl64LnVezC90XuktdWD6J3Zh/yN3Yv8gd2L/Hndi/x53Yv8ed2L/Hv9SAADsXAAA3GYAAM5t AADEcgAAvXQAALd0AQCwdA4AqXUfAKJ0LwKccj0Fl3BHCpFuUQ+NbFkUiWpgF4VpZxuCaG4ef2Z1 IX1lfSR6ZIYnd2OQKXVjmyxyYqcucGK2L29iyS9uYuYub2T5KHBl/yRxZv8hcWb/H3Fm/x9xZv8f cWb/H/9UAADoXwAA12kAAMpwAADAdQAAuXgAALJ4AACreA0ApHkdAJ54LQGXdzoFknVFCoxyTg6I cFYThG9eF4BtZBp9bGsdemtzIHdqeyN0aYMmcmiNKW9nmSxsZqUuamazL2lmxjBoZuQvamj3KWtp /yVsaf8ibGr/IGxq/yBsav8gbGr/IP9XAADkYgAA0mwAAMZzAAC9eAAAtXsAAK18AAClfAoAn30a AJl8KgGTezgEjXlDCYh3TA6DdVQSf3NbFntyYhl4cGkddW9wIHJueCNvbYEmbGyLKWpslyxna6Mu ZWuyL2RrxDBia+EvZGz2KmZt/yZmbf8jZ27/IGdu/yBnbv8gZ27/IPZZAADgZQAAzm8AAMJ2AAC5 fAAAsX8AAKmAAACggAcAmYEXAJSBKAGOgDUDiH5BCIN8Sg1+elIRenhZFXZ3YBlzdmcccHRuH21z diNqcn8mZ3GJKWRxlSticKEtYHCwL15wwi9dcN8vX3H1KmBx/yZhcv8jYnL/IGJy/yBicv8gYnL/ IO9cAADcaQAAynIAAL56AAC1gAAArYQAAKSFAACahQMAlIUUAI6GJQGJhDMDg4M+B36BSAt5f1AQ dX5XFHF9Xhhue2Uba3psHmh5dCJleH0lYneHKF92kypcdp8sWnWuLll1wC5Ydd0uWXbzKlt2/yZc d/8jXHf/IFx3/yBcd/8gXHf/IOpgAADVbAAAxXYAALp+AACxhAAAqIgAAJ+JAACUigAAjYoRAIiL IQCDijACfok7BXmHRQp0hk4OcIRVEmyDXBZpgmMaZoFqHWKAciBff3sjXH6FJll9kSlXfJ4rVXys LFN8vi1SfNotU3zyKVV8/yVWfP8iV3z/IFd8/yBXfP8gV3z/IOVkAADPcAAAwXoAALaDAACtiQAA o4wAAJmOAACNjwAAhpAOAIGRHQB9kCwBeI84BHOOQghujUsMaoxTEGeKWhRjiWEXYIhoG12HcB5a hnkhVoWDJFSFjyZRhJwoT4SqKk2EvCpNhNcqTYPxJ0+D/yRQg/8iUIP/H1CD/x9Qg/8fUIP/H95p AADJdQAAvIAAALKIAACojQAAnZEAAJOTAACFlgAAfpcLAHmXGQB1lygBcZc1A2yWPwZolUgKZJRQ DWGTVxFdkl4VWpFmGFeQbhtUj3ceUY6BIE6OjSNLjZolSY2pJkiNuydHjdQnR4zwJEiM/yJJi/8g Sov/HkqL/x5Ki/8eSov/HtVuAADDewAAt4UAAKyNAACikgAAl5YAAIyZAAB/nAAAdZ4FAHCfEwBt nyMAaZ8wAWWeOwRhnkUHXZ1NClqcVA1Xm1wRVJpjFFGaaxdOmXQZS5h/HEiYix5Fl5kgQ5eoIUKX uiJBl9MiQZbvIEKV/h5Clf8dQ5T/HEOU/xxDlP8cQ5T/HMx1AAC8gQAAsYwAAKaSAACblwAAkZsA AIWfAAB5owAAaqcAAGWnDgBjqBwAYKgrAV2oNgJZp0AEVqdJBlOmUQlQplkMTaVgDkqlaRFHpHIU RKR9FkKjiRg/o5caPaOnGzyjuRw7o9IbO6LvGzug/ho7n/8ZPJ//GDyf/xg8n/8YPJ//GMR8AAC2 iQAAqpIAAJ+XAACVnAAAiaEAAH2mAABxqgAAZK4AAFqxCABXsRQAVbIjAFOyMAFQsjsCTbJEA0ux TQVIsVUHRbFdCUOxZQtAsG8NPrB6DzuwhxE5r5YTN6+mFDavuBQ1sNEUNa7vFDSt/hQ0rP8UNKv/ FDSr/xQ0q/8UNKv/FLuFAACvkAAAo5cAAJidAACMowAAgKgAAHStAABosgAAXLYAAFC6AQBJvA0A SLwZAEa9JwBFvTMAQ709AUG9RwE/vVACPb1YAzq9YQU4vWsGNr13CDS9hAkyvZMKML2kCy+9twwu vtALLrzuDC26/g0suf8NLLj/Diy4/w4suP8OLLj/DrOPAACmlwAAm50AAI+jAACDqgAAdrAAAGq1 AABeugAAUr4AAEfCAQA9xwYAOMkQADfJGwA2yicANcozADTLPQAzy0cAMctRATDLWwEuzGUCLMxx AirMfwMpzJAEJ8yhBCbNtAQlzc4EJcvuBCTJ/AYjyP8HI8f/ByPH/wcjx/8HI8f/B6mWAACenQAA kqMAAIWrAAB4sgAAa7gAAF++AABSwgAAR8YAAD3KAAA0zwQAK9QJACbZDwAl2RkAJdolACTaMAAj 2zsAI9tFACLcUAAh3VsAIN1oAB7edgAd3ocBHN+ZARrfrAEZ38QBGN7nARjc+AEY2/8CF9r/Ahfa /wIX2v8CF9r/AqCcAACUowAAh6sAAHmzAABsugAAX8EAAFLGAABGygAAO84AADHTAAAp2QAAId4F AB7oDgAd6BUAG+keABnpJwAY6jAAFuo5ABXrQwAU7E4AEuxaABHtZwAQ7ncAEO6KAA7vngAO8LMA DfDNAAzv7AAM7fwADOv/AAzr/wAM6/8ADOv/AJejAACJqwAAe7QAAG28AABfxAAAUsoAAEXOAAA5 0wAAL9gAACXdAAAd4QAAGOwCABb3CwAU9xEAEfgXABD4HgAO+SUADfktAAv6NQAJ+z8AB/tKAAT8 VwAD/WYAAv53AAD9iwAA/Z8AAPy1AAD80QAA/O0AAPz8AAD8/QAA/P0AAPz9AIurAAB9tAAAbr0A AGDGAABSzQAARNIAADfYAAAs3QAAIuEAABnlAAAT6gAAEPoAAA7/BgAN/wwACv8QAAf/FAAE/xoA Af8gAAD/JwAA/zAAAP86AAD/RQAA/1MAAP9iAAD/dQAA/4oAAP+fAAD/swAA/8cAAP/lAAD/5QAA /+UAAP/lAH+0AABwvQAAYccAAFPQAABD1gAANt0AACriAAAf5gAAFuoAABDtAAAM+gAACf8AAAb/ AAAC/wQAAP8JAAD/DQAA/xAAAP8UAAD/GgAA/yEAAP8pAAD/NAAA/0AAAP9OAAD/XgAA/3IAAP+H AAD/mgAA/6oAAP+5AAD/uQAA/7kAAP+5AP8gKQH/IicB/yInAf8fKgH/GTAB/xI5Af8QRQH/DVMB /wxgAf8KbQL/CXkC/wmEAv8JjgH/CZYB/wmdAf8JowH/CakB/wmwAf8ItwH/CL4B/wjIAf8I1gH/ COYB/wjxAf8I+wD/CP8A/wj/AP8J/wH/Cf8B/wn/Af8J/wH/Cf8B/wn/Af8jJgH/JSQA/yUkAP8j JwH/HSwB/xg1Af8VQgH/ElAB/xBdAv8OagL/DnYC/w6AAv8OigL/DpIC/w6aAv8OoAL/DqYB/w2t Af8NswH/DbsB/w3FAf8N0QH/DeMB/w3vAf4N+gH6Df8B+Q7/AfkO/wH5Dv8B+A7/AfgO/wH4Dv8B +A7/Af8mIwD/KCAA/yggAP8mIgD/IigB/yAyAf8cPwH/GUwB/xdZAv8VZQL/E3EC/xN8Av8ThgL/ E44C/xKWAv8SnQL/EqMC/xKpAv8SsAL/ErcC/xLBAv8SzAH9Et8B+RPtAfUT+AHzE/8B8hP/AfET /wLwFP8C8BT/AvAU/wLwFP8C8BT/Av8qHwD/LBwA/ywbAP8rHQD/KSQA/ygvAf8lOwH/IkgB/x9U Av8dYQL/G20C/xp3Av8agQL/GooC/xqSAv8amQL9Gp8C/BqmAvsarAL5GrQC+Bq9AvYayALzGtsC 7xrqAuwb9wLpG/8C6Bv/A+cc/wPmHP8D5Rz/A+Ub/wPlG/8D5Rv/A/8tGwD/MBcA/zEVAP8wFgD/ MSAA/zAqAP8uNgH/K0MB/yhPAv8mXAL/JGcC/CNyA/kjfAP3IoUD9SKNA/MilQPyIpsD8CKiA+8i qQPtIrED7CK5A+oixQPoItUD5CPpA+Aj9gTeI/8E2yT/BNkk/wTYJP8E1yT/BNYk/wTWJP8E1iT/ BP8xFgD/NBIA/zYRAP83EwD/ORsA/zglAP82MQH/Mz0B/TFKAfguVgL0LWID8CxtA+0rdwPqK4AE 6CqIBOYqkATlKpcE4yqeBeEqpQXgKq0F3iq2BdwqwgXaKtIG1SvnBtAr9QfNLP8Hyyz/B8ks/wfI LP8Hxyz/Bscs/wbHLP8Gxyz/Bv81EgD/OQ4A/zoNAP8+EAD/QBYA/z8gAP89KgD5OzcB8jhEAew2 UQLnNVwD4zRnA+AzcgTdM3sF2jKDBtYyiwbUMpMH0jGaCNAxoQjOMakJzDGyCcsxvArJMcoKxjLh C8Iy8Qu/M/4LvTP/Crsz/wq6M/8JujP/Cboz/wm6M/8JujP/Cf85EAD/PQsA/0AJAP9EDQD/RhEA /0UZAPdEIwDuQS8A5j88AeA+SgHaPVcC0zxiBM87bAbMOnUHyTp9Ccc5hQrFOYwLwziUDME4mw3A OKMNvjisDrw4tg+6OMMPuTjXELU47BCyOfsPsDr/Dq86/w2uOv8MrTr/C606/wutOv8LrTr/C/88 DQD/QAYA/0UEAP9JCQD/Sw0A+UoRAO1JGgDjRiYA2kY2ANFGRQHLRVEDxkRcBcJCZgi/Qm8KvEF3 C7pAfw24P4YOtj+OELQ+lRGyPp0SsD6mE68+sBStPr0Uqz7NFak+5hWmP/cTpED/EqNA/xCiQP8P okD/DqJB/w6iQf8OokH/Dv8/CQD/RAAA/0oAAPdOAgDsUAYA6k8LAONMEADWTB4AzU0wAMZNPwHA TEwEu0tXBrdJYQm0SGkMsUdxDq5GeRCsRoARqkWIE6hEkBSmRJgWpEOhF6JDqxigQ7cZn0PHGZ1D 4BqbRPMXmUX/FZhG/xOYRv8RmEb/EJdG/xCXRv8Ql0b/EP9CBQD/RwAA908AAOVTAADdVQEA11UG ANVSCwDLUxkAw1QrALxUOwG2UkgEsVFSB61QXAqpTmQNpk1sD6RMdBGhS3sTn0qCFZ1KihebSZMY mUmcGpdIphuVSLIclEjBHZJI2B2QSe8bj0r+GI9L/xaOS/8Ujkz/Eo5M/xKOTP8Sjkz/Ev9FAAD/ SwAA6VMAAN5YAADTWwAAzVsEAMpYBwDCWBUAulonALNaNwGuWEQEqVdPB6RVWAqhVGANnlNoEJtR bxOYUHYVllB+F5RPhhmSTo4aj06YHI1Noh2LTa4fik28IIhN0CCHTesfhk/8G4ZQ/xiGUP8WhlD/ FIZR/xSGUf8UhlH/FP9HAAD4TwAA5FcAANVdAADMYAAAxWACAMFeBQC6XREAs18jAKxfMwGmXkAD oVxLB51aVAqZWVwOllhkEZNWaxOQVXIWjlR6GItUghqJU4och1KUHoVSnh+DUaohgVG4In9RyyJ+ UuchflP5HX5U/xp+Vf8XflX/Fn5V/xV+Vf8VflX/Ff9KAADuUgAA3lsAAM9hAADGZAAAv2UAALpj AgCzYg8ArGMgAKZjMAGgYj0Dm2FIBpZfUQqSXlkNj1xhEYxbaBOJWm8Whll2GIRYfhqCV4ccf1eQ H31WmyF7VqcieVa1I3dWxyR2VuQkdlf3H3dY/xt3Wf8Zd1n/F3dZ/xZ3Wf8Wd1n/Fv9MAADpVgAA 2V8AAMtlAADBaAAAumkAALRoAACtZw0ApmgcAKBoLQGaZzoDlWVFBpBjTgqMYlcNiWFeEIZfZROD XmwWgF1zGH5cexp7XIMdeVuNH3ZamCF0WqQjclqyJHFaxCVvWuElcFv2IHFc/xxxXf8acV3/GHFd /xdxXf8XcV3/F/1PAADlWQAA02IAAMdoAAC9bAAAtm0AAK9sAACnawsAoGwZAJtsKgGVazcCkGlD BYtoTAmHZlQMg2VbEIBjYhN9YmkVemFwGHhheBp1YIEdc1+LH3BeliJuXqIkbF6wJWtewSZpXt4m al/0IWtg/x1rYf8bbGH/GWxh/xhsYf8YbGH/GPVRAADiXAAAz2UAAMNrAAC5bwAAsXEAAKpxAACi bwgAm28XAJZwJwCQbzUCi25ABYZsSQiCalIMfmlZD3toYBJ3ZmYUdWZuF3JldhpwZH4dbWOIH2tj kyJpYqAkZmKuJWVivyZkYtomZGPyImVk/x5mZP8bZ2T/GWdl/xhnZf8YZ2X/GPBTAADdXwAAy2gA AL9vAAC2cwAArnUAAKZ1AACdcwUAlnMUAJF0JACLczIChnI+BIFwRwh9b08LeW1XDnZsXhFza2QU cGpsF21qcxpraXwcaGiGH2ZnkSJjZ54kYWasJWBmvSZfZ9YmX2fxImBo/x5haP8cYmj/GmJo/xli aP8ZYmj/GexXAADZYgAAx2sAALxyAACzdwAAqnkAAKF5AACXdwEAkHgRAIt4IQCGeC8BgXc7BHx1 RQd4dE0KdHJVDnFxXBFucGMUa29qFmhucRlmbnocY22EHmBsjyFebJwjXGuqJVpruyZZbNMmWmzv I1ts/x9cbf8cXW3/Gl1t/xldbf8ZXW3/GehaAADSZgAAw28AALh2AACvewAApn4AAJ1+AACRfAAA inwPAIV9HgCBfS0BfHw5A3d6QwZzeUsJcHhTDGx3WhBpdmETZnVoFmN0bxhhc3gbXnKCHltyjSBZ cZoiV3GoJFVxuSVUcdAlVHHuIlZx/h5Xcf8cV3H/Glhx/xlYcf8ZWHH/GeNeAADNaQAAv3MAALR6 AACrfwAAooIAAJiDAACLgQAAhIENAH+CGgB7gikBdoE2AnKBQAVuf0kIan5QC2d9Vw5kfF4RYXtm FF56bRdbenYZWXmAHFZ4ix9TeJghUXemIlB3tyNPd84jT3fsIVB3/R5Rd/8bUnf/GVJ3/xlSd/8Z Unf/Gd5iAADIbgAAu3cAALB/AACnhAAAnYcAAJKHAACEhwAAfYcJAHiIFgB0iCYAcIgyAmyHPQRo hkYGZYVOCWGFVQxehFwPW4NjElmCaxVWgXQXU4B+GlCAiRxOf5YeTH+lIEp/tiFJf8whSX7rH0p+ /BxLfv8aS37/GUx+/xhMfv8YTH7/GNVnAADDcwAAtnwAAKyEAACiiQAAmIsAAI2NAAB8jQAAdY4E AG+PEgBtkCEAaZAuAWWPOQJijkIEXo5LB1uNUgpYjFkMVothD1OLaBJQinEUTYl7F0qJhxlIiJUb RoijHUSItB1DiModQ4fqHESG+xpEhv8YRYb/F0WF/xdFhf8XRYX/F81tAAC9eAAAsYIAAKeKAACc jgAAkpAAAIaTAAB5lQAAbJcAAGaXDgBjmBsAYZgpAF6YNQFalz4DV5dHBVWWTwdSllYJT5VeDEyU Zg5KlG8QR5N5E0SThRVCkpMXQJKiGD6Ssxk9kskZPZHpGD2Q+hc+j/8WPo//FT6P/xU+j/8VPo// FcVzAAC3fwAArIkAAKGPAACWkwAAi5YAAH+ZAABznAAAZJ8AAFygCQBZoBQAV6EiAFWhLwBSoTkB UKFDAk2gSwRKoFMFSKBaB0WfYwlDn2wLQJ52Dj6egxA7npEROZ2gEjidshM3nsgTN53oEjab+hI2 mv8SNpn/ETeZ/xE3mf8RN5n/Eb57AACxhwAApY8AAJuUAACQmAAAhJwAAHegAABrpAAAX6cAAFKq AABNqw4AS6saAEqrJwBIqzMARqs9AUSrRgFCq04CQKtWAz6rXwU7q2gGOapzCDeqgAk0qo8LMqqf DDGqsAwwqscMMKnnDC+n+g0vpv8NL6X/DS+l/w0vpf8NL6X/DbaEAACqjgAAnpQAAJSZAACHngAA e6MAAG+oAABjrAAAV68AAEuyAABBtQYAPrYRAD22HgA7tikAOrc0ADm3PgA3t0cANrdQATS3WgEy t2QCMLdvAy63fAQst4sFKrecBSm3rgYouMUFKLfmBSe1+Qcms/8HJrL/CCay/wgmsv8IJrL/CK+N AACilAAAl5oAAIugAAB+pgAAcasAAGWwAABZtAAATbcAAEK7AAA4vgEAL8IJAC3DEgAswx4AK8Mp ACrEMwApxD0AKMVHACfFUQAmxVwAJcZoACPGdgEixoYBIMaYAR/GqwEex8EBHsbkAR3E+AIcwv8D HMH/AxzB/wQcwf8EHMH/BKWUAACamgAAjqEAAIGnAABzrgAAZ7QAAFq5AABOvQAAQsAAADjDAAAv xwAAJssEAB7QCgAb0REAGtIaABnSJQAY0y8AGNM6ABfURAAW1FAAFdVdABTVawAT1nwAEtePABHY pAAQ2bsAENneABDV8wAQ0/8AENL/ARDR/wEQ0f8BENH/AZyaAACRoQAAg6gAAHWwAABotwAAW70A AE7BAABCxQAAN8gAAC3MAAAk0AAAHNUAABXaBQAQ4gsAEOMRAA7kGgAO5CMADeUtAAzlNwAL5kIA CuZPAAnnXQAI520ABuaAAAXmlQAE5qsAAubEAAHm5gAA5/kAAOf/AADm/wAA5v8AAOb/AJOhAACF qQAAd7EAAGm5AABbwAAATsYAAEHKAAA1zgAAKtIAACHWAAAZ2wAAEt8AAA3jAAAL8QgACfMOAAfz EwAE8hoAAvIiAADyKgAA8jQAAPI/AADyTAAA8lwAAPJtAADyggAA8pgAAPOtAADzxgAA9OUAAPT2 AAD0+wAA9PsAAPT7AIepAAB5sgAAaroAAFzCAABOyQAAQM4AADPTAAAo2AAAHt0AABXhAAAP5AAA CugAAAXzAAAD/QEAAPwIAAD7DQAA+xEAAPsWAAD8HgAA/CYAAPwwAAD9PAAA/kkAAP5aAAD+bQAA /4IAAP+YAAD/rAAA/8AAAP/YAAD/5AAA/+QAAP/kAHuyAABsuwAAXcQAAE/NAABA0gAAMtkAACbe AAAb4gAAEuYAAAzqAAAF7QAAAPQAAAD/AAAA/wAAAP8AAAD/BAAA/wkAAP8OAAD/EgAA/xgAAP8h AAD/KwAA/zcAAP9GAAD/WAAA/2sAAP+AAAD/lQAA/6YAAP+zAAD/uwAA/7sAAP+7AP8bJgD/HCQA /xokAP8VJwD/EC0A/wo2AP8FQwD/AVAB/wBeAf8AawH/AHYB/wCBAP8AigD/AJIA/wCaAP8AoAD/ AKYA/wCsAP8AsgD/ALkA/wDCAP8AzQD/AN8A/wDsAP8A+AD/AP8A/QD/AP0A/wD9AP8A/QD/AP0A /wD9AP8A/QD/AP8fIwD/HyEA/x4hAP8ZIwD/EykA/w4yAP8MQAD/CU0B/wdaAf8EZwH/A3MB/wN9 Af8DhwH/A48A/wKWAP8CnAD/AqIA/wKoAP8CrwD/AbYA/wG+AP8ByQD/AdsA/wDqAPwA9gD4AP8A 9wL/APcD/wD2BP8A9gT/APYF/wD2Bf8A9gX/AP8iHwD/IhwA/yEcAP8eHwD/GCQA/xUvAP8SPAD/ EEkA/w5WAf8MYgH/C24B/wt5Af8LggH/C4sB/wuSAf8KmQH/Cp8A/wqlAP8KqwD/CrIA/wq7AP0K xgD7CtQA9wrnAPMK9ADwCv8A7wv/AO4M/wDtDP8B7Qz/Ae0M/wHtDP8B7Qz/Af8lGwD/JhgA/yUX AP8hGAD/ICEA/x4rAP8aNwD/F0UA/xRRAf8SXgH/EWkB/xF0Af8RfQH/EIYB/RCOAfwQlQH6EJsB +RChAfcQqAH2EK8B9BC3APMQwgDxENAA7RDlAOgR8gDmEf4B5BL/AeMS/wHiEv8B4hL/AeES/wHh Ev8B4RL/Af8pFgD/KhMA/ykSAP8nEwD/KBwA/ycnAP8jMwD/ID8A/x1MAP8bWAH8GWQB+BluAfYY eAHzGIEB8RiJAe8YkAHuGJcB7BieAeoYpAHpGKwB5xi0AeYYvwHkGM0B4BnjAdwa8QHYGv4C1Bv/ AtIb/wLRG/8C0Bv/AtAb/wLQG/8C0Bv/Av8tEgD/Lg8A/y4NAP8vEAD/LxcA/y4hAP8sLQD/KTkA +SZGAPQkUwHvIl4B6yJpAeghcwHmIXwB4yGEAeEhjAHgIZMB3iGaAdwhoQHaIakB2CGxAtUhvALT IskC0CLfAswj8APII/0DxiT/A8Qk/wPDJP8DwiT/A8Ek/wPBJP8DwST/A/8wDwD/MgsA/zMIAP82 DQD/NhIA/zUaAP0yJQD0MDIA7S0/AOcsTADiK1gB3StjAdkqbQHVKnYC0ip/AtAqhgLOKo4DzCqV A8oqnAPJKqMExyqsBMUqtgTDKsMFwirVBb4r6wW6K/kGuCz/BrYs/wW1LP8FtCz/BbQs/wW0LP8F tCz/Bf80DAD/NgUA/zkDAP88CAD/PA0A/TsTAPE4HQDoNSkA4DQ3ANkzRgDRNFIBzTNdAckzZwLG M3ADxDJ4BMEygAS/MocFvjKPBrwylga6MZ4HuDGmB7cxsAi1MrwIszLMCbEy5QmtM/UJqzP/Caoz /wioM/8HqDP/B6cz/wenM/8HpzP/B/83BwD/OgAA/z4AAPpBAQDxQQYA8T8NAOY8EgDbOh8A0Dsx AMo8QADEPE0BwDxYArw7YQO5O2oFtjpyBrQ6egeyOYEIsDmICa85kAqtOJgKqzihC6k4qgyoOLYN pjjFDaQ43g6hOfENnzr/DJ46/wudOv8KnDr/CZw6/wmcOv8JnDr/Cf87AgD/PgAA90QAAOZHAADf SAEA2kYGANlACwDNQhkAxUQrAL5EOwC5REgBtUNTA7FCXASuQmUGq0FsB6lAdAmmQHsKpD+DC6M/ ig2hPpMOnz6cD50+pRCbPrERmj6/EZg+1BKWP+0RlD/8D5NA/w6SQP8MkkH/C5JB/wuSQf8LkkH/ C/89AAD/QwAA6UkAAN5OAADTTwAAzU4DAMpJCADCSRQAu0omALVLNgCvS0MCq0pOA6dJVwWkSGAH oUdnCZ5GbwqcRnYMmkV9DphFhQ+WRI4QlESXEpJDoROQQ6wUj0O6FY1DzRWLROgVikX6EolG/xCJ Rv8OiEb/DYhG/w2IRv8NiEb/Df9AAADyRwAA408AANRTAADLVQAAxFQAAMBQBAC5TxEAslAiAKxR MgCnUT8ColBKA55PUwWbTlwImE1jCpVMagyTS3ENkUp5D45KgBGMSYkSikmSFIhInBWGSKgWhUi1 F4NIxxiBSOQYgUr3FYBK/xKAS/8QgEv/D4BL/w6AS/8OgEv/Dv9DAADsSwAA3VMAAM5YAADEWgAA vVoAALhXAQCxVA4AqlYeAKVWLgCfVjsBm1VGA5dUUAWTU1gIkFJfCo1RZgyLUG0OiE90EIZPfBKE ToUTgk6OFYBNmRd+TaQYfE2yGXpNwxp5Td8aeE70F3hP/xR4T/8SeFD/EHhQ/w94UP8PeFD/D/1G AADnTwAA1lcAAMhcAAC/XwAAt18AALFcAACqWQwApFoaAJ5bKgCZWzgBlFpDA5BZTAWMWFUIiVdc CoZWYwyDVWoOgVRxEH9TeRJ9U4EUelKLFnhSlRh2UaEZdFGvG3NRwBtxUdsccVLyGXFT/xVxVP8T clT/EXJU/xByVP8QclT/EPNIAADjUwAA0FsAAMRgAAC6YwAAs2MAAKxhAACkXgkAnV8XAJhfJwCT XzUBjl5AA4pdSgWGXFIHg1tZCoBaYAx9WWcOe1huEHhYdRJ2V34UdFaIF3JWkxhvVp8ablWsG2xV vRxrVtUda1bwGmtX/xdrWP8UbFj/EmxY/xFsWP8RbFj/EfFLAADfVgAAzF4AAMBkAAC3ZwAArmgA AKdmAACfYgYAmGMUAJJkJACNYzIBiWI9AoRhRwSBYE8HfV9WCXpeXQt3XWQNdVxrEHNccxJwW3sU bluFF2xakBlqWpwbaFmqHGZauh1lWtEdZVruG2Vb/hdmW/8VZlz/E2dc/xJnXP8SZ1z/Eu1OAADa WQAAyGEAALxnAACzagAAq2wAAKJqAACZZwIAkmcRAI1nIQCIZy8BhGY7An9lRAR7ZE0GeGNUCXVi WwtyYWENcGFpD21gcBJrX3kUaV+DF2ZejhlkXpobYl6oHGFeuB1fXs4dX17sG2Bf/RhhX/8VYV// E2Jf/xJiX/8SYl//EupRAADUXAAAxGQAALlqAACwbgAAp3AAAJ5uAACUawAAjWoQAIdrHgCDaywA fms4AnpqQgN2aUoGc2hSCHBnWQptZmANa2VnD2hkbhFmZHcUZGOBFmFjjBhfYpgaXWKmHFtith1a YswdWmLqHFtj/BhcY/8WXGP/FF1j/xNdY/8TXWP/E+ZVAADPXwAAwWgAALZuAACscgAApHQAAJpz AACObwAAh28NAIJvGwB9cCkAeW81AXVuPwNybUgFbmxQB2tsVwppa14MZmplDmRpbBFhaXUTX2h/ FlxoihhaZ5YaWGekHFZntB1VZ8odVWfoG1Zn+xhXZ/8WV2j/FFhn/xNYZ/8TWGf/E+FYAADLYwAA vWsAALJyAACpdgAAoHgAAJZ3AACIcwAAgXMLAHx0FwB4dCYAdHQyAXBzPQJtc0YEanJOB2dxVQlk cFwLYXBjDl9vahBcbnMSWm58FVdtiBdVbJQZU2yjG1FssxxQbMgcT2znG1Fs+hhRbP8VUmz/FFJs /xNSbP8TUmz/E9xcAADHZwAAuW8AAK92AAClewAAnHwAAJF8AACCeAAAenkHAHV5FAByeiMAbnov AWt5OgJoeUMDZHhLBWF3Ughfd1kKXHZgDFl1aA9XdHARVHR6E1JzhhZPc5MYTXKhGUxysRpKcsYa SnLlGkty+RdMcv8VTHL/E01y/xJNcv8STXL/EtRgAADCawAAtXQAAKt7AACifwAAl4EAAIyBAAB6 fgAAc38CAG5/EQBrgB4AaIAsAGWANwFigEADX39IBFx+UAZZflcIV31eC1R8Zg1RfG4PT3t4EUx7 gxRKepEWSHqfF0Z6rxhFesQYRHrkGEV5+BZGef8URnj/Ekd4/xFHeP8RR3j/Ec1lAAC9cAAAsXkA AKeAAACchAAAkoYAAIaGAAB3hgAAa4YAAGaHDQBjhxkAYIgnAF6IMwFbiDwCWIdFA1aHTQRThlQG UIZbCE6FYwpLhGwMSYR2D0aDgRFEg48TQoOdFECCrhU/g8IVPoLiFT+B9xM/gf8SQID/EUCA/xBA gP8QQID/EMZrAAC3dgAArH8AAKKFAACXiQAAjIsAAIGNAABzjgAAZY8AAF2PCQBakBQAWJAhAFaR LQBTkDgBUZBBAk6QSQNMkFAESo9YBUePYAdFjmkJQo5zC0CNfw0+jY0PPI2cEDqNrBE5jcEROI3h EDiL9hA4iv8POYn/DzmJ/w45if8OOYn/Dr9yAACyfQAAp4YAAJyKAACRjgAAhpEAAHqTAABtlQAA X5cAAFSZAQBPmQ8ATpoaAEyaJwBKmjIASJo8AUaaRAFEmkwCQppUA0CZXAQ+mWYFO5lwBzmYfAg3 mIoKNZiaCzOYqwsymL8MMpjfCzGW9Qsxlf8LMZT/CzGT/wsxk/8LMZP/C7h6AACshQAAoYsAAJaQ AACLlAAAf5cAAHKbAABmnQAAWqAAAE6iAABFpAkAQqQTAECkHwA/pCoAPqU0ADylPgA7pUcBOaVP ATelWAI1pWECM6VsAzGleQQvpIcFLaSXBiykqQYrpL0GKqTeBiqi9Qcpof8HKaD/CCmf/wgpn/8I KZ//CLGCAACliwAAmpEAAJCWAACDmgAAdp8AAGqiAABepgAAUqkAAEarAAA8rQAANa8MADOwFQAy sCEAMbArAC+wNQAusT4ALbFIACyxUQArsVsAKbFnASexdAEmsYMBJLGUAiOxpgIisrsCIbLbAiGv 8wMgrv8DIK3/BB+s/wQfrP8EH6z/BKqLAACdkQAAk5cAAIecAAB6ogAAbacAAGCrAABVrwAASbEA AD60AAAztwAAKroDACS8DQAivRUAIb0gACG9KgAgvTMAH749AB6+RwAdvlIAHL9eABq/bAAZv3wA GL+OABfAoQAWwLYAFMDTABW+8QAVvP8BFbv/ARS6/wIUuv8CFLr/AqGSAACWmAAAip4AAH2kAABv qgAAYq8AAFa0AABKtwAAProAADO9AAAqwAAAIcQAABnHBQATywsAEcwSABHMGwAQzCUAD80vAA7N OgAOzUYADc1SAA3OYAAMznAAC86DAArOlwAJzqwACM7GAAjO6AAIzfsACcv/AAnL/wAJy/8ACcv/ AJiYAACNngAAf6UAAHGsAABkswAAV7kAAEq9AAA+wAAAMsMAACjGAAAfygAAF80AABHRAAAM1gUA CNkMAAbZEgAF2hsABNokAAPbLgAB2zkAANxFAADdUgAA3mIAAN5zAADeiAAA350AAN+zAADfzgAA 4O4AAN/6AADf/wAA3/8AAN//AI+fAACBpgAAc64AAGW1AABYvQAASsIAAD3FAAAxyQAAJswAAB3Q AAAU1AAADtkAAAndAAAD4QAAAOMHAADjDQAA5BIAAOUZAADmIgAA5ysAAOk2AADrQwAA7FIAAOxi AADtdgAA7owAAO6hAADvtwAA79EAAO/rAADw9gAA8PYAAPD2AISnAAB1rwAAZ7cAAFm/AABLxgAA PMoAAC/OAAAk0gAAGtgAABLcAAAM4AAABeMAAADnAAAA6wAAAOsAAADtBQAA7gsAAPAQAADxFQAA 8x4AAPQnAAD3MwAA+UAAAPpRAAD7YwAA/HcAAP2NAAD9owAA/rYAAP7JAAD/3wAA/98AAP/fAHew AABouQAAWsEAAEzKAAA8zwAALtQAACLaAAAX3gAAEOIAAAnmAAAA6QAAAOwAAADwAAAA9gAAAPYA AAD3AAAA+AAAAPoHAAD7DQAA/REAAP8ZAAD/IwAA/y8AAP8+AAD/TwAA/2IAAP93AAD/jQAA/58A AP+uAAD/ugAA/7oAAP+6AP8WIwD/FSEA/xIhAP8OJAD/BioA/wAzAP8AQQD/AE4A/wBcAP8AaAD/ AHQA/wB+AP8AhwD/AI8A/wCWAP8AnAD/AKIA/wCoAP8ArgD/ALUA/wC9AP8AxwD/ANYA/wDnAP4A 8wD+AP4A/QD/APwA/wD7AP8A+wD/APsA/wD7AP8A+wD/AP8aIAD/GR4A/xYeAP8QIAD/CiUA/wQw AP8APQD/AEsA/wBYAP8AZAD/AHAA/wB6AP8AgwD/AIsA/wCSAP8AmAD/AJ4A/wCkAP8AqgD/ALEA /QC5APsAwwD6ANAA+ADjAPcA8QD2APwA9AD/APQA/wDzAP8A8wD/APMA/wDzAP8A8wD/AP8dHAD/ HBkA/xkZAP8UGwD/DiEA/wwsAP8JOQD/BUYA/wJTAP8AXwD/AGsA/wB1AP8AfgD/AIYA/wCOAP8A lAD+AJsA/AChAPoApwD4AK4A9QC1APMAvwDxAMsA8ADfAO4A7gDsAPkA6wD/AOoA/wDqAf8A6QH/ AOkB/wDpAf8A6QH/AP8gFwD/HxQA/xwTAP8XFQD/Fh0A/xMoAP8QNAD/DUEA/wxOAP8JWgD/CGYA /whwAP4HeQD8B4EA+geJAPgHkAD2BpYA8wadAPEGowDvBqoA7QayAOoGuwDoBsgA5gbcAOQG7ADi CPoA4Ar/AN4L/wDdC/8A3Qz/ANwM/wDcDP8A3Az/AP8jEgD/IxAA/yEOAP8eEAD/HhgA/xwjAP8Y LwD/FDsA/xJJAPwQVQD4D2AA9A9qAPEPdADvDnwA7Q6EAOsOiwDpDpIA5w6ZAOYOoADkDqcA4g6v AOAOuADeDsUA3A7aANYQ7ADSEfoAzxL/AM0S/wHMEv8ByxP/AcoT/wHKEv8ByhL/Af8nDwD/JwwA /yUJAP8mDQD/JRMA/yMcAP8gKAD7HDUA9RpCAO8YTwDqF1oA5hZlAOMWbgDgFncA3hZ/ANwWhwDZ Fo4A1haVANQWnADSF6MA0BerAM4YtQDMGMEAyxjSAMca6AHDG/gBwBv/Ab4c/wG9HP8CvBz/Arwb /wK8G/8CvBv/Av8rDAD/KwUA/ysDAP8tCQD/LA4A/ykVAPcmIADuIy0A5yE6AOEfSADbH1QA1SBf ANEgaADOIHEAzCF5AMohgQHIIYgBxiGPAcQhlgHDIZ4BwSKmAb8irwG9IrsCvCPKArkj4wK1JPQC syT/A7Ek/wOvJP8DryT/A64k/wOuJP8DriT/A/8vBgD/LwAA/zIAAP8zAgD5MggA9y8OAOsrFgDh JyIA2CcyANApQQDLKk4AxipZAMMqYgHAKmsBvSpzAbsqegK5KoICuCqJArYqkAK0KpgDsyqhA7Eq qgOvK7UErivEBKwr2wSoLO8Epiz+BaQs/wSjLf8Eoi3/BKIs/wSiLP8Eoiz/BP8yAAD/MwAA+TgA AOk5AADiOQAA3jUHAN4uDQDRLxsAyTEsAMMzOwC9M0gAuTRTAbYzXAGzM2UCsDNtAq4zdAOsMnsD qzKDBKkyigSnMpMFpTKbBqQypQaiMrAHoDK+B58y0QecM+oHmjP7B5g0/weXNP8GljT/BpY0/wWW NP8FljT/Bf81AAD/OAAA6j4AAN9CAADVQgAAzz8DAM04CADFOBUAvTomALc7NgCyPEMArjxOAao7 VwKnO2ADpTpnA6M6bwShOnYFnzl9Bp05hQebOY0HmTiWCJg4oAmWOKsKlDi4CpM5yguROeULjzr3 Co06/wmMO/8IjDv/B4w7/weMO/8HjDv/B/84AADxPgAA40UAANRJAADLSgAAxUcAAMFBBAC6PxEA s0EhAK1CMQCoQz4ApENJAaBCUwKdQVsDm0FiBJhAagWWQHEGlD94B5I/fwiQP4gKjz6RC40+mwyL PqYNiT6zDYg+xA6GP+AOhD/0DYNA/wuDQP8KgkD/CYJB/wiCQf8IgkH/CP88AADrQwAA3EoAAMxP AADDUAAAvE4AALdJAQCxRg4AqkgcAKRJLACgSToAm0lFAZhITgKUR1cDkkdeBY9GZQaNRmwHi0Vz CYlFewqHRIMLhUSNDINElw6BQ6IPf0OvEH5DwBB8RNoRe0TxD3pF/w16Rv8Lekb/CnpG/wl6Rv8J ekb/CfU+AADmSAAA008AAMdUAAC9VQAAtlQAALBQAACpTAsAok0YAJ1OKACYTjYAlE5BAZBNSwKN TVMEikxaBYdLYQaFS2gIg0pvCYBKdwt+SX8MfEmJDnpIkw94SJ8Qd0isEnVIvBJ0SdITc0nuEXJK /w9ySv8Nckr/C3JK/wtySv8Kckr/CvJCAADgTAAAzlMAAMFYAAC4WgAAsFkAAKlWAACiUgcAm1IV AJZTJACRUzIAjVM+AYlSRwKGUVAEg1FXBYBQXgZ+T2UIe09sCXlOcwt3TnsNdU2FDnNNkBBxTZwS b02pE25NuRRsTc4UbE3rE2xO/RBsT/8ObE//DGxP/wtsT/8LbE//C+5FAADcUAAAyVcAAL1cAAC0 XgAArF4AAKRbAACcVgQAlVYSAJBXIQCLWC8Ah1c7AYNWRAJ/Vk0DfFVUBXpUWwZ3VGIIdVNoCXNT cAtxUngNb1KCD21RjRFrUZkSaVGmFGdRthVmUcsVZVLpFGVS+xFmU/8PZlP/DWZT/wxmU/8MZlP/ DOpJAADVUwAAxVoAALpfAACwYgAAqGIAAJ9fAACWWgAAj1oQAIpbHgCFWywAgVs4AX1bQQJ6WkoD d1lRBHRYWAZxWF8Hb1dmCW1XbQtrVnYNaVZ/D2dVihFlVZcTY1WkFGFVtBVgVcgWX1XnFWBW+hJg Vv8PYVf/DmFX/w1hV/8MYVf/DOdMAADRVgAAwV4AALZjAACtZgAApGYAAJtkAACQXgAAiV4OAIRf GwCAXykAfF81AXhfPwJ0XkcDcV1PBG9cVgVsXFwHaltjCWhbawtmWnMNZFp9D2JaiBFfWZQTXlmi FFxZshVbWcYWWlnlFVta+RJbWv8QXFr/Dlxa/w1cWv8NXFr/DeNPAADNWQAAvmEAALNmAACpaQAA oGoAAJdoAACLYgAAg2IMAH5jGAB6YyYAdmMyAHNjPAFvYkUCbGFMBGphVAVnYFoHZWBhCGNfaQph X3EMX157Dl1ehhFaXpMSWF2gFFddsBVWXsQWVV7jFVZe9xJWXv8QV17/Dlde/w1XXv8NV17/Dd5T AADIXQAAu2QAALBqAACmbQAAnW4AAJNtAACFZwAAfmcJAHhnFQB0ZyMAcWgvAG5nOQFrZ0ICaGZK A2VmUgVjZVgGYGVfCF5kZwpcZG8MWmN5DlhjhBBVYpESU2KfE1JirhVRYsIVUGLhFVFi9hJRYv8Q UmL/DlJi/w1SYv8NUmL/DdlWAADEYAAAt2gAAKxuAACjcQAAmnMAAI9xAAB/awAAeGsFAHJrEgBu bB8Aa2wsAGhsNwFmbEACY2tIA2BrTwRealYGXGpdB1lpZQlXaW0LVWl3DVNogg9QaI8RTmedE01n rBRLaMAUS2jeFEtn9RJMZ/8PTGf/Dk1n/w1NZ/8NTWf/DdJaAADAZAAAs2wAAKlyAACgdgAAlncA AIp2AAB5cQAAcXEAAGtxDwBocRwAZnIoAGNyNABgcj0BXnJFAltxTQNZcVQFV3BbBlRwYwhSb2sK UG90DE1ugA5Lbo0QSW6bEUdtqxJGbr4TRW7cEkZt9BFGbf8PR23/Dkds/w1HbP8NR2z/DcxfAAC8 aQAAsHEAAKV3AACcewAAkXwAAIZ7AAB1eAAAa3cAAGV3DABheBcAX3gkAF15MABaeToBWHlCAlZ4 SgJTeFEEUXdYBU93YAdMdmgISnZyCkh1fQxFdYoOQ3WZD0J1qRBAdbwQQHXZEEB08w9AdP8OQXP/ DUFz/wxBc/8MQXP/DMZkAAC3bgAAq3YAAKJ8AACXfwAAjIEAAIGBAABygAAAZX8AAF1/CABZfxMA V4AgAFWAKwBTgTYAUYA+AU+ARgJNgE4CS39VA0l/XQVGf2YGRH5wCEJ+ewk/fogLPX2XDDx9pw06 fboOOn7WDTp88Q06e/8MOnv/Czp6/ws6ev8LOnr/C8BpAACydAAAp3wAAJ2BAACShAAAh4YAAHuH AABuhwAAYIcAAFWHAQBQiA4ATogaAE2JJgBLiTAASYk6AEiJQgFGiUoBRIlSAkKJWgNAiGMEPYht BTuIeAY5h4YIN4eVCTWHpgo0h7kKM4fTCjOG8Akzhf8JM4T/CTOD/wkzg/8JM4P/CblwAACtegAA ooIAAJeHAACNigAAgYwAAHWOAABojwAAWpAAAE+RAABHkgoARJITAEOTHwBBkyoAQJM0AD+TPQA9 k0UAO5NNATqTVgE4k18CNpNpAzSTdQMykoMEMJKTBS6SpAYtkrcGLJLRBiyR7wYrj/8GK47/BiuN /wcrjf8HK43/B7N4AACnggAAnIgAAJGMAACHkAAAepMAAG2VAABhlwAAVZkAAEmbAAA/nAEAOZ0O ADedFwA2niIANJ4sADOeNQAynj4AMZ5HADCfUAAun1oALZ9kASufcQEpnn8CJ56QAiaeoQIknrUC I57OAiOd7gMjm/4DIpr/BCKZ/wQimf8EIpn/BKyBAACgiAAAlY4AAIuSAAB/lgAAcpoAAGWdAABZ oAAATqMAAEKkAAA3pgAALqgFACmpDwAoqRgAJ6oiACaqLAAlqjUAJKo/ACOqSAAiq1MAIateACCr agAeq3kAHauLABurnQAaq7EAGavKABmq7AEZqP0BGKf/Ahim/wIYpv8CGKb/AqWJAACZjwAAj5QA AIOZAAB1ngAAaKIAAFymAABQqQAARKwAADmuAAAvsAAAJrMAAB61BgAZtw8AGLcXABe3IQAWtyoA Fbc0ABS4PgATuEkAErhUABK5YgARuXEAELmDAA+5lwAOuawADbnEAA245wAOtvsADrX/AA60/wAO tP8ADrT/AJyQAACSlQAAhpsAAHmgAABrpgAAXqsAAFKvAABGsgAAOrUAAC+3AAAlugAAHb0AABXA AAAQwwYAC8YOAArFFQAJxR4ACMUoAAfFMgAGxj0ABcZJAAXGVwADxmYAAsZ3AAHGiwAAxqAAAMW2 AADG0gAAxe8AAMX8AADF/wAAxf8AAMX/AJWWAACJnAAAe6MAAG2pAABgrwAAU7QAAEa4AAA6uwAA Lr4AACTBAAAbxAAAE8cAAA7KAAAIzgEAAdAKAADQEAAA0BYAANEeAADSJwAA0zEAANQ8AADVSQAA 1lgAANZpAADWfAAA1pIAANanAADWvwAA1uAAANbzAADW/gAA1v8AANb/AIydAAB+pAAAb6sAAGGy AABUuQAARr0AADnBAAAtxAAAIscAABnLAAARzgAADNIAAAXVAAAA2wAAANwDAADdCgAA3g8AAN8U AADhHAAA4iQAAOQuAADmOgAA50kAAOhZAADoawAA6YEAAOmYAADprQAA6cUAAOniAADp8gAA6fUA AOn1AIClAABxrQAAY7UAAFW8AABHwgAAOcYAACzKAAAgzgAAFtIAAA/WAAAI2wAAAN8AAADjAAAA 5QAAAOcAAADoAQAA6gcAAOsNAADtEQAA7xgAAPEhAADzKwAA9jgAAPdIAAD4WgAA+W0AAPqEAAD6 mwAA+q8AAPrCAAD62gAA+t8AAPrfAHSuAABltgAAVr4AAEjGAAA5ywAAK9AAAB/UAAAU2gAADd8A AAXjAAAA5gAAAOkAAADtAAAA7wAAAPEAAADzAAAA9QAAAPYCAAD4CQAA+g4AAP0TAAD/HAAA/ygA AP82AAD/RwAA/1oAAP9uAAD/hQAA/5oAAP+rAAD/uQAA/7wAAP+8AP8RIAD/EB4A/wweAP8EIQD/ ACcA/wAwAP8APgD/AEwA/wBZAP8AZQD/AHAA/wB6AP8AgwD/AIsA/wCSAP8AmAD/AJ4A/wCkAP8A qgD/ALAA/wC4AP8AwgD/AM4A/wDiAP4A8AD9APsA+wD/APsA/wD7AP8A+gD/APoA/wD6AP8A+gD/ AP8UHAD/EhoA/w4aAP8IHAD/ACEA/wAtAP8AOgD/AEgA/wBVAP8AYQD/AGwA/wB2AP8AfwD/AIcA /wCOAP8AlAD/AJoA/gCgAP0ApgD8AKwA+wC0APkAvQD4AMkA9wDcAPUA7ADzAPgA8wD/APIA/wDx AP8A8AD/APAA/wDwAP8A8AD/AP8XGAD/FRYA/xEVAP8MFwD/BR0A/wAoAP8ANgD/AEMA/wBQAP8A XAD/AGcA/wBxAP8AegD8AIIA+gCJAPgAkAD3AJYA9QCcAPQAogDzAKgA8QCwAPAAuADuAMMA7ADT AOoA5wDpAPUA5wD/AOYA/wDlAP8A5QD/AOUA/wDlAP8A5QD/AP8aEwD/GBEA/xQQAP8PEQD/DRkA /wokAP8FMAD/AT4A/wBLAP8AVwD+AGIA+gBsAPUAdQDyAH0A8ACEAO4AiwDsAJEA6wCXAOkAngDn AKQA5gCsAOQAtADiAL8A4ADNAN4A4wDcAPIA2gD9ANgA/wDWAP8A1QH/ANUB/wDVAv8A1QL/AP8e EAD/HA0A/xcLAP8VDgD/FBUA/xEfAP8OKgD/CzgA/QhFAPgGUQD0BFwA7gRmAOoEbwDmA3cA5AR/ AOIEhgDgBIwA3gSTAN0FmgDbBaAA2AWoANUFsQDSBbsA0AbJAM4H4ADMCPEAyQr/AMcL/wDGDP8A xQz/AMUM/wDFDP8AxQz/AP8hDAD/IAYA/xwDAP8dCgD/GxAA/xgYAP8UIwD2ETAA7w4+AOoOSgDl DVYA4Q1gAN0NaQDZDXEA1Q15ANMNgQDRDYgAzw2PAM0OlgDLDp0Ayg6lAMgOrgDGD7kAxBDIAMIQ 3wC+EfIAuxL/ALkT/wC3E/8BthP/AbYT/wG2E/8BthP/Af8lBgD/IwAA/yMAAP8kAwD/IQoA/R0R APEaGwDoFicA4RQ1ANoTQwDTFE8AzhVZAMsVYwDIFmsAxRZzAMMXewDBF4IAwBiJAL4YkAC8GJgA uxmgALkZqQC3GbQAtRrCALQa1gCwG+0BrRz8Aasd/wGpHf8BqR3/Aagd/wGoHf8BqB3/Af8oAAD/ JwAA/ioAAO8qAADnJwEA5yIJAOQdEADZGx0Azx0tAMkePADEIEkAvyBTALwhXQC5IWUAtyJtALUi dACzInwAsSKDAbAiigGuIpIBrCObAasjpAGpI68BpyO8AaYkzgGjJOgCoCX5Ap4l/wKdJf8CnCX/ Apsl/wKbJf8CmyX/Av8sAAD/LQAA7TIAAOI0AADaMwAA0y4DANIlCgDJJRcAwScnALspNgC2KkMA sitOAK8rVwCsK2AAqitnAagrbwGmK3YBpCt9AaMrhAKhK40CnyuVAp4rnwKcK6oDmiu2A5ksxwOX LOIDlC31BJIt/wORLf8DkC7/A5At/wOQLf8DkC3/A/8wAADyMwAA5DoAANY9AADMPAAAxzkAAMMx BQC9LhEAtTAhALAyMACrMz0ApzNJAKQzUgChM1oBnzNiAZwzaQKaM3ACmTN3ApcyfwOVMocDkzKQ BJIymgSQMqUFjjKxBY0zwgaLM9wGiTTyBoc0/wWGNP8FhjT/BIU0/wSFNP8EhTT/BPwzAADrOgAA 3EEAAM1EAADDRAAAvUEAALg7AQCyNw4AqzgcAKU5KwChOjgAnTtEAJo7TQGXOlYBlDpdApI6ZAKQ OmsDjjlyA4w5egSKOYIFiTmLBYc5lQaFOaAHgzmtB4I5vAiBOdMIfzruCH06/gd8O/8GfDv/BXw7 /wV8O/8FfDv/BfQ3AADlQAAA0kcAAMVKAAC8SwAAtUkAAK9DAACpPgsAoj8XAJ1AJgCYQTQAlEE/ AJFBSQGOQVEBi0BZAolAYAOHQGcDhT9tBIM/dQWBP30Gfz6HB30+kQh7PpwJej6pCXg+uAp3P80K dT/qCnRA/Ah0QP8HdED/BnNA/wZzQP8Gc0D/BvE7AADfRQAAzEwAAL9PAAC2UAAArk8AAKdKAACg RAcAmkUUAJVGIgCQRjAAjEc8AIlGRQGGRk4Bg0ZVAoFFXAN+RWMEfERqBHpEcQV5RHkGd0SCCHVD jQlzQ5kKcUOmC3BDtQxuRMkMbUTnDG1F+gpsRf8IbEX/B2xF/wdsRf8HbEX/B+w/AADYSQAAx1AA ALtUAACxVQAAqVQAAKFQAACZSgIAkkkRAI1KHwCJSywAhUw4AIJLQgF/S0oBfEpSAnlKWAN3Sl8E dUlmBXNJbQZxSXYHb0h/CG1IiglsSJYLakijDGhIsg1nSMUNZknkDWZJ+AtmSf8JZkr/CGZJ/wdm Sf8HZkn/B+hDAADSTQAAwlMAALdYAACtWQAApFgAAJxVAACTTgAAjE4OAIdPGwCCTykAf1A1AHtQ PwF4T0cBdk9PAnNOVQNxTlwEb01jBW1NagZrTXIHaU18CGdMhwplTJMLY0ygDWJMrw5hTcIOYE3h DmBN9gxgTv8KYE7/CWBO/whgTv8IYE7/CONHAADNUAAAvlcAALNbAACqXQAAoV0AAJhaAACNUwAA hlIMAIBTGAB8UyUAeVQxAHVUPABzU0QBcFNMAm1SUwJrUlkDaVJgBGdRaAZlUXAHY1F5CGFRhApg UJEMXlCeDVxQrQ5bUcAOWlHeD1pR9QxaUv8KW1L/CVtR/whbUf8IW1H/CN9KAADJUwAAu1oAALBf AACmYQAAnWEAAJReAACIVwAAgFYKAHpXFQB2VyIAc1guAHBXOQBtV0EBaldJAmhWUAJmVlcDZFZe BGJVZQVgVW0HXlV3CFxVggpaVY4MWVWcDVdVqw5WVb4PVVXbD1VV8w1VVf8LVlX/CVZV/wlWVf8I VlX/CNtNAADFVwAAuF4AAK1iAACjZQAAmmUAAJBjAACDXAAAe1sGAHVbEgBxWx8AblwrAGtcNgBo Wz8BZVtHAWNbTgJhWlUDX1pcBF1aYwVbWmsGWVl1CFdZgApVWYwLVFmaDVJZqg5RWbwOUFnYDlBZ 8g1RWf8LUVn/ClFZ/wlRWf8IUVn/CNRRAADCWgAAtGEAAKpmAACgaAAAl2kAAIxnAAB9YAAAdV8D AG9fEABrXxwAaGAoAGZgMwBjYDwBYWBEAV9fTAJcX1MDW19aBFlfYQVXXmkGVV5zCFNefglRXYoL T12ZDE1dqA1MXroOS17UDkte8QxMXv8LTF3/Ckxd/wlMXf8ITF3/CM9UAAC+XgAAsWUAAKdqAACd bQAAlG0AAIlsAAB4ZQAAb2QAAGlkDgBlZBkAYmQlAGBlMABeZToAXGVCAVplSgJYZFECVmRYA1Rk XwRSZGcFUGNxB05jewlMY4gKSmOXC0hjpgxHY7gNRmPRDUZj7wxGYv8KR2L/CUdi/wlHYv8IR2L/ CMpYAAC6YgAArmkAAKNuAACacQAAkHIAAIRxAAB0awAAaWkAAGNpCwBfaRUAXGohAFpqLQBYazYA Vms/AVVrRwFTak4CUWpVA09qXQRNamUFSmluBkhpeQdGaYYJRGmVCkNopQtBabcMQGnPDEBo7gtB aP8KQWf/CUFn/whCZ/8IQmf/CMVdAAC2ZgAAqm0AAKBzAACWdgAAi3cAAIB2AABwcgAAZXEAAFxw BwBYcBEAVnAdAFRxKABScTMAUHE8AE9yRAFNcUsBS3FTAklxWgNHcWIERXBsBUNwdwZBcIQHP3CT CD1vowk7cLUKO3DNCjpv7Ak7bv4IO27/CDtt/wc7bf8HO23/B79iAACxawAApnMAAJ15AACSewAA h3wAAHt8AABtegAAYHgAAFZ3AQBQdw4ATngYAEx4JABLeS4ASXk3AEh5QABGeUgBRHlPAUJ5VwJB eWACP3hpAzx4dAQ6eIIFOHiRBjd4oQc1eLMHNHjLBzR36wc0dv0HNHX/BzV1/wY1dP8GNXT/Brlo AACtcQAAonkAAJh+AACNgAAAgoEAAHaCAABpgQAAW4EAAFGBAABIgAoARYETAEOBHgBCgikAQYIy AECCOwA+gkMAPYJLADuCUwE5glwBN4JmAjWCcQMzgn8DMYGOBDCBnwQugbEFLYHIBS2B6QQtf/wF LX7/BS19/wUtff8FLX3/BbNuAACoeAAAnX8AAJKDAACIhgAAfYcAAHCIAABjiQAAVYoAAEuKAABB igIAO4sOADmLFwA4jCIAN4wsADaMNQA0jD0AM4xGADKNTwAxjVgAL41iAS2MbgErjHsBKoyLAiiM nAImjK8CJYzGAiWL6AIlivsDJYj/AyWI/wMlh/8DJYf/A612AACjgAAAl4UAAI2JAACCjAAAdo4A AGmQAABckgAAUJMAAESUAAA6lQAAMZYIAC2XEQAslxoAK5ckACqXLQAplzYAKJg/ACeYSAAmmFIA JZhcACOYaAAimHcAIJiHAB+YmQEdmKwBHJjDARyX5QEclfoBG5T/ARuT/wIbk/8CG5P/Aqd/AACc hgAAkYsAAIePAAB6kgAAbZUAAGGYAABVmwAASZ0AAD2eAAAznwAAKqEAACGjCgAfoxEAHqMaAB2k JAAcpC0AG6Q2ABqkPwAZpEoAGKRVABalYQAVpXAAFKWBABOllAASpagAEaW/ABCk4gARovgAEaH/ ABGg/wERoP8BEaD/AaCGAACVjAAAjJEAAH+VAABxmgAAZJ4AAFihAABMpAAAQKYAADWnAAAqqQAA IqwAABmuAAASsAkAELEQABCxGAAOsSIADrErAA2xNQANsUAADLFLAAuxWAAKsWcACLF4AAexiwAF saAABLC1AASw0AAEsO8ABa/+AAau/wAGrv8ABq7/AJiOAACPkwAAgpgAAHWdAABnogAAWqcAAE6r AABBrQAANa8AACuxAAAhtAAAGLYAABG5AAANvAMAB74MAAO9EgABvRkAAL4iAAC+KwAAvjYAAL5B AAC/TgAAv1wAAL9tAAC/gAAAvpUAAL6qAAC+wgAAveQAAL32AAC9/wAAvf8AAL3/AJKUAACFmgAA eKAAAGqmAABcqwAAT7AAAEKzAAA1tgAAKrgAACC7AAAXvgAAEMEAAAvEAAAExwAAAMkHAADJDQAA yRIAAMoZAADLIgAAyysAAM01AADOQQAAzlAAAM9gAADPcgAAz4cAAM+dAADPswAAz84AAM/rAADO +AAAzv4AAM7+AIibAAB6ogAAbKgAAF6vAABQtQAAQrkAADW8AAApvwAAHsIAABXGAAAOyQAACMwA AADQAAAA0wAAANUAAADWBgAA2AwAANkRAADbFgAA3B8AAN4oAADgNAAA4kEAAOJRAADjYwAA43cA AOSOAADkpAAA5LoAAOXUAADl6gAA5fMAAOXzAHyjAABuqgAAYLIAAFG5AABDvgAANcIAACjGAAAc yQAAE80AAAzRAAAE1QAAANoAAADeAAAA4QAAAOIAAADkAAAA5QMAAOcJAADpDgAA6xIAAO0aAADv JAAA8jEAAPRBAAD0UwAA9WYAAPV8AAD2kwAA9qkAAPe8AAD3zgAA998AAPffAHCsAABhtAAAU7sA AEXDAAA2xwAAJ8wAABvQAAAR1QAACtsAAADfAAAA4gAAAOUAAADpAAAA7AAAAO0AAADwAAAA8QAA APMAAAD1BAAA9woAAPoQAAD8FgAA/yEAAP8uAAD/QAAA/1MAAP9oAAD/gAAA/5YAAP+oAAD/tgAA /78AAP+/AP8NHAD/ChsA/wIbAP8AHgD/ACQA/wAuAP8APAD/AEoA/wBWAP8AYwD/AG0A/wB3AP8A fwD/AIcA/wCOAP8AlAD/AJoA/wCgAP8ApgD/AKwA/wC0AP8AvQD/AMkA/gDdAP0A7QD8APoA+wD/ APoA/wD5AP8A+gD/APoA/wD6AP8A+gD/AP8QGQD/DRcA/wYWAP8AGAD/AB4A/wAqAP8ANwD/AEUA /wBSAP8AXgD/AGkA/wByAP8AewD/AIIA/wCJAP8AkAD+AJYA/QCcAPwAoQD7AKgA+QCvAPgAuAD2 AMMA9ADSAPMA5wDyAPYA8AD/AO8A/wDwAP8A7wD/AO8A/wDuAP8A7gD/AP8SFAD/DxIA/wsSAP8A EgD/ABoA/wAlAP8AMwD/AEAA/wBNAP8AWQD/AGQA/QBtAPsAdgD5AH0A9wCEAPUAiwD0AJEA8wCX APEAnQDwAKMA7gCqAOwAswDqAL0A6ADLAOcA4QDlAPEA4wD9AOMA/wDiAP8A4QD/AOEA/wDgAP8A 4AD/AP8UEAD/EQ4A/w0NAP8HDwD/AhUA/wAgAP8ALQD/ADoA/wBHAPkAUwD1AF4A8gBoAPAAcADt AHgA6wB/AOkAhQDoAIwA5gCSAOUAmADjAJ8A4QCmAN8ArgDcALgA2gDFANYA2QDUAOwA0gD5ANEA /wDPAP8AzgD/AM4A/wDOAP8AzgD/AP8XDAD/FAgA/w8FAP8OCwD/DBEA/wcaAP8BJgD8ADQA9ABB AO0ATQDpAFgA5gBiAOMAagDgAHIA3gB5ANsAgADZAIYA1gCNANMAkwDRAJoAzwChAM0AqgDLALMA yQC/AMYA0ADFAOgAwwD2AMEA/wDAAv8AvwP/AL8D/wC/A/8AvwP/AP8bBgD/FwAA/xQAAP8TBQD/ EQ0A/w4UAPkKHwDwBiwA5gM5AOADRgDcA1EA1gRbANIEZADPBWwAzAVzAMoFegDIBYEAxgWHAMUG jgDDBpYAwQadAL8GpgC9BrAAuwe8ALkIzQC4CuUAtQv3ALMN/wCxDf8AsA3/ALAO/wCvDv8Arw7/ AP8eAAD/GwAA/xsAAPoaAAD1FgUA9hENAOsOFQDiCyIA2AsxANAMPgDLDUoAxw1VAMQOXgDBDmYA vw5tAL0OdAC7D3sAuQ+CALcQigC2EJEAtBCaALIQowCwEa0ArxG6AK0RygCqEuUApxT3AKUV/wCj Ff8AohX/AKIV/wCiFf8AohX/AP8iAAD/IAAA8CMAAOYkAADgIQAA3BkFANsQDADQERkAyBMpAMIV NwC9FkQAuRdOALUXVwCzGGAAsBhnAK4YbgCsGXUAqxl8AKkZhACoGowAphqUAKQangCjG6gAoRu0 AJ8cxQCeHN8Amh3zAZge/wGXHv8Blh//AZUf/wGVH/8BlR//Af8mAAD0JwAA5i0AANovAADPLQAA yicAAMcfCADBHBMAuh4iALQfMQCvID0AqyFIAKgiUgCmIloAoyNiAKEjaQCgI28AniN3AJwjfgCb I4YAmSSPAZckmQGWJKMBlCSwAZIlvwGRJdYBjibvAYwn/wKLJ/8Ciif/Aokn/wKJJ/8BiSf/Afop AADsMAAA3TYAAM04AADENwAAvjIAALorAgC1JQ4AricdAKgpKwCkKjgAoCpDAJ0rTACaK1UAmCtc AJYrYwCUK2oBkitxAZAseAGPLIEBjSyKAYsslAKKLJ8CiCyrAoYsugKFLc4Dgy7qA4Eu/AOALv8C fy7/An8u/wJ+Lv8Cfi7/AvQuAADkNwAA0j0AAMU/AAC7PwAAtDwAAK81AACpLwsAoy8XAJ4xJgCZ MjMAljI+AJIzSACQM1AAjTNYAIszXgGJM2UBhzNsAYYzcwGEM3wCgjOFAoAzjwN/M5oDfTOnA3wz tQR6M8kEeTTmBHc1+QR2Nf8DdTX/A3U1/wN1Nf8DdTX/A/AzAADdPQAAykMAAL5FAAC1RgAArUMA AKY9AACgNgYAmTYTAJQ4IQCQOS4AjDk5AIk5QwCHOUwAhDlTAYI5WgGAOWEBfjloAnw5bwJ6OXcC eTmAA3c5iwR1OZYEdDmjBXI5sQVxOcQGbzriBm469wVuO/8EbTv/BG07/wNtOv8DbTr/A+o5AADV QgAAxEgAALlLAACvSwAAp0kAAJ9EAACYPgEAkTwQAIw9HQCIPioAhD81AIE/PwB+P0gAfD9PAXo/ VgF4P10Bdj5kAnQ+awJyPnMDcD58A28+hwRtPpMFaz6gBmo+rgZpP8AHZz/eB2c/9QZmQP8FZkD/ BGZA/wRmP/8EZj//BOU9AADPRgAAv0wAALRPAACqUAAAok8AAJlKAACRRAAAikENAIRCGQCAQyYA fUQyAHpEPAB3REQAdURMAXJEUwFwQ1kBb0NgAm1DZwJrQ28DaUN5BGhDgwVmQ48GZEOdB2NDqwdh Q70IYETZCGBE8wdgRP8GX0T/BV9E/wRgRP8EYET/BOBBAADKSgAAu1AAALBTAACnVQAAnlMAAJVP AACLSQAAg0cLAH1HFQB5RyIAdkguAHNIOABxSEEAbkhJAWxIUAFqSFYBaEhdAmZHZAJlR2wDY0d2 BGFHgAVgR40GXkeaB1xHqQhbSLsIWkjUCFpI8QdaSf8GWkn/BVpI/wVaSP8EWkj/BNtEAADGTQAA uFMAAK1XAACjWQAAmlgAAJFUAACGTgAAfUsIAHdLEgBzTB8AcEwrAG1MNQBrTD4AaExGAGZMTQFk TFMBYkxaAmFMYgJfTGoDXkxzBFxLfgVaS4oGWEuYB1dMpwhWTLkJVUzRCVRM7whUTf8GVUz/BlVM /wVVTP8FVUz/BdVIAADCUQAAtVcAAKpbAACgXAAAl1wAAI1ZAACBUwAAd08EAHFPEABuUBwAalAo AGhQMgBlUDsAY1BDAGFQSgFfUFEBXVBYAlxQXwJaUGcDWFBxBFdQewVVUIgGU1CWB1JQpQhQULcJ UFDOCU9Q7QhQUP8HUFD/BlBQ/wVQUP8FUFD/BdBLAAC/VAAAsloAAKdeAACdYAAAlGAAAIldAAB8 VwAAclQAAGxTDgBoVBkAZVQkAGJULwBgVDgAXlRAAFxUSAFaVE8BWVRWAVdUXQJVVGUDVFRuBFJU eQVQVIYGTlSUB01UpAhLVLUIS1TMCUpU6whLVP4HS1T/BktU/wVLVP8FS1T/BcxOAAC7VwAArl4A AKRiAACaZAAAkWQAAIZiAAB3WwAAbVgAAGZYDABiWBYAX1giAF1ZLABbWTYAWVk+AFdZRgBWWU0B VFlUAVJZWwJRWWMDT1lsA01ZdwRLWIQFSViSB0hYogdHWbMIRlnKCEVZ6ghGWf0GRlj/BkZY/wVH WP8FR1j/BcdSAAC4WwAAq2EAAKFmAACYaAAAjmkAAINnAAByYAAAaF4AAGFdCQBcXRMAWl0eAFdd KQBWXjMAVF47AFJeQwBRXkoBT15SAU5eWQJMXmECSl5qA0hedQRGXoIFRF2QBkNeoAdBXrEHQF7I B0Be6AdAXfwGQV3/BUFd/wVBXP8FQVz/BcNWAAC0XwAAqGYAAJ5qAACVbQAAim0AAH9sAABvZwAA ZGQAAFtiBQBWYhAAVGIbAFJjJQBQYy8ATmQ4AE1kQABLZEgASmRPAUhkVwFGZF8CRWRoAkNkcwNB Y38EP2OOBT1jngY8Y7AGO2TGBjtk5gY7Y/oFO2L/BTti/wU8Yf8EPGH/BL5bAACwYwAApWoAAJtv AACRcgAAhnIAAHtxAABsbQAAYGsAAFVpAABPaA0ATWkXAEtpIQBJaisASGo0AEdqPQBFa0QARGtM AEJrVAFBa1wBP2plAj1qcAI7an0DOWqMBDdqnAQ2aq4FNWrEBTVq5QU1afkENWn/BDVo/wQ1aP8E NWj/BLlgAACsaQAAoXAAAJh1AACNdwAAgncAAHd3AABpdAAAXHMAAFFxAABIcAoARXASAENxHQBC cScAQHIwAD9yOAA+ckAAPXJIADtyUAA6clkBOHJjATZybQI0cnoCM3KJAzFymgMvcqwDLnLBAy5y 4wMucfgDLnD/Ay5v/wMub/8DLm//A7NmAACnbwAAnXYAAJN6AACIfAAAfn0AAHJ9AABkfAAAV3sA AEx6AABCeQMAPHkOADp6FwA5eiEAOHoqADd7MwA2ezsANHtEADN7TAAye1UAMHtfAC97agEte3cB K3uHASp7mAIoe6oCJ3u/AiZ74QImevcCJnj/AiZ4/wInd/8CJ3f/Aq5sAACjdgAAmXwAAI5/AACE ggAAeIMAAGyEAABfhAAAUYQAAEeEAAA8hAAAM4QJADCEEQAvhBoALYQkACyFLQArhTUAKoU+ACmF RwAohlAAJ4ZaACaGZgAkhnMAI4aDACGGlQAghqcBHoa8AR6G3gAehPUBHoL/AR6C/wEegf8BHoH/ Aah0AACefQAAk4IAAImFAAB+iAAAcYoAAGWLAABYjAAATI0AAECOAAA2jgAALI8AACWQDAAjkBMA IpAcACGQJQAgkS4AH5E2AB6RQAAdkUkAHJFUABqRYAAZkW4AGJF+ABaSkAAVkqQAFJG5ABOR2AAT j/QAFI7/ABSN/wAUjP8BFIz/AaN9AACYgwAAjogAAISMAAB3jwAAaZEAAF2TAABQlQAARZcAADmY AAAumQAAJZoAAB2bAgAWnQwAFZ0TABSdGwATnSQAEp0tABGeNwARnkEAEJ5MAA+eWAAOnmcADZ53 AAyeigALnZ4ACp2yAAmdzAAJnOwACpv+AAua/wALmf8AC5n/AJyEAACRigAAiI4AAHuSAABtlgAA YJkAAFScAABInwAAPKAAADChAAAmowAAHaUAABWnAAAQqQUAC6sNAAiqEwAHqhsABqokAAWqLgAE qjgAAqpEAAGqUAAAql4AAKpuAACqgQAAqpUAAKmqAACpwQAAqOQAAKj2AACn/wAAp/8AAKf/AJWL AACMkAAAf5UAAHGaAABjngAAVqIAAEqmAAA9qAAAMaoAACarAAAdrQAAFLAAAA6yAAAJtQEAArYK AAC2DwAAthUAALcdAAC3JQAAty8AALg5AAC4RgAAuFQAALhkAAC4dgAAuIsAALegAAC3tgAAt9MA ALbvAAC2/AAAtv8AALb/AI+SAACClwAAdJ0AAGaiAABYpwAAS6wAAD6vAAAxsQAAJrMAABy2AAAT uAAADbsAAAa+AAAAwQAAAMIEAADCCwAAwxAAAMQVAADEHAAAxSQAAMYuAADIOgAAyUcAAMlXAADJ aQAAyX0AAMmUAADIqgAAyMMAAMjkAADI9AAAyP0AAMj9AIWZAAB3nwAAaKYAAFqrAABNsQAAP7UA ADG4AAAlugAAGr0AABHAAAALwwAAA8cAAADKAAAAzQAAAM4AAADPAwAA0AkAANEOAADTEgAA1RkA ANciAADaLQAA3TkAAN5JAADeWgAA324AAN+FAADfnAAA37IAAN7LAADe5gAA3/QAAN/0AHmhAABr qAAAXK8AAE61AABAuwAAMb4AACTBAAAZxQAAEMgAAAnMAAAAzwAAANMAAADZAAAA3AAAAN0AAADf AAAA4QAAAOIFAADkCwAA5hAAAOgWAADqIAAA7SsAAPA6AADxSwAA8V4AAPJzAADziwAA86IAAPO2 AADzyQAA8+EAAPPhAG2qAABesQAAULkAAEG/AAAyxAAAJMgAABfMAAAO0AAABtUAAADaAAAA3gAA AOIAAADmAAAA6QAAAOoAAADsAAAA7gAAAPAAAADyAAAA9AYAAPYMAAD5EgAA/BwAAP8pAAD/OgAA /00AAP9iAAD/eAAA/5AAAP+jAAD/swAA/8EAAP/BAP8HGQD/ARcA/wAXAP8AGgD/ACEA/wArAP8A OQD/AEcA/wBUAP8AXwD/AGoA/wBzAP8AewD/AIMA/wCKAP8AkAD/AJYA/wCbAP8AoQD/AKgA/wCv AP8AuAD/AMQA/gDVAPwA6gD7APgA+gD/APkA/wD4AP8A+AD/APYA/wDzAP8A8QD/AP8LFQD/BRMA /wATAP8AFAD/ABoA/wAnAP8ANAD/AEIA/wBPAP8AWwD/AGUA/wBuAP8AdgD/AH4A/wCFAP4AiwD9 AJEA+wCXAPoAnQD4AKMA9wCrAPYAswD0AL4A8wDMAPEA4wDvAPMA7gD/AO0A/wDsAP8A6wD/AOwA /wDsAP8A6wD/AP8NEQD/CRAA/wAPAP8AEAD/ABYA/wAiAP8ALwD/AD0A/wBKAP8AVQD9AGAA+gBp APgAcQD2AHkA9AB/APMAhgDxAIwA7wCSAO4AmADsAJ8A6wCmAOkArgDnALgA5QDFAOMA2gDhAO0A 3wD7AN4A/wDdAP8A3QD/AN0A/wDdAP8A3QD/AP8PDQD/DAsA/wMJAP8ADAD/ABIA/wAdAP8AKQD7 ADcA+ABEAPUAUADyAFoA7gBjAOwAawDpAHMA5wB6AOUAgADjAIYA4QCMAN8AkwDdAJkA2wChANkA qQDVALIA0gC+ANAAzgDOAOYAzAD2AMoA/wDKAP8AyQD/AMgA/wDIAP8AyAD/AP8RCAD/DQIA/wcA AP8FCAD/AA4A/wAWAPcAIgDvADAA6wA9AOgASQDkAFQA4ABdAN0AZQDZAG0A1QBzANIAegDQAIAA zgCHAMwAjQDKAJQAyACbAMYApADEAK0AwgC4AMAAxwC9AN8AvADxALsA/gC5AP8AuAD/ALgA/wC4 AP8AuAD/AP8UAAD/DwAA/w0AAP8MAAD/BwkA+AEQAOgAGgDjACgA3QA2ANgAQgDSAE0AzgBXAMoA XwDHAGYAxQBtAMMAdADBAHoAvwCBAL0AiAC7AI8AuQCXALcAnwC1AKgAswCzALEAwgCvANgArgLt AKwD+wCrBf8Aqgb/AKkG/wCpBv8AqQb/AP8WAAD/EgAA9xIAAOwRAADmDgAA5QYIAN0DEgDUAyAA zQQtAMgEOgDDBUYAvwVQALwGWAC5BmAAtwdnALUHbgCzB3UAsQh7AK8IggCuCYoArAmSAKoJmwCo CqUApgqwAKULvwCjDNQAoQ3tAJ8O/gCdDv8AnA//AJsP/wCbD/8Amw//AP8aAAD3GQAA6h4AAN8e AADVGgAA0BMCAM4MCwDHCxYAwA0lALoOMgC2Dj8Asg9JAK8QUgCsEFoAqhBhAKgRaACmEW8ApBF2 AKIRfQChEYUAnxKOAJ0SlwCcEqIAmhOtAJgTvACXFNAAlBXsAJIW/QCQF/8Ajxf/AI4X/wCOF/8A jhf/APodAADuIwAA3ygAANAqAADHJwAAwSEAAL0ZBQC5EhAAshUeAK0WLACoFzgApBhDAKEZTACf GVQAnBpcAJoaYgCZGmkAlxtwAJUbdwCUG38AkhyIAJAckgCPHJ0AjR2pAIsdtwCKHsoAiB/nAIYg +gCEIP8BgyD/AYMg/wGCIP8BgiD/AfUkAADlLAAA0zEAAMYzAAC8MQAAti0AALAlAACsHQwAph4Y AKEgJgCcITIAmSI9AJUiRwCTI08AkSNWAI8jXQCNJGQAiyRrAIkkcgCIJHoAhiSDAIQljQCDJZgB gSWkAYAmsgF+JsUBfSfiAXsn9wF5KP8BeCj/AXgo/wF4KP8BeCj/Ae8rAADdMwAAyjkAAL47AAC0 OgAArTYAAKYvAAChKAcAmycTAJYoIACRKS0Ajio4AIsrQgCIK0oAhitSAIQrWACCLF8AgCxmAH8s bQB9LHUAeyx+AXosiAF4LJQBdi2gAXUtrgJ0LcACci7dAnEu9AJwL/8Cby//Am8v/wFuL/8Bbi// AegxAADTOgAAwz8AALdBAACuQQAApj4AAJ44AACXMQEAkS4QAIwvHACIMCgAhDEzAIEyPQB/MkYA fTJNAHsyVAB5MlsAdzJhAHUyaQF0MnABcjJ5AXAzhAFvM5ACbTOdAmwzqwJqNLwCaTTVA2g18QJn Nf8CZzX/AmY1/wJmNf8CZjT/AuI2AADMPwAAvUQAALJHAACoRwAAoEQAAJg/AACQOQAAiDQNAIM1 FwB/NiQAfDcvAHk3OQB3OEIAdDhJAHI4UABxOFcAbzheAG04ZQFsOG0Bajh1AWg4gAJnOIwCZTiZ A2Q5qANiObkDYTrQA2A67gNgOv8DXzr/Al86/wJfOv8CXzr/At07AADHQwAAuUkAAK5LAACkTAAA m0oAAJJFAACJPwAAgToJAHs6FAB3OyAAdDwrAHI8NQBvPT4AbT1GAGs9TQBpPVMAaD1aAGY9YQFk PWkBYz1yAWE9fQJgPYkCXj2WA10+pQNbPrYEWj7MBFo/7ARZP/4DWT//A1k//wJZP/8CWT7/AtY/ AADDRwAAtUwAAKpQAACgUAAAl08AAI5LAACERQAAekAGAHU/EQBxQBwAbUAoAGtBMgBpQTsAZ0FC AGVBSQBjQVAAYUFXAGBBXgFeQWYBXUJvAltCegJaQoYDWEKUA1dCowRVQ7MEVEPJBFRD6QRTQ/0D U0P/A1RD/wNUQ/8CVEP/AtBCAAC/SgAAslAAAKdTAACdVAAAlFMAAIpQAAB/SgAAdUUCAG5DDgBr RBkAZ0UkAGVFLgBiRTcAYUU/AF9FRgBdRU0AW0VUAFpGWwFZRmMBV0ZsAlZGdwJURoMDU0aRA1FG oQRQR7EET0fHBE5H5wROR/sETkf/A05H/wNPR/8DT0f/A8xGAAC7TgAAr1QAAKRXAACaWAAAkVcA AIZUAAB7TgAAcEoAAGlIDQBlSBYAYkkhAF9JKwBdSTQAW0k8AFlJQwBXSUoAVklSAFVKWQFUSmEB UkpqAVFKdQJPSoEDTkqPA0xLnwRLS7AESkvFBElL5gRJS/oESUv/A0pL/wNKS/8DSkv/A8hJAAC4 UQAArFcAAKFbAACYXAAAjlwAAINZAAB2UwAAa04AAGRNCgBfTBMAXE0eAFpNKABYTTEAVk06AFRN QQBTTkgAUk5PAFBOVwFPTl8BTU5oAUxOcwJKT38CSU+NA0dPnQRGT64ERU/DBERQ5ARET/kERU// A0VP/wNFTv8DRU7/A8RMAAC1VQAAqVsAAJ9eAACVYAAAi2AAAIBeAAByVwAAZ1MAAF5RBwBZUREA V1EbAFRRJQBSUi8AUVI3AE9SPwBOUkYATVNNAExTVQBKU10BSVNmAUdTcAJFU30CRFOLA0JTmwNB VKwEQFTBBD9U4gQ/VPgDQFP/A0BT/wNAU/8DQFL/A8BQAACyWAAApl4AAJxiAACSZQAAiGUAAH1i AABuXAAAY1kAAFlWAwBUVg4AUVYYAE9WIgBNVywATFc0AEpXPABJWEQASFhLAEdYUwBFWFsBRFhk AUJYbgFAWHsCP1iJAj1YmQM8WKoDO1m/AzpZ4AM6WPcDOlj/AztX/wM7V/8DO1f/A7xUAACuXAAA o2MAAJlnAACQaQAAhWkAAHlnAABrYgAAYGAAAFVdAABOWwwAS1sUAElcHwBHXCgARl0xAEVdOQBD XUEAQl1IAEFeUABAXlgAPl5hATxebAE7XngCOV6HAjdelwI2XqkDNV69AzRf3QM0XvUDNV3/AjVd /wI1XP8CNVz/ArhZAACqYQAAoGcAAJZsAACMbgAAgW4AAHZsAABnaQAAXGYAAFFkAABIYgkARGIR AEJiGwBBYyQAP2MtAD5jNQA9ZD0APGRFADtkTQA5ZFUAOGRfADZkaQE1ZHYBM2SFATFllQIwZacC L2W7Ai5l2gIuZPQCLmP/Ai9j/wIvYv8CL2L/ArNeAACnZgAAnG0AAJNxAACIcwAAfXMAAHJyAABk cAAAWG4AAE1sAABCagMAPGkOADpqFgA5aiAAOGooADZrMQA1azkANGtBADNsSQAybFIAMWxcAC9s ZgAubHMALGyCASpskwEpbKUBKGy5ASdt1gEna/IBJ2r/ASdq/wEoaf8CKGn/Aq5kAACjbAAAmXMA AI52AACEeAAAeXkAAG14AABgdwAAU3YAAEh1AAA+cwAANHIKADFzEQAwcxoAL3MjAC5zKwAtdDQA LHQ8ACt0RAApdE0AKHVXACd1YwAldW8AJHV/ACJ1kAAhdaIAIHW3AB910gAfdPEAH3P/AR9y/wEg cf8BIHH/AalrAACecwAAlHkAAIp8AACAfgAAdH8AAGd/AABafwAATX4AAEN+AAA4fQAAL30CACh9 DQAmfRQAJH0cACN+JQAifi0AIX42ACF+PwAff0gAHn9SAB1/XgAcf2sAGn96ABl/jAAXf58AFn+z ABV/zgAVfu8AFnz/ABZ7/wAWe/8AF3v/AKRyAACaegAAj38AAIWCAAB7hAAAbYYAAGCHAABUhwAA SIgAADyIAAAyiAAAKIgAACCIBQAaiQ4AGYkVABiJHQAXiiYAFoouABWKNwAUikEAE4pMABKLWAAR i2UAEIt1AA+LhwAOipsADYqvAAyKyAAMieoADYf8AA6H/wAOhv8ADob/AJ97AACUgQAAioUAAICI AABziwAAZY0AAFmPAABMkAAAQZIAADSSAAAqkgAAIZMAABmUAAASlgYADpcOAA2XFQAMlx0ADJcm AAuXLwAKlzkACZdEAAiXUAAGl14ABZduAAOWgAABlpQAAJWoAACVvgAAlOAAAJT0AACT/wABkv8A AZL/AJiCAACOiAAAhYwAAHePAABqkgAAXZUAAFCYAABEmgAAOJsAACycAAAinQAAGZ4AABKgAAAN ogIAB6MLAAGjEAAAoxcAAKMfAACjJwAAozEAAKQ8AACkSAAApFYAAKRlAACjdwAAo4sAAKOgAACi tgAAodIAAKHwAACg+wAAoP8AAKD/AJGKAACJjgAAe5IAAG2XAABgmwAAU54AAEahAAA5owAALaQA ACOmAAAZqAAAEaoAAAysAAAFrgAAAK8HAACvDQAArxEAALAYAACwIAAAsSgAALEyAACyPgAAskwA ALJbAACybAAAsoEAALGXAACxrAAAsMYAALDoAACv9wAAr/8AAK//AIyQAAB/lQAAcZoAAGOfAABV pAAAR6gAADqqAAAtrAAAIq4AABiwAAAQswAACrUAAAK4AAAAuwAAALsAAAC8BwAAvA0AAL0RAAC+ FgAAvx4AAMAnAADBMgAAwkAAAMNPAADDYAAAw3QAAMOLAADDoQAAw7gAAMLXAADC7wAAwvoAAMH+ AIGXAABznQAAZaMAAFeoAABJrQAAO7EAAC2zAAAhtgAAFrkAAA67AAAHvgAAAMEAAADFAAAAxwAA AMgAAADJAAAAygUAAMsLAADNDwAAzhQAANAcAADTJgAA1jIAANhBAADYUwAA2WYAANl8AADZlAAA 2asAANnDAADZ4QAA2fAAANn0AHafAABnpgAAWawAAEuyAAA8twAALroAACG9AAAVwAAADcQAAAXH AAAAygAAAM4AAADSAAAA1QAAANYAAADZAAAA2wAAAN0AAADfBwAA4QwAAOMRAADmGQAA6SQAAOwy AADtQwAA7lYAAO9rAADvhAAA75wAAO+yAADvxgAA790AAO/kAGqoAABbrwAATLYAAD68AAAvwAAA IMQAABTIAAAMzAAAAtAAAADUAAAA2QAAAN4AAADiAAAA5QAAAOYAAADoAAAA6QAAAOwAAADuAAAA 8AIAAPIJAAD1DwAA+BcAAPwjAAD/MwAA/0YAAP9aAAD/cQAA/4kAAP+fAAD/sQAA/8AAAP/GAP8A FQD/ABQA/wAUAP8AFwD/AB0A/wAoAP8ANwD/AEQA/wBRAP8AXAD/AGYA/wBvAP8AdwD/AH4A/wCF AP8AiwD/AJEA/wCXAP8AnQD/AKQA/wCrAP8AtAD+AL8A/QDOAPsA5gD5APYA+AD/APcA/wD3AP8A 9wD/APAA/wDsAP8A6QD/AP8DEgD/ABAA/wAQAP8AEQD/ABcA/wAkAP8AMgD/AD8A/wBMAP8AVwD/ AGEA/wBqAP8AcgD/AHkA/QCAAPwAhgD6AIwA+QCSAPgAmAD2AJ8A9QCmAPQArgDyALkA8ADGAO4A 3gDtAPAA6wD+AOoA/wDpAP8A6QD/AOcA/wDjAP8A4AD/AP8HDgD/AA0A/wALAP8ADAD/ABMA/wAf AP8ALAD/ADoA/wBGAP4AUgD7AFwA+ABlAPUAbADzAHQA8QB6AO8AgQDuAIcA7ACNAOoAkwDpAJoA 5wChAOYAqQDjALMA4QC/AN8A0ADdAOkA2gD5ANkA/wDXAP8A1QD/ANUA/wDVAP8A1AD/AP8JCgD/ AQUA/wADAP8ACQD/ABAA/wAZAPsAJgD3ADQA9ABAAPIATADuAFYA6gBfAOcAZwDkAG4A4gB0AOAA ewDeAIEA3ACHANoAjQDWAJQA1ACbANEAowDPAK0AzAC4AMoAxwDIAOAAxgDzAMUA/wDDAP8AwwD/ AMMA/wDDAP8AwwD/AP8LAQD/AwAA/wAAAP8AAwD/AAsA8wASAO4AHwDqAC0A5gA6AOIARQDeAE8A 2QBYANQAYADRAGgAzgBuAMwAdADKAHsAyACBAMYAhwDEAI4AwgCWAMAAngC+AKcAuwCyALkAwAC3 ANQAtQDsALMA+wCzAP8AsgD/ALIA/wCxAP8AsQD/AP8NAAD/BgAA/wMAAPcAAAD0AAMA5wANAOAA GADaACUA0wAyAM4APgDKAEkAxgBSAMMAWgDAAGEAvgBoALwAbgC6AHQAuAB7ALYAgQC0AIgAsgCQ ALAAmQCuAKIArACtAKoAugCoAMsApgDmAKUA9wCkAP8AowD/AKIA/wCiAP8AogD/AP8QAAD7DAAA 7w4AAOYNAADfCQAA2gAGANAAEQDJAB0AxAAqAL8ANwC7AEIAtwBLALQAVACyAFsArwBiAK0AaACr AG4AqQB1AKgAewCmAIMApACLAKIAlACgAJ4AngGoAJwCtQCbA8YAmQXiAJgG9ACWCP8AlQn/AJQJ /wCUCf8AlAn/APwRAADxFQAA4xkAANYZAADMFQAAxxAAAMQHCgC9AxQAtwQhALIGLgCuCDoAqglE AKcJTQCkClUAogpcAKAKYgCeC2kAnAtvAJsLdgCZDH4AlwyGAJYMkACUDJoAkg2mAJENswCPDcUA jQ7iAIsQ9gCJEP8AiBH/AIcR/wCHEf8AhxH/APYZAADnIAAA1iQAAMglAAC/IgAAuRwAALQUAQCx DQ4Aqg4ZAKUPJwChEDMAnRE+AJoRRwCYEk8AlRJWAJMSXACREmMAkBNpAI4TcACME3gAixOBAIkU iwCHFJYAhhWiAIQVsACDFsEAgRfdAH8Y9AB9Gf8AfBn/AHwZ/wB7Gf8Aexn/AO8hAADdKQAAyi0A AL4vAAC1LAAAricAAKggAACjFwgAnhYTAJkXIQCUGS0AkRo4AI4aQQCLG0kAiRtQAIcbVwCFHF4A hBxkAIIcawCAHHMAfx18AH0dhgB8HpEAeh6eAHgfqwB3H7wAdiDUAHQh8AByIf8AcSL/AHEh/wBx If8AcSH/AOgoAADSMAAAwjUAALc3AACtNQAApTEAAJ4rAACYIwIAkh4QAI0gGwCJIScAhiIyAIMj PACBI0QAfiNLAHwkUgB7JFkAeSRfAHckZgB2JW4AdCV3AHMlgQBxJo0AbyaZAG4mpwBtJ7gAbCfO AWoo7QFpKf8BaCn/AWgp/wFoKP8BaCj/AeEuAADLNgAAvDsAALE9AACnPQAAnzkAAJczAACPLQAA iCcMAIMnFgB/KCIAfCktAHkqNwB3Kj8AdSpHAHMrTgBxK1QAcCtbAG4rYgBsK2oAayxyAGksfQBo LIkAZi2WAWUtpAFkLrQBYy7KAWEv6QFgL/0BYC//AWAv/wFgL/8BYC7/Ado0AADFPAAAt0EAAKxD AACiQwAAmUAAAJA6AACINAAAgC4IAHotEgB3Lh4Acy8pAHEwMwBvMDsAbTBDAGsxSgBpMVEAZzFX AGYxXgBkMWYAYzJvAGEyeQBgMoUBXzKSAV0zoQFcM7EBWzTGAVo05gFZNfsBWTX/AVk0/wFZNP8B WTT/AdI4AADAQAAAs0UAAKhIAACeSAAAlUYAAItAAACCOwAAeTUEAHMzEABvNBoAbDQlAGk1LwBn NTcAZTY/AGM2RgBiNk0AYDZUAF82WwBdN2MAXDdrAFs3dgFZN4IBWDiPAVY4ngFVOK8CVDnDAlM5 5AJTOvkBUzn/AVI5/wFTOf8BUzn/Ac08AAC8RAAAr0kAAKRMAACaTAAAkUsAAIdGAAB9QAAAczsA AGw4DQBoORcAZTkiAGM6KwBgOjQAXjo8AF06QwBbOkoAWjtQAFg7WABXO2AAVjtoAFU8cwFTPH8B UjyNAVA9nAFPPawCTj7BAk0+4QJNPvgCTT7/AU0+/wFNPf8BTT3/AclAAAC4SAAArE0AAKFQAACX UQAAjk8AAIRLAAB5RQAAbkAAAGY9CwBiPRQAXz0eAFw+KABaPjEAWD44AFc+QABVP0YAVD9NAFM/ VQBSQF0AUEBmAE9AcAFOQHwBTEGKAUtBmgJKQasCSUK+AkhC3gJIQvYCSEL/AkhC/wFIQf8BSEH/ AcVEAAC1SwAAqVAAAJ5UAACVVAAAi1MAAIBQAAB1SgAAakYAAGFCCABcQREAWUIbAFdCJQBVQi4A U0I1AFFCPQBPQkMAT0NLAE5DUgBNRFoAS0RjAEpEbgFJRXoBR0WIAUZFmAJFRqkCREa9AkNG3AJD RvUCQ0b/AkNG/wFDRf8BQ0X/AcFHAACyTwAAplQAAJxXAACSWAAAiFgAAH5VAABxTwAAZkoAAFxG BQBXRg8AVEYYAFFGIgBPRisATkYzAExHOgBLR0EASkdJAElIUABISFgAR0hhAEVJbABESXgBQkmG AUFJlgFASqcCP0q7Aj5L2AI+SvMCPkr/Aj5J/wE/Sf8BP0n/Ab1KAACvUgAAo1gAAJlbAACQXQAA hlwAAHtZAABtUwAAYk8AAFdMAQBRSg0ATkoVAExLHwBKSygASUswAEdLOABGTD8ARUxGAERMTgBD TVYAQk1fAEBNagA/TXYBPU6EATxOlAE7TqUBOU+5AjlP1AI5T/IBOU7/ATlO/wE5Tf8BOk3/AbpO AACsVgAAoVsAAJdfAACNYQAAg2EAAHheAABpWAAAX1YAAFRSAABMTwsASU8SAEdQHABFUCUAQ1At AEJQNQBBUTwAQFFEAD9RTAA+UlQAPFJdADtSZwA6UnMAOFOCATdTkgE1U6QBNFO3ATNU0QEzU/EB NFP/ATRS/wE0Uv8BNFL/AbZSAACpWgAAnmAAAJRkAACLZgAAgGUAAHRjAABmXgAAXFwAAFFYAABH VQcAQlUQAEBVGAA/ViEAPVYqADxWMgA7VjkAOldBADlXSQA4V1EAN1haADVYZQA0WHEAMliAATFY kAEvWaIBLlm1AS1ZzwEtWe8BLlj/AS5X/wEuV/8BLlb/AbJXAAClXwAAm2UAAJFpAACHagAAfGoA AHFoAABjZQAAWGIAAE1fAABDXQIAPFsNADpcFAA4XB0AN1wmADVdLgA0XTYAM10+ADJdRgAxXk4A MF5XAC9eYgAtXm4ALF99ACpfjgApX6AAKF+zASdfzAAnX+0BJ17/ASdd/wEoXf8BKFz/Aa1cAACi ZAAAmGoAAI5uAACDbwAAeW8AAG5uAABgawAAVGkAAElnAAA/ZQAANWMJADJjEQAwYxkAL2QhAC5k KQAtZDEALGQ5ACtlQgAqZUoAKGVUACdlXwAmZmsAJGZ6ACNmiwAiZp0AIGaxAB9myQAfZusAIGX+ ACBk/wAgY/8BIWP/AaliAACeagAAlXAAAIpzAACAdQAAdXUAAGl0AABccgAAT3EAAERvAAA6bgAA MG0DAClsDQAnbBQAJmwcACVtJAAkbSwAI200ACJtPQAhbkYAIG5QAB5uWwAdbmcAHG52ABpuhwAZ b5oAGG+uABZvxgAWbukAF238ABhs/wAYa/8AGGv/AKRpAACacQAAkHYAAIZ5AAB8ewAAcXsAAGR7 AABXegAASnkAAD94AAA1eAAAK3cAACJ2BwAddg8AHHcWABt3HgAadyYAGXcuABh3NwAXeEAAFXhK ABR4VgATeGMAEnhyABF4gwAQeJcAD3irAA54wwAOd+YADnb6AA91/wAQdf8AEHT/AJ9xAACVeAAA i3wAAIJ/AAB3gQAAaoIAAF2CAABQggAARIIAADiCAAAuggAAJIIAAByCAAAUggkAEYMQABCDFgAQ gx4ADoMnAA6DMAANgzkADYNEAAyDUAALg10ACYNsAAiDfgAGg5EABYKlAAOCuwAEgdsABIHyAAWA /wAGf/8ABn//AJp5AACQfgAAhoMAAH2FAABvhwAAYokAAFWKAABJiwAAPYwAADGMAAAmjAAAHY0A ABWOAAAPjwMACpAMAAaQEQAEjxgAA48gAAGPKQAAjzIAAJA9AACQSQAAj1YAAI9lAACPdgAAj4oA AI6fAACOtAAAjc8AAIzuAACM+wAAi/8AAIv/AJSAAACLhQAAgokAAHSMAABmjwAAWZEAAEyTAABA lQAANJYAACiWAAAelwAAFZgAAA+aAAAKmwAAApwJAACcDgAAnBMAAJwaAACcIgAAnSsAAJ01AACd QAAAnU4AAJ1cAACdbgAAnIEAAJyXAACcrAAAm8YAAJroAACZ+QAAmf8AAJj/AI6IAACGjAAAeJAA AGqUAABclwAAT5oAAEKdAAA2ngAAKZ8AAB+hAAAVogAADqQAAAimAAAAqAAAAKkEAACpCgAAqQ4A AKkTAACqGgAAqiIAAKsrAACsNgAArEQAAKxTAACsYwAArHcAAKuOAACrpAAAq7wAAKreAACp9AAA qf0AAKn/AImOAAB7kwAAbZcAAF+cAABRoAAARKQAADamAAAqqAAAHqkAABSrAAANrgAABrAAAACy AAAAtQAAALUAAAC1AwAAtgkAALcOAAC4EgAAuBkAALohAAC7KwAAvDgAAL1HAAC9WAAAvWsAAL2B AAC9mQAAvbAAAL3MAAC86gAAvPcAALv+AH6VAABwmwAAYqAAAFOlAABGqgAAOK0AACqvAAAesQAA E7QAAAy3AAADuQAAALwAAAC/AAAAwgAAAMIAAADDAAAAxAAAAMYGAADHDAAAyBAAAMoWAADMIAAA zysAANA6AADRSwAA0V4AANJzAADSiwAA0qQAANO7AADT2AAA0+0AANP2AHOdAABkowAAVqkAAEev AAA5swAAKrYAAB25AAASvAAACr8AAADDAAAAxgAAAMkAAADNAAAAzwAAANAAAADSAAAA1AAAANYA AADZAgAA2wgAAN4OAADhEwAA5B0AAOgqAADoPAAA6U8AAOlkAADqfAAA65UAAOusAADrwgAA7NUA AOzlAGamAABYrAAASbMAADu5AAArvAAAHcAAABHEAAAJyAAAAMwAAADPAAAA0wAAANkAAADdAAAA 4AAAAOEAAADjAAAA5QAAAOcAAADqAAAA7AAAAO4EAADxCwAA9RIAAPgcAAD7KwAA/T4AAP5TAAD+ agAA/4MAAP+bAAD/rgAA/74AAP/KAP8AEgD/ABAA/wARAP8AEwD/ABkA/wAmAP8ANAD/AEEA/wBN AP8AWAD/AGIA/wBrAP8AcwD/AHoA/wCBAP8AhwD/AI0A/wCTAP8AmQD/AKAA/wCnAP4ArwD8ALoA +gDJAPkA4QD4APMA9wD/APYA/wD1AP8A8QD/AOkA/wDkAP8A4QD/AP8ADwD/AA0A/wANAP8ADgD/ ABQA/wAhAP8ALgD/ADwA/wBIAP8AUwD/AF0A/wBmAP4AbQD8AHUA+wB7APkAggD4AIgA9wCOAPYA lAD0AJsA8wCiAPEAqgDvALQA7QDBAOsA1QDqAOwA6AD8AOcA/wDlAP8A5gD/AOAA/wDZAP8A1AD/ AP8ACwD/AAgA/wAGAP8ACQD/ABAA/wAcAP8AKQD/ADYA/wBCAPsATgD3AFcA9ABgAPIAaADvAG8A 7QB2AOwAfADqAIIA6ACIAOcAjgDlAJUA4wCcAOEApADfAK4A3QC5ANoAygDXAOQA1AD2ANEA/wDQ AP8A0AD/AM8A/wDLAP8AxwD/AP8AAwD/AAAA/wAAAP8ABAD/AA0A+gAWAPYAIwDzADAA8AA8AO0A RwDpAFEA5QBaAOIAYgDfAGkA3QBvANoAdgDYAHwA1ACCANIAiADQAI8AzQCWAMsAngDJAKgAxwCz AMUAwQDCANgAwADvAL8A/gC+AP8AvQD/ALwA/wC8AP8AvAD/AP8CAAD/AAAA/wAAAP8AAAD0AAcA 7QARAOgAHADjACkA3wA1ANsAQQDWAEsA0QBUAM0AXADKAGMAyABpAMYAbwDDAHUAwQB7AL8AggC+ AIgAvACQALoAmAC4AKIAtQCsALMAuQCxAMsArwDnAK4A+ACsAP8AqwD/AKwA/wCsAP8AqwD/AP8E AAD/AAAA9gAAAO4AAADnAAAA3wAMANYAFQDPACIAygAuAMcAOgDDAEQAwABNALwAVQC5AFwAtwBj ALUAaQCzAG8AsQB1AK8AewCtAIIAqwCKAKkAkgCnAJwApQCmAKMAswChAMMAnwDeAJ4A8gCdAP8A nAD/AJwA/wCbAP8AmwD/AP8HAAD2CQAA6QsAAN8KAADVBAAAzgAFAMYAEADAABoAuwAnALcAMgCz AD0AsABGAK0ATwCqAFYAqABcAKYAYwCkAGgAogBvAKEAdQCfAHwAnQCEAJsAjQCZAJcAlwCiAJUA rgCTAL0AkQDTAJAA7QCPAPwAjgD/AI0B/wCNAf8AjQH/APkOAADqEgAA3BUAAM0VAADEEQAAvgwA ALoCCgC0ABIArgAeAKoAKgCmADUAogA/AKAASACdAVAAmwJWAJkCXACXA2MAlQNpAJMDbwCRBHYA kAR/AI4FiACMBZIAigaeAIgGqgCGB7oAhQjPAIQK6wCCC/wAgQz/AIAM/wCADP8AgAz/APEVAADg HQAAzSAAAMEhAAC4HQAAsRcAAKwQAACoCQ0AogcWAJ0JIwCZCi4AlQs4AJMMQQCQDEkAjg1QAIwN VwCKDV0AiA1jAIcNagCFDnEAgw56AIIOhACADo8Afg+bAHwPqAB7ELgAehDOAHgR7AB2Ev8AdRL/ AHQT/wB0E/8AdBP/AOgeAADTJgAAwyoAALgqAACuKAAApyMAAKAcAACbEwMAlg8QAJAQGwCMEScA iRIyAIYTOwCEE0MAghRLAIAUUQB+FFcAfBReAHsVZQB5FWwAdxV0AHYWfgB0FooAcheWAHEXpABv GLQAbhjJAG0Z6ABrGvwAahv/AGob/wBqG/8Aahv/AOAmAADKLQAAvDEAALAzAACnMQAAnywAAJcm AACQHwAAihcMAIUYFgCBGSIAfhosAHsbNgB5Gz4AdxxFAHUcTABzHFMAcR1ZAHAdYABuHWcAbR5w AGseegBqHoUAaB+SAGcfoABlILAAZCHFAGMh5ABiIvoAYSL/AGEi/wBhIv8AYSL/ANcsAADDNAAA tjgAAKo5AAChOAAAmDUAAJAvAACIKAAAgCEIAHsgEgB3IR0AdCInAHEiMQBvIzkAbSNBAGsjSABp I04AaCRVAGYkWwBlJGMAYyVrAGIldQBhJYEAXyaOAF4mnQBdJ60AWyjBAFso4ABaKfcAWSn/AFkp /wBZKf8AWSj/AM8yAAC+OQAAsT0AAKY/AACcPwAAkzwAAIo2AACBMAAAeSoDAHImDwBuJxkAaygj AGkoLABmKTUAZSk8AGMpQwBhKkoAYCpRAF4qVwBdKl8AXCtoAForcgBZLH0AWCyLAFYtmgBVLaoA VC69AFMu3ABSL/UAUi//AFIu/wBSLv8AUi7/AMo2AAC6PQAArUIAAKJEAACYRAAAj0EAAIU8AAB7 NwAAcjEAAGssDABnLRUAZC0fAGEuKABfLjEAXS45AFwvQABaL0YAWC9NAFcvVABWMFwAVTBkAFMx bgBSMXoAUTGIAFAylwBOMqgATTO7AE002ABMNPMATDT/AEw0/wBMM/8ATDP/AMY6AAC2QgAAqUYA AJ5JAACVSQAAi0cAAIFCAAB3PQAAbTcAAGQyCQBgMhIAXTIcAFoyJQBYMy0AVjM1AFUzPABTNEMA UjRKAFE0UQBQNFkATzVhAE01bABMNncASzaFAEo3lQBIN6YARzi4AUc40wFGOPEBRjj/AUY4/wBG OP8ARjf/AME+AACyRQAApkoAAJxNAACSTQAAiEsAAH5HAABzQgAAaT0AAF83BgBaNhAAVzcYAFQ3 IgBSNyoAUDcyAE84OQBNOEAATDhHAEs4TgBKOVYASTlfAEg6aQBHOnUARTuDAEQ7kwBDPKQBQjy2 AUE90AFBPfABQT3/AUE8/wFBPP8BQTz/AL5CAACvSQAAo04AAJlQAACPUQAAhVAAAHtMAABvRgAA ZUIAAFo9AgBUOw4AUTsVAE87HwBNOycASzsvAEk8NgBHPD0ARzxEAEY9SwBFPVQARD5cAEM+ZwBC P3MAQD+BAD8/kQA+QKIAPUC1ATxBzgE8Qe4BPEH/ATxA/wE8QP8BPT//AbpFAACsTAAAoVEAAJdU AACNVQAAg1QAAHhRAABsSwAAYUcAAFZCAABPQAwATD8TAElAHABHQCQARkAsAERAMwBDQDoAQkFC AEFBSQBAQlEAP0JaAD5DZQA9Q3EAO0N/ADpEjwA5RKAAOEWzATdFywE3RewBN0X/ATdE/wE4RP8B OEP/ALdJAACpUAAAnlUAAJRYAACLWQAAgFgAAHZWAABoUAAAXUwAAFNIAABKRQkARkQRAEREGQBC RCIAQUUpAD9FMQA+RTgAPUU/ADxGRwA7Rk8AOkdYADlHYgA4SG4ANkh8ADVIjQA0SZ4AM0mxADJJ yQAxSesAMkn+ADJI/wAySP8AM0j/ALRMAACnVAAAnFkAAJJcAACIXQAAfl0AAHNaAABlVQAAW1IA AFBOAABGSgUAQEkOAD5JFgA9SR4AO0omADpKLgA5SjUAOEs9ADdLRAA2S00ANExWADNMYAAyTGwA MU16ADBNiwAuTZwALU6vACxOxwAsTukALE39AC1N/wAtTP8ALUz/ALBQAACkWAAAmV0AAI9hAACG YgAAe2EAAHBfAABiWwAAWFgAAE5VAABDUQEAO08MADhPEwA2TxsANU8jADRQKwAzUDIAMlA6ADFQ QgAwUUoALlFTAC1SXQAsUmkAK1J4AClSiAAoU5oAJ1OtACZTxQAmU+cAJlP8ACdS/wAnUf8AJ1H/ AKxVAACgXAAAlmIAAI1mAACDZwAAeGYAAG1lAABgYQAAVV4AAEpbAAA/WAAANVYIADFVEAAwVhcA LlYfAC1WJwAsVi8AK1c2ACpXPgApV0cAKFdQACZYWgAlWGcAJFh1ACNZhgAhWZgAIFmrAB9ZwgAf WeUAH1j6ACBY/wAgV/8AIVf/AKhaAACdYgAAk2cAAIprAAB/bAAAdWwAAGprAABdaAAAUWUAAEZj AAA7YAAAMV4DACpdDQAoXRMAJl0bACVeIwAkXioAI14yACJeOgAhXkMAIF9MAB9fVwAeX2MAHGBx ABtgggAZYJUAGGCpABdgwAAWYOIAF1/5ABhe/wAZXv8AGV3/AKRgAACZaAAAkG4AAIZwAAB8cgAA cnIAAGZxAABYbgAATGwAAEFrAAA2aQAALWcAACNmCAAfZg8AHWYVABxmHQAbZiUAGmYtABlnNQAY Zz4AF2dIABZnUwAVaF8AE2huABJofwARaJIAEGimAA9ovQAOaOAAEGf3ABBm/wARZf8AEWX/AJ9n AACWbwAAjHMAAIJ2AAB4eAAAbXgAAGB3AABTdgAARnQAADtzAAAxcgAAJ3EAAB5xAAAWcAoAE3AQ ABNwFwAScB8AEXEnABBxLwAQcTgADnFCAA5xTgANcVsADHFpAAtxegAKcY0ACHGhAAZxtgAGcNIA B3DvAAhv/wAJbv8ACW7/AJtvAACRdQAAh3kAAH58AAB0fgAAZn4AAFl+AABNfgAAQH0AADV9AAAq fAAAIXwAABh8AAARfAQADHwMAAp8EQAJfBkACHwhAAd8KQAGfDIABHw9AAN8SAABfFUAAHxjAAB8 dAAAfIcAAHucAAB7sQAAessAAHnrAAB5+gAAef8AAHj/AJZ3AACMfAAAg4AAAHmDAABshAAAXoUA AFGGAABFhwAAOYcAAC2HAAAjhwAAGocAABKHAAANiAEABokKAAGJDwAAiRQAAIgbAACIIwAAiSwA AIk2AACJQgAAiE4AAIhdAACIbQAAiIEAAIeVAACHqwAAhsQAAIXmAACE+AAAhP8AAIT/AJB+AACH gwAAfocAAHGJAABjiwAAVo0AAEmPAAA8kQAAMJEAACSRAAAakgAAEpMAAA2UAAAGlQAAAJYGAACW DAAAlRAAAJYVAACWHQAAliQAAJYuAACWOQAAlkYAAJZVAACWZQAAlngAAJWOAACVpAAAlLwAAJPf AACT9QAAkv8AAJL/AIuGAACDigAAdY0AAGeQAABZlAAATJcAAD+ZAAAymgAAJpsAABucAAASnQAA DJ8AAASgAAAAogAAAKMBAACjBwAAowwAAKMQAACkFQAApBwAAKUlAACmLwAApjwAAKZLAACmWwAA pm4AAKWEAAClmwAApLMAAKPQAACj7wAAovwAAKL/AIaNAAB4kQAAapUAAFyZAABOnQAAQaAAADOi AAAmowAAG6UAABGnAAAKqQAAAasAAACtAAAArwAAALAAAACwAAAAsAUAALELAACyDwAAsxQAALQb AAC1JAAAtzAAALc/AAC3UAAAt2IAALd4AAC3kAAAtqkAALbCAAC25AAAtvUAALX+AHuTAABtmAAA X50AAFCiAABCpgAANKkAACarAAAarQAAEK8AAAmyAAAAtAAAALcAAAC6AAAAvAAAAL0AAAC+AAAA vgAAAMACAADBCAAAwg0AAMQSAADGGQAAySQAAMoyAADLQwAAy1UAAMxqAADMgwAAzJwAAMu1AADM zgAAzOkAAMz2AHCbAABhoQAAUqYAAESrAAA2sAAAJ7IAABq1AAAQuAAAB7sAAAC+AAAAwQAAAMQA AADIAAAAywAAAMsAAADNAAAAzgAAANAAAADSAAAA1QMAANgKAADbEAAA3hgAAOIkAADjNQAA5EgA AOVcAADmcwAA5o0AAOalAADmvAAA5tMAAOfnAGOkAABVqgAARrAAADi1AAAouQAAGrwAAA/AAAAF xAAAAMcAAADLAAAAzwAAANQAAADYAAAA3AAAAN0AAADfAAAA4QAAAOMAAADlAAAA6AAAAOoAAADt BgAA8Q4AAPUWAAD4JQAA+TgAAPlNAAD6YwAA+3wAAPyVAAD8qgAA/LsAAP3LAP8ADwD/AA4A/wAO AP8AEAD/ABYA/wAjAP8AMAD/AD0A/wBJAP8AVAD/AF4A/wBmAP8AbgD/AHYA/wB8AP8AggD/AIkA /wCPAP8AlQD+AJsA/QCjAPsAqwD6ALUA+QDDAPcA2wD2APAA9AD/APMA/wDyAP8A7AD/AOIA/wDc AP8A1gD/AP8ADAD/AAkA/wAIAP8ACgD/ABIA/wAeAP8AKwD/ADgA/wBEAP8ATwD/AFkA/gBhAPwA aQD6AHAA+AB3APcAfQD2AIMA9ACJAPIAjwDxAJYA7wCdAO0ApQDsAK8A6gC8AOgAzQDmAOgA5AD6 AOMA/wDiAP8A4AD/ANUA/wDOAP8AywD/AP8ABgD/AAEA/wAAAP8ABAD/AA4A/wAZAP8AJQD9ADIA +wA+APcASQDzAFMA8ABcAO4AYwDsAGoA6gBxAOgAdwDmAH0A5ACDAOIAiQDgAJAA3gCXANwAnwDZ AKkA1gC0ANMAxADQAN4AzgDzAMwA/wDLAP8AygD/AMgA/wDCAP8AvgD/AP8AAAD/AAAA/wAAAP8A AAD7AAsA9gATAPEAIADtACwA6gA4AOcAQwDjAE0A4ABWANwAXQDZAGQA1QBrANIAcQDQAHYAzgB8 AMwAgwDKAIkAyACRAMYAmQDEAKMAwQCtAL8AuwC9AM8AuwDrALkA/AC3AP8AtwD/ALYA/wC0AP8A sQD/AP8AAAD/AAAA/wAAAPYAAADuAAUA5wAPAOEAGQDbACUA1QAxANIAPADOAEYAygBPAMcAVwDE AF4AwQBkAL8AagC9AHAAuwB2ALkAfAC4AIMAtgCKALMAkwCxAJwArwCnAK0AswCrAMUAqQDhAKcA 9QCmAP8ApQD/AKQA/wCkAP8ApAD/AP8AAAD8AAAA8QAAAOgAAADgAAAA1AALAMwAEwDHAB8AwgAq AL8ANQC8AD8AuABIALUAUACzAFcAsABeAK4AZACsAGkAqwBvAKkAdQCnAHwApQCEAKMAjAChAJYA nwChAJ0ArQCaALwAmADSAJcA7gCVAP4AlAD/AJUA/wCVAP8AlQD/APwBAADwBQAA4wcAANUFAADM AAAAxQAEAL4ADgC4ABcAswAjAK8ALgCrADgAqQBBAKYASgCjAFEAoQBXAJ8AXQCdAGMAmwBpAJoA bwCYAHYAlgB9AJQAhgCSAJAAkACbAI4ApwCMALYAigDJAIgA5wCHAPkAhwD/AIYA/wCGAP8AhgD/ APQMAADkEAAA0RIAAMURAAC9DgAAtggAALEACACrABEApgAbAKEAJgCeADEAmgA6AJgAQwCVAEoA kwBRAJEAVwCPAF0AjgBjAIwAaQCKAHAAiAB3AIYAgACEAIsAggCWAIAAowB+ALEAfQDEAHsC4QB6 A/UAegX/AHkF/wB4Bv8AeAb/AOoTAADWGgAAxh0AALocAACxGQAAqhMAAKQNAACfBQwAmQAUAJUA HwCRAikAjQMzAIsEPACIBUQAhgZLAIQGUQCCB1cAgQddAH8HYwB9CGoAewhyAHoIfAB4CYYAdgmS AHQKoABzCq8AcQvBAHAM3wBvDfYAbg7/AG0O/wBtDv8AbQ7/AOEcAADLIwAAvCYAALEmAACoJAAA oB4AAJkYAACTEAIAjgsOAIgLFwCEDCIAgQ0sAH4NNQB8Dj0Aeg5FAHgOSwB3DlEAdQ9YAHMPXgBx EGUAcBBuAG4QdwBsEIIAaxCPAGkRnQBoEa0AZhLAAGUS3wBkE/YAYxT/AGMU/wBiFP8AYhT/ANYk AADDKgAAtS4AAKovAACgLQAAmCgAAJAiAACJGwAAghMIAH0REgB5EhwAdhMnAHMUMABxFDgAbxU/ AG0VRgBsFUwAahZTAGgWWQBnFmEAZRZpAGQXcgBiF34AYRiLAF8YmQBeGakAXBm8AFwa2ABaG/MA Whz/AFkc/wBZHP8AWRz/AM0qAAC9MQAArzUAAKQ2AACbNAAAkjEAAIkrAACBJQAAeR0DAHMYDgBv GRgAbBoiAGkbKwBnGzMAZRw7AGQcQQBiHUgAYB1OAF8dVQBdHVwAXB5kAFsebgBZH3kAWB+HAFYg lgBVIKYAVCG4AFMh0gBSIvEAUiP/AFIj/wBSIv8AUiL/AMgvAAC4NgAAqzoAAKA8AACWOwAAjTgA AIMyAAB6LQAAciYAAGogDABmIBMAYyEdAGEhJgBfIi8AXSI2AFsiPQBaI0QAWCNKAFcjUQBVI1gA VCRhAFMkagBRJXYAUCWDAE8mkwBOJ6MATCe1AEwozgBLKO4ASyn/AEso/wBLKP8ASyj/AMM0AACz OwAApz8AAJxBAACSQAAAiT4AAH85AAB1MwAAbC0AAGMnCABeJhEAXCYZAFknIgBXJysAVSgyAFQo OQBSKEAAUShGAFApTQBOKVUATSldAEwqZwBLKnMASSuAAEgrkABHLKEARi2zAEUtywBFLuwARC7/ AEQu/wBFLf8ARS3/AL44AACwPwAApEMAAJlFAACPRQAAhUMAAHs+AABxOQAAZzQAAF4uBABYKw4A VSsWAFIsHwBQLCcATywvAE0tNgBMLTwASi1DAEktSgBILlIARy5aAEYvZABFL3AAQzB+AEIwjQBB MZ4AQDKxAD8yyAA/M+oAPzP+AD8y/wA/Mv8APzL/ALs8AACtQwAAoUcAAJZJAACMSQAAg0gAAHhE AABtPgAAYzkAAFo0AABSMAwATzATAEwwHABKMCQASTErAEcxMgBGMTkARDFAAEMyRwBCMk8AQTNY AEAzYgA/NG0APjR7AD01iwA8NpwAOzavADo3xgA5N+gAOTf8ADo3/wA6Nv8AOjb/ALdAAACqRgAA nksAAJRNAACKTgAAgEwAAHVIAABqQwAAYD4AAFY5AABNNQkASTQRAEc1GQBFNSEAQzUoAEE1LwBA NTYAPzY9AD42RQA9N00APDdVADs4YAA6OGsAOTl5ADg5iQA3OpsANTqtADU7xAA0O+YANDv7ADU7 /wA1Ov8ANTr/ALRDAACnSgAAnE4AAJJRAACIUgAAflAAAHNNAABnSAAAXEQAAFI/AABIOgYARDkP AEE5FgA/OR4APjkmADw5LQA7OjQAOjo7ADk7QgA4O0oANzxTADY8XQA1PWkAND13ADM+hwAxPpkA MD+rAC8/wgAvP+QALz/6ADA//wAwPv8AMD7/ALFHAACkTQAAmVIAAI9VAACGVgAAfFUAAHFSAABk TAAAWUkAAE9FAABFQAMAPz4NADw+EwA6PhsAOT4jADc+KgA2PzEANT84ADQ/QAAzQEgAMkBRADFB WwAwQWcALkJ1AC1ChQAsQ5cAK0OqACpDwAApROIAKkP5ACpD/wArQv8AK0L/AK5KAAChUQAAl1YA AI1ZAACDWgAAeVoAAG5XAABhUgAAV04AAE1LAABDRwAAOkMKADZDEQA0QxgAM0MgADJEJwAxRC8A MEQ2AC9FPQAtRUYALEVPACtGWQAqRmQAKUdyAChHgwAmR5UAJUioACRIvgAjSOAAJEj3ACVH/wAl R/8AJkf/AKpPAACfVQAAlFoAAIteAACBXwAAd14AAGtcAABfWAAAVVUAAEtRAABATQAANUoHADBJ DgAuSRUALUkdACxJJAArSisAKkozAChKOwAnS0MAJktMACVLVgAkTGIAI0xwACFMgAAgTZMAH02m AB5NuwAdTt0AHk32AB5M/wAfTP8AIEv/AKdTAACcWgAAkl8AAIhjAAB+ZAAAdGMAAGlhAABcXgAA UlsAAEdYAAA8VQAAMlICACpQDAAnTxIAJlAZACVQIAAkUCgAI1AvACJRNwAhUUAAIFFJAB5SUwAd Ul8AHFJtABpTfQAZU5AAGFOkABZTuQAVU9kAFlP0ABdS/wAYUf8AGVH/AKNZAACYYAAAj2UAAIVo AAB7aQAAcWkAAGZnAABZZAAATWEAAEJfAAA4XAAALloAACVYCAAgVw4AHlcUAB1XHAAcWCMAG1gr ABpYMwAZWDwAGFhFABZZUAAVWVsAFFlpABNaegASWo0AEVqhABBatwAOWtUAEFnzABBZ/wARWP8A EVj/AJ9fAACVZgAAjGsAAIJtAAB4bgAAbm8AAGJtAABVagAASGgAAD5mAAAzZQAAKWMAACBhAQAY YAsAFWAQABRgFwATYB4AEmAmABJgLgARYTcAEGFAAA9hSwAOYVgADWFmAAxidgALYokACmGdAAlh sgAIYcsACGHrAAlg/QAKX/8AC1//AJtmAACSbQAAiHEAAH5zAAB1dQAAanQAAFxzAABPcgAAQ3AA ADhvAAAtbgAAJGwAABtrAAATawQADmoMAA1qEgAMahkAC2ohAApqKQAJajIACGo8AAdrRwAFa1MA BGthAAJrcQAAaoQAAGqYAABqrQAAacYAAGnnAABp+AAAaP8AAGj/AJdtAACNcwAAhHcAAHt6AABw ewAAY3sAAFZ6AABJegAAPXkAADF4AAAndwAAHXYAABV2AAAPdgIACXYKAAR2DwAAdhUAAHYcAAB2 JAAAdSwAAHU2AAB1QQAAdU4AAHVcAAB1bAAAdX4AAHSTAAB0qAAAc8AAAHPjAABy9wAAcv8AAHH/ AJJ1AACJegAAgH4AAHaAAABpgQAAW4IAAE6CAABBggAANYMAACmCAAAfgQAAFoEAABCCAAAKggAA AoMHAACCDQAAghEAAIIXAACCHgAAgiYAAIIvAACCOwAAgkcAAIJVAACBZQAAgXgAAIGNAACAogAA f7oAAH/dAAB+9AAAff8AAH3/AI18AACEgQAAe4QAAG6GAABgiAAAUooAAEWLAAA5jAAALIwAACGM AAAXjAAAEI0AAAmOAAACjwAAAJADAACPCQAAjw4AAI8SAACQGAAAkB8AAJAoAACQMgAAkD8AAJBN AACQXQAAj3AAAI+FAACOnAAAjrMAAI3QAACM8AAAi/4AAIv/AIiEAACAiAAAcosAAGSNAABWkAAA SJMAADuVAAAulgAAIpYAABeXAAAPmAAACJkAAACbAAAAnQAAAJ0AAACdAwAAnQkAAJ0NAACeEQAA nhcAAJ8fAACfKQAAoDUAAKBDAACgVAAAoGYAAJ97AACekwAAnqsAAJ3GAACd6QAAnPkAAJz/AIOL AAB1jgAAZ5IAAFmWAABLmQAAPZwAADCeAAAjnwAAF6AAAA6iAAAHpAAAAKYAAACoAAAAqgAAAKoA AACqAAAAqwEAAKsHAACsDAAArRAAAK4WAACvHgAAsSkAALE4AACxSAAAsVoAALFvAACxiAAAsaAA ALC6AACv3QAAr/IAAK/9AHiRAABqlgAAXJoAAE2fAAA/owAAMaYAACOnAAAXqQAADqsAAAWuAAAA sAAAALIAAAC1AAAAtwAAALcAAAC4AAAAuQAAALoAAAC8AwAAvQkAAL4OAADAFAAAwx4AAMUrAADF PAAAxk4AAMZiAADGegAAxpQAAMatAADGyAAAxeUAAMXzAGyZAABengAAT6QAAEGoAAAyrAAAJK8A ABaxAAANtAAAA7cAAAC6AAAAvQAAAMAAAADEAAAAxgAAAMYAAADIAAAAyQAAAMsAAADMAAAAzgAA ANAGAADTDQAA2BMAANweAADeLQAA30AAAOBUAADhawAA4YUAAOGfAADhtwAA4c8AAOHmAGChAABS pwAAQ60AADSyAAAltQAAF7kAAA28AAABvwAAAMMAAADHAAAAygAAAM8AAADTAAAA1gAAANcAAADa AAAA3AAAAN8AAADhAAAA4wAAAOYAAADpAQAA7AsAAPASAADzHwAA9DEAAPZGAAD3XAAA+HQAAPiP AAD5pgAA+bgAAPjJAP8ADQD/AAsA/wALAP8ADgD/ABMA/wAfAP8ALAD/ADkA/wBFAP8AUAD/AFkA /wBiAP8AagD/AHEA/wB3AP8AfgD/AIQA/gCKAP0AkAD8AJcA+gCeAPkApwD3ALEA9gC+APUA0gDz AOwA8QD+APAA/wDwAP8A5gD/ANwA/wDSAP8AzQD/AP8ABwD/AAQA/wACAP8ABgD/ABAA/wAbAP8A JwD/ADMA/wA/AP8ASgD+AFQA+wBdAPkAZAD3AGsA9QByAPMAeADyAH4A8ACEAO8AigDtAJEA7ACZ AOoAoQDoAKsA5gC2AOQAxwDiAOMA4AD3AN4A/wDdAP8A2QD/AMwA/wDFAP8AwQD/AP8AAAD/AAAA /wAAAP8AAQD/AA0A/wAWAPwAIgD5AC4A9gA5APMARQDvAE4A7ABXAOkAXgDmAGUA5ABsAOIAcgDg AHcA3wB+AN0AhADbAIsA2ACSANUAmwDSAKQAzwCvAM0AvgDLANUAyQDvAMcA/wDFAP8AxAD/AL4A /wC4AP8AtQD/AP8AAAD/AAAA/wAAAP4AAAD3AAkA8QARAOsAHADnACgA5AAzAOEAPgDdAEgA2ABR ANMAWADQAF8AzgBlAMwAawDKAHEAyAB3AMYAfQDEAIQAwgCMAMAAlAC+AJ4AuwCoALkAtgC3AMgA tQDmALMA+gCxAP8AsAD/ALAA/wCsAP8AqQD/AP8AAAD/AAAA+gAAAPEAAADoAAMA4AANANgAFgDR ACIAzQAtAMoANwDGAEEAwgBKAL8AUgC9AFkAugBfALgAZQC3AGoAtQBwALMAdgCxAH0ArwCFAK0A jQCrAJcAqQChAKcArgClAL4AogDYAKAA8gCfAP8AngD/AJ4A/wCeAP8AnAD/AP8AAAD3AAAA6wAA AOEAAADWAAAAywAJAMUAEQC/ABsAuwAmALcAMQC0ADoAsQBDAK4ASwCrAFIAqQBYAKcAXgCmAGQA pABpAKIAcACgAHYAngB+AJwAhgCaAJAAmACbAJYApwCUALYAkgDKAJAA6QCPAPwAjgD/AI0A/wCM AP8AjQD/APgAAADpAgAA2wMAAMwBAADEAAAAvQACALYADQCwABUAqwAgAKcAKgCkADQAoQA8AJ4A RACcAEsAmgBSAJgAWACWAF0AlQBjAJMAaQCRAHAAjwB3AI0AgACLAIoAiQCVAIcAoQCFAK8AgwDB AIEA4ACAAPUAfwD/AH8A/wB/AP8AfwD/AO4KAADcDgAAyhAAAL4OAAC1CwAArwMAAKkABwCjABAA ngAYAJkAIwCWACwAkwA1AJAAPgCOAEUAjABLAIoAUQCIAFcAhgBdAIUAYwCDAGoAgQBxAH8AegB9 AIQAewCPAHkAnAB3AKoAdQC7AHQA1AByAPAAcgD/AHIA/wBxAP8AcQD/AOMRAADNFwAAvxkAALMZ AACqFQAAoxAAAJ0KAACXAQoAkQASAI0AGwCJACUAhQAvAIMANwCAAD4AfgBFAH0ASwB7AFEAeQBX AHgAXQB2AGQAdAFrAHIBdABwAn8AbgKLAGwDmABrA6YAaQS3AGgFzgBnB+wAZgj9AGYJ/wBlCf8A ZQn/ANYaAADEIAAAtiMAAKsjAAChIAAAmRsAAJIUAACMDgEAhgcNAIAEFAB8Bh4AeQcoAHYIMAB0 CDgAcgk/AHAJRQBvCkwAbQpSAGwKWABqC18AaAtnAGcLcABlDHoAYwyHAGIMlQBgDaQAXw22AF4N zgBcDu0AXA//AFsQ/wBbEP8AWxD/AM0hAAC8KAAArysAAKQrAACaKQAAkiQAAIkfAACCGAAAexEF AHUNDwBxDRcAbg4hAGsOKgBpDzIAZxA5AGUQQABkEEYAYxBNAGEQUwBfEVoAXhFiAFwRawBbEXYA WRKDAFgSkgBWE6IAVRO0AFQTywBTFOwAUhX/AFIW/wBSFf8AUhX/AMYoAAC2LgAAqTIAAJ8yAACV MQAAjC0AAIMnAAB6IQAAchoAAGsTCwBnExMAZBQcAGEUJQBfFS0AXRU0AFwVOwBbFkIAWRZIAFgW TwBWF1YAVRdeAFMXZwBSGHIAUBh/AE8ZjgBOGp8ATBqwAEsbxwBLG+kAShz9AEoc/wBKHP8AShz/ AMEtAACxNAAApTcAAJo4AACQNwAAhzQAAH0vAAB0KQAAbCMAAGQcBwBeGRAAWxoYAFkbIQBXGykA VRswAFQcNwBSHD0AURxEAE8dSwBOHVIATR1aAEseYwBKHm4ASR98AEcfiwBGIJwARSGuAEQhxABD IuYAQyL8AEMi/wBDIv8AQyL/ALwyAACtOAAAoTwAAJc+AACNPQAAgzoAAHk1AABvMAAAZioAAF4k AgBXIA0AVCAUAFEgHQBPISUATiEsAEwhMwBLIjoASSJAAEgiRwBHIk4ARiNXAEQjYABDJGsAQiR5 AEEliAA/JpkAPiarAD0nwQA9J+MAPSj6AD0o/wA9J/8APSf/ALg2AACqPQAAnkAAAJRCAACKQgAA gD8AAHY7AABsNgAAYjAAAFkqAABRJQsATSURAEslGQBJJSEARyYoAEUmLwBEJjYAQyY9AEInRABB J0sAPyhUAD4oXQA9KWkAPCl2ADsqhgA5K5cAOCupADcsvwA3LOAANyz4ADcs/wA3LP8AOCz/ALU6 AACnQAAAnEQAAJFGAACHRgAAfUQAAHNAAABoOwAAXzYAAFUxAABMKwcARykPAEUqFgBDKh4AQSol AD8qLAA+KzMAPSs5ADwrQQA7LEgAOixRADktWwA4LmYANi5zADUvgwA0L5UAMzCnADIwvQAxMd4A MTH3ADIx/wAyMP8AMzD/ALE+AACkRAAAmUgAAI9KAACFSgAAe0kAAHBFAABlQAAAWzsAAFI2AABI MQQAQi4NAD8uEwA9LhsAOy4iADkvKQA4Ly8ANy82ADYwPgA1MEYANDFPADMxWQAyMmQAMTJxADAz gQAvNJMALjSmACw1uwAsNdsALDX1AC01/wAtNP8ALjT/AK5BAACiSAAAl0wAAI1OAACDTgAAeU0A AG5KAABiRQAAWEAAAE48AABFNwAAPTMLADkzEQA3MxgANjMfADQzJgAzMy0AMjQ0ADE0PAAwNUQA LzVMAC42VgAtNmIALDdvACs3fwAqOJEAKDikACc5uQAmOdgAJzn0ACg5/wAoOP8AKTj/AKtFAACf SwAAlE8AAItSAACBUwAAd1IAAGxPAABfSQAAVkYAAExCAABCPQAAODgIADQ4DwAyOBUAMTgdAC84 JAAuOCsALTkyACw5OQArOkEAKjpKACk7VAAoO18AJzxtACU8fQAkPY8AIz2iACI9twAhPtQAIT7z ACI9/wAjPf8AIzz/AKhJAACdTwAAklMAAIlWAAB/VwAAdVYAAGpTAABdTwAAU0wAAEpIAABARAAA NkAFAC89DQAtPRMAKz0aACo+IQApPigAKD4vACc+NwAmPz8AJD9IACNAUgAiQF0AIUFqACBBegAe QY0AHUKgABxCtQAbQtEAG0LxABxC/wAdQf8AHkH/AKVNAACaUwAAkFgAAIZbAAB9XAAAclsAAGdY AABbVAAAUVIAAEhOAAA9SgAAM0cAACpDCwAmQxAAJUMWACRDHgAjRCUAIkQsACFENAAgRTwAHkVF AB1FTwAcRloAG0ZoABlGeAAYR4oAF0eeABZHswD/4vAASUNDX1BST0ZJTEUACQoUSM4AFUfvABZH /wAXRv8AF0b/AKJSAACXWAAAjV0AAIRgAAB6YQAAcGAAAGVeAABZWgAAT1gAAERUAAA5UQAAL04A ACZLBgAgSg4AHkoTAB1KGgAcSiEAG0soABpLMAAZSzgAF0tCABZMTAAVTFcAFExlABNNdQASTYgA EU2cABBNsQAOTswAD03uABBN/wARTP8AEUz/AJ5XAACUXQAAi2IAAIFlAAB3ZgAAbWYAAGNkAABW YQAASl4AAD9bAAA1WAAAK1YAACJUAQAaUgoAFlIQABVSFgAUUh0AE1IkABJSLAARUjQAEVI+ABBT SAAPU1QADlNiAA1UcgAMVIQAC1SYAAlUrQAIVMUACVTnAApT+wALUv8AC1L/AJtdAACRZAAAiGgA AH5rAAB0bAAAa2wAAF9qAABSZwAARWQAADpiAAAwYAAAJl4AAB1dAAAVWwUAEFoMAA5aEQAOWhgA DVsgAAxbJwALWzAACls6AAlbRQAHW1EABlteAARbbQADW4AAAVuUAABbqAAAW8AAAFriAABa9gAB Wv8AAln/AJdkAACOawAAhG4AAHtwAABycgAAZ3EAAFlwAABMbgAAQGwAADVrAAAqaQAAIWcAABhm AAARZgEADGUKAAdlDwAEZRQAA2QbAAJkIwAAZCwAAGQ1AABkQAAAZEwAAGRaAABkaQAAZHsAAGSP AABjpAAAY7sAAGLdAABi9AAAYv8AAGH/AJNsAACJcQAAgHUAAHh3AABteAAAYHcAAFJ2AABGdQAA OXQAAC50AAAjcgAAGnEAABJxAAANcQAABnEIAABwDQAAcBIAAHAXAABvHwAAbyYAAG8wAABvOwAA b0cAAG9UAABvZAAAb3UAAG6KAABtoAAAbbYAAGzWAABr8gAAa/8AAGv/AI5zAACFeAAAfXsAAHN9 AABlfgAAWH4AAEt+AAA+fgAAMn4AACZ9AAAcfAAAE3wAAA18AAAGfQAAAH0FAAB8CwAAfA8AAHwT AAB8GQAAfCEAAHwpAAB8NAAAe0AAAHtOAAB7XgAAe28AAHqEAAB6mgAAebEAAHjOAAB37wAAdv4A AHb/AIl6AACBfwAAeIIAAGuDAABdhQAAT4YAAEKHAAA1iAAAKYcAAB2HAAAUhwAADYgAAAaJAAAA igAAAIoAAACJBgAAiQwAAIkPAACJEwAAiRoAAIoiAACKLAAAijgAAIpGAACJVgAAiWgAAIl8AACI lAAAh6sAAIbGAACF6gAAhfsAAIT/AIWCAAB9hgAAb4gAAGGLAABTjQAARY8AADiRAAArkQAAH5IA ABSSAAANkwAABJQAAACWAAAAlwAAAJgAAACXAAAAlwUAAJcLAACYDgAAmBMAAJkaAACZIgAAmi4A AJo9AACZTQAAmV4AAJlzAACYiwAAmKMAAJe8AACW4gAAlvcAAJX/AICJAAByjAAAZI8AAFaTAABI lgAAOpkAACyaAAAfmwAAFJwAAAyeAAADnwAAAKEAAACjAAAApQAAAKUAAAClAAAApQAAAKYCAACn CAAApw0AAKgRAACpGQAAqyMAAKsxAACrQQAArFMAAKxnAACrgAAAqpoAAKqzAACq0AAAqe8AAKn7 AHWPAABnlAAAWZgAAEqcAAA8nwAALaIAACCjAAATpQAAC6cAAAGpAAAAqwAAAK4AAACxAAAAsgAA ALIAAACzAAAAtAAAALUAAAC2AAAAuAQAALkLAAC7EAAAvRgAAL8kAAC/NQAAwEcAAMBbAADAcgAA wI0AAMGmAADAwQAAv+MAAL7zAGqXAABbnAAATaEAAD6lAAAvqQAAIasAABOtAAALsAAAALMAAAC1 AAAAuAAAALwAAAC/AAAAwQAAAMEAAADDAAAAxAAAAMYAAADHAAAAyQAAAMsAAADOCAAA0Q8AANUY AADYJwAA2TkAANpNAADbZAAA234AANyZAADcsAAA3MkAANzjAF2fAABPpQAAQKoAADKvAAAisgAA FLUAAAq4AAAAuwAAAL8AAADDAAAAxgAAAMsAAADOAAAA0QAAANEAAADUAAAA1gAAANkAAADbAAAA 3gAAAOAAAADkAAAA5wYAAOsOAADvGQAA8CoAAPI/AADzVQAA9G0AAPSIAAD0oQAA9LYAAPTHAP8A CQD/AAYA/wAHAP8ADAD/ABEA/wAcAP8AKAD/ADQA/wBBAP8ATAD/AFUA/wBdAP8AZQD/AGwA/wBy AP4AeAD8AH4A+wCEAPoAiwD5AJIA9wCZAPYAogD0AKwA8wC5APEAywDwAOgA7gD7AO0A/wDsAP8A 4QD/ANIA/wDJAP8AxAD/AP8AAQD/AAAA/wAAAP8ABAD/AA4A/wAXAP8AIwD/AC8A/wA7AP0ARgD6 AFAA9wBYAPQAXwDyAGYA8ABsAO8AcgDtAHgA7AB+AOoAhQDpAIwA5wCTAOUAnADjAKYA4QCxAN8A wQDdAN0A2wD0ANkA/wDWAP8AzwD/AMQA/wC9AP8AuQD/AP8AAAD/AAAA/wAAAP8AAAD/AAsA/AAT APcAHgD0ACoA8gA1AO4AQADpAEoA5gBSAOMAWQDgAGAA3gBmANwAbADaAHIA1wB4ANQAfgDSAIUA 0ACNAM4AlQDMAJ8AyQCqAMcAuADFAM0AwwDrAMAA/gC/AP8AvgD/ALYA/wCwAP8ArQD/AP8AAAD/ AAAA/wAAAPkAAADyAAYA6wAPAOYAGQDhACQA3gAvANoAOQDTAEMAzwBMAMwAUwDJAFoAxwBgAMUA ZgDDAGsAwQBxAL8AdwC9AH4AuwCGALkAjgC3AJgAtQCjALMAsACxAMIArgDgAKwA9wCrAP8AqgD/ AKgA/wCjAP8AoAD/AP8AAAD/AAAA9QAAAOsAAADhAAAA1gAMAM8AEwDKAB4AxgApAMIAMwC/AD0A uwBFALgATQC2AFQAswBaALEAXwCwAGUArgBqAKwAcACrAHcAqQB/AKcAhwClAJEAowCcAKAAqQCe ALgAnADOAJoA7gCZAP8AlwD/AJYA/wCWAP8AkwD/AP0AAADxAAAA5QAAANkAAADNAAAAxAAGAL0A DwC3ABgAswAiALAALACtADYAqQA+AKcARgCkAE0AogBTAKAAWQCfAF4AnQBkAJsAagCaAHAAmAB3 AJYAgACUAIoAkQCVAI8AogCNALAAiwDDAIkA4wCIAPkAhgD/AIYA/wCGAP8AhgD/APMAAADjAAAA 0QAAAMUAAAC9AAAAtgAAAK4ACwCoABIApAAcAKAAJgCcAC8AmgA3AJcAPwCVAEYAkgBMAJEAUgCP AFgAjQBdAIsAYwCKAGoAiABxAIYAeQCEAIMAggCPAH8AmwB+AKkAfAC7AHoA1QB4APIAeAD/AHcA /wB3AP8AdwD/AOcHAADRDAAAww0AALgMAACuCAAAqAAAAKIABQCbAA4AlgAVAJIAHwCOACgAiwAx AIgAOQCGAEAAhABGAIIATACAAFIAfwBXAH0AXQB7AGMAegBrAHgAcwB2AH0AdACIAHEAlQBwAKQA bgC0AGwAygBrAOoAagD8AGoA/wBqAP8AagD/ANoQAADGFAAAuBYAAK0VAACkEgAAnA4AAJYHAACQ AAkAigAQAIUAGACBACEAfgAqAHsAMgB5ADkAdwBAAHUARgBzAEwAcgBRAHAAVwBuAF4AbQBlAGsA bgBpAHcAZwCDAGUAkQBjAJ8AYgCvAGAAxABfAOQAXwH4AF4C/wBeAv8AXgL/AM4YAAC9HQAAsCAA AKUfAACbHAAAkxcAAIsRAACEDAAAfgQLAHkAEgB1ABsAcgAjAG8AKwBtATMAawE6AGkCQABnA0YA ZgNMAGQEUgBjBFkAYQRgAF8FaQBeBXMAXAZ/AFoGjQBZB5wAVwitAFYIwQBVCeEAVAv2AFQL/wBU C/8AVAv/AMYfAAC2JQAAqSgAAJ4oAACUJQAAiyEAAIMbAAB7FAAAdA4DAG4JDQBpCBQAZgkdAGQK JQBiCi0AYAs0AF4LOgBdC0AAWwxHAFoMTQBYDFQAVw1cAFUNZABUDW8AUg17AFAOigBPDpoATg6s AEwPwgBMEOMASxD5AEsQ/wBLEf8ASxD/AL8mAACwKwAApC8AAJkvAACPLQAAhikAAH0kAAB0HgAA bBcAAGURBwBfDhAAXA8XAFoQHwBYECcAVhAuAFQQNQBTEDsAUhFCAFARSABPEVAAThFXAEwSYABL EmsASRJ4AEgThwBGE5cARRSpAEQUvgBDFd8AQxb4AEMW/wBDFv8AQxb/ALorAACrMQAAoDQAAJU1 AACLNAAAgTEAAHgrAABvJgAAZiAAAF4ZAQBXFA0AVBQTAFEUGwBPFSMAThUqAEwVMQBLFjcASRY+ AEgWRABHF0wARRdUAEQXXQBDGGcAQRh0AEAZgwA/GpQAPRqmADwbuwA7G9sAOxz2ADwc/wA8HP8A PBz/ALUwAACoNgAAnDkAAJE7AACHOgAAfjcAAHMyAABqLQAAYScAAFkhAABRGwkATBkQAEoaFwBI Gh8ARhomAEUbLQBDGzMAQhs6AEEcQQBAHEgAPhxQAD0dWQA8HmQAOx5xADkfgAA4H5IANyCkADYg uAA1IdYANSH0ADUi/wA1If8ANiH/ALI0AACkOgAAmT4AAI8/AACFPwAAezwAAHA4AABnMgAAXS0A AFQoAABMIgUARh8OAEMfFABBHxsAPx8iAD4gKQA9IDAAOyA2ADohPQA5IUUAOCJNADciVwA2I2IA NCNuADMkfgAyJI8AMSWiAC8ltgAvJtIALybyAC8m/wAwJv8AMCb/AK84AACiPgAAlkIAAIxDAACC QwAAeEEAAG49AABjOAAAWjMAAFEuAABIKAEAQCQMAD0jEQA7JBgAOSQfADgkJgA2JCwANSUzADQl OgAzJkIAMiZKADEnVAAwJ18ALyhsAC4oewAsKY0AKyqgACoqtAApKs8AKSvwACor/wAqKv8AKyr/ AKw8AACfQgAAlEYAAIpHAACARwAAdkUAAGxCAABhPQAAVzgAAE4zAABELgAAPCkJADcoEAA1KBUA MygcADIoIwAwKCkALykwAC8qNwAuKj8ALStIACwrUgArLF0AKixqACgteQAnLYsAJi6eACUuswAk L80AJC/uACUv/wAlL/8AJi7/AKk/AACdRQAAkkkAAIhLAAB+TAAAdEoAAGpHAABeQgAAVD0AAEs5 AABBNAAAOC8GADItDQAwLRMALi0ZAC0tIAArLScAKi4uACkuNQApLz0AKC9GACcwTwAlMFsAJDFo ACMxdwAiMokAITKdAB8zsQAeM8sAHjPtAB8z/wAgM/8AITL/AKZDAACaSQAAkE0AAIZPAAB8UAAA c08AAGhMAABcRgAAUkMAAEk/AAA/OwAANjYCAC4yDAArMhEAKTIXACgyHgAmMiQAJTMrACQzMgAj NDoAIjRDACE1TQAgNVgAHzZlAB42dQAcN4cAGzebABo3rwAZOMgAGTjrABo4/wAbN/8AGzf/AKNH AACYTQAAjlEAAIRTAAB7VAAAcVMAAGZQAABaTAAAUEkAAEdFAAA9QQAAMz0AACo5CQAlNw4AIzcU ACI4GwAhOCIAIDgoAB84MAAeOTgAHTlBABw6SwAaOlYAGTtjABg7cgAWO4UAFTyZABQ8rQATPcYA Ez3pABQ8/QAVPP8AFjv/AKBLAACVUQAAi1UAAIJYAAB5WQAAblgAAGRWAABYUQAATk8AAEVLAAA6 RwAAMEMAACdABQAgPg0AHT4RABw+FwAbPh4AGj4lABk+LQAYPzUAFj8+ABU/SAAUQFMAE0BgABJB cAARQYIAEEGXAA9BrAAOQsQADkLnAA9B/AAQQf8AEED/AJ1QAACTVgAAiVoAAIBdAAB2XgAAbF0A AGJbAABWVwAATFUAAEFRAAA2TgAALEsAACNIAAAbRQkAF0QPABVEFAAURRsAE0UiABJFKQARRTEA EUU7ABBGRQAPRlAADkdeAA1HbQAMR38AC0eTAAlHpwAIR74ACEfgAAlH9gAKRv8AC0b/AJpVAACQ WwAAh2AAAH1iAABzYwAAamIAAGBhAABTXgAAR1oAADxXAAAyVQAAKFIAAB9QAAAXTgQAEUwMAA9M EQAOTBcADkweAA1NJQAMTS4AC003AApNQgAJTU0AB05aAAZOaQAETnsAAk6PAAFOpAAATboAAE3b AAFN8gABTf8AAkz/AJZbAACNYgAAhGYAAHpoAABxaQAAaGkAAFxnAABPZAAAQmEAADdfAAAtXAAA I1oAABpYAAASVwEADVYJAAlVDgAHVRMABlUaAARVIgADVSoAAlU0AABVPgAAVUoAAFZXAABWZQAA VXcAAFWLAABVoAAAVbYAAFTUAABU8QAAU/0AAFP/AJNiAACKaAAAgGwAAHduAABvbwAAY24AAFZs AABJagAAPWgAADJmAAAnZQAAHWMAABViAAAOYQAACWAIAANgDQAAXxEAAF8XAABfHgAAXyYAAF8v AABfOgAAX0UAAF9TAABfYQAAXnIAAF6HAABdnAAAXbIAAFzPAABc7wAAW/0AAFv/AJBqAACGbwAA fXIAAHV0AABqdQAAXXQAAE9zAABCcgAANnAAACtvAAAgbgAAF20AABBsAAAKbAAAAmsGAABrCwAA ag8AAGoUAABqGgAAaiEAAGkqAABpNAAAaUAAAGlOAABpXAAAaW0AAGiCAABomAAAZ64AAGbKAABl 7QAAZfwAAGT/AItxAACCdgAAenkAAHB7AABiewAAVXsAAEh6AAA7egAAL3oAACN5AAAZeAAAEXcA AAp3AAADdwAAAHcCAAB3CAAAdg0AAHYQAAB2FQAAdhsAAHYjAAB2LgAAdToAAHVHAAB1VgAAdWgA AHR8AAB0kgAAc6oAAHLEAABx6QAAcPsAAHD/AIZ5AAB/fQAAdn8AAGiBAABaggAATIIAAD+DAAAy hAAAJYMAABqDAAARgwAACoMAAAKDAAAAhAAAAIUAAACEAwAAgwgAAIMNAACDEAAAgxUAAIQcAACE JgAAhDIAAIQ/AACDTwAAg2AAAIJ1AACCjAAAgaQAAIC9AAB/4wAAfvkAAH7/AIKAAAB6hAAAbIYA AF6IAABQigAAQosAADWNAAAnjQAAG40AABGOAAAKjgAAAI8AAACRAAAAkgAAAJIAAACSAAAAkgEA AJIHAACSDAAAkhAAAJMVAACTHQAAlCgAAJQ2AACURQAAk1cAAJNrAACTggAAkpwAAJG2AACQ2AAA j/MAAI//AH6HAABwigAAYY0AAFOQAABFkwAAN5UAACmWAAAclwAAEZgAAAmZAAAAmwAAAJwAAACe AAAAoAAAAKAAAACgAAAAoAAAAKEAAAChBAAAogkAAKMOAACkFAAApR0AAKYqAACmOgAApkwAAKVg AACleAAApZIAAKSsAACkyQAAo+sAAKL6AHOOAABkkQAAVpUAAEeZAAA5nAAAKp4AAB2gAAARoQAA CKMAAAClAAAApwAAAKkAAACsAAAArgAAAK4AAACuAAAArwAAALAAAACxAAAAsgAAALMGAAC1DQAA txMAALkeAAC5LgAAukAAALpUAAC7agAAuoUAALmhAAC5uwAAut4AALnyAGeVAABYmQAASp4AADui AAAspgAAHagAABGqAAAHrAAAAK8AAACxAAAAtAAAALgAAAC7AAAAvAAAALwAAAC+AAAAvwAAAMAA AADCAAAAxAAAAMYAAADIAwAAywsAAM8SAADRIAAA0TIAANJGAADTXQAA1HYAANSSAADVqwAA1cQA ANTiAFudAABMogAAPacAAC+sAAAfrwAAEbEAAAe1AAAAuAAAALsAAAC+AAAAwgAAAMcAAADKAAAA zAAAAMwAAADOAAAA0AAAANIAAADVAAAA2AAAANsAAADfAAAA4gAAAOYLAADrEwAA7CQAAO04AADu TgAA72cAAPCCAADwnAAA8LIAAPHFAP8AAwD/AAEA/wAEAP8ACQD/AA8A/wAYAP8AJAD/ADAA/wA8 AP8ARwD/AFEA/wBZAP8AYAD9AGcA/ABtAPoAcwD5AHkA+AB/APYAhQD1AIwA8wCUAPIAnQDwAKcA 7gCzAOwAxADrAOEA6gD4AOkA/wDnAP8A2QD/AMsA/wDCAP8AvQD/AP8AAAD/AAAA/wAAAP8AAAD/ AAwA/wAUAP8AIAD/ACsA/gA3APoAQgD2AEsA8gBTAPAAWwDuAGEA7ABnAOoAbQDoAHMA5wB5AOUA fwDjAIYA4QCOAN8AlgDdAKAA2wCsANgAuwDUANEA0wDwANAA/wDOAP8AyAD/AL0A/wC2AP8AsgD/ AP8AAAD/AAAA/wAAAP8AAAD9AAgA9wAQAPMAGgDvACYA7QAxAOgAOwDjAEUA4ABNANwAVQDZAFsA 1gBhANMAZwDRAGwAzwByAM0AeADLAH8AyQCHAMcAkADFAJoAwwClAMAAsgC+AMUAvADlALoA+wC4 AP8AtwD/ALAA/wCpAP8ApQD/AP8AAAD/AAAA/gAAAPUAAADsAAMA5QANAN8AFQDaACAA1AAqANAA NQDLAD4AyABHAMUATgDCAFUAwABbAL4AYQC8AGYAugBsALgAcgC2AHgAtQCAALMAiACxAJIArgCe AKwAqgCpALsAqADVAKYA8wCkAP8AowD/AKEA/wCbAP8AmAD/AP8AAAD7AAAA8AAAAOUAAADYAAAA zgAJAMcAEQDCABoAvgAkALsALgC3ADgAtABAALEASACuAE4ArABUAKoAWgCpAF8ApwBlAKUAawCk AHEAogB4AKAAgQCeAIsAnACWAJkAowCXALIAlgDHAJMA6ACSAP4AkQD/AJAA/wCNAP8AiwD/APkA AADrAAAA3QAAAM8AAADGAAAAvAAEALUADQCwABUArAAeAKgAKAClADEAogA5AJ8AQQCdAEgAmwBO AJkAUwCXAFkAlgBeAJQAZACSAGoAkABxAI4AegCMAIMAigCPAIgAnACGAKoAhAC8AIIA3ACBAPYA gAD/AH8A/wB/AP8AfgD/AOwAAADaAAAAyQAAAL4AAAC2AAAArgAAAKcACQChABAAnAAYAJgAIgCV ACoAkgAyAJAAOgCNAEEAiwBHAIkATQCHAFIAhgBYAIQAXQCCAGQAgQBrAH8AcwB9AH0AewCIAHgA lQB2AKMAdQC0AHMAzABxAO0AcAD/AHAA/wBwAP8AcAD/AN8FAADKCgAAvAsAALEJAACoBAAAoQAA AJsAAwCUAAwAjwATAIoAGwCHACQAhAAsAIEAMwB/ADoAfQBBAHsARwB5AEwAdwBSAHYAVwB0AF0A cgBkAHAAbQBvAHYAbACCAGoAjwBpAJ0AZwCuAGUAwwBkAOQAYwD6AGMA/wBiAP8AYwD/ANAOAAC/ EgAAshMAAKcSAACdEAAAlQsAAI8DAACJAAcAggAOAH4AFQB6AB4AdgAlAHQALQBxADQAbwA6AG4A QABsAEYAagBMAGkAUgBnAFgAZgBfAGQAZwBiAHEAYAB8AF4AiQBcAJgAWwCpAFkAvABYANwAWAD0 AFgA/wBXAP8AVwD/AMYWAAC2GgAAqh0AAJ8cAACVGQAAjRQAAIUPAAB+CQAAdwEKAHIAEABuABcA agAfAGgAJwBlAC4AZAA0AGIAOwBgAEAAXwBGAF0ATABcAFMAWgBaAFgAYgBXAGwAVQB3AFMAhQBS AJQAUAGlAE8BuABOAtIATQTwAE0F/wBNBf8ATQX/AL8dAACwIgAAoyUAAJklAACPIgAAhR0AAH0Y AAB1EgAAbg0CAGcGDABjAxEAXwIZAF0DIQBbBCgAWQQvAFcFNQBWBTsAVAZBAFMGRwBRBk4AUAdV AE4HXgBNCGcASwhzAEkJgQBICZIARwqjAEUKtgBEC9AARAzvAEMN/wBDDf8ARA3/ALkkAACqKQAA niwAAJQsAACKKgAAgCYAAHchAABuGwAAZhQAAF8PBQBZCw0AVQoTAFMLGwBRCyIATwwpAE0MLwBM DDYASw08AEkNQgBIDUkARg1RAEUOWgBEDmQAQg5wAEAOfwA/D5AAPhCiADwQtgA7ENEAOxHxADsR /wA7Ef8APBH/ALQpAACmLwAAmjIAAJAyAACGMQAAfC0AAHIoAABpIwAAYR0AAFkWAABREQgATA8Q AEoQFgBIEB0ARhAkAEUQKwBDETEAQhE3AEERPgBAEUUAPhJNAD0SVgA8EmEAOhNtADkTfAA3FI0A NhSfADUVswA0Fc0AMxbuADQW/wA0Fv8ANBb/AK8uAACiNAAAlzcAAIw4AACCNgAAeDQAAG4uAABl KgAAXCQAAFQeAABMGAQARhQNAEIUEgBAFBkAPxQgAD0VJwA8FS0AOxU0ADkWOgA4FkIANxZKADYX UwA1F14AMxhqADIZeQAwGYoALxqdAC4asQAtG8oALRvsAC0c/wAuG/8ALhv/AKwyAACfOAAAlDsA AIo8AACAPAAAdjkAAGs0AABiLwAAWSoAAFAlAABHHwAAQBoKADwZEAA6GRYAOBkdADYaIwA1GikA NBowADMaNwAyGz4AMRtHAC8cUAAuHVsALR1nACwedgAqHogAKR+bACgfrgAnIMcAJiDqACcg/gAo IP8AKCD/AKk2AACdPAAAkj8AAIdBAAB9QAAAdD4AAGk6AABfNQAAVjAAAE0rAABEJQAAOyAHADYe DgAzHhMAMh4ZADAeIAAvHiYALh8tAC0fNAAsIDsAKyBEACohTgApIVgAJyJlACYidAAlI4UAIyOZ ACIkrQAhJMUAISXoACIl/QAiJP8AIyT/AKY6AACaPwAAj0MAAIVFAAB7RAAAckMAAGc/AABdOgAA UzYAAEoxAABBLAAAOCYDADEjDAAuIhEALCIWACoiHQApIiMAKCMqACcjMQAmJDkAJSVBACQlSwAj JlYAIiZjACEncgAfJ4MAHiiXAB0oqwAbKcMAGynmABwp+wAdKf8AHij/AKM+AACYQwAAjUcAAINJ AAB6SQAAcEcAAGZEAABaPwAAUTsAAEc3AAA+MgAANS0AACwoCQAoJw8AJycUACUnGgAkJyEAIygn ACIoLgAhKTYAICk/AB8qSQAeKlQAHStgABsrbwAaLIEAGSyVABctqQAWLcEAFi3kABct+gAYLf8A GS3/AKFBAACVRwAAi0sAAIJNAAB4TQAAbkwAAGRJAABYRAAAT0AAAEY9AAA9OAAAMzQAACovBgAk LA0AISwSACAsGAAfLR4AHi0lAB0tLAAcLjQAGy48ABovRgAYL1EAFzBeABYwbQAVMX8AEzGTABIx qAARMr8AETLiABIy+QATMf8AEzH/AJ5FAACTSwAAiU8AAIBRAAB2UgAAbVAAAGJOAABWSQAATUYA AERDAAA7PwAAMToAACc2AwAfMgsAHDIQABsyFQAZMhsAGDIiABczKQAWMzEAFTQ6ABQ0RAATNE8A EjVcABE1awAQNn0ADzaRAA42pgANN7wADTfdAA029gAONv8ADzb/AJtJAACRTwAAh1MAAH5WAAB1 VgAAalUAAGBTAABVTwAATEwAAEJJAAA4RQAALkEAACQ9AAAcOggAFjgOABU4EgAUOBgAEzkfABI5 JgAROS4AEDk3AA86QQAOOkwADTtZAA07aAALO3oACjuNAAk8ogAHPLgABzzVAAg88AAJO/8ACjv/ AJhOAACOVAAAhVgAAHxbAAByWwAAaFoAAF5YAABTVQAASVIAAD5OAAA0SwAAKkcAACFEAAAYQgMA EkALABA/EAAOPxUADj8cAA1AIwAMQCsAC0A0AApAPgAJQUoAB0FWAAZBZQAEQXYAA0GKAAFBnwAA QbQAAEHQAAFB7gABQfwAAkD/AJVUAACMWQAAg14AAHlgAABwYAAAZmAAAF1eAABRWwAARVcAADpU AAAvUQAAJU8AABxMAAAUSgAADkgIAAtHDgAIRxIAB0cZAAZHIAAFSCgAA0gxAAJIOwAASEcAAEhT AABIYgAASHMAAEiGAABImwAASLEAAEfMAABH7QAAR/sAAEf/AJJaAACJYAAAgGMAAHdlAABuZgAA ZWYAAFlkAABMYAAAQF0AADVbAAAqWQAAIFcAABdVAAAQUwAAC1IHAAVRDQABUBEAAFAWAABQHQAA UCUAAFAuAABQOAAAUEMAAFBQAABQXgAAUG8AAFCDAABPmAAAT64AAE7JAABO6wAATfsAAE3/AI9h AACGZgAAfWkAAHRsAABsbQAAYWsAAFNpAABGZwAAOmQAAC9jAAAkYQAAGl8AABJeAAAMXAAABlwG AABbCwAAWg8AAFoTAABaGQAAWSEAAFkpAABZMwAAWT8AAFlMAABZWgAAWWsAAFh+AABYlAAAV6sA AFfFAABW6QAAVfsAAFX/AIxoAACCbQAAenAAAHJyAABncgAAWnEAAExwAAA/bgAAM20AAChrAAAd agAAFGgAAA1nAAAHZwAAAGYDAABmCQAAZQ0AAGURAABkFQAAZBwAAGQkAABkLgAAZDoAAGNHAABj VQAAY2YAAGN6AABikAAAYacAAGDBAABf5gAAX/oAAF7/AIdvAAB/dAAAeHcAAG54AABgeAAAUncA AEV3AAA4dgAAK3YAACB0AAAWcwAADnMAAAdyAAAAcgAAAHIAAABxBQAAcQoAAHEOAABwEQAAcBcA AHAeAABwJwAAcDMAAG9AAABvUAAAb2AAAG50AABuiwAAbaIAAGy8AABr4gAAavgAAGn/AIN3AAB8 ewAAc30AAGV+AABXfwAASX8AADx/AAAvgAAAIn8AABd+AAAPfgAAB34AAAB/AAAAfwAAAH8AAAB+ AAAAfgUAAH4KAAB+DQAAfhEAAH4XAAB+IAAAfisAAH05AAB9SAAAfVkAAHxtAAB8hAAAe5wAAHq2 AAB52gAAePUAAHf/AIB/AAB3ggAAaYMAAFuFAABNhgAAP4gAADKJAAAkiQAAGIkAAA+JAAAHigAA AIsAAACMAAAAjQAAAI0AAACMAAAAjAAAAIwDAACMCAAAjQ0AAI0RAACNFwAAjiIAAI4vAACOPwAA jVAAAI1kAACMewAAjJUAAIuuAACKzQAAie8AAIn/AHuFAABtiAAAXooAAFCNAABCjwAANJEAACaS AAAZkwAADpQAAAaVAAAAlgAAAJgAAACaAAAAmwAAAJsAAACbAAAAmwAAAJsAAACcAAAAnQUAAJ0L AACeEAAAnxcAAKAkAACgNAAAoEYAAKBZAACfcAAAn4oAAJ6lAACewgAAnegAAJz5AHCMAABhjwAA U5IAAESWAAA2mQAAJ5sAABmcAAAPnQAABZ8AAAChAAAAowAAAKUAAACoAAAAqQAAAKkAAACpAAAA qgAAAKsAAACsAAAArQAAAK4BAACwCQAAsg8AALMYAAC0JwAAtDkAALVNAAC0ZAAAtH4AALOaAACz tAAAs9UAALPwAGSTAABVlwAAR5sAADifAAApogAAGqQAAA6mAAAEqAAAAKsAAACtAAAAsAAAALQA AAC2AAAAuAAAALgAAAC5AAAAugAAALwAAAC9AAAAvwAAAMAAAADDAAAAxQcAAMkPAADKGgAAyywA AMxAAADNVgAAzm8AAM2LAADMqAAAzMIAAMziAFibAABJoAAAOqUAACypAAAcqwAAD64AAASxAAAA tAAAALcAAAC6AAAAvgAAAMMAAADGAAAAyAAAAMgAAADKAAAAywAAAM0AAADPAAAA0gAAANUAAADZ AAAA3QAAAOEFAADmDwAA5x4AAOgyAADpSAAA6mAAAOt7AADrlwAA7K4AAOzCAP8AAAD/AAAA/wAA AP8ABgD/AA0A/wAVAP8AIQD/ACwA/wA4AP8AQwD/AEwA/gBUAPsAWwD6AGIA+ABoAPYAbgD1AHQA 9AB6APIAgADxAIcA7wCPAO0AlwDrAKEA6QCtAOcAvQDlANgA5ADzAOIA/wDgAP8A0AD/AMQA/wC8 AP8AtgD/AP8AAAD/AAAA/wAAAP8AAAD/AAkA/wARAP8AHAD9ACcA+QAyAPUAPQDxAEYA7QBPAOsA VgDoAFwA5gBiAOQAaADjAG4A4QBzAN8AeQDdAIAA2gCIANgAkQDUAJsA0gCmAM8AtADMAMkAyQDp AMgA/wDHAP8AwQD/ALcA/wCvAP8AqwD/AP8AAAD/AAAA/wAAAP8AAAD4AAUA8gAOAO4AFwDqACIA 5gAsAOEANwDdAEAA2ABJANMAUADQAFYAzgBcAMwAYgDKAGcAyABtAMYAcwDEAHkAwgCBAMAAigC+ AJQAvACfALkArAC2AL4AtADdALMA9wCxAP8AsAD/AKgA/wCiAP8AngD/AP8AAAD/AAAA+QAAAO8A AADmAAAA3wALANYAEgDQABwAzAAmAMgAMADEADoAwABCAL0ASgC7AFAAuABWALYAWwC1AGEAswBm ALEAbACwAHIArgB6AKwAggCpAIwApwCYAKUApQCjALQAoADLAJ8A7gCdAP8AnAD/AJkA/wCUAP8A kQD/AP8AAAD2AAAA6gAAAN0AAADPAAAAxwAGAMAADwC7ABcAtwAgALMAKgCwADMArQA7AKoAQwCn AEkApQBPAKMAVQCiAFoAoABfAJ4AZQCdAGsAmwByAJkAewCXAIUAlACQAJIAnQCQAKwAjgC/AIwA 4gCLAPoAiQD/AIkA/wCGAP8AgwD/APQAAADkAAAA1AAAAMgAAAC/AAAAtQABAK4ACwCpABIApQAb AKEAIwCeACwAmwA0AJgAPACWAEMAlABJAJIATgCQAFMAjgBZAI0AXgCLAGQAiQBrAIcAcwCFAH0A gwCIAIEAlQB/AKQAfQC1AHsAzwB5APEAeAD/AHcA/wB3AP8AdQD/AOUAAADRAAAAwwAAALgAAACv AAAAqAAAAKAABgCaAA4AlQAVAJEAHgCOACYAiwAtAIgANQCGADwAhABCAIIARwCAAE0AfwBSAH0A WAB7AF4AeQBlAHgAbQB2AHYAcwCBAHEAjgBvAJ0AbQCuAGwAxABqAOcAaQD9AGgA/wBoAP8AaQD/ ANUDAADDBwAAtggAAKsGAACiAAAAmwAAAJQAAACNAAoAiAAQAIMAGAB/ACAAfAAnAHoALgB3ADUA dQA7AHQAQQByAEcAcABMAG8AUgBtAFgAawBfAGkAZgBnAHAAZQB7AGMAiABiAJcAYACnAF4AuwBd ANwAXAD2AFwA/wBbAP8AWwD/AMkNAAC5EAAArBEAAKEQAACXDQAAjwgAAIgAAACCAAUAewANAHcA EgBzABoAbwAhAGwAKABqAC8AaAA1AGcAOwBlAEEAYwBGAGIATABgAFIAXwBZAF0AYQBbAGoAWQB1 AFcAggBVAJEAVACiAFMAtQBRAM8AUADvAFAA/wBQAP8AUAD/AL8UAACwGAAApBoAAJkZAACPFgAA hxEAAH8NAAB3BgAAcQAIAGsADgBnABQAZAAbAGEAIgBeACkAXQAvAFsANQBZADsAWABBAFYARgBV AE0AUwBUAFIAXABQAGUATgBwAEwAfQBLAI0ASQCeAEgAsABHAMcARgDpAEYA+wBGAP8ARQD/ALgb AACqIAAAniIAAJMiAACJHwAAgBoAAHcVAABvEAAAaAsAAGEECgBdABAAWQAWAFYAHQBUACMAUgAq AFAAMABPADUATgA7AEwAQQBLAEgASQBPAEcBVwBGAWEARAJsAEMCeQBBA4kAQAOaAD4ErQA9BMQA PAXlADwH+AA8B/8APAf/ALIiAAClJwAAmSkAAI4pAACEJwAAeyMAAHEeAABpGAAAYRIAAFoNAwBT CAwATwURAEwFFwBKBh4ASAYkAEcGKgBFBzAARAc2AEMIPQBBCEMAQAhLAD4JUwA9CV0AOwpoADoK dgA4C4cANwuZADULrAA0DMIAMwzkADMN+QAzDf8ANA3/AK0nAACgLAAAlS8AAIsvAACALgAAdyoA AG0lAABkIAAAXBoAAFQUAABMDwYARgwNAEMMEgBBDBgAPwwfAD4MJQA8DSsAOw0yADoNOAA4DT8A Nw5HADYOUAA0DloAMw5mADEPdAAwD4UALhCYAC0QqwAsEMMAKxHlACwR+gAsEf8ALRH/AKosAACd MQAAkjQAAIc1AAB9NAAAdDEAAGorAABgJwAAWCEAAE8bAABHFgAAQBEJADsQDwA5EBQANxAbADYQ IQA0ECcAMxEtADIRNAAxETsAMBFDAC4STQAtElcALBJjACoTcQApE4IAJxSVACYUqQAlFcAAJBXj ACUW+gAmFv8AJhX/AKYxAACaNgAAjzkAAIU6AAB7OQAAcTYAAGcxAABdLQAAVCgAAEwiAABDHQAA OxcFADUUDQAyExEAMRQXAC8UHQAuFCQALBQqACsVMQAqFTgAKRZAACgWSgAnF1QAJhdgACQYbwAj GIAAIRmTACAZpwAfGb4AHhrgAB8a+AAgGv8AIBr/AKM0AACYOgAAjT0AAIM+AAB5PQAAbzsAAGU3 AABbMgAAUi0AAEkoAABAIwAAOB4BADAZCgAsGA8AKhgUACkYGgAnGCAAJhknACUZLQAkGjUAIxo+ ACIbRwAhG1IAIBxeAB8dbAAdHX4AHB2RABoepQAZHrwAGB/dABkf9gAaH/8AGx7/AKE4AACVPQAA i0EAAIFCAAB3QgAAbUAAAGM8AABZNwAATzMAAEYuAAA9KQAANSQAAC0gBwAnHQ0AJR0SACMdFwAh HR0AIR0kACAeKwAfHjIAHh87AB0fRQAcIE8AGiFcABkhagAYInsAFiKPABUiowAUI7oAEyPaABQj 9QAVI/8AFiP/AJ48AACTQQAAiUQAAH9GAAB1RgAAbEQAAGJBAABXPAAATTgAAEQ0AAA8MAAAMysA AComAwAjIgsAICEQAB4hFQAcIhsAGyIhABoiKAAaIzAAGSM4ABgkQgAWJU0AFSVZABQmaAATJnkA EiaNABEnogAQJ7gADifWABAo9AARJ/8AESf/AJxAAACRRQAAh0gAAH1KAAB0SgAAakkAAGBGAABV QQAATD4AAEM6AAA6NgAAMTIAACgtAAAgKQkAGycOABknEgAYJxgAFicfABUoJQAUKC0AEyg2ABIp QAASKUsAESpXABAqZgAOK3cADiuLAA0snwAMLLUACyzPAAws7wANLP8ADSv/AJlEAACPSQAAhUwA AHxOAABzTwAAaU4AAF5LAABTRwAASkQAAEJAAAA5PQAALzgAACU0AAAdMAUAFi0MABQsEAATLRUA Ei0cABEtIwAQLSoADy4zAA4uPQANL0gADS9VAAwwYwAKMHQACTCIAAgxnAAGMbEABjHLAAYx6wAH MPwACDD/AJdIAACNTQAAg1EAAHpTAABxVAAAZ1IAAF1QAABSTAAASUoAAEBGAAA1QgAAKz4AACI6 AAAaNwEAEjQJAA8zDgAOMxMADTMZAA0zIAAMNCgACzQxAAo1OwAINUYABzVSAAU2YAAENnEAAjaE AAA2mQAANq8AADbIAAA26AAANvkAATX/AJRNAACKUgAAgVYAAHhYAABvWQAAZVgAAFtVAABRUgAA R08AADxMAAAxSAAAJ0QAAB5BAAAWPwAAEDwHAAs6DQAJOhEACDsXAAY7HgAFOyYABDsuAAI7OAAB PEMAADxPAAA8XgAAPG4AADyBAAA8lwAAPKwAADvFAAA75wAAO/gAADv/AJFSAACIWAAAf1wAAHZd AABtXgAAY10AAFpcAABOWAAAQlQAADdRAAAtTgAAI0sAABpJAAASRgAADUQGAAdDDAADQxAAAEMV AABDGwAAQyMAAEMrAABDNQAAQ0AAAENNAABDWwAAQ2sAAEN+AABDlAAAQqoAAELDAABB5gAAQfkA AEH/AI5YAACGXgAAfWEAAHNjAABrZAAAYmMAAFdhAABJXQAAPVoAADJYAAAnVQAAHlMAABVRAAAO TwAACU0FAAJNCwAATA4AAEwTAABLGAAASx8AAEsoAABLMgAASz0AAEtJAABLVwAAS2cAAEp7AABK kAAASacAAEnAAABI5AAASPgAAEf/AItfAACDZAAAemcAAHFpAABpagAAXmkAAFBmAABDZAAAN2EA ACxfAAAhXQAAGFsAABBZAAAKWAAAA1cDAABXCQAAVg0AAFUQAABVFQAAVBsAAFQjAABULQAAVDkA AFRFAABUUwAAVGQAAFN3AABTjQAAUqQAAFG9AABQ4gAAUPgAAE//AIhnAAB/awAAd24AAG9wAABl cAAAV24AAEpsAAA9awAAMGkAACVoAAAaZgAAEWQAAAtjAAAEYgAAAGIBAABhBgAAYAsAAGAOAABf EgAAXxcAAF8eAABeKAAAXjMAAF5AAABeTwAAXl8AAF1yAABdiAAAXKAAAFu5AABa3wAAWfcAAFj/ AIRuAAB8cgAAdXUAAGt2AABddQAAT3QAAEJzAAA1cwAAKHIAAB1wAAATbwAADG4AAARuAAAAbgAA AG4AAABsAgAAbAcAAGsLAABrDgAAaxIAAGoZAABqIgAAai0AAGo6AABpSQAAaVoAAGlsAABogwAA Z5sAAGa1AABl2AAAZPUAAGT/AIB1AAB6eQAAcHsAAGJ7AABUfAAARnwAADl8AAAsfAAAH3sAABR6 AAANegAABHoAAAB6AAAAegAAAHoAAAB5AAAAeQEAAHgGAAB4CwAAeA4AAHgTAAB4GgAAeCUAAHgy AAB3QQAAd1IAAHdlAAB2fAAAdZUAAHSvAABzzgAAcvEAAHH/AH59AAB1gAAAZ4EAAFiCAABKgwAA PIQAAC6FAAAhhQAAFYUAAA2FAAADhQAAAIYAAACHAAAAiAAAAIgAAACHAAAAhwAAAIcAAACHBAAA hwkAAIcOAACIEwAAiBwAAIgpAACIOAAAh0oAAIddAACGcwAAho0AAIWnAACExQAAg+wAAIL+AHiE AABqhgAAXIgAAE2KAAA/jAAAMY4AACOPAAAWjwAADZAAAAKRAAAAkgAAAJMAAACVAAAAlgAAAJYA AACWAAAAlgAAAJYAAACXAAAAlwAAAJcHAACYDQAAmRMAAJofAACaLQAAmj8AAJpSAACaaAAAmYMA AJmfAACYugAAl+IAAJb4AG2KAABfjQAAUJAAAEGTAAAzlgAAJJcAABaYAAANmQAAAZsAAACdAAAA nwAAAKEAAACkAAAApQAAAKQAAAClAAAApQAAAKYAAACnAAAAqAAAAKkAAACqBAAArAwAAK4TAACu IQAArjMAAK5HAACuXQAArnYAAK6TAACurgAArc0AAKzvAGGRAABTlQAARJgAADWcAAAmnwAAF6EA AA2jAAAApQAAAKcAAACqAAAArAAAALAAAACyAAAAtAAAALMAAAC0AAAAtQAAALcAAAC4AAAAuQAA ALsAAAC9AAAAvwEAAMMLAADFFQAAxSUAAMY5AADHTwAAx2gAAMaFAADGogAAxrwAAMbeAFWZAABH nQAAOKIAACmmAAAZqAAADasAAACtAAAAsQAAALQAAAC3AAAAugAAAL8AAADBAAAAxAAAAMMAAADF AAAAxgAAAMgAAADKAAAAzQAAAM8AAADSAAAA1gAAANsAAADgDAAA4RgAAOMrAADkQQAA5VoAAOZ0 AADmkQAA5awAAOXEAP8AAAD/AAAA/wAAAP8AAQD/AAoA/wASAP8AHQD/ACgA/wA0AP8APgD9AEgA +gBQAPcAVwD1AF0A9ABjAPIAaQDwAG8A7wB0AO0AewDrAIEA6QCJAOgAkgDmAJwA5ACoAOIAtwDf AM0A3ADuANkA/wDZAP8AygD/AL4A/wC1AP8AsAD/AP8AAAD/AAAA/wAAAP8AAAD/AAYA/wAPAPwA GAD4ACMA9AAuAPAAOADrAEIA6ABKAOUAUQDiAFgA4ABdAN4AYwDcAGgA2QBuANYAdADUAHsA0QCC AM8AiwDNAJUAygChAMgArwDFAMEAwgDjAMAA+wDAAP8AuwD/ALAA/wCoAP8ApAD/AP8AAAD/AAAA /wAAAPsAAADzAAEA7QAMAOgAEwDjAB4A4AAoANoAMgDTADwAzwBEAMwASwDJAFEAxgBXAMQAXQDC AGIAwQBnAL8AbQC9AHQAuwB7ALkAhAC3AI4AtACZALIApwCvALcArQDQAKsA8gCqAP8AqQD/AKEA /wCbAP8AlwD/AP8AAAD/AAAA9AAAAOkAAADgAAAA1QAIAM4AEADJABgAxQAiAMEAKwC8ADUAuQA9 ALYARQCzAEsAsQBRAK8AVgCuAFsArABhAKoAZgCpAG0ApgB0AKQAfACiAIYAoACSAJ4AnwCcAK4A mQDDAJcA5wCWAP8AlQD/AJIA/wCNAP8AigD/APwAAADwAAAA4wAAANQAAADIAAAAvwADALkADQCz ABMArwAcAKwAJQCpAC4ApQA2AKMAPgCgAEQAngBKAJ0AUACbAFUAmQBaAJcAXwCWAGYAlABsAJIA dQCQAH4AjgCKAIsAlwCJAKYAhwC4AIUA1gCEAPYAggD/AIEA/wB+AP8AfAD/AO0AAADdAAAAzAAA AMEAAAC4AAAArgAAAKcACQCiABAAngAXAJoAHwCXACcAlAAvAJEANwCPAD0AjQBDAIsASQCJAE4A iABTAIYAWQCEAF8AggBlAIAAbQB+AHcAfACCAHoAjwB4AJ4AdQCvAHMAxwByAOwAcQD/AHAA/wBw AP8AbgD/AN0AAADJAAAAvAAAALEAAACpAAAAoQAAAJkAAwCTAAwAjgASAIoAGQCHACEAhAApAIEA MAB/ADcAfQA9AHsAQgB5AEgAeABNAHYAUgB0AFgAcgBfAHEAZwBvAHAAbAB7AGoAiABoAJcAZgCo AGUAvABjAOEAYgD6AGEA/wBhAP8AYQD/AM0BAAC8BQAArwUAAKUCAACcAAAAlAAAAI0AAACGAAgA gQAOAHwAFAB4ABsAdQAjAHIAKQBwADAAbgA2AG0APABrAEEAaQBHAGgATABmAFIAZABZAGMAYABh AGkAXwB0AF0AgQBbAJAAWQChAFcAtABWANAAVQDyAFUA/wBUAP8AVQD/AMEMAACyDgAApg8AAJsO AACSCwAAiQUAAIIAAAB7AAIAdQALAHAAEABsABYAaAAdAGYAIwBjACoAYQAwAGAANgBeADsAXQBB AFsARgBaAEwAWABTAFYAWwBUAGQAUgBuAFEAewBPAIoATQCbAEwArgBLAMYASgDqAEkA/gBJAP8A SQD/ALkSAACqFgAAnhcAAJQWAACKEwAAgRAAAHkLAABxAwAAawAGAGUADQBhABEAXQAYAFoAHgBY ACQAVgAqAFQAMABTADYAUQA7AFAAQQBOAEcATQBOAEsAVgBJAF8ARwBpAEYAdgBEAIUAQwCXAEEA qQBAAL8APwDiAD8A+AA+AP8APwD/ALIZAACkHgAAmB8AAI4fAACEHAAAehgAAHISAABqDgAAYggA AFwBCABXAA4AUwATAFAAGQBOAB8ATAAlAEoAKwBIADAARwA2AEYAPABEAEIAQwBJAEEAUQA/AFoA PgBlADwAcgA6AIEAOQCTADgApQA2ALoANgDbADUA9AA1AP8ANQD/AKwgAACfJAAAlCYAAIkmAAB/ JAAAdSAAAGwbAABkFQAAXBAAAFQMAQBOBgoASgIPAEcAFABEABoAQgAgAEAAJQA/ACsAPgExADwB NwA7Aj4AOQJFADgDTQA2A1YANQRhADMEbgAxBX4AMAWQAC8FowAtBrgALAbUACwH8AAsCP8ALAj/ AKglAACbKgAAkCwAAIYtAAB7KwAAcicAAGgiAABfHQAAVxcAAE8SAABIDgQAQQoLAD4HEAA7BhUA OQcbADgHIQA2CCYANQgsADMIMgAyCTkAMQlBAC8JSQAuClMALApeACsLbAApC3wAKAyPACYMogAl DLcAJAzTACMN8AAkDf8AJQ3/AKQqAACYLwAAjTIAAIMyAAB5MQAAby4AAGUpAABcJAAAUx8AAEsZ AABDEwAAPBAGADUNDAAzDBEAMQwWAC8MHAAuDSIALQ0oACsNLgAqDTUAKQ09ACcORgAmDlAAJA5c ACMPagAiD3sAIBCOAB8QogAdELcAHBDUAB0R8gAdEf8AHhH/AKEvAACVMwAAijYAAIA3AAB2NgAA bTMAAGMvAABZKgAAUCUAAEggAAA/GgAAOBUAADARCAAsEA4AKhASACgQGAAnEB4AJRAkACQQKgAj ETIAIhE6ACERQwAgEk4AHhJaAB0TaAAbE3gAGhOLABgUoAAXFLUAFhTRABYV8QAXFf8AGBT/AJ4z AACTNwAAiDoAAH47AAB0OwAAazgAAGE0AABXLwAATisAAEUmAAA9IQAANBwAAC0XBQAmEwwAIxMQ ACITFQAgExoAHxMhAB4UJwAdFC8AHBU3ABsVQQAaFksAGRZXABcXZQAWF3YAFBiJABMYngASGLMA ERnOABEZ7wASGf8AExn/AJw2AACROwAAhj4AAHw/AABzPwAAaT0AAF85AABVNQAATDAAAEMsAAA6 JwAAMiIAACoeAQAiGQkAHhcOABwXEgAaFxcAGRgeABkYJAAYGSwAFxk0ABYaPgAVGkkAExtVABIb YwARHHQAEByHAA8dnAAOHbEADR3LAA0d7AAOHf8ADx3/AJk6AACPPwAAhEIAAHtEAABxQwAAaEIA AF4+AABTOgAASjYAAEEyAAA5LQAAMSkAACglAAAgIAYAGh0MABccEAAVHBUAFB0bABQdIgATHSkA Eh4yABEfPAAQH0YAECBTAA4gYQANIXEADCGFAAsimQAKIq4ACSLHAAki5wAKIvsACyH/AJc+AACM QwAAg0YAAHlIAABwSAAAZ0YAAFxEAABSPwAASTsAAEA4AAA4NAAALzAAACcsAAAeJwMAFiMKABIh DgARIRMAECIZABAiIAAPIicADiMvAA0kOQAMJEQACyVQAAolXgAJJm8AByaCAAYmlgAEJqwAAybE AAQm5QAEJvcABib/AJVCAACKRwAAgUoAAHhMAABvTAAAZUsAAFtIAABQRAAAR0EAAD8+AAA3OwAA LTYAACQxAAAbLQAAEyoHAA8oDQANJxEADSgWAAwoHQALKCUACiktAAkpNwAHKkIABipOAAQrXAAD K2wAASt/AAArlAAAK6kAACvBAAAr4wAAK/YAACr/AJJGAACISwAAf08AAHZRAABtUQAAY1AAAFpN AABPSgAAR0cAAD5EAAAzQAAAKTwAACA4AAAXNAAAETEFAAwvDAAJLhAABy4VAAYvGwAFLyMAAy8r AAIwNQAAMD8AADBMAAAxWQAAMWkAADF8AAAxkQAAMacAADC/AAAw4QAAMPUAAC//AJBLAACGUAAA fVQAAHVWAABrVgAAYlUAAFhTAABOUAAARU0AADpJAAAvRQAAJUIAABw+AAAUOwAADjkFAAk3CwAE Ng8AATYTAAA2GQAANiAAADYpAAA2MgAANz0AADdJAAA3VwAAN2cAADd5AAA3jwAANqUAADa9AAA2 4AAANfUAADX/AI1QAACEVgAAfFoAAHJbAABpWwAAYFsAAFdZAABMVgAAQFIAADVOAAAqSwAAIEgA ABdGAAAQQwAAC0EEAARACgAAPw4AAD4RAAA+FgAAPh0AAD4mAAA+LwAAPjoAAD5GAAA+VAAAPmQA AD52AAA9jAAAPaMAADy7AAA83gAAO/UAADv/AIpXAACCXAAAeV8AAHBhAABoYQAAX2EAAFReAABH WwAAOlcAAC9VAAAlUgAAG1AAABJNAAAMSwAABkoDAABJCQAASA0AAEcQAABHFAAARhoAAEYiAABG LAAARjcAAEZDAABGUQAARmAAAEVzAABFiQAARKAAAES4AABD3AAAQvUAAEL/AIhdAAB/YgAAd2UA AG5nAABnaAAAW2YAAE5jAABBYQAANF4AAClcAAAfWgAAFVcAAA5WAAAHVAAAAFMBAABSBgAAUQsA AFEOAABQEQAATxYAAE8eAABPJwAATzIAAE8/AABPTQAATl0AAE5vAABOhQAATZ0AAEy1AABL2AAA SvUAAEr/AIVlAAB8aQAAdGwAAG1uAABibQAAVGsAAEdpAAA6ZwAALWUAACJkAAAYYgAAEGAAAAlf AAAAXgAAAF4AAABdAwAAXAgAAFsMAABaDwAAWhMAAFkZAABZIgAAWS0AAFk6AABZSAAAWFgAAFhr AABXgQAAV5kAAFayAABV0gAAVPQAAFP/AIFsAAB5cAAAc3MAAGhzAABacgAATHEAAD9wAAAybwAA JW4AABpsAAARawAACWoAAABqAAAAaQAAAGkAAABoAAAAZwMAAGYIAABmDAAAZg8AAGUUAABlHAAA ZScAAGQ0AABkQwAAZFMAAGRlAABjewAAYpQAAGGtAABgzQAAX/EAAF7/AH10AAB3dwAAbnkAAF95 AABReQAAQ3kAADZ4AAApeAAAHHcAABF2AAAKdQAAAHUAAAB1AAAAdgAAAHUAAAB0AAAAdAAAAHMC AABzBwAAcwwAAHIQAAByFQAAciAAAHIsAAByOwAAcUwAAHFfAABxdAAAcI4AAG+oAABuxgAAbO0A AGv/AHt7AAByfgAAZH4AAFV/AABHgAAAOYEAACuCAAAegQAAEoEAAAqBAAAAgQAAAIIAAACDAAAA gwAAAIMAAACCAAAAggAAAIIAAACCAAAAggUAAIIKAACCDwAAghcAAIIjAACCMgAAgkMAAIFWAACB bAAAgIYAAH+hAAB+vQAAfeYAAHz8AHaCAABogwAAWYUAAEuHAAA8iQAALooAACCLAAATiwAACosA AACMAAAAjQAAAI8AAACRAAAAkgAAAJEAAACRAAAAkQAAAJEAAACRAAAAkgAAAJICAACTCQAAlA8A AJQZAACUJwAAlDgAAJRMAACTYgAAk3wAAJOYAACSswAAkdgAAJD2AGqIAABcigAATY0AAD+QAAAw kgAAIZQAABSVAAAKlgAAAJcAAACZAAAAmwAAAJ0AAACfAAAAoAAAAKAAAACgAAAAoAAAAKEAAACi AAAAowAAAKQAAAClAAAApgcAAKgQAACoHAAAqC0AAKlAAACpVgAAqW8AAKmLAACoqAAAp8cAAKbs AF+PAABQkgAAQZYAADOZAAAjnAAAFJ0AAAqfAAAAoQAAAKMAAACmAAAAqAAAAKwAAACuAAAArwAA AK8AAACwAAAAsAAAALIAAACzAAAAtAAAALYAAAC3AAAAugAAAL0HAAC/EAAAvx8AAMAzAADASQAA wGIAAMB+AADAmwAAwLcAAL/YAFOXAABEmwAANZ8AACajAAAWpQAAC6cAAACqAAAArQAAALAAAACz AAAAtgAAALsAAAC9AAAAwAAAAL8AAADBAAAAwgAAAMQAAADGAAAAyAAAAMoAAADMAAAAzwAAANMA AADaBwAA2xMAAN0lAADeOwAA31MAAOBuAADfjAAA3akAAN3CAP8AAAD/AAAA/wAAAP8AAAD/AAcA /wAQAP8AGQD/ACQA/wAvAPwAOgD5AEMA9QBLAPMAUgDxAFkA7wBeAO0AZADrAGkA6QBvAOcAdQDm AHwA5ACEAOIAjQDgAJcA3QCiANoAsQDVAMUA0gDoANAA/wDPAP8AxAD/ALgA/wCvAP8AqQD/AP8A AAD/AAAA/wAAAP8AAAD/AAIA+wANAPcAFQDzAB8A7wApAOoANADmAD0A4gBFAN4ATADbAFMA2ABY ANQAXgDSAGMA0ABpAM4AbgDMAHUAygB9AMgAhQDGAJAAwgCbAMAAqQC+ALoAuwDZALkA9wC4AP8A tAD/AKkA/wCiAP8AnQD/AP8AAAD/AAAA/wAAAPYAAADuAAAA5wAKAOEAEQDcABoA1wAjANAALgDL ADcAxwA/AMQARgDBAE0AvwBSAL0AWAC7AF0AuQBiALgAaAC2AG4AtAB1ALEAfgCvAIgArQCTAKoA oQCoALEApgDIAKQA7QCiAP8AogD/AJsA/wCVAP8AkQD/AP8AAAD8AAAA7gAAAOMAAADYAAAAzQAF AMYADgDBABUAvQAeALkAJwC1ADAAsgA4AK8AQACsAEYAqgBMAKgAUQCnAFYApQBbAKMAYQChAGcA nwBuAJ4AdgCbAIAAmQCMAJcAmQCUAKgAkgC8AJAA3wCOAPsAjgD/AIsA/wCGAP8AgwD/APgAAADp AAAA3AAAAMwAAADBAAAAuAAAALIACgCsABEAqAAYAKUAIQCiACkAngAyAJwAOQCZAD8AlwBFAJUA SgCUAFAAkgBVAJAAWgCPAGAAjQBnAIsAbwCJAHgAhgCEAIQAkQCCAKAAgACyAH0AzAB8APEAewD/ AHoA/wB3AP8AdQD/AOYAAADTAAAAxgAAALsAAACxAAAApwAAAKEABQCbAA0AlwATAJMAGwCQACMA jAArAIoAMgCIADgAhgA+AIQARACCAEkAgQBOAH8AUwB9AFkAewBgAHkAaAB3AHEAdQB8AHMAiQBw AJgAbwCpAG0AvwBrAOYAagD/AGkA/wBpAP8AZwD/ANMAAADDAAAAtQAAAKsAAACjAAAAmwAAAJIA AACMAAoAhwAQAIMAFgB/AB0AfQAkAHoAKwB4ADIAdgA4AHQAPQByAEIAcQBIAG8ATQBtAFMAbABZ AGoAYQBoAGoAZgB0AGQAgQBhAJEAXwCiAF4AtgBcANUAWwD3AFsA/wBaAP8AWgD/AMUAAAC2AgAA qQIAAJ8AAACWAAAAjgAAAIcAAACAAAUAegAMAHUAEQBxABgAbgAeAGsAJQBpACsAZwAxAGYANwBk ADwAYwBBAGEARwBfAE0AXgBTAFwAWwBaAGQAWABuAFYAewBUAIoAUgCbAFEArgBQAMgATwDuAE4A /wBOAP8ATQD/ALsKAACsDQAAoA0AAJUMAACMCAAAgwIAAHwAAAB1AAAAbgAIAGkADgBlABMAYgAZ AF8AHwBdACUAWwArAFkAMQBYADYAVgA7AFUAQQBTAEcAUQBOAFAAVQBOAF4ATABoAEoAdQBIAIQA RwCVAEUAqABEAL8AQwDkAEIA/ABCAP8AQgD/ALIRAAClFAAAmRUAAI4TAACEEQAAew0AAHMIAABs AAAAZQADAF8ACwBbAA8AVwAUAFQAGgBRAB8ATwAlAE4AKwBMADAASwA2AEkAPABIAEIARgBIAEUA UABDAFkAQQBjAD8AbwA+AH4APACQADsAowA6ALgAOQDZADgA9QA4AP8AOAD/AKwXAACfGwAAkx0A AIkcAAB/GQAAdRUAAGwQAABkDAAAXQYAAFYABgBRAAwATQAQAEoAFQBHABoARQAgAEQAJgBCACsA QQAxAD8ANgA+AD0APABEADsASwA5AFQANwBfADYAawA0AHoAMgCMADEAngAwALMALwDOAC8A7wAu AP8ALgD/AKceAACaIgAAjyQAAIQkAAB6IQAAcR0AAGcYAABfEwAAVw4AAFAKAABJAwgARQANAEEA EQA+ABYAPAAbADoAIQA5ACYANwAsADYAMgA0ADgAMwA/ADEARwAwAFAALgBbAC0AZwArAHYAKgCI ACgAnAAnALAAJgDJACUA6gAlAfsAJQH/AKIjAACWKAAAiyoAAIEqAAB3KAAAbSUAAGQgAABbGwAA UhUAAEsQAABDDAIAPQcJADkDDgA2ARIAMwEXADEBHAAwASIALwInAC0CLQAsAzQAKgM7ACkEQwAo BE0AJgVYACUFZQAjBnQAIgaGACAGmgAfB64AHgfGAB0H5wAdCPgAHQn/AJ8oAACTLQAAiC8AAH4v AAB0LgAAaisAAGEmAABYIQAATxwAAEcXAAA/EgAAOA4EADELCgAuCA4AKwcSACkHFwAoCB0AJwgj ACUIKQAkCTAAIwk3ACEKQAAgCkoAHwtVAB0LYgAbDHIAGgyFABgMmQAXDK0AFgzGABUN5gAVDfkA Fg3/AJwtAACQMQAAhjQAAHw0AAByMwAAaDEAAF8sAABVJwAATCMAAEQdAAA8GAAANBMAAC0QBgAm DQsAJAwPACIMEwAhDBkAHwwfAB4NJQAdDSwAGw00ABoOPQAZDkcAFw5TABYOYQAUD3EAExCEABIQ mAAREK4AEBDGABAQ6AAQEPsAERD/AJkxAACONQAAhDgAAHo5AABwOAAAZzYAAF0yAABTLQAASigA AEIkAAA5HwAAMRoAACoVAQAjEQcAHRANABsPEAAZDxUAGBAbABcQIQAWECkAFRAxABQROgATEUUA EhJRABESXwAQEm8ADhOCAA4TlgANE6sACxPCAAsU4wAMFPoADRP/AJc1AACMOQAAgjwAAHg9AABv PQAAZToAAFs3AABSMgAASS4AAEAqAAA3JQAALyEAACgcAAAgGAMAGRQKABUSDgAUEhIAExMYABIT HwARFCYAERQuABAUOAAPFUIADhZPAA0WXAAMF2wACxd/AAkYkwAIGKgABhi/AAcY4AAHGPUACRj/ AJU4AACKPQAAgEAAAHdBAABtQQAAZD8AAFo8AABQOAAARzMAAD4wAAA2KwAALicAACcjAAAfHwAA FxoIABIXDQAQFxEADxcWAA4YHAAOGCMADRksAAwaNQALGkAAChtMAAkbWgAHHGkABRx8AAQdkQAC HaYAAR28AAIc3QACHPIAAxz/AJM8AACIQQAAf0QAAHVFAABsRQAAY0QAAFlBAABPPQAARjkAAD42 AAA1MgAALi4AACUqAAAdJQAAFCEEAA8dCwANHRAADB0UAAsdGgAKHiIACB4qAAcfMwAGID4ABCBK AAMhVwABIWcAACF5AAAhjgAAIaQAACG6AAAh2wAAIfIAACD+AJBAAACGRQAAfUgAAHRKAABrSgAA YkkAAFhGAABOQgAART8AAD08AAA1OQAAKzQAACIvAAAZKwAAEigEAA0kCgAJIw4ABiMSAAUjGQAE JCAAAiQoAAElMQAAJTwAACVIAAAmVQAAJmUAACZ3AAAmjAAAJqIAACa5AAAm2QAAJfIAACX+AI5F AACESQAAe00AAHNPAABqTwAAYE4AAFdLAABNSAAAREUAADxCAAAxPQAAJzkAAB41AAAVMgAADy4D AAosCgAFKw4AASoRAAAqFgAAKh4AAComAAArLwAAKzkAACtFAAAsUwAALGIAACx1AAAsigAAK6AA ACu3AAAr1gAAKvIAACr/AIxJAACCTgAAelIAAHFUAABoVAAAX1MAAFZRAABMTgAAQ0sAADdHAAAt QwAAIz8AABo8AAASOAAADDYDAAYzCQAAMg0AADIQAAAxFAAAMRsAADEjAAAxLAAAMjcAADJDAAAy UAAAMmAAADJyAAAyhwAAMZ4AADG1AAAw1AAAMPIAAC//AIlPAACAVAAAeFcAAG9ZAABmWQAAXlkA AFVXAABJUwAAPk8AADJMAAAoSAAAHkUAABVCAAAOQAAACD0CAAE8CAAAOwwAADoPAAA5EgAAORgA ADkgAAA5KQAAOTQAADlAAAA5TgAAOV0AADlvAAA4hQAAOJwAADezAAA30gAANvIAADX/AIdVAAB/ WgAAdl0AAG1fAABlXwAAXV8AAFJcAABEWAAAOFUAAC1SAAAiTwAAGEwAABBKAAAKSAAAA0YBAABF BgAARAoAAEMNAABCEAAAQRUAAEEdAABBJgAAQTEAAEE9AABBSgAAQVoAAEFsAABAgQAAP5kAAD+x AAA+0AAAPfIAADz/AIRcAAB8YAAAc2MAAGxlAABkZgAAWWQAAEthAAA+XgAAMlsAACZZAAAcVgAA ElQAAAxSAAAEUQAAAE8AAABOAwAATQgAAEwMAABLDgAASxIAAEoZAABKIgAASiwAAEo5AABKRwAA SlYAAEloAABJfgAASJYAAEevAABGzQAARfEAAET/AIFjAAB5ZwAAcmoAAGtsAABgawAAUmkAAERm AAA3ZAAAKmIAAB9gAAAVXgAADV0AAAZbAAAAWgAAAFkAAABYAAAAVwQAAFYIAABWDAAAVRAAAFQU AABUHQAAVCcAAFQ0AABUQgAAU1IAAFNkAABSeQAAUpIAAFGrAABQygAAT+8AAE7/AH5qAAB3bgAA cHEAAGZxAABYcAAASm8AADxtAAAvbAAAImoAABdpAAAOZwAABmYAAABlAAAAZQAAAGUAAABjAAAA YgAAAGIEAABhCAAAYQ0AAGAQAABgFwAAYCEAAF8uAABfPAAAX00AAF5eAABedAAAXY0AAFynAABb xQAAWu0AAFn/AHtyAAB1dgAAa3cAAF12AABPdgAAQXUAADN1AAAmdAAAGXMAABByAAAHcQAAAHEA AABxAAAAcQAAAHEAAABvAAAAbwAAAG4AAABuAgAAbggAAG0MAABtEQAAbRoAAG0mAABsNQAAbEYA AGtYAABrbQAAaoYAAGmhAABovgAAZ+gAAGb+AHl6AABwfAAAYXwAAFN9AABEfQAANn4AACh+AAAb fQAAEH0AAAd9AAAAfQAAAH0AAAB+AAAAfwAAAH4AAAB9AAAAfQAAAHwAAAB8AAAAfAAAAHwGAAB8 DAAAfBIAAHwdAAB8LAAAfDwAAHxPAAB7ZQAAe34AAHqaAAB5tgAAeN8AAHf6AHOAAABlgQAAVoMA AEiEAAA5hgAAK4cAAB2HAAARhwAAB4gAAACIAAAAiQAAAIoAAACMAAAAjQAAAI0AAACMAAAAjAAA AIwAAACMAAAAjAAAAI0AAACNBAAAjgwAAI4TAACPIQAAjjIAAI5GAACOWwAAjXQAAI2QAACMrQAA i84AAIrzAGiGAABaiAAAS4sAADyNAAAtjwAAHpAAABGRAAAHkgAAAJMAAACVAAAAlwAAAJkAAACb AAAAnAAAAJsAAACbAAAAnAAAAJwAAACdAAAAngAAAJ4AAACfAAAAoQMAAKIMAACiFgAAoyYAAKM6 AACjTwAAo2gAAKKGAACiogAAosAAAKHoAFyNAABNkAAAP5MAADCWAAAhmQAAEpoAAAebAAAAnQAA AKAAAACiAAAApAAAAKgAAACqAAAAqwAAAKoAAACrAAAArAAAAK0AAACuAAAArwAAALEAAACyAAAA tAAAALcBAAC5DQAAuRoAALotAAC6QwAAulsAALp3AAC7lAAAu7EAALnSAFCVAABBmAAAMpwAACOg AAATogAACKQAAACnAAAAqgAAAKwAAACvAAAAsgAAALcAAAC5AAAAuwAAALoAAAC8AAAAvQAAAL8A AADAAAAAwgAAAMQAAADGAAAAyQAAAM0AAADSAQAA1A8AANUfAADXNQAA2E0AANhpAADXhgAA16MA ANa9AP8AAAD/AAAA/wAAAP8AAAD/AAMA/wANAP8AFQD/ACAA/AArAPgANQD0AD8A8ABHAO4ATgDr AFQA6QBaAOcAXwDlAGQA4wBqAOEAcADfAHYA3QB+ANsAhwDYAJEA0wCdAM8AqwDNAL0AywDgAMkA +wDHAP8AvQD/ALEA/wCpAP8AowD/AP8AAAD/AAAA/wAAAP8AAAD8AAAA9gALAPEAEQDtABsA6QAl AOQAMADfADkA2gBBANUASADRAE4AzwBUAM0AWQDLAF4AyQBjAMcAaQDFAG8AwwB3AMAAfwC+AIoA uwCVALgAowC2ALQAtADNALIA8gCwAP8ArAD/AKMA/wCcAP8AlwD/AP8AAAD/AAAA+gAAAPEAAADo AAAA4AAGANkADgDSABYAzgAfAMgAKQDEADIAwAA6AL0AQQC6AEgAuABNALYAUwC0AFgAsgBdALAA YgCuAGkArABvAKoAeACoAIIApgCOAKQAmwChAKsAnwDAAJ0A5gCbAP8AmgD/AJQA/wCOAP8AigD/ AP8AAAD2AAAA6AAAANwAAADOAAAAxgABAL8ACwC6ABEAtgAaALIAIgCuACsAqgA0AKgAOwClAEEA owBHAKEATACfAFEAngBWAJwAXACaAGIAmQBoAJcAcACVAHoAkgCGAJAAkwCNAKIAiwC1AIkA0wCH APcAhgD/AIQA/wB/AP8AfAD/APIAAADjAAAA0gAAAMUAAAC6AAAAsQAAAKsABwClAA4AoQAUAJ4A HACaACUAlwAtAJQANACSADoAkABAAI4ARQCNAEoAiwBQAIkAVQCIAFsAhgBhAIQAaQCCAHIAfwB9 AH0AiwB7AJoAeACrAHYAxAB0AOsAcwD/AHMA/wBwAP8AbgD/AN8AAADMAAAAvwAAALQAAACrAAAA oQAAAJoAAgCUAAsAkAAQAIwAFwCIAB4AhQAmAIMALQCBADMAfwA5AH0APwB7AEQAeQBJAHgATgB2 AFQAdABaAHMAYgBwAGsAbgB1AGwAgwBqAJIAaACjAGYAuABkAN4AYwD7AGIA/wBiAP8AYAD/AMwA AAC8AAAArwAAAKUAAACdAAAAlAAAAIwAAACGAAcAgQANAHwAEgB4ABkAdQAfAHMAJgBxAC0AbwAy AG0AOABrAD0AagBCAGgASABnAE4AZQBUAGMAWwBhAGQAXwBuAF0AewBbAIoAWQCbAFcArwBWAMsA VQDyAFQA/wBUAP8AVAD/AL4AAACwAAAApAAAAJkAAACQAAAAiAAAAIEAAAB5AAIAcwAKAG8ADwBr ABQAZwAaAGUAIABjACYAYQAsAF8AMgBeADcAXAA8AFsAQgBZAEcAVwBOAFYAVQBUAF4AUgBoAFAA dABOAIMATACVAEoAqABJAMAASADoAEcA/wBHAP8ARwD/ALQJAACmCwAAmwwAAJAKAACGBQAAfgAA AHYAAABvAAAAaAAFAGMADABfABAAWwAVAFgAGgBWACEAVAAmAFMALABRADEAUAA2AE4APABNAEIA SwBIAEkAUABIAFgARgBiAEQAbgBCAH0AQACOAD8AogA9ALgAPQDdADwA+AA8AP8APAD/AKwQAACf EgAAlBIAAIkRAAB/DwAAdgwAAG4FAABmAAAAYAABAFkACABVAA0AUQARAE4AFgBLABsASQAhAEgA JgBGACsARQAxAEMANgBCADwAQABDAD4ASwA9AFMAOwBdADkAaQA3AHgANgCJADQAnAAzALEAMgDO ADIA8QAxAP8AMQD/AKYWAACaGQAAjhoAAIQaAAB6FgAAcBIAAGgOAABfCgAAWAMAAFEABABMAAoA SAAOAEQAEgBBABYAPwAbAD0AIQA8ACYAOgAsADkAMQA3ADcANgA+ADQARgAzAE8AMQBZAC8AZQAu AHMALACFACsAmAAqAK0AKQDGACgA6gAoAP4AKAD/AKEcAACVIAAAiiEAAH8hAAB1HwAAbBoAAGMW AABaEQAAUg0AAEsHAABEAAYAQAALADwADwA4ABIANgAXADQAHAAzACEAMQAnADAALAAuADMALQA6 ACsAQgAqAEsAKABVACYAYQAlAHAAJACBACIAlQAhAKkAIADBACAA5AAfAPkAHwD/AJ0iAACRJgAA higAAHwnAAByJQAAaSIAAF8dAABXGAAAThMAAEYOAAA/CwAAOAUHADQADAAxABAALgATACwAGAAq AB0AKQAiACcAKAAmAC4AJAA2ACMAPgAiAEcAIABSAB8AXgAdAG0AHAB+ABoAkgAZAKcAGAC9ABcA 3wAXAfUAFwL/AJonAACOKwAAhC0AAHktAABwKwAAZigAAF0kAABUHwAASxoAAEMUAAA7EAAANA0C AC0JCQApBQ0AJgMQACQBEwAiAhkAIQIeACACJAAeAyoAHQMyABsEOgAaBUQAGQVPABcGXAAWBmoA FAd8ABMHkAASB6UAEQe7ABAH2wAQCPIAEAn/AJcrAACMLwAAgTEAAHcyAABuMQAAZC4AAFsqAABR JQAASSAAAEAbAAA4FgAAMRIAACkOBAAjDAkAHwkNAB0HEAAbBxUAGQgaABgIIAAXCScAFgkuABUK NwATCkEAEgtNABELWgAQC2kADgx7AA4MkAANDKUADA27AAsN2QALDfEADA3/AJUvAACKMwAAfzYA AHY2AABsNQAAYzMAAFkvAABQKwAARyYAAD4hAAA2HQAALhgAACcTAAAgEAUAGQ4KABUMDgAUDBEA EwwWABIMHAARDSMAEA0rAA8NNAAODj8ADQ5KAAwPWAALD2cAChB5AAgQjQAHEKIABhC4AAUQ1AAF EO8ABhD/AJIzAACINwAAfjoAAHQ7AABrOgAAYTgAAFg1AABOMAAARSwAAD0nAAA1IwAALR8AACYa AAAeFgEAFxMGABEQCwAODg4ADg8TAA0QGQANECAADBAoAAsRMgAKETwACBJIAAcSVQAGE2UABBN2 AAMTiwABFKAAABO2AAAT0QAAE+4AABP7AJA2AACGOwAAfD4AAHM/AABqPwAAYD0AAFc5AABNNgAA RDEAADwuAAA0KgAALCYAACUiAAAeHgAAFhoCABAVCQAMEw4AChMSAAkUFwAIFB8ABxUmAAYVLwAE FjoAAxZGAAEXUwAAF2IAABh0AAAYiQAAGJ8AABi1AAAX0AAAF+0AABf7AI46AACEPwAAe0IAAHJD AABoQwAAX0IAAFY/AABMOwAAQzcAADs0AAAzMAAALCwAACQpAAAbJAAAEx8CAA0bCQAJGQ0ABhkR AAQZFgACGR0AARokAAAaLQAAGzgAABtEAAAcUQAAHGAAAB1yAAAdhwAAHJ0AAByzAAAczgAAG+0A ABv8AIw+AACCQwAAeUYAAHBIAABoSAAAXkYAAFVEAABLQAAAQz0AADs6AAAzNwAAKjIAACAtAAAX KQAAECUCAAsiCQAFIA0AAR8QAAAfFAAAHxsAACAiAAAgKwAAITYAACFBAAAhTwAAIV4AACJwAAAi hQAAIZsAACGyAAAhzQAAIO0AAB/8AIpDAACASAAAeEsAAG9MAABmTQAAXUsAAFRJAABKRgAAQkMA ADpAAAAvOwAAJTcAABwzAAATLwAADSwCAAcpCAABJwwAACYOAAAlEgAAJhkAACYhAAAmKQAAJjMA ACc/AAAnTQAAJ1wAACdtAAAnggAAJ5kAACawAAAlzAAAJe4AACT9AIhIAAB/TAAAdlAAAG5RAABl UgAAXFEAAFNPAABKTAAAQUkAADVEAAArQAAAITwAABc5AAAQNgAACjIBAAMwBwAALwsAAC4OAAAt EQAALRYAAC0eAAAtJwAALTEAAC09AAAtSgAALVkAAC1rAAAtgAAALJcAACyvAAArywAAKu4AACr+ AIVNAAB9UgAAdVUAAGxXAABjVwAAW1YAAFNVAABHUQAAO00AADBJAAAlRgAAHEMAABM/AAANPQAA BjoAAAA4BQAANwkAADYNAAA1DwAANBQAADQbAAA0JAAANC4AADQ6AAA0RwAANFcAADRoAAA0fQAA M5UAADKtAAAxygAAMe4AADD/AINTAAB7WAAAc1sAAGpdAABiXQAAW10AAE9aAABCVgAANlIAACpP AAAgTAAAFkkAAA5HAAAIRAAAAEIAAABBAwAAPwcAAD4LAAA9DgAAPREAADwYAAA8IQAAPCsAADw3 AAA8RAAAPFMAADxlAAA7egAAOpIAADqrAAA5yAAAOO0AADf/AIFaAAB5XgAAcWEAAGljAABiZAAA V2IAAEleAAA8WwAAL1gAACRVAAAZUwAAEFEAAApPAAABTQAAAEwAAABKAAAASQQAAEgIAABHDAAA Rg8AAEYUAABFHAAARScAAEUzAABFQAAARVAAAERhAABEdgAAQ48AAEKoAABBxgAAQOwAAD//AH5h AAB2ZQAAb2gAAGhqAABdaQAAT2YAAEJkAAA0YQAAKF8AAB1dAAASWwAAC1kAAAJYAAAAVgAAAFYA AABUAAAAUwAAAFIEAABRCQAAUA0AAFAQAABPGAAATyIAAE8uAABPPAAAT0sAAE5dAABOcgAATYsA AEylAABLwgAASeoAAEj/AHtpAAB0bAAAbm8AAGRvAABVbQAAR2wAADlqAAAsaQAAIGcAABRlAAAN ZAAAA2IAAABiAAAAYQAAAGAAAABfAAAAXgAAAF0AAABcBAAAXAkAAFsNAABbEgAAWxwAAFooAABa NgAAWkYAAFlYAABZbQAAWIUAAFegAABWvQAAVegAAFP+AHlwAABzdAAAaXUAAFt0AABMcwAAPnMA ADByAAAjcQAAFm8AAA1uAAAEbQAAAG0AAABtAAAAbQAAAGwAAABrAAAAagAAAGkAAABpAAAAaQMA AGgJAABoDgAAaBUAAGchAABnLwAAZz8AAGZSAABmZgAAZX8AAGSaAABjtwAAYuEAAGH8AHd4AABt egAAX3oAAFB6AABCegAAM3sAACV7AAAYegAADnkAAAR5AAAAeQAAAHkAAAB6AAAAegAAAHoAAAB4 AAAAeAAAAHcAAAB3AAAAdwAAAHcBAAB3CAAAdw4AAHcYAAB3JgAAdjYAAHZJAAB1XwAAdXcAAHST AABzrwAActMAAHH3AHF+AABjfwAAVIAAAEWCAAA2gwAAKIQAABqEAAAOgwAABIQAAACEAAAAhQAA AIYAAACIAAAAiQAAAIgAAACHAAAAhwAAAIcAAACHAAAAhwAAAIgAAACIAAAAiAcAAIkQAACJHAAA iSwAAIg/AACIVQAAiG0AAIeJAACGpwAAhccAAITvAGaEAABXhgAASIgAADmKAAAqjAAAG40AAA+N AAAEjgAAAJAAAACRAAAAkwAAAJUAAACXAAAAmAAAAJYAAACXAAAAlwAAAJcAAACYAAAAmAAAAJkA AACaAAAAmwAAAJ0HAACdEQAAnSEAAJ0zAACdSQAAnGIAAJx/AACcnAAAnLkAAJviAFqLAABLjgAA PJEAAC2TAAAelQAAEJYAAASYAAAAmgAAAJwAAACeAAAAoQAAAKQAAACmAAAApwAAAKYAAACnAAAA pwAAAKgAAACpAAAAqgAAAKwAAACtAAAArwAAALEAAACzCQAAsxUAALQnAAC0PQAAtVUAALVwAAC0 jgAAtKwAALTMAE2SAAA/lgAAL5oAACCdAAARnwAABaEAAACjAAAApgAAAKkAAACsAAAArwAAALMA AAC1AAAAtwAAALYAAAC3AAAAuAAAALoAAAC7AAAAvQAAAL8AAADBAAAAxAAAAMcAAADLAAAAzQwA AM4aAADPLwAAz0gAANBiAADQgAAA0J0AANC4AAAAAAAAAAAAAAAAAAAAAAABAwQFBggJCgsNDg8R EhMUFhcYGhscHR8gISIkJSYoKSorLS4vMDIzNDY3ODk7PD0+QEFCREVGR0lKS01OT1BSU1RVV1hZ W1xdXmBhYmNlZmdpamtsbm9wcXN0dXd4eXp8fX6AgYKDhYaHiIqLjI6PkJGTlJWWmJmanJ2en6Gi o6Smp6iqq6ytr7Cxs7S1tri5uru9vr/BwsPExsfIycvMzc/Q0dLU1dbX2drb3d7f4OLj5Obn6Onr 7O3u8PHy9PX29/n6+/z+//////////////////////////////////////////////////////8A AAAAAAAAAAAAAAAAAAAAAQMEBQYICQoLDQ4PERITFBYXGBobHB0fICEiJCUmKCkqKy0uLzAyMzQ2 Nzg5Ozw9PkBBQkRFRkdJSktNTk9QUlNUVVdYWVtcXV5gYWJjZWZnaWprbG5vcHFzdHV3eHl6fH1+ gIGCg4WGh4iKi4yOj5CRk5SVlpiZmpydnp+hoqOkpqeoqqusra+wsbO0tba4ubq7vb6/wcLDxMbH yMnLzM3P0NHS1NXW19na293e3+Di4+Tm5+jp6+zt7vDx8vT19vf5+vv8/v////////////////// ////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAEDBAUGCAkKCw0ODxES ExQWFxgaGxwdHyAhIiQlJigpKistLi8wMjM0Njc4OTs8PT5AQUJERUZHSUpLTU5PUFJTVFVXWFlb XF1eYGFiY2VmZ2lqa2xub3Bxc3R1d3h5enx9foCBgoOFhoeIiouMjo+QkZOUlZaYmZqcnZ6foaKj pKanqKqrrK2vsLGztLW2uLm6u72+v8HCw8TGx8jJy8zNz9DR0tTV1tfZ2tvd3t/g4uPk5ufo6evs 7e7w8fL09fb3+fr7/P7//////////////////////////////////////////////////////wAB AgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6 Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJz dHV2d3h5ent8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqus ra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl 5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v9tZnQxAAAAAAMBIQAAAQAAAAAAAAAAAAAAAAAAAAEA AAAAAAAAAAAAAAAAAAABAAAAAQIDBAUGBwgICQoLDA0ODxAREhMUFRYXGBkaGhscHR4fICEiIyQl JicoKSorLC0uLzAxMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xd Xl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWW l5iZmpucnZ6foKGio6SlpqeoqaqrrK2usLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q 0dPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8fLz9PX29/j5+vv8/f7/AAEBAgIDAwQEBQYG BwcICAkJCgsLDAwNDQ4PDxAQERESExMUFBUWFhcXGBkZGhobHBwdHh4fICAhIiIjJCQlJiYnKCkp KissLS0uLzAxMjIzNDU2Nzg5Ojs8PT4/QEJDREVGSElKTE1PUFJTVVdYWlxeYGJkZmhqbW9xdHZ5 fH6Bg4aJi46QkpWXmZudn6Gjpaeoqqytr7Cys7W2t7m6u7y9v8DBwsPExcbHyMnKy8zNzc7P0NHS 0tPU1dbW19jZ2drb29zd3d7f3+Dh4eLj4+Tl5ebm5+jo6enq6+vs7O3u7u/v8PDx8vLz8/T09fb2 9/f4+Pn5+vv7/Pz9/f7+/wABAQICAwMEBAUGBgcHCAgJCQoLCwwMDQ0ODw8QEBEREhMTFBQVFhYX FxgZGRoaGxwcHR4eHyAgISIiIyQkJSYmJygpKSorLC0tLi8wMTIyMzQ1Njc4OTo7PD0+P0BCQ0RF RkhJSkxNT1BSU1VXWFpcXmBiZGZoam1vcXR2eXx+gYOGiYuOkJKVl5mbnZ+ho6WnqKqsra+wsrO1 tre5uru8vb/AwcLDxMXGx8jJysvMzc3Oz9DR0tLT1NXW1tfY2dna29vc3d3e39/g4eHi4+Pk5eXm 5ufo6Onp6uvr7Ozt7u7v7/Dw8fLy8/P09PX29vf3+Pj5+fr7+/z8/f3+/v////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////9P/////////////////////////////////////////r0f////////////////////////// ///////////////36f7///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////hzdf///////////////////////////// /////////92vlrf0/////////////////////////////////////8WMaKfn//////////////// /////////////////////8yciaTn//////////////////////////////////////rOu8b1//// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////cxb31/////////////////////////////////////7+TeoXF//////////////////// ////////////////25BbPWWo9v/////////////////////////////////+vHU0AFSb6/////// ///////////////////////////TlH5JLE6a7P///////////////////////////////9jUyrN+ ZW2l+f////////////////////////////////////TFrq/J//////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////w1sbs//////////////////////// ////////////5ruRdGOr9/////////////////////////////////bEmnNFJjR9zP////////// /////////////////////7WAVTAKABlgsv//////////////////////////////z3Q1CwAAAApS p///////////////////////////////ljQAAAAAAABPp//////////////////////////////2 aR0AAAkMBglSsf/////////////////////////////LOw4TNUxbTUxew/////////////////// //////////+pYDZghp+2rKm42f/////////////////////////////gl42+5f////////////// ////////////////////////7fn///////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////+vZyrzH///////////////////////////////////PmoFtWkaI6v////////////// /////////////////8R8PiYQAABUsP//////////////////////////////4IM8AAAAAAAuh+3/ ////////////////////////////rFMQAAAAAAAXbdb////////////////////////////7gDEA AAAAAAAJYcz////////////////////////////SWgIAAAAAAAAAXcz///////////////////// //////+oNQAAAAAAAAAAXNP///////////////////////////99DQAAAAAAAAAAVNb///////// /////////////////+59RQAAAAAAAAAARNT///////////////////////////yqZC8CAAAEIjdJ WM7////////////////////////////ppGtBKD9jf5Wnutr///////////////////////////// /9WyrLLM5Pr///////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////+W7l3diyP////////////////// ///////////////bnmc2CgACjP///////////////////////////////8h/PwUAAAAAXs////// ////////////////////////2YE5AAAAAAAAPKr/////////////////////////////nkwAAAAA AAAAI5D////////////////////////////cbxoAAAAAAAAAEH35//////////////////////// //+vSAAAAAAAAAAAAG/u//////////////////////////+EEwAAAAAAAAAAAGTm//////////// /////////////+xRAAAAAAAAAAAAAFfe/////////////////////////7gVAAAAAAAAAAAAAEjW /////////////////////////3QUAAAAAAAAAAAAADjP////////////////////////+aJaEwAA AAAAAAAAACPF/////////////////////////9+bXCwAAAAAAAAAAA26//////////////////// ///////vsX1VOSIRBwECESKy///////////////////////////////fv6WZmJqgrL3a//////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////jvp2AfPv////////////////////////////////yt4RXMA4AHaz///////// /////////////////////9KKTBUAAAAAAHLz////////////////////////////1n82AAAAAAAA AEvJ///////////////////////////6kT4AAAAAAAAAAC+r///////////////////////////A WgAAAAAAAAAAABqV//////////////////////////+NJAAAAAAAAAAAAAiE//////////////// /////////+deAAAAAAAAAAAAAAB3/////////////////////////7QlAAAAAAAAAAAAAABq//// /////////////////////30AAAAAAAAAAAAAAABb9P///////////////////////SsAAAAAAAAA AAAAAABM6///////////////////////pQAAAAAAAAAAAAAAAAA84f////////////////////// MAwAAAAAAAAAAAAAAAAt2f////////////////////+ZimEnAAAAAAAAAAAAAAAn1/////////// ////////////7b6JVScAAAAAAAAAAAAl3P/////////////////////////+yp12XUo8Mi0sMDlH 3v///////////////////////////////ebd1tLQ09nk//////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////+/Uu9b///////////// ////////////////////57iPaksvFW///////////////////////////////+ShZzQHAAAAADzJ ////////////////////////////1oI7AAAAAAAAABKX///////////////////////////thTEA AAAAAAAAAABv//////////////////////////+mQgAAAAAAAAAAAABQ4f////////////////// /////+xpAAAAAAAAAAAAAAA3yf///////////////////////7MvAAAAAAAAAAAAAAAitv////// /////////////////3kAAAAAAAAAAAAAAAAQp///////////////////////8jQAAAAAAAAAAAAA AAAAmf//////////////////////qQAAAAAAAAAAAAAAAAAAjP//////////////////////RgAA AAAAAAAAAAAAAAAAf//////////////////////fAAAAAAAAAAAAAAAAAAAAdP////////////// //////+XAAAAAAAAAAAAAAAAAAAAav/////////////////////OAAAAAAAAAAAAAAAAAAAAY/// ////////////////////KSIBAAAAAAAAAAAAAAAAYf//////////////////////uaOAVzcXAAAA AAAAAAAAaP//////////////////////////+tOulIZ8dXFwcneBlP////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////bup2CaWnT//// ///////////////////////////Ik2U9GQAAAB2e////////////////////////////245MEwAA AAAAAABu///////////////////////////bfCwAAAAAAAAAAABF1/////////////////////// //+LKgAAAAAAAAAAAAAitP///////////////////////8JEAAAAAAAAAAAAAAADl/////////// /////////////30BAAAAAAAAAAAAAAAAf///////////////////////5zYAAAAAAAAAAAAAAAAA av//////////////////////nQAAAAAAAAAAAAAAAAAAWP//////////////////////RgAAAAAA AAAAAAAAAAAAR/j////////////////////pAAAAAAAAAAAAAAAAAAAANen///////////////// //+WAAAAAAAAAAAAAAAAAAAAJdv///////////////////+8AAAAAAAAAAAAAAAAAAAAGM7///// ///////////////rAAAAAAAAAAAAAAAAAAAAD8L/////////////////////AAAAAAAAAAAAAAAA AAAACrn/////////////////////JwAAAAAAAAAAAAAAAAAACrX/////////////////////cAAA AAAAAAAAAAAAAAAADbn/////////////////////4JyMcFVCMyYbFA8NDhIaJr////////////// ///////////////55NjSzszLzM/W4Pz///////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////r07zj////////////////////////////////0qmFZUgs EgGF////////////////////////////8atxPA8AAAAAAABP4P/////////////////////////V fzUAAAAAAAAAAAAfsv///////////////////////+N1HQAAAAAAAAAAAAAAif////////////// /////////5AjAAAAAAAAAAAAAAAAZ///////////////////////1UMAAAAAAAAAAAAAAAAASPb/ ////////////////////igAAAAAAAAAAAAAAAAAALt3/////////////////////OAAAAAAAAAAA AAAAAAAAF8j///////////////////++AAAAAAAAAAAAAAAAAAAABLb///////////////////+c AAAAAAAAAAAAAAAAAAAAAKX///////////////////+6AAAAAAAAAAAAAAAAAAAAAJP///////// ///////////cAAAAAAAAAAAAAAAAAAAAAIL/////////////////////AAAAAAAAAAAAAAAAAAAA AHT/////////////////////EwAAAAAAAAAAAAAAAAAAAGj/////////////////////QgAAAAAA AAAAAAAAAAAAAGD/////////////////////egAAAAAAAAAAAAAAAAAAAF3///////////////// ////0QAAAAAAAAAAAAAAAAAAAGH//////////////////////yQAAAAAAAAAAAAAAAAAAGb///// /////////////////8msmYl9dnFsaWdmZ2tweoz///////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////ixaqReWF3/////////////////////////////92m d1AsDAAAAAAxxP/////////////////////////gkk4TAAAAAAAAAAAAj/////////////////// /////9JwHQAAAAAAAAAAAAAAYP//////////////////////7m8PAAAAAAAAAAAAAAAAN+L///// ////////////////lhwAAAAAAAAAAAAAAAAAFMD/////////////////////QAAAAAAAAAAAAAAA AAAAAKP///////////////////+uAAAAAAAAAAAAAAAAAAAAAIn///////////////////+eAAAA AAAAAAAAAAAAAAAAAHL///////////////////+8AAAAAAAAAAAAAAAAAAAAAF////////////// ///////aAAAAAAAAAAAAAAAAAAAAAE3////////////////////6AAAAAAAAAAAAAAAAAAAAADv/ ////////////////////DgAAAAAAAAAAAAAAAAAAACr5////////////////////MwAAAAAAAAAA AAAAAAAAABvp////////////////////XgAAAAAAAAAAAAAAAAAAAA/b//////////////////// jwAAAAAAAAAAAAAAAAAAAAbQ////////////////////0AAAAAAAAAAAAAAAAAAAAADK//////// /////////////ysAAAAAAAAAAAAAAAAAAADI/////////////////////4AAAAAAAAAAAAAAAAAA AADL//////////////////////cWAQUFAwEAAAAAAAEGDRjL///////////////////////86+HY z8zNz9DS1Nfc4ur///////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////8drG///////////////////////////////xxqOEaE0yGAAVq/////////////////////// ////uXxGGAAAAAAAAAAAcf///////////////////////9d8LwAAAAAAAAAAAAAAO+P///////// ////////////32QJAAAAAAAAAAAAAAAADLX/////////////////////dAMAAAAAAAAAAAAAAAAA AI3////////////////////FFQAAAAAAAAAAAAAAAAAAAGr///////////////////+ZAAAAAAAA AAAAAAAAAAAAAEv///////////////////+2AAAAAAAAAAAAAAAAAAAAADD9//////////////// ///XAAAAAAAAAAAAAAAAAAAAABnn///////////////////2AAAAAAAAAAAAAAAAAAAAAAXT//// ////////////////DgAAAAAAAAAAAAAAAAAAAADB////////////////////LwAAAAAAAAAAAAAA AAAAAACv////////////////////UgAAAAAAAAAAAAAAAAAAAACe////////////////////eQAA AAAAAAAAAAAAAAAAAACO////////////////////pQAAAAAAAAAAAAAAAAAAAACA//////////// ////////2AAAAAAAAAAAAAAAAAAAAAB0/////////////////////zYAAAAAAAAAAAAAAAAAAABt /////////////////////3wAAAAAAAAAAAAAAAAAAABp/////////////////////9cNAAAAAAAA AAAAAAAAAABo//////////////////////9wAAAAAAAAAAAAAAAAAABh//////////////////// ////UDxGTlRZXWFkaGxwdn6J//////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////v1buji3Nalf//////////////////////////+L+OZEEhBQAAAAAAUvz///////////// //////////edVhgAAAAAAAAAAAAAF8H/////////////////////5WwWAAAAAAAAAAAAAAAAAI3/ ////////////////////YwAAAAAAAAAAAAAAAAAAAF7///////////////////+dAAAAAAAAAAAA AAAAAAAAADX8//////////////////+hAAAAAAAAAAAAAAAAAAAAABHZ///////////////////K AAAAAAAAAAAAAAAAAAAAAAC7///////////////////uAAAAAAAAAAAAAAAAAAAAAACh//////// ////////////DAAAAAAAAAAAAAAAAAAAAACK////////////////////LQAAAAAAAAAAAAAAAAAA AAB2////////////////////TQAAAAAAAAAAAAAAAAAAAABk////////////////////bwAAAAAA AAAAAAAAAAAAAABS////////////////////lAAAAAAAAAAAAAAAAAAAAABA//////////////// ////vAAAAAAAAAAAAAAAAAAAAAAw////////////////////6g4AAAAAAAAAAAAAAAAAAAAi//// /////////////////0QAAAAAAAAAAAAAAAAAAAAV/////////////////////4EAAAAAAAAAAAAA AAAAAAAL9f///////////////////8gLAAAAAAAAAAAAAAAAAAAC7P////////////////////9e AAAAAAAAAAAAAAAAAAAA5f/////////////////////JHAAAAAAAAAAAAAAAAAAA2v////////// ////////////nQEAAAAAAAAAAAAABw4Xxf///////////////////////9W5vMHHztXb4ebt9Pv/ //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////jfz/////////////////// ///////////sxqWIbVQ7IQcAMt7////////////////////////XklkpAAAAAAAAAAAAAKD///// /////////////////4k2AAAAAAAAAAAAAAAAAGf/////////////////////ZgAAAAAAAAAAAAAA AAAAADL2//////////////////+VAAAAAAAAAAAAAAAAAAAAAAPI//////////////////+nAAAA AAAAAAAAAAAAAAAAAACg///////////////////XAAAAAAAAAAAAAAAAAAAAAAB8//////////// ////////AAAAAAAAAAAAAAAAAAAAAABe////////////////////JQAAAAAAAAAAAAAAAAAAAABD ////////////////////SAAAAAAAAAAAAAAAAAAAAAAs////////////////////agAAAAAAAAAA AAAAAAAAAAAY////////////////////iwAAAAAAAAAAAAAAAAAAAAAF8/////////////////// rwAAAAAAAAAAAAAAAAAAAAAA4f//////////////////1QAAAAAAAAAAAAAAAAAAAAAAz/////// /////////////yQAAAAAAAAAAAAAAAAAAAAAvv///////////////////1QAAAAAAAAAAAAAAAAA AAAArv///////////////////4sAAAAAAAAAAAAAAAAAAAAAn////////////////////8sOAAAA AAAAAAAAAAAAAAAAkv////////////////////9XAAAAAAAAAAAAAAAAAAAAhv////////////// //////+qCgAAAAAAAAAAAAAAAAAAef//////////////////////bQAAAAAAAAAAAAAAAAAAZv// ////////////////////91UAAAAAAAAAAAAAAAAARf////////////////////////9qIys1P0pV YGp1foeRnP////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////6M+2nYNpTrn///////// ////////////////7LKDXDodAgAAAAAAAHv//////////////////////8VtKQAAAAAAAAAAAAAA AED/////////////////////gxsAAAAAAAAAAAAAAAAAAAfL//////////////////+SAAAAAAAA AAAAAAAAAAAAAACY//////////////////+kAAAAAAAAAAAAAAAAAAAAAABq//////////////// ///dAAAAAAAAAAAAAAAAAAAAAABB////////////////////DgAAAAAAAAAAAAAAAAAAAAAd//// ////////////////OQAAAAAAAAAAAAAAAAAAAAAA6P//////////////////YAAAAAAAAAAAAAAA AAAAAAAAzv//////////////////hQAAAAAAAAAAAAAAAAAAAAAAt///////////////////qAAA AAAAAAAAAAAAAAAAAAAAo///////////////////ywAAAAAAAAAAAAAAAAAAAAAAkP////////// ////////7xYAAAAAAAAAAAAAAAAAAAAAff///////////////////z4AAAAAAAAAAAAAAAAAAAAA bP///////////////////2kAAAAAAAAAAAAAAAAAAAAAWv///////////////////5kAAAAAAAAA AAAAAAAAAAAASf///////////////////9IWAAAAAAAAAAAAAAAAAAAAOf////////////////// //9YAAAAAAAAAAAAAAAAAAAAKf////////////////////+iAAAAAAAAAAAAAAAAAAAAGf////// ///////////////1VgAAAAAAAAAAAAAAAAAABP//////////////////////uy8AAAAAAAAAAAAA AAAAAPj//////////////////////6spAAAAAAAAAAAAAAAAAM/////////////////////////J RwAAAAAHEyAuPlJohO3///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////01cn////////////////////////////60rCSd11CKAwAAEr/ ///////////////////////FfUUXAAAAAAAAAAAAABHY////////////////////xFAAAAAAAAAA AAAAAAAAAACf//////////////////+iDAAAAAAAAAAAAAAAAAAAAABo//////////////////+U AAAAAAAAAAAAAAAAAAAAAAA2///////////////////aAAAAAAAAAAAAAAAAAAAAAAAH7P////// ////////////FQAAAAAAAAAAAAAAAAAAAAAAxP//////////////////SAAAAAAAAAAAAAAAAAAA AAAAov//////////////////dQAAAAAAAAAAAAAAAAAAAAAAg///////////////////nQAAAAAA AAAAAAAAAAAAAAAAaf//////////////////wwAAAAAAAAAAAAAAAAAAAAAAUv////////////// ////5w8AAAAAAAAAAAAAAAAAAAAAPv///////////////////zMAAAAAAAAAAAAAAAAAAAAAK/// /////////////////1gAAAAAAAAAAAAAAAAAAAAAGP///////////////////4EAAAAAAAAAAAAA AAAAAAAABf///////////////////6wAAAAAAAAAAAAAAAAAAAAAAP///////////////////94i AAAAAAAAAAAAAAAAAAAAAPL///////////////////9cAAAAAAAAAAAAAAAAAAAAAN////////// //////////+fAAAAAAAAAAAAAAAAAAAAAMz////////////////////oSgAAAAAAAAAAAAAAAAAA ALf/////////////////////oBYAAAAAAAAAAAAAAAAAAJz//////////////////////3oCAAAA AAAAAAAAAAAAAHf///////////////////////96CwAAAAAAAAAAAAAABUz///////////////// ////////oldodICNnKu80Of///////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////7eP//////////////////////////9Kjelg6KSMc Fg4GAACf/////////////////////6xSDgAAAAAAAAAAAAAAAABp///////////////////kQwAA AAAAAAAAAAAAAAAAAAA0//////////////////95AAAAAAAAAAAAAAAAAAAAAAAA4/////////// ///////NAAAAAAAAAAAAAAAAAAAAAAAAsv//////////////////EwAAAAAAAAAAAAAAAAAAAAAA hf//////////////////TwAAAAAAAAAAAAAAAAAAAAAAXf//////////////////gwAAAAAAAAAA AAAAAAAAAAAAOv//////////////////sgAAAAAAAAAAAAAAAAAAAAAAHP////////////////// 2wMAAAAAAAAAAAAAAAAAAAAAAv///////////////////yoAAAAAAAAAAAAAAAAAAAAAAPv///// /////////////08AAAAAAAAAAAAAAAAAAAAAAOf//////////////////3QAAAAAAAAAAAAAAAAA AAAAANT//////////////////5sAAAAAAAAAAAAAAAAAAAAAAMD//////////////////8QHAAAA AAAAAAAAAAAAAAAAAK3///////////////////AzAAAAAAAAAAAAAAAAAAAAAJr///////////// //////9nAAAAAAAAAAAAAAAAAAAAAIb///////////////////+jAAAAAAAAAAAAAAAAAAAAAHL/ ///////////////////jRAAAAAAAAAAAAAAAAAAAAFz/////////////////////kQYAAAAAAAAA AAAAAAAAAEH/////////////////////618AAAAAAAAAAAAAAAAAAB3///////////////////// /8pLAAAAAAAAAAAAAAAAAAD////////////////////////LVwAADBgkMT9OYHSLp8f///////// /////////////////9fn8v////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////+vU zcfCvrq3s7Ctqail////////////////////3X5TPzAjGREJAgAAAAAAAAAA2/////////////// //92AAAAAAAAAAAAAAAAAAAAAAAAp/////////////////+6AAAAAAAAAAAAAAAAAAAAAAAAdf// ////////////////BwAAAAAAAAAAAAAAAAAAAAAARv//////////////////TgAAAAAAAAAAAAAA AAAAAAAAGv//////////////////jAAAAAAAAAAAAAAAAAAAAAAAAP3/////////////////wQAA AAAAAAAAAAAAAAAAAAAAANv/////////////////8RkAAAAAAAAAAAAAAAAAAAAAAL7///////// /////////0QAAAAAAAAAAAAAAAAAAAAAAKT//////////////////2sAAAAAAAAAAAAAAAAAAAAA AI3//////////////////5EAAAAAAAAAAAAAAAAAAAAAAHn//////////////////7cAAAAAAAAA AAAAAAAAAAAAAGb//////////////////94hAAAAAAAAAAAAAAAAAAAAAFP///////////////// //9KAAAAAAAAAAAAAAAAAAAAAD////////////////////93AAAAAAAAAAAAAAAAAAAAACv///// //////////////+sCgAAAAAAAAAAAAAAAAAAABb////////////////////nRQAAAAAAAAAAAAAA AAAAAAD/////////////////////igAAAAAAAAAAAAAAAAAAAAD/////////////////////1k0A AAAAAAAAAAAAAAAAAAD9/////////////////////6cuAAAAAAAAAAAAAAAAAADV//////////// //////////+YKgAAAAAAAAAABhgtRWDg////////////////////////qGN0gY+cq7vN4vr///// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////+fLt6mdlY6JhIB8eHRwbGhlkP////// //////////+8akgtGQoAAAAAAAAAAAAAAAAAMf//////////////////AAAAAAAAAAAAAAAAAAAA AAAAA///////////////////QgAAAAAAAAAAAAAAAAAAAAAAANz/////////////////jgAAAAAA AAAAAAAAAAAAAAAAALL/////////////////zgAAAAAAAAAAAAAAAAAAAAAAAI3///////////// /////ykAAAAAAAAAAAAAAAAAAAAAAGv//////////////////1oAAAAAAAAAAAAAAAAAAAAAAE7/ /////////////////4YAAAAAAAAAAAAAAAAAAAAAADT//////////////////64AAAAAAAAAAAAA AAAAAAAAAB7//////////////////9QXAAAAAAAAAAAAAAAAAAAAAAr///////////////////o9 AAAAAAAAAAAAAAAAAAAAAAD///////////////////9lAAAAAAAAAAAAAAAAAAAAAAD///////// //////////+OAAAAAAAAAAAAAAAAAAAAAAD///////////////////+8GQAAAAAAAAAAAAAAAAAA AADv///////////////////xTgAAAAAAAAAAAAAAAAAAAADY////////////////////iwAAAAAA AAAAAAAAAAAAAAC/////////////////////zEMAAAAAAAAAAAAAAAAAAACh//////////////// /////5EZAAAAAAAAAAAAAAAAAAB6//////////////////////J0CgAAAAAAAAAAAAAAABFf//// ///////////////////odBMfLDhFU2JyhZu00vX//////////////////////////9fo9P////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////+/fz8e7s6+vs 8f//////////////////2bKZh3ltZF1WUUtGQTw4Mi0oI8T/////////////////SyULAAAAAAAA AAAAAAAAAAAAAJL/////////////////iAAAAAAAAAAAAAAAAAAAAAAAAGb///////////////// 1wAAAAAAAAAAAAAAAAAAAAAAAD3//////////////////zMAAAAAAAAAAAAAAAAAAAAAABj///// /////////////2wAAAAAAAAAAAAAAAAAAAAAAAD//////////////////50AAAAAAAAAAAAAAAAA AAAAAAD//////////////////8kMAAAAAAAAAAAAAAAAAAAAAAD2//////////////////E1AAAA AAAAAAAAAAAAAAAAAADf//////////////////9bAAAAAAAAAAAAAAAAAAAAAADL//////////// //////+CAAAAAAAAAAAAAAAAAAAAAAC3//////////////////+pBgAAAAAAAAAAAAAAAAAAAACj ///////////////////TLwAAAAAAAAAAAAAAAAAAAACN////////////////////XgAAAAAAAAAA AAAAAAAAAAB3////////////////////kwcAAAAAAAAAAAAAAAAAAABe//////////////////// zUMAAAAAAAAAAAAAAAAAAABA/////////////////////4cQAAAAAAAAAAAAAAAAAAAc//////// /////////////9heAAAAAAAAAAAAAAAAAAAA//////////////////////+/TgAAAAAADhwsPlJq hqXI////////////////////////wnyMmqe2xdbo/f////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////7uHXz8nDvrq2sa2pp6amp67/////////////////voZt W0xANy8oIhwWEAsEAAAAABT/////////////////1wUAAAAAAAAAAAAAAAAAAAAAAAD///////// /////////zQAAAAAAAAAAAAAAAAAAAAAAAD2/////////////////3YAAAAAAAAAAAAAAAAAAAAA AADS/////////////////7AAAAAAAAAAAAAAAAAAAAAAAACy/////////////////+EkAAAAAAAA AAAAAAAAAAAAAACW//////////////////9RAAAAAAAAAAAAAAAAAAAAAAB8//////////////// //95AAAAAAAAAAAAAAAAAAAAAABm//////////////////+gAAAAAAAAAAAAAAAAAAAAAABR//// ///////////////HIwAAAAAAAAAAAAAAAAAAAAA8///////////////////uSwAAAAAAAAAAAAAA AAAAAAAn////////////////////dAAAAAAAAAAAAAAAAAAAAAAQ////////////////////oxYA AAAAAAAAAAAAAAAAAAAA////////////////////2EwAAAAAAAAAAAAAAAAAAAAA//////////// /////////4gPAAAAAAAAAAAAAAAAAAAA/////////////////////8tTAAAAAAAAAAAAAAAAAAAA //////////////////////+lOAAAAAAAAAAACR00TmuM////////////////////////mTlDUV9u fY6gtcvl/////////////////////////////+v5//////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////+vMuayhmZGLhoF8eHRwa2hmZmjx/////////////////2FFMiMYDgYAAAAAAAAAAAAAAACe /////////////////34AAAAAAAAAAAAAAAAAAAAAAAB1/////////////////8MAAAAAAAAAAAAA AAAAAAAAAABS//////////////////s3AAAAAAAAAAAAAAAAAAAAAAAy//////////////////9q AAAAAAAAAAAAAAAAAAAAAAAW//////////////////+WAAAAAAAAAAAAAAAAAAAAAAAA//////// //////////+/GwAAAAAAAAAAAAAAAAAAAAAA///////////////////mQgAAAAAAAAAAAAAAAAAA AAAA////////////////////aQAAAAAAAAAAAAAAAAAAAAAA////////////////////kAIAAAAA AAAAAAAAAAAAAAAA////////////////////uSwAAAAAAAAAAAAAAAAAAAAA9P////////////// ////6FwAAAAAAAAAAAAAAAAAAAAA2f///////////////////5EYAAAAAAAAAAAAAAAAAAAAvP// /////////////////8pTAAAAAAAAAAAAAAAAAAAAnf////////////////////+YLgAAAAAAAAAA AAAQKUZmxP/////////////////////ufx0MGig3RldpfpWvzO7///////////////////////// 56CqucjY6fz///////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////99fDr5uLf29jU0tHQ0tfg/////////////////86einxxaWFbVlFMSEM+ OjYyLy4x/////////////////9IlEQMAAAAAAAAAAAAAAAAAAAAA//////////////////9CAAAA AAAAAAAAAAAAAAAAAAAA//////////////////99AAAAAAAAAAAAAAAAAAAAAAAA//////////// //////+wCwAAAAAAAAAAAAAAAAAAAAAA9v/////////////////dOQAAAAAAAAAAAAAAAAAAAAAA 3P//////////////////YgAAAAAAAAAAAAAAAAAAAAAAxf//////////////////iQAAAAAAAAAA AAAAAAAAAAAAr///////////////////ryIAAAAAAAAAAAAAAAAAAAAAmf////////////////// 1kgAAAAAAAAAAAAAAAAAAAAAgv///////////////////3IAAAAAAAAAAAAAAAAAAAAAaf////// /////////////6EoAAAAAAAAAAAAAAAAAAAATv///////////////////9NcAAAAAAAAAAAAAAAA AAAAM/////////////////////+WLgAAAAAAAAAAAAAAFTJSd//////////////////////gchMA AAEPHy9CWHCLqMjs////////////////////////ym9ufo6esMPY7/////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////54NLIwLq1 sKyopaKfnZubnKCn//////////////////+CZFZLQzw2MCsnIh0YEw4JBAAA1P////////////// //+SAAAAAAAAAAAAAAAAAAAAAAAArf/////////////////MHgAAAAAAAAAAAAAAAAAAAAAAi/// ///////////////7UgAAAAAAAAAAAAAAAAAAAAAAbf//////////////////gAAAAAAAAAAAAAAA AAAAAAAAUf//////////////////qRsAAAAAAAAAAAAAAAAAAAAAOv//////////////////0EIA AAAAAAAAAAAAAAAAAAAAI///////////////////9WgAAAAAAAAAAAAAAAAAAAAADP////////// /////////48UAAAAAAAAAAAAAAAAAAAAAP///////////////////7g+AAAAAAAAAAAAAAAAAAAA AP///////////////////+VtAwAAAAAAAAAAAAAAAAAAAP////////////////////+fNwAAAAAA AAAAAAAAEC9QdP/////////////////////dchQAAAAABhcqQVp1lLba//////////////////// ////vFhEVGR1hpqvyOP//////////////////////////////9LN4fH///////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////z7+vv9///////////////////////uuaidlo+KhoJ/e3h2dHJzdXh/kP////// ///////////rTzowKCEbFRALBwIAAAAAAAAAI///////////////////aQAAAAAAAAAAAAAAAAAA AAAAAP//////////////////mwoAAAAAAAAAAAAAAAAAAAAAAP//////////////////yDkAAAAA AAAAAAAAAAAAAAAAAP//////////////////8GMAAAAAAAAAAAAAAAAAAAAAAP////////////// /////4oOAAAAAAAAAAAAAAAAAAAAAP///////////////////7A0AAAAAAAAAAAAAAAAAAAAAP// /////////////////9VbAAAAAAAAAAAAAAAAAAAAAP////////////////////+FGgAAAAAAAAAA AAAAAAAAA+z///////////////////+xSQAAAAAAAAAAAAAAGDldgf/////////////////////l ex4AAAAAAAwhOFJvj7PZ////////////////////////u1gpOUlabICXsM3t//////////////// /////////////7OetMXX6/////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////rv5+Hc2dbU0tDQ0NHT2eDr 9///////////////////uIp+d3FsaGRhXltZWFdXWV5lcf//////////////////vzEfFhAKBQAA AAAAAAAAAAAAAP//////////////////7VYAAAAAAAAAAAAAAAAAAAAAAOj///////////////// /4IEAAAAAAAAAAAAAAAAAAAAAMz//////////////////6svAAAAAAAAAAAAAAAAAAAAALP///// /////////////9JXAAAAAAAAAAAAAAAAAAAAAJv///////////////////d8EAAAAAAAAAAAAAAA AAAAAIX///////////////////+iNwAAAAAAAAAAAAAAAAAFK5T////////////////////LYQIA AAAAAAAAAAAMLFB2ntH////////////////////1jTAAAAAAAA0jO1d2mb7l//////////////// ////////w2MYKjtMX3SNp8bn/////////////////////////////6h/lqi70Of///////////// ///////////////////////9//////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////iERBJQ0NfUFJPRklMRQAKCv////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////93Oxb+8uba0s7GysrW5wMnV 4////////////////////5dsZF5ZVVFPTEpIR0ZIS1BZZqH//////////////////6cmDgcCAAAA AAAAAAAAAAAAAFb//////////////////85QAAAAAAAAAAAAAAAAAAAAADr///////////////// //R5CwAAAAAAAAAAAAAAAAAAACH///////////////////+fMgAAAAAAAAAAAAAAAAAAAA7///// ///////////////EWAAAAAAAAAAAAAAAAAgxWoT////////////////////pfx8AAAAAAAAAAAYn S3Gawun/////////////////////p0kAAAAAAhcvSmiKrtX8////////////////////////03Ue JjhKXnWPq8vv/////////////////////////////65yhZiswtv2//////////////////////// ///////////f7/////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////+/sqqmo6Ggn5+ho6astMDN3ez///////////////////+K WlNPS0hGRENCQUJDR05ZaX3///////////////////+eLgYAAAAAAAAAAAAAAAAAAAD///////// ///////////DVgAAAAAAAAAAAAAAAAAAFUH////////////////////nexoAAAAAAAAAAAAACTRg i7T/////////////////////nz8AAAAAAAAABCVKcZnC6///////////////////////xmYPAAAA EypEYoOnzfX/////////////////////////6441Kz5RaIGdvN7///////////////////////// /////752f5Spwdz5///////////////////////////////////S2PP///////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////by8O/v7/Hz+P3///////////////////// ///////4sJ+al5aWlpibn6SstsLR4e7////////////////////+jlBKR0VERERFRkdLUVpog6n/ ////////////////////pkEBAAAAAAAAAAAHNmOPuuH/////////////////////xmUKAAAAAAAE J0xznMTs////////////////////////5YgvAAATKkRigqbM9P////////////////////////// /6tQNkphe5a01vr//////////////////////////////9KHfJixy+n///////////////////// ///////////////Uzu3///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////+3l4+Pk5ujt8fn//////////////////////////////bGUkpKVmZ2jqbK8 0O3//////////////////////////51TR0lNUVZgc4qv1vz//////////////////////////7JW ABo1UG2LrtL3/////////////////////////////81vPl97mbfX+f////////////////////// /////////+6fg6bC4f/////////////////////////////////////jzuv///////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////AAAA/+ELF2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfv u78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0i YWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5 OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6 ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1 cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLz48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVp ZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDov L25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMTEtMTAtMTNUMTI6MTk6 MjIuMTcwPC94bXA6Q3JlYXRlRGF0ZT48L3JkZjpEZXNjcmlwdGlvbj48cmRmOkRlc2NyaXB0aW9u IHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHht bG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PGRjOmNyZWF0b3I+PHJk ZjpTZXEgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgt bnMjIj48cmRmOmxpPnVzZXI8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9y ZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSd3Jz8+/9sA QwACAQECAQECAgICAgICAgMFAwMDAwMGBAQDBQcGBwcHBgcHCAkLCQgICggHBwoNCgoLDAwMDAcJ Dg8NDA4LDAwM/9sAQwECAgIDAwMGAwMGDAgHCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgBDAKKAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAA AAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQy gZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVm Z2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS 09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYH CAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw FWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5 eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj 5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A/dj4sfFnw98Dfh9qPijxTqdvo+haSivc3MuS FLOqIiqoLPI7sqJGgLO7qqglgK+ONf8A+CzOpvqsp8P/AAZ1O60kgeTLq/iO3068c4Gd8EcU6oM5 xiViVAJCk7Rtf8FqppR8KvhLZiSVbTUPiHDHdQBz5V0qaTqcyLIvRwssUUgDZw8SMMFQR8hx2xY8 CvociyWji6cq1dvR2SXonrp5nDjMXKk1GK8z6YH/AAWR8Wnp8FLb/wALdP8A5Dp3/D5Dxd/0RK0/ 8LeP/wCRK+akscde3oKkXT89q97/AFZwXn9//AOF5lV8j6S/4fIeLv8AoiVp/wCFvH/8iUD/AILG +L26fBKz/wDC3T/5Dr51XShnH9KkTSgPUUv9WsF5/f8A8AX9pVPI+h/+Hw/i0/8ANFLT/wALdP8A 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 zBw5HO2l72tFR3su19j/2Q== ------=_NextPart_000_022A_01CCAACB.675DB820-- From arenaud@sgi.com Sat Nov 26 09:01:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAQF1t7J133140 for ; Sat, 26 Nov 2011 09:01:55 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id 472538F8033 for ; Sat, 26 Nov 2011 07:01:52 -0800 (PST) Received: from arenaud-laptop (cf-vpn-hw-arenaud-5.corp.sgi.com [134.15.95.102]) by estes.americas.sgi.com (Postfix) with ESMTP id 11A3A7000753 for ; Sat, 26 Nov 2011 09:01:52 -0600 (CST) Received: by arenaud-laptop (Postfix, from userid 13680) id 42E549F79B; Sat, 26 Nov 2011 10:01:49 -0500 (EST) From: Alain Renaud To: xfs@oss.sgi.com Date: Sat, 26 Nov 2011 09:15:25 -0500 Subject: [PATCH] xfstest: Change test output to specify 4TB not 2TB Message-Id: <20111126150149.42E549F79B@arenaud-laptop> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a simple modification to the test 259. The script test 4TB Filesystem but state that it is testing 2TB filesystem. This modification simply change the the output message. Signed-off-by: Alain Renaud --- 259 | 2 +- 259.out | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/259 b/259 index 02938a5..d260b79 100755 --- a/259 +++ b/259 @@ -51,7 +51,7 @@ testfile=$TEST_DIR/259.image four_TB=$(_math "2^42") for del in 1 512 1024 1025 2048 4096; do ddseek=$(_math "$four_TB - $del") - echo "Trying to make (2 TB - $del) B long xfs fs image" + echo "Trying to make (4 TB - $del) B long xfs fs image" rm -f "$testfile" dd if=/dev/zero "of=$testfile" bs=1 count=0 seek=$ddseek \ >/dev/null 2>&1 || echo "dd failed" diff --git a/259.out b/259.out index 4620082..263bb1b 100644 --- a/259.out +++ b/259.out @@ -1,7 +1,7 @@ QA output created by 259 -Trying to make (2 TB - 1) B long xfs fs image -Trying to make (2 TB - 512) B long xfs fs image -Trying to make (2 TB - 1024) B long xfs fs image -Trying to make (2 TB - 1025) B long xfs fs image -Trying to make (2 TB - 2048) B long xfs fs image -Trying to make (2 TB - 4096) B long xfs fs image +Trying to make (4 TB - 1) B long xfs fs image +Trying to make (4 TB - 512) B long xfs fs image +Trying to make (4 TB - 1024) B long xfs fs image +Trying to make (4 TB - 1025) B long xfs fs image +Trying to make (4 TB - 2048) B long xfs fs image +Trying to make (4 TB - 4096) B long xfs fs image -- 1.7.4.1 From david@fromorbit.com Sat Nov 26 19:06:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAR16nUU151457 for ; Sat, 26 Nov 2011 19:06:50 -0600 X-ASG-Debug-ID: 1322356007-606301b70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail04.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B17B919D1B66 for ; Sat, 26 Nov 2011 17:06:47 -0800 (PST) Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id xjq77MrS6xA4vLkH for ; Sat, 26 Nov 2011 17:06:47 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtQCAAeM0U55LGY5gWdsb2JhbABEqwEjAQEWJiWBcgEBBTocIxAIAw4KLhQlAyETvS8Sg02HAwSUSZIg Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail04.adl6.internode.on.net with ESMTP; 27 Nov 2011 11:36:45 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RUTCd-0000lF-I0; Sun, 27 Nov 2011 12:06:43 +1100 Date: Sun, 27 Nov 2011 12:06:43 +1100 From: Dave Chinner To: Carlos Maiolino Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Subject: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Message-ID: <20111127010643.GU2386@dastard> References: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> <20111124195042.GA3671@andromeda.usersys.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111124195042.GA3671@andromeda.usersys.redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1322356008 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2683 1.0000 -0.4890 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.49 X-Barracuda-Spam-Status: No, SCORE=-0.49 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81401 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Nov 24, 2011 at 05:50:42PM -0200, Carlos Maiolino wrote: > On Thu, Nov 24, 2011 at 05:20:51PM -0200, Carlos Maiolino wrote: > > xfsprogs (mainly mkfs) is using the logical sector size of a volume to initialize > > the filesystem, which, even in devices using Advanced Format, it can get a 512 > > bytes sector size if it is set as the logical sector size. > > This patch changes the ioctl to get the physical sector size, independent of the > > logical size. > > > > Just as information, this patch proposal does not change the behaviour of mkfs in case the > user is using libblkid, which in case, mkfs will take advantage of libblkid to retrieve disk > topology and information. > I'm not sure if libblkid is the best way to retrieve the device sector's size here, since > this does not provide a way to retrive the physical sector size, only the logical size, but > I can be very wrong. If libblkid exports the PBS (physical block size) as exposed in /sys/block//queue/physical_block_size, then we should be able to get it. However, the issue in my mind is not whether it is supported, but what is the effect of making this change? The filesystem relies on the fact that the minimum guaranteed unit of atomic IO is a sector, not the PBS of the underlying disk. What guarantees do we have when do a PBS sized IO is doesn't get torn into sector sized IOs by the drive and hence only partitially completed on failure? Indeed, if the filesystem is sector unaligned, it is -guaranteed- to have PBS sized IOs torn apart by the hardware.... i.e. do we have any guarantee at all that a PBS sized IO will either wholly complete or wholly fail when PBS != sector size? And if not, why is this a change we should make given it appears to me to violate a fundamental assumption of the filesystem design? Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Sun Nov 27 17:05:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pARN5Teu198203 for ; Sun, 27 Nov 2011 17:05:30 -0600 X-ASG-Debug-ID: 1322435128-70d8034d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 043364FA7B7 for ; Sun, 27 Nov 2011 15:05:28 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id k11xHEbnzu4jSHVu for ; Sun, 27 Nov 2011 15:05:28 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id A5E1749637C4; Sun, 27 Nov 2011 17:05:26 -0600 (CST) Message-ID: <4ED2C233.8010104@sandeen.net> Date: Sun, 27 Nov 2011 17:05:23 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: Dave Chinner CC: Carlos Maiolino , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Subject: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size References: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> <20111124195042.GA3671@andromeda.usersys.redhat.com> <20111127010643.GU2386@dastard> In-Reply-To: <20111127010643.GU2386@dastard> X-Enigmail-Version: 1.3.3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1322435129 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0204 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81487 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/26/11 7:06 PM, Dave Chinner wrote: > On Thu, Nov 24, 2011 at 05:50:42PM -0200, Carlos Maiolino wrote: >> On Thu, Nov 24, 2011 at 05:20:51PM -0200, Carlos Maiolino wrote: >>> xfsprogs (mainly mkfs) is using the logical sector size of a volume to initialize >>> the filesystem, which, even in devices using Advanced Format, it can get a 512 >>> bytes sector size if it is set as the logical sector size. >>> This patch changes the ioctl to get the physical sector size, independent of the >>> logical size. >>> >> >> Just as information, this patch proposal does not change the behaviour of mkfs in case the >> user is using libblkid, which in case, mkfs will take advantage of libblkid to retrieve disk >> topology and information. >> I'm not sure if libblkid is the best way to retrieve the device sector's size here, since >> this does not provide a way to retrive the physical sector size, only the logical size, but >> I can be very wrong. > > If libblkid exports the PBS (physical block size) as exposed in > /sys/block//queue/physical_block_size, then we should be able > to get it. > > However, the issue in my mind is not whether it is supported, but > what is the effect of making this change? The filesystem relies on > the fact that the minimum guaranteed unit of atomic IO is a sector, > not the PBS of the underlying disk. What guarantees do we have when > do a PBS sized IO is doesn't get torn into sector sized IOs by the > drive and hence only partitially completed on failure? Indeed, if > the filesystem is sector unaligned, it is -guaranteed- to have PBS > sized IOs torn apart by the hardware.... > > i.e. do we have any guarantee at all that a PBS sized IO will either > wholly complete or wholly fail when PBS != sector size? And if not, > why is this a change we should make given it appears to me to > violate a fundamental assumption of the filesystem design? I had the expectation that physical block size WAS the fundamental/atomic IO size for the disk, and anything smaller required read/modify/write. So I made this suggestion (and I think hch concurred) so that we weren't doing log IOs which required RMW & translation. i.e. for a 4k physical / 512 logical disk - wouldn't we want to choose 4k sectors? Ok, if we have mismanaged the alignment and aligned to logical, not physical, then I guess there would be an issue... but at that point we've already messed up (though not catastrophically I guess)... -Eric > Cheers, > > Dave. From david@fromorbit.com Sun Nov 27 17:50:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pARNox3m200574 for ; Sun, 27 Nov 2011 17:50:59 -0600 X-ASG-Debug-ID: 1322437854-314a02260000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 52FA61D32D9A for ; Sun, 27 Nov 2011 15:50:55 -0800 (PST) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id w5j2iuvfr1EypX6n for ; Sun, 27 Nov 2011 15:50:55 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtsDAFzJ0k55LGY5gWdsb2JhbABEqwcjAQEWJiWBcgEBBAE6HCMFCwgDGC4UJQMhE4gFtEsSg02HAwSUSZIg Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail05.adl6.internode.on.net with ESMTP; 28 Nov 2011 10:20:52 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RUoUl-0001oe-I5; Mon, 28 Nov 2011 10:50:51 +1100 Date: Mon, 28 Nov 2011 10:50:51 +1100 From: Dave Chinner To: Eric Sandeen Cc: Carlos Maiolino , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Subject: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Message-ID: <20111127235051.GX2386@dastard> References: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> <20111124195042.GA3671@andromeda.usersys.redhat.com> <20111127010643.GU2386@dastard> <4ED2C233.8010104@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4ED2C233.8010104@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1322437856 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0045 1.0000 -1.9915 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.99 X-Barracuda-Spam-Status: No, SCORE=-1.99 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81491 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Nov 27, 2011 at 05:05:23PM -0600, Eric Sandeen wrote: > On 11/26/11 7:06 PM, Dave Chinner wrote: > > On Thu, Nov 24, 2011 at 05:50:42PM -0200, Carlos Maiolino wrote: > >> On Thu, Nov 24, 2011 at 05:20:51PM -0200, Carlos Maiolino wrote: > >>> xfsprogs (mainly mkfs) is using the logical sector size of a volume to initialize > >>> the filesystem, which, even in devices using Advanced Format, it can get a 512 > >>> bytes sector size if it is set as the logical sector size. > >>> This patch changes the ioctl to get the physical sector size, independent of the > >>> logical size. > >>> > >> > >> Just as information, this patch proposal does not change the behaviour of mkfs in case the > >> user is using libblkid, which in case, mkfs will take advantage of libblkid to retrieve disk > >> topology and information. > >> I'm not sure if libblkid is the best way to retrieve the device sector's size here, since > >> this does not provide a way to retrive the physical sector size, only the logical size, but > >> I can be very wrong. > > > > If libblkid exports the PBS (physical block size) as exposed in > > /sys/block//queue/physical_block_size, then we should be able > > to get it. > > > > However, the issue in my mind is not whether it is supported, but > > what is the effect of making this change? The filesystem relies on > > the fact that the minimum guaranteed unit of atomic IO is a sector, > > not the PBS of the underlying disk. What guarantees do we have when > > do a PBS sized IO is doesn't get torn into sector sized IOs by the > > drive and hence only partitially completed on failure? Indeed, if > > the filesystem is sector unaligned, it is -guaranteed- to have PBS > > sized IOs torn apart by the hardware.... > > > > i.e. do we have any guarantee at all that a PBS sized IO will either > > wholly complete or wholly fail when PBS != sector size? And if not, > > why is this a change we should make given it appears to me to > > violate a fundamental assumption of the filesystem design? > > I had the expectation that physical block size WAS the fundamental/atomic > IO size for the disk, and anything smaller required read/modify/write. > So I made this suggestion (and I think hch concurred) so that we weren't > doing log IOs which required RMW & translation. A RMW cycle does not mean the IO is not atomic. The write to disk will still be atomic, regardless of the read that ovvurred before. > i.e. for a 4k physical / 512 logical disk - wouldn't we want to choose > 4k sectors? > > Ok, if we have mismanaged the alignment and aligned to logical, not > physical, then I guess there would be an issue... but at that point > we've already messed up (though not catastrophically I guess)... That's where I'm concerned - if alignment is screwed because the FS is 512B sector aligned (because something read the logical sector size), then using a 4k sector will result in torn writes because every 4k sector write is potentially made up of 2 4k write IOs, not 1. That's my concern - using the logical 512b sector size is -always- safe, but using the 4k physical block size is only safe if everything under the filesystem has detected and used the physical block size of the disk for alignment and sector sizes... Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 01:55:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS7sx2R224323 for ; Mon, 28 Nov 2011 01:55:00 -0600 X-ASG-Debug-ID: 1322466897-6a1f02000000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D9B3816E1D5C for ; Sun, 27 Nov 2011 23:54:57 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id XZ9lJ5EjsSGCmFdE for ; Sun, 27 Nov 2011 23:54:57 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUw39-0001aG-TC; Mon, 28 Nov 2011 07:54:51 +0000 Date: Mon, 28 Nov 2011 02:54:51 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Dave Chinner , Carlos Maiolino , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Subject: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Message-ID: <20111128075451.GA6000@infradead.org> References: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> <20111124195042.GA3671@andromeda.usersys.redhat.com> <20111127010643.GU2386@dastard> <4ED2C233.8010104@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4ED2C233.8010104@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322466897 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81520 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Nov 27, 2011 at 05:05:23PM -0600, Eric Sandeen wrote: > > i.e. do we have any guarantee at all that a PBS sized IO will either > > wholly complete or wholly fail when PBS != sector size? And if not, > > why is this a change we should make given it appears to me to > > violate a fundamental assumption of the filesystem design? > > I had the expectation that physical block size WAS the fundamental/atomic > IO size for the disk, and anything smaller required read/modify/write. > So I made this suggestion (and I think hch concurred) so that we weren't > doing log IOs which required RMW & translation. Yes, that is how it is defined. From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 01:56:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS7una1224394 for ; Mon, 28 Nov 2011 01:56:49 -0600 X-ASG-Debug-ID: 1322467008-1f4d03480000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 34A6D27B1C2 for ; Sun, 27 Nov 2011 23:56:48 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id n7uEP2RgVXZLVAI4 for ; Sun, 27 Nov 2011 23:56:48 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUw51-0002SC-1B; Mon, 28 Nov 2011 07:56:47 +0000 Date: Mon, 28 Nov 2011 02:56:47 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Eric Sandeen , Carlos Maiolino , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Subject: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Message-ID: <20111128075646.GB6000@infradead.org> References: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> <20111124195042.GA3671@andromeda.usersys.redhat.com> <20111127010643.GU2386@dastard> <4ED2C233.8010104@sandeen.net> <20111127235051.GX2386@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111127235051.GX2386@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322467009 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81521 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 28, 2011 at 10:50:51AM +1100, Dave Chinner wrote: > > I had the expectation that physical block size WAS the fundamental/atomic > > IO size for the disk, and anything smaller required read/modify/write. > > So I made this suggestion (and I think hch concurred) so that we weren't > > doing log IOs which required RMW & translation. > > A RMW cycle does not mean the IO is not atomic. The write to disk > will still be atomic, regardless of the read that ovvurred before. I would not trust ATA disk to get this right generally. > > Ok, if we have mismanaged the alignment and aligned to logical, not > > physical, then I guess there would be an issue... but at that point > > we've already messed up (though not catastrophically I guess)... > > That's where I'm concerned - if alignment is screwed because the FS > is 512B sector aligned (because something read the logical sector size), > then using a 4k sector will result in torn writes because every 4k > sector write is potentially made up of 2 4k write IOs, not 1. Disks that implement the ATA level required to tell us about the physical blocksize also have the alignment offset information in the IDENTIFY data to tell us about aligned shifts. But I haven't seen a single one with a non-zero aligned offset in the wild. From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:19:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8JQWb225223 for ; Mon, 28 Nov 2011 02:19:26 -0600 X-ASG-Debug-ID: 1322468365-1dd701ae0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2ACF04FADD6 for ; Mon, 28 Nov 2011 00:19:26 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id AZ8xDXEr7RvFFQlF for ; Mon, 28 Nov 2011 00:19:26 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwQv-00077c-Ln for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:19:25 +0000 Message-Id: <20111128081925.630748714@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:17:34 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/4] xfs: validate acl count Subject: [PATCH 2/4] xfs: validate acl count References: <20111128081732.350228200@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-validate-acls X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468366 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81521 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This prevents in-memory corruption and possible panics if the on-disk ACL is badly corrupted. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_acl.c =================================================================== --- xfs.orig/fs/xfs/xfs_acl.c 2011-11-20 12:49:11.181244706 +0100 +++ xfs/fs/xfs/xfs_acl.c 2011-11-20 12:49:50.637697619 +0100 @@ -42,6 +42,8 @@ xfs_acl_from_disk(struct xfs_acl *aclp) int count, i; count = be32_to_cpu(aclp->acl_cnt); + if (count > XFS_ACL_MAX_ENTRIES) + return ERR_PTR(-EFSCORRUPTED); acl = posix_acl_alloc(count, GFP_KERNEL); if (!acl) From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:19:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8JRrS225227 for ; Mon, 28 Nov 2011 02:19:27 -0600 X-ASG-Debug-ID: 1322468365-1dd601a20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2602327AD4D for ; Mon, 28 Nov 2011 00:19:25 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id VDRdCGTEYrIAxQ1U for ; Mon, 28 Nov 2011 00:19:25 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwQv-000776-GH for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:19:25 +0000 Message-Id: <20111128081925.458494771@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:17:33 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/4] xfs: fix attr2 vs large data fork assert Subject: [PATCH 1/4] xfs: fix attr2 vs large data fork assert References: <20111128081732.350228200@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-fix-attr-oops X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468366 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81521 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean With Dmitrys fsstress updates I've seen very reproducible crashes in xfs_attr_shortform_remove because xfs_attr_shortform_bytesfit claims that the attributes would not fit inline into the inode after removing an attribute. It turns out that we were operating on an inode with lots of delalloc extents, and thus an if_bytes values for the data fork that is larger than biggest possible on-disk storage for it which utterly confuses the code near the end of xfs_attr_shortform_bytesfit. Fix this by always allowing the current attribute fork, like we already do for the attr1 format, given that delalloc conversion will take care for moving either the data or attribute area out of line if it doesn't fit at that point - or making the point moot by merging extents at this point. Also document the function better, and clean up some lose bits. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_attr_leaf.c =================================================================== --- xfs.orig/fs/xfs/xfs_attr_leaf.c 2011-11-04 16:31:32.244656675 +0100 +++ xfs/fs/xfs/xfs_attr_leaf.c 2011-11-05 09:01:32.613995075 +0100 @@ -110,6 +110,7 @@ xfs_attr_namesp_match(int arg_flags, int /* * Query whether the requested number of additional bytes of extended * attribute space will be able to fit inline. + * * Returns zero if not, else the di_forkoff fork offset to be used in the * literal area for attribute data once the new bytes have been added. * @@ -136,11 +137,26 @@ xfs_attr_shortform_bytesfit(xfs_inode_t return (offset >= minforkoff) ? minforkoff : 0; } - if (!(mp->m_flags & XFS_MOUNT_ATTR2)) { - if (bytes <= XFS_IFORK_ASIZE(dp)) - return dp->i_d.di_forkoff; + /* + * If the requested numbers of bytes is smaller or equal to the + * current attribute fork size we can always proceed. + * + * Note that if_bytes in the data fork might actually be larger than + * the current data fork size is due to delalloc extents. In that + * case either the extent count will go down when they are converted + * to ral extents, or the delalloc conversion will take care of the + * literal area rebalancing. + */ + if (bytes <= XFS_IFORK_ASIZE(dp)) + return dp->i_d.di_forkoff; + + /* + * For attr2 we can try to move the forkoff if there is space in the + * literal area, but for the old format we are done if there is no + * space in the fixes attribute fork. + */ + if (!(mp->m_flags & XFS_MOUNT_ATTR2)) return 0; - } dsize = dp->i_df.if_bytes; @@ -157,10 +173,9 @@ xfs_attr_shortform_bytesfit(xfs_inode_t xfs_default_attroffset(dp)) dsize = XFS_BMDR_SPACE_CALC(MINDBTPTRS); break; - case XFS_DINODE_FMT_BTREE: /* - * If have data btree then keep forkoff if we have one, + * If have a data btree then keep forkoff if we have one, * otherwise we are adding a new attr, so then we set * minforkoff to where the btree root can finish so we have * plenty of room for attrs @@ -168,10 +183,9 @@ xfs_attr_shortform_bytesfit(xfs_inode_t if (dp->i_d.di_forkoff) { if (offset < dp->i_d.di_forkoff) return 0; - else - return dp->i_d.di_forkoff; - } else - dsize = XFS_BMAP_BROOT_SPACE(dp->i_df.if_broot); + return dp->i_d.di_forkoff; + } + dsize = XFS_BMAP_BROOT_SPACE(dp->i_df.if_broot); break; } @@ -186,10 +200,10 @@ xfs_attr_shortform_bytesfit(xfs_inode_t maxforkoff = XFS_LITINO(mp) - XFS_BMDR_SPACE_CALC(MINABTPTRS); maxforkoff = maxforkoff >> 3; /* rounded down */ - if (offset >= minforkoff && offset < maxforkoff) - return offset; if (offset >= maxforkoff) return maxforkoff; + if (offset >= minforkoff) + return offset; return 0; } From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:19:27 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8JRuf225228 for ; Mon, 28 Nov 2011 02:19:27 -0600 X-ASG-Debug-ID: 1322468366-1f44038d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4E6AA4FADF6 for ; Mon, 28 Nov 2011 00:19:26 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id CLlQUG38QuQbZLAU for ; Mon, 28 Nov 2011 00:19:26 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwQv-000788-RE for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:19:25 +0000 Message-Id: <20111128081925.793935185@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:17:35 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/4] xfs: force buffer writeback before blocking on the ilock in inode reclaim Subject: [PATCH 3/4] xfs: force buffer writeback before blocking on the ilock in inode reclaim References: <20111128081732.350228200@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-fix-inode-reclaim-hang X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468366 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81521 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean If we are doing synchronous inode reclaim we block the VM from making progress in memory reclaim. So if we encouter a flush locked inode promote it in the delwri list and wake up xfsbufd to write it out now. Without this we can get hangs of up to 30 seconds during workloads hitting synchronous inode reclaim. The scheme is copied from what we do for dquot reclaims. Reported-by: Simon Kirby Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/xfs_sync.c 2011-11-20 12:48:36.664765032 +0100 +++ xfs/fs/xfs/xfs_sync.c 2011-11-20 13:51:55.594184465 +0100 @@ -770,6 +770,17 @@ restart: if (!xfs_iflock_nowait(ip)) { if (!(sync_mode & SYNC_WAIT)) goto out; + + /* + * If we only have a single dirty inode in a cluster there is + * a fair chance that the AIL push may have pushed it into + * the buffer, but xfsbufd won't touch it until 30 seconds + * from now, and thus we will lock up here. + * + * Promote the inode buffer to the front of the delwri list + * and wake up xfsbufd now. + */ + xfs_promote_inode(ip); xfs_iflock(ip); } Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2011-11-20 13:50:51.457865253 +0100 +++ xfs/fs/xfs/xfs_inode.c 2011-11-20 13:52:30.420662460 +0100 @@ -2835,6 +2835,27 @@ corrupt_out: return XFS_ERROR(EFSCORRUPTED); } +void +xfs_promote_inode( + struct xfs_inode *ip) +{ + struct xfs_buf *bp; + + ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)); + + bp = xfs_incore(ip->i_mount->m_ddev_targp, ip->i_imap.im_blkno, + ip->i_imap.im_len, XBF_TRYLOCK); + if (!bp) + return; + + if (XFS_BUF_ISDELAYWRITE(bp)) { + xfs_buf_delwri_promote(bp); + wake_up_process(ip->i_mount->m_ddev_targp->bt_task); + } + + xfs_buf_relse(bp); +} + /* * Return a pointer to the extent record at file index idx. */ Index: xfs/fs/xfs/xfs_inode.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode.h 2011-11-20 13:50:51.487865091 +0100 +++ xfs/fs/xfs/xfs_inode.h 2011-11-20 13:51:39.224273148 +0100 @@ -498,6 +498,7 @@ int xfs_iunlink(struct xfs_trans *, xfs void xfs_iext_realloc(xfs_inode_t *, int, int); void xfs_iunpin_wait(xfs_inode_t *); int xfs_iflush(xfs_inode_t *, uint); +void xfs_promote_inode(struct xfs_inode *); void xfs_lock_inodes(xfs_inode_t **, int, uint); void xfs_lock_two_inodes(xfs_inode_t *, xfs_inode_t *, uint); From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:19:29 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8JSaa225248 for ; Mon, 28 Nov 2011 02:19:29 -0600 X-ASG-Debug-ID: 1322468366-02ca01bb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 173C910487E0 for ; Mon, 28 Nov 2011 00:19:26 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id WudqZAWkebFbKuDk for ; Mon, 28 Nov 2011 00:19:26 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwQw-00078e-0q for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:19:26 +0000 Message-Id: <20111128081925.981681380@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:17:36 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/4] xfs: fix the logspace waiting algorithm Subject: [PATCH 4/4] xfs: fix the logspace waiting algorithm References: <20111128081732.350228200@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-fix-log-race X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468367 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81522 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Apply the scheme used in log_regrant_write_log_space to wake up any other threads waiting for log space before the newly added one to log_regrant_write_log_space as well, and factor the code into readable helpers. For each of the queues we have add two helpers: - one to try to wake up all waiting threads. This helper will also be usable by xfs_log_move_tail once we remove the current opportunistic wakeups in it. - one to sleep on t_wait until enough log space is available, loosely modelled after Linux waitqueues. And use them to reimplement the guts of log_regrant_write_log_space and log_regrant_write_log_space. These two function now use one and the same algorithm for waiting on log space instead of subtly different ones before, with an option to completely unify them in the near future. Also move the filesystem shutdown handling to the common caller given that we had to touch it anyway. Based on hard debugging and an earlier patch from Chandra Seetharaman . Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_log.c | 348 ++++++++++++++++++++++++++--------------------------- fs/xfs/xfs_trace.h | 12 - 2 files changed, 177 insertions(+), 183 deletions(-) Index: xfs/fs/xfs/xfs_log.c =================================================================== --- xfs.orig/fs/xfs/xfs_log.c 2011-11-20 16:29:49.356194023 +0100 +++ xfs/fs/xfs/xfs_log.c 2011-11-20 16:46:33.440754431 +0100 @@ -150,6 +150,117 @@ xlog_grant_add_space( } while (head_val != old); } +STATIC bool +xlog_reserveq_wake( + struct log *log, + int *free_bytes) +{ + struct xlog_ticket *tic; + int need_bytes; + + list_for_each_entry(tic, &log->l_reserveq, t_queue) { + if (tic->t_flags & XLOG_TIC_PERM_RESERV) + need_bytes = tic->t_unit_res * tic->t_cnt; + else + need_bytes = tic->t_unit_res; + + if (*free_bytes < need_bytes) + return false; + *free_bytes -= need_bytes; + + trace_xfs_log_grant_wake_up(log, tic); + wake_up(&tic->t_wait); + } + + return true; +} + +STATIC bool +xlog_writeq_wake( + struct log *log, + int *free_bytes) +{ + struct xlog_ticket *tic; + int need_bytes; + + list_for_each_entry(tic, &log->l_writeq, t_queue) { + ASSERT(tic->t_flags & XLOG_TIC_PERM_RESERV); + + need_bytes = tic->t_unit_res; + + if (*free_bytes < need_bytes) + return false; + *free_bytes -= need_bytes; + + trace_xfs_log_regrant_write_wake_up(log, tic); + wake_up(&tic->t_wait); + } + + return true; +} + +STATIC int +xlog_reserveq_wait( + struct log *log, + struct xlog_ticket *tic, + int need_bytes) +{ + list_add_tail(&tic->t_queue, &log->l_reserveq); + + do { + if (XLOG_FORCED_SHUTDOWN(log)) + goto shutdown; + xlog_grant_push_ail(log, need_bytes); + + XFS_STATS_INC(xs_sleep_logspace); + trace_xfs_log_grant_sleep(log, tic); + + xlog_wait(&tic->t_wait, &log->l_grant_reserve_lock); + trace_xfs_log_grant_wake(log, tic); + + spin_lock(&log->l_grant_reserve_lock); + if (XLOG_FORCED_SHUTDOWN(log)) + goto shutdown; + } while (xlog_space_left(log, &log->l_grant_reserve_head) < need_bytes); + + list_del_init(&tic->t_queue); + return 0; +shutdown: + list_del_init(&tic->t_queue); + return XFS_ERROR(EIO); +} + +STATIC int +xlog_writeq_wait( + struct log *log, + struct xlog_ticket *tic, + int need_bytes) +{ + list_add_tail(&tic->t_queue, &log->l_writeq); + + do { + if (XLOG_FORCED_SHUTDOWN(log)) + goto shutdown; + xlog_grant_push_ail(log, need_bytes); + + XFS_STATS_INC(xs_sleep_logspace); + trace_xfs_log_regrant_write_sleep(log, tic); + + xlog_wait(&tic->t_wait, &log->l_grant_write_lock); + trace_xfs_log_regrant_write_wake(log, tic); + + spin_lock(&log->l_grant_write_lock); + if (XLOG_FORCED_SHUTDOWN(log)) + goto shutdown; + } while (xlog_space_left(log, &log->l_grant_write_head) < need_bytes); + + list_del_init(&tic->t_queue); + return 0; +shutdown: + list_del_init(&tic->t_queue); + return XFS_ERROR(EIO); +} + static void xlog_tic_reset_res(xlog_ticket_t *tic) { @@ -350,8 +461,19 @@ xfs_log_reserve( retval = xlog_grant_log_space(log, internal_ticket); } + if (unlikely(retval)) { + /* + * If we are failing, make sure the ticket doesn't have any + * current reservations. We don't want to add this back + * when the ticket/ transaction gets cancelled. + */ + internal_ticket->t_curr_res = 0; + /* ungrant will give back unit_res * t_cnt. */ + internal_ticket->t_cnt = 0; + } + return retval; -} /* xfs_log_reserve */ +} /* @@ -2481,8 +2603,8 @@ restart: /* * Atomically get the log space required for a log ticket. * - * Once a ticket gets put onto the reserveq, it will only return after - * the needed reservation is satisfied. + * Once a ticket gets put onto the reserveq, it will only return after the + * needed reservation is satisfied. * * This function is structured so that it has a lock free fast path. This is * necessary because every new transaction reservation will come through this @@ -2490,113 +2612,53 @@ restart: * every pass. * * As tickets are only ever moved on and off the reserveq under the - * l_grant_reserve_lock, we only need to take that lock if we are going - * to add the ticket to the queue and sleep. We can avoid taking the lock if the - * ticket was never added to the reserveq because the t_queue list head will be - * empty and we hold the only reference to it so it can safely be checked - * unlocked. + * l_grant_reserve_lock, we only need to take that lock if we are going to add + * the ticket to the queue and sleep. We can avoid taking the lock if the ticket + * was never added to the reserveq because the t_queue list head will be empty + * and we hold the only reference to it so it can safely be checked unlocked. */ STATIC int -xlog_grant_log_space(xlog_t *log, - xlog_ticket_t *tic) +xlog_grant_log_space( + struct log *log, + struct xlog_ticket *tic) { - int free_bytes; - int need_bytes; + int free_bytes, need_bytes; + int error = 0; -#ifdef DEBUG - if (log->l_flags & XLOG_ACTIVE_RECOVERY) - panic("grant Recovery problem"); -#endif + ASSERT(!(log->l_flags & XLOG_ACTIVE_RECOVERY)); trace_xfs_log_grant_enter(log, tic); + /* + * If there are other waiters on the queue then give them a chance at + * logspace before us. Wake up the first waiters, if we do not wake + * up all the waiters then go to sleep waiting for more free space, + * otherwise try to get some space for this transaction. + */ need_bytes = tic->t_unit_res; if (tic->t_flags & XFS_LOG_PERM_RESERV) need_bytes *= tic->t_ocnt; - - /* something is already sleeping; insert new transaction at end */ - if (!list_empty_careful(&log->l_reserveq)) { - spin_lock(&log->l_grant_reserve_lock); - /* recheck the queue now we are locked */ - if (list_empty(&log->l_reserveq)) { - spin_unlock(&log->l_grant_reserve_lock); - goto redo; - } - list_add_tail(&tic->t_queue, &log->l_reserveq); - - trace_xfs_log_grant_sleep1(log, tic); - - /* - * Gotta check this before going to sleep, while we're - * holding the grant lock. - */ - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return; - - XFS_STATS_INC(xs_sleep_logspace); - xlog_wait(&tic->t_wait, &log->l_grant_reserve_lock); - - /* - * If we got an error, and the filesystem is shutting down, - * we'll catch it down below. So just continue... - */ - trace_xfs_log_grant_wake1(log, tic); - } - -redo: - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return_unlocked; - free_bytes = xlog_space_left(log, &log->l_grant_reserve_head); - if (free_bytes < need_bytes) { + if (!list_empty_careful(&log->l_reserveq)) { spin_lock(&log->l_grant_reserve_lock); - if (list_empty(&tic->t_queue)) - list_add_tail(&tic->t_queue, &log->l_reserveq); - - trace_xfs_log_grant_sleep2(log, tic); - - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return; - - xlog_grant_push_ail(log, need_bytes); - - XFS_STATS_INC(xs_sleep_logspace); - xlog_wait(&tic->t_wait, &log->l_grant_reserve_lock); - - trace_xfs_log_grant_wake2(log, tic); - goto redo; - } - - if (!list_empty(&tic->t_queue)) { + if (!xlog_reserveq_wake(log, &free_bytes) || + free_bytes < need_bytes) + error = xlog_reserveq_wait(log, tic, need_bytes); + spin_unlock(&log->l_grant_reserve_lock); + } else if (free_bytes < need_bytes) { spin_lock(&log->l_grant_reserve_lock); - list_del_init(&tic->t_queue); + error = xlog_reserveq_wait(log, tic, need_bytes); spin_unlock(&log->l_grant_reserve_lock); } + if (error) + return error; - /* we've got enough space */ xlog_grant_add_space(log, &log->l_grant_reserve_head, need_bytes); xlog_grant_add_space(log, &log->l_grant_write_head, need_bytes); trace_xfs_log_grant_exit(log, tic); xlog_verify_grant_tail(log); return 0; - -error_return_unlocked: - spin_lock(&log->l_grant_reserve_lock); -error_return: - list_del_init(&tic->t_queue); - spin_unlock(&log->l_grant_reserve_lock); - trace_xfs_log_grant_error(log, tic); - - /* - * If we are failing, make sure the ticket doesn't have any - * current reservations. We don't want to add this back when - * the ticket/transaction gets cancelled. - */ - tic->t_curr_res = 0; - tic->t_cnt = 0; /* ungrant will give back unit_res * t_cnt. */ - return XFS_ERROR(EIO); -} /* xlog_grant_log_space */ - +} /* * Replenish the byte reservation required by moving the grant write head. @@ -2605,10 +2667,12 @@ error_return: * free fast path. */ STATIC int -xlog_regrant_write_log_space(xlog_t *log, - xlog_ticket_t *tic) +xlog_regrant_write_log_space( + struct log *log, + struct xlog_ticket *tic) { - int free_bytes, need_bytes; + int free_bytes, need_bytes; + int error = 0; tic->t_curr_res = tic->t_unit_res; xlog_tic_reset_res(tic); @@ -2616,104 +2680,38 @@ xlog_regrant_write_log_space(xlog_t * if (tic->t_cnt > 0) return 0; -#ifdef DEBUG - if (log->l_flags & XLOG_ACTIVE_RECOVERY) - panic("regrant Recovery problem"); -#endif + ASSERT(!(log->l_flags & XLOG_ACTIVE_RECOVERY)); trace_xfs_log_regrant_write_enter(log, tic); - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return_unlocked; - /* If there are other waiters on the queue then give them a - * chance at logspace before us. Wake up the first waiters, - * if we do not wake up all the waiters then go to sleep waiting - * for more free space, otherwise try to get some space for - * this transaction. + /* + * If there are other waiters on the queue then give them a chance at + * logspace before us. Wake up the first waiters, if we do not wake + * up all the waiters then go to sleep waiting for more free space, + * otherwise try to get some space for this transaction. */ need_bytes = tic->t_unit_res; - if (!list_empty_careful(&log->l_writeq)) { - struct xlog_ticket *ntic; - - spin_lock(&log->l_grant_write_lock); - free_bytes = xlog_space_left(log, &log->l_grant_write_head); - list_for_each_entry(ntic, &log->l_writeq, t_queue) { - ASSERT(ntic->t_flags & XLOG_TIC_PERM_RESERV); - - if (free_bytes < ntic->t_unit_res) - break; - free_bytes -= ntic->t_unit_res; - wake_up(&ntic->t_wait); - } - - if (ntic != list_first_entry(&log->l_writeq, - struct xlog_ticket, t_queue)) { - if (list_empty(&tic->t_queue)) - list_add_tail(&tic->t_queue, &log->l_writeq); - trace_xfs_log_regrant_write_sleep1(log, tic); - - xlog_grant_push_ail(log, need_bytes); - - XFS_STATS_INC(xs_sleep_logspace); - xlog_wait(&tic->t_wait, &log->l_grant_write_lock); - trace_xfs_log_regrant_write_wake1(log, tic); - } else - spin_unlock(&log->l_grant_write_lock); - } - -redo: - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return_unlocked; - free_bytes = xlog_space_left(log, &log->l_grant_write_head); - if (free_bytes < need_bytes) { + if (!list_empty_careful(&log->l_writeq)) { spin_lock(&log->l_grant_write_lock); - if (list_empty(&tic->t_queue)) - list_add_tail(&tic->t_queue, &log->l_writeq); - - if (XLOG_FORCED_SHUTDOWN(log)) - goto error_return; - - xlog_grant_push_ail(log, need_bytes); - - XFS_STATS_INC(xs_sleep_logspace); - trace_xfs_log_regrant_write_sleep2(log, tic); - xlog_wait(&tic->t_wait, &log->l_grant_write_lock); - - trace_xfs_log_regrant_write_wake2(log, tic); - goto redo; - } - - if (!list_empty(&tic->t_queue)) { + if (!xlog_writeq_wake(log, &free_bytes) || + free_bytes < need_bytes) + error = xlog_writeq_wait(log, tic, need_bytes); + spin_unlock(&log->l_grant_write_lock); + } else if (free_bytes < need_bytes) { spin_lock(&log->l_grant_write_lock); - list_del_init(&tic->t_queue); + error = xlog_writeq_wait(log, tic, need_bytes); spin_unlock(&log->l_grant_write_lock); } - /* we've got enough space */ + if (error) + return error; + xlog_grant_add_space(log, &log->l_grant_write_head, need_bytes); trace_xfs_log_regrant_write_exit(log, tic); xlog_verify_grant_tail(log); return 0; - - - error_return_unlocked: - spin_lock(&log->l_grant_write_lock); - error_return: - list_del_init(&tic->t_queue); - spin_unlock(&log->l_grant_write_lock); - trace_xfs_log_regrant_write_error(log, tic); - - /* - * If we are failing, make sure the ticket doesn't have any - * current reservations. We don't want to add this back when - * the ticket/transaction gets cancelled. - */ - tic->t_curr_res = 0; - tic->t_cnt = 0; /* ungrant will give back unit_res * t_cnt. */ - return XFS_ERROR(EIO); -} /* xlog_regrant_write_log_space */ - +} /* The first cnt-1 times through here we don't need to * move the grant write head because the permanent Index: xfs/fs/xfs/xfs_trace.h =================================================================== --- xfs.orig/fs/xfs/xfs_trace.h 2011-11-20 16:29:49.362860654 +0100 +++ xfs/fs/xfs/xfs_trace.h 2011-11-20 16:34:23.954706395 +0100 @@ -834,18 +834,14 @@ DEFINE_LOGGRANT_EVENT(xfs_log_umount_wri DEFINE_LOGGRANT_EVENT(xfs_log_grant_enter); DEFINE_LOGGRANT_EVENT(xfs_log_grant_exit); DEFINE_LOGGRANT_EVENT(xfs_log_grant_error); -DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep1); -DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake1); -DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep2); -DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake2); +DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep); +DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake); DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake_up); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_enter); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_exit); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_error); -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_sleep1); -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake1); -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_sleep2); -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake2); +DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_sleep); +DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_write_wake_up); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_reserve_enter); DEFINE_LOGGRANT_EVENT(xfs_log_regrant_reserve_exit); From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:20:51 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8Kpsa225320 for ; Mon, 28 Nov 2011 02:20:51 -0600 X-ASG-Debug-ID: 1322468365-5c9b02a10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2F17319D339C for ; Mon, 28 Nov 2011 00:19:25 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id bZWSxICunqdU5Ggp for ; Mon, 28 Nov 2011 00:19:25 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwQv-00076S-A5 for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:19:25 +0000 Message-Id: <20111128081732.350228200@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:17:32 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/4] xfs fixes for Linux 3.2-rc3 Subject: [PATCH 0/4] xfs fixes for Linux 3.2-rc3 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468366 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0206 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean These are the patches that I think should still go into Linux 3.2. The first two are fairly trivial fixes for crashes that can be reproduced by users action or filesystem corruption. The third is a a fix for the hang reported by Simon, and although he hasn't tested the final variant yet I'm fairly confident it should fix it given we use the same pattern for dquots. The last one is the biggest and fixes the log space hang first reported by Alex and then debugged by Chandra. From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:25:58 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8PvZ2225711 for ; Mon, 28 Nov 2011 02:25:57 -0600 X-ASG-Debug-ID: 1322468756-1dcf01cb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 467E24FAA8B for ; Mon, 28 Nov 2011 00:25:57 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id pyO02m9h7lpxFDJC for ; Mon, 28 Nov 2011 00:25:57 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwXE-0000g3-Mk for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:25:56 +0000 Message-Id: <20111128082522.224645690@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:25:22 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/3] remove the deprecated nodelaylog options Subject: [PATCH 0/3] remove the deprecated nodelaylog options X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468757 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Let's start the Linux 3.3 window with the removal of the deprecated nodelay option and call code required for it. From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:25:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_63, J_CHICKENPOX_66 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8PwxY225719 for ; Mon, 28 Nov 2011 02:25:58 -0600 X-ASG-Debug-ID: 1322468757-1f4403a20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B9B974FAA8B for ; Mon, 28 Nov 2011 00:25:57 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id qSy3TC0VRAtMwvjS for ; Mon, 28 Nov 2011 00:25:57 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwXF-0000hC-49 for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:25:57 +0000 Message-Id: <20111128082557.082085349@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:25:24 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/3] xfs: cleanup the transaction commit path a bit Subject: [PATCH 2/3] xfs: cleanup the transaction commit path a bit References: <20111128082522.224645690@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-cleanup-trans-commit X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468757 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Now that the nodelaylog mode is gone we can simplify the transaction commit path a bit by removing the xfs_trans_commit_cil routine. Restoring the process flags is merged into xfs_trans_commit which already does it for the error path, and allocating the log vectors is merged into xlog_cil_format_items, which already fills them with data, thus avoiding one loop over all log items. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_log.h | 3 - fs/xfs/xfs_log_cil.c | 82 +++++++++++++++++++++++++++++++++++++-------------- fs/xfs/xfs_trans.c | 81 ++------------------------------------------------ 3 files changed, 66 insertions(+), 100 deletions(-) Index: xfs/fs/xfs/xfs_log_cil.c =================================================================== --- xfs.orig/fs/xfs/xfs_log_cil.c 2011-11-28 09:17:38.320029780 +0100 +++ xfs/fs/xfs/xfs_log_cil.c 2011-11-28 09:21:33.195424016 +0100 @@ -161,38 +161,75 @@ xlog_cil_init_post_recovery( * to the copied region inside the buffer we just allocated. This allows us to * format the regions into the iclog as though they are being formatted * directly out of the objects themselves. + * + * Note that this format differs from the old log vector format in that there + * is no transaction header in these log vectors. */ -static void -xlog_cil_format_items( - struct log *log, - struct xfs_log_vec *log_vector) +static struct xfs_log_vec * +xlog_cil_prepare_log_vecs( + struct xfs_trans *tp) { - struct xfs_log_vec *lv; + struct xfs_log_item_desc *lidp; + struct xfs_log_vec *lv = NULL; + struct xfs_log_vec *ret_lv = NULL; - ASSERT(log_vector); - for (lv = log_vector; lv; lv = lv->lv_next) { + + /* Bail out if we didn't find a log item. */ + if (list_empty(&tp->t_items)) { + ASSERT(0); + return NULL; + } + + list_for_each_entry(lidp, &tp->t_items, lid_trans) { + struct xfs_log_vec *new_lv; void *ptr; int index; int len = 0; + /* Skip items which aren't dirty in this transaction. */ + if (!(lidp->lid_flags & XFS_LID_DIRTY)) + continue; + + /* Skip items that do not have any vectors for writing */ + lidp->lid_size = IOP_SIZE(lidp->lid_item); + if (!lidp->lid_size) + continue; + + new_lv = kmem_zalloc(sizeof(*new_lv) + + lidp->lid_size * sizeof(struct xfs_log_iovec), + KM_SLEEP); + + /* The allocated iovec region lies beyond the log vector. */ + new_lv->lv_iovecp = (struct xfs_log_iovec *)&new_lv[1]; + new_lv->lv_niovecs = lidp->lid_size; + new_lv->lv_item = lidp->lid_item; + /* build the vector array and calculate it's length */ - IOP_FORMAT(lv->lv_item, lv->lv_iovecp); - for (index = 0; index < lv->lv_niovecs; index++) - len += lv->lv_iovecp[index].i_len; - - lv->lv_buf_len = len; - lv->lv_buf = kmem_alloc(lv->lv_buf_len, KM_SLEEP|KM_NOFS); - ptr = lv->lv_buf; + IOP_FORMAT(new_lv->lv_item, new_lv->lv_iovecp); + for (index = 0; index < new_lv->lv_niovecs; index++) + len += new_lv->lv_iovecp[index].i_len; + + new_lv->lv_buf_len = len; + new_lv->lv_buf = kmem_alloc(new_lv->lv_buf_len, KM_SLEEP|KM_NOFS); + ptr = new_lv->lv_buf; - for (index = 0; index < lv->lv_niovecs; index++) { - struct xfs_log_iovec *vec = &lv->lv_iovecp[index]; + for (index = 0; index < new_lv->lv_niovecs; index++) { + struct xfs_log_iovec *vec = &new_lv->lv_iovecp[index]; memcpy(ptr, vec->i_addr, vec->i_len); vec->i_addr = ptr; ptr += vec->i_len; } - ASSERT(ptr == lv->lv_buf + lv->lv_buf_len); + ASSERT(ptr == new_lv->lv_buf + new_lv->lv_buf_len); + + if (!ret_lv) + ret_lv = new_lv; + else + lv->lv_next = new_lv; + lv = new_lv; } + + return ret_lv; } /* @@ -625,28 +662,30 @@ out_abort: * background commit, returns without it held once background commits are * allowed again. */ -void +int xfs_log_commit_cil( struct xfs_mount *mp, struct xfs_trans *tp, - struct xfs_log_vec *log_vector, xfs_lsn_t *commit_lsn, int flags) { struct log *log = mp->m_log; int log_flags = 0; int push = 0; + struct xfs_log_vec *log_vector; if (flags & XFS_TRANS_RELEASE_LOG_RES) log_flags = XFS_LOG_REL_PERM_RESERV; /* - * do all the hard work of formatting items (including memory + * Do all the hard work of formatting items (including memory * allocation) outside the CIL context lock. This prevents stalling CIL * pushes when we are low on memory and a transaction commit spends a * lot of time in memory reclaim. */ - xlog_cil_format_items(log, log_vector); + log_vector = xlog_cil_prepare_log_vecs(tp); + if (!log_vector) + return ENOMEM; /* lock out background commit */ down_read(&log->l_cilp->xc_ctx_lock); @@ -699,6 +738,7 @@ xfs_log_commit_cil( */ if (push) xlog_cil_push(log, 0); + return 0; } /* Index: xfs/fs/xfs/xfs_trans.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans.c 2011-11-28 09:17:38.330029725 +0100 +++ xfs/fs/xfs/xfs_trans.c 2011-11-28 09:21:33.205423962 +0100 @@ -1325,82 +1325,6 @@ xfs_trans_committed_bulk( } /* - * Walk the log items and allocate log vector structures for - * each item large enough to fit all the vectors they require. - * Note that this format differs from the old log vector format in - * that there is no transaction header in these log vectors. - */ -STATIC struct xfs_log_vec * -xfs_trans_alloc_log_vecs( - xfs_trans_t *tp) -{ - struct xfs_log_item_desc *lidp; - struct xfs_log_vec *lv = NULL; - struct xfs_log_vec *ret_lv = NULL; - - - /* Bail out if we didn't find a log item. */ - if (list_empty(&tp->t_items)) { - ASSERT(0); - return NULL; - } - - list_for_each_entry(lidp, &tp->t_items, lid_trans) { - struct xfs_log_vec *new_lv; - - /* Skip items which aren't dirty in this transaction. */ - if (!(lidp->lid_flags & XFS_LID_DIRTY)) - continue; - - /* Skip items that do not have any vectors for writing */ - lidp->lid_size = IOP_SIZE(lidp->lid_item); - if (!lidp->lid_size) - continue; - - new_lv = kmem_zalloc(sizeof(*new_lv) + - lidp->lid_size * sizeof(struct xfs_log_iovec), - KM_SLEEP); - - /* The allocated iovec region lies beyond the log vector. */ - new_lv->lv_iovecp = (struct xfs_log_iovec *)&new_lv[1]; - new_lv->lv_niovecs = lidp->lid_size; - new_lv->lv_item = lidp->lid_item; - if (!ret_lv) - ret_lv = new_lv; - else - lv->lv_next = new_lv; - lv = new_lv; - } - - return ret_lv; -} - -static int -xfs_trans_commit_cil( - struct xfs_mount *mp, - struct xfs_trans *tp, - xfs_lsn_t *commit_lsn, - int flags) -{ - struct xfs_log_vec *log_vector; - - /* - * Get each log item to allocate a vector structure for - * the log item to to pass to the log write code. The - * CIL commit code will format the vector and save it away. - */ - log_vector = xfs_trans_alloc_log_vecs(tp); - if (!log_vector) - return ENOMEM; - - xfs_log_commit_cil(mp, tp, log_vector, commit_lsn, flags); - - current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS); - xfs_trans_free(tp); - return 0; -} - -/* * Commit the given transaction to the log. * * XFS disk error handling mechanism is not based on a typical @@ -1456,13 +1380,16 @@ xfs_trans_commit( xfs_trans_apply_sb_deltas(tp); xfs_trans_apply_dquot_deltas(tp); - error = xfs_trans_commit_cil(mp, tp, &commit_lsn, flags); + error = xfs_log_commit_cil(mp, tp, &commit_lsn, flags); if (error == ENOMEM) { xfs_force_shutdown(mp, SHUTDOWN_LOG_IO_ERROR); error = XFS_ERROR(EIO); goto out_unreserve; } + current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS); + xfs_trans_free(tp); + /* * If the transaction needs to be synchronous, then force the * log out now and wait for it. Index: xfs/fs/xfs/xfs_log.h =================================================================== --- xfs.orig/fs/xfs/xfs_log.h 2011-11-28 09:17:38.346696302 +0100 +++ xfs/fs/xfs/xfs_log.h 2011-11-28 09:17:45.893322084 +0100 @@ -184,8 +184,7 @@ void xlog_iodone(struct xfs_buf *); struct xlog_ticket *xfs_log_ticket_get(struct xlog_ticket *ticket); void xfs_log_ticket_put(struct xlog_ticket *ticket); -void xfs_log_commit_cil(struct xfs_mount *mp, struct xfs_trans *tp, - struct xfs_log_vec *log_vector, +int xfs_log_commit_cil(struct xfs_mount *mp, struct xfs_trans *tp, xfs_lsn_t *commit_lsn, int flags); bool xfs_log_item_in_current_chkpt(struct xfs_log_item *lip); From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:25:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_65, J_CHICKENPOX_66,LOCAL_GNU_PATCH autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8PxcO225721 for ; Mon, 28 Nov 2011 02:25:59 -0600 X-ASG-Debug-ID: 1322468757-685c02320000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DC9201D331E1 for ; Mon, 28 Nov 2011 00:25:57 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id J2QcoTzpsipeFw92 for ; Mon, 28 Nov 2011 00:25:57 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwXF-0000hi-AO for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:25:57 +0000 Message-Id: <20111128082557.282856287@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:25:25 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/3] xfs: remove the lid_size field in struct log_item_desc Subject: [PATCH 3/3] xfs: remove the lid_size field in struct log_item_desc References: <20111128082522.224645690@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-kill-lid_size X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468757 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Outside the now removed nodelaylog code this field is only used for asserts and can be safely removed now. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_dquot_item.c | 1 - fs/xfs/xfs_inode_item.c | 2 -- fs/xfs/xfs_log_cil.c | 9 +++++---- fs/xfs/xfs_trans.c | 1 - fs/xfs/xfs_trans.h | 3 +-- 5 files changed, 6 insertions(+), 10 deletions(-) Index: xfs/fs/xfs/xfs_dquot_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_dquot_item.c 2011-11-28 09:21:33.172090810 +0100 +++ xfs/fs/xfs/xfs_dquot_item.c 2011-11-28 09:21:40.595383928 +0100 @@ -73,7 +73,6 @@ xfs_qm_dquot_logitem_format( logvec->i_len = sizeof(xfs_disk_dquot_t); logvec->i_type = XLOG_REG_TYPE_DQUOT; - ASSERT(2 == lip->li_desc->lid_size); qlip->qli_format.qlf_size = 2; } Index: xfs/fs/xfs/xfs_inode_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode_item.c 2011-11-28 09:21:33.182090756 +0100 +++ xfs/fs/xfs/xfs_inode_item.c 2011-11-28 09:21:40.595383928 +0100 @@ -437,7 +437,6 @@ xfs_inode_item_format( * Assert that no attribute-related log flags are set. */ if (!XFS_IFORK_Q(ip)) { - ASSERT(nvecs == lip->li_desc->lid_size); iip->ili_format.ilf_size = nvecs; ASSERT(!(iip->ili_format.ilf_fields & (XFS_ILOG_ADATA | XFS_ILOG_ABROOT | XFS_ILOG_AEXT))); @@ -521,7 +520,6 @@ xfs_inode_item_format( break; } - ASSERT(nvecs == lip->li_desc->lid_size); iip->ili_format.ilf_size = nvecs; } Index: xfs/fs/xfs/xfs_log_cil.c =================================================================== --- xfs.orig/fs/xfs/xfs_log_cil.c 2011-11-28 09:21:33.195424016 +0100 +++ xfs/fs/xfs/xfs_log_cil.c 2011-11-28 09:21:40.595383928 +0100 @@ -185,23 +185,24 @@ xlog_cil_prepare_log_vecs( void *ptr; int index; int len = 0; + uint niovecs; /* Skip items which aren't dirty in this transaction. */ if (!(lidp->lid_flags & XFS_LID_DIRTY)) continue; /* Skip items that do not have any vectors for writing */ - lidp->lid_size = IOP_SIZE(lidp->lid_item); - if (!lidp->lid_size) + niovecs = IOP_SIZE(lidp->lid_item); + if (!niovecs) continue; new_lv = kmem_zalloc(sizeof(*new_lv) + - lidp->lid_size * sizeof(struct xfs_log_iovec), + niovecs * sizeof(struct xfs_log_iovec), KM_SLEEP); /* The allocated iovec region lies beyond the log vector. */ new_lv->lv_iovecp = (struct xfs_log_iovec *)&new_lv[1]; - new_lv->lv_niovecs = lidp->lid_size; + new_lv->lv_niovecs = niovecs; new_lv->lv_item = lidp->lid_item; /* build the vector array and calculate it's length */ Index: xfs/fs/xfs/xfs_trans.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans.c 2011-11-28 09:21:33.205423962 +0100 +++ xfs/fs/xfs/xfs_trans.c 2011-11-28 09:21:40.598717244 +0100 @@ -1158,7 +1158,6 @@ xfs_trans_add_item( lidp->lid_item = lip; lidp->lid_flags = 0; - lidp->lid_size = 0; list_add_tail(&lidp->lid_trans, &tp->t_items); lip->li_desc = lidp; Index: xfs/fs/xfs/xfs_trans.h =================================================================== --- xfs.orig/fs/xfs/xfs_trans.h 2011-11-28 09:21:33.222090538 +0100 +++ xfs/fs/xfs/xfs_trans.h 2011-11-28 09:21:40.598717244 +0100 @@ -163,9 +163,8 @@ typedef struct xfs_trans_header { */ struct xfs_log_item_desc { struct xfs_log_item *lid_item; - ushort lid_size; - unsigned char lid_flags; struct list_head lid_trans; + unsigned char lid_flags; }; #define XFS_LID_DIRTY 0x1 From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:26:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=BAYES_00, TVD_PH_BODY_ACCOUNTS_PRE autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8Q0kC225735 for ; Mon, 28 Nov 2011 02:26:00 -0600 X-ASG-Debug-ID: 1322468757-5cb802be0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9FCD01D2AE1C for ; Mon, 28 Nov 2011 00:25:57 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Q42nE1eo4CB8aWTV for ; Mon, 28 Nov 2011 00:25:57 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwXE-0000gg-TW for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:25:56 +0000 Message-Id: <20111128082556.867074573@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:25:23 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/3] xfs: remove the deprecated nodelaylog option Subject: [PATCH 1/3] xfs: remove the deprecated nodelaylog option References: <20111128082522.224645690@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-remove-nodelaylog X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468757 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The delaylog mode has been the default for a long time, and the nodelaylog option has been scheduled for removal in Linux 3.3. Remove it and code only used by it now that we have opened the 3.3 window. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_log.c | 79 ++-------- fs/xfs/xfs_log.h | 5 fs/xfs/xfs_log_cil.c | 12 - fs/xfs/xfs_mount.h | 1 fs/xfs/xfs_super.c | 15 - fs/xfs/xfs_trans.c | 395 --------------------------------------------------- 6 files changed, 25 insertions(+), 482 deletions(-) Index: xfs/fs/xfs/xfs_log.c =================================================================== --- xfs.orig/fs/xfs/xfs_log.c 2011-11-28 09:13:10.671479755 +0100 +++ xfs/fs/xfs/xfs_log.c 2011-11-28 09:16:21.330446868 +0100 @@ -760,38 +760,6 @@ xfs_log_item_init( INIT_LIST_HEAD(&item->li_cil); } -/* - * Write region vectors to log. The write happens using the space reservation - * of the ticket (tic). It is not a requirement that all writes for a given - * transaction occur with one call to xfs_log_write(). However, it is important - * to note that the transaction reservation code makes an assumption about the - * number of log headers a transaction requires that may be violated if you - * don't pass all the transaction vectors in one call.... - */ -int -xfs_log_write( - struct xfs_mount *mp, - struct xfs_log_iovec reg[], - int nentries, - struct xlog_ticket *tic, - xfs_lsn_t *start_lsn) -{ - struct log *log = mp->m_log; - int error; - struct xfs_log_vec vec = { - .lv_niovecs = nentries, - .lv_iovecp = reg, - }; - - if (XLOG_FORCED_SHUTDOWN(log)) - return XFS_ERROR(EIO); - - error = xlog_write(log, &vec, tic, start_lsn, NULL, 0); - if (error) - xfs_force_shutdown(mp, SHUTDOWN_LOG_IO_ERROR); - return error; -} - void xfs_log_move_tail(xfs_mount_t *mp, xfs_lsn_t tail_lsn) @@ -1685,7 +1653,7 @@ xlog_print_tic_res( }; xfs_warn(mp, - "xfs_log_write: reservation summary:\n" + "xlog_write: reservation summary:\n" " trans type = %s (%u)\n" " unit res = %d bytes\n" " current res = %d bytes\n" @@ -1714,7 +1682,7 @@ xlog_print_tic_res( } xfs_alert_tag(mp, XFS_PTAG_LOGRES, - "xfs_log_write: reservation ran out. Need to up reservation"); + "xlog_write: reservation ran out. Need to up reservation"); xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE); } @@ -1968,23 +1936,21 @@ xlog_write( *start_lsn = 0; len = xlog_write_calc_vec_length(ticket, log_vector); - if (log->l_cilp) { - /* - * Region headers and bytes are already accounted for. - * We only need to take into account start records and - * split regions in this function. - */ - if (ticket->t_flags & XLOG_TIC_INITED) - ticket->t_curr_res -= sizeof(xlog_op_header_t); - /* - * Commit record headers need to be accounted for. These - * come in as separate writes so are easy to detect. - */ - if (flags & (XLOG_COMMIT_TRANS | XLOG_UNMOUNT_TRANS)) - ticket->t_curr_res -= sizeof(xlog_op_header_t); - } else - ticket->t_curr_res -= len; + /* + * Region headers and bytes are already accounted for. + * We only need to take into account start records and + * split regions in this function. + */ + if (ticket->t_flags & XLOG_TIC_INITED) + ticket->t_curr_res -= sizeof(xlog_op_header_t); + + /* + * Commit record headers need to be accounted for. These + * come in as separate writes so are easy to detect. + */ + if (flags & (XLOG_COMMIT_TRANS | XLOG_UNMOUNT_TRANS)) + ticket->t_curr_res -= sizeof(xlog_op_header_t); if (ticket->t_curr_res < 0) xlog_print_tic_res(log->l_mp, ticket); @@ -2931,8 +2897,7 @@ _xfs_log_force( XFS_STATS_INC(xs_log_force); - if (log->l_cilp) - xlog_cil_force(log); + xlog_cil_force(log); spin_lock(&log->l_icloglock); @@ -3081,11 +3046,9 @@ _xfs_log_force_lsn( XFS_STATS_INC(xs_log_force); - if (log->l_cilp) { - lsn = xlog_cil_force_lsn(log, lsn); - if (lsn == NULLCOMMITLSN) - return 0; - } + lsn = xlog_cil_force_lsn(log, lsn); + if (lsn == NULLCOMMITLSN) + return 0; try_again: spin_lock(&log->l_icloglock); @@ -3653,7 +3616,7 @@ xfs_log_force_umount( * completed transactions are flushed to disk with the xfs_log_force() * call below. */ - if (!logerror && (mp->m_flags & XFS_MOUNT_DELAYLOG)) + if (!logerror) xlog_cil_force(log); /* Index: xfs/fs/xfs/xfs_log_cil.c =================================================================== --- xfs.orig/fs/xfs/xfs_log_cil.c 2011-11-28 09:13:10.684813018 +0100 +++ xfs/fs/xfs/xfs_log_cil.c 2011-11-28 09:17:38.320029780 +0100 @@ -44,10 +44,6 @@ xlog_cil_init( struct xfs_cil *cil; struct xfs_cil_ctx *ctx; - log->l_cilp = NULL; - if (!(log->l_mp->m_flags & XFS_MOUNT_DELAYLOG)) - return 0; - cil = kmem_zalloc(sizeof(*cil), KM_SLEEP|KM_MAYFAIL); if (!cil) return ENOMEM; @@ -80,9 +76,6 @@ void xlog_cil_destroy( struct log *log) { - if (!log->l_cilp) - return; - if (log->l_cilp->xc_ctx) { if (log->l_cilp->xc_ctx->ticket) xfs_log_ticket_put(log->l_cilp->xc_ctx->ticket); @@ -137,9 +130,6 @@ void xlog_cil_init_post_recovery( struct log *log) { - if (!log->l_cilp) - return; - log->l_cilp->xc_ctx->ticket = xlog_cil_ticket_alloc(log); log->l_cilp->xc_ctx->sequence = 1; log->l_cilp->xc_ctx->commit_lsn = xlog_assign_lsn(log->l_curr_cycle, @@ -786,8 +776,6 @@ xfs_log_item_in_current_chkpt( { struct xfs_cil_ctx *ctx; - if (!(lip->li_mountp->m_flags & XFS_MOUNT_DELAYLOG)) - return false; if (list_empty(&lip->li_cil)) return false; Index: xfs/fs/xfs/xfs_mount.h =================================================================== --- xfs.orig/fs/xfs/xfs_mount.h 2011-11-28 09:13:10.694812963 +0100 +++ xfs/fs/xfs/xfs_mount.h 2011-11-28 09:16:21.333780183 +0100 @@ -219,7 +219,6 @@ typedef struct xfs_mount { #define XFS_MOUNT_WSYNC (1ULL << 0) /* for nfs - all metadata ops must be synchronous except for space allocations */ -#define XFS_MOUNT_DELAYLOG (1ULL << 1) /* delayed logging is enabled */ #define XFS_MOUNT_WAS_CLEAN (1ULL << 3) #define XFS_MOUNT_FS_SHUTDOWN (1ULL << 4) /* atomic stop of all filesystem operations, typically for Index: xfs/fs/xfs/xfs_super.c =================================================================== --- xfs.orig/fs/xfs/xfs_super.c 2011-11-28 09:13:10.708146223 +0100 +++ xfs/fs/xfs/xfs_super.c 2011-11-28 09:16:21.333780183 +0100 @@ -199,7 +199,6 @@ xfs_parseargs( mp->m_flags |= XFS_MOUNT_BARRIER; mp->m_flags |= XFS_MOUNT_COMPAT_IOSIZE; mp->m_flags |= XFS_MOUNT_SMALL_INUMS; - mp->m_flags |= XFS_MOUNT_DELAYLOG; /* * These can be overridden by the mount option parsing. @@ -353,11 +352,11 @@ xfs_parseargs( mp->m_qflags |= (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE); mp->m_qflags &= ~XFS_OQUOTA_ENFD; } else if (!strcmp(this_char, MNTOPT_DELAYLOG)) { - mp->m_flags |= XFS_MOUNT_DELAYLOG; + xfs_warn(mp, + "delaylog is the default now, option is deprecated."); } else if (!strcmp(this_char, MNTOPT_NODELAYLOG)) { - mp->m_flags &= ~XFS_MOUNT_DELAYLOG; xfs_warn(mp, - "nodelaylog is deprecated and will be removed in Linux 3.3"); + "nodelaylog support has been removed, option is deprecated."); } else if (!strcmp(this_char, MNTOPT_DISCARD)) { mp->m_flags |= XFS_MOUNT_DISCARD; } else if (!strcmp(this_char, MNTOPT_NODISCARD)) { @@ -395,13 +394,6 @@ xfs_parseargs( return EINVAL; } - if ((mp->m_flags & XFS_MOUNT_DISCARD) && - !(mp->m_flags & XFS_MOUNT_DELAYLOG)) { - xfs_warn(mp, - "the discard option is incompatible with the nodelaylog option"); - return EINVAL; - } - #ifndef CONFIG_XFS_QUOTA if (XFS_IS_QUOTA_RUNNING(mp)) { xfs_warn(mp, "quota support not available in this kernel."); @@ -501,7 +493,6 @@ xfs_showargs( { XFS_MOUNT_ATTR2, "," MNTOPT_ATTR2 }, { XFS_MOUNT_FILESTREAMS, "," MNTOPT_FILESTREAM }, { XFS_MOUNT_GRPID, "," MNTOPT_GRPID }, - { XFS_MOUNT_DELAYLOG, "," MNTOPT_DELAYLOG }, { XFS_MOUNT_DISCARD, "," MNTOPT_DISCARD }, { 0, NULL } }; Index: xfs/fs/xfs/xfs_log.h =================================================================== --- xfs.orig/fs/xfs/xfs_log.h 2011-11-28 09:13:10.718146170 +0100 +++ xfs/fs/xfs/xfs_log.h 2011-11-28 09:17:38.346696302 +0100 @@ -174,11 +174,6 @@ int xfs_log_reserve(struct xfs_mount * __uint8_t clientid, uint flags, uint t_type); -int xfs_log_write(struct xfs_mount *mp, - xfs_log_iovec_t region[], - int nentries, - struct xlog_ticket *ticket, - xfs_lsn_t *start_lsn); int xfs_log_unmount_write(struct xfs_mount *mp); void xfs_log_unmount(struct xfs_mount *mp); int xfs_log_force_umount(struct xfs_mount *mp, int logerror); Index: xfs/fs/xfs/xfs_trans.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans.c 2011-11-28 09:13:10.734812746 +0100 +++ xfs/fs/xfs/xfs_trans.c 2011-11-28 09:17:38.330029725 +0100 @@ -1210,219 +1210,6 @@ xfs_trans_free_items( } } -/* - * Unlock the items associated with a transaction. - * - * Items which were not logged should be freed. Those which were logged must - * still be tracked so they can be unpinned when the transaction commits. - */ -STATIC void -xfs_trans_unlock_items( - struct xfs_trans *tp, - xfs_lsn_t commit_lsn) -{ - struct xfs_log_item_desc *lidp, *next; - - list_for_each_entry_safe(lidp, next, &tp->t_items, lid_trans) { - struct xfs_log_item *lip = lidp->lid_item; - - lip->li_desc = NULL; - - if (commit_lsn != NULLCOMMITLSN) - IOP_COMMITTING(lip, commit_lsn); - IOP_UNLOCK(lip); - - /* - * Free the descriptor if the item is not dirty - * within this transaction. - */ - if (!(lidp->lid_flags & XFS_LID_DIRTY)) - xfs_trans_free_item_desc(lidp); - } -} - -/* - * Total up the number of log iovecs needed to commit this - * transaction. The transaction itself needs one for the - * transaction header. Ask each dirty item in turn how many - * it needs to get the total. - */ -static uint -xfs_trans_count_vecs( - struct xfs_trans *tp) -{ - int nvecs; - struct xfs_log_item_desc *lidp; - - nvecs = 1; - - /* In the non-debug case we need to start bailing out if we - * didn't find a log_item here, return zero and let trans_commit - * deal with it. - */ - if (list_empty(&tp->t_items)) { - ASSERT(0); - return 0; - } - - list_for_each_entry(lidp, &tp->t_items, lid_trans) { - /* - * Skip items which aren't dirty in this transaction. - */ - if (!(lidp->lid_flags & XFS_LID_DIRTY)) - continue; - lidp->lid_size = IOP_SIZE(lidp->lid_item); - nvecs += lidp->lid_size; - } - - return nvecs; -} - -/* - * Fill in the vector with pointers to data to be logged - * by this transaction. The transaction header takes - * the first vector, and then each dirty item takes the - * number of vectors it indicated it needed in xfs_trans_count_vecs(). - * - * As each item fills in the entries it needs, also pin the item - * so that it cannot be flushed out until the log write completes. - */ -static void -xfs_trans_fill_vecs( - struct xfs_trans *tp, - struct xfs_log_iovec *log_vector) -{ - struct xfs_log_item_desc *lidp; - struct xfs_log_iovec *vecp; - uint nitems; - - /* - * Skip over the entry for the transaction header, we'll - * fill that in at the end. - */ - vecp = log_vector + 1; - - nitems = 0; - ASSERT(!list_empty(&tp->t_items)); - list_for_each_entry(lidp, &tp->t_items, lid_trans) { - /* Skip items which aren't dirty in this transaction. */ - if (!(lidp->lid_flags & XFS_LID_DIRTY)) - continue; - - /* - * The item may be marked dirty but not log anything. This can - * be used to get called when a transaction is committed. - */ - if (lidp->lid_size) - nitems++; - IOP_FORMAT(lidp->lid_item, vecp); - vecp += lidp->lid_size; - IOP_PIN(lidp->lid_item); - } - - /* - * Now that we've counted the number of items in this transaction, fill - * in the transaction header. Note that the transaction header does not - * have a log item. - */ - tp->t_header.th_magic = XFS_TRANS_HEADER_MAGIC; - tp->t_header.th_type = tp->t_type; - tp->t_header.th_num_items = nitems; - log_vector->i_addr = (xfs_caddr_t)&tp->t_header; - log_vector->i_len = sizeof(xfs_trans_header_t); - log_vector->i_type = XLOG_REG_TYPE_TRANSHDR; -} - -/* - * The committed item processing consists of calling the committed routine of - * each logged item, updating the item's position in the AIL if necessary, and - * unpinning each item. If the committed routine returns -1, then do nothing - * further with the item because it may have been freed. - * - * Since items are unlocked when they are copied to the incore log, it is - * possible for two transactions to be completing and manipulating the same - * item simultaneously. The AIL lock will protect the lsn field of each item. - * The value of this field can never go backwards. - * - * We unpin the items after repositioning them in the AIL, because otherwise - * they could be immediately flushed and we'd have to race with the flusher - * trying to pull the item from the AIL as we add it. - */ -static void -xfs_trans_item_committed( - struct xfs_log_item *lip, - xfs_lsn_t commit_lsn, - int aborted) -{ - xfs_lsn_t item_lsn; - struct xfs_ail *ailp; - - if (aborted) - lip->li_flags |= XFS_LI_ABORTED; - item_lsn = IOP_COMMITTED(lip, commit_lsn); - - /* item_lsn of -1 means the item needs no further processing */ - if (XFS_LSN_CMP(item_lsn, (xfs_lsn_t)-1) == 0) - return; - - /* - * If the returned lsn is greater than what it contained before, update - * the location of the item in the AIL. If it is not, then do nothing. - * Items can never move backwards in the AIL. - * - * While the new lsn should usually be greater, it is possible that a - * later transaction completing simultaneously with an earlier one - * using the same item could complete first with a higher lsn. This - * would cause the earlier transaction to fail the test below. - */ - ailp = lip->li_ailp; - spin_lock(&ailp->xa_lock); - if (XFS_LSN_CMP(item_lsn, lip->li_lsn) > 0) { - /* - * This will set the item's lsn to item_lsn and update the - * position of the item in the AIL. - * - * xfs_trans_ail_update() drops the AIL lock. - */ - xfs_trans_ail_update(ailp, lip, item_lsn); - } else { - spin_unlock(&ailp->xa_lock); - } - - /* - * Now that we've repositioned the item in the AIL, unpin it so it can - * be flushed. Pass information about buffer stale state down from the - * log item flags, if anyone else stales the buffer we do not want to - * pay any attention to it. - */ - IOP_UNPIN(lip, 0); -} - -/* - * This is typically called by the LM when a transaction has been fully - * committed to disk. It needs to unpin the items which have - * been logged by the transaction and update their positions - * in the AIL if necessary. - * - * This also gets called when the transactions didn't get written out - * because of an I/O error. Abortflag & XFS_LI_ABORTED is set then. - */ -STATIC void -xfs_trans_committed( - void *arg, - int abortflag) -{ - struct xfs_trans *tp = arg; - struct xfs_log_item_desc *lidp, *next; - - list_for_each_entry_safe(lidp, next, &tp->t_items, lid_trans) { - xfs_trans_item_committed(lidp->lid_item, tp->t_lsn, abortflag); - xfs_trans_free_item_desc(lidp); - } - - xfs_trans_free(tp); -} - static inline void xfs_log_item_batch_insert( struct xfs_ail *ailp, @@ -1538,182 +1325,6 @@ xfs_trans_committed_bulk( } /* - * Called from the trans_commit code when we notice that the filesystem is in - * the middle of a forced shutdown. - * - * When we are called here, we have already pinned all the items in the - * transaction. However, neither IOP_COMMITTING or IOP_UNLOCK has been called - * so we can simply walk the items in the transaction, unpin them with an abort - * flag and then free the items. Note that unpinning the items can result in - * them being freed immediately, so we need to use a safe list traversal method - * here. - */ -STATIC void -xfs_trans_uncommit( - struct xfs_trans *tp, - uint flags) -{ - struct xfs_log_item_desc *lidp, *n; - - list_for_each_entry_safe(lidp, n, &tp->t_items, lid_trans) { - if (lidp->lid_flags & XFS_LID_DIRTY) - IOP_UNPIN(lidp->lid_item, 1); - } - - xfs_trans_unreserve_and_mod_sb(tp); - xfs_trans_unreserve_and_mod_dquots(tp); - - xfs_trans_free_items(tp, NULLCOMMITLSN, flags); - xfs_trans_free(tp); -} - -/* - * Format the transaction direct to the iclog. This isolates the physical - * transaction commit operation from the logical operation and hence allows - * other methods to be introduced without affecting the existing commit path. - */ -static int -xfs_trans_commit_iclog( - struct xfs_mount *mp, - struct xfs_trans *tp, - xfs_lsn_t *commit_lsn, - int flags) -{ - int shutdown; - int error; - int log_flags = 0; - struct xlog_in_core *commit_iclog; -#define XFS_TRANS_LOGVEC_COUNT 16 - struct xfs_log_iovec log_vector_fast[XFS_TRANS_LOGVEC_COUNT]; - struct xfs_log_iovec *log_vector; - uint nvec; - - - /* - * Ask each log item how many log_vector entries it will - * need so we can figure out how many to allocate. - * Try to avoid the kmem_alloc() call in the common case - * by using a vector from the stack when it fits. - */ - nvec = xfs_trans_count_vecs(tp); - if (nvec == 0) { - return ENOMEM; /* triggers a shutdown! */ - } else if (nvec <= XFS_TRANS_LOGVEC_COUNT) { - log_vector = log_vector_fast; - } else { - log_vector = (xfs_log_iovec_t *)kmem_alloc(nvec * - sizeof(xfs_log_iovec_t), - KM_SLEEP); - } - - /* - * Fill in the log_vector and pin the logged items, and - * then write the transaction to the log. - */ - xfs_trans_fill_vecs(tp, log_vector); - - if (flags & XFS_TRANS_RELEASE_LOG_RES) - log_flags = XFS_LOG_REL_PERM_RESERV; - - error = xfs_log_write(mp, log_vector, nvec, tp->t_ticket, &(tp->t_lsn)); - - /* - * The transaction is committed incore here, and can go out to disk - * at any time after this call. However, all the items associated - * with the transaction are still locked and pinned in memory. - */ - *commit_lsn = xfs_log_done(mp, tp->t_ticket, &commit_iclog, log_flags); - - tp->t_commit_lsn = *commit_lsn; - trace_xfs_trans_commit_lsn(tp); - - if (nvec > XFS_TRANS_LOGVEC_COUNT) - kmem_free(log_vector); - - /* - * If we got a log write error. Unpin the logitems that we - * had pinned, clean up, free trans structure, and return error. - */ - if (error || *commit_lsn == -1) { - current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS); - xfs_trans_uncommit(tp, flags|XFS_TRANS_ABORT); - return XFS_ERROR(EIO); - } - - /* - * Once the transaction has committed, unused - * reservations need to be released and changes to - * the superblock need to be reflected in the in-core - * version. Do that now. - */ - xfs_trans_unreserve_and_mod_sb(tp); - - /* - * Tell the LM to call the transaction completion routine - * when the log write with LSN commit_lsn completes (e.g. - * when the transaction commit really hits the on-disk log). - * After this call we cannot reference tp, because the call - * can happen at any time and the call will free the transaction - * structure pointed to by tp. The only case where we call - * the completion routine (xfs_trans_committed) directly is - * if the log is turned off on a debug kernel or we're - * running in simulation mode (the log is explicitly turned - * off). - */ - tp->t_logcb.cb_func = xfs_trans_committed; - tp->t_logcb.cb_arg = tp; - - /* - * We need to pass the iclog buffer which was used for the - * transaction commit record into this function, and attach - * the callback to it. The callback must be attached before - * the items are unlocked to avoid racing with other threads - * waiting for an item to unlock. - */ - shutdown = xfs_log_notify(mp, commit_iclog, &(tp->t_logcb)); - - /* - * Mark this thread as no longer being in a transaction - */ - current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS); - - /* - * Once all the items of the transaction have been copied - * to the in core log and the callback is attached, the - * items can be unlocked. - * - * This will free descriptors pointing to items which were - * not logged since there is nothing more to do with them. - * For items which were logged, we will keep pointers to them - * so they can be unpinned after the transaction commits to disk. - * This will also stamp each modified meta-data item with - * the commit lsn of this transaction for dependency tracking - * purposes. - */ - xfs_trans_unlock_items(tp, *commit_lsn); - - /* - * If we detected a log error earlier, finish committing - * the transaction now (unpin log items, etc). - * - * Order is critical here, to avoid using the transaction - * pointer after its been freed (by xfs_trans_committed - * either here now, or as a callback). We cannot do this - * step inside xfs_log_notify as was done earlier because - * of this issue. - */ - if (shutdown) - xfs_trans_committed(tp, XFS_LI_ABORTED); - - /* - * Now that the xfs_trans_committed callback has been attached, - * and the items are released we can finally allow the iclog to - * go to disk. - */ - return xfs_log_release_iclog(mp, commit_iclog); -} - -/* * Walk the log items and allocate log vector structures for * each item large enough to fit all the vectors they require. * Note that this format differs from the old log vector format in @@ -1845,11 +1456,7 @@ xfs_trans_commit( xfs_trans_apply_sb_deltas(tp); xfs_trans_apply_dquot_deltas(tp); - if (mp->m_flags & XFS_MOUNT_DELAYLOG) - error = xfs_trans_commit_cil(mp, tp, &commit_lsn, flags); - else - error = xfs_trans_commit_iclog(mp, tp, &commit_lsn, flags); - + error = xfs_trans_commit_cil(mp, tp, &commit_lsn, flags); if (error == ENOMEM) { xfs_force_shutdown(mp, SHUTDOWN_LOG_IO_ERROR); error = XFS_ERROR(EIO); From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8SbCm225855 for ; Mon, 28 Nov 2011 02:28:37 -0600 X-ASG-Debug-ID: 1322468916-1dd701ce0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 03CF84FAB1A for ; Mon, 28 Nov 2011 00:28:36 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id oOWnIPFJ3D0GddTD for ; Mon, 28 Nov 2011 00:28:36 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZo-0000u0-IC for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:36 +0000 Message-Id: <20111128082836.509334391@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:24 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 02/16] xfs: make sure to really flush all dquots in xfs_qm_quotacheck Subject: [PATCH 02/16] xfs: make sure to really flush all dquots in xfs_qm_quotacheck References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-quotacheck-dont-trylock X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468917 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Make sure we do not skip any dquots when flushing them out after a quotacheck to make sure that we will never have any dirty dquots on a life filesystem. At this point no dquot should be pinnable, but lets be anal about it. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_qm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: xfs/fs/xfs/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/xfs_qm.c 2011-11-25 11:45:32.672075575 +0100 +++ xfs/fs/xfs/xfs_qm.c 2011-11-25 11:45:35.875391556 +0100 @@ -1661,7 +1661,7 @@ xfs_qm_quotacheck( * successfully. */ if (!error) - error = xfs_qm_dqflush_all(mp, SYNC_TRYLOCK); + error = xfs_qm_dqflush_all(mp, 0); /* * We can get this error if we couldn't do a dquot allocation inside From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8SbP8225854 for ; Mon, 28 Nov 2011 02:28:37 -0600 X-ASG-Debug-ID: 1322468916-1f4e03c80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E672C4FAB10 for ; Mon, 28 Nov 2011 00:28:36 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id p6vlyn1TUEQQfWON for ; Mon, 28 Nov 2011 00:28:36 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZo-0000tU-Cd for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:36 +0000 Message-Id: <20111128082836.344682532@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:23 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 01/16] xfs: untange SYNC_WAIT and SYNC_TRYLOCK meanings for xfs_qm_dqflush Subject: [PATCH 01/16] xfs: untange SYNC_WAIT and SYNC_TRYLOCK meanings for xfs_qm_dqflush References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-dquota-cleanup-SYNC_-flags X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468916 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Only skip pinned dquots if SYNC_TRYLOCK is specified, and adjust the callers to keep the behaviour unchanged. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_dquot.c | 2 +- fs/xfs/xfs_dquot_item.c | 2 +- fs/xfs/xfs_qm.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) Index: xfs/fs/xfs/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.c 2011-11-05 08:54:01.729993938 +0100 +++ xfs/fs/xfs/xfs_dquot.c 2011-11-25 11:45:32.668742260 +0100 @@ -1169,7 +1169,7 @@ xfs_qm_dqflush( * If not dirty, or it's pinned and we are not supposed to block, nada. */ if (!XFS_DQ_IS_DIRTY(dqp) || - (!(flags & SYNC_WAIT) && atomic_read(&dqp->q_pincount) > 0)) { + ((flags & SYNC_TRYLOCK) && atomic_read(&dqp->q_pincount) > 0)) { xfs_dqfunlock(dqp); return 0; } Index: xfs/fs/xfs/xfs_dquot_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_dquot_item.c 2011-11-25 11:43:25.269432441 +0100 +++ xfs/fs/xfs/xfs_dquot_item.c 2011-11-25 11:45:32.668742260 +0100 @@ -133,7 +133,7 @@ xfs_qm_dquot_logitem_push( * lock without sleeping, then there must not have been * anyone in the process of flushing the dquot. */ - error = xfs_qm_dqflush(dqp, 0); + error = xfs_qm_dqflush(dqp, SYNC_TRYLOCK); if (error) xfs_warn(dqp->q_mount, "%s: push error %d on dqp %p", __func__, error, dqp); Index: xfs/fs/xfs/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/xfs_qm.c 2011-11-19 20:14:00.400421363 +0100 +++ xfs/fs/xfs/xfs_qm.c 2011-11-25 11:45:32.672075575 +0100 @@ -1661,7 +1661,7 @@ xfs_qm_quotacheck( * successfully. */ if (!error) - error = xfs_qm_dqflush_all(mp, 0); + error = xfs_qm_dqflush_all(mp, SYNC_TRYLOCK); /* * We can get this error if we couldn't do a dquot allocation inside From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8Sctx225875 for ; Mon, 28 Nov 2011 02:28:38 -0600 X-ASG-Debug-ID: 1322468917-1f4603a80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E41174FAB45 for ; Mon, 28 Nov 2011 00:28:37 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Nq8kLp39iI1JurSd for ; Mon, 28 Nov 2011 00:28:37 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZp-0000w4-9k for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:37 +0000 Message-Id: <20111128082837.263453373@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:28 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 06/16] xfs: cleanup xfs_qm_dqlookup Subject: [PATCH 06/16] xfs: cleanup xfs_qm_dqlookup References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-cleanup-xfs_qm_dqlookup X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468917 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Rearrange the code to avoid the conditional locking around the flist_locked variable. This means we lose a (rather pointless) assert, and hold the freelist lock a bit longer for one corner case. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_dquot.c | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) Index: xfs/fs/xfs/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.c 2011-10-27 22:40:02.250173174 +0200 +++ xfs/fs/xfs/xfs_dquot.c 2011-10-27 22:40:02.770171231 +0200 @@ -710,12 +710,9 @@ xfs_qm_dqlookup( xfs_dquot_t **O_dqpp) { xfs_dquot_t *dqp; - uint flist_locked; ASSERT(mutex_is_locked(&qh->qh_lock)); - flist_locked = B_FALSE; - /* * Traverse the hashchain looking for a match */ @@ -750,31 +747,19 @@ xfs_qm_dqlookup( xfs_dqlock(dqp); dqp->dq_flags &= ~(XFS_DQ_WANT); } - flist_locked = B_TRUE; - } - - /* - * id couldn't have changed; we had the hashlock all - * along - */ - ASSERT(be32_to_cpu(dqp->q_core.d_id) == id); - if (flist_locked) { - if (dqp->q_nrefs != 0) { - mutex_unlock(&xfs_Gqm->qm_dqfrlist_lock); - flist_locked = B_FALSE; - } else { + if (dqp->q_nrefs == 0) { /* take it off the freelist */ trace_xfs_dqlookup_freelist(dqp); list_del_init(&dqp->q_freelist); xfs_Gqm->qm_dqfrlist_cnt--; } + XFS_DQHOLD(dqp); + mutex_unlock(&xfs_Gqm->qm_dqfrlist_lock); + } else { + XFS_DQHOLD(dqp); } - XFS_DQHOLD(dqp); - - if (flist_locked) - mutex_unlock(&xfs_Gqm->qm_dqfrlist_lock); /* * move the dquot to the front of the hashchain */ From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:39 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8Sch3225889 for ; Mon, 28 Nov 2011 02:28:38 -0600 X-ASG-Debug-ID: 1322468917-6a1702450000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9BDEF16E1BB1 for ; Mon, 28 Nov 2011 00:28:37 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id MYKvQP9Mavx8C9E9 for ; Mon, 28 Nov 2011 00:28:37 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZo-0000uW-NZ for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:36 +0000 Message-Id: <20111128082836.676707771@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:25 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 03/16] xfs: remove xfs_qm_sync Subject: [PATCH 03/16] xfs: remove xfs_qm_sync References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-remove-xfs_qm_sync X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468917 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81522 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Now that we can't have any dirty dquots around that aren't in the AIL we can get rid of the explicit dquot syncing from xfssyncd and xfs_fs_sync_fs. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_qm.c | 94 ----------------------------------------------------- fs/xfs/xfs_qm.h | 6 --- fs/xfs/xfs_quota.h | 5 -- fs/xfs/xfs_super.c | 11 +----- fs/xfs/xfs_sync.c | 6 --- 5 files changed, 3 insertions(+), 119 deletions(-) Index: xfs/fs/xfs/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/xfs_qm.c 2011-11-25 11:45:35.875391556 +0100 +++ xfs/fs/xfs/xfs_qm.c 2011-11-25 11:45:37.468716258 +0100 @@ -879,100 +879,6 @@ xfs_qm_dqdetach( } } -int -xfs_qm_sync( - struct xfs_mount *mp, - int flags) -{ - struct xfs_quotainfo *q = mp->m_quotainfo; - int recl, restarts; - struct xfs_dquot *dqp; - int error; - - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) - return 0; - - restarts = 0; - - again: - mutex_lock(&q->qi_dqlist_lock); - /* - * dqpurge_all() also takes the mplist lock and iterate thru all dquots - * in quotaoff. However, if the QUOTA_ACTIVE bits are not cleared - * when we have the mplist lock, we know that dquots will be consistent - * as long as we have it locked. - */ - if (!XFS_IS_QUOTA_ON(mp)) { - mutex_unlock(&q->qi_dqlist_lock); - return 0; - } - ASSERT(mutex_is_locked(&q->qi_dqlist_lock)); - list_for_each_entry(dqp, &q->qi_dqlist, q_mplist) { - /* - * If this is vfs_sync calling, then skip the dquots that - * don't 'seem' to be dirty. ie. don't acquire dqlock. - * This is very similar to what xfs_sync does with inodes. - */ - if (flags & SYNC_TRYLOCK) { - if (!XFS_DQ_IS_DIRTY(dqp)) - continue; - if (!xfs_qm_dqlock_nowait(dqp)) - continue; - } else { - xfs_dqlock(dqp); - } - - /* - * Now, find out for sure if this dquot is dirty or not. - */ - if (! XFS_DQ_IS_DIRTY(dqp)) { - xfs_dqunlock(dqp); - continue; - } - - /* XXX a sentinel would be better */ - recl = q->qi_dqreclaims; - if (!xfs_dqflock_nowait(dqp)) { - if (flags & SYNC_TRYLOCK) { - xfs_dqunlock(dqp); - continue; - } - /* - * If we can't grab the flush lock then if the caller - * really wanted us to give this our best shot, so - * see if we can give a push to the buffer before we wait - * on the flush lock. At this point, we know that - * even though the dquot is being flushed, - * it has (new) dirty data. - */ - xfs_qm_dqflock_pushbuf_wait(dqp); - } - /* - * Let go of the mplist lock. We don't want to hold it - * across a disk write - */ - mutex_unlock(&q->qi_dqlist_lock); - error = xfs_qm_dqflush(dqp, flags); - xfs_dqunlock(dqp); - if (error && XFS_FORCED_SHUTDOWN(mp)) - return 0; /* Need to prevent umount failure */ - else if (error) - return error; - - mutex_lock(&q->qi_dqlist_lock); - if (recl != q->qi_dqreclaims) { - if (++restarts >= XFS_QM_SYNC_MAX_RESTARTS) - break; - - mutex_unlock(&q->qi_dqlist_lock); - goto again; - } - } - - mutex_unlock(&q->qi_dqlist_lock); - return 0; -} - /* * The hash chains and the mplist use the same xfs_dqhash structure as * their list head, but we can take the mplist qh_lock and one of the Index: xfs/fs/xfs/xfs_qm.h =================================================================== --- xfs.orig/fs/xfs/xfs_qm.h 2011-11-05 08:54:00.740993267 +0100 +++ xfs/fs/xfs/xfs_qm.h 2011-11-25 11:45:37.468716258 +0100 @@ -33,12 +33,6 @@ extern kmem_zone_t *qm_dqzone; extern kmem_zone_t *qm_dqtrxzone; /* - * Used in xfs_qm_sync called by xfs_sync to count the max times that it can - * iterate over the mountpt's dquot list in one call. - */ -#define XFS_QM_SYNC_MAX_RESTARTS 7 - -/* * Ditto, for xfs_qm_dqreclaim_one. */ #define XFS_QM_RECLAIM_MAX_RESTARTS 4 Index: xfs/fs/xfs/xfs_quota.h =================================================================== --- xfs.orig/fs/xfs/xfs_quota.h 2011-11-05 08:54:00.748995021 +0100 +++ xfs/fs/xfs/xfs_quota.h 2011-11-25 11:45:37.468716258 +0100 @@ -326,7 +326,6 @@ extern int xfs_qm_dqattach_locked(struct extern void xfs_qm_dqdetach(struct xfs_inode *); extern void xfs_qm_dqrele(struct xfs_dquot *); extern void xfs_qm_statvfs(struct xfs_inode *, struct kstatfs *); -extern int xfs_qm_sync(struct xfs_mount *, int); extern int xfs_qm_newmount(struct xfs_mount *, uint *, uint *); extern void xfs_qm_mount_quotas(struct xfs_mount *); extern void xfs_qm_unmount(struct xfs_mount *); @@ -366,10 +365,6 @@ static inline int xfs_trans_reserve_quot #define xfs_qm_dqdetach(ip) #define xfs_qm_dqrele(d) #define xfs_qm_statvfs(ip, s) -static inline int xfs_qm_sync(struct xfs_mount *mp, int flags) -{ - return 0; -} #define xfs_qm_newmount(mp, a, b) (0) #define xfs_qm_mount_quotas(mp) #define xfs_qm_unmount(mp) Index: xfs/fs/xfs/xfs_super.c =================================================================== --- xfs.orig/fs/xfs/xfs_super.c 2011-11-25 11:43:20.222793115 +0100 +++ xfs/fs/xfs/xfs_super.c 2011-11-25 11:45:37.472049573 +0100 @@ -1025,17 +1025,10 @@ xfs_fs_sync_fs( int error; /* - * Not much we can do for the first async pass. Writing out the - * superblock would be counter-productive as we are going to redirty - * when writing out other data and metadata (and writing out a single - * block is quite fast anyway). - * - * Try to asynchronously kick off quota syncing at least. + * Doing anything during the async pass would be counterproductive. */ - if (!wait) { - xfs_qm_sync(mp, SYNC_TRYLOCK); + if (!wait) return 0; - } error = xfs_quiesce_data(mp); if (error) Index: xfs/fs/xfs/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/xfs_sync.c 2011-11-24 13:44:18.138524837 +0100 +++ xfs/fs/xfs/xfs_sync.c 2011-11-25 11:45:37.472049573 +0100 @@ -359,10 +359,7 @@ xfs_quiesce_data( { int error, error2 = 0; - xfs_qm_sync(mp, SYNC_TRYLOCK); - xfs_qm_sync(mp, SYNC_WAIT); - - /* force out the newly dirtied log buffers */ + /* force out the log */ xfs_log_force(mp, XFS_LOG_SYNC); /* write superblock and hoover up shutdown errors */ @@ -470,7 +467,6 @@ xfs_sync_worker( error = xfs_fs_log_dummy(mp); else xfs_log_force(mp, 0); - error = xfs_qm_sync(mp, SYNC_TRYLOCK); /* start pushing all the metadata that is currently dirty */ xfs_ail_push_all(mp->m_ail); From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8Sbbc225858 for ; Mon, 28 Nov 2011 02:28:38 -0600 X-ASG-Debug-ID: 1322468916-6a0f024c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EFEE416E1BB1 for ; Mon, 28 Nov 2011 00:28:36 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id uFSlaT9iDYcOn1me for ; Mon, 28 Nov 2011 00:28:36 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZo-0000st-76 for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:36 +0000 Message-Id: <20111128082722.604873274@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:22 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 00/16] quota cleanups for Linux 3.3 Subject: [PATCH 00/16] quota cleanups for Linux 3.3 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468916 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0203 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81522 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean These quota updates are required to prepare for removing all non-transaction metadata updates, implementing a proper quota shrinker and eventually replacing the quota hashes with better scaling data structures. They have been posted two times before but not gotten a review yet. I think it's time to get them into the tree for Linux 3.3. From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_62, J_CHICKENPOX_63 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8SdSv225907 for ; Mon, 28 Nov 2011 02:28:40 -0600 X-ASG-Debug-ID: 1322468917-1f4d03b20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 19C494FAB4A for ; Mon, 28 Nov 2011 00:28:37 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id zXfdkp5M6FAgEYQo for ; Mon, 28 Nov 2011 00:28:37 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZp-0000wa-Fv for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:37 +0000 Message-Id: <20111128082837.441012540@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:29 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 07/16] xfs: remove XFS_DQ_INACTIVE Subject: [PATCH 07/16] xfs: remove XFS_DQ_INACTIVE References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-kill-XFS_DQ_INACTIVE X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468918 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Free dquots when purging them during umount instead of keeping them around on the freelist in a degraded state. The out of order locking in xfs_qm_dqpurge will be removed again later in this series. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_dquot.c | 25 +++++++++++++-------- fs/xfs/xfs_qm.c | 61 +++++------------------------------------------------ fs/xfs/xfs_quota.h | 4 --- 3 files changed, 23 insertions(+), 67 deletions(-) Index: xfs/fs/xfs/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.c 2011-11-25 11:45:42.948686569 +0100 +++ xfs/fs/xfs/xfs_dquot.c 2011-11-25 11:45:44.232012950 +0100 @@ -1302,6 +1302,14 @@ xfs_qm_dqpurge( ASSERT(mutex_is_locked(&mp->m_quotainfo->qi_dqlist_lock)); ASSERT(mutex_is_locked(&dqp->q_hash->qh_lock)); + /* + * XXX(hch): horrible locking order, will get cleaned up ASAP. + */ + if (!mutex_trylock(&xfs_Gqm->qm_dqfrlist_lock)) { + mutex_unlock(&dqp->q_hash->qh_lock); + return 1; + } + xfs_dqlock(dqp); /* * We really can't afford to purge a dquot that is @@ -1364,22 +1372,21 @@ xfs_qm_dqpurge( list_del_init(&dqp->q_hashlist); qh->qh_version++; + list_del_init(&dqp->q_mplist); mp->m_quotainfo->qi_dqreclaims++; mp->m_quotainfo->qi_dquots--; - /* - * XXX Move this to the front of the freelist, if we can get the - * freelist lock. - */ - ASSERT(!list_empty(&dqp->q_freelist)); - dqp->q_mount = NULL; - dqp->q_hash = NULL; - dqp->dq_flags = XFS_DQ_INACTIVE; - memset(&dqp->q_core, 0, sizeof(dqp->q_core)); + list_del_init(&dqp->q_freelist); + xfs_Gqm->qm_dqfrlist_cnt--; + xfs_dqfunlock(dqp); xfs_dqunlock(dqp); + + mutex_unlock(&xfs_Gqm->qm_dqfrlist_lock); mutex_unlock(&qh->qh_lock); + + xfs_qm_dqdestroy(dqp); return (0); } Index: xfs/fs/xfs/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/xfs_qm.c 2011-11-25 11:45:41.462027957 +0100 +++ xfs/fs/xfs/xfs_qm.c 2011-11-25 11:45:44.235346266 +0100 @@ -154,12 +154,17 @@ STATIC void xfs_qm_destroy( struct xfs_qm *xqm) { - struct xfs_dquot *dqp, *n; int hsize, i; ASSERT(xqm != NULL); ASSERT(xqm->qm_nrefs == 0); + unregister_shrinker(&xfs_qm_shaker); + + mutex_lock(&xqm->qm_dqfrlist_lock); + ASSERT(list_empty(&xqm->qm_dqfrlist)); + mutex_unlock(&xqm->qm_dqfrlist_lock); + hsize = xqm->qm_dqhashmask + 1; for (i = 0; i < hsize; i++) { xfs_qm_list_destroy(&(xqm->qm_usr_dqhtable[i])); @@ -171,17 +176,6 @@ xfs_qm_destroy( xqm->qm_grp_dqhtable = NULL; xqm->qm_dqhashmask = 0; - /* frlist cleanup */ - mutex_lock(&xqm->qm_dqfrlist_lock); - list_for_each_entry_safe(dqp, n, &xqm->qm_dqfrlist, q_freelist) { - xfs_dqlock(dqp); - list_del_init(&dqp->q_freelist); - xfs_Gqm->qm_dqfrlist_cnt--; - xfs_dqunlock(dqp); - xfs_qm_dqdestroy(dqp); - } - mutex_unlock(&xqm->qm_dqfrlist_lock); - mutex_destroy(&xqm->qm_dqfrlist_lock); kmem_free(xqm); } @@ -232,34 +226,10 @@ STATIC void xfs_qm_rele_quotafs_ref( struct xfs_mount *mp) { - xfs_dquot_t *dqp, *n; - ASSERT(xfs_Gqm); ASSERT(xfs_Gqm->qm_nrefs > 0); /* - * Go thru the freelist and destroy all inactive dquots. - */ - mutex_lock(&xfs_Gqm->qm_dqfrlist_lock); - - list_for_each_entry_safe(dqp, n, &xfs_Gqm->qm_dqfrlist, q_freelist) { - xfs_dqlock(dqp); - if (dqp->dq_flags & XFS_DQ_INACTIVE) { - ASSERT(dqp->q_mount == NULL); - ASSERT(! XFS_DQ_IS_DIRTY(dqp)); - ASSERT(list_empty(&dqp->q_hashlist)); - ASSERT(list_empty(&dqp->q_mplist)); - list_del_init(&dqp->q_freelist); - xfs_Gqm->qm_dqfrlist_cnt--; - xfs_dqunlock(dqp); - xfs_qm_dqdestroy(dqp); - } else { - xfs_dqunlock(dqp); - } - } - mutex_unlock(&xfs_Gqm->qm_dqfrlist_lock); - - /* * Destroy the entire XQM. If somebody mounts with quotaon, this'll * be restarted. */ @@ -1728,8 +1698,6 @@ again: * both the dquot and the freelistlock. */ if (dqp->dq_flags & XFS_DQ_WANT) { - ASSERT(! (dqp->dq_flags & XFS_DQ_INACTIVE)); - trace_xfs_dqreclaim_want(dqp); XQM_STATS_INC(xqmstats.xs_qm_dqwants); restarts++; @@ -1737,23 +1705,6 @@ again: goto dqunlock; } - /* - * If the dquot is inactive, we are assured that it is - * not on the mplist or the hashlist, and that makes our - * life easier. - */ - if (dqp->dq_flags & XFS_DQ_INACTIVE) { - ASSERT(mp == NULL); - ASSERT(! XFS_DQ_IS_DIRTY(dqp)); - ASSERT(list_empty(&dqp->q_hashlist)); - ASSERT(list_empty(&dqp->q_mplist)); - list_del_init(&dqp->q_freelist); - xfs_Gqm->qm_dqfrlist_cnt--; - dqpout = dqp; - XQM_STATS_INC(xqmstats.xs_qm_dqinact_reclaims); - goto dqunlock; - } - ASSERT(dqp->q_hash); ASSERT(!list_empty(&dqp->q_mplist)); Index: xfs/fs/xfs/xfs_quota.h =================================================================== --- xfs.orig/fs/xfs/xfs_quota.h 2011-11-25 11:45:37.468716258 +0100 +++ xfs/fs/xfs/xfs_quota.h 2011-11-25 11:45:44.235346266 +0100 @@ -88,7 +88,6 @@ typedef struct xfs_dqblk { #define XFS_DQ_GROUP 0x0004 /* a group quota */ #define XFS_DQ_DIRTY 0x0008 /* dquot is dirty */ #define XFS_DQ_WANT 0x0010 /* for lookup/reclaim race */ -#define XFS_DQ_INACTIVE 0x0020 /* dq off mplist & hashlist */ #define XFS_DQ_ALLTYPES (XFS_DQ_USER|XFS_DQ_PROJ|XFS_DQ_GROUP) @@ -97,8 +96,7 @@ typedef struct xfs_dqblk { { XFS_DQ_PROJ, "PROJ" }, \ { XFS_DQ_GROUP, "GROUP" }, \ { XFS_DQ_DIRTY, "DIRTY" }, \ - { XFS_DQ_WANT, "WANT" }, \ - { XFS_DQ_INACTIVE, "INACTIVE" } + { XFS_DQ_WANT, "WANT" } /* * In the worst case, when both user and group quotas are on, From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:39 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8SdxS225899 for ; Mon, 28 Nov 2011 02:28:39 -0600 X-ASG-Debug-ID: 1322468917-1ddb01c90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2F3AD4FAB1A for ; Mon, 28 Nov 2011 00:28:38 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 6q997vwoth8khhu9 for ; Mon, 28 Nov 2011 00:28:38 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZp-0000x7-MK for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:37 +0000 Message-Id: <20111128082837.638600213@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:30 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 08/16] xfs: implement lazy removal for the dquot freelist Subject: [PATCH 08/16] xfs: implement lazy removal for the dquot freelist References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-quota-lazy-lru X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468918 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Do not remove dquots from the freelist when we grab a reference to them in xfs_qm_dqlookup, but leave them on the freelist util scanning notices that they have a reference. This speeds up the lookup fastpath, and greatly simplifies the lock ordering constraints. Note that the same scheme is used by the VFS inode and dentry caches. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_dquot.c | 65 +++++++++++++---------------------------------------- fs/xfs/xfs_qm.c | 22 ++++++++--------- fs/xfs/xfs_quota.h | 4 --- fs/xfs/xfs_trace.h | 2 - 4 files changed, 29 insertions(+), 64 deletions(-) Index: xfs/fs/xfs/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.c 2011-11-25 11:45:44.232012950 +0100 +++ xfs/fs/xfs/xfs_dquot.c 2011-11-25 11:45:50.205313924 +0100 @@ -722,58 +722,25 @@ xfs_qm_dqlookup( * dqlock to look at the id field of the dquot, since the * id can't be modified without the hashlock anyway. */ - if (be32_to_cpu(dqp->q_core.d_id) == id && dqp->q_mount == mp) { - trace_xfs_dqlookup_found(dqp); + if (be32_to_cpu(dqp->q_core.d_id) != id || dqp->q_mount != mp) + continue; - /* - * All in core dquots must be on the dqlist of mp - */ - ASSERT(!list_empty(&dqp->q_mplist)); + trace_xfs_dqlookup_found(dqp); - xfs_dqlock(dqp); - if (dqp->q_nrefs == 0) { - ASSERT(!list_empty(&dqp->q_freelist)); - if (!mutex_trylock(&xfs_Gqm->qm_dqfrlist_lock)) { - trace_xfs_dqlookup_want(dqp); - - /* - * We may have raced with dqreclaim_one() - * (and lost). So, flag that we don't - * want the dquot to be reclaimed. - */ - dqp->dq_flags |= XFS_DQ_WANT; - xfs_dqunlock(dqp); - mutex_lock(&xfs_Gqm->qm_dqfrlist_lock); - xfs_dqlock(dqp); - dqp->dq_flags &= ~(XFS_DQ_WANT); - } - - if (dqp->q_nrefs == 0) { - /* take it off the freelist */ - trace_xfs_dqlookup_freelist(dqp); - list_del_init(&dqp->q_freelist); - xfs_Gqm->qm_dqfrlist_cnt--; - } - XFS_DQHOLD(dqp); - mutex_unlock(&xfs_Gqm->qm_dqfrlist_lock); - } else { - XFS_DQHOLD(dqp); - } + xfs_dqlock(dqp); + XFS_DQHOLD(dqp); - /* - * move the dquot to the front of the hashchain - */ - ASSERT(mutex_is_locked(&qh->qh_lock)); - list_move(&dqp->q_hashlist, &qh->qh_list); - trace_xfs_dqlookup_done(dqp); - *O_dqpp = dqp; - return 0; - } + /* + * move the dquot to the front of the hashchain + */ + list_move(&dqp->q_hashlist, &qh->qh_list); + trace_xfs_dqlookup_done(dqp); + *O_dqpp = dqp; + return 0; } *O_dqpp = NULL; - ASSERT(mutex_is_locked(&qh->qh_lock)); - return (1); + return 1; } /* @@ -1033,8 +1000,10 @@ xfs_qm_dqput( if (--dqp->q_nrefs == 0) { trace_xfs_dqput_free(dqp); - list_add_tail(&dqp->q_freelist, &xfs_Gqm->qm_dqfrlist); - xfs_Gqm->qm_dqfrlist_cnt++; + if (list_empty(&dqp->q_freelist)) { + list_add_tail(&dqp->q_freelist, &xfs_Gqm->qm_dqfrlist); + xfs_Gqm->qm_dqfrlist_cnt++; + } /* * If we just added a udquot to the freelist, then Index: xfs/fs/xfs/xfs_trace.h =================================================================== --- xfs.orig/fs/xfs/xfs_trace.h 2011-11-24 13:44:18.568522508 +0100 +++ xfs/fs/xfs/xfs_trace.h 2011-11-25 11:45:46.102002820 +0100 @@ -743,8 +743,6 @@ DEFINE_DQUOT_EVENT(xfs_dqtobp_read); DEFINE_DQUOT_EVENT(xfs_dqread); DEFINE_DQUOT_EVENT(xfs_dqread_fail); DEFINE_DQUOT_EVENT(xfs_dqlookup_found); -DEFINE_DQUOT_EVENT(xfs_dqlookup_want); -DEFINE_DQUOT_EVENT(xfs_dqlookup_freelist); DEFINE_DQUOT_EVENT(xfs_dqlookup_done); DEFINE_DQUOT_EVENT(xfs_dqget_hit); DEFINE_DQUOT_EVENT(xfs_dqget_miss); Index: xfs/fs/xfs/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/xfs_qm.c 2011-11-25 11:45:44.235346266 +0100 +++ xfs/fs/xfs/xfs_qm.c 2011-11-25 11:45:50.215313871 +0100 @@ -517,13 +517,12 @@ xfs_qm_dqpurge_int( * get them off mplist and hashlist, but leave them on freelist. */ list_for_each_entry_safe(dqp, n, &q->qi_dqlist, q_mplist) { - /* - * It's OK to look at the type without taking dqlock here. - * We're holding the mplist lock here, and that's needed for - * a dqreclaim. - */ - if ((dqp->dq_flags & dqtype) == 0) + xfs_dqlock(dqp); + if ((dqp->dq_flags & dqtype) == 0) { + xfs_dqunlock(dqp); continue; + } + xfs_dqunlock(dqp); if (!mutex_trylock(&dqp->q_hash->qh_lock)) { nrecl = q->qi_dqreclaims; @@ -1692,14 +1691,15 @@ again: xfs_dqlock(dqp); /* - * We are racing with dqlookup here. Naturally we don't - * want to reclaim a dquot that lookup wants. We release the - * freelist lock and start over, so that lookup will grab - * both the dquot and the freelistlock. + * This dquot has already been grabbed by dqlookup. + * Remove it from the freelist and try again. */ - if (dqp->dq_flags & XFS_DQ_WANT) { + if (dqp->q_nrefs) { trace_xfs_dqreclaim_want(dqp); XQM_STATS_INC(xqmstats.xs_qm_dqwants); + + list_del_init(&dqp->q_freelist); + xfs_Gqm->qm_dqfrlist_cnt--; restarts++; startagain = 1; goto dqunlock; Index: xfs/fs/xfs/xfs_quota.h =================================================================== --- xfs.orig/fs/xfs/xfs_quota.h 2011-11-25 11:45:44.235346266 +0100 +++ xfs/fs/xfs/xfs_quota.h 2011-11-25 11:45:50.228647131 +0100 @@ -87,7 +87,6 @@ typedef struct xfs_dqblk { #define XFS_DQ_PROJ 0x0002 /* project quota */ #define XFS_DQ_GROUP 0x0004 /* a group quota */ #define XFS_DQ_DIRTY 0x0008 /* dquot is dirty */ -#define XFS_DQ_WANT 0x0010 /* for lookup/reclaim race */ #define XFS_DQ_ALLTYPES (XFS_DQ_USER|XFS_DQ_PROJ|XFS_DQ_GROUP) @@ -95,8 +94,7 @@ typedef struct xfs_dqblk { { XFS_DQ_USER, "USER" }, \ { XFS_DQ_PROJ, "PROJ" }, \ { XFS_DQ_GROUP, "GROUP" }, \ - { XFS_DQ_DIRTY, "DIRTY" }, \ - { XFS_DQ_WANT, "WANT" } + { XFS_DQ_DIRTY, "DIRTY" } /* * In the worst case, when both user and group quotas are on, From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:38 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8Scsu225872 for ; Mon, 28 Nov 2011 02:28:38 -0600 X-ASG-Debug-ID: 1322468917-1dda01c50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 872954FAB1A for ; Mon, 28 Nov 2011 00:28:37 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id eN3HEb62AAP2YeJv for ; Mon, 28 Nov 2011 00:28:37 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZo-0000v2-TF for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:36 +0000 Message-Id: <20111128082836.852396783@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:26 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 04/16] xfs: remove the sync_mode argument to xfs_qm_dqflush_all Subject: [PATCH 04/16] xfs: remove the sync_mode argument to xfs_qm_dqflush_all References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-remove-xfs_qm_dqflush_all-sync-mode X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468917 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean It always is zero, and removing it will make future changes easier. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_qm.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) Index: xfs/fs/xfs/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/xfs_qm.c 2011-11-25 11:45:37.468716258 +0100 +++ xfs/fs/xfs/xfs_qm.c 2011-11-25 11:45:39.375372594 +0100 @@ -415,8 +415,7 @@ xfs_qm_unmount_quotas( */ STATIC int xfs_qm_dqflush_all( - struct xfs_mount *mp, - int sync_mode) + struct xfs_mount *mp) { struct xfs_quotainfo *q = mp->m_quotainfo; int recl; @@ -451,7 +450,7 @@ again: * across a disk write. */ mutex_unlock(&q->qi_dqlist_lock); - error = xfs_qm_dqflush(dqp, sync_mode); + error = xfs_qm_dqflush(dqp, 0); xfs_dqunlock(dqp); if (error) return error; @@ -1567,7 +1566,7 @@ xfs_qm_quotacheck( * successfully. */ if (!error) - error = xfs_qm_dqflush_all(mp, 0); + error = xfs_qm_dqflush_all(mp); /* * We can get this error if we couldn't do a dquot allocation inside From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8SdHv225908 for ; Mon, 28 Nov 2011 02:28:40 -0600 X-ASG-Debug-ID: 1322468918-685e02450000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B22C51945A47 for ; Mon, 28 Nov 2011 00:28:38 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 3ryl8uq5x0BaHAwN for ; Mon, 28 Nov 2011 00:28:38 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZq-0000yf-65 for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:38 +0000 Message-Id: <20111128082838.141336729@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:33 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 11/16] xfs: simplify xfs_qm_dqattach_grouphint Subject: [PATCH 11/16] xfs: simplify xfs_qm_dqattach_grouphint References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-quota-cleanup-xfs_qm_dqattach_grouphint X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468918 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean No need to play games with the qlock now that the freelist lock nests inside it. Also clean up various outdated comments. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_qm.c | 64 ++++++++++++++------------------------------------------ 1 file changed, 16 insertions(+), 48 deletions(-) Index: xfs/fs/xfs/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/xfs_qm.c 2011-11-25 11:45:54.715289491 +0100 +++ xfs/fs/xfs/xfs_qm.c 2011-11-25 11:45:56.321947454 +0100 @@ -651,11 +651,7 @@ xfs_qm_dqattach_one( /* * Given a udquot and gdquot, attach a ptr to the group dquot in the - * udquot as a hint for future lookups. The idea sounds simple, but the - * execution isn't, because the udquot might have a group dquot attached - * already and getting rid of that gets us into lock ordering constraints. - * The process is complicated more by the fact that the dquots may or may not - * be locked on entry. + * udquot as a hint for future lookups. */ STATIC void xfs_qm_dqattach_grouphint( @@ -666,45 +662,21 @@ xfs_qm_dqattach_grouphint( xfs_dqlock(udq); - if ((tmp = udq->q_gdquot)) { - if (tmp == gdq) { - xfs_dqunlock(udq); - return; - } + tmp = udq->q_gdquot; + if (tmp) { + if (tmp == gdq) + goto done; udq->q_gdquot = NULL; - /* - * We can't keep any dqlocks when calling dqrele, - * because the freelist lock comes before dqlocks. - */ - xfs_dqunlock(udq); - /* - * we took a hard reference once upon a time in dqget, - * so give it back when the udquot no longer points at it - * dqput() does the unlocking of the dquot. - */ xfs_qm_dqrele(tmp); - - xfs_dqlock(udq); - xfs_dqlock(gdq); - - } else { - ASSERT(XFS_DQ_IS_LOCKED(udq)); - xfs_dqlock(gdq); - } - - ASSERT(XFS_DQ_IS_LOCKED(udq)); - ASSERT(XFS_DQ_IS_LOCKED(gdq)); - /* - * Somebody could have attached a gdquot here, - * when we dropped the uqlock. If so, just do nothing. - */ - if (udq->q_gdquot == NULL) { - XFS_DQHOLD(gdq); - udq->q_gdquot = gdq; } + xfs_dqlock(gdq); + XFS_DQHOLD(gdq); xfs_dqunlock(gdq); + + udq->q_gdquot = gdq; +done: xfs_dqunlock(udq); } @@ -771,17 +743,13 @@ xfs_qm_dqattach_locked( ASSERT(ip->i_gdquot); /* - * We may or may not have the i_udquot locked at this point, - * but this check is OK since we don't depend on the i_gdquot to - * be accurate 100% all the time. It is just a hint, and this - * will succeed in general. - */ - if (ip->i_udquot->q_gdquot == ip->i_gdquot) - goto done; - /* - * Attach i_gdquot to the gdquot hint inside the i_udquot. + * We do not have i_udquot locked at this point, but this check + * is OK since we don't depend on the i_gdquot to be accurate + * 100% all the time. It is just a hint, and this will + * succeed in general. */ - xfs_qm_dqattach_grouphint(ip->i_udquot, ip->i_gdquot); + if (ip->i_udquot->q_gdquot != ip->i_gdquot) + xfs_qm_dqattach_grouphint(ip->i_udquot, ip->i_gdquot); } done: From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8SdCD225906 for ; Mon, 28 Nov 2011 02:28:39 -0600 X-ASG-Debug-ID: 1322468918-1de201c30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 98EAB4FAB49 for ; Mon, 28 Nov 2011 00:28:38 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id whv8nVDnDBtHbfco for ; Mon, 28 Nov 2011 00:28:38 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZq-0000y9-10 for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:38 +0000 Message-Id: <20111128082837.977396280@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:32 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 10/16] xfs: nest qm_dqfrlist_lock insise the dquot qlock Subject: [PATCH 10/16] xfs: nest qm_dqfrlist_lock insise the dquot qlock References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-change-quota-freelist-lock-order X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468918 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Allow xfs_qm_dqput to work without trylock loops by nesting the freelist lock inside the dquot qlock. In turn that requires trylocks in the reclaim path instead, but given it's a classic tradeoff between fast and slow path, and we follow the model of the inode and dentry caches. Document our new lock order now that it has settled. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_dquot.c | 98 +++++++++++++++++++++-------------------------------- fs/xfs/xfs_qm.c | 4 +- 2 files changed, 42 insertions(+), 60 deletions(-) Index: xfs/fs/xfs/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.c 2011-11-25 11:45:53.348630228 +0100 +++ xfs/fs/xfs/xfs_dquot.c 2011-11-25 11:56:08.655296826 +0100 @@ -39,20 +39,19 @@ #include "xfs_qm.h" #include "xfs_trace.h" - /* - LOCK ORDER - - inode lock (ilock) - dquot hash-chain lock (hashlock) - xqm dquot freelist lock (freelistlock - mount's dquot list lock (mplistlock) - user dquot lock - lock ordering among dquots is based on the uid or gid - group dquot lock - similar to udquots. Between the two dquots, the udquot - has to be locked first. - pin lock - the dquot lock must be held to take this lock. - flush lock - ditto. -*/ + * Lock order: + * + * ip->i_lock + * qh->qh_lock + * qi->qi_dqlist_lock + * dquot->q_qlock + * dquot->q_flush + * xfs_Gqm->qm_dqfrlist_lock + * + * If two dquots need to be locked the order is user before group/project, + * otherwise by the lowest id first, see xfs_dqlock2. + */ #ifdef DEBUG xfs_buftarg_t *xfs_dqerror_target; @@ -984,69 +983,49 @@ restart: */ void xfs_qm_dqput( - xfs_dquot_t *dqp) + struct xfs_dquot *dqp) { - xfs_dquot_t *gdqp; + struct xfs_dquot *gdqp; ASSERT(dqp->q_nrefs > 0); ASSERT(XFS_DQ_IS_LOCKED(dqp)); trace_xfs_dqput(dqp); - if (dqp->q_nrefs != 1) { - dqp->q_nrefs--; +recurse: + if (--dqp->q_nrefs > 0) { xfs_dqunlock(dqp); return; } - /* - * drop the dqlock and acquire the freelist and dqlock - * in the right order; but try to get it out-of-order first - */ - if (!mutex_trylock(&xfs_Gqm->qm_dqfrlist_lock)) { - trace_xfs_dqput_wait(dqp); - xfs_dqunlock(dqp); - mutex_lock(&xfs_Gqm->qm_dqfrlist_lock); - xfs_dqlock(dqp); - } - - while (1) { - gdqp = NULL; + trace_xfs_dqput_free(dqp); - /* We can't depend on nrefs being == 1 here */ - if (--dqp->q_nrefs == 0) { - trace_xfs_dqput_free(dqp); - - if (list_empty(&dqp->q_freelist)) { - list_add_tail(&dqp->q_freelist, &xfs_Gqm->qm_dqfrlist); - xfs_Gqm->qm_dqfrlist_cnt++; - } + mutex_lock(&xfs_Gqm->qm_dqfrlist_lock); + if (list_empty(&dqp->q_freelist)) { + list_add_tail(&dqp->q_freelist, &xfs_Gqm->qm_dqfrlist); + xfs_Gqm->qm_dqfrlist_cnt++; + } + mutex_unlock(&xfs_Gqm->qm_dqfrlist_lock); - /* - * If we just added a udquot to the freelist, then - * we want to release the gdquot reference that - * it (probably) has. Otherwise it'll keep the - * gdquot from getting reclaimed. - */ - if ((gdqp = dqp->q_gdquot)) { - /* - * Avoid a recursive dqput call - */ - xfs_dqlock(gdqp); - dqp->q_gdquot = NULL; - } - } - xfs_dqunlock(dqp); + /* + * If we just added a udquot to the freelist, then we want to release + * the gdquot reference that it (probably) has. Otherwise it'll keep + * the gdquot from getting reclaimed. + */ + gdqp = dqp->q_gdquot; + if (gdqp) { + xfs_dqlock(gdqp); + dqp->q_gdquot = NULL; + } + xfs_dqunlock(dqp); - /* - * If we had a group quota inside the user quota as a hint, - * release it now. - */ - if (! gdqp) - break; + /* + * If we had a group quota hint, release it now. + */ + if (gdqp) { dqp = gdqp; + goto recurse; } - mutex_unlock(&xfs_Gqm->qm_dqfrlist_lock); } /* Index: xfs/fs/xfs/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/xfs_qm.c 2011-11-25 11:45:53.351963543 +0100 +++ xfs/fs/xfs/xfs_qm.c 2011-11-25 11:55:41.538777061 +0100 @@ -1669,7 +1669,9 @@ xfs_qm_dqreclaim_one(void) restart: list_for_each_entry(dqp, &xfs_Gqm->qm_dqfrlist, q_freelist) { struct xfs_mount *mp = dqp->q_mount; - xfs_dqlock(dqp); + + if (!xfs_dqlock_nowait(dqp)) + continue; /* * This dquot has already been grabbed by dqlookup. From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8Secq225936 for ; Mon, 28 Nov 2011 02:28:41 -0600 X-ASG-Debug-ID: 1322468919-6a1702460000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E26D216E1BB6 for ; Mon, 28 Nov 2011 00:28:39 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id xnhE7LMoGmsLwTek for ; Mon, 28 Nov 2011 00:28:39 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZr-00011H-3D for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:39 +0000 Message-Id: <20111128082839.052184545@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:38 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 16/16] xfs: remove XFS_QMOPT_DQSUSER Subject: [PATCH 16/16] xfs: remove XFS_QMOPT_DQSUSER References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-quota-kill-XFS_QMOPT_DQSUSER X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468919 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81522 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Just read the id 0 dquot from disk directly in xfs_qm_init_quotainfo instead of going through dqget and requiring a special flag to not add the dquot to any lists. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_dquot.c | 27 ++++++--------------------- fs/xfs/xfs_dquot.h | 2 ++ fs/xfs/xfs_qm.c | 22 ++++++++++------------ fs/xfs/xfs_quota.h | 1 - 4 files changed, 18 insertions(+), 34 deletions(-) Index: xfs/fs/xfs/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.c 2011-11-25 11:56:42.488446869 +0100 +++ xfs/fs/xfs/xfs_dquot.c 2011-11-25 11:56:43.941772330 +0100 @@ -552,7 +552,7 @@ xfs_qm_dqtobp( * * If XFS_QMOPT_DQALLOC is set, allocate a dquot on disk if it needed. */ -STATIC int +int xfs_qm_dqread( struct xfs_mount *mp, xfs_dqid_t id, @@ -801,32 +801,17 @@ restart: mutex_unlock(&h->qh_lock); error = xfs_qm_dqread(mp, id, type, flags, &dqp); - if (error) { - if (ip) - xfs_ilock(ip, XFS_ILOCK_EXCL); - return error; - } - /* - * See if this is mount code calling to look at the overall quota limits - * which are stored in the id == 0 user or group's dquot. - * Since we may not have done a quotacheck by this point, just return - * the dquot without attaching it to any hashtables, lists, etc, or even - * taking a reference. - * The caller must dqdestroy this once done. - */ - if (flags & XFS_QMOPT_DQSUSER) { - ASSERT(id == 0); - ASSERT(! ip); - goto dqret; - } + if (ip) + xfs_ilock(ip, XFS_ILOCK_EXCL); + + if (error) + return error; /* * Dquot lock comes after hashlock in the lock ordering */ if (ip) { - xfs_ilock(ip, XFS_ILOCK_EXCL); - /* * A dquot could be attached to this inode by now, since * we had dropped the ilock. Index: xfs/fs/xfs/xfs_dquot.h =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.h 2011-11-25 11:56:36.905143783 +0100 +++ xfs/fs/xfs/xfs_dquot.h 2011-11-25 11:56:43.945105645 +0100 @@ -129,6 +129,8 @@ static inline void xfs_dqunlock_nonotify (XFS_IS_UQUOTA_ON((d)->q_mount)) : \ (XFS_IS_OQUOTA_ON((d)->q_mount)))) +extern int xfs_qm_dqread(struct xfs_mount *, xfs_dqid_t, uint, + uint, struct xfs_dquot **); extern void xfs_qm_dqdestroy(xfs_dquot_t *); extern int xfs_qm_dqflush(xfs_dquot_t *, uint); extern void xfs_qm_dqpurge(xfs_dquot_t *); Index: xfs/fs/xfs/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/xfs_qm.c 2011-11-25 11:56:36.905143783 +0100 +++ xfs/fs/xfs/xfs_qm.c 2011-11-25 11:56:43.945105645 +0100 @@ -847,18 +847,21 @@ xfs_qm_init_quotainfo( /* * We try to get the limits from the superuser's limits fields. * This is quite hacky, but it is standard quota practice. + * * We look at the USR dquot with id == 0 first, but if user quotas * are not enabled we goto the GRP dquot with id == 0. * We don't really care to keep separate default limits for user * and group quotas, at least not at this point. + * + * Since we may not have done a quotacheck by this point, just read + * the dquot without attaching it to any hashtables or lists. */ - error = xfs_qm_dqget(mp, NULL, (xfs_dqid_t)0, - XFS_IS_UQUOTA_RUNNING(mp) ? XFS_DQ_USER : - (XFS_IS_GQUOTA_RUNNING(mp) ? XFS_DQ_GROUP : - XFS_DQ_PROJ), - XFS_QMOPT_DQSUSER|XFS_QMOPT_DOWARN, - &dqp); - if (! error) { + error = xfs_qm_dqread(mp, 0, + XFS_IS_UQUOTA_RUNNING(mp) ? XFS_DQ_USER : + (XFS_IS_GQUOTA_RUNNING(mp) ? XFS_DQ_GROUP : + XFS_DQ_PROJ), + XFS_QMOPT_DOWARN, &dqp); + if (!error) { xfs_disk_dquot_t *ddqp = &dqp->q_core; /* @@ -885,11 +888,6 @@ xfs_qm_init_quotainfo( qinf->qi_rtbhardlimit = be64_to_cpu(ddqp->d_rtb_hardlimit); qinf->qi_rtbsoftlimit = be64_to_cpu(ddqp->d_rtb_softlimit); - /* - * We sent the XFS_QMOPT_DQSUSER flag to dqget because - * we don't want this dquot cached. We haven't done a - * quotacheck yet, and quotacheck doesn't like incore dquots. - */ xfs_qm_dqdestroy(dqp); } else { qinf->qi_btimelimit = XFS_QM_BTIMELIMIT; Index: xfs/fs/xfs/xfs_quota.h =================================================================== --- xfs.orig/fs/xfs/xfs_quota.h 2011-11-25 11:55:38.138795482 +0100 +++ xfs/fs/xfs/xfs_quota.h 2011-11-25 11:56:43.945105645 +0100 @@ -197,7 +197,6 @@ typedef struct xfs_qoff_logformat { #define XFS_QMOPT_UQUOTA 0x0000004 /* user dquot requested */ #define XFS_QMOPT_PQUOTA 0x0000008 /* project dquot requested */ #define XFS_QMOPT_FORCE_RES 0x0000010 /* ignore quota limits */ -#define XFS_QMOPT_DQSUSER 0x0000020 /* don't cache super users dquot */ #define XFS_QMOPT_SBVERSION 0x0000040 /* change superblock version num */ #define XFS_QMOPT_DOWARN 0x0000400 /* increase warning cnt if needed */ #define XFS_QMOPT_DQREPAIR 0x0001000 /* repair dquot if damaged */ From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_61, J_CHICKENPOX_65 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8SeBU225918 for ; Mon, 28 Nov 2011 02:28:40 -0600 X-ASG-Debug-ID: 1322468919-1ddc01c50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3C5C54FAB1A for ; Mon, 28 Nov 2011 00:28:39 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id lgg6J4nDM1FaHg2J for ; Mon, 28 Nov 2011 00:28:39 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZq-00010F-NR for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:38 +0000 Message-Id: <20111128082838.672988151@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:36 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 14/16] xfs: merge xfs_qm_dqinit_core into the only caller Subject: [PATCH 14/16] xfs: merge xfs_qm_dqinit_core into the only caller References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-quota-kill-xfs_qm_dqinit_core X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468919 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_dquot.c | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) Index: xfs/fs/xfs/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.c 2011-11-25 11:56:36.905143783 +0100 +++ xfs/fs/xfs/xfs_dquot.c 2011-11-25 11:56:40.861789014 +0100 @@ -154,24 +154,6 @@ xfs_qm_dqdestroy( } /* - * This is what a 'fresh' dquot inside a dquot chunk looks like on disk. - */ -STATIC void -xfs_qm_dqinit_core( - xfs_dqid_t id, - uint type, - xfs_dqblk_t *d) -{ - /* - * Caller has zero'd the entire dquot 'chunk' already. - */ - d->dd_diskdq.d_magic = cpu_to_be16(XFS_DQUOT_MAGIC); - d->dd_diskdq.d_version = XFS_DQUOT_VERSION; - d->dd_diskdq.d_id = cpu_to_be32(id); - d->dd_diskdq.d_flags = type; -} - -/* * If default limits are in force, push them into the dquot now. * We overwrite the dquot limits only if they are zero and this * is not the root dquot. @@ -327,8 +309,13 @@ xfs_qm_init_dquot_blk( curid = id - (id % q->qi_dqperchunk); ASSERT(curid >= 0); memset(d, 0, BBTOB(q->qi_dqchunklen)); - for (i = 0; i < q->qi_dqperchunk; i++, d++, curid++) - xfs_qm_dqinit_core(curid, type, d); + for (i = 0; i < q->qi_dqperchunk; i++, d++, curid++) { + d->dd_diskdq.d_magic = cpu_to_be16(XFS_DQUOT_MAGIC); + d->dd_diskdq.d_version = XFS_DQUOT_VERSION; + d->dd_diskdq.d_id = cpu_to_be32(curid); + d->dd_diskdq.d_flags = type; + } + xfs_trans_dquot_buf(tp, bp, (type & XFS_DQ_USER ? XFS_BLF_UDQUOT_BUF : ((type & XFS_DQ_PROJ) ? XFS_BLF_PDQUOT_BUF : From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8SeeQ225919 for ; Mon, 28 Nov 2011 02:28:40 -0600 X-ASG-Debug-ID: 1322468918-1de601c70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 068F04FAB52 for ; Mon, 28 Nov 2011 00:28:38 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id DdUVTq4EtS9nidHo for ; Mon, 28 Nov 2011 00:28:38 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZq-0000zi-Hl for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:38 +0000 Message-Id: <20111128082838.499215551@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:35 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 13/16] xfs: add a xfs_dqhold helper Subject: [PATCH 13/16] xfs: add a xfs_dqhold helper References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-quota-add-xfs_dqhold X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468919 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Factor the common pattern of: xfs_dqlock(dqp); XFS_DQHOLD(dqp); xfs_dqunlock(dqp); into a new helper, and remove XFS_DQHOLD now that only two callers are left. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_dquot.c | 2 +- fs/xfs/xfs_dquot.h | 10 ++++++++-- fs/xfs/xfs_qm.c | 50 +++++++++++++------------------------------------- 3 files changed, 22 insertions(+), 40 deletions(-) Index: xfs/fs/xfs/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/xfs_qm.c 2011-11-25 11:56:35.841816211 +0100 +++ xfs/fs/xfs/xfs_qm.c 2011-11-25 11:56:36.905143783 +0100 @@ -594,12 +594,9 @@ xfs_qm_dqattach_one( */ dqp = udqhint->q_gdquot; if (dqp && be32_to_cpu(dqp->q_core.d_id) == id) { - xfs_dqlock(dqp); - XFS_DQHOLD(dqp); ASSERT(*IO_idqpp == NULL); - *IO_idqpp = dqp; - xfs_dqunlock(dqp); + *IO_idqpp = xfs_qm_dqhold(dqp); xfs_dqunlock(udqhint); return 0; } @@ -659,11 +656,7 @@ xfs_qm_dqattach_grouphint( xfs_qm_dqrele(tmp); } - xfs_dqlock(gdq); - XFS_DQHOLD(gdq); - xfs_dqunlock(gdq); - - udq->q_gdquot = gdq; + udq->q_gdquot = xfs_qm_dqhold(gdq); done: xfs_dqunlock(udq); } @@ -1928,10 +1921,7 @@ xfs_qm_vop_dqalloc( * this to caller */ ASSERT(ip->i_udquot); - uq = ip->i_udquot; - xfs_dqlock(uq); - XFS_DQHOLD(uq); - xfs_dqunlock(uq); + uq = xfs_qm_dqhold(ip->i_udquot); } } if ((flags & XFS_QMOPT_GQUOTA) && XFS_IS_GQUOTA_ON(mp)) { @@ -1952,10 +1942,7 @@ xfs_qm_vop_dqalloc( xfs_ilock(ip, lockflags); } else { ASSERT(ip->i_gdquot); - gq = ip->i_gdquot; - xfs_dqlock(gq); - XFS_DQHOLD(gq); - xfs_dqunlock(gq); + gq = xfs_qm_dqhold(ip->i_gdquot); } } else if ((flags & XFS_QMOPT_PQUOTA) && XFS_IS_PQUOTA_ON(mp)) { if (xfs_get_projid(ip) != prid) { @@ -1975,10 +1962,7 @@ xfs_qm_vop_dqalloc( xfs_ilock(ip, lockflags); } else { ASSERT(ip->i_gdquot); - gq = ip->i_gdquot; - xfs_dqlock(gq); - XFS_DQHOLD(gq); - xfs_dqunlock(gq); + gq = xfs_qm_dqhold(ip->i_gdquot); } } if (uq) @@ -2028,14 +2012,10 @@ xfs_qm_vop_chown( xfs_trans_mod_dquot(tp, newdq, XFS_TRANS_DQ_ICOUNT, 1); /* - * Take an extra reference, because the inode - * is going to keep this dquot pointer even - * after the trans_commit. - */ - xfs_dqlock(newdq); - XFS_DQHOLD(newdq); - xfs_dqunlock(newdq); - *IO_olddq = newdq; + * Take an extra reference, because the inode is going to keep + * this dquot pointer even after the trans_commit. + */ + *IO_olddq = xfs_qm_dqhold(newdq); return prevdq; } @@ -2167,25 +2147,21 @@ xfs_qm_vop_create_dqattach( ASSERT(XFS_IS_QUOTA_RUNNING(mp)); if (udqp) { - xfs_dqlock(udqp); - XFS_DQHOLD(udqp); - xfs_dqunlock(udqp); ASSERT(ip->i_udquot == NULL); - ip->i_udquot = udqp; ASSERT(XFS_IS_UQUOTA_ON(mp)); ASSERT(ip->i_d.di_uid == be32_to_cpu(udqp->q_core.d_id)); + + ip->i_udquot = xfs_qm_dqhold(udqp); xfs_trans_mod_dquot(tp, udqp, XFS_TRANS_DQ_ICOUNT, 1); } if (gdqp) { - xfs_dqlock(gdqp); - XFS_DQHOLD(gdqp); - xfs_dqunlock(gdqp); ASSERT(ip->i_gdquot == NULL); - ip->i_gdquot = gdqp; ASSERT(XFS_IS_OQUOTA_ON(mp)); ASSERT((XFS_IS_GQUOTA_ON(mp) ? ip->i_d.di_gid : xfs_get_projid(ip)) == be32_to_cpu(gdqp->q_core.d_id)); + + ip->i_gdquot = xfs_qm_dqhold(gdqp); xfs_trans_mod_dquot(tp, gdqp, XFS_TRANS_DQ_ICOUNT, 1); } } Index: xfs/fs/xfs/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.c 2011-11-25 11:56:08.655296826 +0100 +++ xfs/fs/xfs/xfs_dquot.c 2011-11-25 11:56:36.905143783 +0100 @@ -733,7 +733,7 @@ xfs_qm_dqlookup( return -1; } - XFS_DQHOLD(dqp); + dqp->q_nrefs++; /* * move the dquot to the front of the hashchain Index: xfs/fs/xfs/xfs_dquot.h =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.h 2011-11-25 11:55:40.368783400 +0100 +++ xfs/fs/xfs/xfs_dquot.h 2011-11-25 11:56:36.905143783 +0100 @@ -80,8 +80,6 @@ enum { XFS_QLOCK_NESTED, }; -#define XFS_DQHOLD(dqp) ((dqp)->q_nrefs++) - /* * Manage the q_flush completion queue embedded in the dquot. This completion * queue synchronizes processes attempting to flush the in-core dquot back to @@ -147,4 +145,12 @@ extern void xfs_dqlock2(struct xfs_dquo extern void xfs_dqunlock(struct xfs_dquot *); extern void xfs_dqflock_pushbuf_wait(struct xfs_dquot *dqp); +static inline struct xfs_dquot *xfs_qm_dqhold(struct xfs_dquot *dqp) +{ + xfs_dqlock(dqp); + dqp->q_nrefs++; + xfs_dqunlock(dqp); + return dqp; +} + #endif /* __XFS_DQUOT_H__ */ From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8Se67225927 for ; Mon, 28 Nov 2011 02:28:41 -0600 X-ASG-Debug-ID: 1322468919-5fb202b90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 70BF91D33274 for ; Mon, 28 Nov 2011 00:28:39 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id pMcmJ4d19n1NT1Vj for ; Mon, 28 Nov 2011 00:28:39 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZq-00010l-UD for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:38 +0000 Message-Id: <20111128082838.888554428@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:37 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 15/16] xfs: kill xfs_qm_idtodq Subject: [PATCH 15/16] xfs: kill xfs_qm_idtodq References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-cleanup-quota-read X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468919 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This function doesn't help the code flow, so merge the dquot allocation and transaction handling into xfs_qm_dqread. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_dquot.c | 134 ++++++++++++++++++----------------------------------- 1 file changed, 47 insertions(+), 87 deletions(-) Index: xfs/fs/xfs/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.c 2011-11-25 11:56:40.861789014 +0100 +++ xfs/fs/xfs/xfs_dquot.c 2011-11-25 11:56:42.488446869 +0100 @@ -550,36 +550,59 @@ xfs_qm_dqtobp( * Read in the ondisk dquot using dqtobp() then copy it to an incore version, * and release the buffer immediately. * + * If XFS_QMOPT_DQALLOC is set, allocate a dquot on disk if it needed. */ -/* ARGSUSED */ STATIC int xfs_qm_dqread( - xfs_trans_t **tpp, - xfs_dqid_t id, - xfs_dquot_t *dqp, /* dquot to get filled in */ - uint flags) + struct xfs_mount *mp, + xfs_dqid_t id, + uint type, + uint flags, + struct xfs_dquot **O_dqpp) { - xfs_disk_dquot_t *ddqp; - xfs_buf_t *bp; - int error; - xfs_trans_t *tp; + struct xfs_dquot *dqp; + struct xfs_disk_dquot *ddqp; + struct xfs_buf *bp; + struct xfs_trans *tp = NULL; + int error; + int cancelflags = 0; - ASSERT(tpp); + dqp = xfs_qm_dqinit(mp, id, type); trace_xfs_dqread(dqp); + if (flags & XFS_QMOPT_DQALLOC) { + tp = xfs_trans_alloc(mp, XFS_TRANS_QM_DQALLOC); + error = xfs_trans_reserve(tp, XFS_QM_DQALLOC_SPACE_RES(mp), + XFS_WRITE_LOG_RES(mp) + + BBTOB(mp->m_quotainfo->qi_dqchunklen) - 1 + + 128, + 0, + XFS_TRANS_PERM_LOG_RES, + XFS_WRITE_LOG_COUNT); + if (error) + goto error1; + cancelflags = XFS_TRANS_RELEASE_LOG_RES; + } + /* * get a pointer to the on-disk dquot and the buffer containing it * dqp already knows its own type (GROUP/USER). */ - if ((error = xfs_qm_dqtobp(tpp, dqp, &ddqp, &bp, flags))) { - return (error); + error = xfs_qm_dqtobp(&tp, dqp, &ddqp, &bp, flags); + if (error) { + /* + * This can happen if quotas got turned off (ESRCH), + * or if the dquot didn't exist on disk and we ask to + * allocate (ENOENT). + */ + trace_xfs_dqread_fail(dqp); + cancelflags |= XFS_TRANS_ABORT; + goto error1; } - tp = *tpp; /* copy everything from disk dquot to the incore dquot */ memcpy(&dqp->q_core, ddqp, sizeof(xfs_disk_dquot_t)); - ASSERT(be32_to_cpu(dqp->q_core.d_id) == id); xfs_qm_dquot_logitem_init(dqp); /* @@ -608,77 +631,22 @@ xfs_qm_dqread( ASSERT(xfs_buf_islocked(bp)); xfs_trans_brelse(tp, bp); - return (error); -} - - -/* - * allocate an incore dquot from the kernel heap, - * and fill its core with quota information kept on disk. - * If XFS_QMOPT_DQALLOC is set, it'll allocate a dquot on disk - * if it wasn't already allocated. - */ -STATIC int -xfs_qm_idtodq( - xfs_mount_t *mp, - xfs_dqid_t id, /* gid or uid, depending on type */ - uint type, /* UDQUOT or GDQUOT */ - uint flags, /* DQALLOC, DQREPAIR */ - xfs_dquot_t **O_dqpp)/* OUT : incore dquot, not locked */ -{ - xfs_dquot_t *dqp; - int error; - xfs_trans_t *tp; - int cancelflags=0; - - dqp = xfs_qm_dqinit(mp, id, type); - tp = NULL; - if (flags & XFS_QMOPT_DQALLOC) { - tp = xfs_trans_alloc(mp, XFS_TRANS_QM_DQALLOC); - error = xfs_trans_reserve(tp, XFS_QM_DQALLOC_SPACE_RES(mp), - XFS_WRITE_LOG_RES(mp) + - BBTOB(mp->m_quotainfo->qi_dqchunklen) - 1 + - 128, - 0, - XFS_TRANS_PERM_LOG_RES, - XFS_WRITE_LOG_COUNT); - if (error) { - cancelflags = 0; - goto error0; - } - cancelflags = XFS_TRANS_RELEASE_LOG_RES; - } - - /* - * Read it from disk; xfs_dqread() takes care of - * all the necessary initialization of dquot's fields (locks, etc) - */ - if ((error = xfs_qm_dqread(&tp, id, dqp, flags))) { - /* - * This can happen if quotas got turned off (ESRCH), - * or if the dquot didn't exist on disk and we ask to - * allocate (ENOENT). - */ - trace_xfs_dqread_fail(dqp); - cancelflags |= XFS_TRANS_ABORT; - goto error0; - } if (tp) { - if ((error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES))) - goto error1; + error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); + if (error) + goto error0; } *O_dqpp = dqp; - return (0); + return error; - error0: - ASSERT(error); +error1: if (tp) xfs_trans_cancel(tp, cancelflags); - error1: +error0: xfs_qm_dqdestroy(dqp); *O_dqpp = NULL; - return (error); + return error; } /* @@ -832,19 +800,11 @@ restart: version = h->qh_version; mutex_unlock(&h->qh_lock); - /* - * Allocate the dquot on the kernel heap, and read the ondisk - * portion off the disk. Also, do all the necessary initialization - * This can return ENOENT if dquot didn't exist on disk and we didn't - * ask it to allocate; ESRCH if quotas got turned off suddenly. - */ - if ((error = xfs_qm_idtodq(mp, id, type, - flags & (XFS_QMOPT_DQALLOC|XFS_QMOPT_DQREPAIR| - XFS_QMOPT_DOWARN), - &dqp))) { + error = xfs_qm_dqread(mp, id, type, flags, &dqp); + if (error) { if (ip) xfs_ilock(ip, XFS_ILOCK_EXCL); - return (error); + return error; } /* From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8SebS225924 for ; Mon, 28 Nov 2011 02:28:41 -0600 X-ASG-Debug-ID: 1322468918-02c501f40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B588416E1BB9 for ; Mon, 28 Nov 2011 00:28:38 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id ZSTgtPZ6viFAF0rS for ; Mon, 28 Nov 2011 00:28:38 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZp-0000xd-Rn for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:37 +0000 Message-Id: <20111128082837.808570926@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:31 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 09/16] xfs: flatten the dquot lock ordering Subject: [PATCH 09/16] xfs: flatten the dquot lock ordering References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-add-DQ_FREEING X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468918 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81522 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Introduce a new XFS_DQ_FREEING flag that tells lookup and mplist walks to skip a dquot that is beeing freed, and use this avoid the trylock on the hash and mplist locks in xfs_qm_dqreclaim_one. Also simplify xfs_dqpurge by moving the inodes to a dispose list after marking them XFS_DQ_FREEING and avoid the locker ordering constraints. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_dquot.c | 110 ++++++++++++++++++--------------------------- fs/xfs/xfs_dquot.h | 2 fs/xfs/xfs_qm.c | 129 ++++++++++++++++++----------------------------------- fs/xfs/xfs_quota.h | 4 + 4 files changed, 96 insertions(+), 149 deletions(-) Index: xfs/fs/xfs/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.c 2011-11-25 11:45:50.205313924 +0100 +++ xfs/fs/xfs/xfs_dquot.c 2011-11-25 11:45:53.348630228 +0100 @@ -728,6 +728,12 @@ xfs_qm_dqlookup( trace_xfs_dqlookup_found(dqp); xfs_dqlock(dqp); + if (dqp->dq_flags & XFS_DQ_FREEING) { + *O_dqpp = NULL; + xfs_dqunlock(dqp); + return -1; + } + XFS_DQHOLD(dqp); /* @@ -781,11 +787,7 @@ xfs_qm_dqget( return (EIO); } } -#endif - again: - -#ifdef DEBUG ASSERT(type == XFS_DQ_USER || type == XFS_DQ_PROJ || type == XFS_DQ_GROUP); @@ -797,13 +799,21 @@ xfs_qm_dqget( ASSERT(ip->i_gdquot == NULL); } #endif + +restart: mutex_lock(&h->qh_lock); /* * Look in the cache (hashtable). * The chain is kept locked during lookup. */ - if (xfs_qm_dqlookup(mp, id, h, O_dqpp) == 0) { + switch (xfs_qm_dqlookup(mp, id, h, O_dqpp)) { + case -1: + XQM_STATS_INC(xqmstats.xs_qm_dquot_dups); + mutex_unlock(&h->qh_lock); + delay(1); + goto restart; + case 0: XQM_STATS_INC(xqmstats.xs_qm_dqcachehits); /* * The dquot was found, moved to the front of the chain, @@ -814,9 +824,11 @@ xfs_qm_dqget( ASSERT(XFS_DQ_IS_LOCKED(*O_dqpp)); mutex_unlock(&h->qh_lock); trace_xfs_dqget_hit(*O_dqpp); - return (0); /* success */ + return 0; /* success */ + default: + XQM_STATS_INC(xqmstats.xs_qm_dqcachemisses); + break; } - XQM_STATS_INC(xqmstats.xs_qm_dqcachemisses); /* * Dquot cache miss. We don't want to keep the inode lock across @@ -913,16 +925,21 @@ xfs_qm_dqget( * lock order between the two dquots here since dqp isn't * on any findable lists yet. */ - if (xfs_qm_dqlookup(mp, id, h, &tmpdqp) == 0) { + switch (xfs_qm_dqlookup(mp, id, h, &tmpdqp)) { + case 0: + case -1: /* - * Duplicate found. Just throw away the new dquot - * and start over. + * Duplicate found, either in cache or on its way out. + * Just throw away the new dquot and start over. */ - xfs_qm_dqput(tmpdqp); + if (tmpdqp) + xfs_qm_dqput(tmpdqp); mutex_unlock(&h->qh_lock); xfs_qm_dqdestroy(dqp); XQM_STATS_INC(xqmstats.xs_qm_dquot_dups); - goto again; + goto restart; + default: + break; } } @@ -1250,51 +1267,18 @@ xfs_dqlock2( } } - /* - * Take a dquot out of the mount's dqlist as well as the hashlist. - * This is called via unmount as well as quotaoff, and the purge - * will always succeed unless there are soft (temp) references - * outstanding. - * - * This returns 0 if it was purged, 1 if it wasn't. It's not an error code - * that we're returning! XXXsup - not cool. + * Take a dquot out of the mount's dqlist as well as the hashlist. This is + * called via unmount as well as quotaoff, and the purge will always succeed. */ -/* ARGSUSED */ -int +void xfs_qm_dqpurge( - xfs_dquot_t *dqp) + struct xfs_dquot *dqp) { - xfs_dqhash_t *qh = dqp->q_hash; - xfs_mount_t *mp = dqp->q_mount; - - ASSERT(mutex_is_locked(&mp->m_quotainfo->qi_dqlist_lock)); - ASSERT(mutex_is_locked(&dqp->q_hash->qh_lock)); - - /* - * XXX(hch): horrible locking order, will get cleaned up ASAP. - */ - if (!mutex_trylock(&xfs_Gqm->qm_dqfrlist_lock)) { - mutex_unlock(&dqp->q_hash->qh_lock); - return 1; - } + struct xfs_mount *mp = dqp->q_mount; + struct xfs_dqhash *qh = dqp->q_hash; xfs_dqlock(dqp); - /* - * We really can't afford to purge a dquot that is - * referenced, because these are hard refs. - * It shouldn't happen in general because we went thru _all_ inodes in - * dqrele_all_inodes before calling this and didn't let the mountlock go. - * However it is possible that we have dquots with temporary - * references that are not attached to an inode. e.g. see xfs_setattr(). - */ - if (dqp->q_nrefs != 0) { - xfs_dqunlock(dqp); - mutex_unlock(&dqp->q_hash->qh_lock); - return (1); - } - - ASSERT(!list_empty(&dqp->q_freelist)); /* * If we're turning off quotas, we have to make sure that, for @@ -1313,19 +1297,14 @@ xfs_qm_dqpurge( } /* - * XXXIf we're turning this type of quotas off, we don't care + * If we are turning this type of quotas off, we don't care * about the dirty metadata sitting in this dquot. OTOH, if * we're unmounting, we do care, so we flush it and wait. */ if (XFS_DQ_IS_DIRTY(dqp)) { int error; - /* dqflush unlocks dqflock */ /* - * Given that dqpurge is a very rare occurrence, it is OK - * that we're holding the hashlist and mplist locks - * across the disk write. But, ... XXXsup - * * We don't care about getting disk errors here. We need * to purge this dquot anyway, so we go ahead regardless. */ @@ -1335,31 +1314,34 @@ xfs_qm_dqpurge( __func__, dqp); xfs_dqflock(dqp); } + ASSERT(atomic_read(&dqp->q_pincount) == 0); ASSERT(XFS_FORCED_SHUTDOWN(mp) || !(dqp->q_logitem.qli_item.li_flags & XFS_LI_IN_AIL)); + xfs_dqfunlock(dqp); + xfs_dqunlock(dqp); + + mutex_lock(&qh->qh_lock); list_del_init(&dqp->q_hashlist); qh->qh_version++; + mutex_unlock(&qh->qh_lock); + mutex_lock(&mp->m_quotainfo->qi_dqlist_lock); list_del_init(&dqp->q_mplist); mp->m_quotainfo->qi_dqreclaims++; mp->m_quotainfo->qi_dquots--; + mutex_unlock(&mp->m_quotainfo->qi_dqlist_lock); + mutex_lock(&xfs_Gqm->qm_dqfrlist_lock); + ASSERT(!list_empty(&dqp->q_freelist)); list_del_init(&dqp->q_freelist); xfs_Gqm->qm_dqfrlist_cnt--; - - xfs_dqfunlock(dqp); - xfs_dqunlock(dqp); - mutex_unlock(&xfs_Gqm->qm_dqfrlist_lock); - mutex_unlock(&qh->qh_lock); xfs_qm_dqdestroy(dqp); - return (0); } - /* * Give the buffer a little push if it is incore and * wait on the flush lock. Index: xfs/fs/xfs/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/xfs_qm.c 2011-11-25 11:45:50.215313871 +0100 +++ xfs/fs/xfs/xfs_qm.c 2011-11-25 11:45:53.351963543 +0100 @@ -398,7 +398,8 @@ again: mutex_lock(&q->qi_dqlist_lock); list_for_each_entry(dqp, &q->qi_dqlist, q_mplist) { xfs_dqlock(dqp); - if (! XFS_DQ_IS_DIRTY(dqp)) { + if ((dqp->dq_flags & XFS_DQ_FREEING) || + !XFS_DQ_IS_DIRTY(dqp)) { xfs_dqunlock(dqp); continue; } @@ -437,6 +438,7 @@ again: /* return ! busy */ return 0; } + /* * Release the group dquot pointers the user dquots may be * carrying around as a hint. mplist is locked on entry and exit. @@ -453,6 +455,13 @@ xfs_qm_detach_gdquots( ASSERT(mutex_is_locked(&q->qi_dqlist_lock)); list_for_each_entry(dqp, &q->qi_dqlist, q_mplist) { xfs_dqlock(dqp); + if (dqp->dq_flags & XFS_DQ_FREEING) { + xfs_dqunlock(dqp); + mutex_unlock(&q->qi_dqlist_lock); + delay(1); + mutex_lock(&q->qi_dqlist_lock); + goto again; + } if ((gdqp = dqp->q_gdquot)) { xfs_dqlock(gdqp); dqp->q_gdquot = NULL; @@ -489,8 +498,8 @@ xfs_qm_dqpurge_int( struct xfs_quotainfo *q = mp->m_quotainfo; struct xfs_dquot *dqp, *n; uint dqtype; - int nrecl; - int nmisses; + int nmisses = 0; + LIST_HEAD (dispose_list); if (!q) return 0; @@ -509,46 +518,27 @@ xfs_qm_dqpurge_int( */ xfs_qm_detach_gdquots(mp); - again: - nmisses = 0; - ASSERT(mutex_is_locked(&q->qi_dqlist_lock)); /* * Try to get rid of all of the unwanted dquots. The idea is to * get them off mplist and hashlist, but leave them on freelist. */ list_for_each_entry_safe(dqp, n, &q->qi_dqlist, q_mplist) { xfs_dqlock(dqp); - if ((dqp->dq_flags & dqtype) == 0) { - xfs_dqunlock(dqp); - continue; + if ((dqp->dq_flags & dqtype) != 0 && + !(dqp->dq_flags & XFS_DQ_FREEING)) { + if (dqp->q_nrefs == 0) { + dqp->dq_flags |= XFS_DQ_FREEING; + list_move_tail(&dqp->q_mplist, &dispose_list); + } else + nmisses++; } xfs_dqunlock(dqp); - - if (!mutex_trylock(&dqp->q_hash->qh_lock)) { - nrecl = q->qi_dqreclaims; - mutex_unlock(&q->qi_dqlist_lock); - mutex_lock(&dqp->q_hash->qh_lock); - mutex_lock(&q->qi_dqlist_lock); - - /* - * XXXTheoretically, we can get into a very long - * ping pong game here. - * No one can be adding dquots to the mplist at - * this point, but somebody might be taking things off. - */ - if (nrecl != q->qi_dqreclaims) { - mutex_unlock(&dqp->q_hash->qh_lock); - goto again; - } - } - - /* - * Take the dquot off the mplist and hashlist. It may remain on - * freelist in INACTIVE state. - */ - nmisses += xfs_qm_dqpurge(dqp); } mutex_unlock(&q->qi_dqlist_lock); + + list_for_each_entry_safe(dqp, n, &dispose_list, q_mplist) + xfs_qm_dqpurge(dqp); + return nmisses; } @@ -1667,25 +1657,16 @@ xfs_qm_init_quotainos( /* - * Just pop the least recently used dquot off the freelist and - * recycle it. The returned dquot is locked. + * Pop the least recently used dquot off the freelist and recycle it. */ -STATIC xfs_dquot_t * +STATIC struct xfs_dquot * xfs_qm_dqreclaim_one(void) { - xfs_dquot_t *dqpout; - xfs_dquot_t *dqp; - int restarts; - int startagain; - - restarts = 0; - dqpout = NULL; + struct xfs_dquot *dqp; + int restarts = 0; - /* lockorder: hashchainlock, freelistlock, mplistlock, dqlock, dqflock */ -again: - startagain = 0; mutex_lock(&xfs_Gqm->qm_dqfrlist_lock); - +restart: list_for_each_entry(dqp, &xfs_Gqm->qm_dqfrlist, q_freelist) { struct xfs_mount *mp = dqp->q_mount; xfs_dqlock(dqp); @@ -1701,7 +1682,6 @@ again: list_del_init(&dqp->q_freelist); xfs_Gqm->qm_dqfrlist_cnt--; restarts++; - startagain = 1; goto dqunlock; } @@ -1737,57 +1717,40 @@ again: } goto dqunlock; } + xfs_dqfunlock(dqp); /* - * We're trying to get the hashlock out of order. This races - * with dqlookup; so, we giveup and goto the next dquot if - * we couldn't get the hashlock. This way, we won't starve - * a dqlookup process that holds the hashlock that is - * waiting for the freelist lock. + * Prevent lookups now that we are past the point of no return. */ - if (!mutex_trylock(&dqp->q_hash->qh_lock)) { - restarts++; - goto dqfunlock; - } + dqp->dq_flags |= XFS_DQ_FREEING; + xfs_dqunlock(dqp); - /* - * This races with dquot allocation code as well as dqflush_all - * and reclaim code. So, if we failed to grab the mplist lock, - * giveup everything and start over. - */ - if (!mutex_trylock(&mp->m_quotainfo->qi_dqlist_lock)) { - restarts++; - startagain = 1; - goto qhunlock; - } + mutex_lock(&dqp->q_hash->qh_lock); + list_del_init(&dqp->q_hashlist); + dqp->q_hash->qh_version++; + mutex_unlock(&dqp->q_hash->qh_lock); - ASSERT(dqp->q_nrefs == 0); + mutex_lock(&mp->m_quotainfo->qi_dqlist_lock); list_del_init(&dqp->q_mplist); mp->m_quotainfo->qi_dquots--; mp->m_quotainfo->qi_dqreclaims++; - list_del_init(&dqp->q_hashlist); - dqp->q_hash->qh_version++; + mutex_unlock(&mp->m_quotainfo->qi_dqlist_lock); + + ASSERT(dqp->q_nrefs == 0); list_del_init(&dqp->q_freelist); xfs_Gqm->qm_dqfrlist_cnt--; - dqpout = dqp; - mutex_unlock(&mp->m_quotainfo->qi_dqlist_lock); -qhunlock: - mutex_unlock(&dqp->q_hash->qh_lock); -dqfunlock: - xfs_dqfunlock(dqp); + + mutex_unlock(&xfs_Gqm->qm_dqfrlist_lock); + return dqp; dqunlock: xfs_dqunlock(dqp); - if (dqpout) - break; if (restarts >= XFS_QM_RECLAIM_MAX_RESTARTS) break; - if (startagain) { - mutex_unlock(&xfs_Gqm->qm_dqfrlist_lock); - goto again; - } + goto restart; } + mutex_unlock(&xfs_Gqm->qm_dqfrlist_lock); - return dqpout; + return NULL; } /* Index: xfs/fs/xfs/xfs_quota.h =================================================================== --- xfs.orig/fs/xfs/xfs_quota.h 2011-11-25 11:45:50.228647131 +0100 +++ xfs/fs/xfs/xfs_quota.h 2011-11-25 11:45:53.351963543 +0100 @@ -87,6 +87,7 @@ typedef struct xfs_dqblk { #define XFS_DQ_PROJ 0x0002 /* project quota */ #define XFS_DQ_GROUP 0x0004 /* a group quota */ #define XFS_DQ_DIRTY 0x0008 /* dquot is dirty */ +#define XFS_DQ_FREEING 0x0010 /* dquot is beeing torn down */ #define XFS_DQ_ALLTYPES (XFS_DQ_USER|XFS_DQ_PROJ|XFS_DQ_GROUP) @@ -94,7 +95,8 @@ typedef struct xfs_dqblk { { XFS_DQ_USER, "USER" }, \ { XFS_DQ_PROJ, "PROJ" }, \ { XFS_DQ_GROUP, "GROUP" }, \ - { XFS_DQ_DIRTY, "DIRTY" } + { XFS_DQ_DIRTY, "DIRTY" }, \ + { XFS_DQ_FREEING, "FREEING" } /* * In the worst case, when both user and group quotas are on, Index: xfs/fs/xfs/xfs_dquot.h =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.h 2011-11-25 11:45:50.241980391 +0100 +++ xfs/fs/xfs/xfs_dquot.h 2011-11-25 11:45:53.351963543 +0100 @@ -133,7 +133,7 @@ static inline void xfs_dqunlock_nonotify extern void xfs_qm_dqdestroy(xfs_dquot_t *); extern int xfs_qm_dqflush(xfs_dquot_t *, uint); -extern int xfs_qm_dqpurge(xfs_dquot_t *); +extern void xfs_qm_dqpurge(xfs_dquot_t *); extern void xfs_qm_dqunpin_wait(xfs_dquot_t *); extern void xfs_qm_adjust_dqtimers(xfs_mount_t *, xfs_disk_dquot_t *); From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:40 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8SchZ225891 for ; Mon, 28 Nov 2011 02:28:39 -0600 X-ASG-Debug-ID: 1322468917-02c901f30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E6B5716E1BB5 for ; Mon, 28 Nov 2011 00:28:37 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id u6LNA5y72k0o4Qc7 for ; Mon, 28 Nov 2011 00:28:37 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZp-0000vY-4H for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:37 +0000 Message-Id: <20111128082837.096938133@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:27 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 05/16] xfs: cleanup dquot locking helpers Subject: [PATCH 05/16] xfs: cleanup dquot locking helpers References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-quota-clenaup-locking-helpers X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468917 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81522 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Mark the trivial lock wrappers as inline, and make the naming consistent for all of them. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_dquot.c | 31 ++++--------------------------- fs/xfs/xfs_dquot.h | 25 +++++++++++++++++++------ fs/xfs/xfs_dquot_item.c | 2 +- fs/xfs/xfs_qm.c | 2 +- 4 files changed, 25 insertions(+), 35 deletions(-) Index: xfs/fs/xfs/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.c 2011-11-25 11:45:32.668742260 +0100 +++ xfs/fs/xfs/xfs_dquot.c 2011-11-25 11:45:41.458694642 +0100 @@ -1257,40 +1257,17 @@ xfs_qm_dqflush( } -int -xfs_qm_dqlock_nowait( - xfs_dquot_t *dqp) -{ - return mutex_trylock(&dqp->q_qlock); -} - -void -xfs_dqlock( - xfs_dquot_t *dqp) -{ - mutex_lock(&dqp->q_qlock); -} - void xfs_dqunlock( xfs_dquot_t *dqp) { - mutex_unlock(&(dqp->q_qlock)); + xfs_dqunlock_nonotify(dqp); if (dqp->q_logitem.qli_dquot == dqp) { - /* Once was dqp->q_mount, but might just have been cleared */ xfs_trans_unlocked_item(dqp->q_logitem.qli_item.li_ailp, - (xfs_log_item_t*)&(dqp->q_logitem)); + &dqp->q_logitem.qli_item); } } - -void -xfs_dqunlock_nonotify( - xfs_dquot_t *dqp) -{ - mutex_unlock(&(dqp->q_qlock)); -} - /* * Lock two xfs_dquot structures. * @@ -1370,7 +1347,7 @@ xfs_qm_dqpurge( * Block on the flush lock after nudging dquot buffer, * if it is incore. */ - xfs_qm_dqflock_pushbuf_wait(dqp); + xfs_dqflock_pushbuf_wait(dqp); } /* @@ -1427,7 +1404,7 @@ xfs_qm_dqpurge( * wait on the flush lock. */ void -xfs_qm_dqflock_pushbuf_wait( +xfs_dqflock_pushbuf_wait( xfs_dquot_t *dqp) { xfs_mount_t *mp = dqp->q_mount; Index: xfs/fs/xfs/xfs_dquot.h =================================================================== --- xfs.orig/fs/xfs/xfs_dquot.h 2011-11-05 08:54:00.492993239 +0100 +++ xfs/fs/xfs/xfs_dquot.h 2011-11-25 11:45:41.458694642 +0100 @@ -102,6 +102,21 @@ static inline void xfs_dqfunlock(xfs_dqu complete(&dqp->q_flush); } +static inline int xfs_dqlock_nowait(struct xfs_dquot *dqp) +{ + return mutex_trylock(&dqp->q_qlock); +} + +static inline void xfs_dqlock(struct xfs_dquot *dqp) +{ + mutex_lock(&dqp->q_qlock); +} + +static inline void xfs_dqunlock_nonotify(struct xfs_dquot *dqp) +{ + mutex_unlock(&dqp->q_qlock); +} + #define XFS_DQ_IS_LOCKED(dqp) (mutex_is_locked(&((dqp)->q_qlock))) #define XFS_DQ_IS_DIRTY(dqp) ((dqp)->dq_flags & XFS_DQ_DIRTY) #define XFS_QM_ISUDQ(dqp) ((dqp)->dq_flags & XFS_DQ_USER) @@ -120,8 +135,6 @@ extern void xfs_qm_dqdestroy(xfs_dquot_ extern int xfs_qm_dqflush(xfs_dquot_t *, uint); extern int xfs_qm_dqpurge(xfs_dquot_t *); extern void xfs_qm_dqunpin_wait(xfs_dquot_t *); -extern int xfs_qm_dqlock_nowait(xfs_dquot_t *); -extern void xfs_qm_dqflock_pushbuf_wait(xfs_dquot_t *dqp); extern void xfs_qm_adjust_dqtimers(xfs_mount_t *, xfs_disk_dquot_t *); extern void xfs_qm_adjust_dqlimits(xfs_mount_t *, @@ -129,9 +142,9 @@ extern void xfs_qm_adjust_dqlimits(xfs_ extern int xfs_qm_dqget(xfs_mount_t *, xfs_inode_t *, xfs_dqid_t, uint, uint, xfs_dquot_t **); extern void xfs_qm_dqput(xfs_dquot_t *); -extern void xfs_dqlock(xfs_dquot_t *); -extern void xfs_dqlock2(xfs_dquot_t *, xfs_dquot_t *); -extern void xfs_dqunlock(xfs_dquot_t *); -extern void xfs_dqunlock_nonotify(xfs_dquot_t *); + +extern void xfs_dqlock2(struct xfs_dquot *, struct xfs_dquot *); +extern void xfs_dqunlock(struct xfs_dquot *); +extern void xfs_dqflock_pushbuf_wait(struct xfs_dquot *dqp); #endif /* __XFS_DQUOT_H__ */ Index: xfs/fs/xfs/xfs_dquot_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_dquot_item.c 2011-11-25 11:45:32.668742260 +0100 +++ xfs/fs/xfs/xfs_dquot_item.c 2011-11-25 11:45:41.462027957 +0100 @@ -236,7 +236,7 @@ xfs_qm_dquot_logitem_trylock( if (atomic_read(&dqp->q_pincount) > 0) return XFS_ITEM_PINNED; - if (!xfs_qm_dqlock_nowait(dqp)) + if (!xfs_dqlock_nowait(dqp)) return XFS_ITEM_LOCKED; if (!xfs_dqflock_nowait(dqp)) { Index: xfs/fs/xfs/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/xfs_qm.c 2011-11-25 11:45:39.375372594 +0100 +++ xfs/fs/xfs/xfs_qm.c 2011-11-25 11:45:41.462027957 +0100 @@ -443,7 +443,7 @@ again: * out immediately. We'll be able to acquire * the flush lock when the I/O completes. */ - xfs_qm_dqflock_pushbuf_wait(dqp); + xfs_dqflock_pushbuf_wait(dqp); } /* * Let go of the mplist lock. We don't want to hold it From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 02:28:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAS8Sd5g225917 for ; Mon, 28 Nov 2011 02:28:40 -0600 X-ASG-Debug-ID: 1322468918-6a1302510000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 287AB16E1BB5 for ; Mon, 28 Nov 2011 00:28:38 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id NCgHADFjGWPkeDcs for ; Mon, 28 Nov 2011 00:28:38 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUwZq-0000zC-CB for xfs@oss.sgi.com; Mon, 28 Nov 2011 08:28:38 +0000 Message-Id: <20111128082838.328519173@bombadil.infradead.org> User-Agent: quilt/0.48-1 Date: Mon, 28 Nov 2011 03:27:34 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 12/16] xfs: simplify xfs_qm_detach_gdquots Subject: [PATCH 12/16] xfs: simplify xfs_qm_detach_gdquots References: <20111128082722.604873274@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-quota-simplify-xfs_qm_detach_gdquots X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322468919 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81522 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean With the new lock order there is no reason to drop qi_dqlist_lock around calls to xfs_qm_dqrele. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_qm.c | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) Index: xfs/fs/xfs/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/xfs_qm.c 2011-10-27 22:40:07.538179215 +0200 +++ xfs/fs/xfs/xfs_qm.c 2011-10-27 22:40:08.124671538 +0200 @@ -449,7 +449,6 @@ xfs_qm_detach_gdquots( { struct xfs_quotainfo *q = mp->m_quotainfo; struct xfs_dquot *dqp, *gdqp; - int nrecl; again: ASSERT(mutex_is_locked(&q->qi_dqlist_lock)); @@ -462,25 +461,14 @@ xfs_qm_detach_gdquots( mutex_lock(&q->qi_dqlist_lock); goto again; } - if ((gdqp = dqp->q_gdquot)) { - xfs_dqlock(gdqp); + + gdqp = dqp->q_gdquot; + if (gdqp) dqp->q_gdquot = NULL; - } xfs_dqunlock(dqp); - if (gdqp) { - /* - * Can't hold the mplist lock across a dqput. - * XXXmust convert to marker based iterations here. - */ - nrecl = q->qi_dqreclaims; - mutex_unlock(&q->qi_dqlist_lock); - xfs_qm_dqput(gdqp); - - mutex_lock(&q->qi_dqlist_lock); - if (nrecl != q->qi_dqreclaims) - goto again; - } + if (gdqp) + xfs_qm_dqrele(gdqp); } } From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 05:00:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASB0jg2232865 for ; Mon, 28 Nov 2011 05:00:46 -0600 X-ASG-Debug-ID: 1322478044-6bb7011b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 48BFB27B6FB; Mon, 28 Nov 2011 03:00:44 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id wacFWK4IkwiNedfp; Mon, 28 Nov 2011 03:00:44 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUyx1-0003aJ-9C; Mon, 28 Nov 2011 11:00:43 +0000 Date: Mon, 28 Nov 2011 06:00:43 -0500 From: Christoph Hellwig To: Ben Myers Cc: stable@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/6] XFS update for 3.1-stable Subject: Re: [PATCH 0/6] XFS update for 3.1-stable Message-ID: <20111128110043.GA13766@infradead.org> References: <1322084293-23557-1-git-send-email-bpm@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1322084293-23557-1-git-send-email-bpm@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322478045 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81533 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 23, 2011 at 03:38:07PM -0600, Ben Myers wrote: > This is a series of XFS fixes from current mainline which is important for > 3.1-stable. Note that it is the same patch set that Christoph submitted for > 3.0-stable, minus the first three patches which are already included in 3.1. > > My QA came out ok with these six patches atop 3.1.y. Apologies to those who > got this mail twice. The updates looks good to me. From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 05:02:01 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASB20Rn232915 for ; Mon, 28 Nov 2011 05:02:01 -0600 X-ASG-Debug-ID: 1322478119-7c13005e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3395F943993 for ; Mon, 28 Nov 2011 03:01:59 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id xdaJew4qGTfrRUex for ; Mon, 28 Nov 2011 03:01:59 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUyyE-0003cc-GJ; Mon, 28 Nov 2011 11:01:58 +0000 Date: Mon, 28 Nov 2011 06:01:58 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss , ext4 development X-ASG-Orig-Subj: Re: [PATCH] xfstests: make xattr test 020 generic Subject: Re: [PATCH] xfstests: make xattr test 020 generic Message-ID: <20111128110158.GB13766@infradead.org> References: <4ECD4579.4080706@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4ECD4579.4080706@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322478120 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.32 X-Barracuda-Spam-Status: No, SCORE=-1.32 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MARKETING_SUBJECT, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81532 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 23, 2011 at 01:11:53PM -0600, Eric Sandeen wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > 020 can be made generic by limiting the total attribute space > used in the tests as appropriate. Unless we know we have a > large-xattr-capable fs, limit total space to a bit under one > fs block. > > Now passes for me on ext3, ext4, btrfs, as well as xfs. > > Signed-off-by: Eric Sandeen > - --- > > incidentally the test used to send a 100k xattr value to > the attr command on xfs; it wrote only 64k but did not complain. > Feature or bug? > > diff --git a/020 b/020 > index 56b9c3c..d196318 100755 > - --- a/020 > +++ b/020 > @@ -80,7 +80,7 @@ _attr_list() > > > # real QA test starts here > - -_supported_fs xfs udf > +_supported_fs generic > _supported_os Linux > > _require_attrs > @@ -119,9 +119,19 @@ _attr_list $testfile > > echo "*** add lots of attributes" > v=0 > - -while [ $v -lt 1000 ] > + > +# set maximum total attr space based on fs type > +if [ "$FSTYP" == "xfs" -o "$FSTYP" == "udf" ]; then > + NUMATTRS=1000 > +else # Assume max ~1 block of attrs > + BLOCK_SIZE=`stat -f $TEST_DEV | grep "Block size" | cut -d " " -f3` > + # user.attribute_XXX="value.XXX" is about 32 bytes; leave some overhead > + let NUMATTRS=$BLOCK_SIZE/40 > +fi I'd prefer if we define the limits in common.rc - we shouldn't have to spread too much fs knowledege over individual tests. > +if [ "$FSTYP" == "xfs" -o "$FSTYP" == "udf" -o "$FSTYP" == "btrfs" ]; then > + ATTRVAL_SIZE=64 > +else # Assume max ~1 block of attrs > + BLOCK_SIZE=`stat -f $TEST_DEV | grep "Block size" | cut -d " " -f3` > + # leave a little overhead > + let ATTRVAL_SIZE=$BLOCK_SIZE-256 > +fi same for this one. Except for that these changes looks fine to me. From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 05:02:30 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_33 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASB2UWe232937 for ; Mon, 28 Nov 2011 05:02:30 -0600 X-ASG-Debug-ID: 1322478148-5b9601b90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 48A4E9439A3 for ; Mon, 28 Nov 2011 03:02:29 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id WxFwH5izpnw52luU for ; Mon, 28 Nov 2011 03:02:29 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUyyi-0003cv-Hf; Mon, 28 Nov 2011 11:02:28 +0000 Date: Mon, 28 Nov 2011 06:02:28 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss , ext4 development X-ASG-Orig-Subj: Re: [PATCH] xfstests: mount other filesystems with selinux context as well Subject: Re: [PATCH] xfstests: mount other filesystems with selinux context as well Message-ID: <20111128110228.GC13766@infradead.org> References: <4ECD3262.105@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4ECD3262.105@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322478149 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81532 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 23, 2011 at 11:50:26AM -0600, Eric Sandeen wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > For some reason, non-xfs filesystems aren't getting mounted with > the selinux context; perhaps because none of the xattr tests used > to work on anything but xfs? > > Anyway, 062 fails for extN unless we mount with the fs-wide > context. > > Signed-off-by: Eric Sandeen > - --- > > diff --git a/common.rc b/common.rc > index cab0b64..5998ff2 100644 > - --- a/common.rc > +++ b/common.rc > @@ -86,14 +86,17 @@ _mount_opts() > export MOUNT_OPTIONS=$NFS_MOUNT_OPTIONS > ;; > ext2|ext3|ext4|ext4dev) > - - # acls & xattrs aren't turned on by default on ext$FOO > + export SELINUX_MOUNT_OPTIONS > + # acls & xattrs aren't turned on by default on ext$FOO in old kernels > export MOUNT_OPTIONS="-o acl,user_xattr $EXT_MOUNT_OPTIONS" > ;; > reiserfs) > + export SELINUX_MOUNT_OPTIONS > # acls & xattrs aren't turned on by default on reiserfs > export MOUNT_OPTIONS="-o acl,user_xattr $REISERFS_MOUNT_OPTIONS" > ;; > gfs2) > + export SELINUX_MOUNT_OPTIONS > # acls aren't turned on by default on gfs2 > export MOUNT_OPTIONS="-o acl $GFS2_MOUNT_OPTIONS" > ;; shouldn't the "export SELINUX_MOUNT_OPTIONS" simply move to common code? From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 05:09:43 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_62 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASB9h4h233103 for ; Mon, 28 Nov 2011 05:09:43 -0600 X-ASG-Debug-ID: 1322478581-5b9901a20000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 03F2916E1E35 for ; Mon, 28 Nov 2011 03:09:42 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id j9PFc7eBkOCefKAq for ; Mon, 28 Nov 2011 03:09:42 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUz5h-0004u7-E7; Mon, 28 Nov 2011 11:09:41 +0000 Date: Mon, 28 Nov 2011 06:09:41 -0500 From: Christoph Hellwig To: hank peng Cc: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: stale NFS file handle problem on XFS inode64 Subject: Re: stale NFS file handle problem on XFS inode64 Message-ID: <20111128110941.GE13766@infradead.org> References: <20111121170459.GA1327@infradead.org> <20111122221515.GA29540@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322478583 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81534 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 23, 2011 at 09:19:26AM +0800, hank peng wrote: > yes, I have already done that. I mount the expoted NFS directory in > same machine(kernel version is 2.6.35.6), but it still didn't work. Ok, sounds like this is a server side issue. > > Then, I used fsid=$(my exported filesystem ID) option in /etc/exports > and tried again, it still gave me back "stale NFS file handle" when > entering a specific subdirectory. > I noticed that from NFS client(in same machine with NFS server) side, > the inode number of this subdirectory was changed to be within 32 > limit, but still "stale NFS file handle" came back. Do you mean the NFS mount displayed a 32-bit inode number, but it was still 64-bit on the XFS filesystem directly? Can you post the inode numbers (e.g. from ls -i) for both sides? From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 05:19:49 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASBJmO3233374 for ; Mon, 28 Nov 2011 05:19:49 -0600 X-ASG-Debug-ID: 1322479187-7ef600b00000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 49BE327B336 for ; Mon, 28 Nov 2011 03:19:48 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id Hk9R0LvY61F4GrAV for ; Mon, 28 Nov 2011 03:19:48 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUzFT-0006uI-BF; Mon, 28 Nov 2011 11:19:47 +0000 Date: Mon, 28 Nov 2011 06:19:47 -0500 From: Christoph Hellwig To: Guoquan Yang Cc: linux-xfs@oss.sgi.com, hank peng X-ASG-Orig-Subj: Re: xfs: validate inode numbers in file handles correctly Subject: Re: xfs: validate inode numbers in file handles correctly Message-ID: <20111128111947.GA26454@infradead.org> References: <1276846374-23916-1-git-send-email-david@fromorbit.com> <20111123143045.GA20892@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111123143045.GA20892@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322479188 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81533 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Guoquan and hank, are you using 32-bit or 64-bit kernels? I just noticed we have a problem with exporting 64-bit inodes on 32-bit kernel because the VFS i_ino field is just 32-bits long. The patch below would fix that issue. --- xfs.orig/fs/xfs/linux-2.6/xfs_export.c 2011-11-28 12:11:08.923630697 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_export.c 2011-11-28 12:13:21.766244360 +0100 @@ -61,6 +61,8 @@ xfs_fs_encode_fh( struct fid *fid = (struct fid *)fh; struct xfs_fid64 *fid64 = (struct xfs_fid64 *)fh; struct inode *inode = dentry->d_inode; + struct inode *parent; + struct xfs_inode *ip = XFS_I(inode); int fileid_type; int len; @@ -98,22 +100,24 @@ xfs_fs_encode_fh( switch (fileid_type) { case FILEID_INO32_GEN_PARENT: spin_lock(&dentry->d_lock); - fid->i32.parent_ino = dentry->d_parent->d_inode->i_ino; - fid->i32.parent_gen = dentry->d_parent->d_inode->i_generation; + parent = dentry->d_parent->d_inode; + fid->i32.parent_ino = XFS_I(parent)->i_ino; + fid->i32.parent_gen = parent->i_generation; spin_unlock(&dentry->d_lock); /*FALLTHRU*/ case FILEID_INO32_GEN: - fid->i32.ino = inode->i_ino; + fid->i32.ino = ip->i_ino; fid->i32.gen = inode->i_generation; break; case FILEID_INO32_GEN_PARENT | XFS_FILEID_TYPE_64FLAG: spin_lock(&dentry->d_lock); - fid64->parent_ino = dentry->d_parent->d_inode->i_ino; - fid64->parent_gen = dentry->d_parent->d_inode->i_generation; + parent = dentry->d_parent->d_inode; + fid64->parent_ino = XFS_I(parent)->i_ino; + fid64->parent_gen = parent->i_generation; spin_unlock(&dentry->d_lock); /*FALLTHRU*/ case FILEID_INO32_GEN | XFS_FILEID_TYPE_64FLAG: - fid64->ino = inode->i_ino; + fid64->ino = ip->i_ino; fid64->gen = inode->i_generation; break; } From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 05:32:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,J_CHICKENPOX_45, J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASBWvac233945 for ; Mon, 28 Nov 2011 05:32:57 -0600 X-ASG-Debug-ID: 1322478186-032c02b80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7AD8C19D6F8E for ; Mon, 28 Nov 2011 03:03:06 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id n5ORWQGCilSH4Dln for ; Mon, 28 Nov 2011 03:03:06 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RUyzG-0003di-MB; Mon, 28 Nov 2011 11:03:02 +0000 Date: Mon, 28 Nov 2011 06:03:02 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Theodore Tso , "linux-ext4@vger.kernel.org" , Yu Jian , Andreas Dilger , xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfstests: Sort recursive getfattr output in 062 Subject: Re: [PATCH] xfstests: Sort recursive getfattr output in 062 Message-ID: <20111128110302.GD13766@infradead.org> References: <4EC10664.1080501@tuxadero.com> <20111115142246.GA7516@thunk.org> <246EA1CC-3C33-4D41-80C0-2331C426EBB0@whamcloud.com> <4ECA4282.5020908@whamcloud.com> <401CC4FF-8955-4D5F-B620-5C39AF566123@mit.edu> <4ECB2ADE.3010007@redhat.com> <4ECD28D1.1080800@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4ECD28D1.1080800@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322478186 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81535 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Nov 23, 2011 at 11:09:37AM -0600, Eric Sandeen wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Test 062 was made "generic" a while back, but it fails on any filesystem > which returns getfattr -R results (aka readdir results) in something > other than inode-order. > > With a little awk-fu we can sort the records from getfattr -R so that > the output is the same for xfs as well as ext4, etc. > > Also filter out lost+found which extN creates at mkfs time, but > some other filesystems do not. Looks fine to me, except that I'd put the sorting helper into common.attr. Reviewed-by: Christoph Hellwig From greg@kroah.com Mon Nov 28 07:48:46 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASDmjhZ236990 for ; Mon, 28 Nov 2011 07:48:46 -0600 X-ASG-Debug-ID: 1322488124-3f3a00fe0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from out2.smtp.messagingengine.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2E5804FB6FF for ; Mon, 28 Nov 2011 05:48:44 -0800 (PST) Received: from out2.smtp.messagingengine.com (out2.smtp.messagingengine.com [66.111.4.26]) by cuda.sgi.com with ESMTP id vfr0sQgsCTdDELTE for ; Mon, 28 Nov 2011 05:48:44 -0800 (PST) Received: from compute5.internal (compute5.nyi.mail.srv.osa [10.202.2.45]) by gateway1.nyi.mail.srv.osa (Postfix) with ESMTP id 4A6A420468 for ; Mon, 28 Nov 2011 08:48:44 -0500 (EST) Received: from frontend2.nyi.mail.srv.osa ([10.202.2.161]) by compute5.internal (MEProxy); Mon, 28 Nov 2011 08:48:44 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=date:from:to:cc:subject:message-id :references:mime-version:content-type:in-reply-to; s=smtpout; bh=4dxdckXibnctSAsulXLAIfaLSvU=; b=DZAZEIiqiH4iou+kpTG+MYadZy6n 9QiUKcfXuJip+w7khJ8d6x+WYHN91QrObuXgzPe/2x0p7IueOyvHIb+5FycPiY7B JpYshJu93rCyFK0M9CO0Xr+hTWJeOVIp7ORbkTmHbAzW7+ZXlVxGNmSG/95vMYS8 /L5LjG1rVx2EuUM= X-Sasl-enc: GQiRakzvi47l/1FkzaZr47aNsNenU0yoTFOLngKrsaL1 1322488123 Received: from localhost (221x245x165x18.ap221.ftth.ucom.ne.jp [221.245.165.18]) by mail.messagingengine.com (Postfix) with ESMTPSA id 7D17F4824AC; Mon, 28 Nov 2011 08:48:43 -0500 (EST) Date: Mon, 28 Nov 2011 22:48:29 +0900 From: Greg KH To: Christoph Hellwig Cc: Ben Myers , stable@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/6] XFS update for 3.1-stable Subject: Re: [PATCH 0/6] XFS update for 3.1-stable Message-ID: <20111128134829.GC21041@kroah.com> References: <1322084293-23557-1-git-send-email-bpm@sgi.com> <20111128110043.GA13766@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111128110043.GA13766@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: out2.smtp.messagingengine.com[66.111.4.26] X-Barracuda-Start-Time: 1322488125 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81543 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 28, 2011 at 06:00:43AM -0500, Christoph Hellwig wrote: > On Wed, Nov 23, 2011 at 03:38:07PM -0600, Ben Myers wrote: > > This is a series of XFS fixes from current mainline which is important for > > 3.1-stable. Note that it is the same patch set that Christoph submitted for > > 3.0-stable, minus the first three patches which are already included in 3.1. > > > > My QA came out ok with these six patches atop 3.1.y. Apologies to those who > > got this mail twice. > > The updates looks good to me. I never saw this series once, can someone please resend them as I don't see them anywhere. confused, greg k-h From jon@campbell-lange.net Mon Nov 28 07:55:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASDtKIA237212 for ; Mon, 28 Nov 2011 07:55:20 -0600 X-ASG-Debug-ID: 1322488518-3f3400f20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from campbell-lange.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 652164FB24B for ; Mon, 28 Nov 2011 05:55:19 -0800 (PST) Received: from campbell-lange.net (campbell-lange.net [93.191.37.68]) by cuda.sgi.com with ESMTP id DBDUzb48tkIwlB55 for ; Mon, 28 Nov 2011 05:55:19 -0800 (PST) Received: from jon by campbell-lange.net with local (Exim 4.72) (envelope-from ) id 1RV1fy-0000KN-C0; Mon, 28 Nov 2011 13:55:18 +0000 Date: Mon, 28 Nov 2011 13:55:18 +0000 From: Jon Marshall To: xfs@oss.sgi.com Cc: support@campbell-lange.net, Rory Campbell-Lange X-ASG-Orig-Subj: XFS on CoRAID errors with SMB Subject: XFS on CoRAID errors with SMB Message-ID: <20111128135518.GA1232@campbell-lange.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: campbell-lange.net[93.191.37.68] X-Barracuda-Start-Time: 1322488519 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0103 1.0000 -1.9535 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.95 X-Barracuda-Spam-Status: No, SCORE=-1.95 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81545 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi, We have recently experienced what appear to be XFS filesystem errors on a samba share. The actual filesystem resides on a network attached storage device, a Coraid. The attached server locked up totally, and we forced to hard reset it. I have the following trace from the kernel logs: [6128798.051868] smbd: page allocation failure. order:4, mode:0xc0d0 [6128798.051872] Pid: 16908, comm: smbd Not tainted 2.6.32-5-amd64 #1 [6128798.051874] Call Trace: [6128798.051882] [] ? __alloc_pages_nodemask+0x592/0x5f4 [6128798.051885] [] ? __get_free_pages+0x9/0x46 [6128798.051889] [] ? __kmalloc+0x3f/0x141 [6128798.051893] [] ? getxattr+0x89/0x117 [6128798.051896] [] ? virt_to_head_page+0x9/0x2a [6128798.051899] [] ? user_path_at+0x52/0x79 [6128798.051919] [] ? xfs_xattr_put_listent+0x0/0xe5 [xfs] [6128798.051922] [] ? virt_to_head_page+0x9/0x2a [6128798.051925] [] ? _atomic_dec_and_lock+0x33/0x50 [6128798.051928] [] ? sys_getxattr+0x45/0x60 [6128798.051931] [] ? system_call_fastpath+0x16/0x1b smbd seems to throw these errors for about 15 minutes, then sshd starts throwing errors and shortly after the system became unresponsive. Just wondering if anyone had any experience of similar results, with XFS on a CoRAID device or XFS SMB shares? Thanks Jon -- Jon Marshall Technical Officer jon@campbell-lange.net . Campbell-Lange Workshop www.campbell-lange.net 0207 6311 555 3 Tottenham Street London W1T 2AF Registered in England No. 04551928 From landman@scalableinformatics.com Mon Nov 28 08:45:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_74 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASEjiC8238373 for ; Mon, 28 Nov 2011 08:45:44 -0600 X-ASG-Debug-ID: 1322491536-5bd202cd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from crunch.scalableinformatics.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C9868652DE2 for ; Mon, 28 Nov 2011 06:45:36 -0800 (PST) Received: from crunch.scalableinformatics.com (173-10-54-97-Michigan.hfc.comcastbusiness.net [173.10.54.97]) by cuda.sgi.com with ESMTP id q6UvPgQv1tqOOyom for ; Mon, 28 Nov 2011 06:45:36 -0800 (PST) Received: from crunch.scalableinformatics.com (localhost [127.0.0.1]) by crunch.scalableinformatics.com (Postfix) with ESMTP id 7F70580AC9FF for ; Mon, 28 Nov 2011 09:45:35 -0500 (EST) Received: from [192.168.1.171] (metal.scalableinformatics.com [192.168.1.171]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by crunch.scalableinformatics.com (Postfix) with ESMTPSA id 75D138055E47 for ; Mon, 28 Nov 2011 09:45:35 -0500 (EST) Message-ID: <4ED39EBE.2070206@scalableinformatics.com> Date: Mon, 28 Nov 2011 09:46:22 -0500 From: Joe Landman Reply-To: landman@scalableinformatics.com Organization: Scalable Informatics User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111110 Thunderbird/8.0 MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS on CoRAID errors with SMB Subject: Re: XFS on CoRAID errors with SMB References: <20111128135518.GA1232@campbell-lange.net> In-Reply-To: <20111128135518.GA1232@campbell-lange.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: ClamAV using ClamSMTP X-Barracuda-Connect: 173-10-54-97-Michigan.hfc.comcastbusiness.net[173.10.54.97] X-Barracuda-Start-Time: 1322491537 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0197 1.0000 -1.8927 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.29 X-Barracuda-Spam-Status: No, SCORE=-1.29 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81548 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Status: Clean On 11/28/2011 08:55 AM, Jon Marshall wrote: > Hi, > > We have recently experienced what appear to be XFS filesystem errors on > a samba share. The actual filesystem resides on a network attached > storage device, a Coraid. The attached server locked up totally, and we > forced to hard reset it. This is (from our past experience working with these units and the AoE system), more likely the AoE driver crashing (or something on the underlying network failing). From there, the file system eventually dies. This isn't an xfs problem per se, xfs is sort of an uwilling participant in a slow motion crash. > I have the following trace from the kernel logs: > > [6128798.051868] smbd: page allocation failure. order:4, mode:0xc0d0 > [6128798.051872] Pid: 16908, comm: smbd Not tainted 2.6.32-5-amd64 #1 > [6128798.051874] Call Trace: > [6128798.051882] [] ? __alloc_pages_nodemask+0x592/0x5f4 > [6128798.051885] [] ? __get_free_pages+0x9/0x46 > [6128798.051889] [] ? __kmalloc+0x3f/0x141 If you note the failed kmalloc, something ran you out of memory. What we've run into in the past with this has been a driver memory leak (usually older model e1000 or similar drivers) [...] > smbd seems to throw these errors for about 15 minutes, then sshd starts > throwing errors and shortly after the system became unresponsive. > > Just wondering if anyone had any experience of similar results, with XFS > on a CoRAID device or XFS SMB shares? This is what you see when the AoE stack collapses due to a crash of one of the lower block rungs. XFS can't run if it can't allocate memory for itself. smbd dies when the underlying filesystem goes away. sshd probably gets unresponsive in part, due to all the IOs queuing up that the scheduler can't do anything with. Before sshd stops working, user load winds up past 5x number of CPUs, then past 10x, then ... Once you see this happening, its time to kill the upper level stacks if possible, and unmount the file system as rapidly as possible. If you can't kill the stuff above it, a 'umount -l ' is your friend. You *may* be able to regain enough control for a non-crash based reboot. Even with this, I'd recommend changing / to sync before either forcing a reboot mount -o remount,sync / to preserve the integrity of the OS drive. Then reboot (or if the user load is too high, and a reboot command will just hang ... hopefully you have IPMI on you unit so you can do an 'ipmitool -I open chassis power cycle' hard bounce) > > Thanks > Jon > -- Joseph Landman, Ph.D Founder and CEO Scalable Informatics Inc. email: landman@scalableinformatics.com web : http://scalableinformatics.com http://scalableinformatics.com/sicluster phone: +1 734 786 8423 x121 fax : +1 866 888 3112 cell : +1 734 612 4615 From jon@campbell-lange.net Mon Nov 28 09:26:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_74 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASFQu9r239590 for ; Mon, 28 Nov 2011 09:26:57 -0600 X-ASG-Debug-ID: 1322494013-3eb600070000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from campbell-lange.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DCD1012800DC for ; Mon, 28 Nov 2011 07:26:53 -0800 (PST) Received: from campbell-lange.net (campbell-lange.net [93.191.37.68]) by cuda.sgi.com with ESMTP id FAjzoMlwhkY5mwCP for ; Mon, 28 Nov 2011 07:26:53 -0800 (PST) Received: from jon by campbell-lange.net with local (Exim 4.72) (envelope-from ) id 1RV36a-0000eG-AL; Mon, 28 Nov 2011 15:26:52 +0000 Date: Mon, 28 Nov 2011 15:26:52 +0000 From: Jon Marshall To: Joe Landman Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS on CoRAID errors with SMB Subject: Re: XFS on CoRAID errors with SMB Message-ID: <20111128152652.GD1795@campbell-lange.net> References: <20111128135518.GA1232@campbell-lange.net> <4ED39EBE.2070206@scalableinformatics.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4ED39EBE.2070206@scalableinformatics.com> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: campbell-lange.net[93.191.37.68] X-Barracuda-Start-Time: 1322494014 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0200 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81550 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Joe, Thanks for the rapid response. Is this something that has been reported often in relation to AoE? Is there any chance you could point us in the direction of some more background on the issue? I am checking the AoE mailing list, but if you know of something specific that would be very helpful. I am also looking into the ethernet drivers we have in place on the system in question. Again, thanks for the quick and informative response. Jon On Mon, Nov 28, 2011 at 09:46:22AM -0500, Joe Landman wrote: > On 11/28/2011 08:55 AM, Jon Marshall wrote: > >Hi, > > > >We have recently experienced what appear to be XFS filesystem errors on > >a samba share. The actual filesystem resides on a network attached > >storage device, a Coraid. The attached server locked up totally, and we > >forced to hard reset it. > > This is (from our past experience working with these units and the > AoE system), more likely the AoE driver crashing (or something on > the underlying network failing). From there, the file system > eventually dies. > > This isn't an xfs problem per se, xfs is sort of an uwilling > participant in a slow motion crash. > > >I have the following trace from the kernel logs: > > > >[6128798.051868] smbd: page allocation failure. order:4, mode:0xc0d0 > >[6128798.051872] Pid: 16908, comm: smbd Not tainted 2.6.32-5-amd64 #1 > >[6128798.051874] Call Trace: > >[6128798.051882] [] ? __alloc_pages_nodemask+0x592/0x5f4 > >[6128798.051885] [] ? __get_free_pages+0x9/0x46 > >[6128798.051889] [] ? __kmalloc+0x3f/0x141 > > If you note the failed kmalloc, something ran you out of memory. > What we've run into in the past with this has been a driver memory > leak (usually older model e1000 or similar drivers) > > [...] > > >smbd seems to throw these errors for about 15 minutes, then sshd starts > >throwing errors and shortly after the system became unresponsive. > > > >Just wondering if anyone had any experience of similar results, with XFS > >on a CoRAID device or XFS SMB shares? > > This is what you see when the AoE stack collapses due to a crash of > one of the lower block rungs. XFS can't run if it can't allocate > memory for itself. smbd dies when the underlying filesystem goes > away. sshd probably gets unresponsive in part, due to all the IOs > queuing up that the scheduler can't do anything with. Before sshd > stops working, user load winds up past 5x number of CPUs, then past > 10x, then ... > > Once you see this happening, its time to kill the upper level stacks > if possible, and unmount the file system as rapidly as possible. If > you can't kill the stuff above it, a 'umount -l ' is your friend. > You *may* be able to regain enough control for a non-crash based > reboot. Even with this, I'd recommend changing / to sync before > either forcing a reboot > > mount -o remount,sync / > > to preserve the integrity of the OS drive. > > Then reboot (or if the user load is too high, and a reboot command > will just hang ... hopefully you have IPMI on you unit so you can do > an 'ipmitool -I open chassis power cycle' hard bounce) > > > > > > > > >Thanks > >Jon > > > > > -- > Joseph Landman, Ph.D > Founder and CEO > Scalable Informatics Inc. > email: landman@scalableinformatics.com > web : http://scalableinformatics.com > http://scalableinformatics.com/sicluster > phone: +1 734 786 8423 x121 > fax : +1 866 888 3112 > cell : +1 734 612 4615 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs -- Jon Marshall Technical Officer jon@campbell-lange.net . Campbell-Lange Workshop www.campbell-lange.net 0207 6311 555 3 Tottenham Street London W1T 2AF Registered in England No. 04551928 From landman@scalableinformatics.com Mon Nov 28 09:36:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASFa5Wr239918 for ; Mon, 28 Nov 2011 09:36:09 -0600 X-ASG-Debug-ID: 1322494561-3f4f029c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from crunch.scalableinformatics.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2BA78572103 for ; Mon, 28 Nov 2011 07:36:01 -0800 (PST) Received: from crunch.scalableinformatics.com (173-10-54-97-Michigan.hfc.comcastbusiness.net [173.10.54.97]) by cuda.sgi.com with ESMTP id RAo2mlk5nlD4pDoS for ; Mon, 28 Nov 2011 07:36:01 -0800 (PST) Received: from crunch.scalableinformatics.com (localhost [127.0.0.1]) by crunch.scalableinformatics.com (Postfix) with ESMTP id E178884D1BB2; Mon, 28 Nov 2011 10:36:00 -0500 (EST) Received: from [192.168.1.171] (metal.scalableinformatics.com [192.168.1.171]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by crunch.scalableinformatics.com (Postfix) with ESMTPSA id D804580AC9FF; Mon, 28 Nov 2011 10:36:00 -0500 (EST) Message-ID: <4ED3AA90.8090202@scalableinformatics.com> Date: Mon, 28 Nov 2011 10:36:48 -0500 From: Joe Landman Reply-To: landman@scalableinformatics.com Organization: Scalable Informatics User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111110 Thunderbird/8.0 MIME-Version: 1.0 To: Jon Marshall CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS on CoRAID errors with SMB Subject: Re: XFS on CoRAID errors with SMB References: <20111128135518.GA1232@campbell-lange.net> <4ED39EBE.2070206@scalableinformatics.com> <20111128152652.GD1795@campbell-lange.net> In-Reply-To: <20111128152652.GD1795@campbell-lange.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: ClamAV using ClamSMTP X-Barracuda-Connect: 173-10-54-97-Michigan.hfc.comcastbusiness.net[173.10.54.97] X-Barracuda-Start-Time: 1322494562 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81551 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Status: Clean On 11/28/2011 10:26 AM, Jon Marshall wrote: > Hi Joe, > > Thanks for the rapid response. > > Is this something that has been reported often in relation to AoE? Is We've experienced it in the past when we supported our customers with Coraid gear. Most of that is gone now, so we haven't seen much AoE stuff as of late (last 2 years or so). This said, the AoE stack depends critically upon the network stack, and between AoE and the network stack (or possibly something else), you ran out of memory for use in the kernel. Our experience with this is usually a leaky network driver. e1000 and similar Intel drivers shipped with default RHEL5/Centos5 are highly problematic. AoE could be leaking itself (early versions were pretty bad in this regard, though I haven't looked at the driver in the last few years, they hopefully have improved it). The xfs connection to this (to stay relevant to this group) is that xfs is ok atop this, as long as the other layers don't go away. If you can detect problems like this in advance, you might be able to issue an xfs_freeze, and preserve the integrity of the underlying filesystem (obviating the need for an xfs_repair). The hard part would be an accurate prediction, but if your drivers are grabbing memory and not releasing it back, or you have a run-away memory consuming process, yeah, you could potentially predict this onset. > there any chance you could point us in the direction of some more > background on the issue? I am checking the AoE mailing list, but if you know > of something specific that would be very helpful. Not really, we aren't doing much with AoE anymore. This may or may not be an AoE issue per se. Likely AoE crashed, and the reason for the crash is very probably the same reason that xfs crashed, it ran out of memory. If AoE is the culprit, you might find some sort of imprint of this in the logs, though our experience has been usually a run-away network driver. Since AoE does its block devices over raw ethernet packets, it doesn't take very long for a leaky driver to crash such a system under load. > > I am also looking into the ethernet drivers we have in place on the > system in question. > > Again, thanks for the quick and informative response. -- Joseph Landman, Ph.D Founder and CEO Scalable Informatics Inc. email: landman@scalableinformatics.com web : http://scalableinformatics.com http://scalableinformatics.com/sicluster phone: +1 734 786 8423 x121 fax : +1 866 888 3112 cell : +1 734 612 4615 From martin.petersen@oracle.com Mon Nov 28 10:09:04 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASG94XP241487 for ; Mon, 28 Nov 2011 10:09:04 -0600 X-ASG-Debug-ID: 1322496542-3f4b02b10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from acsinet15.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9710227BFC8 for ; Mon, 28 Nov 2011 08:09:03 -0800 (PST) Received: from acsinet15.oracle.com (acsinet15.oracle.com [141.146.126.227]) by cuda.sgi.com with ESMTP id jYSJMXggR1xNvnD5 for ; Mon, 28 Nov 2011 08:09:03 -0800 (PST) Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by acsinet15.oracle.com (Switch-3.4.4/Switch-3.4.4) with ESMTP id pASG8e7L014278 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 28 Nov 2011 16:08:41 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id pASG8dqH022187 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 28 Nov 2011 16:08:40 GMT Received: from abhmt114.oracle.com (abhmt114.oracle.com [141.146.116.66]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id pASG8Vvn032728; Mon, 28 Nov 2011 10:08:33 -0600 Received: from mojo.mkp.net (/141.144.6.235) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 28 Nov 2011 08:08:30 -0800 To: Dave Chinner Cc: Eric Sandeen , Carlos Maiolino , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Subject: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size From: "Martin K. Petersen" Organization: Oracle References: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> <20111124195042.GA3671@andromeda.usersys.redhat.com> <20111127010643.GU2386@dastard> <4ED2C233.8010104@sandeen.net> <20111127235051.GX2386@dastard> Date: Mon, 28 Nov 2011 11:08:29 -0500 In-Reply-To: <20111127235051.GX2386@dastard> (Dave Chinner's message of "Mon, 28 Nov 2011 10:50:51 +1100") Message-ID: User-Agent: Gnus/5.110017 (No Gnus v0.17) Emacs/23.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-CT-RefId: str=0001.0A090204.4ED3B20A.005C,ss=1,re=0.000,fgs=0 X-Barracuda-Connect: acsinet15.oracle.com[141.146.126.227] X-Barracuda-Start-Time: 1322496543 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=UNPARSEABLE_RELAY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81553 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 UNPARSEABLE_RELAY Informational: message has unparseable relay lines X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean >>>>> "Dave" == Dave Chinner writes: >> Ok, if we have mismanaged the alignment and aligned to logical, not >> physical, then I guess there would be an issue... but at that point >> we've already messed up (though not catastrophically I guess)... Dave> That's where I'm concerned - if alignment is screwed because the Dave> FS is 512B sector aligned (because something read the logical Dave> sector size), then using a 4k sector will result in torn writes Dave> because every 4k sector write is potentially made up of 2 4k write Dave> IOs, not 1. There's another inherent failure scenario with 512b logical / 4096b physical. If you write in 512-byte multiples and experience a medium error you can lose the sibling logical blocks within that physical block. You'll get an I/O error back but there are no means to communicate that you have also lost blocks that were not part of your write request. So if you use 512-byte entries in the journal and get a write error you should at the very minimum consider adjacent entries inside a 4KB window suspect. Dave> That's my concern - using the logical 512b sector size is -always- Dave> safe, but using the 4k physical block size is only safe if Dave> everything under the filesystem has detected and used the physical Dave> block size of the disk for alignment and sector sizes... You should always take alignment into account. And while Christoph is right that (thankfully) nobody ended up shipping drives with 1-alignment by default, most 512e drives have the alignment jumper and some people actually use it. -- Martin K. Petersen Oracle Linux Engineering From sandeen@sandeen.net Mon Nov 28 10:23:07 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASGN6s7242160 for ; Mon, 28 Nov 2011 10:23:07 -0600 X-ASG-Debug-ID: 1322496701-2088012f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B783319D6436 for ; Mon, 28 Nov 2011 08:11:41 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 8TF7S09x0VgEw94C for ; Mon, 28 Nov 2011 08:11:41 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 5E7F149637C0; Mon, 28 Nov 2011 10:11:40 -0600 (CST) Message-ID: <4ED3B2BC.1060609@sandeen.net> Date: Mon, 28 Nov 2011 10:11:40 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: "Martin K. Petersen" CC: Dave Chinner , Carlos Maiolino , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Subject: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size References: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> <20111124195042.GA3671@andromeda.usersys.redhat.com> <20111127010643.GU2386@dastard> <4ED2C233.8010104@sandeen.net> <20111127235051.GX2386@dastard> In-Reply-To: X-Enigmail-Version: 1.3.3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1322496701 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81555 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/28/11 10:08 AM, Martin K. Petersen wrote: >>>>>> "Dave" == Dave Chinner writes: > >>> Ok, if we have mismanaged the alignment and aligned to logical, not >>> physical, then I guess there would be an issue... but at that point >>> we've already messed up (though not catastrophically I guess)... > > Dave> That's where I'm concerned - if alignment is screwed because the > Dave> FS is 512B sector aligned (because something read the logical > Dave> sector size), then using a 4k sector will result in torn writes > Dave> because every 4k sector write is potentially made up of 2 4k write > Dave> IOs, not 1. > > There's another inherent failure scenario with 512b logical / 4096b > physical. If you write in 512-byte multiples and experience a medium > error you can lose the sibling logical blocks within that physical > block. You'll get an I/O error back but there are no means to > communicate that you have also lost blocks that were not part of your > write request. So if you use 512-byte entries in the journal and get a > write error you should at the very minimum consider adjacent entries > inside a 4KB window suspect. > > > Dave> That's my concern - using the logical 512b sector size is -always- > Dave> safe, but using the 4k physical block size is only safe if > Dave> everything under the filesystem has detected and used the physical > Dave> block size of the disk for alignment and sector sizes... > > You should always take alignment into account. > > And while Christoph is right that (thankfully) nobody ended up shipping > drives with 1-alignment by default, most 512e drives have the alignment > jumper and some people actually use it. It seems that we should be checking for any alignment offsets in libxfs then, too; if there IS an offset, then perhaps 4k is the wrong answer, (perhaps there is no right answer) but if there is NO offset, 4k should be the right choice, yes? And if the drive is broken then c'est la vie? -Eric From bpm@sgi.com Mon Nov 28 10:53:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASGrxc0243781 for ; Mon, 28 Nov 2011 10:53:59 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id E1613AC002; Mon, 28 Nov 2011 08:53:55 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id A604D431F74; Mon, 28 Nov 2011 10:54:18 -0600 (CST) Date: Mon, 28 Nov 2011 10:54:18 -0600 From: Ben Myers To: Greg KH Cc: Christoph Hellwig , stable@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/6] XFS update for 3.1-stable Message-ID: <20111128165418.GR29840@sgi.com> References: <1322084293-23557-1-git-send-email-bpm@sgi.com> <20111128110043.GA13766@infradead.org> <20111128134829.GC21041@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111128134829.GC21041@kroah.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Greg, On Mon, Nov 28, 2011 at 10:48:29PM +0900, Greg KH wrote: > On Mon, Nov 28, 2011 at 06:00:43AM -0500, Christoph Hellwig wrote: > > On Wed, Nov 23, 2011 at 03:38:07PM -0600, Ben Myers wrote: > > > This is a series of XFS fixes from current mainline which is important for > > > 3.1-stable. Note that it is the same patch set that Christoph submitted for > > > 3.0-stable, minus the first three patches which are already included in 3.1. > > > > > > My QA came out ok with these six patches atop 3.1.y. Apologies to those who > > > got this mail twice. > > > > The updates looks good to me. > > I never saw this series once, can someone please resend them as I don't > see them anywhere. The first time I sent this 3.1.y series you were not on the --to=, which is why some people got the series twice but you didn't. Sorry for the confusion. Do you need the series for 3.0 to be resubmitted? Thanks, Ben From greg.freemyer@gmail.com Mon Nov 28 11:07:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASH7V0R244434 for ; Mon, 28 Nov 2011 11:07:31 -0600 X-ASG-Debug-ID: 1322499408-1dba01da0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-iy0-f181.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BBD5A1D340EF for ; Mon, 28 Nov 2011 08:56:48 -0800 (PST) Received: from mail-iy0-f181.google.com (mail-iy0-f181.google.com [209.85.210.181]) by cuda.sgi.com with ESMTP id 9J1ljXsYgBVILFul for ; Mon, 28 Nov 2011 08:56:48 -0800 (PST) Received: by iaen33 with SMTP id n33so11391840iae.26 for ; Mon, 28 Nov 2011 08:56:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=Au4+vZG+5MWG0ap9A1/ETSNhk058fHnIPbZ9atnKaLs=; b=ofpaFDola52fZs6s2f+23UaHIy0vczKZbneyNsOkOmiYLfFlLuE7zTgwRItV74KFO8 F4fSLcAlQ1CxI0BaBKd3svczUYXohBUXVUB4joqmG/kSr5pRCT82sLXuyzUI6u6YnEfi dnrY6DHQEjRPGz4qEkKAsaX9V4xR+7mb3lBJY= Received: by 10.42.151.196 with SMTP id f4mr24712832icw.17.1322499408154; Mon, 28 Nov 2011 08:56:48 -0800 (PST) MIME-Version: 1.0 Received: by 10.42.169.7 with HTTP; Mon, 28 Nov 2011 08:56:17 -0800 (PST) In-Reply-To: References: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> <20111124195042.GA3671@andromeda.usersys.redhat.com> <20111127010643.GU2386@dastard> <4ED2C233.8010104@sandeen.net> <20111127235051.GX2386@dastard> From: Greg Freemyer Date: Mon, 28 Nov 2011 11:56:17 -0500 Message-ID: X-ASG-Orig-Subj: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Subject: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size To: "Martin K. Petersen" Cc: Dave Chinner , Eric Sandeen , Carlos Maiolino , xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-iy0-f181.google.com[209.85.210.181] X-Barracuda-Start-Time: 1322499408 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0425 1.0000 -1.7469 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.75 X-Barracuda-Spam-Status: No, SCORE=-1.75 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81557 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 28, 2011 at 11:08 AM, Martin K. Petersen wrote: > And while Christoph is right that (thankfully) nobody ended up shipping > drives with 1-alignment by default, most 512e drives have the alignment > jumper and some people actually use it. I've seen at least one of my clients use the jumper. It was my first realization that jumper actually "moves" stuff on the disk. I realize its a virtual move, but data read from sector 63 with the jumper in place is not the same data that is read from sector 63 with the jumper removed. It caught me off guard. The fix in this case was just to re-install the jumper like the client had it originally. Greg From bpm@sgi.com Mon Nov 28 12:01:16 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASI1Goh247318 for ; Mon, 28 Nov 2011 12:01:16 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id 57DC530405F; Mon, 28 Nov 2011 10:01:13 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 5EA4E431F74; Mon, 28 Nov 2011 12:01:36 -0600 (CST) Date: Mon, 28 Nov 2011 12:01:36 -0600 From: Ben Myers To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/4] xfs: fix attr2 vs large data fork assert Message-ID: <20111128180136.GS29840@sgi.com> References: <20111128081732.350228200@bombadil.infradead.org> <20111128081925.458494771@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111128081925.458494771@bombadil.infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Christoph, On Mon, Nov 28, 2011 at 03:17:33AM -0500, Christoph Hellwig wrote: > With Dmitrys fsstress updates I've seen very reproducible crashes in > xfs_attr_shortform_remove because xfs_attr_shortform_bytesfit claims that > the attributes would not fit inline into the inode after removing an > attribute. It turns out that we were operating on an inode with lots > of delalloc extents, and thus an if_bytes values for the data fork that > is larger than biggest possible on-disk storage for it which utterly > confuses the code near the end of xfs_attr_shortform_bytesfit. > > Fix this by always allowing the current attribute fork, like we already > do for the attr1 format, given that delalloc conversion will take care > for moving either the data or attribute area out of line if it doesn't > fit at that point - or making the point moot by merging extents at this > point. > > Also document the function better, and clean up some lose bits. > > Signed-off-by: Christoph Hellwig This is missing some cleanups that you did for v2. I'll use that version, unless you have an objection. Thanks, Ben > Index: xfs/fs/xfs/xfs_attr_leaf.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_attr_leaf.c 2011-11-04 16:31:32.244656675 +0100 > +++ xfs/fs/xfs/xfs_attr_leaf.c 2011-11-05 09:01:32.613995075 +0100 > @@ -110,6 +110,7 @@ xfs_attr_namesp_match(int arg_flags, int > /* > * Query whether the requested number of additional bytes of extended > * attribute space will be able to fit inline. > + * > * Returns zero if not, else the di_forkoff fork offset to be used in the > * literal area for attribute data once the new bytes have been added. > * > @@ -136,11 +137,26 @@ xfs_attr_shortform_bytesfit(xfs_inode_t > return (offset >= minforkoff) ? minforkoff : 0; > } > > - if (!(mp->m_flags & XFS_MOUNT_ATTR2)) { > - if (bytes <= XFS_IFORK_ASIZE(dp)) > - return dp->i_d.di_forkoff; > + /* > + * If the requested numbers of bytes is smaller or equal to the > + * current attribute fork size we can always proceed. > + * > + * Note that if_bytes in the data fork might actually be larger than > + * the current data fork size is due to delalloc extents. In that > + * case either the extent count will go down when they are converted > + * to ral extents, or the delalloc conversion will take care of the > + * literal area rebalancing. > + */ > + if (bytes <= XFS_IFORK_ASIZE(dp)) > + return dp->i_d.di_forkoff; > + > + /* > + * For attr2 we can try to move the forkoff if there is space in the > + * literal area, but for the old format we are done if there is no > + * space in the fixes attribute fork. > + */ > + if (!(mp->m_flags & XFS_MOUNT_ATTR2)) > return 0; > - } > > dsize = dp->i_df.if_bytes; > > @@ -157,10 +173,9 @@ xfs_attr_shortform_bytesfit(xfs_inode_t > xfs_default_attroffset(dp)) > dsize = XFS_BMDR_SPACE_CALC(MINDBTPTRS); > break; > - > case XFS_DINODE_FMT_BTREE: > /* > - * If have data btree then keep forkoff if we have one, > + * If have a data btree then keep forkoff if we have one, > * otherwise we are adding a new attr, so then we set > * minforkoff to where the btree root can finish so we have > * plenty of room for attrs > @@ -168,10 +183,9 @@ xfs_attr_shortform_bytesfit(xfs_inode_t > if (dp->i_d.di_forkoff) { > if (offset < dp->i_d.di_forkoff) > return 0; > - else > - return dp->i_d.di_forkoff; > - } else > - dsize = XFS_BMAP_BROOT_SPACE(dp->i_df.if_broot); > + return dp->i_d.di_forkoff; > + } > + dsize = XFS_BMAP_BROOT_SPACE(dp->i_df.if_broot); > break; > } > > @@ -186,10 +200,10 @@ xfs_attr_shortform_bytesfit(xfs_inode_t > maxforkoff = XFS_LITINO(mp) - XFS_BMDR_SPACE_CALC(MINABTPTRS); > maxforkoff = maxforkoff >> 3; /* rounded down */ > > - if (offset >= minforkoff && offset < maxforkoff) > - return offset; > if (offset >= maxforkoff) > return maxforkoff; > + if (offset >= minforkoff) > + return offset; > return 0; > } > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 12:03:03 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASI323c247425 for ; Mon, 28 Nov 2011 12:03:03 -0600 X-ASG-Debug-ID: 1322503380-5f9d00b70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B8DD227C509; Mon, 28 Nov 2011 10:03:01 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id FMXO56lTLNePrhGt; Mon, 28 Nov 2011 10:03:01 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RV5Xg-0003Qz-CQ; Mon, 28 Nov 2011 18:03:00 +0000 Date: Mon, 28 Nov 2011 13:03:00 -0500 From: Christoph Hellwig To: Ben Myers Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/4] xfs: fix attr2 vs large data fork assert Subject: Re: [PATCH 1/4] xfs: fix attr2 vs large data fork assert Message-ID: <20111128180300.GA12730@infradead.org> References: <20111128081732.350228200@bombadil.infradead.org> <20111128081925.458494771@bombadil.infradead.org> <20111128180136.GS29840@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111128180136.GS29840@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322503381 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81561 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 28, 2011 at 12:01:36PM -0600, Ben Myers wrote: > This is missing some cleanups that you did for v2. I'll use that > version, unless you have an objection. Looks like I got lost in my maze of trees. Pick whichever you want. From sim@netnation.com Mon Nov 28 13:33:47 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASJXlcB251651 for ; Mon, 28 Nov 2011 13:33:47 -0600 X-ASG-Debug-ID: 1322507157-4ec702da0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from peace.netnation.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 201BF19DA90A for ; Mon, 28 Nov 2011 11:05:57 -0800 (PST) Received: from peace.netnation.com (peace.netnation.com [204.174.223.2]) by cuda.sgi.com with ESMTP id hxgxJztnVsmzFlp3 for ; Mon, 28 Nov 2011 11:05:57 -0800 (PST) Received: from sim by peace.netnation.com with local (Exim 4.69) (envelope-from ) id 1RV6WY-0008Cd-Rq; Mon, 28 Nov 2011 11:05:54 -0800 Date: Mon, 28 Nov 2011 11:05:54 -0800 From: Simon Kirby To: Christoph Hellwig Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS read hangs in 3.1-rc10 Subject: Re: XFS read hangs in 3.1-rc10 Message-ID: <20111128190554.GA31168@hostway.ca> References: <20111020224214.GC22772@hostway.ca> <20111021132240.GA24136@infradead.org> <20111021202857.GB30100@hostway.ca> <20111024082219.GA19941@infradead.org> <20111025200748.GA25043@hostway.ca> <20111026112521.GA10432@infradead.org> <20111104210324.GB14983@infradead.org> <20111116195643.GF24411@hostway.ca> <20111120153241.GA23511@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111120153241.GA23511@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: peace.netnation.com[204.174.223.2] X-Barracuda-Start-Time: 1322507158 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81567 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Nov 20, 2011 at 10:32:41AM -0500, Christoph Hellwig wrote: > On Wed, Nov 16, 2011 at 11:56:43AM -0800, Simon Kirby wrote: > > Sorry for the delay in testing. > > > > Yes, everything looks fine even with the xfs_log_force line from your > > patch commented out. So, the changes in xfs_reclaim_inode() are just the > > set_bit(XBT_FORCE_FLUSH) and wake_up_process(), relative to 3.1. > > Dave pointed out that we can do better than the big hammer, and the > patch below should fix your issue, too. Can you test it? Yes, seems to be fine. No hung task warnings, tested for ~5 days. Simon- > --- > From: Christoph Hellwig > Subject: xfs: force buffer writeback before blocking on the ilock in inode reclaim > > If we are doing synchronous inode reclaim we block the VM from making > progress in memory reclaim. So if we encouter a flush locked inode > promote it in the delwri list and wake up xfsbufd to write it out now. > Without this we can get hangs of up to 30 seconds during workloads hitting > synchronous inode reclaim. > > The scheme is copied from what we do for dquot reclaims. > > Reported-by: Simon Kirby > Signed-off-by: Christoph Hellwig > > Index: xfs/fs/xfs/xfs_sync.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_sync.c 2011-11-20 12:48:36.664765032 +0100 > +++ xfs/fs/xfs/xfs_sync.c 2011-11-20 13:51:55.594184465 +0100 > @@ -770,6 +770,17 @@ restart: > if (!xfs_iflock_nowait(ip)) { > if (!(sync_mode & SYNC_WAIT)) > goto out; > + > + /* > + * If we only have a single dirty inode in a cluster there is > + * a fair chance that the AIL push may have pushed it into > + * the buffer, but xfsbufd won't touch it until 30 seconds > + * from now, and thus we will lock up here. > + * > + * Promote the inode buffer to the front of the delwri list > + * and wake up xfsbufd now. > + */ > + xfs_promote_inode(ip); > xfs_iflock(ip); > } > > Index: xfs/fs/xfs/xfs_inode.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_inode.c 2011-11-20 13:50:51.457865253 +0100 > +++ xfs/fs/xfs/xfs_inode.c 2011-11-20 13:52:30.420662460 +0100 > @@ -2835,6 +2835,27 @@ corrupt_out: > return XFS_ERROR(EFSCORRUPTED); > } > > +void > +xfs_promote_inode( > + struct xfs_inode *ip) > +{ > + struct xfs_buf *bp; > + > + ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)); > + > + bp = xfs_incore(ip->i_mount->m_ddev_targp, ip->i_imap.im_blkno, > + ip->i_imap.im_len, XBF_TRYLOCK); > + if (!bp) > + return; > + > + if (XFS_BUF_ISDELAYWRITE(bp)) { > + xfs_buf_delwri_promote(bp); > + wake_up_process(ip->i_mount->m_ddev_targp->bt_task); > + } > + > + xfs_buf_relse(bp); > +} > + > /* > * Return a pointer to the extent record at file index idx. > */ > Index: xfs/fs/xfs/xfs_inode.h > =================================================================== > --- xfs.orig/fs/xfs/xfs_inode.h 2011-11-20 13:50:51.487865091 +0100 > +++ xfs/fs/xfs/xfs_inode.h 2011-11-20 13:51:39.224273148 +0100 > @@ -498,6 +498,7 @@ int xfs_iunlink(struct xfs_trans *, xfs > void xfs_iext_realloc(xfs_inode_t *, int, int); > void xfs_iunpin_wait(xfs_inode_t *); > int xfs_iflush(xfs_inode_t *, uint); > +void xfs_promote_inode(struct xfs_inode *); > void xfs_lock_inodes(xfs_inode_t **, int, uint); > void xfs_lock_two_inodes(xfs_inode_t *, xfs_inode_t *, uint); > From BATV+41f693fb8c166b7bc8f8+3018+infradead.org+hch@bombadil.srs.infradead.org Mon Nov 28 13:55:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASJt90x252548 for ; Mon, 28 Nov 2011 13:55:09 -0600 X-ASG-Debug-ID: 1322510107-5ab001390000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5490B1364BEB; Mon, 28 Nov 2011 11:55:07 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id GIySjD0gwRuzDZDu; Mon, 28 Nov 2011 11:55:07 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RV7I9-0001qI-4q; Mon, 28 Nov 2011 19:55:05 +0000 Date: Mon, 28 Nov 2011 14:55:05 -0500 From: Christoph Hellwig To: Simon Kirby Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, bpm@sgi.com X-ASG-Orig-Subj: Re: XFS read hangs in 3.1-rc10 Subject: Re: XFS read hangs in 3.1-rc10 Message-ID: <20111128195505.GA3759@infradead.org> References: <20111020224214.GC22772@hostway.ca> <20111021132240.GA24136@infradead.org> <20111021202857.GB30100@hostway.ca> <20111024082219.GA19941@infradead.org> <20111025200748.GA25043@hostway.ca> <20111026112521.GA10432@infradead.org> <20111104210324.GB14983@infradead.org> <20111116195643.GF24411@hostway.ca> <20111120153241.GA23511@infradead.org> <20111128190554.GA31168@hostway.ca> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111128190554.GA31168@hostway.ca> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322510108 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81568 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 28, 2011 at 11:05:54AM -0800, Simon Kirby wrote: > On Sun, Nov 20, 2011 at 10:32:41AM -0500, Christoph Hellwig wrote: > > > On Wed, Nov 16, 2011 at 11:56:43AM -0800, Simon Kirby wrote: > > > Sorry for the delay in testing. > > > > > > Yes, everything looks fine even with the xfs_log_force line from your > > > patch commented out. So, the changes in xfs_reclaim_inode() are just the > > > set_bit(XBT_FORCE_FLUSH) and wake_up_process(), relative to 3.1. > > > > Dave pointed out that we can do better than the big hammer, and the > > patch below should fix your issue, too. Can you test it? > > Yes, seems to be fine. No hung task warnings, tested for ~5 days. Thanks a lot for the testing Simon. Ben, can you add a: Tested-by: Simon Kirby to the patch when applying it? From bpm@sgi.com Mon Nov 28 15:00:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASL0xxF255231 for ; Mon, 28 Nov 2011 15:00:59 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id DD44FAC009; Mon, 28 Nov 2011 13:00:55 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id E07FD431F74; Mon, 28 Nov 2011 15:01:18 -0600 (CST) Date: Mon, 28 Nov 2011 15:01:18 -0600 From: Ben Myers To: Christoph Hellwig Cc: Simon Kirby , linux-kernel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: XFS read hangs in 3.1-rc10 Message-ID: <20111128210118.GT29840@sgi.com> References: <20111021132240.GA24136@infradead.org> <20111021202857.GB30100@hostway.ca> <20111024082219.GA19941@infradead.org> <20111025200748.GA25043@hostway.ca> <20111026112521.GA10432@infradead.org> <20111104210324.GB14983@infradead.org> <20111116195643.GF24411@hostway.ca> <20111120153241.GA23511@infradead.org> <20111128190554.GA31168@hostway.ca> <20111128195505.GA3759@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111128195505.GA3759@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Christoph, On Mon, Nov 28, 2011 at 02:55:05PM -0500, Christoph Hellwig wrote: > On Mon, Nov 28, 2011 at 11:05:54AM -0800, Simon Kirby wrote: > > On Sun, Nov 20, 2011 at 10:32:41AM -0500, Christoph Hellwig wrote: > > > > > On Wed, Nov 16, 2011 at 11:56:43AM -0800, Simon Kirby wrote: > > > > Sorry for the delay in testing. > > > > > > > > Yes, everything looks fine even with the xfs_log_force line from your > > > > patch commented out. So, the changes in xfs_reclaim_inode() are just the > > > > set_bit(XBT_FORCE_FLUSH) and wake_up_process(), relative to 3.1. > > > > > > Dave pointed out that we can do better than the big hammer, and the > > > patch below should fix your issue, too. Can you test it? > > > > Yes, seems to be fine. No hung task warnings, tested for ~5 days. > > Thanks a lot for the testing Simon. > > Ben, can you add a: > > Tested-by: Simon Kirby > > to the patch when applying it? Yep, I will add Simon's Tested-by: Thanks Simon! ;) -Ben From powool@gmail.com Mon Nov 28 15:31:44 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASLViPp256353 for ; Mon, 28 Nov 2011 15:31:44 -0600 X-ASG-Debug-ID: 1322515903-11ba03050000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-yw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 72A1C27D54C for ; Mon, 28 Nov 2011 13:31:43 -0800 (PST) Received: from mail-yw0-f53.google.com (mail-yw0-f53.google.com [209.85.213.53]) by cuda.sgi.com with ESMTP id PlGyU1fxKBihgbkE for ; Mon, 28 Nov 2011 13:31:43 -0800 (PST) Received: by ywm19 with SMTP id 19so6422440ywm.26 for ; Mon, 28 Nov 2011 13:31:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; bh=25XU8QHJNFAvP2g6dzUv0ufpxVtfa0yTcqeoiWVMVB4=; b=Np+D/kNThgIJOgtYuGuJImg2QX/b3Z6UiYX5SHiEZANkXrl3ij4aHZlBZsuWau2iMx Gbif44ZG/26lhShL74OurdB3PVm8fvd8AzhYEMJCP9spzETtcxKxlogvdnQ/fENCZ/hk RCQwoNUBOvVveJqpvzdbs0QXYZaANbhwk/6Ww= MIME-Version: 1.0 Received: by 10.236.116.1 with SMTP id f1mr32684556yhh.111.1322515902836; Mon, 28 Nov 2011 13:31:42 -0800 (PST) Sender: powool@gmail.com Received: by 10.236.75.232 with HTTP; Mon, 28 Nov 2011 13:31:42 -0800 (PST) Date: Mon, 28 Nov 2011 16:31:42 -0500 X-Google-Sender-Auth: 8DKYC7vQfFds4uWEQadJ-aBldW4 Message-ID: X-ASG-Orig-Subj: best stable recent kernel? Subject: best stable recent kernel? From: Paul Anderson To: xfs-oss Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-yw0-f53.google.com[209.85.213.53] X-Barracuda-Start-Time: 1322515903 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81575 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I need to start deploying some large XFS based fileservers servers and wish to try a kernel newer than what we've been using (2.6.38.5 from kernel.org). We've stayed at 2.6.38.5 for awhile, but have had metadata loss on many shutdowns, clean or not. We've found 0 length files where the files had been written and closed long before the crash - in some cases we were careful sync by hand, wait for quiescent drives, then clean reboot, etc. This sounds related to a series of commits that indicates some workarounds and fixes in the time frame of 2.6.38.5 to 3.0 (how completely this particular problem was fixed, I don't know). Several past threads here on this list have described these servers, but they are 126 2TB drive RAID 60 used for mostly genetic sequencing data. Christoph recently suggested here in another xfs developer list thread: "I've also backported it to the 3.0-stable issues. I would recommend to upgrade to the latest Linux 3.0-stable release, as I'll plan to backport all important XFS fixes to it." Is this a decent target for us to try? We're looking for the best XFS and NFS stability that is practical. Thanks, Paul Anderson University of Michigan From greg@kroah.com Mon Nov 28 15:52:37 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASLqaJD257037 for ; Mon, 28 Nov 2011 15:52:37 -0600 X-ASG-Debug-ID: 1322516580-13a2019a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from out3.smtp.messagingengine.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A192619E276C for ; Mon, 28 Nov 2011 13:43:00 -0800 (PST) Received: from out3.smtp.messagingengine.com (out3.smtp.messagingengine.com [66.111.4.27]) by cuda.sgi.com with ESMTP id k7DphGgEAFdwk8mD for ; Mon, 28 Nov 2011 13:43:00 -0800 (PST) Received: from compute4.internal (compute4.nyi.mail.srv.osa [10.202.2.44]) by gateway1.nyi.mail.srv.osa (Postfix) with ESMTP id 554E321155 for ; Mon, 28 Nov 2011 16:43:00 -0500 (EST) Received: from frontend2.nyi.mail.srv.osa ([10.202.2.161]) by compute4.internal (MEProxy); Mon, 28 Nov 2011 16:43:00 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=date:from:to:cc:subject:message-id :references:mime-version:content-type:in-reply-to; s=smtpout; bh=935+SBSDTyHAdizZ09ib8pFyxI4=; b=nOVSEEsy30/hyxniirVB6AOJaX00 /A2XTdzMSAGi1ZvKAB1f99JTNYWYQlctdPm53YZ6OIfT6KJAQfVepTPoxy97zC7d Z8VuYoFjSrDoF0eF6+x5qhyDGU7L22ha1LFagy23jdjPQt0Tpv7xZQIw7euKLapW ttwKPNfo35LJfb8= X-Sasl-enc: 6pUWfMBSQK+N3d8LJS6pmUNqV4QdNaynJRkTYsgHoCvk 1322516579 Received: from localhost (221x245x165x18.ap221.ftth.ucom.ne.jp [221.245.165.18]) by mail.messagingengine.com (Postfix) with ESMTPSA id 857EB48247E; Mon, 28 Nov 2011 16:42:59 -0500 (EST) Date: Tue, 29 Nov 2011 06:40:18 +0900 From: Greg KH To: Ben Myers Cc: Christoph Hellwig , stable@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/6] XFS update for 3.1-stable Subject: Re: [PATCH 0/6] XFS update for 3.1-stable Message-ID: <20111128214018.GB1650@kroah.com> References: <1322084293-23557-1-git-send-email-bpm@sgi.com> <20111128110043.GA13766@infradead.org> <20111128134829.GC21041@kroah.com> <20111128165418.GR29840@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111128165418.GR29840@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: out3.smtp.messagingengine.com[66.111.4.27] X-Barracuda-Start-Time: 1322516581 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81577 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 28, 2011 at 10:54:18AM -0600, Ben Myers wrote: > Hey Greg, > > On Mon, Nov 28, 2011 at 10:48:29PM +0900, Greg KH wrote: > > On Mon, Nov 28, 2011 at 06:00:43AM -0500, Christoph Hellwig wrote: > > > On Wed, Nov 23, 2011 at 03:38:07PM -0600, Ben Myers wrote: > > > > This is a series of XFS fixes from current mainline which is important for > > > > 3.1-stable. Note that it is the same patch set that Christoph submitted for > > > > 3.0-stable, minus the first three patches which are already included in 3.1. > > > > > > > > My QA came out ok with these six patches atop 3.1.y. Apologies to those who > > > > got this mail twice. > > > > > > The updates looks good to me. > > > > I never saw this series once, can someone please resend them as I don't > > see them anywhere. > > The first time I sent this 3.1.y series you were not on the --to=, which > is why some people got the series twice but you didn't. Sorry for the > confusion. Was stable@vger.kernel.org on the to: line? If so, I should have seen them through that, but I don't, which is worrysome to me. > Do you need the series for 3.0 to be resubmitted? The 3.0 series is already in the last 3.0.11 release, so I don't need them, I think I need the 3.1 patches, right? thanks, greg k-h From eflorac@intellique.com Mon Nov 28 16:09:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pASM9LYL257712 for ; Mon, 28 Nov 2011 16:09:21 -0600 X-ASG-Debug-ID: 1322518156-5a8903b60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp3-g21.free.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 079351558B6E for ; Mon, 28 Nov 2011 14:09:17 -0800 (PST) Received: from smtp3-g21.free.fr (smtp3-g21.free.fr [212.27.42.3]) by cuda.sgi.com with ESMTP id hjz6Y3MaFgyfczcp for ; Mon, 28 Nov 2011 14:09:17 -0800 (PST) Received: from galadriel.home (unknown [82.235.234.79]) by smtp3-g21.free.fr (Postfix) with ESMTP id D04AEA6600; Mon, 28 Nov 2011 23:09:11 +0100 (CET) Date: Mon, 28 Nov 2011 23:09:05 +0100 From: Emmanuel Florac To: Paul Anderson Cc: xfs-oss X-ASG-Orig-Subj: Re: best stable recent kernel? Subject: Re: best stable recent kernel? Message-ID: <20111128230905.214de2bf@galadriel.home> In-Reply-To: References: Organization: Intellique X-Mailer: Claws Mail 3.7.8 (GTK+ 2.20.1; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: smtp3-g21.free.fr[212.27.42.3] X-Barracuda-Start-Time: 1322518160 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81578 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Le Mon, 28 Nov 2011 16:31:42 -0500 vous =C3=A9criviez: > I need to start deploying some large XFS based fileservers servers and > wish to try a kernel newer than what we've been using (2.6.38.5 from > kernel.org). I'm happy with the 3.0 series. Right now I'm still mostly running 3.0.4, and I had no trouble at all (machines from 30 to 120 TB mostly). 2.6.28 never cut it for me, went from 2.6.35 to 3.0. Right now 3.1 seems OK but it's certainly a bit too fresh. --=20 ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From bpm@oss.sgi.com Mon Nov 28 22:06:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAT46uUQ010770 for ; Mon, 28 Nov 2011 22:06:56 -0600 Received: (from bpm@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id pAT46u2R010742; Mon, 28 Nov 2011 22:06:56 -0600 Date: Mon, 28 Nov 2011 22:06:56 -0600 Message-Id: <201111290406.pAT46u2R010742@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v3.2-rc1-6-gfa8b18e X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: c8891329131f791e0ddc422eaf6fc86e9a8cf8f5 X-Git-Newrev: fa8b18edd752a8b4e9d1ee2cd615b82c93cf8bba This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated fa8b18e xfs: validate acl count from c8891329131f791e0ddc422eaf6fc86e9a8cf8f5 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit fa8b18edd752a8b4e9d1ee2cd615b82c93cf8bba Author: Christoph Hellwig Date: Sun Nov 20 15:35:32 2011 +0000 xfs: validate acl count This prevents in-memory corruption and possible panics if the on-disk ACL is badly corrupted. Signed-off-by: Christoph Hellwig Signed-off-by: Ben Myers ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_acl.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) hooks/post-receive -- XFS development tree From bpm@sgi.com Tue Nov 29 09:38:31 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pATFcVe9069769 for ; Tue, 29 Nov 2011 09:38:31 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id 31D61AC002; Tue, 29 Nov 2011 07:38:27 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 3E60D431F74; Tue, 29 Nov 2011 09:38:50 -0600 (CST) Date: Tue, 29 Nov 2011 09:38:50 -0600 From: Ben Myers To: Chandra Seetharaman Cc: XFS Mailing List Subject: Re: [PATCH v2] xfs: Remove the entries from the queue while waking them up Message-ID: <20111129153850.GU29840@sgi.com> References: <1321918880.7115.5.camel@chandra-lucid.austin.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1321918880.7115.5.camel@chandra-lucid.austin.ibm.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Chandra, On Mon, Nov 21, 2011 at 05:41:20PM -0600, Chandra Seetharaman wrote: > Changes from Verion 1: > > - Added additional comments as per Dave's suggestion > - Use next instead of tmp > - change typedef xlog_ticket_t to struct xlog_ticket > - Check t_queue before adding it to the list (the second time) > to accomodate system events (based on Christoph's comments) FWIW, I reproduced a log hang yesterday in xfstest 273 while testing this patch. We'll have to see if Christoph's revision fares any better today. Thanks, Ben From noreply@release.debian.org Tue Nov 29 10:39:19 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pATGdJPQ075747 for ; Tue, 29 Nov 2011 10:39:19 -0600 X-ASG-Debug-ID: 1322584757-2db700510000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from powell.debian.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A007E4FBB88 for ; Tue, 29 Nov 2011 08:39:17 -0800 (PST) Received: from powell.debian.org (powell.debian.org [87.106.64.223]) by cuda.sgi.com with ESMTP id EXRiaT3iZVLFkBMN for ; Tue, 29 Nov 2011 08:39:17 -0800 (PST) Received: from franck.debian.org ([128.148.34.3]) from C=NA,ST=NA,L=Ankh Morpork,O=Debian SMTP,OU=Debian SMTP CA,CN=franck.debian.org,EMAIL=hostmaster@franck.debian.org (verified) by powell.debian.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.69) (envelope-from ) id 1RVQiW-0002BS-To for xfsprogs@packages.debian.org; Tue, 29 Nov 2011 16:39:37 +0000 Received: from release by franck.debian.org with local (Exim 4.72) (envelope-from ) id 1RVQiA-00019o-Hf; Tue, 29 Nov 2011 16:39:14 +0000 Date: Tue, 29 Nov 2011 16:39:14 +0000 Message-Id: From: Debian testing watch Precedence: bulk X-Katie: trille 0.090909.0532 (not in katie yet but filter as Debian automail) X-ASG-Orig-Subj: xfsprogs 3.1.7 MIGRATED to testing Subject: xfsprogs 3.1.7 MIGRATED to testing X-Testing-Watch-Package: xfsprogs X-Testing-Watch-Version: 3.1.7 To: xfsprogs@packages.debian.org Sender: Release Managers Delivered-To: xfsprogs@packages.debian.org X-Barracuda-Connect: powell.debian.org[87.106.64.223] X-Barracuda-Start-Time: 1322584758 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0208 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81647 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean FYI: The status of the xfsprogs source package in Debian's testing distribution has changed. Previous version: 3.1.5+nmu1 Current version: 3.1.7 -- This email is automatically generated once a day. As the installation of new packages into testing happens multiple times a day you will receive later changes on the next day. See http://release.debian.org/testing-watch/ for more information. From martin.petersen@oracle.com Tue Nov 29 11:15:59 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UNPARSEABLE_RELAY autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pATHFwxZ080148 for ; Tue, 29 Nov 2011 11:15:58 -0600 X-ASG-Debug-ID: 1322586957-1eae02e10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from acsinet15.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A31EE4FBC26 for ; Tue, 29 Nov 2011 09:15:57 -0800 (PST) Received: from acsinet15.oracle.com (acsinet15.oracle.com [141.146.126.227]) by cuda.sgi.com with ESMTP id 0di2GOh2TxE5F292 for ; Tue, 29 Nov 2011 09:15:57 -0800 (PST) Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by acsinet15.oracle.com (Switch-3.4.4/Switch-3.4.4) with ESMTP id pATHFo62003313 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 29 Nov 2011 17:15:51 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id pATHFmL2019959 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 29 Nov 2011 17:15:49 GMT Received: from abhmt111.oracle.com (abhmt111.oracle.com [141.146.116.63]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id pATHFgxr018654; Tue, 29 Nov 2011 11:15:43 -0600 Received: from mojo.mkp.net (/141.144.6.235) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 29 Nov 2011 09:15:42 -0800 To: Eric Sandeen Cc: "Martin K. Petersen" , Dave Chinner , Carlos Maiolino , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Subject: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size From: "Martin K. Petersen" Organization: Oracle References: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> <20111124195042.GA3671@andromeda.usersys.redhat.com> <20111127010643.GU2386@dastard> <4ED2C233.8010104@sandeen.net> <20111127235051.GX2386@dastard> <4ED3B2BC.1060609@sandeen.net> Date: Tue, 29 Nov 2011 12:15:41 -0500 In-Reply-To: <4ED3B2BC.1060609@sandeen.net> (Eric Sandeen's message of "Mon, 28 Nov 2011 10:11:40 -0600") Message-ID: User-Agent: Gnus/5.110017 (No Gnus v0.17) Emacs/23.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-CT-RefId: str=0001.0A090203.4ED51347.00FC,ss=1,re=0.000,fgs=0 X-Barracuda-Connect: acsinet15.oracle.com[141.146.126.227] X-Barracuda-Start-Time: 1322586957 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=UNPARSEABLE_RELAY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81649 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 UNPARSEABLE_RELAY Informational: message has unparseable relay lines X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean >>>>> "Eric" == Eric Sandeen writes: Eric> It seems that we should be checking for any alignment offsets in Eric> libxfs then, too; if there IS an offset, then perhaps 4k is the Eric> wrong answer, (perhaps there is no right answer) but if there is Eric> NO offset, 4k should be the right choice, yes? In most cases the partitioning/DM tools should give you a 0 offset. But it would a good idea to at least print a warning if lbs != pbs and offset > 0. Eric> And if the drive is broken then c'est la vie? Yes :) FWIW, the reason 4KB lbs drives are having a revival in the is that there is not a lot of confidence in 512e for the enterprise. Many vendors won't support them in servers due to correctness concerns and lack of performance predictability. -- Martin K. Petersen Oracle Linux Engineering From sandeen@sandeen.net Tue Nov 29 11:38:35 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pATHcZwi082649 for ; Tue, 29 Nov 2011 11:38:35 -0600 X-ASG-Debug-ID: 1322588314-525e03620000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AE1B819EA66F for ; Tue, 29 Nov 2011 09:38:34 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id nsi1eO1y1eThC6Jf for ; Tue, 29 Nov 2011 09:38:34 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 1023049637C4; Tue, 29 Nov 2011 11:38:34 -0600 (CST) Message-ID: <4ED51899.7000706@sandeen.net> Date: Tue, 29 Nov 2011 11:38:33 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: "Martin K. Petersen" CC: Dave Chinner , Carlos Maiolino , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Subject: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size References: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> <20111124195042.GA3671@andromeda.usersys.redhat.com> <20111127010643.GU2386@dastard> <4ED2C233.8010104@sandeen.net> <20111127235051.GX2386@dastard> <4ED3B2BC.1060609@sandeen.net> In-Reply-To: X-Enigmail-Version: 1.3.3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1322588314 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81651 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 11/29/11 11:15 AM, Martin K. Petersen wrote: >>>>>> "Eric" == Eric Sandeen writes: > > Eric> It seems that we should be checking for any alignment offsets in > Eric> libxfs then, too; if there IS an offset, then perhaps 4k is the > Eric> wrong answer, (perhaps there is no right answer) but if there is > Eric> NO offset, 4k should be the right choice, yes? > > In most cases the partitioning/DM tools should give you a 0 offset. But > it would a good idea to at least print a warning if lbs != pbs and > offset > 0. Right, Dave's concern was for when the partitioning tools didn't do the job, we don't want to break fs consistency guarantees... Dave, does checking for an offset before choosing 4k sectors seem sufficient to you? > > Eric> And if the drive is broken then c'est la vie? > > Yes :) > > > FWIW, the reason 4KB lbs drives are having a revival in the is that > there is not a lot of confidence in 512e for the enterprise. Many > vendors won't support them in servers due to correctness concerns and > lack of performance predictability. Imagine. :) -Eric From bpm@sgi.com Tue Nov 29 12:47:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pATIlvpR089467 for ; Tue, 29 Nov 2011 12:47:57 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id 9CAFFAC004; Tue, 29 Nov 2011 10:47:53 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id C76D5431F74; Tue, 29 Nov 2011 12:48:16 -0600 (CST) Date: Tue, 29 Nov 2011 12:48:16 -0600 From: Ben Myers To: Christoph Hellwig Cc: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH 1/5] [PATCH] xfs: fix attr2 vs large data fork assert Message-ID: <20111129184816.GV29840@sgi.com> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201426.498870090@bombadil.infradead.org> <20111116231517.GA7046@dastard> <20111117073004.GB3733@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111117073004.GB3733@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Christoph, On Thu, Nov 17, 2011 at 02:30:04AM -0500, Christoph Hellwig wrote: > On Thu, Nov 17, 2011 at 10:15:17AM +1100, Dave Chinner wrote: > > On Tue, Nov 15, 2011 at 03:14:08PM -0500, Christoph Hellwig wrote: > > > With Dmitry fsstress updates I've seen very reproducible crashes in > > > xfs_attr_shortform_remove because xfs_attr_shortform_bytesfit claims that > > > the attributes would not fit inline into the inode after removing an > > > attribute. It turns out that we were operating on an inode with lots > > > of delalloc extents, and thus an if_bytes values for the data fork that > > > is larger than biggest possible on-disk storage for it which utterly > > > confuses the code near the end of xfs_attr_shortform_bytesfit. > > > > We have a test that stresses allocated extents vs attributes in the > > xfs_fsr swapext test (227), but that does not take into account > > delalloc extents. It sounds like it would be relatively easy to > > write a regression test for this particular case - create a file > > with a bunch of attributes, then create a number of delalloc data > > extents, then remove the attributes to trigger the condition in > > xfs_attr_shortform_remove().... > > Test 117 with Dmitries new fsstress changes hit it 100% reliably > before > > xfstests: freeze fsstress options for 117'th > > I was planning on adding a copy of the test using an explicit > combination of fsstress seeds that reproduce the issue. FYI, Test 117 also hit it for me after I backed off 'freeze fsstress options'. Are you still planning on adding a copy of the test with the seeds in question? Thanks, Ben From BATV+db14702fd3bf66f0f24d+3019+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 29 12:55:17 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pATItHmO090256 for ; Tue, 29 Nov 2011 12:55:17 -0600 X-ASG-Debug-ID: 1322592915-25d300870000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5C38C155B000; Tue, 29 Nov 2011 10:55:15 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id XmxAzeEdVoFsfw6l; Tue, 29 Nov 2011 10:55:15 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RVSpl-000579-0G; Tue, 29 Nov 2011 18:55:13 +0000 Date: Tue, 29 Nov 2011 13:55:12 -0500 From: Christoph Hellwig To: Ben Myers Cc: Christoph Hellwig , Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/5] [PATCH] xfs: fix attr2 vs large data fork assert Subject: Re: [PATCH 1/5] [PATCH] xfs: fix attr2 vs large data fork assert Message-ID: <20111129185512.GA16435@infradead.org> References: <20111115201407.038216766@bombadil.infradead.org> <20111115201426.498870090@bombadil.infradead.org> <20111116231517.GA7046@dastard> <20111117073004.GB3733@infradead.org> <20111129184816.GV29840@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111129184816.GV29840@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322592916 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ3078, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81656 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ3078 Custom Rule MJ3078 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 29, 2011 at 12:48:16PM -0600, Ben Myers wrote: > FYI, Test 117 also hit it for me after I backed off 'freeze fsstress > options'. Are you still planning on adding a copy of the test with the > seeds in question? Yes. From powool@gmail.com Tue Nov 29 13:17:28 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pATJHSWb092491 for ; Tue, 29 Nov 2011 13:17:28 -0600 X-ASG-Debug-ID: 1322594246-0c58039d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-yw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 678431EA2112 for ; Tue, 29 Nov 2011 11:17:27 -0800 (PST) Received: from mail-yw0-f53.google.com (mail-yw0-f53.google.com [209.85.213.53]) by cuda.sgi.com with ESMTP id ycUDX0QMfQ8liMmi for ; Tue, 29 Nov 2011 11:17:27 -0800 (PST) Received: by ywm19 with SMTP id 19so7875539ywm.26 for ; Tue, 29 Nov 2011 11:17:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; bh=6L/KyP6pf9E6Gp5YbQ9ZWiTx8Y/RpUR7Z4qRg09EvzE=; b=NIHvb1Fe/n4R9B0vZXbFO/x5CG4b+IK50bIoZnHazbIfFgiZdOKPYSU7UCHz1d1/pz kE4kQBB8IyvdruftiIOT9730oxsnyXdE/d9uxoJ870YwAwAkI5O9cku3/Lrk9jiJ4Jzf IMPHqpKyxwPDjNvZFnMiabbzfxheUXMjvADWM= MIME-Version: 1.0 Received: by 10.236.178.9 with SMTP id e9mr71131142yhm.77.1322594246777; Tue, 29 Nov 2011 11:17:26 -0800 (PST) Sender: powool@gmail.com Received: by 10.236.75.232 with HTTP; Tue, 29 Nov 2011 11:17:26 -0800 (PST) Date: Tue, 29 Nov 2011 14:17:26 -0500 X-Google-Sender-Auth: k0hNIZNXygHdx32X1GacHBDD1no Message-ID: X-ASG-Orig-Subj: sync() in 2.6.38.5 Subject: sync() in 2.6.38.5 From: Paul Anderson To: xfs-oss Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-yw0-f53.google.com[209.85.213.53] X-Barracuda-Start-Time: 1322594247 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0020 1.0000 -2.0082 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81657 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi all, 2.6.38.5 (x64 intel, in todays case a 40TiByte SAN volume) appears to have a bug whereby not all active metadata will be flushed even on a quiescent machine (one that has nonetheless in the past been under very high load). We have tried several variations of clean shutdowns, combined with for example the "echo 3 >/proc/sys/vm/drop_caches" trick to no avail - we still get lost files (well, 0 length files). We have several big servers scheduled to go down shortly, and I was wondering if there are other ideas besides just coping all recent data to another server. Thanks, Paul From bpm@sgi.com Tue Nov 29 13:22:41 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pATJMfcD092917 for ; Tue, 29 Nov 2011 13:22:41 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id 0E8CDAC001; Tue, 29 Nov 2011 11:22:37 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 70CCE431F74; Tue, 29 Nov 2011 13:23:00 -0600 (CST) Date: Tue, 29 Nov 2011 13:23:00 -0600 From: Ben Myers To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 0/4] xfs fixes for Linux 3.2-rc3 Message-ID: <20111129192300.GW29840@sgi.com> References: <20111128081732.350228200@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111128081732.350228200@bombadil.infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Nov 28, 2011 at 03:17:32AM -0500, Christoph Hellwig wrote: > These are the patches that I think should still go into Linux 3.2. > > The first two are fairly trivial fixes for crashes that can be reproduced > by users action or filesystem corruption. The third is a a fix for the > hang reported by Simon, and although he hasn't tested the final variant > yet I'm fairly confident it should fix it given we use the same pattern > for dquots. Yep. > The last one is the biggest and fixes the log space hang > first reported by Alex and then debugged by Chandra. This last one is pretty big. Could it wait for 3.3? -Ben From landman@scalableinformatics.com Tue Nov 29 13:33:42 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_74 autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pATJXfcW093907 for ; Tue, 29 Nov 2011 13:33:42 -0600 X-ASG-Debug-ID: 1322595221-1311010b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from crunch.scalableinformatics.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4179028611D for ; Tue, 29 Nov 2011 11:33:41 -0800 (PST) Received: from crunch.scalableinformatics.com (173-10-54-97-Michigan.hfc.comcastbusiness.net [173.10.54.97]) by cuda.sgi.com with ESMTP id GeJRRNZIVOFFLgfP for ; Tue, 29 Nov 2011 11:33:41 -0800 (PST) Received: from crunch.scalableinformatics.com (localhost [127.0.0.1]) by crunch.scalableinformatics.com (Postfix) with ESMTP id 2823685E86E5 for ; Tue, 29 Nov 2011 14:33:40 -0500 (EST) Received: from [192.168.1.171] (metal.scalableinformatics.com [192.168.1.171]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by crunch.scalableinformatics.com (Postfix) with ESMTPSA id 1D74D85E0351 for ; Tue, 29 Nov 2011 14:33:40 -0500 (EST) Message-ID: <4ED53394.2010100@scalableinformatics.com> Date: Tue, 29 Nov 2011 14:33:40 -0500 From: Joe Landman Reply-To: landman@scalableinformatics.com Organization: Scalable Informatics User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111110 Thunderbird/8.0 MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: sync() in 2.6.38.5 Subject: Re: sync() in 2.6.38.5 References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: ClamAV using ClamSMTP X-Barracuda-Connect: 173-10-54-97-Michigan.hfc.comcastbusiness.net[173.10.54.97] X-Barracuda-Start-Time: 1322595221 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0013 1.0000 -2.0126 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.41 X-Barracuda-Spam-Status: No, SCORE=-1.41 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81659 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Status: Clean On 11/29/2011 02:17 PM, Paul Anderson wrote: > Hi all, > > 2.6.38.5 (x64 intel, in todays case a 40TiByte SAN volume) appears to > have a bug whereby not all active metadata will be flushed even on a > quiescent machine (one that has nonetheless in the past been under > very high load). > > We have tried several variations of clean shutdowns, combined with for > example the "echo 3>/proc/sys/vm/drop_caches" trick to no avail - we > still get lost files (well, 0 length files). > > We have several big servers scheduled to go down shortly, and I was > wondering if there are other ideas besides just coping all recent data > to another server. Set your vm dirty time to small values. 1 second (100 centiseconds) or so, among other things. You can also force the mount to be synchronous (kills performance though). Try mount -o remount,sync /mountpoint # not sure if this works with xfs though ... sysctl -w vm.dirty_writeback_centisecs=100 sysctl -w vm.dirty_expire_centisecs=100 sysctl -w vm.dirty_ratio=1 -- Joseph Landman, Ph.D Founder and CEO Scalable Informatics Inc. email: landman@scalableinformatics.com web : http://scalableinformatics.com http://scalableinformatics.com/sicluster phone: +1 734 786 8423 x121 fax : +1 866 888 3112 cell : +1 734 612 4615 From BATV+db14702fd3bf66f0f24d+3019+infradead.org+hch@bombadil.srs.infradead.org Tue Nov 29 13:35:12 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pATJZCpA094048 for ; Tue, 29 Nov 2011 13:35:12 -0600 X-ASG-Debug-ID: 1322595311-710f01040000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5949719E844F for ; Tue, 29 Nov 2011 11:35:11 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 7Emryq5LRJeBtL0H for ; Tue, 29 Nov 2011 11:35:11 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RVTSQ-0004D1-DR; Tue, 29 Nov 2011 19:35:10 +0000 Date: Tue, 29 Nov 2011 14:35:10 -0500 From: Christoph Hellwig To: Paul Anderson Cc: xfs-oss X-ASG-Orig-Subj: Re: sync() in 2.6.38.5 Subject: Re: sync() in 2.6.38.5 Message-ID: <20111129193510.GA8848@infradead.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322595311 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81659 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 29, 2011 at 02:17:26PM -0500, Paul Anderson wrote: > Hi all, > > 2.6.38.5 (x64 intel, in todays case a 40TiByte SAN volume) appears to > have a bug whereby not all active metadata will be flushed even on a > quiescent machine (one that has nonetheless in the past been under > very high load). > > We have tried several variations of clean shutdowns, combined with for > example the "echo 3 >/proc/sys/vm/drop_caches" trick to no avail - we > still get lost files (well, 0 length files). > > We have several big servers scheduled to go down shortly, and I was > wondering if there are other ideas besides just coping all recent data > to another server. I'd really love to debug this. We had a few reports of this issue before, but I've neber been able to pinpoint it. Do you remember anything specific to the workload touching these files? To be save I'd rsync data off the first one going down. Can you try to do an explicit fsync for every file, like find | xargs /usr/sbin/xfs_io -c 'fsync' and see if that helps? Answering that question would help us greatly to pinpoint down the issue. From bpm@oss.sgi.com Tue Nov 29 13:35:47 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pATJZkSW094188 for ; Tue, 29 Nov 2011 13:35:46 -0600 Received: (from bpm@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id pATJZkWn094155; Tue, 29 Nov 2011 13:35:46 -0600 Date: Tue, 29 Nov 2011 13:35:46 -0600 Message-Id: <201111291935.pATJZkWn094155@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v3.2-rc1-8-g4c393a6 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: fa8b18edd752a8b4e9d1ee2cd615b82c93cf8bba X-Git-Newrev: 4c393a6059f8442a70512a48ce4639b882b6f6ad This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 4c393a6 xfs: fix attr2 vs large data fork assert 4dd2cb4 xfs: force buffer writeback before blocking on the ilock in inode reclaim from fa8b18edd752a8b4e9d1ee2cd615b82c93cf8bba (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4c393a6059f8442a70512a48ce4639b882b6f6ad Author: Christoph Hellwig Date: Sat Nov 19 17:44:30 2011 +0000 xfs: fix attr2 vs large data fork assert With Dmitry fsstress updates I've seen very reproducible crashes in xfs_attr_shortform_remove because xfs_attr_shortform_bytesfit claims that the attributes would not fit inline into the inode after removing an attribute. It turns out that we were operating on an inode with lots of delalloc extents, and thus an if_bytes values for the data fork that is larger than biggest possible on-disk storage for it which utterly confuses the code near the end of xfs_attr_shortform_bytesfit. Fix this by always allowing the current attribute fork, like we already do for the attr1 format, given that delalloc conversion will take care for moving either the data or attribute area out of line if it doesn't fit at that point - or making the point moot by merging extents at this point. Also document the function better, and clean up some loose bits. Reviewed-by: Dave Chinner Signed-off-by: Christoph Hellwig Signed-off-by: Ben Myers commit 4dd2cb4a28b7ab1f37163a4eba280926a13a8749 Author: Christoph Hellwig Date: Tue Nov 29 12:06:14 2011 -0600 xfs: force buffer writeback before blocking on the ilock in inode reclaim If we are doing synchronous inode reclaim we block the VM from making progress in memory reclaim. So if we encouter a flush locked inode promote it in the delwri list and wake up xfsbufd to write it out now. Without this we can get hangs of up to 30 seconds during workloads hitting synchronous inode reclaim. The scheme is copied from what we do for dquot reclaims. Reported-by: Simon Kirby Signed-off-by: Christoph Hellwig Tested-by: Simon Kirby Signed-off-by: Ben Myers ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_attr_leaf.c | 64 +++++++++++++++++++++++++++++------------------ fs/xfs/xfs_inode.c | 21 +++++++++++++++ fs/xfs/xfs_inode.h | 1 + fs/xfs/xfs_sync.c | 11 ++++++++ 4 files changed, 72 insertions(+), 25 deletions(-) hooks/post-receive -- XFS development tree From sekharan@us.ibm.com Tue Nov 29 17:24:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pATNOWsX115268 for ; Tue, 29 Nov 2011 17:24:33 -0600 X-ASG-Debug-ID: 1322609071-130a03b10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e3.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 085B04D43BF for ; Tue, 29 Nov 2011 15:24:31 -0800 (PST) Received: from e3.ny.us.ibm.com (e3.ny.us.ibm.com [32.97.182.143]) by cuda.sgi.com with ESMTP id hKvPc6SHYKmEmSTP for ; Tue, 29 Nov 2011 15:24:31 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from /spool/local by e3.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 29 Nov 2011 18:24:30 -0500 Received: from d01relay04.pok.ibm.com (9.56.227.236) by e3.ny.us.ibm.com (192.168.1.103) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 29 Nov 2011 18:24:29 -0500 Received: from d01av02.pok.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id pATNOS1T311054 for ; Tue, 29 Nov 2011 18:24:28 -0500 Received: from d01av02.pok.ibm.com (loopback [127.0.0.1]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id pATNOSbu008982 for ; Tue, 29 Nov 2011 21:24:28 -0200 Received: from [9.53.40.164] (chandra-lucid.austin.ibm.com [9.53.40.164]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id pATNOQeN008875; Tue, 29 Nov 2011 21:24:26 -0200 X-ASG-Orig-Subj: Re: [PATCH v2] xfs: Remove the entries from the queue while waking them up Subject: Re: [PATCH v2] xfs: Remove the entries from the queue while waking them up From: Chandra Seetharaman Reply-To: sekharan@us.ibm.com To: Ben Myers , Christoph Hellwig Cc: XFS Mailing List In-Reply-To: <20111129153850.GU29840@sgi.com> References: <1321918880.7115.5.camel@chandra-lucid.austin.ibm.com> <20111129153850.GU29840@sgi.com> Content-Type: text/plain; charset="UTF-8" Organization: IBM Date: Tue, 29 Nov 2011 17:24:25 -0600 Message-ID: <1322609065.7115.1541.camel@chandra-lucid.austin.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit x-cbid: 11112923-8974-0000-0000-000003C26C9B X-Barracuda-Connect: e3.ny.us.ibm.com[32.97.182.143] X-Barracuda-Start-Time: 1322609072 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, 2011-11-29 at 09:38 -0600, Ben Myers wrote: > Hey Chandra, > > On Mon, Nov 21, 2011 at 05:41:20PM -0600, Chandra Seetharaman wrote: > > Changes from Verion 1: > > > > - Added additional comments as per Dave's suggestion > > - Use next instead of tmp > > - change typedef xlog_ticket_t to struct xlog_ticket > > - Check t_queue before adding it to the list (the second time) > > to accomodate system events (based on Christoph's comments) > > FWIW, I reproduced a log hang yesterday in xfstest 273 while testing I didn't have test case 273 in my test directory (old copy). Ran the tests and did see hang and some list corruption. I haven't gone further. > this patch. We'll have to see if Christoph's revision fares any better > today. I tried testcase 273 with Christoph patches and they are running fine for few runs now. I will run test cases 273 and 234 overnight with Christoph's patches and report it tomorrow. > > Thanks, > Ben > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From david@fromorbit.com Tue Nov 29 18:20:00 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAU0Jx5m119186 for ; Tue, 29 Nov 2011 18:20:00 -0600 X-ASG-Debug-ID: 1322612369-6d6d01d60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl6.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1944C19EFDBA for ; Tue, 29 Nov 2011 16:19:30 -0800 (PST) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id xC8H0o4zhENgBeOL for ; Tue, 29 Nov 2011 16:19:30 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsoCAENz1U55LGY5gWdsb2JhbABDqn4jAQEWJiWBcgEBBTocIxAIAxguFCUDIRO/YxKLDASUU5Im Received: from ppp121-44-102-57.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.57]) by ipmail05.adl6.internode.on.net with ESMTP; 30 Nov 2011 10:49:28 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1RVXtX-0001Un-Cv; Wed, 30 Nov 2011 11:19:27 +1100 Date: Wed, 30 Nov 2011 11:19:27 +1100 From: Dave Chinner To: Eric Sandeen Cc: "Martin K. Petersen" , Carlos Maiolino , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Subject: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Message-ID: <20111130001927.GU7046@dastard> References: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> <20111124195042.GA3671@andromeda.usersys.redhat.com> <20111127010643.GU2386@dastard> <4ED2C233.8010104@sandeen.net> <20111127235051.GX2386@dastard> <4ED3B2BC.1060609@sandeen.net> <4ED51899.7000706@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4ED51899.7000706@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1322612371 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0063 1.0000 -1.9801 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.98 X-Barracuda-Spam-Status: No, SCORE=-1.98 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81679 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 29, 2011 at 11:38:33AM -0600, Eric Sandeen wrote: > On 11/29/11 11:15 AM, Martin K. Petersen wrote: > >>>>>> "Eric" == Eric Sandeen writes: > > > > Eric> It seems that we should be checking for any alignment offsets in > > Eric> libxfs then, too; if there IS an offset, then perhaps 4k is the > > Eric> wrong answer, (perhaps there is no right answer) but if there is > > Eric> NO offset, 4k should be the right choice, yes? > > > > In most cases the partitioning/DM tools should give you a 0 offset. But > > it would a good idea to at least print a warning if lbs != pbs and > > offset > 0. > > Right, Dave's concern was for when the partitioning tools didn't do the > job, we don't want to break fs consistency guarantees... > > Dave, does checking for an offset before choosing 4k sectors seem > sufficient to you? Yes, especially if combined with Christoph's comments about ensure the "-f" flag is needed to make a filesystem on an unaligned config. Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+5b5da27019e2cb48a892+3020+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 30 02:54:11 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAU8sBgn175358 for ; Wed, 30 Nov 2011 02:54:11 -0600 X-ASG-Debug-ID: 1322643248-623200e80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BCCEA28919D; Wed, 30 Nov 2011 00:54:08 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id iKDJLrwFyPav5Wxg; Wed, 30 Nov 2011 00:54:08 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RVfvb-0004xf-8E; Wed, 30 Nov 2011 08:54:07 +0000 Date: Wed, 30 Nov 2011 03:54:07 -0500 From: Christoph Hellwig To: Ben Myers Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/4] xfs fixes for Linux 3.2-rc3 Subject: Re: [PATCH 0/4] xfs fixes for Linux 3.2-rc3 Message-ID: <20111130085406.GA19064@infradead.org> References: <20111128081732.350228200@bombadil.infradead.org> <20111129192300.GW29840@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111129192300.GW29840@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322643248 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0084 1.0000 -1.9662 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.87 X-Barracuda-Spam-Status: No, SCORE=-1.87 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81713 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Nov 29, 2011 at 01:23:00PM -0600, Ben Myers wrote: > > The last one is the biggest and fixes the log space hang > > first reported by Alex and then debugged by Chandra. > > This last one is pretty big. Could it wait for 3.3? It's not that big, and if we manage to push it out ASAP it's not even that late in the cycle. Given that people are getting fast hardware managing to hit all kinds of weird AIL and log reservation hangs that had been hidden forever I'd much prefer to get it out into the field ASAP. That also includes a -stable backport, btw. From BATV+5b5da27019e2cb48a892+3020+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 30 02:58:20 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAU8wJoV175773 for ; Wed, 30 Nov 2011 02:58:20 -0600 X-ASG-Debug-ID: 1322643498-788001b20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2209319F3A9F for ; Wed, 30 Nov 2011 00:58:18 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id 4PGgxx6QTrRkRXKD for ; Wed, 30 Nov 2011 00:58:18 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RVfze-0005qe-B8 for xfs@oss.sgi.com; Wed, 30 Nov 2011 08:58:18 +0000 Date: Wed, 30 Nov 2011 03:58:18 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 5/4] xfs: fix nfs export of 64-bit inodes numbers on 32-bit kernels Subject: [PATCH 5/4] xfs: fix nfs export of 64-bit inodes numbers on 32-bit kernels Message-ID: <20111130085817.GA22471@infradead.org> References: <20111128081732.350228200@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111128081732.350228200@bombadil.infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322643499 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.92 X-Barracuda-Spam-Status: No, SCORE=-0.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA620b, BSF_SC5_MJ1963, MAILTO_TO_SPAM_ADDR, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81713 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 0.50 BSF_SC0_SA620b Custom Rule SA620b X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The i_ino field in the VFS inode is of type unsigned long and thus can't hold the full 64-bit inode number on 32-bit kernels. We have the full inode number in the XFS inode, so use that one for nfs exports. Note that I've also switched the 32-bit file handles types to it, just to make the code more consistent and copy & paste errors less likely to happen. Reported-by: Guoquan Yang Reported-by: Hank Peng Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_export.c =================================================================== --- xfs.orig/fs/xfs/xfs_export.c 2011-11-28 12:11:08.923630697 +0100 +++ xfs/fs/xfs/xfs_export.c 2011-11-29 05:48:12.682177223 +0100 @@ -98,22 +98,22 @@ xfs_fs_encode_fh( switch (fileid_type) { case FILEID_INO32_GEN_PARENT: spin_lock(&dentry->d_lock); - fid->i32.parent_ino = dentry->d_parent->d_inode->i_ino; + fid->i32.parent_ino = XFS_I(dentry->d_parent->d_inode)->i_ino; fid->i32.parent_gen = dentry->d_parent->d_inode->i_generation; spin_unlock(&dentry->d_lock); /*FALLTHRU*/ case FILEID_INO32_GEN: - fid->i32.ino = inode->i_ino; + fid->i32.ino = XFS_I(inode)->i_ino; fid->i32.gen = inode->i_generation; break; case FILEID_INO32_GEN_PARENT | XFS_FILEID_TYPE_64FLAG: spin_lock(&dentry->d_lock); - fid64->parent_ino = dentry->d_parent->d_inode->i_ino; + fid64->parent_ino = XFS_I(dentry->d_parent->d_inode)->i_ino; fid64->parent_gen = dentry->d_parent->d_inode->i_generation; spin_unlock(&dentry->d_lock); /*FALLTHRU*/ case FILEID_INO32_GEN | XFS_FILEID_TYPE_64FLAG: - fid64->ino = inode->i_ino; + fid64->ino = XFS_I(inode)->i_ino; fid64->gen = inode->i_generation; break; } From BATV+5b5da27019e2cb48a892+3020+infradead.org+hch@bombadil.srs.infradead.org Wed Nov 30 03:52:09 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAU9q9sj179935 for ; Wed, 30 Nov 2011 03:52:09 -0600 X-ASG-Debug-ID: 1322646725-78bc02db0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D09811EA26E4 for ; Wed, 30 Nov 2011 01:52:05 -0800 (PST) Received: from bombadil.infradead.org (173-166-109-252-newengland.hfc.comcastbusiness.net [173.166.109.252]) by cuda.sgi.com with ESMTP id DQzUaXeD3uaVzzcv for ; Wed, 30 Nov 2011 01:52:05 -0800 (PST) Received: from hch by bombadil.infradead.org with local (Exim 4.76 #1 (Red Hat Linux)) id 1RVgpf-0002UY-Oy; Wed, 30 Nov 2011 09:52:03 +0000 Date: Wed, 30 Nov 2011 04:52:03 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/3] xfs: flush the CIL via a workqueue Subject: Re: [PATCH 3/3] xfs: flush the CIL via a workqueue Message-ID: <20111130095203.GA5871@infradead.org> References: <1310960989-10284-1-git-send-email-david@fromorbit.com> <1310960989-10284-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1310960989-10284-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: 173-166-109-252-newengland.hfc.comcastbusiness.net[173.166.109.252] X-Barracuda-Start-Time: 1322646725 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81717 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Did you plan to resubmit a version of this? On Mon, Jul 18, 2011 at 01:49:49PM +1000, Dave Chinner wrote: > From: Dave Chinner > > Doing background CIL flushes adds significant latency to whatever > async transaction that triggers it. To avoid blocking async > transactions on things like waiting for log buffer IO to complete, > move the CIL push off into a workqueue. By moving the push work > into a workqueue, we remove all the latency that the commit adds > from the foreground transaction commit path. This also means that > single threaded workloads won't do the CIL push procssing, leaving > them more CPU to do more async transactions. > > To do this, we need to keep track of the sequence nnumber we have > pushed work for. This avoids having many transaction commits > attempting to schedule work for the same sequence, and ensures that > we only ever have one push (background or forced) in progress at a > time. It also means that we don't need to take the CIL lock in write > mode to check for potential background push races, which reduces > lock contention. > > Signed-off-by: Dave Chinner > --- > fs/xfs/linux-2.6/xfs_super.c | 7 + > fs/xfs/xfs_log_cil.c | 260 +++++++++++++++++++++++++----------------- > fs/xfs/xfs_log_priv.h | 4 + > 3 files changed, 166 insertions(+), 105 deletions(-) > > diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c > index 6a6d4d9..b3ace86 100644 > --- a/fs/xfs/linux-2.6/xfs_super.c > +++ b/fs/xfs/linux-2.6/xfs_super.c > @@ -1683,8 +1683,14 @@ xfs_init_workqueues(void) > if (!xfs_alloc_wq) > goto out_destroy_ail; > > + xfs_cil_wq = alloc_workqueue("xfscil", WQ_MEM_RECLAIM, 8); > + if (!xfs_ail_wq) > + goto out_destroy_alloc; > + > return 0; > > +out_destroy_alloc: > + destroy_workqueue(xfs_alloc_wq); > out_destroy_ail: > destroy_workqueue(xfs_ail_wq); > out_destroy_syncd: > @@ -1696,6 +1702,7 @@ out: > STATIC void > xfs_destroy_workqueues(void) > { > + destroy_workqueue(xfs_cil_wq); > destroy_workqueue(xfs_ail_wq); > destroy_workqueue(xfs_syncd_wq); > } > diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c > index c7755d5..9e652d2 100644 > --- a/fs/xfs/xfs_log_cil.c > +++ b/fs/xfs/xfs_log_cil.c > @@ -31,67 +31,7 @@ > #include "xfs_alloc.h" > #include "xfs_discard.h" > > -/* > - * Perform initial CIL structure initialisation. If the CIL is not > - * enabled in this filesystem, ensure the log->l_cilp is null so > - * we can check this conditional to determine if we are doing delayed > - * logging or not. > - */ > -int > -xlog_cil_init( > - struct log *log) > -{ > - struct xfs_cil *cil; > - struct xfs_cil_ctx *ctx; > - > - log->l_cilp = NULL; > - if (!(log->l_mp->m_flags & XFS_MOUNT_DELAYLOG)) > - return 0; > - > - cil = kmem_zalloc(sizeof(*cil), KM_SLEEP|KM_MAYFAIL); > - if (!cil) > - return ENOMEM; > - > - ctx = kmem_zalloc(sizeof(*ctx), KM_SLEEP|KM_MAYFAIL); > - if (!ctx) { > - kmem_free(cil); > - return ENOMEM; > - } > - > - INIT_LIST_HEAD(&cil->xc_cil); > - INIT_LIST_HEAD(&cil->xc_committing); > - spin_lock_init(&cil->xc_cil_lock); > - init_rwsem(&cil->xc_ctx_lock); > - init_waitqueue_head(&cil->xc_commit_wait); > - > - INIT_LIST_HEAD(&ctx->committing); > - INIT_LIST_HEAD(&ctx->busy_extents); > - ctx->sequence = 1; > - ctx->cil = cil; > - cil->xc_ctx = ctx; > - cil->xc_current_sequence = ctx->sequence; > - > - cil->xc_log = log; > - log->l_cilp = cil; > - return 0; > -} > - > -void > -xlog_cil_destroy( > - struct log *log) > -{ > - if (!log->l_cilp) > - return; > - > - if (log->l_cilp->xc_ctx) { > - if (log->l_cilp->xc_ctx->ticket) > - xfs_log_ticket_put(log->l_cilp->xc_ctx->ticket); > - kmem_free(log->l_cilp->xc_ctx); > - } > - > - ASSERT(list_empty(&log->l_cilp->xc_cil)); > - kmem_free(log->l_cilp); > -} > +struct workqueue_struct *xfs_cil_wq; > > /* > * Allocate a new ticket. Failing to get a new ticket makes it really hard to > @@ -401,12 +341,58 @@ xlog_cil_committed( > * get a race between multiple pushes for the same sequence they will block on > * the first one and then abort, hence avoiding needless pushes. > */ > -STATIC int > +static void > xlog_cil_push( > - struct log *log, > - xfs_lsn_t push_seq) > + struct log *log, > + xfs_lsn_t push_seq) > { > - struct xfs_cil *cil = log->l_cilp; > + struct xfs_cil *cil = log->l_cilp; > + > + if (!cil) > + return; > + > + ASSERT(!push_seq || push_seq <= cil->xc_current_sequence); > + > + /* > + * don't do a background push if we haven't used up all the > + * space available yet. > + */ > + if (!push_seq && cil->xc_ctx->space_used < XLOG_CIL_SPACE_LIMIT(log)) > + return; > + > + /* > + * if we are being asked to push to a specific sequence, and we have > + * already queued a larger push, then nothing to do. > + */ > + if (push_seq && push_seq <= cil->xc_push_seq) > + return; > + > + spin_lock(&cil->xc_cil_lock); > + if (!push_seq) > + push_seq = cil->xc_current_sequence; > + > + /* > + * if the CIL is empty, or we've already pushed the sequence, then > + * there's no work we need to do. > + */ > + if (list_empty(&cil->xc_cil) || push_seq <= cil->xc_push_seq) { > + spin_unlock(&cil->xc_cil_lock); > + return; > + } > + > + cil->xc_push_seq = push_seq; > + queue_work(xfs_cil_wq, &cil->xc_push_work); > + spin_unlock(&cil->xc_cil_lock); > + > +} > + > +static void > +xlog_cil_push_work( > + struct work_struct *work) > +{ > + struct xfs_cil *cil = container_of(work, struct xfs_cil, > + xc_push_work); > + struct log *log = cil->xc_log; > struct xfs_log_vec *lv; > struct xfs_cil_ctx *ctx; > struct xfs_cil_ctx *new_ctx; > @@ -419,40 +405,34 @@ xlog_cil_push( > struct xfs_trans_header thdr; > struct xfs_log_iovec lhdr; > struct xfs_log_vec lvhdr = { NULL }; > + xfs_lsn_t push_seq; > xfs_lsn_t commit_lsn; > > - if (!cil) > - return 0; > - > - ASSERT(!push_seq || push_seq <= cil->xc_ctx->sequence); > - > new_ctx = kmem_zalloc(sizeof(*new_ctx), KM_SLEEP|KM_NOFS); > new_ctx->ticket = xlog_cil_ticket_alloc(log); > > - /* > - * Lock out transaction commit, but don't block for background pushes > - * unless we are well over the CIL space limit. See the definition of > - * XLOG_CIL_HARD_SPACE_LIMIT() for the full explanation of the logic > - * used here. > - */ > - if (!down_write_trylock(&cil->xc_ctx_lock)) { > - if (!push_seq && > - cil->xc_ctx->space_used < XLOG_CIL_HARD_SPACE_LIMIT(log)) > - goto out_free_ticket; > - down_write(&cil->xc_ctx_lock); > - } > + /* Lock out transaction commiti until we've switch contexts */ > + down_write(&cil->xc_ctx_lock); > ctx = cil->xc_ctx; > > - /* check if we've anything to push */ > - if (list_empty(&cil->xc_cil)) > - goto out_skip; > + spin_lock(&cil->xc_cil_lock); > + push_seq = cil->xc_push_seq; > + ASSERT(push_seq > 0 && push_seq <= ctx->sequence); > > - /* check for spurious background flush */ > - if (!push_seq && cil->xc_ctx->space_used < XLOG_CIL_SPACE_LIMIT(log)) > + /* > + * Check if we've anything to push. If there is nothing, then we don't > + * move on to a new sequence number and so we have to be able to push > + * this sequence again later. > + */ > + if (list_empty(&cil->xc_cil)) { > + cil->xc_push_seq = 0; > + spin_unlock(&cil->xc_cil_lock); > goto out_skip; > + } > + spin_unlock(&cil->xc_cil_lock); > > /* check for a previously pushed seqeunce */ > - if (push_seq && push_seq < cil->xc_ctx->sequence) > + if (push_seq < ctx->sequence) > goto out_skip; > > /* > @@ -602,20 +582,19 @@ restart: > spin_unlock(&cil->xc_cil_lock); > > /* release the hounds! */ > - return xfs_log_release_iclog(log->l_mp, commit_iclog); > + xfs_log_release_iclog(log->l_mp, commit_iclog); > + return; > > out_skip: > up_write(&cil->xc_ctx_lock); > -out_free_ticket: > xfs_log_ticket_put(new_ctx->ticket); > kmem_free(new_ctx); > - return 0; > + return; > > out_abort_free_ticket: > xfs_log_ticket_put(tic); > out_abort: > xlog_cil_committed(ctx, XFS_LI_ABORTED); > - return XFS_ERROR(EIO); > } > > /* > @@ -645,7 +624,6 @@ xfs_log_commit_cil( > { > struct log *log = mp->m_log; > int log_flags = 0; > - int push = 0; > > if (flags & XFS_TRANS_RELEASE_LOG_RES) > log_flags = XFS_LOG_REL_PERM_RESERV; > @@ -694,12 +672,6 @@ xfs_log_commit_cil( > */ > xfs_trans_free_items(tp, *commit_lsn, 0); > > - /* check for background commit before unlock */ > - if (log->l_cilp->xc_ctx->space_used > XLOG_CIL_SPACE_LIMIT(log)) > - push = 1; > - > - up_read(&log->l_cilp->xc_ctx_lock); > - > /* > * We need to push CIL every so often so we don't cache more than we > * can fit in the log. The limit really is that a checkpoint can't be > @@ -707,8 +679,8 @@ xfs_log_commit_cil( > * overwrite the previous checkpoint), but commit latency and memory > * usage limit this to a smaller size in most cases. > */ > - if (push) > - xlog_cil_push(log, 0); > + xlog_cil_push(log, 0); > + up_read(&log->l_cilp->xc_ctx_lock); > } > > /* > @@ -720,9 +692,6 @@ xfs_log_commit_cil( > * > * We return the current commit lsn to allow the callers to determine if a > * iclog flush is necessary following this call. > - * > - * XXX: Initially, just push the CIL unconditionally and return whatever > - * commit lsn is there. It'll be empty, so this is broken for now. > */ > xfs_lsn_t > xlog_cil_force_lsn( > @@ -733,6 +702,8 @@ xlog_cil_force_lsn( > struct xfs_cil_ctx *ctx; > xfs_lsn_t commit_lsn = NULLCOMMITLSN; > > + /* lock out background commit */ > + down_read(&log->l_cilp->xc_ctx_lock); > ASSERT(sequence <= cil->xc_current_sequence); > > /* > @@ -740,8 +711,23 @@ xlog_cil_force_lsn( > * xlog_cil_push() handles racing pushes for the same sequence, > * so no need to deal with it here. > */ > - if (sequence == cil->xc_current_sequence) > + if (sequence == cil->xc_current_sequence) { > xlog_cil_push(log, sequence); > + up_read(&log->l_cilp->xc_ctx_lock); > + > + /* > + * We have to block waiting for the push to execute even if we > + * didn't push the sequence out as we need to wait for the push > + * to get queued into the committing list. Once it is in the > + * committing list, we can harvest the commit_lsn of the > + * checkpoint issued by the push. > + * > + * We don't hold the ctx lock while doing this as the push work > + * needs to hold it. > + */ > + flush_work_sync(&cil->xc_push_work); > + } else > + up_read(&log->l_cilp->xc_ctx_lock); > > /* > * See if we can find a previous sequence still committing. > @@ -802,3 +788,67 @@ xfs_log_item_in_current_chkpt( > return false; > return true; > } > + > +/* > + * Perform initial CIL structure initialisation. If the CIL is not > + * enabled in this filesystem, ensure the log->l_cilp is null so > + * we can check this conditional to determine if we are doing delayed > + * logging or not. > + */ > +int > +xlog_cil_init( > + struct log *log) > +{ > + struct xfs_cil *cil; > + struct xfs_cil_ctx *ctx; > + > + log->l_cilp = NULL; > + if (!(log->l_mp->m_flags & XFS_MOUNT_DELAYLOG)) > + return 0; > + > + cil = kmem_zalloc(sizeof(*cil), KM_SLEEP|KM_MAYFAIL); > + if (!cil) > + return ENOMEM; > + > + ctx = kmem_zalloc(sizeof(*ctx), KM_SLEEP|KM_MAYFAIL); > + if (!ctx) { > + kmem_free(cil); > + return ENOMEM; > + } > + > + INIT_WORK(&cil->xc_push_work, xlog_cil_push_work); > + INIT_LIST_HEAD(&cil->xc_cil); > + INIT_LIST_HEAD(&cil->xc_committing); > + spin_lock_init(&cil->xc_cil_lock); > + init_rwsem(&cil->xc_ctx_lock); > + init_waitqueue_head(&cil->xc_commit_wait); > + > + INIT_LIST_HEAD(&ctx->committing); > + INIT_LIST_HEAD(&ctx->busy_extents); > + ctx->sequence = 1; > + ctx->cil = cil; > + cil->xc_ctx = ctx; > + cil->xc_current_sequence = ctx->sequence; > + > + cil->xc_log = log; > + log->l_cilp = cil; > + return 0; > +} > + > +void > +xlog_cil_destroy( > + struct log *log) > +{ > + if (!log->l_cilp) > + return; > + > + if (log->l_cilp->xc_ctx) { > + if (log->l_cilp->xc_ctx->ticket) > + xfs_log_ticket_put(log->l_cilp->xc_ctx->ticket); > + kmem_free(log->l_cilp->xc_ctx); > + } > + > + ASSERT(list_empty(&log->l_cilp->xc_cil)); > + kmem_free(log->l_cilp); > +} > + > diff --git a/fs/xfs/xfs_log_priv.h b/fs/xfs/xfs_log_priv.h > index 2d3b6a4..61d55f9 100644 > --- a/fs/xfs/xfs_log_priv.h > +++ b/fs/xfs/xfs_log_priv.h > @@ -417,8 +417,12 @@ struct xfs_cil { > struct list_head xc_committing; > wait_queue_head_t xc_commit_wait; > xfs_lsn_t xc_current_sequence; > + struct work_struct xc_push_work; > + xfs_lsn_t xc_push_seq; > }; > > +extern struct workqueue_struct *xfs_cil_wq; > + > /* > * The amount of log space we allow the CIL to aggregate is difficult to size. > * Whatever we choose, we have to make sure we can get a reservation for the > -- > 1.7.5.1 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From cmaiolino@redhat.com Wed Nov 30 09:04:15 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAUF4FRI196639 for ; Wed, 30 Nov 2011 09:04:15 -0600 X-ASG-Debug-ID: 1322665454-2360033f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id ED06128BF4D for ; Wed, 30 Nov 2011 07:04:14 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id CClKvLDwwQbVVBBJ for ; Wed, 30 Nov 2011 07:04:14 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pAUF459r020272 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 30 Nov 2011 10:04:05 -0500 Received: from andromeda.usersys.redhat.com (ovpn-113-99.phx2.redhat.com [10.3.113.99]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id pAUF3w8k011171 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Wed, 30 Nov 2011 10:04:02 -0500 Date: Wed, 30 Nov 2011 13:03:58 -0200 From: Carlos Maiolino To: Dave Chinner Cc: Eric Sandeen , "Martin K. Petersen" , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Subject: Re: [PATCH] libxfs: Get Physical Sector Size instead of Logical Sector size Message-ID: <20111130150357.GA10140@andromeda.usersys.redhat.com> References: <1322162451-17036-1-git-send-email-cmaiolino@redhat.com> <20111124195042.GA3671@andromeda.usersys.redhat.com> <20111127010643.GU2386@dastard> <4ED2C233.8010104@sandeen.net> <20111127235051.GX2386@dastard> <4ED3B2BC.1060609@sandeen.net> <4ED51899.7000706@sandeen.net> <20111130001927.GU7046@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111130001927.GU7046@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1322665454 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Ok, looks like we have a definition here about what mkfs should do in regards of the lbs/pbs. I'll be working on a patch to it. Is there any other thing I should pay attention besides what have been discussed here? I'll send a patch as soon as I have it :-) On Wed, Nov 30, 2011 at 11:19:27AM +1100, Dave Chinner wrote: > On Tue, Nov 29, 2011 at 11:38:33AM -0600, Eric Sandeen wrote: > > On 11/29/11 11:15 AM, Martin K. Petersen wrote: > > >>>>>> "Eric" == Eric Sandeen writes: > > > > > > Eric> It seems that we should be checking for any alignment offsets in > > > Eric> libxfs then, too; if there IS an offset, then perhaps 4k is the > > > Eric> wrong answer, (perhaps there is no right answer) but if there is > > > Eric> NO offset, 4k should be the right choice, yes? > > > > > > In most cases the partitioning/DM tools should give you a 0 offset. But > > > it would a good idea to at least print a warning if lbs != pbs and > > > offset > 0. > > > > Right, Dave's concern was for when the partitioning tools didn't do the > > job, we don't want to break fs consistency guarantees... > > > > Dave, does checking for an offset before choosing 4k sectors seem > > sufficient to you? > > Yes, especially if combined with Christoph's comments about ensure > the "-f" flag is needed to make a filesystem on an unaligned config. > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com -- --Carlos From najem1@menara.ma Wed Nov 30 09:53:33 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_50,HTML_MESSAGE, MIME_QP_LONG_LINE autolearn=no version=3.4.0-r929098 Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAUFrWtp200067 for ; Wed, 30 Nov 2011 09:53:33 -0600 X-ASG-Debug-ID: 1322668409-1d22006e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp-s4.menara.ma (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 46FF2155D2D9 for ; Wed, 30 Nov 2011 07:53:30 -0800 (PST) Received: from smtp-s4.menara.ma (smtp2.menara.ma [81.192.53.76]) by cuda.sgi.com with ESMTP id AaOmosYCgYQFmLcQ for ; Wed, 30 Nov 2011 07:53:30 -0800 (PST) X-AuditID: c0a80a48-b7b0fae000000b86-34-4ed6bde2268f Received: from winfesmtp1.menara.local ( [196.217.246.110]) by smtp-s4.menara.ma (Symantec Brightmail Gateway) with SMTP id 19.0F.02950.2EDB6DE4; Wed, 30 Nov 2011 23:36:02 +0000 (WET) To: undisclosed-recipients:; Received: from EXVS22.menara.local ([192.168.5.53]) by winfesmtp1.menara.local with Microsoft SMTPSVC(6.0.3790.4675); Wed, 30 Nov 2011 15:45:35 +0000 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01CCAF77.18C36448" Content-class: urn:content-classes:message x-mimeole: Produced By Microsoft Exchange V6.5 X-ASG-Orig-Subj: Your mailbox has exceeded its limit Subject: Your mailbox has exceeded its limit Date: Wed, 30 Nov 2011 15:45:33 -0000 Message-ID: <1DA7B17AFC05EB4A910E0D5394A78B0B077DB10F@EXVS22.menara.local> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Your mailbox has exceeded its limit Thread-Index: Acyvdxh5hCXyLogERt6Z/1BYsJa3hg== From: "- najem1" X-OriginalArrivalTime: 30 Nov 2011 15:45:35.0736 (UTC) FILETIME=[19E5C780:01CCAF77] X-Brightmail-Tracker: AAAAARljYlI= X-Barracuda-Connect: smtp2.menara.ma[81.192.53.76] X-Barracuda-Start-Time: 1322668411 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4990 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.84 X-Barracuda-Spam-Status: No, SCORE=0.84 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE, MIME_QP_LONG_LINE, MIME_QP_LONG_LINE_2, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.81740 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76 chars 0.82 MIME_QP_LONG_LINE_2 RAW: Quoted-printable line longer than 76 chars X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format. ------_=_NextPart_001_01CCAF77.18C36448 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Your mailbox has exceeded its limit; your webmail is currently running = 99.7% of its Quota limit of 100%. You cannot send or receive email properly until you have updated your webmail account. To update your = webmail account, click on the link below and paste in your browser to request for = upgrade.https://docs.google.com/spreadsheet/viewform?formkey=3DdFJwQ254WG= dOT010dGgwOVRaeUFLT0E6MQ We are sincerely sorry for any inconvenience this might cause you; we = tend to serve you better.Thanks for your co-operation. Webmail Update Team. ------_=_NextPart_001_01CCAF77.18C36448 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable =0A= =0A= =0A=
Your mailbox =
has exceeded its limit; your webmail is currently running 99.7% of its =
Quota limit of 100%. You cannot send or receive email
properly until you have updated your webmail = account. To update your webmail account, click on the link below and = paste in your browser to
request for = upgrade.https://docs.google.com/spreadsheet/viewform?formkey=3DdF= JwQ254WGdOT010dGgwOVRaeUFLT0E6MQ
We = are sincerely sorry for any inconvenience this might cause you; we tend = to serve you better.Thanks for your co-operation.
Webmail Update Team.
------_=_NextPart_001_01CCAF77.18C36448-- From root@nfs10.americas.sgi.com Wed Nov 30 11:58:50 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAUHwoSW208146 for ; Wed, 30 Nov 2011 11:58:50 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 4FB2F16A342; Wed, 30 Nov 2011 12:11:46 -0600 (CST) From: Ben Myers To: greg@kroah.com, stable@vger.kernel.org Cc: xfs@oss.sgi.com, bpm@sgi.com Subject: XFS update for 3.1-stable (resent) Date: Wed, 30 Nov 2011 12:10:54 -0600 Message-Id: <1322676660-22945-1-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f In-Reply-To: <20111128214018.GB1650@kroah.com> References: <20111128214018.GB1650@kroah.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Greg, The last mailing of this patch set went AWOL. Here's another whirl. Greg K-H wrote: > Was stable@vger.kernel.org on the to: line? If so, I should have seen them > through that, but I don't, which is worrysome to me. I thought so. > The 3.0 series is already in the last 3.0.11 release, so I don't need them, I > think I need the 3.1 patches, right? Affirmative. You only need the 3.1 patches, here they are: --- This is a series of XFS fixes from current mainline which are important for 3.1-stable. Note that it is the same patch set that Christoph submitted for 3.0-stable, minus the first three patches which are already included in 3.1. My QA came out ok with these six patches atop 3.1.y. Thanks! Ben From root@nfs10.americas.sgi.com Wed Nov 30 11:58:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAUHwsOk208168 for ; Wed, 30 Nov 2011 11:58:54 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 8FB1B16A345; Wed, 30 Nov 2011 12:11:50 -0600 (CST) From: Ben Myers To: greg@kroah.com, stable@vger.kernel.org Cc: xfs@oss.sgi.com, bpm@sgi.com, Mitsuo Hayasaka , Alex Elder Subject: [PATCH 3/6] xfs: Return -EIO when xfs_vn_getattr() failed Date: Wed, 30 Nov 2011 12:10:57 -0600 Message-Id: <1322676660-22945-4-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f In-Reply-To: <1322676660-22945-1-git-send-email-bpm@sgi.com> References: <20111128214018.GB1650@kroah.com> <1322676660-22945-1-git-send-email-bpm@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Mitsuo Hayasaka commit ed32201e65e15f3e6955cb84cbb544b08f81e5a5 upstream. An attribute of inode can be fetched via xfs_vn_getattr() in XFS. Currently it returns EIO, not negative value, when it failed. As a result, the system call returns not negative value even though an error occured. The stat(2), ls and mv commands cannot handle this error and do not work correctly. This patch fixes this bug, and returns -EIO, not EIO when an error is detected in xfs_vn_getattr(). Signed-off-by: Mitsuo Hayasaka Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder --- fs/xfs/xfs_iops.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 673704f..474920b 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -465,7 +465,7 @@ xfs_vn_getattr( trace_xfs_getattr(ip); if (XFS_FORCED_SHUTDOWN(mp)) - return XFS_ERROR(EIO); + return -XFS_ERROR(EIO); stat->size = XFS_ISIZE(ip); stat->dev = inode->i_sb->s_dev; -- 1.7.8.rc0.46.g5ae0f From root@nfs10.americas.sgi.com Wed Nov 30 11:58:56 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,J_CHICKENPOX_64 autolearn=no version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAUHwukx208186 for ; Wed, 30 Nov 2011 11:58:56 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 25E2A16A348; Wed, 30 Nov 2011 12:11:52 -0600 (CST) From: Ben Myers To: greg@kroah.com, stable@vger.kernel.org Cc: xfs@oss.sgi.com, bpm@sgi.com, Carlos Maiolino , Alex Elder Subject: [PATCH 5/6] xfs: Fix possible memory corruption in xfs_readlink Date: Wed, 30 Nov 2011 12:10:59 -0600 Message-Id: <1322676660-22945-6-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f In-Reply-To: <1322676660-22945-1-git-send-email-bpm@sgi.com> References: <20111128214018.GB1650@kroah.com> <1322676660-22945-1-git-send-email-bpm@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Carlos Maiolino commit b52a360b2aa1c59ba9970fb0f52bbb093fcc7a24 upstream. Fixes a possible memory corruption when the link is larger than MAXPATHLEN and XFS_DEBUG is not enabled. This also remove the S_ISLNK assert, since the inode mode is checked previously in xfs_readlink_by_handle() and via VFS. Updated to address concerns raised by Ben Hutchings about the loose attention paid to 32- vs 64-bit values, and the lack of handling a potentially negative pathlen value: - Changed type of "pathlen" to be xfs_fsize_t, to match that of ip->i_d.di_size - Added checking for a negative pathlen to the too-long pathlen test, and generalized the message that gets reported in that case to reflect the change As a result, if a negative pathlen were encountered, this function would return EFSCORRUPTED (and would fail an assertion for a debug build)--just as would a too-long pathlen. Signed-off-by: Alex Elder Signed-off-by: Carlos Maiolino Reviewed-by: Christoph Hellwig --- fs/xfs/xfs_vnodeops.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-) diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 51fc429..b9e2873 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -113,7 +113,7 @@ xfs_readlink( char *link) { xfs_mount_t *mp = ip->i_mount; - int pathlen; + xfs_fsize_t pathlen; int error = 0; trace_xfs_readlink(ip); @@ -123,13 +123,19 @@ xfs_readlink( xfs_ilock(ip, XFS_ILOCK_SHARED); - ASSERT(S_ISLNK(ip->i_d.di_mode)); - ASSERT(ip->i_d.di_size <= MAXPATHLEN); - pathlen = ip->i_d.di_size; if (!pathlen) goto out; + if (pathlen < 0 || pathlen > MAXPATHLEN) { + xfs_alert(mp, "%s: inode (%llu) bad symlink length (%lld)", + __func__, (unsigned long long) ip->i_ino, + (long long) pathlen); + ASSERT(0); + return XFS_ERROR(EFSCORRUPTED); + } + + if (ip->i_df.if_flags & XFS_IFINLINE) { memcpy(link, ip->i_df.if_u1.if_data, pathlen); link[pathlen] = '\0'; -- 1.7.8.rc0.46.g5ae0f From root@nfs10.americas.sgi.com Wed Nov 30 11:58:57 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAUHwuQ3208191 for ; Wed, 30 Nov 2011 11:58:56 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id C57FC16A349; Wed, 30 Nov 2011 12:11:52 -0600 (CST) From: Ben Myers To: greg@kroah.com, stable@vger.kernel.org Cc: xfs@oss.sgi.com, bpm@sgi.com, Mitsuo Hayasaka , Alex Elder , Christoph Hellwig Subject: [PATCH 6/6] xfs: use doalloc flag in xfs_qm_dqattach_one() Date: Wed, 30 Nov 2011 12:11:00 -0600 Message-Id: <1322676660-22945-7-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f In-Reply-To: <1322676660-22945-1-git-send-email-bpm@sgi.com> References: <20111128214018.GB1650@kroah.com> <1322676660-22945-1-git-send-email-bpm@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Mitsuo Hayasaka commit db3e74b582915d66e10b0c73a62763418f54c340 upstream. The doalloc arg in xfs_qm_dqattach_one() is a flag that indicates whether a new area to handle quota information will be allocated if needed. Originally, it was passed to xfs_qm_dqget(), but has been removed by the following commit (probably by mistake): commit 8e9b6e7fa4544ea8a0e030c8987b918509c8ff47 Author: Christoph Hellwig Date: Sun Feb 8 21:51:42 2009 +0100 xfs: remove the unused XFS_QMOPT_DQLOCK flag As the result, xfs_qm_dqget() called from xfs_qm_dqattach_one() never allocates the new area even if it is needed. This patch gives the doalloc arg to xfs_qm_dqget() in xfs_qm_dqattach_one() to fix this problem. Signed-off-by: Mitsuo Hayasaka Cc: Alex Elder Cc: Christoph Hellwig Reviewed-by: Christoph Hellwig Signed-off-by: Ben Myers --- fs/xfs/xfs_qm.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c index 9a0aa76..95ba6dc 100644 --- a/fs/xfs/xfs_qm.c +++ b/fs/xfs/xfs_qm.c @@ -674,7 +674,8 @@ xfs_qm_dqattach_one( * disk and we didn't ask it to allocate; * ESRCH if quotas got turned off suddenly. */ - error = xfs_qm_dqget(ip->i_mount, ip, id, type, XFS_QMOPT_DOWARN, &dqp); + error = xfs_qm_dqget(ip->i_mount, ip, id, type, + doalloc | XFS_QMOPT_DOWARN, &dqp); if (error) return error; -- 1.7.8.rc0.46.g5ae0f From root@nfs10.americas.sgi.com Wed Nov 30 11:58:52 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAUHwq4d208155 for ; Wed, 30 Nov 2011 11:58:52 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 3A63916A343; Wed, 30 Nov 2011 12:11:48 -0600 (CST) From: Ben Myers To: greg@kroah.com, stable@vger.kernel.org Cc: xfs@oss.sgi.com, bpm@sgi.com, Dave Chinner , Alex Elder Subject: [PATCH 1/6] xfs: don't serialise direct IO reads on page cache checks Date: Wed, 30 Nov 2011 12:10:55 -0600 Message-Id: <1322676660-22945-2-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f In-Reply-To: <1322676660-22945-1-git-send-email-bpm@sgi.com> References: <20111128214018.GB1650@kroah.com> <1322676660-22945-1-git-send-email-bpm@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Dave Chinner commit 0c38a2512df272b14ef4238b476a2e4f70da1479 upstream. There is no need to grab the i_mutex of the IO lock in exclusive mode if we don't need to invalidate the page cache. Taking these locks on every direct IO effective serialises them as taking the IO lock in exclusive mode has to wait for all shared holders to drop the lock. That only happens when IO is complete, so effective it prevents dispatch of concurrent direct IO reads to the same inode. Fix this by taking the IO lock shared to check the page cache state, and only then drop it and take the IO lock exclusively if there is work to be done. Hence for the normal direct IO case, no exclusive locking will occur. Signed-off-by: Dave Chinner Tested-by: Joern Engel Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder --- fs/xfs/xfs_file.c | 17 ++++++++++++++--- 1 files changed, 14 insertions(+), 3 deletions(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 7f7b424..8fd4a07 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -317,7 +317,19 @@ xfs_file_aio_read( if (XFS_FORCED_SHUTDOWN(mp)) return -EIO; - if (unlikely(ioflags & IO_ISDIRECT)) { + /* + * Locking is a bit tricky here. If we take an exclusive lock + * for direct IO, we effectively serialise all new concurrent + * read IO to this file and block it behind IO that is currently in + * progress because IO in progress holds the IO lock shared. We only + * need to hold the lock exclusive to blow away the page cache, so + * only take lock exclusively if the page cache needs invalidation. + * This allows the normal direct IO case of no page cache pages to + * proceeed concurrently without serialisation. + */ + xfs_rw_ilock(ip, XFS_IOLOCK_SHARED); + if ((ioflags & IO_ISDIRECT) && inode->i_mapping->nrpages) { + xfs_rw_iunlock(ip, XFS_IOLOCK_SHARED); xfs_rw_ilock(ip, XFS_IOLOCK_EXCL); if (inode->i_mapping->nrpages) { @@ -330,8 +342,7 @@ xfs_file_aio_read( } } xfs_rw_ilock_demote(ip, XFS_IOLOCK_EXCL); - } else - xfs_rw_ilock(ip, XFS_IOLOCK_SHARED); + } trace_xfs_file_read(ip, size, iocb->ki_pos, ioflags); -- 1.7.8.rc0.46.g5ae0f From root@nfs10.americas.sgi.com Wed Nov 30 11:58:53 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAUHwrMw208164 for ; Wed, 30 Nov 2011 11:58:53 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 0B90116A346; Wed, 30 Nov 2011 12:11:49 -0600 (CST) From: Ben Myers To: greg@kroah.com, stable@vger.kernel.org Cc: xfs@oss.sgi.com, bpm@sgi.com, Christoph Hellwig , Christoph Hellwig , Alex Elder Subject: [PATCH 2/6] xfs: avoid direct I/O write vs buffered I/O race Date: Wed, 30 Nov 2011 12:10:56 -0600 Message-Id: <1322676660-22945-3-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f In-Reply-To: <1322676660-22945-1-git-send-email-bpm@sgi.com> References: <20111128214018.GB1650@kroah.com> <1322676660-22945-1-git-send-email-bpm@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Christoph Hellwig commit c58cb165bd44de8aaee9755a144136ae743be116 upstream. Currently a buffered reader or writer can add pages to the pagecache while we are waiting for the iolock in xfs_file_dio_aio_write. Prevent this by re-checking mapping->nrpages after we got the iolock, and if nessecary upgrade the lock to exclusive mode. To simplify this a bit only take the ilock inside of xfs_file_aio_write_checks. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Alex Elder --- fs/xfs/xfs_file.c | 17 ++++++++++++++--- 1 files changed, 14 insertions(+), 3 deletions(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 8fd4a07..b7e75c6 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -677,6 +677,7 @@ xfs_file_aio_write_checks( xfs_fsize_t new_size; int error = 0; + xfs_rw_ilock(ip, XFS_ILOCK_EXCL); error = generic_write_checks(file, pos, count, S_ISBLK(inode->i_mode)); if (error) { xfs_rw_iunlock(ip, XFS_ILOCK_EXCL | *iolock); @@ -768,14 +769,24 @@ xfs_file_dio_aio_write( *iolock = XFS_IOLOCK_EXCL; else *iolock = XFS_IOLOCK_SHARED; - xfs_rw_ilock(ip, XFS_ILOCK_EXCL | *iolock); + xfs_rw_ilock(ip, *iolock); ret = xfs_file_aio_write_checks(file, &pos, &count, iolock); if (ret) return ret; + /* + * Recheck if there are cached pages that need invalidate after we got + * the iolock to protect against other threads adding new pages while + * we were waiting for the iolock. + */ + if (mapping->nrpages && *iolock == XFS_IOLOCK_SHARED) { + xfs_rw_iunlock(ip, *iolock); + *iolock = XFS_IOLOCK_EXCL; + xfs_rw_ilock(ip, *iolock); + } + if (mapping->nrpages) { - WARN_ON(*iolock != XFS_IOLOCK_EXCL); ret = -xfs_flushinval_pages(ip, (pos & PAGE_CACHE_MASK), -1, FI_REMAPF_LOCKED); if (ret) @@ -820,7 +831,7 @@ xfs_file_buffered_aio_write( size_t count = ocount; *iolock = XFS_IOLOCK_EXCL; - xfs_rw_ilock(ip, XFS_ILOCK_EXCL | *iolock); + xfs_rw_ilock(ip, *iolock); ret = xfs_file_aio_write_checks(file, &pos, &count, iolock); if (ret) -- 1.7.8.rc0.46.g5ae0f From root@nfs10.americas.sgi.com Wed Nov 30 11:58:55 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from nfs10.americas.sgi.com (nfs10.americas.sgi.com [128.162.245.67]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAUHwtqp208177 for ; Wed, 30 Nov 2011 11:58:55 -0600 Received: by nfs10.americas.sgi.com (Postfix, from userid 0) id 6E81A16A347; Wed, 30 Nov 2011 12:11:51 -0600 (CST) From: Ben Myers To: greg@kroah.com, stable@vger.kernel.org Cc: xfs@oss.sgi.com, bpm@sgi.com, Christoph Hellwig , Christoph Hellwig , Alex Elder Subject: [PATCH 4/6] xfs: fix buffer flushing during unmount Date: Wed, 30 Nov 2011 12:10:58 -0600 Message-Id: <1322676660-22945-5-git-send-email-bpm@sgi.com> X-Mailer: git-send-email 1.7.8.rc0.46.g5ae0f In-Reply-To: <1322676660-22945-1-git-send-email-bpm@sgi.com> References: <20111128214018.GB1650@kroah.com> <1322676660-22945-1-git-send-email-bpm@sgi.com> X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From: Christoph Hellwig commit 87c7bec7fc3377b3873eb3a0f4b603981ea16ebb upstream. The code to flush buffers in the umount code is a bit iffy: we first flush all delwri buffers out, but then might be able to queue up a new one when logging the sb counts. On a normal shutdown that one would get flushed out when doing the synchronous superblock write in xfs_unmountfs_writesb, but we skip that one if the filesystem has been shut down. Fix this by moving the delwri list flushing until just before unmounting the log, and while we're at it also remove the superflous delwri list and buffer lru flusing for the rt and log device that can never have cached or delwri buffers. Signed-off-by: Christoph Hellwig Reported-by: Amit Sahrawat Tested-by: Amit Sahrawat Signed-off-by: Alex Elder --- fs/xfs/xfs_buf.h | 1 - fs/xfs/xfs_mount.c | 29 ++++++++++------------------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/fs/xfs/xfs_buf.h b/fs/xfs/xfs_buf.h index 620972b..8e8b06b 100644 --- a/fs/xfs/xfs_buf.h +++ b/fs/xfs/xfs_buf.h @@ -320,7 +320,6 @@ extern struct list_head *xfs_get_buftarg_list(void); #define xfs_getsize_buftarg(buftarg) block_size((buftarg)->bt_bdev) #define xfs_readonly_buftarg(buftarg) bdev_read_only((buftarg)->bt_bdev) -#define xfs_binval(buftarg) xfs_flush_buftarg(buftarg, 1) #define XFS_bflush(buftarg) xfs_flush_buftarg(buftarg, 1) #endif /* __XFS_BUF_H__ */ diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 0081657..d4d5775 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -44,9 +44,6 @@ #include "xfs_trace.h" -STATIC void xfs_unmountfs_wait(xfs_mount_t *); - - #ifdef HAVE_PERCPU_SB STATIC void xfs_icsb_balance_counter(xfs_mount_t *, xfs_sb_field_t, int); @@ -1496,11 +1493,6 @@ xfs_unmountfs( */ xfs_log_force(mp, XFS_LOG_SYNC); - xfs_binval(mp->m_ddev_targp); - if (mp->m_rtdev_targp) { - xfs_binval(mp->m_rtdev_targp); - } - /* * Unreserve any blocks we have so that when we unmount we don't account * the reserved free space as used. This is really only necessary for @@ -1526,7 +1518,16 @@ xfs_unmountfs( xfs_warn(mp, "Unable to update superblock counters. " "Freespace may not be correct on next mount."); xfs_unmountfs_writesb(mp); - xfs_unmountfs_wait(mp); /* wait for async bufs */ + + /* + * Make sure all buffers have been flushed and completed before + * unmounting the log. + */ + error = xfs_flush_buftarg(mp->m_ddev_targp, 1); + if (error) + xfs_warn(mp, "%d busy buffers during unmount.", error); + xfs_wait_buftarg(mp->m_ddev_targp); + xfs_log_unmount_write(mp); xfs_log_unmount(mp); xfs_uuid_unmount(mp); @@ -1537,16 +1538,6 @@ xfs_unmountfs( xfs_free_perag(mp); } -STATIC void -xfs_unmountfs_wait(xfs_mount_t *mp) -{ - if (mp->m_logdev_targp != mp->m_ddev_targp) - xfs_wait_buftarg(mp->m_logdev_targp); - if (mp->m_rtdev_targp) - xfs_wait_buftarg(mp->m_rtdev_targp); - xfs_wait_buftarg(mp->m_ddev_targp); -} - int xfs_fs_writable(xfs_mount_t *mp) { -- 1.7.8.rc0.46.g5ae0f From bpm@sgi.com Wed Nov 30 17:56:21 2011 X-Spam-Checker-Version: SpamAssassin 3.4.0-r929098 (2010-03-30) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.4.0-r929098 Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id pAUNuLoD222699 for ; Wed, 30 Nov 2011 17:56:21 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id 33C778F8064; Wed, 30 Nov 2011 15:56:18 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id E7987431F74; Wed, 30 Nov 2011 17:56:41 -0600 (CST) Date: Wed, 30 Nov 2011 17:56:41 -0600 From: Ben Myers To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 4/4] xfs: fix the logspace waiting algorithm Message-ID: <20111130235641.GX29840@sgi.com> References: <20111128081732.350228200@bombadil.infradead.org> <20111128081925.981681380@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111128081925.981681380@bombadil.infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph, I feel that the ordering of the accesses to l_grant_head and the writeq list may be important in the lockless path, and notice that they used to be in opposite order. It could use a comment explaining why (if) it is ok. -Ben