Revision: 565
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=565&view=rev
Author: eht16
Date: 2009-03-29 16:40:05 +0000 (Sun, 29 Mar 2009)
Log Message:
-----------
Don't use menu item images for the tab bar menu to save some vertical space.
Modified Paths:
--------------
trunk/addons/src/ao_doclist.c
Modified: trunk/addons/src/ao_doclist.c
===================================================================
--- trunk/addons/src/ao_doclist.c 2009-03-27 23:33:37 UTC (rev 564)
+++ trunk/addons/src/ao_doclist.c 2009-03-29 16:40:05 UTC (rev 565)
@@ -191,7 +191,7 @@
continue;
base_name = g_path_get_basename(doc->file_name);
- menu_item = ao_image_menu_item_new(GTK_STOCK_FILE, base_name);
+ menu_item = gtk_menu_item_new_with_label(base_name);
gtk_widget_show(menu_item);
gtk_container_add(GTK_CONTAINER(menu), menu_item);
g_signal_connect(menu_item, "activate", G_CALLBACK(ao_doclist_menu_item_activate_cd), doc);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 562
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=562&view=rev
Author: frlan
Date: 2009-03-27 22:54:49 +0000 (Fri, 27 Mar 2009)
Log Message:
-----------
GeanyLaTeX: Started to write documentation in LaTeX
Modified Paths:
--------------
trunk/geanylatex/ChangeLog
Added Paths:
-----------
trunk/geanylatex/doc/
trunk/geanylatex/doc/geanylatex.tex
trunk/geanylatex/doc/img/
trunk/geanylatex/doc/img/latexwizard.png
Modified: trunk/geanylatex/ChangeLog
===================================================================
--- trunk/geanylatex/ChangeLog 2009-03-26 20:59:03 UTC (rev 561)
+++ trunk/geanylatex/ChangeLog 2009-03-27 22:54:49 UTC (rev 562)
@@ -1,3 +1,8 @@
+2009-03-27 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
+
+ * doc/geanylatex.tex: Added documentation written in LaTeX.
+
+
2009-03-20 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
* Replace \u-UTF-8 letters by octal coded chars. Huge thanks to
Added: trunk/geanylatex/doc/geanylatex.tex
===================================================================
--- trunk/geanylatex/doc/geanylatex.tex (rev 0)
+++ trunk/geanylatex/doc/geanylatex.tex 2009-03-27 22:54:49 UTC (rev 562)
@@ -0,0 +1,266 @@
+\documentclass[/%
+a4paper,%
+10pt,%
+oneside,%
+DIV18,
+headsepline, % Trennungslinie fuer Kopfzeile
+plainheadsepline,
+footsepline, % Trennungslinie fuer Fußzeile
+plainfootsepline,
+%appendixprefix,
+%automark,%
+bibtotoc,%
+liststotoc,%
+BCOR12mm,%
+halfparskip,%
+openany,%
+]{scrartcl}
+\usepackage[utf8]{inputenc}
+\title{Geany\LaTeX -- A \LaTeX plugin for Geany \\[1.5ex] \normalsize Version 0.4}
+\author{Frank Lanitz \\ \small{frank(a)frank.uvena.de}}
+\date{\today}
+\usepackage[english]{babel}
+\usepackage{listings,color}
+\usepackage{courier}
+\usepackage{tikz}
+\lstset{basicstyle=\ttfamily\scriptsize}
+\lstset{showspaces=false}
+\lstset{showtabs=false}
+\lstset{showstringspaces=false}
+\lstset{keywordstyle=\bfseries}
+\lstset{tabsize=4}
+\lstset{frameround=ffff}
+\lstset{extendedchars=true}
+\lstset{stringstyle=\ttfamily}
+\lstset{commentstyle=\ttfamily}
+\lstset{backgroundcolor=\color[rgb]{0.92,0.92,0.92}}
+%\lstset{numbers=left, numberstyle=\tiny, stepnumber=1, numbersep=5pt}
+\lstset{captionpos=b}
+\lstset{frame=single}
+
+\begin{document}
+\maketitle
+
+\tableofcontents
+\newpage
+
+\section{About the plugin}
+
+Geany\LaTeX\ is a little plugin to improve support of LaTeX at Geany. It
+implements a couple of maybe useful functions:
+\begin{itemize}
+ \item Wizard to create new LaTeX documents in a fast and easy way
+ with a bunch of templates available
+ \item A front end for add labels \textbackslash label{} and refs
+ \textbackslash ref{} and \textbackslash pageref{}
+ with getting suggestion from aux file of document
+ \item Inserting special characters through menu
+ \item Help entering the right field for bibTeX entries by
+ providing templates
+ \item Easy inserting formatings like \textbackslash texttt{}
+ through menu
+ \item Support on inserting environments
+ \item Shortcuts for insertings \textbackslash item and
+ \textbackslash newline
+\end{itemize}
+
+
+\section{Requirements}
+
+For compiling the plugin yourself, you will need the GTK (>= 2.6.0)
+libraries and header files. You will also need its dependency
+libraries and header files, such as Pango, Glib and ATK. All these
+files are available at http://www.gtk.org.
+
+And obviously, you will need have Geany installed. If you have Geany
+installed from the sources, you should be ready to go. If you used a
+prepared package e.g. from your distribution you probably need to
+install an additional package, this might be called geany-dev or
+geany-devel. Please note that in order to compile and use this plugin,
+you need Geany 0.16 or later (Geany Plugin API v130 or higher).
+
+Furthermore you need, of course, a C compiler and the Make tool. The
+GNU versions of these tools are recommended. Also there should be a
+working \LaTeX-environment on your System.
+
+
+\section{Installation}
+Compiling and installing the code is done by the following three
+commands:
+
+\begin{figure}[h!]
+\begin{lstlisting}
+$ ./configure
+$ make
+$ make install %$
+\end{lstlisting}
+\end{figure}
+
+For more configuration details run \texttt{./configure --help}
+
+If there are any errors during compilation, check your build environment
+and try to find the error, otherwise contact one of the authors\footnote{Contact data can be found at chapter \ref{contact} page \pageref{contact}.}
+
+\section{Usage}
+
+After installed successfully the plugin can be laoded through
+Geany's plugin manager and a new sub menu in the Tools menu
+will appear. Inside the sub menu you will find entries for
+functions supported by this version of the plugin.
+
+
+\section{Features}
+
+Go into more detail on some features.
+
+\subsection{\LaTeX-Wizard}
+
+The \LaTeX-Wizard is implementing a easy way creating a number of
+default documents.
+\begin{figure}[h!]
+ \centering{\includegraphics[height=7cm]{img/latexwizard.png}}
+ \caption{\LaTeX-Wizard of version 0.3}
+\end{figure}
+
+Document types that are currently supported by the wizard are:
+\begin{itemize}
+ \item book
+ \item report
+ \item article
+ \item letter
+ \item presentation (\LaTeX\ beamer)
+\end{itemize}
+
+This can be set by choosing the needed entry form
+\textbf{Documentclass} pulldown menu.
+
+\textbf{Encoding} is configuring the tha packages \texttt{inputenc} to
+for example \texttt{\textbackslash usepackage[utf8]\{inputenc\}} in
+case of the document encoding should be UTF-8. Also it sets the
+encoding Geany is using for the newly created document.
+
+\textbf{Fontsize} as well as \textbf{Papersize} will set class option
+for font/papersize of the new created document.
+
+\textbf{Author}, \textbf{Date}, \textbf{Title} will be also passed to
+the corresponding command inside the file header.
+
+Option \textbf{Use draft mode} will add \texttt{draft} to list of
+document options which allows some help during debugging of document.
+
+Since KOMA script is quiet popular the option \textbf{Use KOMA script
+if possible} allows to activate the usage of KOMA script. If this
+options is activated instead of \texttt{book}, \texttt{scrbook} will
+be used as document class.
+
+The dialog can also be called by a shortcut. Please have a look onto
+section \ref{kb_latex_wizard}, page \pageref{kb_latex_wizard}.
+
+
+\section{Configuration}
+
+No general configuration is needed to use the plugin. Nevertheless if
+you want improve and make usage of all feature, you can define some
+key bindings using Geany's key binding interface from inside the
+preferences dialog.
+
+\subsection{Keybindings}
+
+\subsubsection*{Run LaTeX-Wizard}
+\label{kb_latex_wizard}
+Starts the LaTeX-Wizard for creating a new document.
+
+\subsubsection*{Insert \textbackslash label}
+Runs the dialog for inserting a new label into your document.
+
+\subsubsection*{Insert \textbackslash ref}
+Starts an dialog for easy inserting \texttt{\textbackslash ref} and
+\texttt{\textbackslash pageref} into your document. The dioalog is
+supporting easy parsing of aux files so it can suggest a couple of
+already set labels.
+
+\subsubsection*{Insert linebreak \textbackslash \textbackslash}
+Inserts a a newline \textbackslash\textbackslash\ into the document.
+
+\subsubsection*{Turn input replacement on/off}
+A shortcut for turning input replacement on or off. When inpurt
+replacement is activated special characters like \v{e} are
+replaced by there \TeX\ substitute like \texttt{\textbackslash
+v\{e\}}.
+
+\subsubsection*{Replacement of special characters}
+A selected text will be parsed and all known special characters will be
+replaced by their \TeX substitute. This can be very useful on
+importing a large amount of text into your document including
+characters like "o or \frqq.
+
+\subsubsection*{Run insert environment dialog}
+Runs a dialog for easy inserting an environment. If there is some text
+selected, the environment will be placed around
+\begin{figure}[h!]
+\begin{lstlisting}
+\begin{your_environment}
+ % ... selected text ...
+\end{your_environment}
+\end{lstlisting}
+\end{figure}
+
+In case of an empty (= no selection) an empty environment with
+\begin{figure}[h!]
+\begin{lstlisting}
+\begin{your_environment}
+...
+\end{your_environment}
+\end{lstlisting}
+\end{figure}
+empty body will inserted to the document and the curosr placed inside.
+
+\subsubsection*{Insert \textbackslash item}
+This shortcut will add an simple \textbackslash item to the document.
+This can be very useful during writing of lists with a huge number of
+items.
+
+
+\section{Development}
+
+You can checkout the current source code from the Subversion repository at
+Sourceforge.net. Get the code from:
+
+svn checkout
+http://geany-plugins.svn.sourceforge.net/svnroot/geany-plugins/trunk/geanylatex
+
+If you want to create a patch, please respect the license of Geany\LaTeX
+as well as intellectual property of third. Patches that should be
+included to the default distribution must be licensed under the same
+conditions as Geany\LaTeX by the copyright owner.
+
+
+\section{Known issues}
+
+At time of the the documentation was created no issue were known.
+Since this is only a snapshot, you will find more recent information
+for all reported issues bug tracking system of SF at \\
+http://sourceforge.net/tracker/?group\_id=222729
+
+
+\section{License}
+
+
+Geany\LaTeX and all its parts is distributed 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. A copy of this license can be found in the file COPYING
+included with the source code of this program. If not, you will be
+able to get a copy by contacting the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+\section{Bugs, questions, bugs, homepage}
+\label{contact}
+If you found any bugs or want to provide a patch, please contact Frank
+Lanitz (frank(at)geany(dot)org). Please also do so, if you got any
+questions and visiting http://frank.uvena.de/en/Geany/geanylatex/
+didn't help you to figure out the answer. Visiting the website is also
+a good start if you want to check for any update on this plugin.
+
+\end{document}
Added: trunk/geanylatex/doc/img/latexwizard.png
===================================================================
--- trunk/geanylatex/doc/img/latexwizard.png (rev 0)
+++ trunk/geanylatex/doc/img/latexwizard.png 2009-03-27 22:54:49 UTC (rev 562)
@@ -0,0 +1,177 @@
+\x89PNG
+
+
+IHDR J \x85 \xF5-3 sBIT\xDB\xE1O\xE0 IDATx\x9C\xEC\x9DwX\xC9\xC7'!:$@@lxz"l(xx\xA2\xA0 "v=\x9E\xBB"\x8A b\xA5\x88\xBB`\x97\xB3\xFC,\xA8\xE8!\xD88\xFB\x89z\xA2\xA2gA\x9A\x94$\xD9\xEC\xEF\x8F\xF5\xF6rI!!\xF1\xFD<\xFB\xE4\x99}wޙww\xF6\x9B\x99\xDDlv(\xBBv\xEE=z4\x8Ep
+\xA2ܺ} \xA0ʌ?\x9ELS}[\xF2\x89\x9B\xFF6\x87\xC1`8\xD8;(1, \xBE\x9D\xFB\xEEs8\x9CQ\xA3F!\x84(ϳ\x9F\xBFx\xF9\xA2U\xABV]:wQv` 4ϲ\x9F\xE5\xE5\xE5\x8D5\x8AVU]\xA5\xA7\xA7g\xD3\xC9F(*;* \x9BN6!D9w\xB3\x8B\xB2\xE3 \xA0\x91\xB9v\xFD\x8D\xCF\xE7\xD7\xD9o\x97*\xCF\xFB\x90\x87\xE3x\xABV\xADF\xBD\xEA\xF8_ h\x9E(K\xF5\xF2\xE5\xF3\xF94\x84Pm\xF2\xC6q<%%e_\xC2\xE9\xDA\xE6m~\xA4P\xA9߿\xFAA\xBB\xD2\xFB\x97#F\x8C\xA0P(2\x8A&|\xDB\xAA\xFA
+ժE*\x95\xFA\xB6\xE05\xADU\xCD\xF8\xE9\xA3\xEB\xF4\x80\xE6 qV=v\xF4\xF3\xE7\xCFmڴ\xA1R\xA9\xEF߽\xD3\xD5՛8q\xA2\x9C\x8A8tf_\xB1\xEE\xEB\x96?\xB2\xA8T\xEA\x87WE&\x9F\xAD\xA6xΔ\xD3\xF7l|\x9C\xDE\xEB\xD7-,\xA8TjNaay\x9B6\x9E3\xEA\xF0\xA5\x9C:u\xCAy\x90\xB3\xE4>\x9F\xBFlE`v\x8D\xD9\xC2\xF3;\x9AikRB|O\xCB'δ2g{\xD4mmm\xA9\x85\xF2\xF9\xFC\xCB\xF17\xCD\xFF\xA1\xAF%\x8D\xAE\x81\xC2\xC2\xEFݹ\x8F\xAD\xFF>*vkm\xBE\x80\xC2053E\x95\x96\x94\xAAh\xF9
+\x86\xCF\xE7\xAC\xA8\xAA\xAAZ\xB0`\x81\xB5\xB5\xB5\xA6\xA6&Bð7o\xDE\xECٳ\xE7˗/1\xD112\xB1<hY\xEB\xE5\x82\xF9mM\xD2Ҡ#\x84B\xC1Σ\xDDq;\xD1KF\xCC\xE6\xED2|\x83\x96/k\xF1\xEAռE\x8BL\xEC\xED\xA9\xDA\xDA!!\x9F\xFF\xE9ɓ\xF8\x9D;\x9Fo\x89\x8D\x95\xEA{\xFD\xC6uʩS\xA7:
+ۀ\xE3\xF8\x92e\xCB?0V\xFB\x8E\xD7Ѥ\x8Am\xF1\xAD\xC7.S\x9E]\x8C۵\x9DJߊ\xE3\xF82\xBF\xE5\x96[\xEF\xA0I\x9At
+\xB1\xADB?\xB1\xFD\xFC\xA3/Ww\xED\xDB!髢\xB0\xCCY\xA1\xE2\x8F\xC5\xF5\xCA/Im%\xF8\xFA\xFA\x9EK<\xB91rƌ\x84\xE5\xC0\x81\x81A\x81cF\x8Fٳg\x8FX\xE6^\xBDz\xE5\xE5\xE7]\xBFv\xBDk\x95\x95\x95\x9D:u\xC2\xFE<\xFB\xB9\xA1\xA1aVV\x96\xB3\x8Bs\xAB\x96\xAD?~܀\xB0\xEBKS\x97\xAFHp\xF7_\xE6odd4w\xEE\Bآ\x85\xC2#G\x8E\xBCx\xF1b\xF7\xAE\xDDR\xB14` \xE5\xA7\xC2%\xE3ViQuĶb\xB8 \xFE\xF7\xE8\xBC\xF3\xD8\xDE\xD88\xA9\xBE~K~.)\xB3r%UR\xC3\x96\xBCm\xDBٚ\x9A\xD8}R|o\xA6ݤ!\x840!&\xB6\xE1ʕ+W\x8B\x8D\xA6\xBAW\xF0\xA4\xEE\xED\xF0!N\xEB3\x9F\xFF\xEF\xF4\xFFƍ'\xE9\xFB\xF9\xBE\xE6\xACeC\xBF\x94TK\xF5u6(34[\xAA\xAFJ#yk\xA3\xB0\xB0\x90H\xB4h\xD1Bt\xB5\xB6"6F\xDCp\xDD\xFAuN\x9Dڶm\xFB\xEEݻ\xF5ַh\xD1"bc\x84\xA4K_\xFB\xBEyg\xF3n߹m\xD3\xD9\xE6\xFA\x8D\xEB<>!t\xED\xFA\xB5#F\x8F-\xF5\xB5\xEFKx\xF5\xCAv\xC3h\xEA\xF2Õ+W
+'O\x9E\xFC\xF9\xF3g\xA9\]]333kSD㦿[ \x87W"\xD5\xD7\xCDi\xF8\xA6\xE7\xEBk\xF35\xBB}\xDBm\xF9r~\x89t_\xA7a\xC3^\x84\x86֦&\xE9\xD7\xDE\xFB\xCE\xDB-\xE4cx.\xBBJj\xA1!\x8B\xDE\xEE\xF1\xFF\xDB8z\xF4h\xB1\xA1\xFF\x89\xFD\xA7YL\xC3BN\xFE\x97\xDA|\xFB\xB5|\xF6\xD0NI_\x95F\xEA-\x8C\xB8\xB8\xB8\xB5k\xD7R\xA9TSS\xD3!C\x86\x84\x84\x84\xD4\xE6\x88\xE3x\\ܡC\x87\xF2\xF3\xF3Y,\xD6\xF4\xE9\xD3\xE7͛G\xA1Pbbb&N\x9C\xB8x\xF1\xE2S\xA7N-^\xBC\xB8\xAA\xAA\xEAСC\xFA\xFA\xFA\x92\x95\xDA\xDB۟={\xF6\xF6\xED\xDB\xDE\xDE\xDE))),!\x94\x9A\x9A:|\xF8\xF0;w\xEE\xAF\x96-["\x84\xF2\xF3\xF3ɴ(\x84]\xC6.\x88\xB9\xE4\xE7\xE7\xF3x\xBC\x95+W&&&VU\xFD{ڨ\xC7\xAE ={\xF6\xC40\xAC\xAC\xAC\xAC\xB6<={\xF6<u\xEA\x94\xE4Y}\xE4\\\xC7%&\x9C\xF7\xB1\xFACm\xBE6\xC3,\xDF/\xE9\x9B\xBF\xC2\xCC\xE7\xF3k\xF2\xF2j\xF3\xF5l\xD5j\xED\xC1\x83R\xD5$E\xDE\xE5\xE5寪\xF4\x9A/\x8A\xBEH\x8E\xCC 0!\xCE\xE5\xA3Rj\x8B\x82\x82\xA2"}\xF9\xEF\xB44Z\xD3J_\xA6i\x8B\x8F\xCC pT\xE9%&b\xBE\xAA\x8E\xD4\xF8\xF2\xE5\xCB;vLLL\\xB6l\x8FNj\x8A\x8A\xAA\xCDqϞ=aaa\xE3Ǐ۽{wxx\xB8\x86\x86\x86\x8F\x8FB觟~\x9A5kV\\\xDCرc\xD3\xD3\xD3gϞݯ_?\xA95\xF6\xED\xDB!\xF4\xE0\xC1\x8Fw\xFD\xFA\xF5\xC1\x83#\x84\xAE\\xB9\xC2\xE3\xF1<x\x80\xEAӧ\x8F\xA8#\x91\xFE\xF0\xE1\xEB\x99\xF7\xFB\xEF\xBFϛ7OCC\x83\xCC#{\xBC\xBC\xBCV\xADZ\xA5\xA7\xA7'
+\xB7l\xD9r\xFC\xF8\xF19s\xE6\xF8\xFB\xFBoڴ)..\xAE\xB6âZ\x94\x97\x97WVVjhhjiiI\xCD#
+\xF9|>\x85B\x91TD\xA9\xC1\xDF-5\xCD>|ɑ\x99\xF5\xC51\xAA\xAAj\xF1Q\xD2\xD7\xF8\xED[M\x8B\xAAW\xAF\xA4\x8C\xCCB\xE1\x86\xAA\xAAZ~\xF7%\xA0!\x84\x84\xD8 \xEFC\x9E\xD3
+!\x94\x95_\xC12\xA4ӨmU\x8BFA\xF1x5\xC3pT\xF6\x85/\xC4q-\xD6\xEF߽7g\x99\x8B\xFA\xB2\xB4[#\x84\x8A^p\xF4M\xB5\xA9\x9A\xB6\x86\x86\xA6B\xE3a\x82L\x88\xE1\\xE2-tۊ\xF9\xAA:b\x87\x91`E\xC0
+"1f\xF4\x98e˖]\xBBvM2i9|\xF80Bh\xC1\xFCt-\xFA\xCC3\xA3\xA3\xA3:4\xCB{\xB1u\x96\xF7\xAC\xFD\xFB\x{1E79E7}S\xA9\xD4ٳfK\xAD!\xD4Ϊ\x93\xC9d\xB3\xD9 \xA5\xA5\xA5\x83\xA2P)'N\x9C8z\xE4\xE8\xA7O\x9F\xC6\xED~\xF5M\xA7\xA6\xA6Λ7!\xB4g\xF7\xD2.{\xFC\x97\xFA\xEBh\xEB\x96\xB3g\xCFqjij͞5\xFB\xAB\xBCk\x89S\x85\xC8\xFB\x90\xC7d2Byyy\x86\x86\x86\x9A\x9A\x9A!\x81@\xC0\xE7\xF3q\xAF\xAC\xAC\xC4q\xDC\xD4\xD4TRV4\x84\xD0\xDB\xCAg\xC6Z,
+M\x8BJפ\xD2\xC2\xF9BOX-ı\xCF|\xB6\xB7\xA7K\xFA\xB6\xD3\xD4Dq\xB3\xB35\xCD\xCC\x8DF\xA5өZZ8B8\x8F'\xAC\xAEF&\xE0pp\xA1\xF0Gmm\xA9j\x92\xD2{\xE8#\x84\xBE\xF0\xB0/5\x82Nz\x86tmM*\x8EP5OX\xF8\xB9\xE6eїO\>BH[K\xCB\xD4\xD4T\xD4\xDD\xC8\xC8H\xDF@!\xC4\xE3
+x\\x81Y#}\x966q\x83\x8D_\x8DUW\x95\xBC\xFE\]\xC1Ci\xD1\xC5}U\xC9}y\xF8\xF0\xE1\xE6-\x9B\xB3\xB3\xB3\xB9\.\x8E\xE3!\x87#\x99\x8D\xB4\xC3N\x9D\xC8M\xF9\xF9\xF9\xE4\xD6
+\xA1\x84B\xE1\x981cΞ=\xBB!tC\xEC\xB6X\xC2\xDE\xEE\x87vd\xFE\xB7o\xDE"\x84\xEC\xEC\xECRRRbbbh4\x9A\xA3\xA3#\x85B\xD1\xD2Ҋ\xD9Cl\xC2q\x9CF\xAC\xF67o̝7W(\xC6n\x8B8p a\xAFs\x8C\x8D\x8DE\xFBy\x84\x83\xC1
+\x85\x84\xA4\x95\xC3\xC8Ȉ\xB8\xE1\xF1x555-Z\xB4022"n\xB0\xF1x\xBCO\x9F>q\xB9\\x84\x9DN\x97T\x84\x81\xBE!B\xA8\xE3Vc_\xDA\xE8Z3\xE8\xE6ZT:B\x88'\xACf\xD7\xE5~\xC9\xF9"\xF8\x8C\xA2kI\xF1\xD570@a\.\x95\xCB\xD5\xF9\xF1G-\x8BB\xDC9\xAF\xAE\xE6\xFCX\x95\x93#\xF8\xFC!\xA4%Q/\x81y\xB3X\xACV\xFA\xC2|\x84\x98\xBA\x9A\xF6\xED\x8C\xCD
+\xB54(D\xA1 \x84t5q#\x9A\xA16\xED\xCEߜr\xAE\xC0\x84\xC6mݺ\xB5\xA8;\x8B\xC5ұ\xA0\xA2r\xA4kLo\xDD\xCBT\xDFT\x87\xAA\xF1\xF5z@S\x9B\xA6m\xA0\xA5\xAD\xAF\xF9\xEEaI\xF5'2\xE6\x89\xF9\xAA:\x92\xFB\xB2`\xE1\x82\xE2\xE2\xE2\xB8}q]\xBAv\xC1q\\x86\xBC-[X~\xC8\xFB\xF0\xE0\xFESSS\xB1\xAD\xC9\xC9\xC9IIInnn\x9B7m\xAE\xAC\xAC\xBCx\xF1\xA2\xFBPw777\xA9E\xF5\xE9\xD3'%%\xA5\xB4\xB4\xB4_\xBF~:::!\xFB\xBE\xF6\xC4}5;;;\xB1 \x88\xD5?n\xFD1g\xCE\x81@\xEE\xEE\xEEN\xE6\xA9sD\xD3fffEEE%%%fff%\xFF\xDC
+R\x83&f\xB1X\xFA\xFA\xFA!==\xBD\xF6\xED\xDB\x92\xB7\xA9\xB5\xB4\xB4tuuutt^\xBDz\xC5\xE5ri4\x9A\xA4"BK\x84>h2m\x8C\xFA0\xB4̩\x94\xAF\x92\xA0k\xE8\xEA\xD1ui\x86Y\xE5\xF7*\xE5:\I_\x81\xA5%*-\xA51\xBD{k\xB2X\x8D\xAF\xBC::4CC
+}\xFD\xCF`\x9F>U2\x99R\xD5DE \xFF\x8B@ \xB0\xB7\xD4D\xAFC\x9Be\xF0U\xDB\x84(!
+EC\x83jaHoi\xAC\x8D\x84X_*\x86ab\xBEf=t8\xCF\xC8R\x97\x9C#\x84\xD0WgDՠ\xE8\xB3t-t\x843\xEDN\xF3U]\x88C)i\xC70!\xA4\xAF\xAF_UU\xB5y\xCBf\xC9lb\x96iӦ!\x84"##\xCB\xCB\xCB+**nܼ1m\xFA4\xA1PXVV\xB6z\xCDj##\xA3\xB5k\xD6
+\x85µk\xD6\x85\xAC)++
+\x85\xAFr^\x91QN\xEF\x89\x92\x9D\x9C\x9C\xCB\xC0\x81 \x8B]o;\xA9\xB5ϙ3\x87\xC7\xE3\xADZ9n\xEC89wArw<==B\xF1\xFB㫪\xAA\xE2\xE3\xE3k;,*\x87@ hݺ5\x86a\xC3\xC0\xC0@\xEC'(*\x95jddD\x8CYZ\xB6l)\xA9\x885\xFAyȌ\xDE\xD2X\x8BEj\x9B\x90\x85\x85Ƥ\x9B\x9B\xD2[\xE0\xEA\x80zK\xFARz\xF7\xAE\xC1q\xBA\xA5\xA5\xA6\x99\xA9\xED\xAF\xEEZ\xE6\xE6\xF4-0\x84\x84={J\xAA \xBD\xB7\xD8O8\xC2\xC7|j\xDD1\xBC\xCDT\x91A\x9Ch$\xC4\xF1\x9A\xEC+SF
+q!.\xC4E}\x87\x8Du\x8D\xBC\xD7
+\x9F(\xD5\xE1\xE1\xE8Iy\xDA\x93\xC4|U\x9D;\xFEH\xA6_\xBCx\x81ڼysXX\xD8\xE4)\x93EÒ?\x91\xAF\xA9^Zt\xAD\x84\x84\x87~t:\xBDW\xAF^3f\xCC\xC0\x84\xD8\xEA5\xAB\xCB\xCA\xCA6m\xDA\xC4`20!\xC64a\xAC^\xB3:&&F2kkk]]].\x97\xFB\xF3\xCF?\x85p\x80B\x91\xB6\xB6v'\x9BNb\xAB555\xA1\xB0\xF0\xB0\xB0\xF0\xB0z\xED\x82hz\xE1 eeeǎ#\xB5-uU\xE1Ç_\xB3f\x8D\x95\x95\x95\xF48\x8E\xE3\xF8\x8B/\x82\x82\x82$1r\xF08\xBF\xDFNw\x98*DH\xCAَ\xE38\x8E\xF0\xDCd\xEE<\xCFɒ\xBE.cǞ:wn\x8E#\xE9R\xC4q\xBFTQ1t\x92t5QN\x9D:յkW1+\x95JM\xBBug\xFB\xED\xD2\xC1\xC3<-\x8D\xE8T\xCA\xD7{\xEE8\xCE\xE2y\x9C\xEAkWSgv\xA5\x8E\xF0*$}o\xA5\xDD~| w\x98\xEBpCs]*\xEDߛ\xF5\x98@\xF8\xB9\x90\x9Bz5\xB5\xFD\x83a\x9E \xD0<\xA1R\xA9\xB7n\xDDJKKsww766\xD6\xE9H1\xE3p8\xA9\xA9\xA9=z\xF4\xF0\xF0𐪈?\xEE\xA4],\xDB\xED6b\x88 \xDDB\x83B\xA3
+BG8\x86J\xAA\xF3\xAF\xA6^\x88\xA6:B\xAA\xB4\xCF\xFB\xF6\x8Dpuղ\xB0\xA0hh\xA0\x94\x885\xA9\xF1'M:B\x8AoVV\x96\xC6\xF8\xF1\xE3MMM\xF1\xFF"
+;Yw4\xE1?{I\xC8lG\xA5ibB\xBC\x9A/,\xFB\xC2\x99Ͼw\xE1謾\xC6cG\x8D ~ޔ\xF4\xB5\xEEԱʰ4\xF1\xE4E\x96F
+*M\x88\xE1\x82\xAC\xAA\xBC\xA6\xF0U\xE9\xB9?~\xEB6\xC9rԘ\x91R}\xA0y"
+\xAD\xAD\xAD\xC1ٳg\xF1\xC3!\x9Fϯ\xAC\xAC\xCC\xCB˻x\xC3\xE8ѣkUD\xC7N\xB4B\xC6\xE9K'\xF4\xDA#
+M*\x860\x9E\xB0\xFA3\x9Fr䎫\xD1\xF4\xD1#\xC6\xD6\xE6۱S\xA7|c\xE3K'Nt\xA0P4\xA9TÄ\xD5Ղ\xF2\xF2\xF2\x9C\x9CC\xB7o\xEByy\x8D+ݷ\xA4\xA4\x84r\xEAԩN\x9D:I~]\xE18\xAE\xA7\xA7WSSw\xF8\xB7{o8HG]a\x85}[\xDF\xE9\x93\xF5\xF5\xF5+++k{(\x85\xF4=\x9F\xF0\xFEQ1\xED\x8BB\xBE6\xB7UO毳\xA7\xC8\xF6\x80\xE6 yV>|\xF8\xF5\xEBׄQ(\xB6k\xD7n\xFA\xF4\xE9r*\xE2\xE0o\xF1\xD9\xE5\xF7\xF9\x{25480A8}:\x9D\xFA̜\xE4#\xA7\xEF\xF1\xF8\xF8\xCF\xFEi\xF0\xE5\xA1\xCF\xDAں\xBD{O\xF2\x91\xE5\xFB\xE2\xC5ʩS\xA7:v\xEC(c\xAF\x8C\x8D\x8D\x89\xA7\xA3p\xD7\xD0\xD0\xF8\xF2\xE5\xF1Oqy\xF8_ h\x9E(K\xF5\xF5\xCD\xC9ɡ\x9C:u\xAAC\x87rV \x80\xAA\xF0\xFA\xF5kY\xFF\xF7 @\xA5\xA1!\x84y\xA3\xEC0 h|hT\xDBi\xF0pe\x87 @#\x93v5IM^\xA8 \x80$ o P[@\xDE \xA0\xB6\x80\xBC@my\x80\xDA\xF2 \xB5\x85\xA6\xEC Ԝ\x92\xE2\xA2\xEC\x8CteG4#:\xDBڙ\xB1,SȻi\xC9\xCEH;\xC5W\xD9Q ͅ癏\xB23\xD2\xF6\xA4 \xCE\x8E\xAD\xAC\xAC\xE0>|\xE2QN\xDBO\xAD5iW\x93\xC6N\x82'\x84\xD0\xCBgO\xD6{\xA7]M\x82\xC1\xB9"x\xF3\xF7\xDF\xD2_\xA6|O\xFCо\xFD\xEF\xCF(\xB2F\x90\xB7"\xF8\xA1}\xFB\xBF\xFFy \xF0\xDD\xF2\xF7\xEB\xD79ϟ*\xB2F\xB8\xF6V\xAF_\xBF\xC2\x8B,\x89'\xF7k\xD0h
+\xF3m\xAF\xF0+@\xEF\xAD:t\xF8\xF1\xF5\xABeG4xC.\xB5^\xBF\xCAy\xF5"\xB3\xD1c\x91\xC8[\xBC\xCAy\x897\xE8\x84 \x9A'
+k\xCD;Zõ\xB7\xF2cG뜜ʎh4pio,\xAF\x93\x9C\x9C\xBF|\xD6\xE8\xC1\xC8\xE0\xFB\xBD\xF6\xB6\xB3wTX]9/\x9F7\xDD\xF5`ǎ\x9D\x94}A\xFA=-
+\xF2\xED\xD8Q\xCA+\x89\x9B\xB9zoB 4\x8D\xC10\xEEѽ\xFB\x8CiS;\x8A\xCC\xC8\xD1\xB1\xB3wLpG\xD9Q\xFCKGk\x9B\x97/\x9E\x8B\xAD;\xD9 MM\xCDnݺ\xAD]\xB3\xC6\xDAZ\xD6+ke\x80\xC3\xC0_\xB14쀿|\xF1\xFCͫ\xECƎE\xF2\xCE\xD3\xDC
+\x85ee\xEC\xEB7nΙ\xB7p\xE7\x8EioG\xA4\xF2\xF2y\xB6\xD43\xE2\xE5\xF3l\x84PUUU\xC2o\xC7\xFD\xFD\xFD\x93.^h`\xA0o\x83\xE3\xA1\xADQQ\xFB\xE2\xE2%7\xFA̞\xE5\xBFt\xA9\xA4\xDDڦ\xB3\x82\xAF\xBD\xEB18\xA7R\xA9ff\xA6\xBFL\xE7\xEB;+~\xFF!\xC2\xC8\xE3\xF1B\xC37:9\xBB:9\xBB\x86ED\xF2x<\xC2.`Q1\xB1\x83\xDD<
+v;\x96p\x9C0\x8A\x8D\x87\xC9U;{\xC7\xFD
+\xEC\xE66\xCC3\xED\x8F[u\xE2\xEE6\xCC\xF3\xC1\x9F\x89\x86\xEDع{\xB0\x9B\x87\xE3 \xE7\xA0\xE0\xD5\xC4d\xAB\x84㙳\x89\x9E#\xC7:8\x98<uzN\xCE+\xB2X;{G\xB2|\xA9\xC1\x90\xE4\xE7,]\xB6b\xC0\xA0!\xFD\xFA\\xB8d)\xF9\xEE\xE8\xBB\xF7\xEE\xFF2\xC9\xCB\xC1q\x80\xE7ȱ\x89\xE7/\xCA0։\xB5MgɱB\x88Hh\xEBh\xFF\xFA\xAB\xD7\xFB\xDC\b\xB5\xBA\xA6zU\xC8\xEA\xDE}\xFA\xF4\xEE\xD3'd\xF5\x9A\xEA\x9Aj\xD9v\xB2\x9C\xACgY:t䈲ǯ\xEA\xBC
+J\xA4\xFD\xFC\x96xz\x8A?\xE6\xE99\xDC\xCFo\x89T\xDF\xCFz\xE1\x8Dv\xED\xED2h\xD0ӌ\xAF\xF7\xF7w\xED\xD9WRR\x9Ax\xE6\xE4\xB9\xD3'
+\x8B\x8Av\xEF\x8D#\xEC{\xE3\xE2y\x9Bp\xF4\xE0\x85sg>\xD7Y&\x9Bù|1q\xDE\x9FU\xABױ\xD9\xEC\xA4g\xE7\xCD\xF1\x89\x9D\xD8z\xF0Б/s\x8ELMN\xA2\xD3\xE9\xB1;v\x91\x8E\xE9\x8F\xEF\x8F\xDBs\xE3\xEA\x95AN\xC2""Bİ<\xFD\xC1r|.;?\xFF\x80I'\xA4&'\xA5&_\xB2j\xDB6*\xE6\xEB\xBC٫\xD7n\xF0\x9D=\xEB\xD6\xCDkq\xFBvef=\x93a\xAC\xF32\xFEyv\x96\xE4\xBC6\xE8\x9FYc\xAA\xAA\xAA\x8EK\xE8֭+\xB1\xFB\xB1\xB8\xF8J\xF2\xEFɿ_\xCE/(ضm\xBBl;Q7g\xCD\xF6]\xB2\xEAש^\xF5\x99]\xA8D\x83\x92\xE9\xB0\xD0
+\xF6\xF6dC;\xD8ۇ\x85n@\xB5̮\xD5ɦK\x9DBh\"occ\xA3\xCA\xCAJ"}%%\xD5\xDFo1\x83\xC1`2\x99\xFEK\xAF\xA4\xA4\xF6˗\x93\x96-5g\xB1\xF4\xFD\xFD\xD7Y\xA6\xCFlo\x9Da\xEEC\xAB\xAA\xAAfy\xCF \xD2\xEF'\xB6\x9E\xBF\x90\xB4|\x99\x9F9\x8B\xA5\xAB\xAB\xBBh\xC1\xDC\xEB7\xD2H\xC7\xC0\xCBX,3\x9D\xA9^\x93_漒Z\xB8\xEC`N\x9D8\xD6Ǯ7\x9DN\xD7\xD7כ?\xD7\xF7\xDE\xFD? ;]K\xAB\xA4\xAC\x94\xCD\xE1X\x98\x9B\x87\xCA0։M\xE7\xAER\xBE\xCD\xB2\xE9\xDCզsמ\xBD\xECv\xECع20\x90\xB0_\xBA|9(0\x80\xC9`\x980\x99\xAB\x82\x83.]\xBE,ێ\xFA\xED\xB7\xDF֬]\xB7w\xF7.\xE7A\x95ݽ\xA9\xFBB\xF0Ϫ&\x8D\xB6=6\xC6ֶB\xC8ֶ\xDB\xF6\xD8M\xAD6\xDF\xE7\xCF\xFA\xA37j\xD8c\xE5埈\xD9\xCCBl6\xA7eKK"miق\xCD\xFE:\xB2--+\xB3\xB4l!\x99F\x86\x86!MMM\xD149\xE9aIi鄉^!DžB\xA1\xE8\x8CJDf\x84\x90\xB6\xB6vmS\x8E\xCA&##3v\xE7\xEE\x97/s\x88y\xD8\xC8\xC27E\x86\xEF?p(.\xBE\x9E\xBF\xDF\xE2?\xF7\xAF\xCDX\xE7m\xBC\xEC\xAC\xF2\x8B_̎\xAA\xAE\xAE>q\xF2\xD4\xC6\xC8M\x87@\x95\x95\x95\xB5jْ\xC8\xDF\xD2Ҳ\xAC\xAC\x8CH\xD7fG:td\xE4Ϯ]\xBBH\xADhtD\x8F\xB3\x9E\x9E\xDE\xEE\x9D;V\xAD\x8C\x8C\xD7\xD3ӓ\xD1\x9D\xBBڪ\xC0\xEF\xDE\xD7n\xDC\xE8\xD9ÖH3\x99\x8C\x82\x82\xC2֭[!\x84
+
+
+c\xC2njbRPPئM\xEB\xFFTF\xA3UWWkkk#\x84\xCA?}\x92\xBFF&\xF3\xE0\xFE},\x96Y\xA2\xAD-\x92\xC0\xE0\xBF\xC5\xFB98\xE8\xE9\xE9r\xB9\'gW\xC2ޥ\xB3MԖH\xC7\xEF\xBF>4\x9CP\xB2Tc\x9Dt\xEEj\xFB,K\xCA\xC3\xC68\xC2Btm\xFA\xF8 \xE3b\xB6\xC5\xAB&&̼\xFC\xBC6m\xDA \x84\xF2\xF2\xF3\x98L\x86l;B\xE8С3f\xCE242\x9C9cz\xFD
+\xD0 \xF0\xFF\xFE\xEEm\xCC0g\x97\xA4]\x8CgYOs\xDF*\xF4\xAF\xF5\x9C\x85\xC2\xD2Ҳ\x93\xFF;w`\xD6\xCC\x84q\xC8`\x97\xAD\xD1\xDB8\x87\xC3\xD9\xED:d0a\xF7\xF0pߴ%\xEAcqqEE\xE5\xD6\xE8m\x84\xF1\xC7\x8E\x{3B7AEBA}\xB8\xB8$b\xE3f\xF9\xAB7vtXDd^^\xBE@ x\xFD\xFA\xEF\xA0\xE0ղ\xF3\xE8\xBF\xCF\xCD%W\xA5CRS]\xA3\xA5\xA5E\xA7k\x86\x86G\x92\xF6\x95\xABּy\xFBV\x80a8\x8Ec\x98P\x86\xB1\xCEk\xEFg\x99O\x8E\xC4\xF45Q]Us\xE6\xF4\xD9V\xADZ\xABC\xDD\xDC6n\xDC\xCC.c\xB3\xCB\xD8\xE1\xE1\x91\xEEC\x87ʶ#\x84,\xCC\xCD<p\xE6̹\xB8\xB8\xFDR*\x82\xA5\xF4o\xC3\xD5w\xE9ҵ\xBB\xEC\xF3\xA4ё\xB7\xF7\xB6\xB3w\xD4\xD0\xD0`0\x8C{\xF6\xE8\xB1g\xD7\xF6\xDA\xF6\xF9s}#7G\x8D3!4\xD8\xC5y\xDE\xC2\xEE3\xCB{\xDB\xF6\x93\xA7L\xC3q|\x96\xF7\xD7\xEF\x82U+W\xAC\x8B\xD8𰙩\xE9\xB4_\xBD\xAE]\xBF!g\xED\xD3~\xF5BG\xE6\xCE_TRZbն\xAD\xF7\xCC\xE9\xB2\xF3O\x9D2y\xEA4o.\x97K\x9B\xA5C\xB2*(*&6 0\xD8\xCC\xD4t\xAA\xD7\xE4ԫ\xD7\xFB@\xA7\x9F\x97\xAC\xCC/(hۦu\xE8\xBA52\x8Cuҥ[\x{1EC33F}\xA4\xDAB4\xAD\x93\xB5ux\xD8b\\xB7h\xE1°\x887w\x84\x90\x9B\x9B\xEB\xC2d\xDBB8\x8E\x9B\x99\x99:\xB0\xE6\xACY\x81`\x8E\xAF\x8F\x9C\x81
+\xA3aAY}x\xFFw\xA3#x\x9DC\xD3B\xBCΡ\xE2L{\xAC&\xA4$\x9Djp\x83v\xEB\xDE\xF3\xF7\x8Bg\xF9:\x87\xEF\xF7\xA1TEҭ{Oe\x8F)ai\xAC\x85\xA0!\xBE\x99O+\xF8ă\xBF\x94(\x82\x8C\xBF\xC1=mu\xA2a\xADiۣ\xB7
+\xDC9\xEA\x8Bm\x8F\xDEO\xE0u\xC8jD\x83\xE4\x9D\xF1$=?\xEF}\xA3\xC7"\x90\xB7"x\xFA\xE4\xA1\xEC\x9FL բa\xADٽg\xE8\xBDՐ\xEE=\xFB\xFC\xF5\xF8\xA1\xB2\xA3 \xF71\xE5쒆\xF9\xFE\xF5\xF8aa~n\xDD\xF9\x90\xB7"\xF8\xEBџ
+\xCE\xEAD\x8F\xDE}\xA1\xF7VCz\xF4\xEE\xFB$\xFD\x81\xB2\xA3 \x94̓\xF4E\x85y\x8A\xAC~S\x8F\xD3\xEF\xF7\xB4\xB3\xC7\x9F\xDF\xF9\xA7\x82O<x\xAC\xA5iI\xBB\x9A\xD4\xD9\xD6N\xD9Q \xCD\x98\xA5D}\xE8lk3\x84\xA2(\xF2\xEB\xE4ݴ\x98\xB1,`p(\xB8\xF6 \xB5\xE4
+ j\xC8 \xD4\x907 \xA8- o P[\xE0\xCEy\xD3RR\?\x8C\xA2t\xB6\xB53cY(\xA6.\x90wӒ\x9D\x91>v\x8A\xAF\xB2\xA3 \x9A\xCF3)\xEC\xB1\xF2V8.Tv\xC0\xF7\xC8[\xC0\xBF\xC5 \xA5 \xF2V\xA0o@\x80\xBC\xBCh
+P
+ oE obRΟ<0v\x8A\xAF@\xC0Wv r\xF2V\xD0{\xAB*Ҡ oE \x83s5CU\xE4\xAD`p\xAEf\xA8J\x836;y\xDB\xD9;\xD69\x9F\xAE\xEA\xA1"_\x{180F28}H\x83\xCA%o\xC90\xA0@uҹԓ\xC1\xBA\x93\xCD\xCB\xCF%-֝l$3K\xDA\xC5|B\xEF[\xBF!\xF4\xF1\xE3\xC7\xA1^\xBDz\xADYeee\xF5m\x81\xD2Qu\xCB\xDD{+^ij\xA3m\x84j?$\xED8\xFE\xF2y6\x91\xB4\xB6\xE9L\xA6\x89\x9C\xFF\xAEJ\xF3]\xB2\xC4o\xF0`\x97\x98\xE8(\x84\xD0\xC1\x83\xFD\xFC\x96\x9E;\xAB\xD0\xD7\xEE~G\xE08BhkTԾ\xB8xɍ>\xB3g\xF9/]\xAA\xF0\x98\xA4\xF0M\xFF\xB3\xB3w<s6\xD1s\xE4X\xC7\x93\xA7N\xCF\xC9yE\xD8,*&v\xB0\x9BǠ\xC1n\xC7\x8EF\x8F\xBE\xD1\xC9\xD9\xD5\xC9\xD95,"\x92\xC7\xE3v>\x9F\xBFv}X'Ww\xCF#\xC7D\x97]KMM\xCD\xDA\xF5\xA1\x84\xE3\xE1\xA3\xC7\xEA\x9Cd[\x89\xE0\x97\$\xEDb٫\x92˛\xB7ogϞe`\xA0o`\xA0\xEF\xEB\xEB\xF3\xE6\xED[\xD9\xF9ai\xC0"ڠ~~K<=ş\xF7\xF4\xEE\xE7\xB7D\xB6\xBB\xC2\xF8\xD6?\x84\xA6?z\xBC?nύ\xABW9
+\x8B\x88$\x8C{\xE3\xE2y\x9Bp\xF4\xE0\x85sg>\xC6]{\x{195514}&\x9E9y\xEE\xF4\x89¢\xA2\xDD{\xE3\xFB\xEE=q\xE5\xE5\xE5O\x9FH8\xFC0\xFD\x91\xFC\xB5\xEC\xDEWQQ\x99t\xFE̩\xE3G\x9F>\xCD$37C\x9D\xE3Ґ\xB4\x8BYd\xAFJ2p\xA0Ӿ\xB8\xF8\x8A\x8A\x8Aϟ?\xC7\xC5\xC5;9
+\x90\x9Dh \xA2
+\x8A
+\xDD\xE0`\xFF\xEF\xEB\x8D\xEC\xED\xC3B7\xC8h)\x9Fx\xF2\xCE\xC54C\x8E\x9CW,324DM\xF5\x9A\xBC\xFF\xE0a\xC2x\xF9r\xF2\xE6,B\xC8\xDFo1a\xBC\x92\x92\xBAw\xD7\x83\x81
+\xF0_:g\xFE\xC2\xC5\xE7#\x84\x92SRH\xFB\xF2\xA5~c\xC6O\x94\xAC]j-)\xA9W\xE3\xF6\xEC266F\xF9-^\xF8ǭ\xDB\xF5\xD9q\xC5R[\xBBJ\xDA\xC5,\xFF]\xB5\xE9ܕL?\x96\x89\xFEKЊ\x80\xC9^Sw\xEC؉\xB2\xB4lq<\xE1X\xAD\xF5\xDF\xC8?V\x93F\xDB\xE3=\xDB'##\xD3ֶ\xDB\xF6\xD8M\xAD\xF9\xF6o\xBD\xF6&T\x87\xD2\xD6\xD6D\xBA\xB4\xAC\xCCҲ\x85XN6\x9BӲ\xA5%\x91\xB6\xB4l\xC1f\x9D \xBD\xAC\x8CMf\x96\xF4\x92QKY\xDB\xC2H\xB7h\xF1\xEFh\x9B\xE1E\xBBԯm*\x95\x8Aa\x95\xFAu E\xA4\xC5r\x8A\xADfge\x88m\xEA\xDCՖ\xDC\xBCj\xE4\x88ӧ\xFD\x8A:x\xE8p\xE0\xCA\xE0\xFDq\xFBu?\x80\xAF\x88\xB6\x8B\x9E\x9E\xDE\xEE\x9D;V\xAD\x8C\x8C\xD7\xD3\xD3S|-\x83&\xF9a\xCC\xD4Ĥ\xA0\xA0\xB0M\x9B֢F&\x93QPPغu+\x84PAA!\x83aL\xD8ML\x98\xA2v\xF9ka2EE\x89\xAF\x8C\xC2¢F\x8B\xBE \x90z\xD1eff\xFA>\xF7=ys\xFB}\xEE{\xCBL,\xA7\xECU\x84г\xAC\xA7\xE4\xA6G\x8F\xEFڹ]KK!\xE4\xE33ˡ_\xC5_\xEC}'\x88Xc\x86\xF1\xDE=\xBB$\xEDJ\xA7I^\xC6\xE4\xE1\xE1\xBEiK\xD4\xC7\xE2⊊ʭ\xD1\xDB\xE3\x90\xC1.[\xA3\xB7q8\x87\xB39*\xDAu\xC8`\xC2\xEE\xE6:$z\xDB\xF6\xF2\xF2r\x87Cf\x96\xD7!\x83 \xC7\xF2\xF2\xF2\xE8m\xDBI{3\xBC\xF6F\xB8\x94e\xB8\x87GhXD\xEE\xFB\_\x90\xFB>7,|\xA3\xE7\xF0\xE1\xFF\xC9#\xE6XK9\xE4Ҿ\xFD\xF1\xF1*>WT|\xAE\x88\x8B\xDB\xFFc\x87\xB2\xF3\xC3Ґ\xA5\xF6\xAD\x87\xBB\xA2\x90W\xDEv\x{18E88B}\xEC\xCC>\xB3\xBC۵\xB3\x9A<e\xDA\xC8\xD1\xE3ZX|6ϟ\xEB\xCBd2G\x8E\x990r\xCC3S\xB3ys|\xFB\\xDFن\x86#\xC6L\x984\xB5w\xEF\x9E\xF2\x87>\xD7w\xB6\xAE\xAE\x8ELj1\xE3'zu\xEBڅFӐ\xDFW\xC1H\xBD˲`\xFE<\x9B\xE93\xBD{\xD9\xF5\x9D>ӻ\xB3\x8D\xCD\xFCys\xC5n\xC3\xC8X\x95$2"\xE2\xE1\xC3\xF4\x81\xCE.\x9D]?~\xB91\xBC\x8E\xDBD@\xFD\x91Ѡ\xF2\xBB+5\x99c\xEC\xDD\xFB\xF7\x8B\x96,\xBBp\xEE\xCAD\x9C\xB4\xABIc\xA7\xF8V|\xE2(;\xA0qHI:\xF5-
+\x9A\x97\xFBF\x91s\x8C\xA9\xF6\x9BR\xB7Fo\xFB\QQVƎ\x8E\xD9>\xD0\xE9ge\x87#\xA5\x8F)ai\xAC\xE5T\xA14\xBBg\xCE\xEB\x85e\x8Bc\xC6M\xE4\xF1x~v\x9C\xE33K\xD9\xE1Ԋ\xE2Ge@\x93\xA2*
+\xAA\xDA\xF2\x9E4q¤\x89\x94\x85\xA8\xC8\xD9 ȋ\x8A4\xA8j\xCB[Uhn\xBF\x97 ߈\xAA4(\xC8[\xA8\xC8w=P7.\xEEc\xCA\xD9%ʎB^@\xDE
+\xF4
+(\x90\xB7"P\x95;1\x80\x9A\xF2V\xAAr\xA9\xA8 \xEF&\xE7y\xA6\xF4\xB9@S\xF2nZ:\xDB\xDA\xC1\xA1\x80(\x9Dm\xEDVȻi1cY\xA8\xC13\xBF\x80\x8A\xA2\xDA\xA5 \x907 \xA8- o P[@\xDE \xA0\xB6\x80\xBC@m\x81;\xE7MKIq\xFC0\x88\xD2\xD9\xD6ΌeQw\xBE\xC6 \xE4ݴdg\xA4\x8F\x9D\xE2\xAB\xEC(\x80\xE6\xC2\xF3\xCCG
+{[y+*;\xE0{\xE4\xAD\xE0%\x80R y+\xD07\xA0@ފ \xFE
+(\x90\xB7"\x80?\x84\xAA
+\xE7O;\xC5W \xE0+;\xB9 y+\xE8\xBD\xD5iP\x90\xB7"\x80\xC1\xB9\x9A\xA1*
+\xF2V08W3T\xA5AA\xDE
+AE\xBE\xECyQ\x91\x95K\xDEbs6lm\xFB\xB8\x973 IDAT;{\xC7:\xE5ɣ\x8AH=\xAC;\xD9\x89\x97/\x9E\xFF73\xBEuk\xD4ɓ')\xCA/\xBF\xFC\xB2t\xA9\x85B\x91Q\xB8u'\xB1\x80\xA6FE\xD4-w\xEF\xADթ\xA5\xB6\x92~:\xBC|\x9E\x8D\xB2\xB6\xE9,\xB6\xF5ԩS>|x)\xE9"Bh\xC1\xA2ŧO\x9F?n\\xCA\x9AGm\x8D\x8A\xDA/\xB9\xD1g\xF6,\xFF\xA5K\x93\xFE\x8F1\x8F\xBE\xD1\xC9\xD9\xD5\xC9\xD95,"\x92\xC7\xE3v;{\xC73g=G\x8Eup0y\xEA\xF4\x9C\x9CW\xE8\x9F\xFE_t\xF2\xE0\xBB\xF7\xEE\xFF2\xC9\xCB\xC1q\x80\xE7ȱ\x89\xE7/\x92\xBEH\xDAd\xC3\x86\xEDع{\xB0\x9B\x87\xE3 \xE7\xA0\xE0\xD5\.\xF7vY \xE0\xAFm\x91\xDCz\xF6\\xA2ߒ\xC5f,33\x96\x99ߒ\xC5gϝ#\xEC\xD66\x9D\xE3\xE2\xE3\xFB9\xF6\xEFѫwPpp
+\xAF\x860"\x84\xACm:[\xDBt\x96Q,\x8D\xB5\x886\xA8\x9F\xDFOO\xF1\xA7\xC7==\x87\xFB\xF9-\x91\xED\xAE0.\xEF]{\x{195514}&\x9E9y\xEE\xF4\x89¢\xA2\xDD{\xE3\xC8M\xE9\x8F\xEF\x8F\xDBs\xE3\xEA\x95AN\xC2""\xD1?\xDDr\xFA\x83;d\xFF\xBCz\xED\xDFٳnݼ\xB7oWf\xD63ђ\x89l\xE9\xEE\x84\xF7\x86:x\xE8ȋ\x979 G\xA6&'\xD1\xE9\xF4\xD8\xBB\x88\x9Cu\xCE4\xDEL\x90=᳘\xE5\xF5\xABW]\xBAv!\xD2]\xBAt~\xF5\xEA5\x99\xF3az\xFA\xC5\x89WS\xAF\x94\x96\x96\xC5\xC6n\xC7q\xFCyvB\xE8yv\xD6\xF3\xEC\xACO:
+ȏh\x83"\x84\xC2B78\xD8ۓ
+\xED`o\xBAAF\x8B+\xF8ēW\xDEb\xDD)B\xE8JJ\xAA\xBF\xDFb\x83\xC1d2\xFC\x97^II%3\xAEX\xC6b\x99\xE9\xE8\xE8L\xF5\x9A\xFC2\xE7\x95\xD4\xE9ZZ%e\xA5l\xC7\xC2\xDC<$8P2CFfVҥ\xE4\xE0\xA0 \x84\xD0\xF9I˗\xF9\x99\xB3X\xBA\xBA\xBA\x8B̽~#\xAD~{\xA9td\xF4[\xB9UU\xBA\xDA\xDADZWG\x87\xCB\xE5\x929\x83W0&\x83\x90t\xE9rm%\xC0҄\xCBT\x93F\xDBck\xDB
+!dk\xDBm{l\x8C&\x8DV\xB7\xBB\xA2h\xF8\xB57\x9B\xCDi\xD9ҒH[Z\xB6`\xB3\xFF\x9D\xD0\xDC\xC8АHhkk\xA9n\x8A\xDF\xE0P\\xDC=}=\xBF\xC5~\xEE/\xBA\xB5\xA4\xA44r\xF3\xD6\xE8-\x9B455B%\xA5\xA5&z!\x84p
+\x85\xE4\xAD&U\xB9V\x97\xFD\xB5-\xB6UGG\x87\xCB\xE5\xEA\xE9\xE9!\x84\xBE|\xF9\xA2\xAB\xABKfhiiI\xA4[ZZ\x96\x96\x96\x8Av&M7P\xA2\OOo\xF7\xCE+\x82VFF\x84\xEB\xE9\xE95\xAB\xB6h\xF8cL&\xA3\xA0\xA0\xB0u\xEBV\xA1\x82\x82Bø^\xEE]:\xDBDm\x89\xC4q\xFC\xEE\xBD\xFB\xEBC\xC3E\xE5\xCD\xE7\xF3W\xAEZ\xE0\xEF\xC7b\x99&\xF3\xE0\xFE}\xE4\xAAʁ˼\xE8\xDB\xFAc\x87\x99YY\xF6\xF6}BYϞu\xE8Ё̐\x97\x9FצM\x84P~A\xBE\x89 \xB9l\x92\xB8\x81Z;\xE0\xC6\xE3\xBD{vIڕNï\xBD\x87v\xD9\xBD\x8D\xC3\xE1p8\x9C\xCDQѮC\xCB\xCEo`\xA0\xFF>7\x97\]\xB9j͛\xB7o\x86\xE38\x86\xFD\xE7\xEF\xD0a\x9B܇\xBAv\xEFnKZƍ\x99\x97\x97/^\xBF\xFE;(x5aW\x95ko\x84Hl1\xC236vG\xF1ǒ\xE2\x8F%\xB1\xB1;F\x8DA\xE6ܴi\x87\xCD\xE1\xB09\x91\x91[<\x86
+#\xEC\xEF\x93U,\x8D\xB8\xD4٠\xF2\xB8+\x8A\x86\xF7\xDE\xF3\xE7\xFAFn\x8E9fBh\xB0\x8B\xF3\xBC9>\xB2\xF3O\x9D2y\xEA4o.\x97K\x8C\xA8:\xFD\xBC<`e~AA\xDB6\xADC͙t\xE9rҥ\xCB\xE17\xAB\xE9\xEEL\xFB\xD5M\x98;QIi\x89U۶\xDE3\xA778l\xA5 u\xC0\xD6ն\x91\xE8ҭ;B(+\xE3/bu\xFC\xB8\xB1\xF2\xF2F\x8C\x8D\x9A0~\xFC\x98ѣH\xF7\x9E=z\x8C5\xA6\x8A\xCBuu2\xDE<\xC2>c\xFA\xB4\xF1\xBFL\xE2r\xB9d @SӬF\xE02\xA0\x9C>\xB6\xA6\xD1h:Ү&\x8D\x9D\xE2[\xF1\x89Swֺ\xE8ֽg\xE6\xD3'\xDF^\xF0-\xA4$\x9D\xFA\x96\xCD\xCB}\xA3\xB0\x971\xA5]M\x82\x87RCc}٫F\xA7\xF1\xA0
+\xF2V\x8D5\x96S\x951\xA1ڣ*
+\xF2V\x8Dq6d<IW\xFC\xA7\x80tT\xA4!@ފ\xA0\xB9\xFD^|#\xAAҠ oE\xA0"\xDF\xF5@ݸ\xB8\x8F)g\x97(;
+yy+\xD07\xA0@ފ@U\xEE\xC4 j\xC8[\xA8ʥ\xA0f\x80\xBC\x9B\x9C癏\x94\xF0\x9D\xF2nZ:\xDB\xDA\xC1\xA1\x80(\x9Dm\xEDVȻi1cY\xC03\xBF\x80\xB2h\xF8?\xC6 h怼@my\x80\xDA\xF2 \xB5\xE4
+ j\xDC9oZJ\x8A\x8B\xE0\x871@\x94ζvf,\xC5\xD4\xF2nZ\xB23\xD2\xF9;'\xD0\xFCQ\xD8\xDBZ\xC8[1\xD8t\xEB\xAD\xEC\x80\xE6\x82"Gsp\xED
+ j\xC8 \xD4\x907 \xA8-\x8A\x90\xB7\xCAL6\xA0\x9AXYY);\xA0\x99Ry\x8F?q\xCC\xF8\x89\xF2\xE4=׆\xD5QX\xA5\x8DU|\x95\xA8\xF2\xDE9\xCF\xC8ȤR\xA8\xA1\x8C\xCC,\xDBn]\x9B2$5\xE7ݻw\xCA\xA1ިb\xCC \x92\xBF\xF7N\xBA\xFC\xFB\xF0\xE1\xC3<<ܓ.]&\x8Db\xBD4\xB1J~\x8An=s6\xD1s\xE4X\xC7\x93\xA7N\xCF\xF9gJ`\x8F\xBE\xD1\xC9\xD9\xD5\xC9\xD95,"\x92\xC7\xE3\x91\xE5\xFCv\xFC\xA4\x87\xE7\xE8>\xFF\x996T]\xB1\xB2\xB2ڿ\xBF~\xFDڵk\x87\xCA\xCD͝5kV\x97.]:v\xEC8mڴ\xB2\xB222[BB\x82\xA3\xA3c\x87\x86
+\x96\x9D\x9D-VNff\xA6\x83\x83Áꬱ\xBEU\x9D6\xF9)\x9AP\xF0H\xA8rɛ\xCF\xE7_\xBF~\xD3}\xA8\xEB0w\xB7\xEB\xD7o\xF2\xF9|\x99\x89)\xC4\xD2\xDC\x9D\x9D7\xFD\xD1\xE3\xFDq{n\\xBD2\xC8i@XD$aܵg_IIi♓\xE7N\x9F(,*ڽ7\x8E̟\x99\xF5,\xE1\xE8\xC1\x87\xF7o\xA3\xEFc\xA8\xFF\xE4ɓK\x97.\xBD}\xFB!\xE4\xED\xED=s\xE6\xCCG\x8F=z\xF4\xA8}\xFB\xF66l \xB3ݻw\xEF̙3nnnAAA\xA2%\\xBBvmڴi6l\x989sf\x9D\xD55\xAC
+\xA2\xF7\xEE\x9Dh\xE2ݻw\x91\x91\x91\xE3ƍ\xFB\x96\xDD\x9A\xB9\xE4}3\xED\x8FN\x9D\xAC\xCDY,s\xCBںc\xDA\xB7\xEA[M\xE0\x8Ae,\x96\x99\x8E\x8E\xCET\xAF\xC9/\xFF齯\xA4\xA4\xFA\xFB-f0L&3\xC0镔T2\xFF\xD2%\x8B\x8C\x8D\xEB7\xA3\xB0\xAA \xB5\xC7 a2\x99D:55\xF5\xA7\x9F~\xD2\xD6\xD6600X\xBE|\xF9\xFCAf
+
+\xB5\xB0\xB0\xD0\xD5\xD5\xF5\xF1\xF1y\xF6\xECi?r\xE4\xC8ʕ+<8d\xC8ybh@\xB5\xF1\xF8\xF1\xE33g΄\x87\x87\xCBS/\xA0`\xE4\xBA\xF6N\xBA\xF4\xBB\xC70w"\xED1\xCC=\xE9\xD2\xEF\x83]\x9C\xEBU\x8D\x91\xA1!\x91\xD0\xD6\xD6D\x9A\xCD\xE6\xB4liI\xA4--[\xB0\xD9\xFFN\xCBfffJ\xA6EGj\x80\xD4\xEBXsss2\xFD\xE8ѣ\x8D7>{\xF6\x8C\xCB\xE5"\x84(
+\xB9\x89\xFC\xCA\xD3\xD1\xD1!#B(>>~\xECرݻw\x973\x86T!\x95\x8F?\x86\x84\x84\xEC߿_KKKΪER\xB7\xBC\xD9l\xF6\x83?{/dͺ\xAF>4\x9B\xCDf2\x994\xAD\xBA\xBAZ[[!T\xFE\xE9S}\xEBf2\x85\xAD[\xB7B2\xEA\xD9]ח\xF9\xF3\xE7\xAFZ\xB5\xCA\xC9\xC9I__\xFF˗/]\xBB\xD6}#\xF3\xE4ɓ\x93&M222\xF2\xF5\xF5m\xA2*$\xE1\xF1x.\\xB7n\x9D\x85\x85\x82\xFE ԗ\xBA\xE7\xBF'\xA7uB\K\xCB0\xF7\xA1\xC9WRB?v\xE8p\xF4\xD8o\xD5\xD5\xD5\xC5\xC5%7\x93.\xFA\xEFss\xEB,y\xC8`\x97\xAD\xD1\xDB8\x87\xC3\xD9\xED:d\xB0\xD4l\xDFõ\xB7(\xD5\xD5\xD5t:\x9DN\xA7\xF8\xF0!00P\x97-Z\x9C<y\xF2\xE4ɓ\xBBv\xEDj\xA2*
+
+yC\xA4W\xAE\9j\xD4(;;\xF8\xC3L\xF3\xA5ny_\xBCt\xD9\xD3\xD3C\xD42\xDC\xC3\xFD\xE2\xA5\xCB\xA1U+W\xDC\xFC\xE3\xD6@7\xEF\xD9s\xFA\xD8\xFD\xFB\xAF\x89\xA9S&O\x9D\xE6]\xA7,\xE7\xCF\xF5e2\x99#\xC7L9f\x82\x99\xA9ټ9>
+\xDAucӦM6l\xB0\xB1\xB1\x998q\xA2\xFC\xE2177?y\xF2\xE4ٳgccc%\xB7\x8A]\xF07\xAC
+\x84\x90\x8F\x8F\x8F\xA7\xA7'Q\xC8\xE9ӧW\xAE\ wΛ3\x94\xD3\xC7\xF6\xC0\xAB<\x9B\x8E\xB4\xABI\x9Dm\xED\xE0c ə\x84\xBD\x8AQ\\xDA\xD5$x\xE6 \xD4\x907 \xA8- o P[@\xDE \xA0\xB6\x80\xBC@m\x81w\xAD5-\xC4\x82\xF0\xB2T\x80\xA6T`
+A@\x89\xC0\xE0 \xD4\x907 \xA8- o P[@\xDE \xA0\xB6\x80\xBC@m\x81;\xE7ML!\x88S\xAA0\x85 L!\xA8n\xC0B\x98B \x80F \xE4
+ j\xC8 \xD4\x90\xB7\x8Ao5\xE4G.y3
+98:\xB9\xBC\x9A\x9CEH\xB6\xCB7Ǧn4Htb *\xD0\xD4\xC8\xDB{\xA7?\xB8s\xF7֍#\xF7\xF7\xE8n;g\xDE\xC2\xE7/^4iXjɠA\x83\xAE]\xBB\xA6\xEC(\x80\xEF\x88zΩT\xAA\x99\x99\xE9/\xC6\xF9\xFAΊ\xDF\x880\xE6\xE7,]\xB6b\xC0\xA0!\xFD\xFA\\xB8d)\x87\xC3A\xD2f\xC40l\xC7\xCE݃\xDD<8\xAF&&\xC7\xF8\xDEpqq\xB9~\xFD:\x91\x9B\x8E!TSSصk]\xBB\xD5\xD4\xD4v\x8F\xB7l\xD92;;\xBB\xBD{\xF7\x92\xA5IN\xF8\xE9ӧ^\xBDz\xB1\xD9l"\x83@ \xE8ի9= \xF0Ґko\x97A\x83\x9Efdi?\xFF\x80I'\xA4&'\xA5&_\xB2j\xDB6*&I\x9BE\xF0\xE0\xA1#/^\xE6$=\x98\x9A\x9CD\xA7\xD3cw|}\xDB\xFEw5\x86\xB7\xB7\xB7\xFF\xFB\xEF\xBF \xBD\x89MLJڲe\xCBǏ\xD3\xD2\xD2n\x99\x9F\x9F\xBFu\xEBV¾u\xEBV6\x9B}\xFB\xF6\xED\xE4\xE4\xE4\xBBwINhdd\xE4\xE9\xE9y\xFC\xF8q"ý{\xF7z\xF4\xE8abb\xA2\xC0]\x9A
+\x91\xB7\xB1\xB1Qee%\x91>u\xE2X\xBB\xDEt:]__o\xFE\\xDF{\xF7\xFF\x94\xEAr\xFEB\xD2\xF2e~\xE6,\x96\xAE\xAE\xEE\xA2s\xAF\xDFHkx\xC8*\x8DF\xEB߿\xFF\x8D7\xA4n\xBDp\xE1\xC2\xEAիMLLLMM[w\xE1\xC2\xC2~\xFE\xFCyҾv\xEDZ2\xBF\xD4i \xBD\xBD\xBD\x88\xB9\xC1\x92\x93\x93G\x8F\xDD\xE4{4c\xF2\xD4Zy\xF9'}}}"\x9D\x91\x91\xBBs\xF7˗9UUU迓щRRZ:a\xA2B\xC7q\xA1PHfS\xB3\xE9\xEB\x84\x9FK\x9D.\xB7\xB4\xB4\xB4M\x9B6D\xBAu\xEB֥\xA5\xA5D\xBA\xA4\xA4\xA4u\xEB֤\x9D\xCC/u\xC06m\xDA\xF4\xE8\xD1\xE3\xF2\xE5˞\x9E\x9E\xF7\xEE\xDD i\xD2\xDD\x9A9
+\x91\xF7\xB57z\xF6\xB0%ҁ\xC1!~\x8B\xF6sp\xD0\xD3\xD3\xE5r\xB9NήR]L\x98̃\xFB\xF7\xB1Xf
+\x8FT-4h\xD0\xFA\xF5\xEB\x8D&~\xE4MMM?|\xF8@\\x8A\xF8\xF0\x81T\x9B\x99\x99\x89\xDA\xC9\xFC\xB5M\xE8\xE3\xE3\xB3v\xEDږ-[\xF6\xEAՋ\x98\xDD\xF8n\xA9\xC7\xE0\(\x96\x96\x96\x9D\xFC\xDF鸸\xB3f\xCE \x8C5\xD55ZZZt\xBAVAAahx$\x99Yl\xC1qcG\x87ED\xE6\xE5\xE5\x82ׯ\xFF
+^Mؿ\xABko\x84\x90\x89\x89I\xBBv\xED\xFE\xFC\xF3O\xF4\xDF\xE9\xF8BÇ_\xBF~}YYYYY\xD9ڵk=== \xFB\x88#BCC\xD9lvYY\xD9\xFA\xF5\xEB\xC9\xFC\xB5MأGMM\xCDM\x9B6\x8D3FQ\xBB4S䕷\x9D\xBDc\xBF\xFE\xBD\xA6\xCD\xF8믌=\xBB\xB6[[w$\xEC!\xAB\x82\xA2bb\xFB;\xB9\xF8\xCE]У\xBB-\x99_l\xC1i\xBFz\xF5\xE8\xD1}\xEE\xFCE\xFD\x9D\x9CW\xAD^\xEB<ȩqwC\x85pvv&~\x9D\x8E!\xB4|\xF9rSS\xD30\xC0\xDC\xDC|ٲe\x84\xDD\xDF\xDF\xDF\xC8\xC8觟~ruuupp ˑ1
+\xA0\x8F\x8FOnn\xAEhf\xE0\xFB\xA6lZ$\xA7\xCC\xCA\xCAZ\xB8pam7\xD8\x85\xDF~\xFB-77\xB7^3\xFB
+C\x91S\xC2BM]\x9BT\xDB\xF1\xF1\xF1 MW\xA0*\x80\xBC\xD5
++++*\x95\xBAf͚-Z(;@\xF9\x80\xBC\xD5
+\xF2! @\xF0\x8F1 Pc@\xDE \xA0\xB6\xC0\xE0\xBCi\x81)1`
+A\xF5\xA6\x94\xCE@my\x80\xDA\xF2 \xB5\xE4
+ j\xC8 \xD4\xB8s\xC0\x82\x800\x85\xA0\xFA Sb\xC0\x82\xEAL!\x90\xC0\x82 4 o P[@\xDE \xA0\xB64\xBE\xBC\xBF\xB7\xB7#@\xB3\xA5\xEE[kR\xE5\x9A\xFE\xE0\x8E\x9D\xBD#\xF1\x96r2 @\xB3\xA2ny\x93\xD2\x931H \x9A9
+\x9C\x93\xF3\xA2\xFF\xCEH\xD3\x80r\xF9\xD6ko\xC9\xD9I`\xDA(a) P.Mx\xE7\xA6
+ \xE5҄O\xAD\xC1\xB4\x81 \xA0\\x9AP\xDE0m (\x97F\x9C\x8B\xCDH\xD3\x80ri\x84ޛ\x98-\x90\xCB劍\xBA\xA7\xFDꅎ&̝\xBF\xA8\xA4\xB4Īm[\xEF\x99ӿ\xBD. \xE4\xA6lZ$\xA7\xBEs9\x85 <s j\xC8 \xD4\x907 \xA8- o P[@\xDE \xA0\xB6\xC0\xBB֚\x98B\xA6T`
+A@\x89\xC0\xE0 \xD4\x907 \xA8- o P[@\xDE \xA0\xB6\x80\xBC@m\x81;\xE7ML!\x88S\xAA\xD9\xE9c\xA7\xF8*;
+\xA0\xB9\xF0<\xF3L!\xA8n\xE0\xB8P\xD9! \xDF# oE\x80\xE3ʎ \xF8.y+\xD07\xA0@ފ y\xCA \xE4\xADp\xF2VΟ<0v\x8A\xAF@\xC0Wv r\xF2V\xD0{\xAB*Ҡ oE \x83s5CU\xE4\xAD`p\xAEf\xA8J\x83\x82\xBC\x82\x8A|\xD9\xF2\xA2"
+*\x97\xBC\xC9yEtuumm\xBB\xF8/mӦuSFUw<\xAA5Q\x99\x8C\x93\xC1m\xA8;B\xE8J\xF2\xA6xMMOO\xF9\xE2y\xD34Q\xB7ܽ7!\xA7\xF2\xF2\xF2\x84\xE3'\x83C\xD6=\xBC\xBF)\xA3\x92+U\xA2\x96\xD3\xE1ɓ'T*!\xF4ד'=z\xF4ݔ\x98x\xC30\xBE\x802\xC1q\x84\xD0֨\xA8}q\xF1\x92}f\xCF\xF2_\xBAT\xE11I\xA1~\xFF366\x9E\xED=\xE3\xD5\xEBW\xC4j~~\xC1\xD2e+ү\xFF\xC0\x85K\x96r8\xC2ng\xEFx\xF8\xE8\xB1!C\x87\xF7wrY\xB7!\x9C\xCF\xFF\xFA+\x86a;v\xEE\xEC\xE6\xE18\xC09(x5\x97\xCB%\xF3\xFFv\xFC\xA4\x87\xE7\xE8>\xFD\xC5j\xBC{\xEF\xFE/\x93\xBCx\x8E\x9Bx\xFE"\x99\x9F\xF8]d\x94\xAFtp\x84K]\xCE%\x9E=jԨ\x91#ϞK\xB5\xFA\xFC)&66<,T\x86/,JYD\xD4\xCFo\x89\xA7\xA7\xF8\xD3㞞\xC3\xFD\xFC\x96\xC8vW\xF5\x93wyyy\xFC\x81C?v\xF8\x91X\xF5\xF3\x984qBjrRj\xF2%\xAB\xB6m\xA3bbɜO\x9E<=u\xFC\xE8\xC5\xC4\xD3l6{\xCFޯ\xDFpy\xF12'\xE1\xE8\xC1\xD4\xE4$:\x9D\xBBc\x99?3\xEBY\xC2у\xEF\xDF\xABq\xF5\xDA
+\xBE\xB3gݺy-n̬߮g\xA2\x9B\xD2\xDC!\x96\x90\xE0\xC0\xE1\xC3d\x94\xAF\xF4Iqi\xD4\xD4\xD4\II>\xDC\xC3\xD3s\x{55451A}\x9ArӖ\xADQ^^\x93\xAD\xAC\xDA\xD6\xE6(\xD1E\x85\x85np\xB0\xB7'\xDA\xC1\xDE>,t\x83\x8CVS\xF0\x89'\xAF\xBC\x89\xD2sԸ\xEC\xEC\xE7\xD6\x9D\xEB\xF3ԉc}\xECz\xD3\xE9t}}\xBD\xF9s}\xEF\xDD\xFF\x93\xCC\xEF\xC1`0\xBF\xC5\xC9WR\xE3\xF9I˗\xF9\x99\xB3X\xBA\xBA\xBA\x8B̽~#\x8D̿t\xC9"ccc\xC9z\xE9ZZ%e\xA5l\xC7\xC2\xDC<$8P2CFfVҥ\xE4\xE0\xA0 \xD9\xE5+i_\xE5]\xEB\xD2\xD9\xC6\xC2\xDC\xDC\xC2ܼ\xB3\x8D\xCD\xF5\xEB\xD7 {\xC6ӌW9\xAF\xA6\xFF\xFA+"\xCE\xE5\xF7X\xB0\x88,\xFFmPMm{l\x8C\xADm7\x84\x90\xADm\xB7\xED\xB11\x9A4Z\xDD~\xD7\xDEbddd\xC6\xEE\xDC\xFD\xF2eNUUB\x88B\xA1\x90\x9B,-[\x90\x8926\x9BH\x97\x94\x96N\x98\xE8\x85\xC2q\(\x8A\xE6733\x95Z\xEF\xA6\xC8\xF0\xFD\xC5\xC5\xD0\xD3\xD7\xF3\xF7[<\xE0\xE7\xFF\x8C\xDEKJJ#7o\x8DISSSF\xF9J\xBFV\x97\xFA\xB5\x9Dx\xFE\xC2\xC8#\x88M#Gx&&^psuEEl\x8C]O\xA1P\x88M\x8A\xFF\xCA\xEAD\xB4Q\xF4\xF4\xF4v\xEFܱ"hedD\xB8\x9E\x9E^\xB3j\xAFo\xFAa,08\xC4o\xF1\xC2~zz\xBA\.\xD7\xC9ٕ\xDCTPPغu+\x84Paa\x93\xC9 \x8C&L\xE6\xC1\xFD\xFBX,3\xF9\xAB\xE8\xD2\xD9&jK$\x8E\xE3w\xEF\xDD_.*o>\x9F\xBFr՚ ?\xB2\xC0\x94\xAFp\x89\x8B\xAE\xB2\xB2\xB2\xBBw\xEF\xFD\xF1ǭ\x80\xC0 \xC2B\xA3\xD1J\xCBJMLL\xFEz\xFA\xD4\xC3s$\x99\xB3sW\xDBgYO+ b
+j\xCC0g\x97\xA4]\xE9|\xD3˘j\xAAk\xB4\xB4\xB4\xE8t\xAD\x82\x82\xC2\xD0\xF0H\xD1M\xD1۶\x97\x97\x97\x97\x97\x97G\xC5\xC4u\xFD*\xFBqcG\x87ED\xE6\xE5\xE5\x82ׯ\xFF
+^]g+W\xADy\xF3\xF6\xAD \xC3pǰ\xFF\xFCk:,b\x93\xFBP\xD7\xEE\xDDmIKm\xE5+\xFD\xDA\xE1\xE2KR\xD2e\x8Fa\xEE\xCF2\x9F\x92\xCB\xCF\xE1\x97.\xFD\x8Ep$jD=\xCB|*\xE9\x8BҖZ\xB4~\xEE\x8A\xE2\x9Bz\xEF\x90UAQ1\xB1\x81\xC1f\xA6\xA6S\xBD&\xA7^\xBDFn\xEA\xDB\xF8\x89^UUU\x83\x9D\xCD\xF1\x9DE\xA7\xFDꅎ&̝\xBF\xA8\xA4\xB4Īm[\xEF\x99\xD3\xEB\xACb\xA0\xD3\xCF\xCBV\xE6\xB4m\xD3:t\xDD\xD1MI\x97.']\xBA\xBEq\xB1\x9A\xFE\xE0N\xCAW\x92\xB6\xC4\xC4\xF3AA+D\xED#<=#6FN\xF5\x9AR\xA7/\xA0tT\xA5Q(\xA7\x8F\xEDi\xF4Wè\xDCc'MG\xDAդ\xB1S|+>q\x94\xD08\xA4$\x9D\xFA\x96\xCD\xCB}\xA3\xB0\x971\xA5]M\x82\x87R\x83j|\xD9r\xA3
+\xF2V\xAA2\x96\xE4DU\xB4I\xE4
+#sqT\xE4l \xE4EEzoE\xD0\xDC~/\xBEUiP\x90\xB7"P\x91\xEFz\xA0n\\xDCǔ\xB3K\x94\x85\xBC\x80\xBC\xE8P oE\xA0*wb 5\xE4\xADT\xE5R
+P3@\xDEM\xCE\xF3\xCCG\xCA\xF8Ny7-\x9Dm\xED`\x86P@\x94ζv
+\xAB\xE4ݴ\x98\xB1,6$ \x88\xF1M\xFF \xA09\xF2 \xB5\xE4
+ j\xC8 \xD4\x907 \xA8- o P[@\xDE \xA0\xB6\x80\xBC@my\x80\xDA\xF2 \xB5\xE4
+ j\xC8 \xD4\x907 \xA8- o P[@\xDE \xA0\xB6\x80\xBC@my\x80\xDA"\xEF\xDBZҮ&\xC9\xCE \xEF$Q \xCDjnƔԫ[\xA2\xB6\xB1\xD9lŇT\xDBqhVǧ9P\x8F\xDE{\xEC\xDFږ\xDA\$'\xD6\xFE\xF6\xA9\xB6EKx\xF3\xF6\xED\xF8_\xA6\xFC\xF90!t\xEB\xF6\x9D_&y\xF5st\xFAe\x92\xD7\xED;wE\xF3\x9FK\xBC Z\xC2\xDD{\xF7\xC5\xC23~\xE2\x98\xF1\xBF10١6,C3\x84\x8Cy[\xEC\xCE-\x91ኔ\x93*.\xE5\xF2M\x83s+++++\xABF\x8A\xA4\xDE<}\x9A\xE1\xBF<p\xED\x9AU}\xFB\xD8ef=
+߸\xCC\xDFW\x97\xF9\xFB\x85\x86o\xCCz\x96M\xE6<\x97x\xC30r\xF5\xF0\x91c\xA2\xE5dddR)T*\x85\x9A\x91\x99ո\xAAeOB\xEETqII\xB7n]\x95R5 '
+\x97\xF77
+\xFB\xEE\xBD\xFB\xBFL\xF2rp\xE09rl\xE2\xF9\x8B\x84ð;wv\xF3p\xE0\xBC\x9A\xCB\xE5\xD6\xE6\x9E\xF6ǭ5\xEBC\xB7l\xDAإ\xB3
+B\xE8\xD0\xE1\xA3\xE6\xCD\xE9c\xD7[SS\xB3\x8F]\xEFys|>Jf\xEEի畔\xABD\xFA\xF6\x9D\xBBVVmE\x8BJ\xBA\xFC\xFB\xF0\xE1\xC3<<ܓ.]\x96?T\x81 \x8B\x8A\x89\xEC\xE61h\xB0۱\x84\xE3\x84\xD1\xCE\xDE\xF1\xB7\xE3'=<G\xF7q\xE8\x8FDz;{\xC7\xC3G\x8F
+:\xBC\xBF\x93˺
+\xE1|>\x9F\xDCjg\xEF(\xB5S\x92Z>I~~\xC1\xD2e+ү\xFF\xC0\x85K\x96r8\xA1\xD6\xEBPK\xCD,
+6\x8E\xE3}\xFAK\xA0I\xEE,B\x88\xC7ㅆotrvurv
+\x8B\x88\xE4\xF1x\xF5\x8DY\xB4.\xA9U\x90\xC8"\xA97\xF5\x937\xD9]\x93\xDA~\xF7\xEE]\xC3*^\xBDv\x83\xEF\xECY\xB7n^\x8B۷+3\xEBa<x\xE8ȋ\x979 G\xA6&'\xD1\xE9\xF4\xD8\xBB\xA4\xFA&\x9E\xBF\xBB}\xED1\xEDhGX\x9Efd\xF6w\xFC\x89\xCC\xD0\xDFf\x90\xABƍ9r\xF41UH\\xFC\x81I'\x90\x9B\xF8|\xFE\xF5\xEB7݇\xBAsw\xBB~\xFD\xA6\xE4\x89R[\xA8{\xE3\xE2y\x9Bp\xF4\xE0\x85sg>\x93\x993\xB3\x9E%=\xF8\xF0\xFEm\xB1B\x9E<yz\xEA\xF8ы\x89\xA7\xD9l\xF6\x9E\xBD\xF1蟾(\xFD\xC1\xA9\x9DRm\xE5\xF8\xF9L\x9A8!59)5\xF9\x92U۶Q1\xB12B\xADס\x96\x9AY\xD9\xC1K\xEE,Bhמ}%%\xA5\x89gN\x9E;}\xA2\xB0\xA8h\xF7\xFA\xC6\g$r\x9EHjOCz\xEFo\xD76B\x88\xAE\xA5URV\xCA\xE6p,\xCC\xCDC\x82 \xE3\xF9I˗\xF9\x99\xB3X\xBA\xBA\xBA\x8B̽~#M\xAAoXDdHp\xA0\xA5\xA5%i\xA9\xA8\xA8044$W
+
+
++++\xC9UKK˖-[\x91\xF6ǭۆF\x86Vm\xFF\xED\xBDo\xA6\xFDѩ\x93\xB59\x8Be\xCEbY[wL\xFB㖜\xA1^\xBE\x9C\xB0l\xA99\x8Be`\xA0\xEF̼t\xC9"ccc\xC9B\xFC\xFD3\x83\xE1\xEF\xB78\xF9JJ\x9Dǧ\xB6\xF2 N\x9D8\xD6Ǯ7\x9DN\xD7\xD7כ?\xD7\xF7\xDE\xFD?e\x84Z\xAFC-5s}\x91\xBA\xB3WRR ;\x93\xC9\xF0_z%%\xB5\xBE1\xD7Y\x89\x9C'\x92\xDA\xD3\xF0\xF7\x9Cˣm*\x95*
+\xA9ԯ_"\x86\x91\xE9M\x91\xE1\xFB\x8A\x8B;\xA0\xA7\xAF\xE7\xEF\xB7x\xC0\xCF\xFDB%\xA5\xA5&z!\x84p
+\x85
+Ej\xB1+V\x86\xAC\xD9\xFDC\xBB\xAF\xBD\xB7\x81\x81\xC1\xE7ϟ\xB1\xFA\xF9\xF3g}}}Q\x97 \xE3\xC7\xC6\xEE\xD8EA\x94\xF3\xE6\x88ړ.\xFD\xEE1̝H{sO\xBA\xF4\xFB`g$2LpGj\xA8\xA5ee\x96\x96-$c333\x953\x99\xD9ҲE\x9B]\xDB#\xA9\xAD|\x82\x8C\x8C\xCC؝\xBB_\xBE̩\xAA\xAAB\x91Jj\xA8\xF5:\xD4R3\xD7\xA9;\xCBfsZ\xB6\xB4$\xEDl6\xA7\xBE1\xD7Y\x89\x9C'\x92\xDA\xD3@y\xCB\xD9o\x9B\x9A\x9A|\xC8\xCBkۦ
+\xB1\xFA!/\xCF\xCC\xF4\xEB\xD9ߥ\xB3MԖH\xC7\xEF\xBF>4\x9Ch?&\xF3\xE0\xFE},\x96\x99\xECbG\x8F\xA1\xA9\xA59gޢؘ-\x9D\xAC\xADB\xDDm\xBBݾs\xD7s\xB8\x91\xE1\xF6\x9D\xBB\xDDm\xBB\x89\xBA\xD8\xF7\xEDë\xE1!\x84\xEC\xED\xFB\x90F6\x9B\xFD\xE0χw\xEE\xDEY\xB3\x8E\xB0\xD0h46\x9B\xCDd2EǜRC551)((lӦ\xB5<\xC7!TPPغu+\x84Paa\x93ɨ3\xBF\xEC\xF2\x83C\xFC/\xEC\xE7ࠧ\xA7\xCB\xE5r\x9D\x9C]e\x84Z\xAFC-5s}\x91\xBA\xB3L&\x83\xB42\xC6\xF5\x8D\xB9\xCE*H\xE4<\x91Ԟ\x86\xCE\xE5\x93\xBB\xBB\xB9m\xDA\xF5\xE1C\x9E@ \xF8\xF0!o\xF3\x96\xE8a\xEEnĦ\x95\xABּy\xFBV\x80a8\x8Ec\x98\x900\x8E;:,"2//_ \xBC~\xFDwP\xF0\xEA\xDAJ>\xCC}\xD9\xD2\xC5\xFAedd"\x84\xA6M\x9D\xB2cמ\x87\xE9\x8F\xF8A\xFA\xA3\xC7;w\xEF\x9D\x{1AB5D8}\xCB\xFFN&\xFC\xEFd\x82\xE8\xF9\xEF\xC9)C]\x87\x90\xC42\xCC}h\xF2\x95T1G\xA9\xA1zx\xB8o\xDA\x{171E38}\xA2\xA2rk\xF4\xB6:E\xF4\xB6\xED\xE5\xE5\xE5\xE5\xE5\xE5Q1\xB1C]\xBF\xAA\xD1\xC0@\xFF}n\xAE\xD4\xFC\xB2˯\xA9\xAE\xD1\xD2Ңӵ
+
+
+C\xC3#e\x87Z\xAFC-5s}\x91\xBA\xB3C\xBBl\x8D\xDE\xC6\xE1p8\xCE\xE6\xA8h\xD7!\x83\xEBs\x9DU\x90\xC8"\xA97\xF5\xEB\xBD\xEB{\xB1=g\xCE\xEC={\xE2|\xE7-(+c\x9B\x980\x87
+u\xF3\xF5\x99Ml\xE8\xF4\xF3\xF2\x80\x95\xF9m۴]\xB7\x860N\xFB\xD5M\x98;QIi\x89U۶\xDE3\xA7\xCB(\xDCu\xC8`Ms\xC9\xD2\xE5\xE1\xEC\xFB\xF6Y\xB0yKt\xEE\x87\xDC6\xAD\xDB\xAD\xB0\x95\xE37\x9B\x8B\x97./\xF7\xF7\xB5\xF7p5z\xF2\xA4_D\x8DRC\xF5\x99\xE5\xBDm\xFB\x8E\xC9S\xA6\xE18>\xCB{F\x9Duu\xEF\xDEm\xFCD\xAF\xAA\xAA\xAA\xC1\xE6\xF8\xCE"\x8CS\xA7L\x9E:͛\xCB\xE5Jޠ\x92]~Ȫ\xA0\xA8\x98\xC0`3Sө^\x93S\xAF^\x93j\xBD\xB5\xD4\xCC\xF5E\xEA\xCEΟ\xEB\xB99j\xE4\x98 \xA1\xC1.\xCE\xF3\xE6\xF8\xD47\xE6:\xAB \xA9\xA4\xC6PN\xDB#\xCFg\xF0\xD4ڷ\xF0]=M\xF5]\xEDls&\xEDj\x92\xBC\xBD7\xA8 T\xF8K \xA8- oE\xF0]
+V\xBF\xAB\x9Dm怼@my\x80\xDA\xF2 \xB5\xE4
+ j\xC8 \xD4\x907 \xA8- o P[@\xDE \xA0\xB6\x80\xBC@my\x80\xDA\xF2 \xB5\xE4
+ j\xC8 \xD4\x907 \xA8- o P[@\xDE \xA0\xB6\x80\xBC@my\x80\xDA\xF2 \xB5\xE4
+ j\xC8 \xD4\x907 \xA8- o P[@\xDE \xA0\xB6\xC8; Q\xB3\x9Dc\xAC\xBE3Z\xA5\xA4^\xDD\xB5\x8D\xCDf+\xE6m\xFB0\xE1\xA0D\xEA1C\xE8\xD8)\xBE\xB5m:\x93\xB0W\xAA]\xF2\xE4V\xFA\xE9\xBE-v\xE7\x96\xC8p[\xDBn\xCD! hR\xBE\xBB\xC1yqII79\xE6 5\xA0~\xF3{7"w\xEF\xDD\xDF\xBB\xE3}n\xAE\x99\xA9\x99\xF7\xCC\xE9\xA3Fz"\x840۽g_Ⅴ\xAA\xAA\xAA?\xF7 \xD4\xD5\xD5s\xE4\xF3\xF9a\x9B\xAE^\xBB\xAE\xAB\xAB\xEB5e"i\xB7\xB3w\\xBAdQ\xC2o'\x8AKJ\x9D\x9F_\xB05z[\xFA\xA3\xC7|>\xDFή\xD7\xFA5!\xC3\xCE\xDE!\xD4ǡ\xBF\xA8\x926-\x96\x9D\xBD\xE3\\xDF\xD9\xC7~;\xAE\xA5\xA5\xB520\xE0\xCD\xDBwǎ\xFDFӤ\xAD_\xBBھo\x84\x8F\xC7۴%*\xF5\xEAu\x84\x90\xEB\x97\xE5\xFE~ZZZ2g\xD7 \xA0qQZ\xEF\xBDz\xED\xDFٳnݼ\xB7oWf\xD63\xC2x\xF0Б/s\x8ELMN\xA2\xD3\xE9\xB1;vI:\xEE\xDEW^^~1\xF1\xF4\x89\x84\xC3\xD3\x89n\xCA\xCCz\x96p\xF4\xE0\xC3\xFB\xB7B~\xFE\x93&NHMNJM\xBEdնmTL,\xFAG\xC6\xE9\xEE\x99\x96!\x9B\xC3\xE2
+۷ \xFAIDAT\xB9|1q\xDE\x9FU\xABױ\xD9\xEC\xA4g\xE7\xCD\xF1\x89\x9DغkϾ\x92\x92\xD2\xC43'ϝ>QXT\xB4{o\x9C\xEC\xF0\xE4\xD95 h\\x94&o\xBA\x96VIY)\x9Bñ07 $\x8C\xE7/$-_\xE6g\xCEb\xE9\xEA\xEA.Z0\xF7\xFA\x8D4I\xC7\xE4\x94\xBF\xC5\x83\xC9d._\xEA'\xBAi\xE9\x92E\xC6\xC6\xC6D\xFAԉc}\xECz\xD3\xE9t}}\xBD\xF9s}\xEF\xDD\xFF\xB3\xBE\xFA\xCC\xF6\xD6\xD1\xD1\xE6>\xB4\xAA\xAAj\x96\xF7"\xFD\xEE\xDD{b땔T2\x8C \xFF\xA5WRRe\x87'Ϯ@\xE3Ҵ\x83s*\x95*
+\xA9ԯ_"\x86\x91\xE9M\x91\xE1\xFB\x8A\x8B;\xA0\xA7\xAF\xE7\xEF\xB7x\xC0\xCF\xFDB%\xA5\xA5&z!\x84p
+\x85
+E\xB2̲2\xB6\xA5e"M&\xCC\xCCL\xC9tFFf\xEC\xCE\xDD/_\xE6TUU!\x84\xA4%#CC\x84\x90\xA6\xA6\xA6hZ [\xD9lN˖\x96dl6Gvx\xF2\xEC 4.M+oSS\x93yym۴!V?\xE4噙~U`\x97\xCE6Q["q\xBF{\xEF\xFE\xFA\xD0pB\xDE&L\xE6\xC1\xFD\xFBX,3e\x9A\x980
+
+[\xB7n\x85*((\xAC-[`p\x88\xDF\xE2\x85\xFD\xF4\xF4t\xB9\\xAE\x93\xB3k\xA3\xEDB!&\x93!\x83a,;<yv
+ \x97\xA6\x9C\xBB\xBB\xB9m\xDA\xF5\xE1C\x9E@ \xF8\xF0!o\xF3\x96\xE8a\xEEnĦ\x95\xABּy\xFBV\x80a8\x8Ec\x98\x900\x8E;:,"2//_ \xBC~\xFDwP\xF0j\xC92\xDD\\x87Do\xDB^^^\xCE\xE1p\xB6Fo\xAB\xAD\xEA\x9A\xEA---:]\xAB\xA0\xA004<Rj\xFD\xF7\xB9\xB9
+۵!\x83]\xB6Fo\xE3p8gsT\xB4\xEB\x90\xC1\xB2Óg\xD7 \xA0qiZyϙ3\xBB\x93\xB5\xB5\xEF\xBC\x8E\x9C}\xE7-\xB0\xE9d\xED\xEB3\x9B\xD84\xD0\xE9\xE7\xE5+vrپcW\xE8\xBA5\x84qگ^=zt\x9F;Q'\xE7U\xAB\xD7:r\x92,s\xAE\xEFlCC\x8Fc&L\x9Aڻw\xCFڪY\xDB\xDF\xC9\xC5w\xEE\x82\xDDm\xA5\xE6\x99:e\xF2\xD4i\xDE\xC4\xCD\xF3\xFA2\xAE/\x93\xC99f\xC2\xC81\xCCL\xCD\xE6\xCD\xF1\x91\x9E<\xBB \x8D\xE5\xF4\xB1=\xF2<p\xD6l\x9FZ @*iW\x93\xE4\xBD\xF6\xF5\x80\xCA\xF1\xDD=\xB5 \xDF o P[@\xDE \xA0\xB6\x80\xBC@my\x80\xDA\xF2 \xB5\xE4
+ j\xC8 \xD4\x907 \xA8- o P[@\xDE \xA0\xB6\x80\xBC@my\x80\xDA"\xE5cu\xFE\xF7 \x80f\x88\xE4\xDF:\xA5\xC8[\xC6t 4[J?\xE6\x8BY\xA4\xC8[2 \xAA\{\x80\xDA\xF2 \xB5\xE4
+ j\xC8 \xD4\xA5M!4\x80\x92\xE2\xA2\xEC\x8CteG\xA1:\xDBڙ\xB1,Čp@d\xE7y\xAB\xD9\xE9\xDF\xE7ϖ\xCF3eg\xA4K\xFE\xAEDv6\x90\xB7\xEA\x81\xE3Be\x87м\x80R o\xD5\xC7qe\x87м\x80R oD\xEE\x93\xF9\xCBǏHک\xAF\xCBbQ\xA8jtW\xD4] o\xD5C\xCE\xCE\xEAvp\xF0Ø\xAA\x86\x86\x98](Z\x8F3\xEC\xF0a\xA4.\x93+\xA0\xF7>q-s\xFB\xFF\xEE\x84B\x84\xE38\x8Ep\x84#\x84\xDC\xEC;\x86\xCEvi꪿\x90\xB7\xEA\x81\xCB\xD1[\xFD\xB1"\x90\x9B\x9117*J\x83NG8N,\xB8P\x88\x97{\xED\xE4\xC9\xE4Y\xDEn\xF1\xF1\xEA\xA1pyȷ \xC0\x84\xD1'\xEFn\xF0q\xD1Ӧc8E DB}\xE6
+"\xFC\xBEa\xB6s\x93V\xFD\x8D\x80\xBCU\x90\xBA:\xAB˖Ugf9\x8F\xFB);\x9B\x9B\x9F\x8F\x84B$\xE2B!\xC20ôMM]F\x8D\xBAz\xFE\xFC_\xB7}{r\xD3\xD24\xBD\xF7\xEB|\xF6-T*
+BFz\xDAi\xE5\xF2\x84\x94\xAA\xC1(.=Z\xE3xSU\xDDX\xA8\xD1\xD8w.\x93k\x8B\x97\xD4dd:\x8F\xF7);\xBB\xAA\xA8\x88B\xA5"*Q(\xE4R]\\xCC\xC9\xCArqw\xE7?{vu\xFE|٥5\xBE\xE5\x804\x8C\xEB\x8F\xDE\xCC?G\xA1\xFC3\xF2\xC7q!\x8E\xF8B\xC4\xE0|\xE7\xF0j\x9FJ\xA14E\xD5\xF2 \xE7\xA9\xBD\xB7\xEA!\xA3u\xAF/\\xC4\xFE\xDCy\xE2\xC4\xF2\xCC̪\x92\x92rMO\x9F\xCF\xC7\xFF\x84WR\xA9՚\x9A\xCC\xE2b!\x86
+4\xE8\xDAիז\xF89GG)*\xF6Z\xE9h\xDD)\xE7勆\xF9\xCA\xBA\xCBW\xDA{>=\xE5\xE1\xDFU5\xA2d
+B8\x8Eq$"L\x88B
+&D\xE5\x9F*\xBD\xEAFzoU\x97\xBA\\x9D;\x97\x9F\x95\xE5\xFC\xCB/\x9C\xBF\xFE\xE2\xB1\xB5\xB4P\xBBv_
+?\xFFs\x93\xBC\x82J\xAD04\xA4\xF7\xEAUB\xA7).f\xBF|9\xF0矿<x\x90 VTZZڈ\x91#\xBBt\xED6x\x88\xEB\xD9sgk\xAB\xB1Q\x97Z\xF7K\x8E;\xE3\x8D\xB7\x9A\xE7\xB7\xFDʓ\xD7%~^.\xFF\x96L\xC1q\x84\x848"\x86*\xBET㼊.V\xA6bU߸q\xC3c\xF8\xF0.]\xBBy~\xF3\xE6M\xD2\xDEѺ\x99~\xFD\xFA\x95\xFB0\x8FF:\u\xBD\xB7\xEAQ[\x8F\x91u\xF4\xD8\xFC͛9\x8FW\x97\x94\xF044j\x82\x96\xBF\xFC\x82*ܲ\xE7p(Tj\xA5\x8EN\xC7
+h\xBA\xBA\x99\xE9\xE9U8\x8Ec6\xD0\xC1\xE1@\\xFC\x80ȍd9O\x9E< Z\xB91\xC2oaa\xE1\xAE\xDD{F\x8F\xA5\xC4\xFDj:G1\xF2K>/\x8EM\xE9Ծ\xD5Ⱦ\xD6tM
+\x84\x90\xBDO<\xB9\xD5/\xFABHC\x832\xA4Ϗ\x81S\x9DK?U\x8AV\xFD\xF4\xE9\xD3\xE0U![\xB7l\xEEի\xE7\xE3\xC7O\x96-صs\xBB\xAD\xAD\xADh\x84\x8F?
+e\x93\xC2\xFA|\x90\xB7\xEAQ\xDBɡ\xA1\xA1A\xA5P\xAA
+)t\xA1PW (\x8A\x8En\xB1tiˀ\x80\xBC\x88\x9C\xCF\xFFq\xFDzM]ݜ\x95+\xB5\xF9|:BB\xAF\xFC\xF8\xD1\xCC\xCAJ\xECr..n\xFF2\xFF\xA5\x8E\x8E?!\x84Z\xB7nFl\xFD\xF0\xE1CDD\xE4\x83?\xF0\xF9\xFB\xBE}###\x98L&B\xA8\x93M\x97\xB5kW\xEF\xDB_\\ܡC\x87\x8Da\x9D:uB \x82\xCD[\xB6^\xB8pQ ̛;gƌ\xE9!\xC3b\xB6Ş>}\xA6\xAA\xAAjР\x81\xA16\xE8\xE9\xE9\xCAޯ\x90z\xF1\xF0yA\xC8\xFE\x9Bn\xFD{\xDA\xFC`\xBB\x95\xD1\xCE\xC0 4*\xA2iP\xB44]S\x83N\xA3\xEA\xD05\xF5u\xE9
+*\xFB\xC4\xC50!\x95J!\xAB7n\xA9\xDF{\xFB\xBE!{\xFB\xBEK/ڳ7n\xE7\x8EX2\xC2kׯGFnڹsǏ:(L\xDE08WAj\xAF\xE18N\xDC$\xC71̈ǣ\x97\x95lެ\xA1\xA1\xD1><\xDCz\xEBVM]ݜU\xABPA\x81\x8FGHZ\x88\xE3\xC3\x8E\x8B\x96\xF3\xE8\xF1c\xA7$˟;w\xFE\xAF\xBFN\xBDs\xEB֝۷~\xF8\xA1]DD$Y\xEF\x83O8\xF6\xE7\xFD{C\xBB\x84\xAC^Kطo\xDF\xF9\xFA\xD5\xEBsgN_\xBF\x9AZXTD\xF7\xEEݗ\xFD,\xFBܙ\xD3wn\xDFҦkoٲ\xA59\x8C\xCDK\xCDZw\xE8\xF6x\xF7\xFE\x96榯*\x85B<;\xF7\xD3˼O9y\x9F^嗿.\xF8\x94\x93\xC7\xC9\xF9P\x96\x{6EA28B22}\x84S\xF9\xF2\xFDGG
+\x85,\xE1\xF1\x93'\x9D\x9C\xC8ՁNN\x8F?&\x83\xFF\xDF\xFFNoټ\xF5@|\xFC\x8F\xED;4\xCEe\x84|\x80\xBCU\x9C\xFC!\xFB\xBFB\xE8\xEB\x8F\xDBF\xFCf\xC8\xE3\xA1\xD2Ҳ\xC4DMM]\xDD\xE2yy\x84\xB6\x85B\xA1\x90P8\x86\x89\x95YQQa`h Y\xFEŋ\xE7\xED\xED\xFBҵ\xE9\xFA\xFAz\x8B/\xBA}\xE7Y\xEF\x9A\xD5!,s\x96\x8E\xAEΌӟ?N\xD8\xCF_\xB8\xB0jU\xB0\xB9\x85\xB9\xBE\x81~P\xE0
+\xC2x\xFA\xCC\xD9\xE0U+\xCD-\xCCuuu\xFC\xFD\xFDRR\xAF\x92\x85Զ_u\xFE\xAC-\xC3Q\x9Ee\xD5\xFE\x9B\xE8\xE9\xC4G\x9A\xEFJ\xAAp\x84(T*\x85JE\x88\x82#\x8AG\x98aB\ \xC41\x8Cx~ \xD14\xA85|\x81.]\x83,\xE4\xF3\xE7φF\x86䪡\x91aEE\xFC\xEA5k7lX߲U\xCBoU\xCEB\x83s\xD5C\xD6Ў\xE8\xBDqQ\xA9\xA1
+
+
+L[\x9B5b\x95B\xA1"\xD4bĈO\x8F 0\xCF\xC8\xC0\xF8|!\x9F\x8FS\xA9HK'\\xFE\xC1\xC0\xC0\xE0ӧOC\xAC\xEC'\xFD\xB55\xFA\xF9\x8B\xE7\nB\x88B\xF9whjhhH\xA4\xB5\xB5\xB5\x82\xAF7\x9CKJJZ\xB6\xB4\x8B\xB6\xB8\xB8\xD8\xD3s$\xFA\xFAE$-DY\x83s\x9E #\xFE\x95\xC2\xC7p&\xA4aT\x9C\x87}\xFA"\xA0 \x9CF\xC5u4)ښmM*\x91\xC0\x858\xA2"m\xBAfQYE[\x86\xE8(//'\xAEVB\xE5\xE5\xE5\xE4ֵkV\xFB/[\xB7\xB7}\xFB\xF6\xDFj}\x81\xDE[\xA9\xED;!\x84\xE38\x86!\xA1aXB\x95::֯\xD7\xD4\xD7\xBBiS\xF6\xF2\xE5T
+\xA5˺ue\xF9\xF9\x9F0\xECKV֗\x97/+\x9F?\xC7\xF2\xF9\xA2\xE5\xF4\xEC\xD1\xE3\xD6\xB7$\xCB_\xBAt\xD9\xE4ɓn^\xBF\xF6,\xF3\xE9\xC3\xF7\xF0\xFF$V\xCD\xCCL\xF3\xF2\xF2\xC4
+155\xB9\x9A\x92\x9C\xF9\xF4IV\xC6_\xD9Y\xCF2\x9FJ/Dr\xD7p@\xE4[6\xCE\xE8ڻ\xD5ɋ75\x91\xA0\x8D\x89ne\x96WV\xFD鋠\x9A'`\xE8\x9F`8\x86\xE1\x98P\xA8I\xA3\xE9\xE9O}\xEA\xD2\xDBJ\x{120965}\xA5\x91\xABiii={\xF4 \x83?n\xEC\x92E\xA7\xCF\xF0\xCE~\x96\xDD8\xFD\xB7|\x80\xBCU\x8F:\xDA\xC61\xACþw\xD3\xD0\xD5}V\xFD\xF81\xE7\xE8\xD1\xE7k\xD7j\xD2\xE9?9RM\xA7s"Dc\xB1p\xB12gyψ\x8A\x89\xB9s\xF7.\x8F\xC7\xCB\xCD\xCD
+^Bث\xAB\xAB\xB5\xB4\xB4455?\xE4公YKz\x89\xB9\x93\xAB#G\x8C
+
+/,,\xFA\xFC\xF9s\xC4\xC6H\xC2\xF8˄ k֮\xCF\xCD\xCD\xE5\xF3\xF9/_\xE6,]\xB6\j!\x92\xBBր"?\xD3ܺN\xB6?\x9B|\xAB\xA8\xA4\xACS+
+*ť\xBB\x85S7s\xC7\xCE\xE6\xF6\x9DX\xBDduo\xCF\xEAle֡\xB5)\xB7Z\x90\xF1wQ\xE4\xB1?\xF4\xB5\xB5\xC6\xFClM\x96\xE0=sztL\xEC\xFD\xFBx<ރ\xC6l\xDB\xEE\xED=Ct\xD7F\x8C\xF0Z0\xCB\xC7\xF7ɓ'\xDF\xB0\x9C\xA7
+\xCEU\x8F\xDA.\xBD0\xE3\xFF\xFD7\xA5\xAC\x8C[P \xE0\xF3Q\xFF\xFE\xE9酗.\xF1\xEE\xDE\xD5\xFB\xF0\xC1\xA1\x8A\xE4\xE4*\xB5Մ t##B8Bt:\xC5\xC2B\xAC\xCC\xEE=\xBA\xAF]\xBBf\xCB֨7oh\xD1\xC2\xD7w6\xB1u\xC3\xFA\xB5\x91\x9B6/),d\x99\x99M\x9F1-9\xF9
+\xE9%\xB1:w\xAE\xEF֭\xD1cƍ\xC7q|\xCE\xC2\xE8\xED=\xE3\xC0\x81C3\xBDg\x97\x94\xB4kg\xE5\xEB3\xBB\xB6B\xBE\xFD\x80ԋ~]Z\xEE\xF1\xEA\xBF\xF3\xFB\x93\xD5O=:q\xF4\xFF\xF6\xEE7\xB6\x892\x8E\xF8\xF3\xFC\x9E\xBBۮ뺎\xD8:&\xAEGP\xA3,r\xA3\xC9b\xC0\x8A\xC9D\xA31\xFA\xDEBF0&ƨ\xF8B\xC3\xE5\x8DQ\xF0\xCF\xD4\xE2\x83c\xBEbaY711A\xA7Xx\x81\xB4\xA6\xACfֲn\x8C\xA5w\xF7<\xBE(k\x9A\xD9\xDE\xBDn\xBB\xE3\xF7Is/\xDA\xE6\xB9\xE7\xF9徹\xE7\xFE\xF4\xFA\xFA\x81\xA3\xF3\xBEC)YP\xD7\xDCxa\xDB\x9D\xFAݤd7\xAAw\xE8\xFB\xDEy\xEB\xFD\xFD\xFB\x89d$\xD2\xF6u}ü\xA1=\xB5\xFDII\x96^ݵ\xFB\xF4O\xF1\xEA;\xBC\xF4\xE8\xE1C>\xF3\xADC\xFDϾ\xF4\xCAt.[\xF6\xD33|\x98\xFC\xEA뮭\xDB&\x86\x87\xA7._&\xE1\xF05]\xCA\xE8('D\xC2 \x99R\x94U\xDD\xDD\xECʕ\xDCȈ\x89\xAC\x8D\xC5\xC6.^L <\\xE2\xB1ܔ\xBF\x97\xCA>\x9Cľ \xB7\xE0ڬ\xF1\xE6\xE7\xF1<g\xDDO<\xF4ާ?\xF4\xB2S-;\xABRAJ
+
+\xF4\xE3\xDE\xDB}*\xCD͢\xAF\xED\x84\x9E\x{8B7AF3}\xD3b*\x91PN\x9E,\xA4\xBA\xB0\xE4\x84\xF8\xF2\xF9\x99#G!
+\x9A\x89\xC5\x8D\xFD\xED\xF7?s\xFCX\xB1\xCD\xF5h\xD9\xC6\xCF\xFE\xFEk\xAD\xC6S\xB5\xC5OV䫓\xEC\xDAz\xF0\xF8o\xBD\xDFB\xF2\xF9\xBC\x82\xCE Z\xEE7v\x95\x8AF\x96\xBBno\xF7\xB1ٚ\xA3{\xF7P\xA0\xFD\x87>\xEBڲ\x85\x91K&yI\xBC\x8BK\xBF\xA6\xB5\xC5b\xBF\x8C_oo\xDF\xF1\xEDa\xA6(\xC56\xFF=s\xB3+]v\x8E\xF4\x8Dsn\xA6e\x99\xA6i\xBE\xF8\xB8\xD6\x94?>\x91\xFB'\x93)|
+ \x801`\x8CI\x92Ę$\xCB\xCC\xDD\xED[\xA9hN\xF5\xED\x96a\xBC]\xC8v\x83\xD9\xD8\xD3#(\xFC\xF8\xC9\xC1\xA77m\xE2B\xE4\xD2iJ\x88 \xA4x*\xA0ik::~\x8E\xC7\xF9#w}\xD9Ks\xE2\xD0uYU\xDD\xD34\x8D"\xD34
+Co\xF3\xBF\xB1s}\xF6\xDF,\xE7 $I\x92\x98$˒$\xDFXpKV\x85\xFD\xEFi+
+\xC6\xDB}\xEC\xCF$\x86q\xE7s;\xC7\xD3\xE3}\xDF\xDB\x8D\xB6l\xDEL\xFD~^8\xA3ι\xB0,\xE1\xF3
+\xF6\xF5M\xB6\xB7\xDF߳;\x99J\x85á\xFA\xFA\xFA%\xEB|-Tj\x8D%@i\xC9\xAC]\xDDhq\xAB09g\xC0\x80\xC1\xBC/ G\xCE\xEA\xD5\xC6\xDB}l\xE6{333\xA9Tj<\x9D\xCE\xE9\xFAĥ?\xBF95Xz5\xA5x\x99\xBB\xEF^\xF6أ\xFC\xFC\x85\xD5-\xD9\xD9\xD9뚦ɲ\xBC\x94CpV\xF5`Ji\x9D\xA2(\xB2\xCC瘦iY\x96eYB\x90\x9C1\xC0\x83G\xD6[ko\xAA\xBCU\xF9T\xF5\x9Eu\xEB\xEEjm\x9D\x9E\x9E\x9E\xDCؑ\xDDӓ\xBDz5\x93\xC9LN\xE6\xD3hhh\xCD\xC1`\xB0\xB99ljllljj\xAAS\xFB6]\xC0\xA1\xCESB \x84\xDC(K\x8D\xD7Xko\xF7Yp\xA7\xA1\xAA\xAA\xAA\xAA\xA1P\x88,\xE2ȕ\xBFZ\x90\x86P#o\xF7Y\xE1\xC7{KR \xC6\xDBe.\x9C\xADx
+\xE6\xF6\x84\xB1\x81\xF1v\x93\xF5b\xB7\xF3?\xE6\x95}b\xE3\xED&\xA1p\xDEA\
+b1\x86\x90ga\xBC\xF2,\x8C7B\x9E\x85\xF1Fȳ0\xDEy\xC6!\xCF\xC2x#\xE4Yo\x84<㍐gI\x84\x90\xA1\x81\xFE\xE5\xEEB\xC8y\xFF0\x8E\xF6~\x86P IEND\xAEB`\x82
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 559
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=559&view=rev
Author: biot
Date: 2009-03-26 09:32:20 +0000 (Thu, 26 Mar 2009)
Log Message:
-----------
Initial revision of the tasks plugin
Added Paths:
-----------
trunk/tasks/
trunk/tasks/AUTHORS
trunk/tasks/COPYING
trunk/tasks/ChangeLog
trunk/tasks/INSTALL
trunk/tasks/Makefile.am
trunk/tasks/NEWS
trunk/tasks/README
trunk/tasks/autogen.sh
trunk/tasks/configure.in
trunk/tasks/po/
trunk/tasks/po/ChangeLog
trunk/tasks/po/LINGUAS
trunk/tasks/po/POTFILES.in
trunk/tasks/po/POTFILES.skip
trunk/tasks/src/
trunk/tasks/src/Makefile.am
trunk/tasks/src/tasks.c
trunk/tasks/src/tasks.h
Added: trunk/tasks/AUTHORS
===================================================================
--- trunk/tasks/AUTHORS (rev 0)
+++ trunk/tasks/AUTHORS 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1 @@
+Bert Vermeulen <bert(a)biot.com>
Added: trunk/tasks/COPYING
===================================================================
--- trunk/tasks/COPYING (rev 0)
+++ trunk/tasks/COPYING 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ 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
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Added: trunk/tasks/ChangeLog
===================================================================
--- trunk/tasks/ChangeLog (rev 0)
+++ trunk/tasks/ChangeLog 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1,3 @@
+2009-03-16 Bert Vermeulen
+ * Initial release
+
Added: trunk/tasks/INSTALL
===================================================================
--- trunk/tasks/INSTALL (rev 0)
+++ trunk/tasks/INSTALL 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1,182 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
Added: trunk/tasks/Makefile.am
===================================================================
--- trunk/tasks/Makefile.am (rev 0)
+++ trunk/tasks/Makefile.am 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1,30 @@
+
+SUBDIRS = src po
+
+DOCDIR = $(DESTDIR)$(docdir)
+
+EXTRA_DIST = autogen.sh po/LINGUAS
+
+dist-bzip2: distdir
+ BZIP2=$(BZIP2_ENV) $(AMTAR) --bzip2 -chof $(distdir).tar.bz2 $(distdir)
+ -rm -rf $(distdir)
+
+sign:
+ if test -f $(PACKAGE)-$(VERSION).tar.gz; then \
+ gpg --detach-sign --digest-algo SHA512 $(PACKAGE)-$(VERSION).tar.gz; fi
+ if test -f $(PACKAGE)-$(VERSION).tar.bz2; then \
+ gpg --detach-sign --digest-algo SHA512 $(PACKAGE)-$(VERSION).tar.bz2; fi
+
+html:
+ rst2html README index.html
+
+install-data-local:
+ $(mkinstalldirs) $(DOCDIR)
+ $(INSTALL_DATA) $(top_srcdir)/README $(DOCDIR)
+ $(INSTALL_DATA) $(top_srcdir)/ChangeLog $(DOCDIR)
+ $(INSTALL_DATA) $(top_srcdir)/NEWS $(DOCDIR)
+ $(INSTALL_DATA) $(top_srcdir)/COPYING $(DOCDIR)
+ $(INSTALL_DATA) $(top_srcdir)/AUTHORS $(DOCDIR)
+
+uninstall-local:
+ rm -rf $(DOCDIR)
Added: trunk/tasks/NEWS
===================================================================
--- trunk/tasks/NEWS (rev 0)
+++ trunk/tasks/NEWS 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1,4 @@
+Tasks 1.0 (2009-03-26)
+
+ * Initial release
+
Added: trunk/tasks/README
===================================================================
--- trunk/tasks/README (rev 0)
+++ trunk/tasks/README 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1,61 @@
+Tasks Plugin
+------------
+
+About
+-----
+The tasks plugin goes through a file being edited and picks out lines with
+"TODO" or "FIXME" in them. It collects the text after those words and puts
+them in a new "Tasks" tab in the message window. Clicking on a task in that
+tab takes you to the line in the file where the task was defined.
+
+Development Code
+----------------
+
+Get the code from:
+
+ svn checkout http://geany-plugins.svn.sourceforge.net/svnroot/geany-plugins/trunk/tasks
+
+
+Requirements
+------------
+For compiling the plugin yourself, you will need the GTK (>= 2.8.0) libraries
+and header files. You will also need its dependency libraries and header
+files, such as Pango, Glib and ATK. All these files are available at
+http://www.gtk.org.
+
+And obviously, you will need have Geany installed. If you have Geany installed
+from the sources, you should be ready to go.
+If you used a prepared package e.g. from your distribution you probably need
+to install an additional package, this might be called geany-dev or geany-devel.
+Please note that in order to compile and use this plugin, you need Geany 0.16
+or later.
+
+Furthermore you need, of course, a C compiler and the Make tool.
+The GNU versions of these tools are recommended.
+
+
+Installation
+------------
+Compiling and installing the code is done by the following three commands:
+$ ./autogen.sh
+$ ./configure
+$ make
+$ make install
+
+
+Usage
+-----
+After installed successfully, load the plugin in Geany's plugin manager.
+There is nothing else to do; tasks will automatically appear and disappear
+in the Tasks tab as they are found in the files being edited.
+
+
+License
+-------
+The tasks plugin is distributed 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. A copy of this license
+can be found in the file COPYING included with the source code of this
+program.
+
+
Added: trunk/tasks/autogen.sh
===================================================================
--- trunk/tasks/autogen.sh (rev 0)
+++ trunk/tasks/autogen.sh 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1,159 @@
+#!/bin/sh
+# Run this to generate all the initial makefiles, etc.
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+DIE=0
+
+if [ -n "$GNOME2_DIR" ]; then
+ ACLOCAL_FLAGS="-I $GNOME2_DIR/share/aclocal $ACLOCAL_FLAGS"
+ LD_LIBRARY_PATH="$GNOME2_DIR/lib:$LD_LIBRARY_PATH"
+ PATH="$GNOME2_DIR/bin:$PATH"
+ export PATH
+ export LD_LIBRARY_PATH
+fi
+
+(test -f $srcdir/configure.in) || {
+ echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
+ echo " top-level package directory"
+ exit 1
+}
+
+(autoconf --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: You must have \`autoconf' installed."
+ echo "Download the appropriate package for your distribution,"
+ echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
+ DIE=1
+}
+
+(grep "^AC_PROG_INTLTOOL" $srcdir/configure.in >/dev/null) && {
+ (intltoolize --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: You must have \`intltool' installed."
+ echo "You can get it from:"
+ echo " ftp://ftp.gnome.org/pub/GNOME/"
+ DIE=1
+ }
+}
+
+(grep "^AM_PROG_XML_I18N_TOOLS" $srcdir/configure.in >/dev/null) && {
+ (xml-i18n-toolize --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: You must have \`xml-i18n-toolize' installed."
+ echo "You can get it from:"
+ echo " ftp://ftp.gnome.org/pub/GNOME/"
+ DIE=1
+ }
+}
+
+(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && {
+ (libtool --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: You must have \`libtool' installed."
+ echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/"
+ DIE=1
+ }
+}
+
+(grep "^AM_GLIB_GNU_GETTEXT" $srcdir/configure.in >/dev/null) && {
+ (grep "sed.*POTFILES" $srcdir/configure.in) > /dev/null || \
+ (glib-gettextize --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: You must have \`glib' installed."
+ echo "You can get it from: ftp://ftp.gtk.org/pub/gtk"
+ DIE=1
+ }
+}
+
+(automake --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: You must have \`automake' installed."
+ echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/"
+ DIE=1
+ NO_AUTOMAKE=yes
+}
+
+
+# if no automake, don't bother testing for aclocal
+test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "**Error**: Missing \`aclocal'. The version of \`automake'"
+ echo "installed doesn't appear recent enough."
+ echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/"
+ DIE=1
+}
+
+if test "$DIE" -eq 1; then
+ exit 1
+fi
+
+if test -z "$*"; then
+ echo "**Warning**: I am going to run \`configure' with no arguments."
+ echo "If you wish to pass any to it, please specify them on the"
+ echo \`$0\'" command line."
+ echo
+fi
+
+case $CC in
+xlc )
+ am_opt=--include-deps;;
+esac
+
+for coin in `find $srcdir -path $srcdir/CVS -prune -o -name configure.in -print`
+do
+ dr=`dirname $coin`
+ if test -f $dr/NO-AUTO-GEN; then
+ echo skipping $dr -- flagged as no auto-gen
+ else
+ echo processing $dr
+ ( cd $dr
+
+ aclocalinclude="$ACLOCAL_FLAGS"
+
+ if grep "^AM_GLIB_GNU_GETTEXT" configure.in >/dev/null; then
+ echo "Creating $dr/aclocal.m4 ..."
+ test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
+ echo "Running glib-gettextize... Ignore non-fatal messages."
+ echo "no" | glib-gettextize --force --copy
+ echo "Making $dr/aclocal.m4 writable ..."
+ test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
+ fi
+ if grep "^AC_PROG_INTLTOOL" configure.in >/dev/null; then
+ echo "Running intltoolize..."
+ intltoolize --copy --force --automake
+ fi
+ if grep "^AM_PROG_XML_I18N_TOOLS" configure.in >/dev/null; then
+ echo "Running xml-i18n-toolize..."
+ xml-i18n-toolize --copy --force --automake
+ fi
+ if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then
+ if test -z "$NO_LIBTOOLIZE" ; then
+ echo "Running libtoolize..."
+ libtoolize --force --copy
+ fi
+ fi
+ echo "Running aclocal $aclocalinclude ..."
+ aclocal $aclocalinclude
+ if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then
+ echo "Running autoheader..."
+ autoheader
+ fi
+ echo "Running automake --gnu $am_opt ..."
+ automake --add-missing --gnu $am_opt
+ echo "Running autoconf ..."
+ autoconf
+ )
+ fi
+done
+
+conf_flags="--enable-maintainer-mode"
+
+if test x$NOCONFIGURE = x; then
+ echo Running $srcdir/configure $conf_flags "$@" ...
+ $srcdir/configure $conf_flags "$@" \
+ && echo Now type \`make\' to compile. || exit 1
+else
+ echo Skipping configure process.
+fi
Property changes on: trunk/tasks/autogen.sh
___________________________________________________________________
Added: svn:executable
+ *
Added: trunk/tasks/configure.in
===================================================================
--- trunk/tasks/configure.in (rev 0)
+++ trunk/tasks/configure.in 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1,63 @@
+# Process this file with autoconf to produce a configure script.
+# $Id: configure.in 2 2008-04-02 14:52:33Z eht16 $
+
+AC_INIT(configure.in)
+AM_INIT_AUTOMAKE(tasks, 1.0)
+
+AM_CONFIG_HEADER(config.h)
+
+AC_PROG_CC
+
+AC_DISABLE_STATIC
+AM_PROG_LIBTOOL
+LIBTOOL="$LIBTOOL --silent"
+
+AC_PROG_INSTALL
+
+# checking for Geany
+PKG_CHECK_MODULES(GEANY, [geany >= 0.16])
+AC_SUBST(GEANY_CFLAGS)
+AC_SUBST(GEANY_LIBS)
+
+GEANY_VERSION=`$PKG_CONFIG --modversion geany`
+GTK_VERSION=`$PKG_CONFIG --modversion gtk+-2.0`
+
+# i18n
+GETTEXT_PACKAGE=tasks
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package.])
+
+ALL_LINGUAS="`sed -e '/^#/d' $srcdir/po/LINGUAS`" # take all languages found in file po/LINGUAS
+
+AM_GLIB_GNU_GETTEXT
+# workaround for intltool bug (http://bugzilla.gnome.org/show_bug.cgi?id=490845)
+if test "x$MSGFMT" = "xno"; then
+ AC_MSG_ERROR([msgfmt not found. Please install the gettext package.])
+fi
+
+# intltool hack to define install_sh on Debian/Ubuntu systems
+if test "x$install_sh" = "x"; then
+ install_sh="`pwd`/install-sh"
+ AC_SUBST(install_sh)
+fi
+
+# get the plugin installed at the correct location for Geany
+# TODO find a way to NOT override --libdir/--docdir command line option if given
+libdir="`$PKG_CONFIG --variable=libdir geany`/geany"
+docdir="${datarootdir}/doc/geany-plugins/${PACKAGE}"
+
+
+AC_OUTPUT([
+Makefile
+src/Makefile
+po/Makefile.in
+])
+
+echo "----------------------------------------"
+echo "Install tasks plugin binary in : ${libdir}"
+echo "Install tasks files in : ${prefix}"
+echo "Using Geany version : ${GEANY_VERSION}"
+echo "Using GTK version : ${GTK_VERSION}"
+echo ""
+echo "Configuration is done OK."
+echo ""
Added: trunk/tasks/po/ChangeLog
===================================================================
--- trunk/tasks/po/ChangeLog (rev 0)
+++ trunk/tasks/po/ChangeLog 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1,3 @@
+2009-03-16 Bert Vermeulen
+ * Initial release
+
Added: trunk/tasks/po/LINGUAS
===================================================================
--- trunk/tasks/po/LINGUAS (rev 0)
+++ trunk/tasks/po/LINGUAS 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1 @@
+# set of available languages (in alphabetic order)
Added: trunk/tasks/po/POTFILES.in
===================================================================
--- trunk/tasks/po/POTFILES.in (rev 0)
+++ trunk/tasks/po/POTFILES.in 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1,3 @@
+# List of source files containing translatable strings.
+
+src/tasks.c
Added: trunk/tasks/po/POTFILES.skip
===================================================================
--- trunk/tasks/po/POTFILES.skip (rev 0)
+++ trunk/tasks/po/POTFILES.skip 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1 @@
+# List of source files containing translatable strings but should be ignored.
Added: trunk/tasks/src/Makefile.am
===================================================================
--- trunk/tasks/src/Makefile.am (rev 0)
+++ trunk/tasks/src/Makefile.am 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1,7 @@
+
+lib_LTLIBRARIES = tasks.la
+tasks_la_SOURCES = tasks.c tasks.h
+tasks_la_LDFLAGS = -module -avoid-version
+tasks_la_LIBADD = @GEANY_LIBS@ $(INTLLIBS)
+
+AM_CFLAGS = @GEANY_CFLAGS@ -DLOCALEDIR=\""$(localedir)"\" -DDOCDIR=\""$(docdir)"\"
Added: trunk/tasks/src/tasks.c
===================================================================
--- trunk/tasks/src/tasks.c (rev 0)
+++ trunk/tasks/src/tasks.c 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1,507 @@
+/*
+ * tasks - tasks.c
+ *
+ * Copyright 2009 Bert Vermeulen <bert(a)biot.com>
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <gdk/gdkkeysyms.h>
+
+#include "geany.h"
+#include "support.h"
+#include "sciwrappers.h"
+
+#include "prefs.h"
+#include "ui_utils.h"
+#include "utils.h"
+#include "document.h"
+
+#include "plugindata.h"
+#include "geanyfunctions.h"
+
+#include "tasks.h"
+
+
+GeanyPlugin *geany_plugin;
+GeanyData *geany_data;
+GeanyFunctions *geany_functions;
+
+PLUGIN_VERSION_CHECK(GEANY_API_VERSION);
+PLUGIN_SET_INFO(_("Tasks"), _("Task manager"), "1.0", "Bert Vermeulen <bert(a)biot.com>");
+
+#define DEFAULT_TOKENS { "TODO", "FIXME", NULL };
+
+static GString *linebuf = NULL;
+static unsigned int linebuf_len = 0;
+static char *tokens[] = DEFAULT_TOKENS;
+static GHashTable *globaltasks = NULL;
+static GtkListStore *taskstore = NULL;
+
+
+void plugin_init(GeanyData *data)
+{
+
+ globaltasks = g_hash_table_new(NULL, NULL);
+ linebuf = g_string_sized_new(256);
+ create_tasks_tab();
+ scan_all_documents();
+
+}
+
+void plugin_cleanup(void)
+{
+ GeanyTask *task;
+ GtkWidget *notebook;
+ GList *editors, *editor;
+ int page;
+
+ g_string_free(linebuf, TRUE);
+
+ editors = g_hash_table_get_keys(globaltasks);
+ for(editor = g_list_first(editors); editor; editor = editor->next)
+ free_editor_tasks(editor);
+ g_hash_table_unref(globaltasks);
+
+ notebook = ui_lookup_widget(geany->main_widgets->window, "notebook_info");
+ page = GPOINTER_TO_INT(ui_lookup_widget(geany->main_widgets->window, "notebook_tasks_page"));
+ gtk_notebook_remove_page(GTK_NOTEBOOK(notebook), page);
+
+}
+
+PluginCallback plugin_callbacks[] =
+{
+ { "editor-notify", (GCallback) &on_editor_notify, TRUE, NULL },
+ { "document-open", (GCallback) &on_document_open, TRUE, NULL },
+ { "document-close", (GCallback) &on_document_close, TRUE, NULL },
+ { "document-activate", (GCallback) &on_document_activate, TRUE, NULL },
+ { NULL, NULL, FALSE, NULL }
+};
+
+
+static gboolean on_document_close(GObject *object, GeanyDocument *doc, gpointer data)
+{
+
+ if(doc->is_valid)
+ free_editor_tasks(doc->editor);
+
+}
+
+
+static gboolean on_document_open(GObject *object, GeanyDocument *doc, gpointer data)
+{
+
+ if(doc->is_valid)
+ scan_document_for_tasks(doc);
+
+}
+
+
+static gboolean on_document_activate(GObject *object, GeanyDocument *doc, gpointer data)
+{
+
+ if(doc->is_valid)
+ render_taskstore(doc->editor);
+
+}
+
+
+static gboolean on_editor_notify(GObject *object, GeanyEditor *editor,
+ SCNotification *nt, gpointer data)
+{
+ static int mod_line = -1;
+ unsigned int pos, line, line_len, offset;
+
+ switch (nt->nmhdr.code)
+ {
+ case SCN_MODIFIED:
+ line = sci_get_line_from_position(editor->sci, nt->position);
+ if(nt->linesAdded != 0)
+ /* check if existing tasks had their line numbers changed */
+ lines_moved(editor, line, nt->linesAdded);
+ else
+ /* same-line change: we'll check it later */
+ mod_line = line;
+ break;
+ case SCN_UPDATEUI:
+ pos = sci_get_current_position(editor->sci);
+ line = sci_get_line_from_position(editor->sci, pos);
+ if(mod_line != -1 && line != mod_line)
+ {
+ /* cursor left a line that was changed, scan it for tokens */
+ offset = scan_line_for_tokens(editor->sci, mod_line);
+ if(offset)
+ found_token(editor, mod_line, linebuf->str + offset);
+ else
+ no_token(editor, mod_line);
+ render_taskstore(editor);
+ mod_line = -1;
+ }
+ break;
+ }
+
+ return FALSE;
+}
+
+
+static gboolean tasks_button_cb(GtkWidget *widget, GdkEventButton *event, gpointer data)
+{
+ GeanyDocument *doc;
+ GtkTreeView *tv;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ gboolean ret;
+ unsigned int line;
+
+ if (event->button == 1)
+ {
+ ret = FALSE;
+
+ tv = GTK_TREE_VIEW(ui_lookup_widget(geany->main_widgets->window, "treeview_tasks"));
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv));
+ if (gtk_tree_selection_get_selected(selection, &model, &iter))
+ {
+ gtk_tree_model_get(model, &iter, 0, &line, -1);
+ doc = document_get_current();
+ ret = navqueue_goto_line(NULL, doc, line + 1);
+ }
+ }
+
+ return ret;
+}
+
+
+static gboolean tasks_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
+{
+ GtkTreeView *tv;
+ GdkEventButton button_event;
+
+ if(event->keyval == GDK_Return ||
+ event->keyval == GDK_ISO_Enter ||
+ event->keyval == GDK_KP_Enter ||
+ event->keyval == GDK_space)
+ {
+ button_event.button = 1;
+ button_event.time = event->time;
+ tv = GTK_TREE_VIEW(ui_lookup_widget(geany->main_widgets->window, "treeview_tasks"));
+ tasks_button_cb(NULL, &button_event, tv);
+ }
+
+ return FALSE;
+}
+
+
+static void free_editor_tasks(void *editor)
+{
+ GList *tasklist, *entry;
+ GeanyTask *task;
+
+ tasklist = g_hash_table_lookup(globaltasks, editor);
+ if(tasklist)
+ {
+ for(entry = g_list_first(tasklist); entry; entry = g_list_next(entry))
+ {
+ task = (GeanyTask *) entry->data;
+ g_string_free(task->description, TRUE);
+ g_free(task);
+ }
+ g_list_free(tasklist);
+ }
+ g_hash_table_remove(globaltasks, editor);
+
+}
+
+
+static void scan_all_documents(void)
+{
+ int i;
+
+ for(i = 0; i < geany->documents_array->len; i++)
+ {
+ if(document_index(i)->is_valid)
+ {
+ scan_document_for_tasks(document_index(i));
+ }
+ }
+
+}
+
+/* go through every line of a document and scan it for tasks tokens. add the
+ * task to the tasklist for that document if found. */
+static void scan_document_for_tasks(GeanyDocument *doc)
+{
+ unsigned int lines, line, offset;
+
+ lines = sci_get_line_count(doc->editor->sci);
+ for(line = 0; line < lines; line++)
+ {
+ offset = scan_line_for_tokens(doc->editor->sci, line);
+ if(offset)
+ found_token(doc->editor, line, linebuf->str + offset);
+ }
+ render_taskstore(doc->editor);
+
+}
+
+
+static void create_tasks_tab(void)
+{
+ GtkWidget *tv, *notebook;
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+ int page;
+
+ taskstore = gtk_list_store_new(2, G_TYPE_INT, G_TYPE_STRING);
+ tv = gtk_tree_view_new_with_model(GTK_TREE_MODEL(taskstore));
+ g_object_set_data(G_OBJECT(geany->main_widgets->window), "treeview_tasks", tv);
+ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tv), FALSE);
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv));
+ gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE);
+ g_signal_connect(tv, "button-release-event", G_CALLBACK(tasks_button_cb), (gpointer) tv);
+ g_signal_connect(tv, "key-press-event", G_CALLBACK(tasks_key_cb), (gpointer) tv);
+
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes(NULL, renderer, "text", 1, NULL);
+ gtk_tree_view_append_column(GTK_TREE_VIEW(tv), column);
+
+ notebook = ui_lookup_widget(geany->main_widgets->window, "notebook_info");
+ page = gtk_notebook_insert_page(GTK_NOTEBOOK(notebook), tv, gtk_label_new(_("Tasks")), -1);
+ g_object_set_data(G_OBJECT(geany->main_widgets->window), "notebook_tasks_page", GINT_TO_POINTER(page));
+ gtk_widget_show_all(tv);
+
+}
+
+
+/* copy the line into linebuf and scan it for tokens. returns 0 if no tokens
+ * were found, or the offset to the start of the task in linebuf otherwise. */
+static int scan_line_for_tokens(ScintillaObject *sci, unsigned int line)
+{
+ unsigned int len, len_done, offset;
+
+ offset = 0;
+ len = sci_get_line_length(sci, line);
+ if(len)
+ {
+ if(len+1 > linebuf->allocated_len)
+ {
+ /* why doesn't GString have this functionality? */
+ linebuf->str = g_realloc(linebuf->str, len+1);
+ if(linebuf->str == NULL)
+ return 0;
+ linebuf->allocated_len = len+1;
+ }
+ len_done = scintilla_send_message(sci, SCI_GETLINE, line, (sptr_t) linebuf->str);
+ linebuf->str[len] = 0;
+ if(len_done)
+ offset = scan_buf_for_tokens(linebuf->str);
+ }
+
+ return offset;
+}
+
+
+static int scan_buf_for_tokens(char *buf)
+{
+ unsigned int t, offset, len, i;
+ char *tok, *entry;
+
+ offset = 0;
+ for(t = 0; tokens[t]; t++)
+ {
+ entry = strstr(buf, tokens[t]);
+ if(entry)
+ {
+ entry += strlen(tokens[t]);
+ while(*entry == ' ' || *entry == ':')
+ entry++;
+ for(i = 0; entry[i]; i++)
+ {
+ /* strip off line endings */
+ if(entry[i] == '\t' || entry[i] == '\r' || entry[i] == '\n')
+ {
+ entry[i] = 0;
+ break;
+ }
+ }
+ /* strip off */ /* no really, I mean */
+ len = strlen(entry);
+ if(len > 1 && entry[len-2] == '*' && entry[len-1] == '/')
+ entry[len-2] = 0;
+ offset = entry - buf;
+ }
+ }
+
+ return offset;
+}
+
+
+static GeanyTask *create_task(unsigned int line, char *description)
+{
+ GeanyTask *task;
+ GString *descr;
+
+ task = malloc(sizeof(GeanyTask));
+ g_return_val_if_fail(task != NULL, NULL);
+
+ task->line = line;
+ task->description = g_string_new(description);
+
+ return task;
+}
+
+
+static int find_line(GeanyTask *task, unsigned int *line)
+{
+
+ if(task->line == *line)
+ return 0;
+
+ return 1;
+}
+
+
+static void found_token(GeanyEditor *editor, unsigned int line, char *description)
+{
+ GeanyTask *task;
+ GList *tasklist, *entry;
+
+ tasklist = g_hash_table_lookup(globaltasks, editor);
+ if(tasklist)
+ {
+ entry = g_list_find_custom(tasklist, (gconstpointer) &line, (gconstpointer) find_line);
+ if(entry)
+ {
+ task = (GeanyTask *) entry->data;
+ if(strcmp(description, task->description->str))
+ g_string_assign(task->description, description);
+ }
+ else
+ {
+ task = create_task(line, description);
+ tasklist = g_list_append(tasklist, task);
+ g_hash_table_replace(globaltasks, editor, tasklist);
+ }
+ }
+ else
+ {
+ /* this editor doesn't have a tasklist yet */
+ task = create_task(line, description);
+ tasklist = g_list_append(NULL, task);
+ g_hash_table_insert(globaltasks, editor, tasklist);
+ }
+
+}
+
+
+/* no token was found on this line, make sure there's nothing in the tasklist either */
+static void no_token(GeanyEditor *editor, unsigned int line)
+{
+ GList *tasklist, *entry;
+ char *old_description;
+
+ tasklist = g_hash_table_lookup(globaltasks, editor);
+ if(tasklist)
+ {
+ entry = g_list_find_custom(tasklist, (gconstpointer) &line, (gconstpointer) find_line);
+ if(entry)
+ {
+ tasklist = g_list_remove(tasklist, entry);
+ g_hash_table_replace(globaltasks, editor, tasklist);
+ }
+ }
+
+}
+
+
+static void lines_moved(GeanyEditor *editor, unsigned int line, int change)
+{
+ GeanyTask *task;
+ GList *tasklist, *entry, *to_delete;
+
+ to_delete = NULL;
+ tasklist = g_hash_table_lookup(globaltasks, editor);
+ for(entry = g_list_first(tasklist); entry; entry = g_list_next(entry))
+ {
+ task = (GeanyTask *) entry->data;
+ if(task->line >= line)
+ {
+ if(change < 0 && task->line < line - change)
+ /* the line with this task on it was deleted, so mark the task for deletion */
+ to_delete = g_list_append(to_delete, entry->data);
+ else
+ /* shift the line number of this task up or down along with the change */
+ task->line += change;
+ }
+ }
+
+ for(entry = g_list_first(to_delete); entry; entry = g_list_next(entry))
+ {
+ task = (GeanyTask *) entry->data;
+ tasklist = g_list_remove(tasklist, entry->data);
+ g_string_free(task->description, TRUE);
+ g_free(task);
+ }
+ g_list_free(to_delete);
+
+ g_hash_table_replace(globaltasks, editor, tasklist);
+ render_taskstore(editor);
+
+}
+
+
+static int keysort(GeanyTask *a, GeanyTask *b)
+{
+
+ if(a->line < b->line)
+ return -1;
+ else if(a->line > b->line)
+ return 1;
+
+ return 0;
+}
+
+
+static void render_taskstore(GeanyEditor *editor)
+{
+ GeanyTask *task;
+ GtkTreeIter iter;
+ GList *tasklist, *entry;
+
+ gtk_list_store_clear(taskstore);
+ tasklist = g_hash_table_lookup(globaltasks, editor);
+ if(!tasklist)
+ /* empty list */
+ return;
+ tasklist = g_list_sort(tasklist, (GCompareFunc) keysort);
+ g_hash_table_replace(globaltasks, editor, tasklist);
+
+ for(entry = g_list_first(tasklist); entry; entry = g_list_next(entry))
+ {
+ task = (GeanyTask *) entry->data;
+ gtk_list_store_append(taskstore, &iter);
+ gtk_list_store_set(taskstore, &iter, 0, task->line, 1, task->description->str, -1);
+ }
+
+}
+
+
+
Added: trunk/tasks/src/tasks.h
===================================================================
--- trunk/tasks/src/tasks.h (rev 0)
+++ trunk/tasks/src/tasks.h 2009-03-26 09:32:20 UTC (rev 559)
@@ -0,0 +1,46 @@
+/*
+ * tasks - tasks.h
+ *
+ * Copyright 2009 Bert Vermeulen <bert(a)biot.com>
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+
+typedef struct {
+ unsigned int line;
+ GString *description;
+} GeanyTask;
+
+
+static gboolean on_document_close(GObject *object, GeanyDocument *doc, gpointer data);
+static gboolean on_document_open(GObject *object, GeanyDocument *doc, gpointer data);
+static gboolean on_document_activate(GObject *object, GeanyDocument *doc, gpointer data);
+static gboolean on_editor_notify(GObject *object, GeanyEditor *editor, SCNotification *nt, gpointer data);
+static gboolean tasks_button_cb(GtkWidget *widget, GdkEventButton *event, gpointer data);
+static gboolean tasks_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data);
+static void free_editor_tasks(void *editor);
+static void scan_all_documents(void);
+static void scan_document_for_tasks(GeanyDocument *doc);
+static void create_tasks_tab(void);
+static int scan_line_for_tokens(ScintillaObject *sci, unsigned int line);
+static int scan_buf_for_tokens(char *buf);
+static GeanyTask *create_task(unsigned int line, char *description);
+static int find_line(GeanyTask *task, unsigned int *line);
+static void found_token(GeanyEditor *editor, unsigned int line, char *d);
+static void no_token(GeanyEditor *editor, unsigned int line);
+static void lines_moved(GeanyEditor *editor, unsigned int line, int change);
+static int keysort(GeanyTask *a, GeanyTask *b);
+static void render_taskstore(GeanyEditor *editor);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 557
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=557&view=rev
Author: frlan
Date: 2009-03-22 22:20:21 +0000 (Sun, 22 Mar 2009)
Log Message:
-----------
GeanyLaTeX: Use VERSION makro instead of hard coded version string
Modified Paths:
--------------
trunk/geanylatex/src/geanylatex.c
Modified: trunk/geanylatex/src/geanylatex.c
===================================================================
--- trunk/geanylatex/src/geanylatex.c 2009-03-22 22:19:38 UTC (rev 556)
+++ trunk/geanylatex/src/geanylatex.c 2009-03-22 22:20:21 UTC (rev 557)
@@ -27,7 +27,7 @@
PLUGIN_VERSION_CHECK(130)
PLUGIN_SET_INFO(_("LaTeX"), _("Plugin to provide better LaTeX support"),
- "0.4dev","Frank Lanitz <frank(a)frank.uvena.de>")
+ VERSION,"Frank Lanitz <frank(a)frank.uvena.de>")
GeanyPlugin *geany_plugin;
GeanyData *geany_data;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.