From optilude at codespeak.net Mon Oct 12 15:59:58 2009 From: optilude at codespeak.net (optilude at codespeak.net) Date: Mon, 12 Oct 2009 15:59:58 +0200 (CEST) Subject: [z3-checkins] r68336 - in z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk: . docs Message-ID: <20091012135958.E58D016804C@codespeak.net> Author: optilude Date: Mon Oct 12 15:59:58 2009 New Revision: 68336 Removed: z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs/LICENSE.GPL z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs/LICENSE.txt Modified: z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/setup.py Log: Relicense to BSD Deleted: /z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs/LICENSE.GPL ============================================================================== --- /z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs/LICENSE.GPL Mon Oct 12 15:59:58 2009 +++ (empty file) @@ -1,222 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS Deleted: /z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs/LICENSE.txt ============================================================================== --- /z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs/LICENSE.txt Mon Oct 12 15:59:58 2009 +++ (empty file) @@ -1,16 +0,0 @@ - dv.xdvserver is copyright Martin Aspeli - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will 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 to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, - MA 02111-1307 USA. Modified: z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/setup.py ============================================================================== --- z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/setup.py (original) +++ z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/setup.py Mon Oct 12 15:59:58 2009 @@ -18,7 +18,7 @@ author='Martin Aspeli', author_email='optilude at gmail.com', url='http://open-plans.org/projects/deliverance', - license='LGPL', + license='BSD', packages=find_packages(exclude=['ez_setup']), namespace_packages=['dv'], include_package_data=True, From optilude at codespeak.net Mon Oct 12 16:00:41 2009 From: optilude at codespeak.net (optilude at codespeak.net) Date: Mon, 12 Oct 2009 16:00:41 +0200 (CEST) Subject: [z3-checkins] r68337 - z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs Message-ID: <20091012140041.0DE4E16804B@codespeak.net> Author: optilude Date: Mon Oct 12 16:00:40 2009 New Revision: 68337 Modified: z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs/HISTORY.txt Log: Prepare for release Modified: z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs/HISTORY.txt ============================================================================== --- z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs/HISTORY.txt (original) +++ z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs/HISTORY.txt Mon Oct 12 16:00:40 2009 @@ -1,9 +1,12 @@ Changelog ========= -1.0b5 - unreleased +1.0b5 - 2009-10-12 ------------------ +* Re-licensed to the BSD license. + [optilude] + * Added support for the `extrauri` parameter. [Matous Hora] From optilude at codespeak.net Mon Oct 12 16:01:42 2009 From: optilude at codespeak.net (optilude at codespeak.net) Date: Mon, 12 Oct 2009 16:01:42 +0200 (CEST) Subject: [z3-checkins] r68338 - in z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk: . docs Message-ID: <20091012140142.938A016804B@codespeak.net> Author: optilude Date: Mon Oct 12 16:01:41 2009 New Revision: 68338 Modified: z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/README.txt z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs/HISTORY.txt Log: Fix reST Modified: z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/README.txt ============================================================================== --- z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/README.txt (original) +++ z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/README.txt Mon Oct 12 16:01:41 2009 @@ -30,7 +30,7 @@ You can use this middleware in a Paste Deploy pipeline. Here is an example configuration file of an application that themes a Plone site running on -http://localhost:8080/demo. Static resources are served from /static. +http://localhost:8080/demo. Static resources are served from /static:: [server:main] use = egg:Paste#http Modified: z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs/HISTORY.txt ============================================================================== --- z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs/HISTORY.txt (original) +++ z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/docs/HISTORY.txt Mon Oct 12 16:01:41 2009 @@ -38,7 +38,7 @@ [optilude] 1.0b1 - 2009-02-24 ----------------- +------------------ * Initial release From optilude at codespeak.net Mon Oct 12 16:02:11 2009 From: optilude at codespeak.net (optilude at codespeak.net) Date: Mon, 12 Oct 2009 16:02:11 +0200 (CEST) Subject: [z3-checkins] r68339 - z3/deliverance/sandboxes/optilude/dv.xdvserver/tags/1.0b5 Message-ID: <20091012140211.9F7DC16804B@codespeak.net> Author: optilude Date: Mon Oct 12 16:02:11 2009 New Revision: 68339 Added: z3/deliverance/sandboxes/optilude/dv.xdvserver/tags/1.0b5/ - copied from r68338, z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/ Log: Tagging 1.0b5 From optilude at codespeak.net Mon Oct 12 16:02:43 2009 From: optilude at codespeak.net (optilude at codespeak.net) Date: Mon, 12 Oct 2009 16:02:43 +0200 (CEST) Subject: [z3-checkins] r68340 - z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk Message-ID: <20091012140243.8FF2D16804B@codespeak.net> Author: optilude Date: Mon Oct 12 16:02:43 2009 New Revision: 68340 Modified: z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/setup.py Log: Updating version on trunk after tagging Modified: z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/setup.py ============================================================================== --- z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/setup.py (original) +++ z3/deliverance/sandboxes/optilude/dv.xdvserver/trunk/setup.py Mon Oct 12 16:02:43 2009 @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = '1.0b5' +version = '1.0b6' setup(name='dv.xdvserver', version=version, From ldr at codespeak.net Wed Oct 14 20:24:28 2009 From: ldr at codespeak.net (ldr at codespeak.net) Date: Wed, 14 Oct 2009 20:24:28 +0200 (CEST) Subject: [z3-checkins] r68465 - z3/deliverance/sandboxes/paul/xdv Message-ID: <20091014182428.EE48C16800D@codespeak.net> Author: ldr Date: Wed Oct 14 20:24:27 2009 New Revision: 68465 Added: z3/deliverance/sandboxes/paul/xdv/bootstrap.py (contents, props changed) Modified: z3/deliverance/sandboxes/paul/xdv/buildout.cfg Log: fix buildout Added: z3/deliverance/sandboxes/paul/xdv/bootstrap.py ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/bootstrap.py Wed Oct 14 20:24:27 2009 @@ -0,0 +1,52 @@ +############################################################################## +# +# Copyright (c) 2006 Zope Corporation and Contributors. +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# +############################################################################## +"""Bootstrap a buildout-based project + +Simply run this script in a directory containing a buildout.cfg. +The script accepts buildout command-line options, so you can +use the -c option to specify an alternate configuration file. + +$Id$ +""" + +import os, shutil, sys, tempfile, urllib2 + +tmpeggs = tempfile.mkdtemp() + +ez = {} +exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py' + ).read() in ez +ez['use_setuptools'](to_dir=tmpeggs, download_delay=0) + +import pkg_resources + +cmd = 'from setuptools.command.easy_install import main; main()' +if sys.platform == 'win32': + cmd = '"%s"' % cmd # work around spawn lamosity on windows + +ws = pkg_resources.working_set +assert os.spawnle( + os.P_WAIT, sys.executable, sys.executable, + '-c', cmd, '-mqNxd', tmpeggs, 'zc.buildout', + dict(os.environ, + PYTHONPATH= + ws.find(pkg_resources.Requirement.parse('setuptools')).location + ), + ) == 0 + +ws.add_entry(tmpeggs) +ws.require('zc.buildout') +import zc.buildout.buildout +zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap']) +shutil.rmtree(tmpeggs) Modified: z3/deliverance/sandboxes/paul/xdv/buildout.cfg ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/buildout.cfg (original) +++ z3/deliverance/sandboxes/paul/xdv/buildout.cfg Wed Oct 14 20:24:27 2009 @@ -1,5 +1,5 @@ [buildout] -parts = lxml commands +parts = lxml [lxml] recipe = gp.recipe.pip From ldr at codespeak.net Wed Oct 14 20:37:10 2009 From: ldr at codespeak.net (ldr at codespeak.net) Date: Wed, 14 Oct 2009 20:37:10 +0200 (CEST) Subject: [z3-checkins] r68466 - z3/deliverance/sandboxes/paul/xdv Message-ID: <20091014183710.D53D616800B@codespeak.net> Author: ldr Date: Wed Oct 14 20:37:10 2009 New Revision: 68466 Modified: z3/deliverance/sandboxes/paul/xdv/compiler.xsl Log: Change style/script escape handling so rules do not need to be aware of it Modified: z3/deliverance/sandboxes/paul/xdv/compiler.xsl ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/compiler.xsl (original) +++ z3/deliverance/sandboxes/paul/xdv/compiler.xsl Wed Oct 14 20:37:10 2009 @@ -1,6 +1,7 @@ @@ -185,18 +186,11 @@ When not matched, style and script tags are not escaped. --> - - - - - - - - - - - - + + + + + - - - - - - - - - - tag_text - - - - - $tag_text - yes - - - - - - - + + + tag_text - - - + + $tag_text + yes + + + + + + + + + + + + + + + + + + + + + + + + + + Second Theme Page Title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/001/output.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/001/output.html Thu Oct 15 00:15:42 2009 @@ -0,0 +1,2 @@ + +A Deeper Look At xdv \ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/002/compiled.xsl ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/002/compiled.xsl Thu Oct 15 00:15:42 2009 @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:choose><xsl:when test="/html/head/title"><xsl:copy-of select="/html/head/title"/></xsl:when><xsl:otherwise>Second Theme Page Title</xsl:otherwise></xsl:choose> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/002/output.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/002/output.html Thu Oct 15 00:15:42 2009 @@ -0,0 +1,2 @@ + +<title>A Deeper Look At xdv \ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/003/compiled.xsl ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/003/compiled.xsl Thu Oct 15 00:15:42 2009 @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Second Theme Page Title \ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/004/compiled.xsl ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/004/compiled.xsl Thu Oct 15 00:15:42 2009 @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Second Theme Page Title \ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/005/compiled.xsl ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/005/compiled.xsl Thu Oct 15 00:15:42 2009 @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Second Theme Page Title +
Some stuff
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/005/output.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/005/output.html Thu Oct 15 00:15:42 2009 @@ -0,0 +1,2 @@ + +Second Theme Page Title

A Deeper Look....at...xdv

And some content.

\ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/006/compiled.xsl ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/006/compiled.xsl Thu Oct 15 00:15:42 2009 @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Second Theme Page Title \ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/007/compiled.xsl ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/007/compiled.xsl Thu Oct 15 00:15:42 2009 @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ninth Theme Page Title \ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/008/compiled.xsl ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/008/compiled.xsl Thu Oct 15 00:15:42 2009 @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Second Theme Page Title +

blah

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/008/output.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/008/output.html Thu Oct 15 00:15:42 2009 @@ -0,0 +1,6 @@ + +A Deeper Look At xdv
+
+

boo bar baz

+
+
\ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/009/compiled.xsl ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/009/compiled.xsl Thu Oct 15 00:15:42 2009 @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Theme Title +

Title

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/009/output.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/009/output.html Thu Oct 15 00:15:42 2009 @@ -0,0 +1,12 @@ + +Theme Title

Title

Some text

\ No newline at end of file Modified: z3/deliverance/sandboxes/paul/xdv/tests/test_nodes.py ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/test_nodes.py (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/test_nodes.py Thu Oct 15 00:15:42 2009 @@ -5,6 +5,9 @@ from lxml import etree import os import sys +import traceback +import pdb +import difflib from StringIO import StringIO if __name__ == '__main__': @@ -14,12 +17,14 @@ class XDV: - def __init__(self, testdir): + def __init__(self, testdir, debug=False, writefiles=False): self.errors = StringIO() themefn = os.path.join(testdir, "theme.html") contentfn = os.path.join(testdir, "content.html") rulesfn = os.path.join(testdir, "rules.xml") xpathsfn = os.path.join(testdir, "xpaths.txt") + xslfn = os.path.join(testdir, "compiled.xsl") + outputfn = os.path.join(testdir, "output.html") themedoc = etree.ElementTree(file=themefn, parser=etree.HTMLParser()) @@ -36,7 +41,23 @@ ct = compiler(themedoc, **params) # Serialize / parse the theme - this can catch problems with escaping. - ct = etree.fromstring(etree.tostring(ct)) + cts = etree.tostring(ct) + ct = etree.fromstring(cts) + + # Compare to previous version + if os.path.exists(xslfn): + old = open(xslfn).read() + new = cts + if old != new: + print >>self.errors, "WARNING:", "compiled.xsl has CHANGED" + for line in difflib.unified_diff(old.split('\n'), new.split('\n'), xslfn, 'now'): + print >>self.errors, line + if writefiles: + open(xslfn + '.old', 'w').write(old) + + # Write the compiled xsl out to catch unexpected changes + if writefiles: + open(xslfn, 'w').write(cts) # If there were any messages from in the # compiler step, print them to the console @@ -51,11 +72,11 @@ self.themed_string = etree.tostring(result) self.themed_content = etree.ElementTree(file=StringIO(self.themed_string), parser=etree.HTMLParser()) - + # remove the extra meta content type meta = self.themed_content.xpath("/html/head/meta[@http-equiv='Content-Type']")[0] meta.getparent().remove(meta) - + xp = "/html/head/*[position()='1']/@id" for xpath in open(xpathsfn).readlines(): # Read the XPaths from the file, skipping blank lines and @@ -66,7 +87,22 @@ if not self.themed_content.xpath(this_xpath): print >>self.errors, "FAIL:", this_xpath, "is FALSE" -def main(): + # Compare to previous version + if os.path.exists(outputfn): + old = open(outputfn).read() + new = self.themed_string + if old != new: + print >>self.errors, "FAIL:", "output.html has CHANGED" + for line in difflib.unified_diff(old.split('\n'), new.split('\n'), outputfn, 'now'): + print >>self.errors, line + if writefiles: + open(outputfn + '.old', 'w').write(old) + + # Write the compiled xsl out to catch unexpected changes + if writefiles: + open(outputfn, 'w').write(self.themed_string) + +def main(*args, **kwargs): try: test_num = sys.argv[1] except IndexError: @@ -77,7 +113,7 @@ if not os.path.isdir(directory): test_num -= 1 break - xdv = XDV(directory) + xdv = XDV(directory, *args, **kwargs) result = xdv.errors.getvalue() if result: print 'Error running test %s...' % directory @@ -87,7 +123,7 @@ print "Ran %s tests with %s errors." % (test_num, errors) else: test_dir = os.path.abspath(test_num) - xdv = XDV(test_dir) + xdv = XDV(test_dir, *args, **kwargs) print xdv.themed_string errors = xdv.errors.getvalue() if errors: @@ -96,4 +132,16 @@ if __name__ == "__main__": - main() + debug = '--debug' in sys.argv + if debug: + sys.argv.remove('--debug') + writefiles = '--writefiles' in sys.argv + if writefiles: + sys.argv.remove('--writefiles') + try: + main(debug=debug, writefiles=writefiles) + except: + type, value, tb = sys.exc_info() + traceback.print_exc() + if debug: + pdb.post_mortem(tb) From ldr at codespeak.net Thu Oct 15 00:17:18 2009 From: ldr at codespeak.net (ldr at codespeak.net) Date: Thu, 15 Oct 2009 00:17:18 +0200 (CEST) Subject: [z3-checkins] r68470 - in z3/deliverance/sandboxes/paul/xdv: . tests/010 tests/011 Message-ID: <20091014221718.ECD9E168013@codespeak.net> Author: ldr Date: Thu Oct 15 00:17:18 2009 New Revision: 68470 Added: z3/deliverance/sandboxes/paul/xdv/tests/010/ z3/deliverance/sandboxes/paul/xdv/tests/010/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/010/content.html z3/deliverance/sandboxes/paul/xdv/tests/010/output.html z3/deliverance/sandboxes/paul/xdv/tests/010/rules.xml z3/deliverance/sandboxes/paul/xdv/tests/010/theme.html z3/deliverance/sandboxes/paul/xdv/tests/010/xpaths.txt z3/deliverance/sandboxes/paul/xdv/tests/011/ z3/deliverance/sandboxes/paul/xdv/tests/011/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/011/content.html z3/deliverance/sandboxes/paul/xdv/tests/011/output.html z3/deliverance/sandboxes/paul/xdv/tests/011/rules.xml z3/deliverance/sandboxes/paul/xdv/tests/011/theme.html z3/deliverance/sandboxes/paul/xdv/tests/011/xpaths.txt Modified: z3/deliverance/sandboxes/paul/xdv/compiler.xsl Log: refactor compiler.xsl; add conditional support to drop rule Modified: z3/deliverance/sandboxes/paul/xdv/compiler.xsl ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/compiler.xsl (original) +++ z3/deliverance/sandboxes/paul/xdv/compiler.xsl Thu Oct 15 00:17:18 2009 @@ -1,13 +1,14 @@ rules.xml boilerplate.xsl + @@ -134,57 +135,17 @@ - - - - - - - - - - + - - - - - WARNING: Multiple rules match a single theme node. Using drop. - - - - - - - - ERROR: Multiple replace rules may not match a single theme node. - - - - - + + + + - - - - - - - - @@ -193,22 +154,13 @@ - - - - - - - - + tag_text @@ -219,116 +171,266 @@ + + + + before + + + + + + + + + + + + + + + + + + + + drop + + + + + + + + + + + + + + + + + + () + + or + + + + + + + + + + + + + + + + + + + + + - + + replace + + + - + + + ERROR: Multiple replace rules may not match a single theme node. + + + - + - + - + - + - + + + + + + + - + - - - - - - - - - - - - - - - ERROR: Multiple copy rules may not match a single theme node. - - - + prepend-copy-append + + + + + + + + + + + + + + + + - - - - - - - + + + ERROR: Multiple copy rules may not match a single theme node. + - - - - - - - + + + + + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + after + + + + + + + + + + + + + + + + pass + + + + + + + + + DEBUG: - + + + /[]/[] Added: z3/deliverance/sandboxes/paul/xdv/tests/010/compiled.xsl ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/010/compiled.xsl Thu Oct 15 00:17:18 2009 @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Theming with portlets +
+
+
Portlet
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/010/content.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/010/content.html Thu Oct 15 00:17:18 2009 @@ -0,0 +1,10 @@ + + + + Page with portlets + + +
Portlet A
+
Portlet A
+ + Added: z3/deliverance/sandboxes/paul/xdv/tests/010/output.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/010/output.html Thu Oct 15 00:17:18 2009 @@ -0,0 +1,2 @@ + +Theming with portlets
Portlet A
Portlet A
\ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/010/rules.xml ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/010/rules.xml Thu Oct 15 00:17:18 2009 @@ -0,0 +1,5 @@ + + + + + Added: z3/deliverance/sandboxes/paul/xdv/tests/010/theme.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/010/theme.html Thu Oct 15 00:17:18 2009 @@ -0,0 +1,13 @@ + + + + Theming with portlets + + +
+
+
Portlet
+
+
+ + Added: z3/deliverance/sandboxes/paul/xdv/tests/010/xpaths.txt ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/010/xpaths.txt Thu Oct 15 00:17:18 2009 @@ -0,0 +1,7 @@ +# +# Conditional . The entire portlet-wrapper should be dropped when the +# content is empty. This time there are portlets. +# +/html/body/div[@id='portlet-wrapper'] +/html/body/div[@id='portlet-wrapper']/div[@id='portlets']/div[@id='portletA'] +/html/body/div[@id='portlet-wrapper']/div[@id='portlets']/div[@id='portletB'] Added: z3/deliverance/sandboxes/paul/xdv/tests/011/compiled.xsl ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/011/compiled.xsl Thu Oct 15 00:17:18 2009 @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Theming with portlets +
+
+
Portlet
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/011/content.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/011/content.html Thu Oct 15 00:17:18 2009 @@ -0,0 +1,9 @@ + + + + Page without portlets + + +

content

+ + Added: z3/deliverance/sandboxes/paul/xdv/tests/011/output.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/011/output.html Thu Oct 15 00:17:18 2009 @@ -0,0 +1,2 @@ + +Theming with portlets \ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/011/rules.xml ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/011/rules.xml Thu Oct 15 00:17:18 2009 @@ -0,0 +1,5 @@ + + + + + Added: z3/deliverance/sandboxes/paul/xdv/tests/011/theme.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/011/theme.html Thu Oct 15 00:17:18 2009 @@ -0,0 +1,13 @@ + + + + Theming with portlets + + +

+
+
Portlet
+
+
+ + Added: z3/deliverance/sandboxes/paul/xdv/tests/011/xpaths.txt ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/011/xpaths.txt Thu Oct 15 00:17:18 2009 @@ -0,0 +1,5 @@ +# +# Conditional . The entire portlet-wrapper should be dropped when the +# content is empty. This time there are no portlets. +# +not(/html/body/div[@id='portlet-wrapper']) From ldr at codespeak.net Thu Oct 15 00:19:51 2009 From: ldr at codespeak.net (ldr at codespeak.net) Date: Thu, 15 Oct 2009 00:19:51 +0200 (CEST) Subject: [z3-checkins] r68471 - z3/deliverance/sandboxes/paul/xdv/tests Message-ID: <20091014221951.6C2FD168013@codespeak.net> Author: ldr Date: Thu Oct 15 00:19:50 2009 New Revision: 68471 Modified: z3/deliverance/sandboxes/paul/xdv/tests/test_nodes.py Log: only write .old files when test run has changed the output Modified: z3/deliverance/sandboxes/paul/xdv/tests/test_nodes.py ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/test_nodes.py (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/test_nodes.py Thu Oct 15 00:19:50 2009 @@ -52,8 +52,8 @@ print >>self.errors, "WARNING:", "compiled.xsl has CHANGED" for line in difflib.unified_diff(old.split('\n'), new.split('\n'), xslfn, 'now'): print >>self.errors, line - if writefiles: - open(xslfn + '.old', 'w').write(old) + if writefiles: + open(xslfn + '.old', 'w').write(old) # Write the compiled xsl out to catch unexpected changes if writefiles: @@ -95,8 +95,8 @@ print >>self.errors, "FAIL:", "output.html has CHANGED" for line in difflib.unified_diff(old.split('\n'), new.split('\n'), outputfn, 'now'): print >>self.errors, line - if writefiles: - open(outputfn + '.old', 'w').write(old) + if writefiles: + open(outputfn + '.old', 'w').write(old) # Write the compiled xsl out to catch unexpected changes if writefiles: From ldr at codespeak.net Thu Oct 15 01:15:15 2009 From: ldr at codespeak.net (ldr at codespeak.net) Date: Thu, 15 Oct 2009 01:15:15 +0200 (CEST) Subject: [z3-checkins] r68473 - in z3/deliverance/sandboxes/paul/xdv: . tests/012 Message-ID: <20091014231515.1160E168013@codespeak.net> Author: ldr Date: Thu Oct 15 01:15:14 2009 New Revision: 68473 Added: z3/deliverance/sandboxes/paul/xdv/tests/012/ z3/deliverance/sandboxes/paul/xdv/tests/012/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/012/content.html z3/deliverance/sandboxes/paul/xdv/tests/012/output.html z3/deliverance/sandboxes/paul/xdv/tests/012/rules.xml z3/deliverance/sandboxes/paul/xdv/tests/012/theme.html z3/deliverance/sandboxes/paul/xdv/tests/012/xpaths.txt Modified: z3/deliverance/sandboxes/paul/xdv/compiler.xsl Log: fix a bug where after rules were not being processed following a replace Modified: z3/deliverance/sandboxes/paul/xdv/compiler.xsl ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/compiler.xsl (original) +++ z3/deliverance/sandboxes/paul/xdv/compiler.xsl Thu Oct 15 01:15:14 2009 @@ -208,6 +208,7 @@ Do nothing. We want to get rid of this node in the theme. --> + @@ -215,9 +216,9 @@ @@ -272,6 +273,11 @@ + + + + + + + + + Added: z3/deliverance/sandboxes/paul/xdv/tests/012/compiled.xsl ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/012/compiled.xsl Thu Oct 15 01:15:14 2009 @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Replace and after +

Title

+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/012/content.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/012/content.html Thu Oct 15 01:15:14 2009 @@ -0,0 +1,11 @@ + + + + Replace and after + + +

Smaller Title

+

content

+ + + Added: z3/deliverance/sandboxes/paul/xdv/tests/012/output.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/012/output.html Thu Oct 15 01:15:14 2009 @@ -0,0 +1,2 @@ + +Replace and after

Smaller Title

content

\ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/012/rules.xml ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/012/rules.xml Thu Oct 15 01:15:14 2009 @@ -0,0 +1,7 @@ + + + + + + + Added: z3/deliverance/sandboxes/paul/xdv/tests/012/theme.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/012/theme.html Thu Oct 15 01:15:14 2009 @@ -0,0 +1,10 @@ + + + + Replace and after + + +

Title

+
Marker
+ + Added: z3/deliverance/sandboxes/paul/xdv/tests/012/xpaths.txt ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/012/xpaths.txt Thu Oct 15 01:15:14 2009 @@ -0,0 +1,8 @@ +# +# Conditional . The entire portlet-wrapper should be dropped when the +# content is empty. This time there are no portlets. +# +/html/body/h2 +/html/body/p +/html/body/div[@id='footer'] +not(/html/body/div[@id='marker']) From ldr at codespeak.net Thu Oct 15 01:15:31 2009 From: ldr at codespeak.net (ldr at codespeak.net) Date: Thu, 15 Oct 2009 01:15:31 +0200 (CEST) Subject: [z3-checkins] r68474 - z3/deliverance/sandboxes/paul/xdv/docs Message-ID: <20091014231531.C0C51168013@codespeak.net> Author: ldr Date: Thu Oct 15 01:15:31 2009 New Revision: 68474 Added: z3/deliverance/sandboxes/paul/xdv/docs/ z3/deliverance/sandboxes/paul/xdv/docs/compiler.graffle z3/deliverance/sandboxes/paul/xdv/docs/compiler.pdf (contents, props changed) Log: compiler rules diagram Added: z3/deliverance/sandboxes/paul/xdv/docs/compiler.graffle ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/docs/compiler.graffle Thu Oct 15 01:15:31 2009 @@ -0,0 +1,2309 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGrafflePro + 138.9.0.117994 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {559, 783}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2009-10-14 14:49:24 +0100 + Creator + Laurence Rowe + DisplayScale + 1.000 cm = 1.000 cm + GraphDocumentVersion + 6 + GraphicsList + + + Bounds + {{238.052, 549.756}, {129, 38}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 12 + + ID + 50 + Line + + ID + 48 + Position + 0.2744099497795105 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 (control passes back\ +through p-c-a) for now} + + Wrap + NO + + + Bounds + {{389.644, 556.04}, {103, 38}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 12 + + ID + 49 + Line + + ID + 47 + Position + 0.55482351779937744 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 no prepend, copy\ +or append rules} + + Wrap + NO + + + Class + LineGraphic + Head + + ID + 31 + Info + 3 + + ID + 48 + Points + + {275.572, 628} + {251, 595} + {357, 533.863} + {161, 515.863} + + Style + + stroke + + HeadArrow + FilledArrow + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 46 + Info + 4 + + + + Class + LineGraphic + Head + + ID + 46 + Info + 3 + + ID + 47 + Points + + {355.435, 521.109} + {442, 570} + {365.97, 627.698} + + Style + + stroke + + HeadArrow + FilledArrow + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 29 + Info + 1 + + + + Bounds + {{275.572, 610}, {90, 36}} + Class + ShapedGraphic + ID + 46 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 pass} + VerticalPad + 0 + + + + Bounds + {{295.763, 403.187}, {137, 38}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 12 + + ID + 45 + Line + + ID + 33 + Position + 0.64374637603759766 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 replace rule with default\ + at nocontent='theme'} + + Wrap + NO + + + Bounds + {{425.913, 375.291}, {96, 24}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 12 + + ID + 44 + Line + + ID + 43 + Position + 0.41117066144943237 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 no replace rules} + + Wrap + NO + + + Class + LineGraphic + Head + + ID + 29 + Info + 3 + + ID + 43 + Points + + {426, 290.931} + {476, 410} + {400, 502.863} + + Style + + stroke + + HeadArrow + FilledArrow + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 22 + Info + 3 + + + + Bounds + {{280.072, 183.226}, {81, 24}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 12 + + ID + 42 + Line + + ID + 41 + Position + 0.60179305076599121 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 no drop rules} + + Wrap + NO + + + Class + LineGraphic + Head + + ID + 22 + Info + 2 + + ID + 41 + Points + + {161, 190.931} + {325.737, 196.931} + {381, 272.931} + + Style + + stroke + + HeadArrow + FilledArrow + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 21 + Info + 3 + + + + Bounds + {{189.429, 357.742}, {111, 38}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 12 + + ID + 39 + Line + + ID + 38 + Position + 0.46933653950691223 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 replace rule with\ + at nocontent='drop'} + + Wrap + NO + + + Class + LineGraphic + Head + + ID + 31 + + ID + 38 + Points + + {380.549, 309.147} + {255, 369.234} + {116, 497.863} + + Style + + stroke + + HeadArrow + FilledArrow + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 22 + Info + 1 + + + + Bounds + {{137.749, 231.397}, {179, 38}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 12 + + ID + 37 + Line + + ID + 32 + Position + 0.50567907094955444 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 no drop rule without @condition\ +and drop rule with @condition} + + Wrap + NO + + + Bounds + {{66.5, 338.234}, {99, 38}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Color + + w + 0 + + Font + Helvetica + Size + 12 + + ID + 36 + Line + + ID + 35 + Position + 0.51328098773956299 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 drop rule without\ + at condition} + + Wrap + NO + + + Class + LineGraphic + Head + + ID + 31 + + ID + 35 + Points + + {116, 208.931} + {116, 497.863} + + Style + + stroke + + HeadArrow + FilledArrow + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 21 + Info + 1 + + + + Class + LineGraphic + Head + + ID + 31 + + ID + 34 + Points + + {310, 502.863} + {161, 515.863} + + Style + + stroke + + HeadArrow + FilledArrow + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 29 + + + + Class + LineGraphic + Head + + ID + 29 + + ID + 33 + Points + + {381, 308.931} + {355, 484.863} + + Style + + stroke + + HeadArrow + FilledArrow + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 22 + + + + Class + LineGraphic + Head + + ID + 22 + + ID + 32 + Points + + {116, 208.931} + {336, 290.931} + + Style + + stroke + + HeadArrow + FilledArrow + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 21 + Info + 1 + + + + Bounds + {{71, 497.863}, {90, 36}} + Class + ShapedGraphic + ID + 31 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 after} + VerticalPad + 0 + + + + Bounds + {{310, 484.863}, {90, 36}} + Class + ShapedGraphic + ID + 29 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 prepend-copy-append } + VerticalPad + 0 + + + + Class + LineGraphic + Head + + ID + 26 + + ID + 27 + Points + + {116, 534.363} + {116, 605.794} + + Style + + stroke + + HeadArrow + FilledArrow + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 31 + + + + Bounds + {{91.45, 605.794}, {49.1, 36}} + Class + ShapedGraphic + ID + 26 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + House + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 Next Element} + VerticalPad + 0 + + VFlip + YES + + + Bounds + {{91.45, 23.8628}, {49.1, 36}} + Class + ShapedGraphic + ID + 9 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + House + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 Theme Element} + VerticalPad + 0 + + VFlip + YES + + + Class + LineGraphic + Head + + ID + 19 + + ID + 24 + Points + + {116, 59.8628} + {116, 91.8658} + + Style + + stroke + + HeadArrow + FilledArrow + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 9 + Info + 2 + + + + Class + LineGraphic + Head + + ID + 21 + + ID + 23 + Points + + {116, 127.866} + {116, 172.931} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + 0 + + + Tail + + ID + 19 + + + + Bounds + {{336, 272.931}, {90, 36}} + Class + ShapedGraphic + ID + 22 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 replace} + VerticalPad + 0 + + + + Bounds + {{71, 172.931}, {90, 36}} + Class + ShapedGraphic + ID + 21 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 drop} + VerticalPad + 0 + + + + Bounds + {{71, 91.8658}, {90, 36}} + Class + ShapedGraphic + ID + 19 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs20 \cf0 before} + VerticalPad + 0 + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2009-10-15 00:10:16 +0100 + Modifier + Laurence Rowe + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {595, 842} + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + QuickLookPreview + + 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 + QyN+aQiurm757VatysT4VsOJo0EOpAPESCTAiX3gNALqXJsg+tIUjTaTUZvSrgoIirV1 + 3iNeVqqT5oH765jGPo532MTuooLbfJm3y+Wb4dU1eh0aARDpxdKYOnUBl7MlqKtnmQpR + R3OGKRXYo4RhUdddPuqiDqA3krGGHzyZyHbINZyS32Ve+H2Ylw203LKMWEVunbdRT4LV + jrY5OkzbrD8oWWetrbQrvQs6YKsTgMlYBg8pNMBjeKpYfXhS01ZLhrOuuhdsqmtpOJFE + nnrly6UneMrJSEPuBsatTkLytFtEhJp3W50EzNB03bIB1T+/EUb5dLhTgj37Z/XL9e7f + kx/odZ0fzhRt+JpNjLZJmswJdx3evHx+Onz912f1eLW7uv75e8XvI9XD4bfV5e//D0iw + nTsKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjI4MzEKZW5kb2JqCjMgMCBvYmoKPDwg + L1R5cGUgL1BhZ2UgL1BhcmVudCA0IDAgUiAvUmVzb3VyY2VzIDcgMCBSIC9Db250ZW50 + cyA1IDAgUiAvTWVkaWFCb3ggWzAgMCA1NTkgNzgzXQo+PgplbmRvYmoKNyAwIG9iago8 + PCAvUHJvY1NldCBbIC9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUkgXSAv + Q29sb3JTcGFjZSA8PCAvQ3MxIDggMCBSCi9DczIgMjUgMCBSID4+IC9Gb250IDw8IC9G + MS4wIDI2IDAgUiA+PiAvWE9iamVjdCA8PCAvSW01IDE3IDAgUiAvSW00IDE1IDAgUgov + SW02IDE5IDAgUiAvSW0xIDkgMCBSIC9JbTIgMTEgMCBSIC9JbTggMjMgMCBSIC9JbTMg + MTMgMCBSIC9JbTcgMjEgMCBSID4+Cj4+CmVuZG9iagoxNyAwIG9iago8PCAvTGVuZ3Ro + IDE4IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDE0NCAv + SGVpZ2h0IDExNiAvQ29sb3JTcGFjZQoyNyAwIFIgL1NNYXNrIDI4IDAgUiAvQml0c1Bl + ckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QMQEA + AADCoPVPbQdviEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBg4B8Yw8AAAQplbmRzdHJlYW0KZW5kb2JqCjE4 + IDAgb2JqCjI0MgplbmRvYmoKMTUgMCBvYmoKPDwgL0xlbmd0aCAxNiAwIFIgL1R5cGUg + L1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAxNDQgL0hlaWdodCAxMTYgL0Nv + bG9yU3BhY2UKMjcgMCBSIC9TTWFzayAzMCAwIFIgL0JpdHNQZXJDb21wb25lbnQgOCAv + RmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T20Hb4hAYcCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYOAfGMPAAAEKZW5kc3RyZWFtCmVuZG9iagoxNiAwIG9iagoyNDIKZW5k + b2JqCjE5IDAgb2JqCjw8IC9MZW5ndGggMjAgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0 + eXBlIC9JbWFnZSAvV2lkdGggMjI0IC9IZWlnaHQgMTE2IC9Db2xvclNwYWNlCjMyIDAg + UiAvU01hc2sgMzMgMCBSIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVE + ZWNvZGUgPj4Kc3RyZWFtCngB7dCBAAAAAMOg+VMf4QKFUGHAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBv7AADCPAAEKZW5kc3RyZWFtCmVuZG9iagoyMCAwIG9iagoz + NjQKZW5kb2JqCjkgMCBvYmoKPDwgL0xlbmd0aCAxMCAwIFIgL1R5cGUgL1hPYmplY3Qg + L1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyMjQgL0hlaWdodCAxMTYgL0NvbG9yU3BhY2UK + MzIgMCBSIC9TTWFzayAzNSAwIFIgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9G + bGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0IEAAAAAw6D5Ux/hAoVQYcCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMG/sAAMI8AAQplbmRzdHJlYW0KZW5kb2JqCjEwIDAg + b2JqCjM2NAplbmRvYmoKMTEgMCBvYmoKPDwgL0xlbmd0aCAxMiAwIFIgL1R5cGUgL1hP + YmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyMjQgL0hlaWdodCAxMTYgL0NvbG9y + U3BhY2UKMzIgMCBSIC9TTWFzayAzNyAwIFIgL0JpdHNQZXJDb21wb25lbnQgOCAvRmls + dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0IEAAAAAw6D5Ux/hAoVQYcCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG/sAAMI8AAQplbmRzdHJlYW0KZW5kb2Jq + CjEyIDAgb2JqCjM2NAplbmRvYmoKMjMgMCBvYmoKPDwgL0xlbmd0aCAyNCAwIFIgL1R5 + cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyMjQgL0hlaWdodCAxMTYg + L0NvbG9yU3BhY2UKMzIgMCBSIC9TTWFzayAzOSAwIFIgL0JpdHNQZXJDb21wb25lbnQg + OCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0IEAAAAAw6D5Ux/hAoVQ + YcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG/sAAMI8AAQplbmRzdHJlYW0K + ZW5kb2JqCjI0IDAgb2JqCjM2NAplbmRvYmoKMTMgMCBvYmoKPDwgL0xlbmd0aCAxNCAw + IFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyMjQgL0hlaWdo + dCAxMTYgL0NvbG9yU3BhY2UKMzIgMCBSIC9TTWFzayA0MSAwIFIgL0JpdHNQZXJDb21w + b25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0IEAAAAAw6D5 + Ux/hAoVQYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG/sAAMI8AAQplbmRz + dHJlYW0KZW5kb2JqCjE0IDAgb2JqCjM2NAplbmRvYmoKMjEgMCBvYmoKPDwgL0xlbmd0 + aCAyMiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyMjQg + L0hlaWdodCAxMTYgL0NvbG9yU3BhY2UKMzIgMCBSIC9TTWFzayA0MyAwIFIgL0JpdHNQ + ZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0IEA + AAAAw6D5Ux/hAoVQYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG/sAAMI8A + AQplbmRzdHJlYW0KZW5kb2JqCjIyIDAgb2JqCjM2NAplbmRvYmoKMzcgMCBvYmoKPDwg + L0xlbmd0aCAzOCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0 + aCAyMjQgL0hlaWdodCAxMTYgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0JpdHNQZXJD + b21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtnOlPE1sY + xlkKpXsLpYUutkyB0pZSR4oFqrakDVAWFxCtCwQoGouFCrGxEdQShIYGERTCEqhIBANI + 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 + WwLd+/PtA9K3v2JCHDDeQZKe/THha8T3DqBE61Ya9jclPrfECZPo2p82/kGJ1v2F44T/ + YALp6dCPUaO/0AygGUAzgGbg98zA34jO8EcKZW5kc3RyZWFtCmVuZG9iagozOCAwIG9i + agoxODcxCmVuZG9iagoyOCAwIG9iago8PCAvTGVuZ3RoIDI5IDAgUiAvVHlwZSAvWE9i + amVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDE0NCAvSGVpZ2h0IDExNiAvQ29sb3JT + cGFjZQovRGV2aWNlR3JheSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRl + RGVjb2RlID4+CnN0cmVhbQp4Ae2b91dT2xaFLUhvgUBooQQIhBYDAQREAkGaATRKF4gG + o0jniqAo0jRKL9KRoiCIYkNRUcf7197c+yQYQiL4iHeMNwbrF8m9ePI519rnnL3W3EeO + HMahAocK/PsKHP1r8Yf/FnAc+xXHTRi/rnoMX7IvLIYFDGZmJ/5SmJmZHT9O0PZmojQM + irmFhSUTViYKzeUsLMzN8S810yD9RiUNzYkT5kCxsra2sbGxtbW1M1ngYrikjbWVpaUF + kKhKv0kbwTmOLAEGKLZ29vYOjo4sk4ajo4O9vb0dZQIS1chYHVEcaENo7OwdWCwnZzbb + xcXVlWOqcHV1YbOdnVgsB4JkZWnBZM0IEFGHiENoHMHiynFz9/Dw9PLimii8vDw9PNzd + OKByYjnY2ViTrEEiwymjOCgcG1vQAAYkXB9fXz+ev8mC5+fr6+PN9fRw47CdWfa2kAhA + WGeGavooqR0LK4jDcnZ18wALzz+QHxQsEISEhJogQkIEAkEQPzDA39eH6+nOYROJCBDW + mQEgyAMcSxs7Bxab48H15QXwBSFh4UKhSCSKNEngQieFEWGhgqBAf1+uB4ftRIAsaMZ2 + CwR5UMrWFMfThxcYHBouFEVFx8TGxSMSDhzkKnGxsdFi0cmIUAHf39fLzYUAoahRQYZ4 + zE5YWtvas9hunj7+QaERInFsXEJikiRZKpWmmiBwmRRJUuLp+FixSBgWHMAA2VpbmqOC + dvEw8tgAh+PpGyAIF4lPJSQlp6ZlZJ6TZeeYJLJl57Iy0lJTkk7HxURGCAIBxGbZk4wZ + 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 + BwlCw8IjhMKIcDitAeOHx5Sbi7PGH68x7O/51NyPJvq/QzTSIXLC64inxtXODwriEyc6 + YOBE/1doKB0homcQrBjXvwvH3cOL6w3bP8Kb6+XhznHF2QGcZiAvfwe8++nrYfDzDiIH + lhPbhUOPRdCDDBxykIF5hP87NARRQ2SOAzW/jo2wEXoHPeh5IYP/JlP/R0qEVzaUtjVz + rAbnahxwEMYOx3NwNocczfn3aLY1wmJjzh2RM0IkrK3IQSGmbPb/smUatahG5PCR+a9z + WfQcFc52EW1M8y1/chW6/LE/0jm3pjlndvCH5p9w6Pwug0TuAQj8QWLvM286F/gLP+L7 + deIvfMHhJQ8VOFTgUIF/SYH/Ao6h2sEKZW5kc3RyZWFtCmVuZG9iagoyOSAwIG9iago0 + MzQxCmVuZG9iago0MSAwIG9iago8PCAvTGVuZ3RoIDQyIDAgUiAvVHlwZSAvWE9iamVj + dCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDIyNCAvSGVpZ2h0IDExNiAvQ29sb3JTcGFj + ZQovRGV2aWNlR3JheSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVj + b2RlID4+CnN0cmVhbQp4Ae2c6U8TWxjGWQqlewulhS62TIHSllJHigWqtqQNUBYXEK0L + BCgai4UKsbER1BKEhgYRFMISqEgEA0iANEiImvuv3XeK9xphkHsTg8PkPJ/IfJnzO8/7 + nJky57wJCUhoBtAMoBlAM/B7ZyDxFOl/kQNX0g8lU1o/xpkEw/4PmPtswMRgpJwaMRgw + YAL1OMQ43T5aKpOZti8WZfV9gExmKlgBkMcQfqdLSUkFNBabzeFwuFwuj8KC4cEg2WxW + WhrB+GtCAi8ZqhLgAI3L4/MFQqGI4hIKBXw+DyjZgLhPeESRxvHAO4KOxxeIROkZYnFm + pkQipawkksxMsTgjXSQS8HkEIXgIRUoOSLhHmEfQCYFNIs3KlsnkCoWSslIo5DJZdpZU + AozCOCFYSACSLKRxPAgehwt0AAdkSpVanYNpKCwsR61WKYESEIGQyyFiSA6YSGSPyQLz + RBmSLBmwYZq8fG2BTqfXGygpvV6nK9Dm52kwYJRlSTJEYCGLSawyhw0E+wAvjcMTiMRS + mVKN5ebr9IVGkwnH8XMUFQzNZDIW6nX5uZhaKZOKRQIeOJjCIKlQsA+WFnYcT67C8goM + RhNeXHLeUlYOslJQxLjKLOdLinGT0VCQh6nkcUA2LDIkBiaCfWlsLl8kzpKrNFpDEW62 + lFkv2uwVDofDSUnBwCrstovWMosZLzJoNSp5lljE57LTwMCDBbpvHwfwpHJ1rs6Im0ut + tgpnZbWrtq7+MkVVX1frqq50VtispWbcqMtVEw7yOWQGEnxQnULAU+XqTMWWC3ZHVU39 + lYbGphtuyupGU2PDlfqaKof9gqXYpMslSlTIAwMPFSiUZ2oah58ukak0uiJzuc3pqrt2 + 3X2nuaW13ePpoKQ8nvbWluY77uvX6lxOW7m5SKdRySTphIGHCjQxCZ4NYF+WEtMai8vt + lbVXm241t3ruex/6urr9lFR3l++h976ntflW09XaSnt5sVGLKbPAQHhGHAwgUZ6QPolM + nWfALbbKugb33bZ7Xp+/93HgSZCiehJ43Ov3ee+13XU31FXaLLghTy2TEAmEAv35FSbO + J8iQKrGCIvMFJ+C1eLxdPYFg37PnoQGKKvT8WV8w0NPl9bQAoPOCuagAU0ozBKR8qSyu + UJytyjXgpXbXVXdLR6c/EHwWGhwKj0QoqpHw0GDoWTDg7+xocV912UtxQ64qWyzkslIP + +cdIZfGI8sw3mq2O+qa7ns5Hgb7Qy3Dk1evxNxTV+OtXkfDLUF/gUafnblO9w2o25hMF + ymPBAnOgPhlMNj9dqsAKTJZLVddutT3wB/oGhiNjE5NTMzOzlNTMzNTkxFhkeKAv4H/Q + duta1SWLqQBTSNP5bCYJH4cP8dPo8bKKmuvN93yAFx4dn5yem4++W6Sk3kXn56Ynx0fD + AOi713y9pqIM12sggHwOCR8sn+LsM3mFxVCe7lZvT/DF8OjE1OzC4tKH5RVKavnD0uLC + 7NTE6PCLYI+31Q0FWlyYdyZbDAvoIf/g8SAQE/EruVh55bbHF+gfjIxPzUXfL39cXVun + pNZWPy6/j85NjUcG+wM+z+0rlRdLiACKiQX0YP6ATwh8WpPFVt3QfN8fDIXHJmejSytr + 6xubW5TU5sb62spSdHZyLBwK+u83N1TbLCYt8AlJ+bjCTFkOLC92V2OLt/fpYGRiegHw + Nra2YxTV9tYGAC5MT0QGn/Z6WxpddlhgcmSZQi6Zf1xRphzTnS2rqG1q7XzcP/Tq7dzi + 8urGVmzn8y4l9XkntrWxurw49/bVUP/jztam2oqyszpMnik6gk+iwHR4uaPuRrsv8Dw8 + NjW/9PHTZmxnd4+i2t2JbX76uDQ/NRZ+HvC136hzlOM6TCE5mg8eD8B309P1JDTyejr6 + YXVjG/C+fKWkvuzt7mxvrH6ITr8eCT3p8twk+PSaY/nq3Z7u4EBkYubd8tpm7DPgfaOk + vn7Z+xzbXFt+NzMRGQh2e+ABcRQf/DxK44okirh/JHx/UVDffs33038oEpNT4PUTXl8M + 56zOy+4OP/j3ZnZxZX0rtrv39RsF6WBI377u7ca21lcWZ9+Af/4O92Wn9ZwBXmDgBTQl + GfEh//5s3aL6/Pc3IFpf/mwpkt4d1SeqT/R8J43GiVxE+UP5Q/k7kaiR3gTlD+UP5Y80 + GidyEeUP5Q/l70SiRnoTlD+UP5Q/0micyEWUP5Q/lL8TiRrpTVD+UP5Q/kijcSIXUf5Q + /lD+TiRqpDdB+fuRP5rv70k4hu+078/6iY/G++vovT+S5vtbab4/me77y+l9PoBB8/Md + DCbNz+fQ/XwVzc/HJdP8fCNx/pbW51Ppfb6Y7ufD6X++n+79GYj2KPTtr5FA8/4owEf3 + /jb07k9EGEjn/lLAR1QoffuD7QPSt79bAt378+0D0re/YkIcMN5Bkp79MeFrxPcOoETr + Vhr2NyU+t8QJk+janzb+QYnW/YXjhP9gAunp0I9Ro7/QDKAZQDOAZuD3zMDfiM7wRwpl + bmRzdHJlYW0KZW5kb2JqCjQyIDAgb2JqCjE4NzEKZW5kb2JqCjMzIDAgb2JqCjw8IC9M + ZW5ndGggMzQgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGgg + MjI0IC9IZWlnaHQgMTE2IC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9CaXRzUGVyQ29t + cG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7ZzpTxNbGMZZ + CqV7C6WFLrZMgdKWUkeKBaq2pA1QFhcQrQsEKBqLhQqxsRHUEoSGBhEUwhKoSAQDSIA0 + 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 + 3fvz7QPSt79iQhww3kGSnv0x4WvE9w6gROtWGvY3JT63xAmT6NqfNv5Bidb9heOE/2AC + 6enQj1Gjv9AMoBlAM4Bm4PfMwN+IzvBHCmVuZHN0cmVhbQplbmRvYmoKMzQgMCBvYmoK + MTg3MQplbmRvYmoKNDMgMCBvYmoKPDwgL0xlbmd0aCA0NCAwIFIgL1R5cGUgL1hPYmpl + Y3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAyMjQgL0hlaWdodCAxMTYgL0NvbG9yU3Bh + Y2UKL0RldmljZUdyYXkgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURl + Y29kZSA+PgpzdHJlYW0KeAHtnOlPE1sYxlkKpXsLpYUutkyB0pZSR4oFqrakDVAWFxCt + CwQoGouFCrGxEdQShIYGERTCEqhIBANIgDRIiJr7r913ivcaYZB7E4PD5DyfyHyZ8zvP + +5yZMue8CQlIaAbQDKAZQDPwe2cg8RTpf5EDV9IPJVNaP8aZBMP+D5j7bMDEYKScGjEY + MGAC9TjEON0+WiqTmbYvFmX1fYBMZipYAZDHEH6nS0lJBTQWm83hcLhcLo/CguHBINls + VloawfhrQgIvGaoS4ACNy+PzBUKhiOISCgV8Pg8o2YC4T3hEkcbxwDuCjscXiETpGWJx + ZqZEIqWsJJLMTLE4I10kEvB5BCF4CEVKDki4R5hH0AmBTSLNypbJ5AqFkrJSKOQyWXaW + VAKMwjghWEgAkiykcTwIHocLdAAHZEqVWp2DaSgsLEetVimBEhCBkMshYkgOmEhkj8kC + 80QZkiwZsGGavHxtgU6n1xsoKb1epyvQ5udpMGCUZUkyRGAhi0msMocNBPsAL43DE4jE + UplSjeXm6/SFRpMJx/FzFBUMzWQyFup1+bmYWimTikUCHjiYwiCpULAPlhZ2HE+uwvIK + DEYTXlxy3lJWDrJSUMS4yiznS4pxk9FQkIep5HFANiwyJAYmgn1pbC5fJM6SqzRaQxFu + tpRZL9rsFQ6Hw0lJwcAq7LaL1jKLGS8yaDUqeZZYxOey08DAgwW6bx8H8KRyda7OiJtL + rbYKZ2W1q7au/jJFVV9X66qudFbYrKVm3KjLVRMO8jlkBhJ8UJ1CwFPl6kzFlgt2R1VN + /ZWGxqYbbsrqRlNjw5X6miqH/YKl2KTLJUpUyAMDDxUolGdqGoefLpGpNLoic7nN6aq7 + dt19p7mltd3j6aCkPJ721pbmO+7r1+pcTlu5uUinUckk6YSBhwo0MQmeDWBflhLTGovL + 7ZW1V5tuNbd67nsf+rq6/ZRUd5fvofe+p7X5VtPV2kp7ebFRiymzwEB4RhwMIFGekD6J + TJ1nwC22yroG9922e16fv/dx4EmQonoSeNzr93nvtd11N9RV2iy4IU8tkxAJhAL9+RUm + zifIkCqxgiLzBSfgtXi8XT2BYN+z56EBiir0/FlfMNDT5fW0AKDzgrmoAFNKMwSkfKks + rlCcrco14KV211V3S0enPxB8FhocCo9EKKqR8NBg6Fkw4O/saHFfddlLcUOuKlss5LJS + D/nHSGXxiPLMN5qtjvqmu57OR4G+0Mtw5NXr8TcU1fjrV5Hwy1Bf4FGn525TvcNqNuYT + BcpjwQJzoD4ZTDY/XarACkyWS1XXbrU98Af6BoYjYxOTUzMzs5TUzMzU5MRYZHigL+B/ + 0HbrWtUli6kAU0jT+WwmCR+HD/HT6PGyiprrzfd8gBceHZ+cnpuPvlukpN5F5+emJ8dH + wwDou9d8vaaiDNdrIIB8DgkfLJ/i7DN5hcVQnu5Wb0/wxfDoxNTswuLSh+UVSmr5w9Li + wuzUxOjwi2CPt9UNBVpcmHcmWwwL6CH/4PEgEBPxK7lYeeW2xxfoH4yMT81F3y9/XF1b + p6TWVj8uv4/OTY1HBvsDPs/tK5UXS4gAiokF9GD+gE8IfFqTxVbd0HzfHwyFxyZno0sr + a+sbm1uU1ObG+trKUnR2ciwcCvrvNzdU2ywmLfAJSfm4wkxZDiwvdldji7f36WBkYnoB + 8Da2tmMU1fbWBgAuTE9EBp/2elsaXXZYYHJkmUIumX9cUaYc050tq6htau183D/06u3c + 4vLqxlZs5/MuJfV5J7a1sbq8OPf21VD/487WptqKsrM6TJ4pOoJPosB0eLmj7ka7L/A8 + PDY1v/Tx02ZsZ3ePotrdiW1++rg0PzUWfh7wtd+oc5TjOkwhOZoPHg/Ad9PT9SQ08no6 + +mF1YxvwvnylpL7s7e5sb6x+iE6/Hgk96fLcJPj0mmP56t2e7uBAZGLm3fLaZuwz4H2j + pL5+2fsc21xbfjczERkIdnvgAXEUH/w8SuOKJIq4fyR8f1FQ337N99N/KBKTU+D1E15f + DOeszsvuDj/492Z2cWV9K7a79/UbBelgSN++7u3GttZXFmffgH/+Dvdlp/WcAV5g4AU0 + JRnxIf/+bN2i+vz3NyBaX/5sKZLeHdUnqk/0fCeNxolcRPlD+UP5O5Gokd4E5Q/lD+WP + NBonchHlD+UP5e9EokZ6E5Q/lD+UP9JonMhFlD+UP5S/E4ka6U1Q/lD+UP5Io3EiF1H+ + UP5Q/k4kaqQ3Qfn7kT+a7+9JOIbvtO/P+omPxvvr6L0/kub7W2m+P5nu+8vpfT6AQfPz + HQwmzc/n0P18Fc3PxyXT/Hwjcf6W1udT6X2+mO7nw+l/vp/u/RmI9ij07a+RQPP+KMBH + 9/429O5PRBhI5/5SwEdUKH37g+0D0re/WwLd+/PtA9K3v2JCHDDeQZKe/THha8T3DqBE + 61Ya9jclPrfECZPo2p82/kGJ1v2F44T/YALp6dCPUaO/0AygGUAzgGbg98zA34jO8EcK + ZW5kc3RyZWFtCmVuZG9iago0NCAwIG9iagoxODcxCmVuZG9iagozMCAwIG9iago8PCAv + TGVuZ3RoIDMxIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRo + IDE0NCAvSGVpZ2h0IDExNiAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvQml0c1BlckNv + bXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2b91dT2xaF + LUhvgUBooQQIhBYDAQREAkGaATRKF4gGo0jniqAo0jRKL9KRoiCIYkNRUcf7197c+yQY + QiL4iHeMNwbrF8m9ePI519rnnL3W3EeOHMahAocK/PsKHP1r8Yf/FnAc+xXHTRi/rnoM + X7IvLIYFDGZmJ/5SmJmZHT9O0PZmojQMirmFhSUTViYKzeUsLMzN8S810yD9RiUNzYkT + 5kCxsra2sbGxtbW1M1ngYrikjbWVpaUFkKhKv0kbwTmOLAEGKLZ29vYOjo4sk4ajo4O9 + vb0dZQIS1chYHVEcaENo7OwdWCwnZzbbxcXVlWOqcHV1YbOdnVgsB4JkZWnBZM0IEFGH + iENoHMHiynFz9/Dw9PLimii8vDw9PNzdOKByYjnY2ViTrEEiwymjOCgcG1vQAAYkXB9f + Xz+ev8mC5+fr6+PN9fRw47CdWfa2kAhAWGeGavooqR0LK4jDcnZ18wALzz+QHxQsEISE + hJogQkIEAkEQPzDA39eH6+nOYROJCBDWmQEgyAMcSxs7Bxab48H15QXwBSFh4UKhSCSK + NEngQieFEWGhgqBAf1+uB4ftRIAsaMZ2CwR5UMrWFMfThxcYHBouFEVFx8TGxSMSDhzk + KnGxsdFi0cmIUAHf39fLzYUAoahRQYZ4zE5YWtvas9hunj7+QaERInFsXEJikiRZKpWm + miBwmRRJUuLp+FixSBgWHMAA2VpbmqOCdvEw8tgAh+PpGyAIF4lPJSQlp6ZlZJ6TZeeY + JLJl57Iy0lJTkk7HxURGCAIBxGbZk4wZEIjwIFuOwPEJEAijYk9LpOlZ2bnyi3n5hSaK + grxL8vPZ5zJSkxPjxEIChKK2t7HEEtuVsKPHzMwtbeydXD18/AUR4vik1EzZhUuFJaVl + iqtKZYUJQqm8qigvLSnMk2dnnpUkRAtDAnw9OM4OthDIEA/WOuRx4/KCwqPiJWnnzucV + lSqUqsqq6praOhNEbU11VaWq4kpZcZ5clp6cIBYG+3M9XKhAx3fpQ9KF6nH18A0MFcUm + pcnkhZevXKusrmu81dTcYpJovn2rsb6mUnW1rPBiTrokLjKMj4w5kYQd31XQlMfBmcPl + BUeIT6cCp0xZWdPQ1NJ6v629wyTR/uB+a0tTY21lRXnxpey0xBihwN/bne1oS1aYvkDH + jptb2Tqy3X0CQkWnJJnnC8sqbtY1tdxv73qoftJjkniiftjVcf9OU32VSlEkz0qJJwIh + YXZWFgZ4zMyt7Ei6+OHiBGl23mXlzfqm1vZudU//4NCISWJosL9H3d1+r7mh+lpZQW5a + YrQwiEcSZm2Qx8La3onjxQsWxp5Jv1B05UZdU2vHo56B4adjk5NTJojJyfGnIwO96s77 + zQ03lSXyTMkpkcCf6+ZMCmh3vswsbOxRPv4horjkrEul16qBo+4bejoxPTs3v2CCmJ97 + Nj05Ntz/uPNeU9318nyZND4qLNDHne1gmAfLi+3uHRgWhXQVKiobWh486hsem3q28Hxp + +aUJYnnp+cKz6fGRfnXH3cYqZRESJg5HAbEdDfJguTuwSflEJ6blFiurm+519QyNTc8t + Lq+8Wnttglh7tbL8fH5mfLi3u+12reqyPONMjDDYDwVtayhf4HEET5AwNilDXqqqa2lX + Dzydmnv+cu31+rv3Joh362/WVl7MT48NPu6423Cj7FKWJFYo4Hm6GuOxdXTx8EM5SzIv + llU23u3qGZ54Bpz19x82TBIf3q8DaG5ypLf73q0qRZ4sJQ4F7cVh2VoZqOcTlrYsF0+e + 4GRc8rk8xc1b9x72j04vLL9af7/xefOLCWLz8waAlhdnxgbUbberlQXZ0nhRiD+X42Rn + jMfViycQxUtl+Verm9rUA2Ozz1fevNv4/OWbSeLLJoBWX8xNDD7paKmtKMxJTYgM3YMH + yx08Bcqa5vYngxNzS6/WPwDn+w8TxPdvXz9/fLu2ND853NN5p+5aUW7q6aiwgN/rQ3my + C5W1LR09w5Pzy2vvNjaB89ME8eP7Nwj0+uXi9Ehv1916VXHuWeM8R4+R+nH1MsbznwPH + zx8/fsOj/8Jx9PgJPL5wew6NTEjNKayogz4jUwsvX7/f+PLtx88D0+ACP39sffn0/s3K + 4sxoX3drg6rkPG6IYYHeeGBYm+u/cBzyHOqjV3SH9aMniN7HQ330BNH7eKiPniB6Hw/1 + 0RNE7+OhPnqC6H38/9bn77+P/fzx7YvR90P997Eje/D8POArGd53/+h9dW+egxDRt2+T + 89Cr6hXpfj5q9gL/Gw/dfzH7naHJuaW1t7v2F/tB0PkdDY0mX+/WlhemRrT7Hey/frvf + IftTUVyKLP8K2Q/S/dfbj5tft/T2OzrftteP2zTg2cL+4h3df5H9oLIwRxpP94NokBnc + L9uQ/bvg5CmyX65i9qcvVul+ELtBnQvjx70wNP9f9y/9+LGF/eD6qyXsTx+3365RFqAB + hP2y8f077W8w/YTyysbW7r6nM4sr2PCQDeEfE+mi4Gf8/e9kub9ZeT47NvCoranqSp4s + Oe6kgOdltL/B9H8iYs6g33K9/k5nz8jk/NLa+sftDfPO7/idRjt/k/xrgPN18yMpn2my + /WqsLL+UiX5LsJ+nC8tgP8qM9sd8+GFi9KNKKmqb29WD42goEIG+fttitvA7v8cY0c7f + Ymi2gEPbCc8mh5503KlXlZJ+VESQ0f6YGfqZzm7cgFDar7tadeted9/I1Dw6CgBCh2Pr + +z6zZpiG4HxAu2Vh+mk/0lWjLM5NOy0O4xvvH9L+KtcfCyw5K6/sen1Lx+PBsZnFZTSk + SAdon0RGaYDzdu3l4uz4UE8n0qUg5UyWu7H+Kvrh6D97+gUJY5LS5SWkgdjdOzwxu0g6 + ZB/3SWSU5vMn0oxaeY7uWP9D0j4sJeVzEv1eY/3n4+aW6M+joRmGcUFOgeJGPRqs/SOT + zxaXX715ty8iIzRfNgnNOwZnFO3VO42VV4rQTYiO4PuifWhnZXBeQBqsKCB0XE5JsiBQ + VePdDjWAZheXVtbW3zJEpLJ31RFT17tpvn/f+vZNS/N6dXnx2eTowOPO1lvV10rzmHSh + fMj8Qr+9ceQIaQBh/MXx8guKQMc3J7/sWvUtdMT7RyZm5l8sr+oSMYtN9/vRTdkRdIFr + aDY+Em1WX75YmEWySDe8VqUozE0/Q7qrXA5tz+963SA8mH+x2B7eZKCSjIFKuaoGQI96 + h0hPfE8iXRxDNEuLc9Nozqs7WpvqbiiK5VmkO49uuCsL44vdjwvw0PmgMxEoXHxamiUv + Uqhq/rnzoLtnYGR8miF6s501zQ1Jl0L7sxGamYnRwZ6H7Xdv1d24UnxRdhbTlGAe142N + +aCB8gEPnZ+yMDLwFwhjE1PPyaFQdWPz/U517+DoBCVaWduTSEvzFXWDTL2lmVqcm5l4 + OtSn7mpraaxWKYCTlnRKFBLgoxkP7h43HTkCHs0AlU4IAXShACO5uqa7bd2P+wZHiUbP + l/cgojRbuBfr0izMTYOm/0l3e2tT/c2K8kI5cOh00FMzPt1dzqSgyfydDJi9sOZFsYnS + zNy8EoWquuE2xmCUaGp2XkP0YePT5pev5BZJCHZkaifN8gvMUCZGCU3HvebGmutXLxdc + yDqbFBcVHkSyRaanhtJFeBiB4Afg+hGg0ynp2WRqeaOmsZkM5voGR8aNEREqEmRJabV5 + s7aqoRmkNC3/kEll0aWcTGniqchwDHPdyTDX8Pgd/gDq37DCTNfFncvjh56MjpeczcrN + Ky6vqKwF0YNu1BFDhPvRGzLV0GrEPGv1aVa0NH2PoU3LP3U3rylK8s+fS5MkxIjCgvy9 + PVydHGBPMGZwYQSytnVwApAfP0QYdSoxJV12Ib9EoUs0RjT6RYRn/7ct3CNx79uhDWZL + ZNo1OgiadkqjUlwukGdnSM/ACxDK51Ec2DeIv0V/mEvdE4z/BxYOCuQbEBwmio4/I83I + lmuIbrc+6CIajU3OzuOe/eo11QiPWiCRQKI2P218eP8WcyVCM6WhaSXagKZQnpOZKomP + EYULAv24RB3qJjHm/0EFUccNgBhPCT8kIjI2QZKamS0vIBrVNN5ubQPRAIhmNETkwfbp + 8yYTnzZAQ6ZcmLvNTo2PDPZhfNvajAn3NdBczIEt4XRslDA0SNfcQvxRu9wkjEDIGLEA + UZMLsQDB5QIjB0NENdIQ4Q4JojmiEXmMfPjIjMc+Qpr1169WljQ0veruB1qaAmgDmlPi + k3C2QBziRrIlXhviaDPCQwQCEExANnBsubh5ePsFBocJxbCWEI3yS8rhEGjE/ahTvU30 + chXjw7d0fvjuLaRZfbm0CG3GRgZ1aEooTXIioREE8nw83VyJWwv2sd/ikDXPAFHTFtvV + 3dObFygIOyne1qhceaO6QZdo4cXSyuoana+ura1iSeFWPElpuh603kamKhQMjQQ0ojAB + n+fjpWPV+p06JGcayx/x2MHwx+a4e8EpJSAaIWsZsgt50EhD9KinfxjD8Gfziy+Y+fPy + 0ovF+WeEZqBHTWlqGBpiZ0GmUMZwRVGfliMjDlnpRpPF1JTGEgmbHUmaDhGpIykhKsYd + ktEIREOj45MzZD6/uLiA+frM1PjTYZgQutqgDaXJh7kmlakbXRrGWEdKx1jtMDhaiUgV + kbreJkIdgShJS3QdRHfaOh4+wU2b+BemEVPEfwBLxKPOtrtNoFGWl2hoYknd8P19tNr8 + AQ3B0mqkQ4Q6okTxSdJ02Xmi0fXqerhNOrT+jtHRkRHGn9HRdqepofqGPg3qhjjqkKlt + mj1Sta3QDiJaR6Sy6VqLitUQFYGoqu5WS2sbkB739Pb19fY8UXd3PoCjpp7S5F2QZaRK + EmLFQrqmDkCjq5G2silRQHCoMDIG92yiUVHZVdXNukYYhOAP6kJ0drTdu3O7sa7quhIW + KNBIQROlocGa+h+10cqkzZoxotxLhaWMgQr+qbuIluamfxj7UxGlSaI0wbjfkBV+QBqD + GrkhawG4Z1ON0s7lXizE8ofBrKauvqGhvq62ulKlxIPh0nlZunQnDYvUjSUxq+5rTWk1 + 0f9TVyNi3HQFka+WKCUtK0eeV3S5/Irymur6dZWq4qqitDj/Yu450MSTTAUH+nl7uruy + QQMv74Fp9DXSENHnWgSe/YnJZzNlufK8wuKSy6Wll0uKC/MunpdlpqWciY+JFIbiOcXQ + OBAajfl67/uNvib6nzUaMb5oB5YznmuEKAREcfBMpmXKsnMvyBEXzucARipJhPvyr9Ho + aKRHxA+BpzQ2PlGSIk1Lz8jMzEiHFVSSSNypEaFBRBs3ZMq02mi12qER7NGMRnw82Ijp + Nj4xMQlxJjEhLlYciQWOx5SG5pcHfB9PBu237efPX0SMYduFvh8FBocAKVIcHYOIFkeJ + hOGhwfShSbX5azTarOH9EVnbJvLy8fPnBwlCw8IjhMKIcDitAeOHx5Sbi7PGH68x7O/5 + 1NyPJvq/QzTSIXLC64inxtXODwriEyc6YOBE/1doKB0homcQrBjXvwvH3cOL6w3bP8Kb + 6+XhznHF2QGcZiAvfwe8++nrYfDzDiIHlhPbhUOPRdCDDBxykIF5hP87NARRQ2SOAzW/ + jo2wEXoHPeh5IYP/JlP/R0qEVzaUtjVzrAbnahxwEMYOx3NwNocczfn3aLY1wmJjzh2R + M0IkrK3IQSGmbPb/smUatahG5PCR+a9zWfQcFc52EW1M8y1/chW6/LE/0jm3pjlndvCH + 5p9w6Pwug0TuAQj8QWLvM286F/gLP+L7deIvfMHhJQ8VOFTgUIF/SYH/Ao6h2sEKZW5k + c3RyZWFtCmVuZG9iagozMSAwIG9iago0MzQxCmVuZG9iagozOSAwIG9iago8PCAvTGVu + Z3RoIDQwIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDIy + NCAvSGVpZ2h0IDExNiAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvQml0c1BlckNvbXBv + bmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2c6U8TWxjGWQql + ewulhS62TIHSllJHigWqtqQNUBYXEK0LBCgai4UKsbER1BKEhgYRFMISqEgEA0iANEiI + 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 + 8+0D0re/YkIcMN5Bkp79MeFrxPcOoETrVhr2NyU+t8QJk+janzb+QYnW/YXjhP9gAunp + 0I9Ro7/QDKAZQDOAZuD3zMDfiM7wRwplbmRzdHJlYW0KZW5kb2JqCjQwIDAgb2JqCjE4 + NzEKZW5kb2JqCjM1IDAgb2JqCjw8IC9MZW5ndGggMzYgMCBSIC9UeXBlIC9YT2JqZWN0 + IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMjI0IC9IZWlnaHQgMTE2IC9Db2xvclNwYWNl + Ci9EZXZpY2VHcmF5IC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNv + ZGUgPj4Kc3RyZWFtCngB7ZzpTxNbGMZZCqV7C6WFLrZMgdKWUkeKBaq2pA1QFhcQrQsE + KBqLhQqxsRHUEoSGBhEUwhKoSAQDSIA0SIia+6/dd4r3GmGQexODw+Q8n8h8mfM7z/uc + mTLnvAkJSGgG0AygGUAz8HtnIPEU6X+RA1fSDyVTWj/GmQTD/g+Y+2zAxGCknBoxGDBg + AvU4xDjdPloqk5m2LxZl9X2ATGYqWAGQxxB+p0tJSQU0FpvN4XC4XC6PwoLhwSDZbFZa + GsH4a0ICLxmqEuAAjcvj8wVCoYjiEgoFfD4PKNmAuE94RJHG8cA7go7HF4hE6RlicWam + RCKlrCSSzEyxOCNdJBLweQQheAhFSg5IuEeYR9AJgU0izcqWyeQKhZKyUijkMll2llQC + jMI4IVhIAJIspHE8CB6HC3QAB2RKlVqdg2koLCxHrVYpgRIQgZDLIWJIDphIZI/JAvNE + GZIsGbBhmrx8bYFOp9cbKCm9Xqcr0ObnaTBglGVJMkRgIYtJrDKHDQT7AC+NwxOIxFKZ + Uo3l5uv0hUaTCcfxcxQVDM1kMhbqdfm5mFopk4pFAh44mMIgqVCwD5YWdhxPrsLyCgxG + E15cct5SVg6yUlDEuMos50uKcZPRUJCHqeRxQDYsMiQGJoJ9aWwuXyTOkqs0WkMRbraU + WS/a7BUOh8NJScHAKuy2i9YyixkvMmg1KnmWWMTnstPAwIMFum8fB/CkcnWuzoibS622 + Cmdltau2rv4yRVVfV+uqrnRW2KylZtyoy1UTDvI5ZAYSfFCdQsBT5epMxZYLdkdVTf2V + hsamG27K6kZTY8OV+poqh/2CpdikyyVKVMgDAw8VKJRnahqHny6RqTS6InO5zemqu3bd + fae5pbXd4+mgpDye9taW5jvu69fqXE5bublIp1HJJOmEgYcKNDEJng1gX5YS0xqLy+2V + tVebbjW3eu57H/q6uv2UVHeX76H3vqe1+VbT1dpKe3mxUYsps8BAeEYcDCBRnpA+iUyd + Z8Attsq6Bvfdtnten7/3ceBJkKJ6Enjc6/d577XddTfUVdosuCFPLZMQCYQC/fkVJs4n + yJAqsYIi8wUn4LV4vF09gWDfs+ehAYoq9PxZXzDQ0+X1tACg84K5qABTSjMEpHypLK5Q + nK3KNeCldtdVd0tHpz8QfBYaHAqPRCiqkfDQYOhZMODv7GhxX3XZS3FDripbLOSyUg/5 + x0hl8YjyzDearY76pruezkeBvtDLcOTV6/E3FNX461eR8MtQX+BRp+duU73DajbmEwXK + Y8ECc6A+GUw2P12qwApMlktV1261PfAH+gaGI2MTk1MzM7OU1MzM1OTEWGR4oC/gf9B2 + 61rVJYupAFNI0/lsJgkfhw/x0+jxsoqa6833fIAXHh2fnJ6bj75bpKTeRefnpifHR8MA + 6LvXfL2mogzXayCAfA4JHyyf4uwzeYXFUJ7uVm9P8MXw6MTU7MLi0oflFUpq+cPS4sLs + 1MTo8Itgj7fVDQVaXJh3JlsMC+gh/+DxIBAT8Su5WHnltscX6B+MjE/NRd8vf1xdW6ek + 1lY/Lr+Pzk2NRwb7Az7P7SuVF0uIAIqJBfRg/oBPCHxak8VW3dB83x8MhccmZ6NLK2vr + G5tblNTmxvraylJ0dnIsHAr67zc3VNssJi3wCUn5uMJMWQ4sL3ZXY4u39+lgZGJ6AfA2 + trZjFNX21gYALkxPRAaf9npbGl12WGByZJlCLpl/XFGmHNOdLauobWrtfNw/9Ort3OLy + 6sZWbOfzLiX1eSe2tbG6vDj39tVQ/+PO1qbairKzOkyeKTqCT6LAdHi5o+5Guy/wPDw2 + Nb/08dNmbGd3j6La3Yltfvq4ND81Fn4e8LXfqHOU4zpMITmaDx4PwHfT0/UkNPJ6Ovph + dWMb8L58paS+7O3ubG+sfohOvx4JPeny3CT49Jpj+erdnu7gQGRi5t3y2mbsM+B9o6S+ + ftn7HNtcW343MxEZCHZ74AFxFB/8PErjiiSKuH8kfH9RUN9+zffTfygSk1Pg9RNeXwzn + rM7L7g4/+PdmdnFlfSu2u/f1GwXpYEjfvu7txrbWVxZn34B//g73Zaf1nAFeYOAFNCUZ + 8SH//mzdovr89zcgWl/+bCmS3h3VJ6pP9HwnjcaJXET5Q/lD+TuRqJHeBOUP5Q/ljzQa + J3IR5Q/lD+XvRKJGehOUP5Q/lD/SaJzIRZQ/lD+UvxOJGulNUP5Q/lD+SKNxIhdR/lD+ + UP5OJGqkN0H5+5E/mu/vSTiG77Tvz/qJj8b76+i9P5Lm+1tpvj+Z7vvL6X0+gEHz8x0M + Js3P59D9fBXNz8cl0/x8I3H+ltbnU+l9vpju58Ppf76f7v0ZiPYo9O2vkUDz/ijAR/f+ + NvTuT0QYSOf+UsBHVCh9+4PtA9K3v1sC3fvz7QPSt79iQhww3kGSnv0x4WvE9w6gROtW + GvY3JT63xAmT6NqfNv5Bidb9heOE/2AC6enQj1Gjv9AMoBlAM4Bm4PfMwN+IzvBHCmVu + ZHN0cmVhbQplbmRvYmoKMzYgMCBvYmoKMTg3MQplbmRvYmoKNDUgMCBvYmoKPDwgL0xl + bmd0aCA0NiAwIFIgL04gMyAvQWx0ZXJuYXRlIC9EZXZpY2VSR0IgL0ZpbHRlciAvRmxh + dGVEZWNvZGUgPj4Kc3RyZWFtCngBhZRNSBRhGMf/s40EsQbRlwjF0MEkVCYLUgLT9StT + tmXVTAlinX13nRxnp5ndLUUihOiYdYwuVkSHiE7hoUOnOkQEmXWJoKNFEAVeIrb/O5O7 + Y1S+MDO/eZ7/+3y9wwBVj1KOY0U0YMrOu8nemHZ6dEzb/BpVqEYUXCnDczoSiQGfqZXP + 9Wv1LRRpWWqUsdb7NnyrdpkQUDQqd2QDPix5PODjki/knTw1ZyQbE6k02SE3uEPJTvIt + 8tZsiMdDnBaeAVS1U5MzHJdxIjvILUUjK2M+IOt22rTJ76U97RlT1LDfyDc5C9q48v1A + 2x5g04uKbcwDHtwDdtdVbPU1wM4RYPFQxfY96c9H2fXKyxxq9sMp0Rhr+lAqfa8DNt8A + fl4vlX7cLpV+3mEO1vHUMgpu0deyMOUlENQb7Gb85Br9i4OefFULsMA5jmwB+q8ANz8C + +x8C2x8DiWpgqBWRy2w3uPLiIucCdOacadfMTuS1Zl0/onXwaIXWZxtNDVrKsjTf5Wmu + 8IRbFOkmTFkFztlf23iPCnt4kE/2F7kkvO7frMylU12cJZrY1qe06OomN5DvZ8yePnI9 + r/cZt2c4YOWAme8bCjhyyrbiPBepidTY4/GTZMZXVCcfk/OQPOcVB2VM334udSJBrqU9 + OZnrl5pd3Ns+MzHEM5KsWDMTnfHf/MYtJGXefdTcdSz/m2dtkWcYhQUBEzbvNjQk0YsY + GuHARQ4ZekwqTFqlX9BqwsPkX5UWEuVdFhW9WOGeFX/PeRS4W8Y/hVgccw3lCJr+Tv+i + L+sL+l3983xtob7imXPPmsara18ZV2aW1ci4QY0yvqwpiG+w2g56LWRpneIV9OSV9Y3h + 6jL2fG3Zo8kc4mp8NdSlCGVqxDjjya5l90WyxTfh51vL9q/pUft89klNJdeyunhmKfp8 + NlwNa/+zq2DSsqvw5I2QLjxroe5VD6p9aovaCk09prarbWoX346qA+Udw5yViQus22X1 + KfZgY5reyklXZovg38Ivhv+lXmEL1zQ0+Q9NuLmMaQnfEdw2cIeU/8NfswMN3gplbmRz + dHJlYW0KZW5kb2JqCjQ2IDAgb2JqCjc5MgplbmRvYmoKOCAwIG9iagpbIC9JQ0NCYXNl + ZCA0NSAwIFIgXQplbmRvYmoKNDcgMCBvYmoKPDwgL0xlbmd0aCA0OCAwIFIgL04gMSAv + QWx0ZXJuYXRlIC9EZXZpY2VHcmF5IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVh + bQp4AYVST0gUURz+zTYShIhBhXiIdwoJlSmsrKDadnVZlW1bldKiGGffuqOzM9Ob2TXF + kwRdojx1D6JjdOzQoZuXosCsS9cgqSAIPHXo+83s6iiEb3k73/v9/X7fe0RtnabvOylB + VHNDlSulp25OTYuDHylFHdROWKYV+OlicYyx67mSv7vX1mfS2LLex7V2+/Y9tZVlYCHq + Lba3EPohkWYAH5mfKGWAs8Adlq/YPgE8WA6sGvAjogMPmrkw09GcdKWyLZFT5qIoKq9i + O0mu+/m5xr6LtYmD/lyPZtaOvbPqqtFM1LT3RKG8D65EGc9fVPZsNRSnDeOcSEMaKfKu + 1d8rTMcRkSsQSgZSNWS5n2pOnXXgdRi7XbqT4/j2EKU+yWCoibXpspkdhX0AdirL7BDw + BejxsmIP54F7Yf9bUcOTwCdhP2SHedatH/YXrlPge4Q9NeDOFK7F8dqKH14tAUP3VCNo + jHNNxNPXOXOkiO8x1BmY90Y5pgsxd5aqEzeAO2EfWapmCrFd+67qJe57AnfT4zvRmzkL + XKAcSXKxFdkU0DwJWBR9i7BJDjw+zh5V4HeomMAcuYnczSj3HtURG2ejUoFWeo1Xxk/j + ufHF+GVsGM+Afqx213t8/+njFXXXtj48+Y163DmuvZ0bVWFWcWUL3f/HMoSP2Sc5psHT + oVlYa9h25A+azEywDCjEfwU+l/qSE1Xc1e7tuEUSzFA+LGwluktUbinU6j2DSqwcK9gA + dnCSxCxaHLhTa7o5eHfYInpt+U1XsuuG/vr2evva8h5tyqgpKBPNs0RmlLFbo+TdeNv9 + ZpERnzg6vue9ilrJ/klFED+FOVoq8hRV9FZQ1sRvZw5+G7Z+XD+l5/VB/TwJPa2f0a/o + oxG+DHRJz8JzUR+jSfCwaSHiEqCKgzPUTlRjjQPiKfHytFtkkf0PQBn9ZgplbmRzdHJl + YW0KZW5kb2JqCjQ4IDAgb2JqCjcwNAplbmRvYmoKMjUgMCBvYmoKWyAvSUNDQmFzZWQg + NDcgMCBSIF0KZW5kb2JqCjQ5IDAgb2JqCjw8IC9MZW5ndGggNTAgMCBSIC9OIDMgL0Fs + dGVybmF0ZSAvRGV2aWNlUkdCIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4 + AYWSy2sTURSHv0mRLKwPqs5OmE2hi1ZCWmqkIK1ZaGkLoSn4QITJZEwHkul4Z1oNInTt + XyBYwYULERHXviioG1FQBKVbXbhxZcEHWsZz5xICQuKFw/3Ob85j5pyBgZIbRc0c0AoT + tXjyhHPm7Dknv0WeQ+xmnCnXi6OZSmVeQnqc7x+w9KP3Y7pWft/jz9dGng3duzpx+qF3 + 4VOPpI68R0lDsBwRDjYMT2iuGT6l+XISJRJzXrO37NaFI+FRtbRYFt4Q3tswfF9zzfAT + zWteQ+e+Fi6E9SAU/iNcqvuxBznda8OLlMTk3gpPt1orUn9gv/CInoXccm5UYW5Scn90 + tdJ1uP0ODrzoasO/5BVteBp0tW07m49lv4ovjhezctaggl0/03T7MOQfwY5K09+30nTn + jvTegs1L3qpay2KlqfUG/ueb7zTV4evzDvViM4ssqgB3N6EqdlTswToMf4Shm1ABlqax + vh3vmJmbyGBX26G34MaJr5yy2wxqyk18GZ45NlXahHgs4BKT4KNwKIvXJKAmnpupWUr/ + Yp2i/e/EvyJ7hPJK1FZBYzlxZuSP9J3Z0Dsy6hQLhWP9883udcz8mOyhOTdbnHz5ZWr9 + 36y/J1aXKAplbmRzdHJlYW0KZW5kb2JqCjUwIDAgb2JqCjQ2NwplbmRvYmoKMjcgMCBv + YmoKWyAvSUNDQmFzZWQgNDkgMCBSIF0KZW5kb2JqCjUxIDAgb2JqCjw8IC9MZW5ndGgg + NTIgMCBSIC9OIDMgL0FsdGVybmF0ZSAvRGV2aWNlUkdCIC9GaWx0ZXIgL0ZsYXRlRGVj + b2RlID4+CnN0cmVhbQp4AYWSy2sTURSHv0mRLKwPqs5OmE2hi1ZCWmqkIK1ZaGkLoSn4 + QITJZEwHkul4Z1oNInTtXyBYwYULERHXviioG1FQBKVbXbhxZcEHWsZz5xICQuKFw/3O + b85j5pyBgZIbRc0c0AoTtXjyhHPm7Dknv0WeQ+xmnCnXi6OZSmVeQnqc7x+w9KP3Y7pW + ft/jz9dGng3duzpx+qF34VOPpI68R0lDsBwRDjYMT2iuGT6l+XISJRJzXrO37NaFI+FR + tbRYFt4Q3tswfF9zzfATzWteQ+e+Fi6E9SAU/iNcqvuxBznda8OLlMTk3gpPt1orUn9g + v/CInoXccm5UYW5Scn90tdJ1uP0ODrzoasO/5BVteBp0tW07m49lv4ovjhezctaggl0/ + 03T7MOQfwY5K09+30nTnjvTegs1L3qpay2KlqfUG/ueb7zTV4evzDvViM4ssqgB3N6Eq + dlTswToMf4Shm1ABlqaxvh3vmJmbyGBX26G34MaJr5yy2wxqyk18GZ45NlXahHgs4BKT + 4KNwKIvXJKAmnpupWUr/Yp2i/e/EvyJ7hPJK1FZBYzlxZuSP9J3Z0Dsy6hQLhWP9883u + dcz8mOyhOTdbnHz5ZWr936y/J1aXKAplbmRzdHJlYW0KZW5kb2JqCjUyIDAgb2JqCjQ2 + NwplbmRvYmoKMzIgMCBvYmoKWyAvSUNDQmFzZWQgNTEgMCBSIF0KZW5kb2JqCjQgMCBv + YmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAx + IC9LaWRzIFsgMyAwIFIgXSA+PgplbmRvYmoKNTMgMCBvYmoKPDwgL1R5cGUgL0NhdGFs + b2cgL091dGxpbmVzIDIgMCBSIC9QYWdlcyA0IDAgUiAvVmVyc2lvbiAvMS40ID4+CmVu + ZG9iagoyIDAgb2JqCjw8IC9MYXN0IDU0IDAgUiAvRmlyc3QgNTUgMCBSID4+CmVuZG9i + ago1NSAwIG9iago8PCAvQ291bnQgMCAvRGVzdCBbIDMgMCBSIC9YWVogMCA3ODMgMCBd + IC9UaXRsZSAoQ2FudmFzIDEpID4+CmVuZG9iago1NCAwIG9iago8PCAvQ291bnQgMCAv + RGVzdCBbIDMgMCBSIC9YWVogMCA3ODMgMCBdIC9UaXRsZSAoQ2FudmFzIDEpID4+CmVu + ZG9iago1NiAwIG9iago8PCAvTGVuZ3RoIDU3IDAgUiAvTGVuZ3RoMSAxMTk0NCAvRmls + dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAG9enl8k1XW8LnPnqVpkmZv0iRNkzTd + F7rRQkPpxlKEVqBFCi1QNkEBsVoVpioMUhEXZBEYxxVKEQmlQgDhRQZFHEfFUVFURsfq + 6Lz21ZkXV2jynvu0VPA3n59/zG/y5O73ufds95xz73OBAIAa2oGF4OzFzUvIOvIPrHkV + wyuzW5e77vti5KMAZAsAu2juknmLdR/94RUAngNQquctapu7p7NlDkCsFsD69fyW5jkX + mmdOBwjg65A/HyuUieJwLBdiOWn+4uW3rlmsfgjL2AfuWXTj7Oa57zYbsNyL5crFzbcu + kX6r/AEgJQ3LrhuaF7fMXNpxO5bHYzlxyY03LWc3c6OxvATLc5csa1ny/N03ZGP5XYTv + dawj+NCfGgQ4hqkLpg3WyNUYMYgpQo8/Hvv88k+Um6WhToqh3OWM8nIGU9UV+auzaogB + DcSCFnSghzhAjMEIJjCDBaxgw1I82MEBCZhzIsxuBO44aPmjkMy3g43LxFqIvofhHE0j + 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 + 62FJrXu5mz/a38PglpjA+sgMppl/G3eUI4MKg04RZ8IxFEfIdtwPGMj2oCYI7dx4rdVo + +s69qNYSFnNWy8P22T609b3VNzh4KY7NiIJOazbFeTKI3+f35WkL8uOYGb/LrJqUs6Ht + ocpAoUnVWHyEfzvy+gPvRz6OnP/64cjfe1cuerhz6jUk+W8biFfGqRzhMSM8cZAfVEs6 + iDMiPNz42DgKEoACQVJIVoPxO3fp7QMIIhQfXgFHnL4gX6f1+9jcBGJOIEatKLBVv8+o + pFBsHeXLCswoPhyZQfLXnyVu4v76YWL69qaWFReWRt79fGPkvAxDV+QN0g7ncMedHjSB + R6OcIym1CIY4TDkHJGvs7BZL6gTthZqS/svz1iAQ2Vnm/IL8vGE+vycv12gQxK4Keyxh + Fr/T1HpGPTk9RVSJ5165pceIUyDdJ5PzzDhmM8qIK6iETJbYeEC+hUnZfvdhmXW92s8g + k3Itzm10TybfRpTMZrpPZ2A6nOduZPNl+fIHjcQFfxJdAgc2hchYJcV0d2mtTJoS7bcl + dIj+fmSP0Z1HA3fjxT4u7mIfm9/ZGanbvZuO93H0bbGY/xR3sWPhlWBDfv6w6kr35Or5 + inn+hSPnld064mXrSxUqa6q1KHlEIVuoKXALUpFR6S+rVFXp6mEyW++ea3o55mXNWcNZ + 49lRGpXSqvQppyi5iJIo0zPQ91KyjJQnhckD+22esQym3emBYkyei2OrxlaOxlxQN1ah + 5NMzHBmFOXyeL8cXW3iU3I8b4VKMY1HqMpHL+qKizL5MfdGHGR/qi6C0/y19UWnfWyf7 + tG+V9J/U6c1Fa3jtcdK4NDurERobwedJZIwGU26OPg/9KR0KpNtlNukM4En05Q3LL9AQ + OQO5OSZzQS6rIXJnZCG4XSjMBrPJnZNUYBY4D/dx3ZhlO6eMWrO5f/Nfn/vgAtlG5rz6 + X5Gvds2ewbF5T0y5/RHCb5q7msvZsDpWU+BZ9lzk+cj/RFadfuap42T2DpJwS9m0yNaz + 7JHZkf9dPWseKf7NpXrCn8HNc2VvpKcr8o/eyNGZo1WWmJtmdq87RbJa6zojY3NHWtID + /3P8c6I4fzTy1x+7Ti9omDZxHeXXXtQvfbjuVXi6MiGYJCZwnIpNILjRlhKUKknNqNUM + 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 + lf2LucroYMvoXLPk9342VyNtnkXnaqRzNdK5ZgVnyXNRElQsqCu7aTlKJ14hwytcyXWh + MZOm1eNNyYbyMNlB75XdDP8HJJTvPQplbmRzdHJlYW0KZW5kb2JqCjU3IDAgb2JqCjgy + NTcKZW5kb2JqCjU4IDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvQXNjZW50 + IDc3MCAvQ2FwSGVpZ2h0IDY4NCAvRGVzY2VudCAtMjMwIC9GbGFncyAzMgovRm9udEJC + b3ggWzUgLTIyMSA5MDMgNzM3XSAvRm9udE5hbWUgL1ZEWkpaUCtIZWx2ZXRpY2EgL0l0 + YWxpY0FuZ2xlIDAgL1N0ZW1WCjAgL01heFdpZHRoIDE1MDAgL1hIZWlnaHQgNTEzIC9G + b250RmlsZTIgNTYgMCBSID4+CmVuZG9iago1OSAwIG9iagpbIDI3OCAwIDAgMCAwIDAg + MCAxOTEgMzMzIDMzMyAwIDAgMjc4IDMzMyAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw + IDAgMCA1ODQKMCAwIDEwMTUgMCAwIDAgMCA2NjcgMCAwIDAgMCAwIDAgMCAwIDcyMiAw + IDAgMCAwIDAgNjExIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDU1NiA1NTYgNTAwIDU1 + NiA1NTYgMjc4IDU1NiA1NTYgMjIyIDAgNTAwIDIyMiA4MzMgNTU2IDU1NiA1NTYgMCAz + MzMgNTAwCjI3OCA1NTYgMCA3MjIgNTAwIDUwMCBdCmVuZG9iagoyNiAwIG9iago8PCAv + VHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9WRFpKWlArSGVs + dmV0aWNhIC9Gb250RGVzY3JpcHRvcgo1OCAwIFIgL1dpZHRocyA1OSAwIFIgL0ZpcnN0 + Q2hhciAzMiAvTGFzdENoYXIgMTIxIC9FbmNvZGluZyAvTWFjUm9tYW5FbmNvZGluZwo+ + PgplbmRvYmoKMSAwIG9iago8PCAvVGl0bGUgKFVudGl0bGVkKSAvQXV0aG9yIChMYXVy + ZW5jZSBSb3dlKSAvQ3JlYXRvciAoT21uaUdyYWZmbGUgUHJvZmVzc2lvbmFsKQovUHJv + ZHVjZXIgKE1hYyBPUyBYIDEwLjUuOCBRdWFydHogUERGQ29udGV4dCkgL0NyZWF0aW9u + RGF0ZSAoRDoyMDA5MTAxNDIzMTEyN1owMCcwMCcpCi9Nb2REYXRlIChEOjIwMDkxMDE0 + MjMxMTI3WjAwJzAwJykgPj4KZW5kb2JqCnhyZWYKMCA2MAowMDAwMDAwMDAwIDY1NTM1 + IGYgCjAwMDAwNDE1MjMgMDAwMDAgbiAKMDAwMDAzMjI4OCAwMDAwMCBuIAowMDAwMDAy + OTQ3IDAwMDAwIG4gCjAwMDAwMzIxMjUgMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBu + IAowMDAwMDAyOTI3IDAwMDAwIG4gCjAwMDAwMDMwNTEgMDAwMDAgbiAKMDAwMDAyOTk3 + MCAwMDAwMCBuIAowMDAwMDA0NzUzIDAwMDAwIG4gCjAwMDAwMDUyOTkgMDAwMDAgbiAK + MDAwMDAwNTMxOSAwMDAwMCBuIAowMDAwMDA1ODY2IDAwMDAwIG4gCjAwMDAwMDY0NTMg + MDAwMDAgbiAKMDAwMDAwNzAwMCAwMDAwMCBuIAowMDAwMDAzNzQxIDAwMDAwIG4gCjAw + MDAwMDQxNjYgMDAwMDAgbiAKMDAwMDAwMzI5NiAwMDAwMCBuIAowMDAwMDAzNzIxIDAw + MDAwIG4gCjAwMDAwMDQxODYgMDAwMDAgbiAKMDAwMDAwNDczMyAwMDAwMCBuIAowMDAw + MDA3MDIwIDAwMDAwIG4gCjAwMDAwMDc1NjcgMDAwMDAgbiAKMDAwMDAwNTg4NiAwMDAw + MCBuIAowMDAwMDA2NDMzIDAwMDAwIG4gCjAwMDAwMzA4MzQgMDAwMDAgbiAKMDAwMDA0 + MTM0OCAwMDAwMCBuIAowMDAwMDMxNDYxIDAwMDAwIG4gCjAwMDAwMDk2NTMgMDAwMDAg + biAKMDAwMDAxNDE2OCAwMDAwMCBuIAowMDAwMDIwMzg3IDAwMDAwIG4gCjAwMDAwMjQ5 + MDIgMDAwMDAgbiAKMDAwMDAzMjA4OCAwMDAwMCBuIAowMDAwMDE2MjU1IDAwMDAwIG4g + CjAwMDAwMTgzMDAgMDAwMDAgbiAKMDAwMDAyNjk4OSAwMDAwMCBuIAowMDAwMDI5MDM0 + IDAwMDAwIG4gCjAwMDAwMDc1ODcgMDAwMDAgbiAKMDAwMDAwOTYzMiAwMDAwMCBuIAow + MDAwMDI0OTIzIDAwMDAwIG4gCjAwMDAwMjY5NjggMDAwMDAgbiAKMDAwMDAxNDE4OSAw + MDAwMCBuIAowMDAwMDE2MjM0IDAwMDAwIG4gCjAwMDAwMTgzMjEgMDAwMDAgbiAKMDAw + MDAyMDM2NiAwMDAwMCBuIAowMDAwMDI5MDU1IDAwMDAwIG4gCjAwMDAwMjk5NTAgMDAw + MDAgbiAKMDAwMDAzMDAwNiAwMDAwMCBuIAowMDAwMDMwODE0IDAwMDAwIG4gCjAwMDAw + MzA4NzEgMDAwMDAgbiAKMDAwMDAzMTQ0MSAwMDAwMCBuIAowMDAwMDMxNDk4IDAwMDAw + IG4gCjAwMDAwMzIwNjggMDAwMDAgbiAKMDAwMDAzMjIwOCAwMDAwMCBuIAowMDAwMDMy + NDE0IDAwMDAwIG4gCjAwMDAwMzIzMzYgMDAwMDAgbiAKMDAwMDAzMjQ5MiAwMDAwMCBu + IAowMDAwMDQwODQwIDAwMDAwIG4gCjAwMDAwNDA4NjEgMDAwMDAgbiAKMDAwMDA0MTA4 + MSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDYwIC9Sb290IDUzIDAgUiAvSW5mbyAx + IDAgUiAvSUQgWyA8ODk1MTk5ZTFkOTAyYzkzNDljNzllZmU5NzMyZjQ0NTk+Cjw4OTUx + OTllMWQ5MDJjOTM0OWM3OWVmZTk3MzJmNDQ1OT4gXSA+PgpzdGFydHhyZWYKNDE3NDMK + JSVFT0YKMSAwIG9iago8PC9BdXRob3IgKExhdXJlbmNlIFJvd2UpL0NyZWF0aW9uRGF0 + ZSAoRDoyMDA5MTAxNDEzNDkwMFopL0NyZWF0b3IgKE9tbmlHcmFmZmxlIFByb2Zlc3Np + b25hbCA1LjIpL01vZERhdGUgKEQ6MjAwOTEwMTQyMzEwMDBaKS9Qcm9kdWNlciAoTWFj + IE9TIFggMTAuNS44IFF1YXJ0eiBQREZDb250ZXh0KS9UaXRsZSAoVW50aXRsZWQpPj4K + ZW5kb2JqCnhyZWYKMSAxCjAwMDAwNDMxMDEgMDAwMDAgbiAKdHJhaWxlcgo8PC9JRCBb + PDg5NTE5OWUxZDkwMmM5MzQ5Yzc5ZWZlOTczMmY0NDU5PiA8ODk1MTk5ZTFkOTAyYzkz + NDljNzllZmU5NzMyZjQ0NTk+XSAvSW5mbyAxIDAgUiAvUHJldiA0MTc0MyAvUm9vdCA1 + MyAwIFIgL1NpemUgNjA+PgpzdGFydHhyZWYKNDMzMDYKJSVFT0YK + + QuickLookThumbnail + + TU0AKgAADWSAP+BACCQWDQeEQmFQuGQ2HQ+IRGJROKRWLQ6BP+HNiOPSPOaQB+RAGSSW + SgOUSUUSuLy2XS+YTGZRiBw1rzcUzlgzt3z0JT9wUEZUMWUWbtecimZ0umU2nUyMw6jy + UN1UC1cCVl/Vt610I1+j0mn2OyWWzQeow1p2tvW2fhJ4XGMvO6VUNkC8Na9Cq+We/X/A + S20wxw4WShXEAnFQh7Y114+CyIP4HKZXLQjBw545vHuurgXEBV1aN+6UKacH6nL6vWYH + MxPNvFq7OiiwHbfW7ndX7XxWwznd8HhU/exTf0rh8nlS7ixCtv5Y9En9MBdXl9fsTSNR + a6PM199MeEFePs+XzQXBxxsc2DRm4vCvhGIyqWef7YDB8ey/r7/2zPynDgIOfkCJQAZ8 + wQBEFONALkP9B6nQApEBIMcsLGBDDFAS8YFPeHsPrshb+QhEiZwksSGoyksVJIqUGxLG + CYxPCinxHGMboq9KOPYhB0x8C8gPmkiVhRHEjIpHiIRtI8mKbJKHyXJspRkmqWyjKcsI + vJ8XQnB0sy+i0tptF8wTLJEqoo2IuzWU02gZN8zTi7SCvVJ7nr0azayEAMiTlKUZy8p0 + rz9GFAP3MlCSNQyFKCcBo0eu0OL4FSHGlSzbgcgqTJI56EOejNQIFT9QxXKtSn+pLnpK + gqeneCFX02ALSn6fda1nDlV0VKtBgA96MtjDUgAuh08BDYz0VNWMWoJWLqgFZVloed1p + lpasFAQDtsqOCduHlbwW3AalxW4Ca2m8jIyXTa8b0WsdePNaZ3LezFkgDI8dPXNCGnFf + gG39N4GM+hb6SLJp9YOaGEyJTF730iq1mm0NvHkA+K1eCFMVzM1an3RoMY/fwG3Zh0GS + 6grutirp65Di8OTLBB834cQR5pZ0SzEhleVm2LY1m1IH4vgUms659hZvkiJ3ehVQ1BTV + oRLWZuakEmqQNB+cRFRCCnZrkWADAh+NGdS35hYR77O7uKgPi94x8dOQgXuNru7a9zBF + u6C5hgBtb4t+Q4OfVjBCi5z8Kz7Tgpq+kIlKOpG4cnINC7rG8oezOh5zGuHZifKA1zzO + 2vDVW5UGHS7Bwpz0xWeOHx1uznvA2f5UJHaIvjlGhL3PFO3K2tIPTtmJJXyBbVDmvV+z + eLoLjjO5+rICMKcOaBHAyM2dCxywNYXrOsmPIHJuIFvi++sIVXhU/QA31Ynu4RGN94Y/ + i99zdoJCQHNlXNSJRv1AMz4OYAC7gEZIjw9DuoaHRAln7lHcglA5A+BpL3Wj4e+1QEj5 + HFkRV415eg/2NLxXmWggTGiFwcaXCNaJZRhQrO6EuFx5nykJaUcNsEBWVIGfChxqxTmE + jQF5D8OkQYYQZSU75CDlD3ndfCz9kJC06xEJmwQ3kUEuIoSYRliZ72YM/YurN6MVlDsm + LPDEhEM0jscNiMeNT6BUh1jcC+OBCGJsTOe4BgDgAPR5iqjQskZCDxmSw2A2L344AvIQ + 2Jxzr3woGgKXgIEJCCMwJ2MEI0lYpu8IvIBM0miXi9k8DSUDPyyx+INJxMEMyMsqYARQ + Z0rWLvtlHFRMcYlEkJifJggkaDNwFcopMihJUOKYeUhGWTOYjS1IU68dsy3KMXLeN2aA + J5pEXgmOOa0FpIEwlIQWUyU2dmbVas4+LPySqzmgN0E06SXuocOacqExWsy0Tk5RVsBZ + hKvQ0Qt17bgQT9Je2Buzd3nkym2QRtzRkwMTmWO0jM4zUs2Ige914GaKEyM6xxzwGqCJ + Vgmushrr58kEgmxyJpBCMnPh2ctVtC3nuIlWS5sSBlyUbH+45bIHaPGCIEe9aotC7Kte + m6dwsBQXVFGVUcyU53BUToo+FPpwVWuaQ0uSkJM3vxMX8Uw2KrZ+ggJeYNcxoVG0ZfC2 + 5a74XAGfgm8+CaBkOUvMvBOcJ1S3tCLGuYuzainjfr4Bavz4UtOLGzYOc86QTHPgK88z + qGmALOT1MgjZHJpAnmyTI7rmnBWBlwQaaw44EjoQ4rMkrmmQswJKfGMBFhfWreeyogrH + wMMwXJZ1YQ27bOlBg3wbSrWLgzt84gp7HHowWL9Xwb9fgLWAInQUADKrlFjejEguKHG1 + UyW4bGCZBXBKWGlS5N7/ZhlNZVQuPIHi/OUZg+O5c8HzTHJjbpvSbzPqnIzBN/qzmwMh + s7Rm7JBHw3AKWq1mFsIMWbZLakmYyMFEFPe2BTDE4G22G2e+oKBHnqNsm99A0LgllPbc + Z+EJFXo20SA2A9VjE3sqNCRlDTE7PmhthcybtNFVEkogRJsBBaBlOs6fGuBFFWmxf7Ai + BL33BHdYAwBa852QtqbVjK9xY2VP3rI3E8zjryv9MC2A7t6iH5QnkWTF0Cby05PMzCvR + lYJuosyRDMGCCmHvM7eXNJY23NggmSVtSznn0oJRQujLKlZnqBvoWArbkDHxbU44HGjS + KOAexm3L97IZZRJfQtVpkq7FlwlGoY6s3p2dvKZ9ckrRnNqsmM/VVN3KPTc1boyTqCSl + vCLrUii8XAYEzdpSMuliLLxPfeXHZl1GwPA5sMhbYHn0nK24BWePyD0dQWRZmTF2Ga7w + M0nXxEm3OvvLjcyzmofi8WEZ897ISM2fQM2C8r0QV7vTwZ9tTYDn24emRRlTbpYXr2y4 + zbZDrPuvq7ZU1bbkOGfrmAI5611ZwTcQ2BgDmtlFZWuq2jNKTtKNNDtDSe/YNb/IVZ+C + e33upMxeYjjBZH7klooBmzRL5uuoZhyQASfyBWDGzU8sz93AGS4Jx3mHIAAPY3ZHnn6N + 4Jv332WMzrblJ7gTDryP+237tgpv0dIzEzuohKc5o2LguoU649EXMKFULKz6vClMDmiM + mhKY25lRkuUza6lKWIz3yM7G6wlN+8SzVExc1AXmhxO6zcQaRl75JdjWQIKF7x0bg6rg + BaS97HaFs97q/4Ughx7OrO64kyW5EVxDUKT3MhEUiCd4IFTc13dWJhf9hrUIoTfaesSx + jPbSXbO+KgeZZfCT1ZxsZgmsLuyCD+oP6Ue2FujnrxZCgbr6xqFklef5JDhRxRfZCT9s + H33TWLtRr0KmjYFZtg/IaX8yBFZqtyOXRDj2FhNqcohqCZsWAUZ8MNfCQQ/+XP98V2/E + IsZ0/Q/VAIH4/K/TAQ/MVmIyeeQMefAcJRAgKyQMeil8IOnOdQNi+eJQgKCPA+nizgNW + /AIOdQ5wJKem8WlmENBYgm8gIy3kYqeeM+M+f6urAlAmQM7CwOj4AAVadQIyuQ/kMa10 + 0q7K+/ABCOIIfuZU5mjy2umMGufus6CVCqVmOeOfCvCxCw2YH8WdC/DBDCWdB0OrDIAE + QMXMJKvm7UIMgKZ87+IY+QN1BIKa9wIfC3C4IFC1DyH+3oK2VnEANKY4Y4Wcf6dCMUQ4 + s+ZgLePi8wNy9+mKVm9MIVDkRivqdaZgcoXimwJIoWnsNuLey0OSzfB68YIUZkZggiII + VmXiVaWuLe44/+7GShACTMbATwuQWE72YmXibAcQnJDYljFmj2UClrC6OfDGJQJeZgbE + ZguRChGE6DCUNaNiXiWuZgY4f6O6MkdecAeeJKY4M+NiQ4yIHQMlFi6jD6QI+oKzGiIA + AIFA4JBYNAmvCRTC4PDYdD4hEWtE3lFX/F33GY0AY4+Y8FZBF3/CWvIAq/pQ85UFpYD5 + c55hKH9LgeFJsK5xEXpO3xPY8+QLQXrQ6CBX5R6KBKU+qZR34Gag7akA6o8asGqwDa1E + ZFEYjJIWKa9Y7JZJU8wPaQNa4M97cCbhbnvcATBp/aQPO3oDL5ZYg3MBerPA5+5sMF8Q + 78UH8Y8MdNKgGZg56djnhawMSM1XIvfoPYIZntFok5pQ3p60DZ6+IHhnMN9hk6TSn7ta + G9bCz91tX6J983+AEeE1OIV+MDuRnrldIHy7hbbfcbdRd5MuZEK7o4HoLF2u9XnX4aUB + KY+plinfVAGHvY2fcLvh4XXRfQIfs7PxRbpq5F5cQC6yJI9xshlAppwO27UvkzAQQa9S + rHiuT0JsCglQssjsu87jvw4ryRMs1a+AY1MOxKg0IJkvDJoqeURAVF8YPLER7RokSNo4 + rANQwzrRpkWsfiXIIBSHE0ioEbEkOQBwMSZIYBSNKCHsElUlAXK0oobDLPRYNMuk1L8r + AXLDvHdMrJpwFcxzUgS9HTNy8P+os1oPLSGyQbCRLlJzbpo9SBo4AIUUFOaHKkdrLBHR + NCRKjU3HSn8mAxMNFofOrPoUhZj00cNOPKEtPhzULt0w7tKIPAbMPYDz1TvS0x0BQQUJ + FQ0yndCgJVxUyx1cgqSLpHLMJFQDePVDddIcdVkstHJx2asNKOIalcAk28YP+8djx2f6 + ImrbtogncEIIGs9wAmJtzomawVXXbKIMKw1DBpeSHPKcl7TCp1rqUiJS36Wl/klgKTXa + 0VeIIbeERFCjx0AgaNPwdi9U+EuCLIZGLhxjKHMnhBtvVQAX5DSaIGhktYgRlGKtHgyB + pFiD0NTCj5L1ady4blSv1JSljZxgseLKmVavRabhAjJ2er9nk56VpFtabptW5/OdYUHp + 6y5Zq2s61pCAgAAADgEAAAMAAAABAEsAAAEBAAMAAAABAGkAAAECAAMAAAADAAAOEgED + AAMAAAABAAUAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMA + AAABAAMAAAEWAAMAAAABAkYAAAEXAAQAAAABAAANWwEcAAMAAAABAAEAAAE9AAMAAAAB + AAIAAAFTAAMAAAADAAAOGIdzAAcAAAM4AAAOHgAAAAAACAAIAAgAAQABAAEAAAM4YXBw + bAIAAABtbnRyUkdCIFhZWiAH2QAHABUACwAzADthY3NwQVBQTAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwHD7vjfSi+Eqp7NFewY17iAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1yWFlaAAABIAAAABRnWFlaAAABNAAAABRiWFla + AAABSAAAABR3dHB0AAABXAAAABRjaGFkAAABcAAAACxyVFJDAAABnAAAAA5nVFJDAAAB + rAAAAA5iVFJDAAABvAAAAA52Y2d0AAABzAAAADBuZGluAAAB/AAAADhkZXNjAAACNAAA + AJxjcHJ0AAAC0AAAAEBtbW9kAAADEAAAAChYWVogAAAAAAAAmFMAAEs2AAAB91hZWiAA + AAAAAAA4igAAoNEAABPEWFlaIAAAAAAAACX5AAAUFgAAvWlYWVogAAAAAAAA8xYAAQAA + AAEWynNmMzIAAAAAAAEMcgAABfj///MdAAAHugAA/XL///ud///9pAAAA9kAAMBxY3Vy + dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAA + AAAAAAABAADswwAAAAAAAQAAAADswwAAAAAAAQAAAADswwAAAAAAAQAAbmRpbgAAAAAA + AAAwAACowAAAU8AAADfAAACugAAAJdcAABKbAABQAAAAVEAAAfI+AAHyPgAB8j5kZXNj + AAAAAAAAABZTeW5jTWFzdGVyIENhbGlicmF0ZWQAAAAAAAAAABYAUwB5AG4AYwBNAGEA + cwB0AGUAcgAgAEMAYQBsAGkAYgByAGEAdABlAGQAAAAAFlN5bmNNYXN0ZXIgQ2FsaWJy + YXRlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0 + ZXh0AAAAAENvcHlyaWdodCBBcHBsZSBJbmMuLCAyMDA5AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAbW1vZAAAAAAAAEwtAAADbEtJMjbF5zuAAAAAAAAAAAAAAAAAAAAA + AA== + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + + name + Canvas 1 + + + Frame + {{28, 221}, {693, 937}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{0, 0}, {558, 783}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + saveQuickLookFiles + YES + + Added: z3/deliverance/sandboxes/paul/xdv/docs/compiler.pdf ============================================================================== Binary file. No diff available. From ldr at codespeak.net Thu Oct 15 01:18:52 2009 From: ldr at codespeak.net (ldr at codespeak.net) Date: Thu, 15 Oct 2009 01:18:52 +0200 (CEST) Subject: [z3-checkins] r68475 - z3/deliverance/sandboxes/paul/xdv/tests/011 Message-ID: <20091014231852.210C9168013@codespeak.net> Author: ldr Date: Thu Oct 15 01:18:51 2009 New Revision: 68475 Modified: z3/deliverance/sandboxes/paul/xdv/tests/011/content.html Log: unimportant typo Modified: z3/deliverance/sandboxes/paul/xdv/tests/011/content.html ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/011/content.html (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/011/content.html Thu Oct 15 01:18:51 2009 @@ -4,6 +4,6 @@ Page without portlets -

content

+

content

From ldr at codespeak.net Thu Oct 15 20:29:00 2009 From: ldr at codespeak.net (ldr at codespeak.net) Date: Thu, 15 Oct 2009 20:29:00 +0200 (CEST) Subject: [z3-checkins] r68510 - in z3/deliverance/sandboxes/paul/xdv: . tests tests/013 Message-ID: <20091015182900.C2766168014@codespeak.net> Author: ldr Date: Thu Oct 15 20:29:00 2009 New Revision: 68510 Added: z3/deliverance/sandboxes/paul/xdv/tests/013/ z3/deliverance/sandboxes/paul/xdv/tests/013/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/013/content.html z3/deliverance/sandboxes/paul/xdv/tests/013/extra.html z3/deliverance/sandboxes/paul/xdv/tests/013/output.html z3/deliverance/sandboxes/paul/xdv/tests/013/output.html.old z3/deliverance/sandboxes/paul/xdv/tests/013/rules.xml z3/deliverance/sandboxes/paul/xdv/tests/013/theme.html z3/deliverance/sandboxes/paul/xdv/tests/013/xpaths.txt Modified: z3/deliverance/sandboxes/paul/xdv/compiler.xsl z3/deliverance/sandboxes/paul/xdv/tests/test_nodes.py Log: including external documents with the href attribute Modified: z3/deliverance/sandboxes/paul/xdv/compiler.xsl ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/compiler.xsl (original) +++ z3/deliverance/sandboxes/paul/xdv/compiler.xsl Thu Oct 15 20:29:00 2009 @@ -186,7 +186,8 @@ - + document('') @@ -270,7 +271,8 @@ - + document('') @@ -286,11 +288,13 @@ - + document('') - + document('') @@ -331,7 +335,8 @@ - + document('') @@ -342,15 +347,16 @@
- + - + - + document('') @@ -361,11 +367,13 @@ - + document('') - + document('') @@ -387,7 +395,8 @@ - + document('') @@ -417,7 +426,8 @@ - + document('') Added: z3/deliverance/sandboxes/paul/xdv/tests/013/compiled.xsl ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/013/compiled.xsl Thu Oct 15 20:29:00 2009 @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + External includes +
Marker
+
Marker
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/013/content.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/013/content.html Thu Oct 15 20:29:00 2009 @@ -0,0 +1,11 @@ + + + + Replace and after + + +

Smaller Title

+

content

+ + + Added: z3/deliverance/sandboxes/paul/xdv/tests/013/extra.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/013/extra.html Thu Oct 15 20:29:00 2009 @@ -0,0 +1,22 @@ + + +
+ ONE +
+
+ TWO +
+
+ THREE +
+
+ FOUR +
+
+ FIVE +
+
+ SIX +
+ + \ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/013/output.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/013/output.html Thu Oct 15 20:29:00 2009 @@ -0,0 +1,14 @@ + +External includes
+ ONE +
+ TWO +
+ THREE +
+ FOUR +
+ FIVE +
+ SIX +

Smaller Title

content

\ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/013/output.html.old ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/013/output.html.old Thu Oct 15 20:29:00 2009 @@ -0,0 +1,2 @@ + +External includes
ONE
TWO
THREE
FOUR
FIVE
SIX

Smaller Title

content

\ No newline at end of file Added: z3/deliverance/sandboxes/paul/xdv/tests/013/rules.xml ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/013/rules.xml Thu Oct 15 20:29:00 2009 @@ -0,0 +1,11 @@ + + + + + + + + + + + Added: z3/deliverance/sandboxes/paul/xdv/tests/013/theme.html ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/013/theme.html Thu Oct 15 20:29:00 2009 @@ -0,0 +1,10 @@ + + + + External includes + + +
Marker
+
Marker
+ + Added: z3/deliverance/sandboxes/paul/xdv/tests/013/xpaths.txt ============================================================================== --- (empty file) +++ z3/deliverance/sandboxes/paul/xdv/tests/013/xpaths.txt Thu Oct 15 20:29:00 2009 @@ -0,0 +1,13 @@ +# +# External includes. Using @href to specify what to include +# content is empty. This time there are no portlets. +# +/html/body/div[@id='external1'] +/html/body/div[@id='external2'] +/html/body/div[@id='external3'] +/html/body/div[@id='marker2']/div[@id='external4'] +/html/body/div[@id='marker2']/div[@id='external5'] +/html/body/div[@id='marker2']/div[@id='external6'] + +# from the content +/html/body/h2 Modified: z3/deliverance/sandboxes/paul/xdv/tests/test_nodes.py ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/test_nodes.py (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/test_nodes.py Thu Oct 15 20:29:00 2009 @@ -16,7 +16,8 @@ _HERE = os.path.abspath(os.path.dirname(__file__)) class XDV: - + access_control = etree.XSLTAccessControl(read_file=True) + def __init__(self, testdir, debug=False, writefiles=False): self.errors = StringIO() themefn = os.path.join(testdir, "theme.html") @@ -42,7 +43,7 @@ # Serialize / parse the theme - this can catch problems with escaping. cts = etree.tostring(ct) - ct = etree.fromstring(cts) + ct = etree.fromstring(cts, base_url=contentfn) # XXX why does it take this as the base # Compare to previous version if os.path.exists(xslfn): @@ -65,7 +66,7 @@ print >>self.errors, msg # Apply the compiled version, then test against desired output - processor = etree.XSLT(ct) + processor = etree.XSLT(ct, access_control=self.access_control) result = processor(contentdoc) # Read the whole thing to strip off xhtml namespace. # If we had xslt 2.0 then we could use xpath-default-namespace. From optilude at codespeak.net Thu Oct 22 18:06:30 2009 From: optilude at codespeak.net (optilude at codespeak.net) Date: Thu, 22 Oct 2009 18:06:30 +0200 (CEST) Subject: [z3-checkins] r68713 - z3/deliverance/trunk/deliverance Message-ID: <20091022160630.2363416800D@codespeak.net> Author: optilude Date: Thu Oct 22 18:06:29 2009 New Revision: 68713 Modified: z3/deliverance/trunk/deliverance/middleware.py Log: Attempt to handle 301, 302 and 304 responses more gracefully Modified: z3/deliverance/trunk/deliverance/middleware.py ============================================================================== --- z3/deliverance/trunk/deliverance/middleware.py (original) +++ z3/deliverance/trunk/deliverance/middleware.py Thu Oct 22 18:06:29 2009 @@ -83,6 +83,13 @@ if resp.content_type != 'text/html': ## FIXME: remove from known_html? return resp(environ, start_response) + + # XXX: Not clear why such responses would have a content type, but + # they sometimes do (from Zope/Plone, at least) and that then breaks + # when trying to apply a theme. + if resp.status_int in (301, 302, 304): + return resp(environ, start_response) + if clientside and req.url not in self.known_html: log.debug(self, '%s would have been a clientside check; in future will be since we know it is HTML' % req.url) From ldr at codespeak.net Tue Oct 27 09:18:46 2009 From: ldr at codespeak.net (ldr at codespeak.net) Date: Tue, 27 Oct 2009 09:18:46 +0100 (CET) Subject: [z3-checkins] r68775 - z3/deliverance/sandboxes/paul/xdv Message-ID: <20091027081846.C65DC168014@codespeak.net> Author: ldr Date: Tue Oct 27 09:18:44 2009 New Revision: 68775 Modified: z3/deliverance/sandboxes/paul/xdv/boilerplate.xsl Log: exclude xhtml from the output namespace Modified: z3/deliverance/sandboxes/paul/xdv/boilerplate.xsl ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/boilerplate.xsl (original) +++ z3/deliverance/sandboxes/paul/xdv/boilerplate.xsl Tue Oct 27 09:18:44 2009 @@ -4,7 +4,7 @@ xmlns:dv="http://openplans.org/deliverance" xmlns:exsl="http://exslt.org/common" xmlns:xhtml="http://www.w3.org/1999/xhtml" - exclude-result-prefixes="exsl dv" > + exclude-result-prefixes="exsl dv xhtml" > Author: ldr Date: Tue Oct 27 10:12:08 2009 New Revision: 68777 Modified: z3/deliverance/sandboxes/paul/xdv/tests/001/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/002/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/003/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/004/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/005/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/006/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/007/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/008/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/008/output.html z3/deliverance/sandboxes/paul/xdv/tests/009/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/009/output.html z3/deliverance/sandboxes/paul/xdv/tests/010/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/011/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/012/compiled.xsl z3/deliverance/sandboxes/paul/xdv/tests/013/compiled.xsl Log: update test files with changed boilerplate Modified: z3/deliverance/sandboxes/paul/xdv/tests/001/compiled.xsl ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/001/compiled.xsl (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/001/compiled.xsl Tue Oct 27 10:12:08 2009 @@ -1,4 +1,4 @@ - + Modified: z3/deliverance/sandboxes/paul/xdv/tests/002/compiled.xsl ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/002/compiled.xsl (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/002/compiled.xsl Tue Oct 27 10:12:08 2009 @@ -1,4 +1,4 @@ - + Modified: z3/deliverance/sandboxes/paul/xdv/tests/003/compiled.xsl ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/003/compiled.xsl (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/003/compiled.xsl Tue Oct 27 10:12:08 2009 @@ -1,4 +1,4 @@ - + Modified: z3/deliverance/sandboxes/paul/xdv/tests/004/compiled.xsl ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/004/compiled.xsl (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/004/compiled.xsl Tue Oct 27 10:12:08 2009 @@ -1,4 +1,4 @@ - + Modified: z3/deliverance/sandboxes/paul/xdv/tests/005/compiled.xsl ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/005/compiled.xsl (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/005/compiled.xsl Tue Oct 27 10:12:08 2009 @@ -1,4 +1,4 @@ - + Modified: z3/deliverance/sandboxes/paul/xdv/tests/006/compiled.xsl ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/006/compiled.xsl (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/006/compiled.xsl Tue Oct 27 10:12:08 2009 @@ -1,4 +1,4 @@ - + Modified: z3/deliverance/sandboxes/paul/xdv/tests/007/compiled.xsl ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/007/compiled.xsl (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/007/compiled.xsl Tue Oct 27 10:12:08 2009 @@ -1,4 +1,4 @@ - + Modified: z3/deliverance/sandboxes/paul/xdv/tests/008/compiled.xsl ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/008/compiled.xsl (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/008/compiled.xsl Tue Oct 27 10:12:08 2009 @@ -1,4 +1,4 @@ - + Modified: z3/deliverance/sandboxes/paul/xdv/tests/008/output.html ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/008/output.html (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/008/output.html Tue Oct 27 10:12:08 2009 @@ -1,5 +1,5 @@ -A Deeper Look At xdv
+A Deeper Look At xdv

boo bar baz

Modified: z3/deliverance/sandboxes/paul/xdv/tests/009/compiled.xsl ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/009/compiled.xsl (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/009/compiled.xsl Tue Oct 27 10:12:08 2009 @@ -1,4 +1,4 @@ - + Modified: z3/deliverance/sandboxes/paul/xdv/tests/009/output.html ============================================================================== --- z3/deliverance/sandboxes/paul/xdv/tests/009/output.html (original) +++ z3/deliverance/sandboxes/paul/xdv/tests/009/output.html Tue Oct 27 10:12:08 2009 @@ -1,5 +1,5 @@ -Theme Title + + + +
+ +
 
+
+
+ +
+
+

Welcome to Deliverance!

+ +

+ Perhaps you would like to try one of the fine links above? +

+
+ + + + + From ejucovy at codespeak.net Mon Nov 30 20:51:08 2009 From: ejucovy at codespeak.net (ejucovy at codespeak.net) Date: Mon, 30 Nov 2009 20:51:08 +0100 (CET) Subject: [z3-checkins] r69781 - in z3/deliverance: . demosite Message-ID: <20091130195108.0EED716803A@codespeak.net> Author: ejucovy Date: Mon Nov 30 20:51:08 2009 New Revision: 69781 Added: z3/deliverance/demosite/ z3/deliverance/demosite/deliverance.xml (props changed) - copied unchanged from r69780, z3/deliverance/deliverance.xml z3/deliverance/demosite/links.html (props changed) - copied unchanged from r69780, z3/deliverance/links.html z3/deliverance/demosite/style.css (props changed) - copied unchanged from r69780, z3/deliverance/style.css z3/deliverance/demosite/theme.html (props changed) - copied unchanged from r69780, z3/deliverance/theme.html Removed: z3/deliverance/deliverance.xml z3/deliverance/links.html z3/deliverance/style.css z3/deliverance/theme.html Log: whoops.. moving demosite import to a subdirectory. Deleted: /z3/deliverance/deliverance.xml ============================================================================== --- /z3/deliverance/deliverance.xml Mon Nov 30 20:51:08 2009 +++ (empty file) @@ -1,95 +0,0 @@ - - - - localhost:8000 - false - - 127.0.0.1 - - deliv-users.htpasswd - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Deleted: /z3/deliverance/links.html ============================================================================== --- /z3/deliverance/links.html Mon Nov 30 20:51:08 2009 +++ (empty file) @@ -1,3 +0,0 @@ -Deliverance -xdv -Banjo Deleted: /z3/deliverance/style.css ============================================================================== --- /z3/deliverance/style.css Mon Nov 30 20:51:08 2009 +++ (empty file) @@ -1,108 +0,0 @@ -body { - font-family: Verdana,Arial,'Bitstream Vera Sans',Helvetica,sans-serif; - font-size: 13px; - margin: 0; - padding: 0; - background-color: lightblue; -} - -div#deli-footer { - clear: both; - display: block; - text-align: center; - background-color: #C96369; - font-size: 2em; - float: right; - width: 70%; -} -div#deli-footer a { - color: white; -} - -div#deli-globalnav { - padding-top: 1em; - background-color: #C96309; - text-align: center; -} - -div#deli-globalnav li { - list-style-type: none; - display: inline; -} - -div#deli-globalnav li a { - background-color: #EB852B; - border-color: #B36521; - border-style: solid; - border-width: 1px 2px 2px 1px; - color: white; - font-size: 1.5em; - font-weight: bold; - margin: 0; - padding: 0.25em; - text-decoration: none; -} - -div#deli-globalnav li a.selected { - background-color: #C96369; - padding-bottom: 0.75em; - border-bottom: none; -} - -div#deli-colorbanner { - background-color: #C96369; - width: 100%; -} - -div#deli-globalnav div#deli-colorbanner a { - color: white; - padding-left: 0.5em; - padding-right: 0.5em; - text-transform: uppercase; -} - -div#deli-globalnav div#deli-colorbanner a:hover, -div#deli-footer a:hover { - background-color: lightblue; - color: black; -} - -div#deli-sitenav { - width: 30%; - float: left; - line-height: 1.5em; - text-transform: uppercase; - text-decoration: none; - font-weight: bold; - font-size: 0.75em; -} - - -div#deli-sitenav a { - background-color: #C96369; - border: none; - padding: 0.25em; - color: white; - display: block; -} - -div#deli-content { - width: 70%; - float: right; - background-color: white; -} - -h1, h2 { - background-color:#F2F2F2; - border-bottom:1px solid #CCCCCC; - color:#000000; - font-family:'Trebuchet MS',sans-serif; - font-weight:normal; - font-size: 200%; - margin:0; - padding:3px 0 3px 10px; -} - -#oc-content-main { - width: 100%; -} \ No newline at end of file Deleted: /z3/deliverance/theme.html ============================================================================== --- /z3/deliverance/theme.html Mon Nov 30 20:51:08 2009 +++ (empty file) @@ -1,44 +0,0 @@ - - - - - - - -
- -
 
-
-
- -
-
-

Welcome to Deliverance!

- -

- Perhaps you would like to try one of the fine links above? -

-
- - - - - From wiggy at codespeak.net Sat Dec 5 12:23:56 2009 From: wiggy at codespeak.net (wiggy at codespeak.net) Date: Sat, 5 Dec 2009 12:23:56 +0100 (CET) Subject: [z3-checkins] r69910 - in z3/deliverance/trunk: deliverance deliverance/tests docs Message-ID: <20091205112356.ACFFE168011@codespeak.net> Author: wiggy Date: Sat Dec 5 12:23:55 2009 New Revision: 69910 Modified: z3/deliverance/trunk/deliverance/ruleset.py z3/deliverance/trunk/deliverance/tests/test_middleware.txt z3/deliverance/trunk/docs/news.txt Log: Correctly handle in-document links in the theme. fixes #19 Modified: z3/deliverance/trunk/deliverance/ruleset.py ============================================================================== --- z3/deliverance/trunk/deliverance/ruleset.py (original) +++ z3/deliverance/trunk/deliverance/ruleset.py Sat Dec 5 12:23:55 2009 @@ -8,6 +8,7 @@ from deliverance.pagematch import run_matches, Match, ClientsideMatch from deliverance.rules import Rule, remove_content_attribs from deliverance.themeref import Theme +from urlparse import urljoin class RuleSet(object): """ @@ -108,9 +109,18 @@ raise AbortTheme( "The resource %s returned an error: %s" % (url, resp.status)) doc = self.parse_document(resp.body, url) - doc.make_links_absolute() + self.make_links_absolute(doc) return doc + def make_links_absolute(self, doc): + base_url = doc.base_url + def link_repl_preserve_internal(href): + if href[0] == '#': + return href + else: + return urljoin(base_url, href) + doc.rewrite_links(link_repl_preserve_internal) + def parse_document(self, s, url): """ Parses the given document as an HTML document. Modified: z3/deliverance/trunk/deliverance/tests/test_middleware.txt ============================================================================== --- z3/deliverance/trunk/deliverance/tests/test_middleware.txt (original) +++ z3/deliverance/trunk/deliverance/tests/test_middleware.txt Sat Dec 5 12:23:55 2009 @@ -24,9 +24,11 @@ ...
...
...
+ ... ...
... This content will be replaced. ...
+ ... Back to top ...
... ...
+
the blog post with some style
+ Back to top