# HG changeset patch
# User galaxyp
# Date 1669922583 0
# Node ID d29c4c46e0576a713459ad91a29f74de64abd9f5
# Parent  dd0a6ad39f0e296dd5f7b0d6e094af4acf5cdf8b
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/openms commit 3d1e5f37fd16524a415f707772eeb7ead848c5e3
diff -r dd0a6ad39f0e -r d29c4c46e057 404-urls.patch
--- a/404-urls.patch	Fri Nov 06 20:29:14 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-diff -ruN FeatureFinderSuperHirn.xml FeatureFinderSuperHirn.xml
---- FeatureFinderSuperHirn.xml	2020-10-02 12:06:56.398572301 +0200
-+++ FeatureFinderSuperHirn.xml	2020-10-02 12:07:31.511153834 +0200
-@@ -105,6 +105,6 @@
-   
-+For more information, visit https://abibuilder.informatik.uni-tuebingen.de/archive/openms/Documentation/release/2.6.0/html/UTILS_FeatureFinderSuperHirn.html]]>
-   
- 
diff -r dd0a6ad39f0e -r d29c4c46e057 OMSSAAdapter.patch
--- a/OMSSAAdapter.patch	Fri Nov 06 20:29:14 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
---- OMSSAAdapter.xml	2020-06-16 15:51:40.315400730 +0200
-+++ /tmp/OMSSAAdapter.xml	2020-06-16 15:50:23.536086074 +0200
-@@ -22,6 +22,7 @@
- mkdir database &&
- ln -s '$database' 'database/${re.sub("[^\w\-_]", "_", $database.element_identifier)}.$gxy2omsext($database.ext)' &&
- 
-+makeblastdb -dbtype prot -in 'database/${re.sub("[^\w\-_]", "_", $database.element_identifier)}.$gxy2omsext($database.ext)' &&
- ## Main program call
- 
- set -o pipefail &&
diff -r dd0a6ad39f0e -r d29c4c46e057 PepNovoAdapter.patch
--- a/PepNovoAdapter.patch	Fri Nov 06 20:29:14 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
---- PepNovoAdapter.xml	2020-05-12 15:55:24.712831518 +0200
-+++ /tmp/PepNovoAdapter.xml	2020-05-12 15:36:31.267276757 +0200
-@@ -42,8 +42,13 @@
-   
-   
-     
--    
--      
-+    
-+        
-+            
-+            
-+            
-+            
-+        
-     
-     
-     
-@@ -51,8 +56,14 @@
-     
-     
-     
--    
--      
-+    
-+        
-+            
-+            
-+            
-+            
-+            
-+        
-     
-     
-       
diff -r dd0a6ad39f0e -r d29c4c46e057 QCImporter.xml
--- a/QCImporter.xml	Fri Nov 06 20:29:14 2020 +0000
+++ b/QCImporter.xml	Thu Dec 01 19:23:03 2022 +0000
@@ -1,13 +1,11 @@
 
 
 
-
+
   Imports tables with quality control parameters into qcml files.
   
     QCImporter
     macros.xml
-    macros_autotest.xml
-    macros_test.xml
   
   
   
@@ -53,13 +51,13 @@
     
   
   
-    
-    
-    
+    
+    
+    
     
-      
-      
-        
+      
+      
+        
       
     
     
@@ -72,13 +70,11 @@
       OPTIONAL_OUTPUTS is not None and "ctd_out_FLAG" in OPTIONAL_OUTPUTS
     
   
-  
-    
-    
-  
+  
+
   
+For more information, visit http://www.openms.de/doxygen/release/2.8.0/html/UTILS_QCImporter.html]]>
   
 
diff -r dd0a6ad39f0e -r d29c4c46e057 filetypes.txt
--- a/filetypes.txt	Fri Nov 06 20:29:14 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-# CTD type    # Galaxy type
-# the following lines need to be at the top in order to ensure 
-# correct translation Galaxy->CTD type for the ambiguous cases
-# (should only be relevant for the autogenerated tests [which 
-# do not set the ftype of the inputs])
-txt           txt
-tsv           tabular
-
-##analysisXML
-# XTandemAdapter output is named xml in OMS (which is to unspecific) and bioml in Galaxy .. so this is renamed via hardcoded parameters 
-bioml         xml
-consensusXML  consensusxml
-# TODO csv is problematic, since csv often actually means tsv .. but not always
-csv           csv
-##dat
-dta           dta
-dta2d         dta2d
-edta          edta
-fa            fasta
-fas           fasta
-fasta         fasta
-FASTA         fasta
-featureXML    featurexml
-featurexml    featurexml
-# fid
-html          html
-HTML          html
-idXML         idxml
-##ini         txt
-json          json
-kroenik	      kroenik
-mascotXML     mascotxml
-mgf           mgf
-mrm           mrm
-ms            sirius.ms
-ms2           ms2
-msp           msp
-mzData        mzdata
-mzid          mzid
-# important to have mzML first, since LuciphorAdapter is case sensitive https://github.com/OpenMS/OpenMS/issues/4444
-mzML          mzml
-mzml          mzml
-mzq           mzq
-mzTab         mztab
-mzXML         mzxml
-novor         txt
-obo           obo
-# I guess this is the idXML output of omssa
-omssaXML      idxml
-osw           osw
-OSW           osw
-params        txt
-paramXML      paramxml
-fasta         peff
-peplist       peplist
-# TODO pep.xml should be removed with OMS 2.6 https://github.com/OpenMS/OpenMS/pull/4541 .. but still in the tests
-pep.xml       pepxml
-pepXML        pepxml
-png           png
-PNG           png
-protXML       protxml
-psms          psms
-# TODO implement or use
-# psq
-pqp           pqp
-qcML          qcml
-spec.xml      spec.xml
-splib         splib
-sqMass        sqmass
-tandem.xml    tandem
-trafoXML      trafoxml
-traML         traml
-TraML         traml
-tab           tabular
-## MOVED TO TOP txt           txt
-raw           thermo.raw
-## xls: SpectraSTSearchAdapter https://github.com/OpenMS/OpenMS/pull/4419
-xls           tsv
-XML           xml
-xml           xml
-xquest.xml    xquest.xml
-xsd           xml
-
-# TODO needs to be implemented, needs to be below xml in order that Galaxy->OMS mapping gives xml
-# cachedMzML    xml
diff -r dd0a6ad39f0e -r d29c4c46e057 fill_ctd.py
--- a/fill_ctd.py	Fri Nov 06 20:29:14 2020 +0000
+++ b/fill_ctd.py	Thu Dec 01 19:23:03 2022 +0000
@@ -32,7 +32,7 @@
     for k, v in e.items():
         if (k in d and isinstance(d[k], dict) and isinstance(e[k], collections.abc.Mapping)):
             mergeDicts(d[k], e[k])
-        elif k not in d and not isinstance(e[k], collections.abc.Mapping):
+        elif k not in d:
             d[k] = e[k]
         else:
             sys.stderr.write("fill_ctd.py: could not merge key %s for %s in %s" % (k, d, e))
@@ -135,9 +135,10 @@
 # insert the hc_args into the args
 mergeDicts(args, hc_args)
 
-if "adv_opts_cond" in args:
-    args.update(args["adv_opts_cond"])
-    del args["adv_opts_cond"]
+# put the contents of the advanced options section into the main dict
+if "adv_opts" in args:
+    args.update(args["adv_opts"])
+    del args["adv_opts"]
 
 # IDMapper has in and spectra:in params, in is used in out as format_source",
 # which does not work in Galaxy: https://github.com/galaxyproject/galaxy/pull/9493"
diff -r dd0a6ad39f0e -r d29c4c46e057 fill_ctd_clargs.py
--- a/fill_ctd_clargs.py	Fri Nov 06 20:29:14 2020 +0000
+++ b/fill_ctd_clargs.py	Thu Dec 01 19:23:03 2022 +0000
@@ -1,40 +1,70 @@
 #!/usr/bin/env python3
+
+import operator
 from argparse import ArgumentParser
+from functools import reduce  # forward compatibility for Python 3
 from io import StringIO
 
 from CTDopts.CTDopts import (
+    _Null,
     CTDModel,
     ModelTypeError,
     Parameters
 )
 
+
+def getFromDict(dataDict, mapList):
+    return reduce(operator.getitem, mapList, dataDict)
+
+
+def setInDict(dataDict, mapList, value):
+    getFromDict(dataDict, mapList[:-1])[mapList[-1]] = value
+
+
 if __name__ == "__main__":
     # note add_help=False since otherwise arguments starting with -h will
     # trigger an error (despite allow_abbreviate)
     parser = ArgumentParser(prog="fill_ctd_clargs",
                             description="fill command line arguments"
-                            "into a CTD file and write the CTD file to",
+                            "into a CTD file and write the CTD file to stdout",
                             add_help=False, allow_abbrev=False)
-    parser.add_argument("--ctd", dest="ctd", help="input ctd file",
-                        metavar='CTD', default=None, required=True)
+    parser.add_argument("--ini_file", dest="ini_file", help="input ini file",
+                        metavar='INI', default=None, required=True)
+    parser.add_argument("--ctd_file", dest="ctd_file", help="input ctd file"
+                        "if given then optional parameters from the ini file"
+                        "will be filled with the defaults from this CTD file",
+                        metavar='CTD', default=None, required=False)
     args, cliargs = parser.parse_known_args()
+
     # load CTDModel
-    model = None
+    ini_model = None
     try:
-        model = CTDModel(from_file=args.ctd)
+        ini_model = CTDModel(from_file=args.ini_file)
     except ModelTypeError:
         pass
     try:
-        model = Parameters(from_file=args.ctd)
+        ini_model = Parameters(from_file=args.ini_file)
     except ModelTypeError:
         pass
-    assert model is not None, "Could not parse %s, seems to be no CTD/PARAMS" % (args.ctd)
+    assert ini_model is not None, "Could not parse %s, seems to be no CTD/PARAMS" % (args.ini_file)
 
     # get a dictionary of the ctd arguments where the values of the parameters
     # given on the command line are overwritten
-    margs = model.parse_cl_args(cl_args=cliargs, ignore_required=True)
+    ini_values = ini_model.parse_cl_args(cl_args=cliargs, ignore_required=True)
+
+    if args.ctd_file:
+        ctd_model = CTDModel(from_file=args.ctd_file)
+        ctd_values = ctd_model.get_defaults()
+        for param in ini_model.get_parameters():
+            if not param.required and (param.default is None or type(param.default) is _Null):
+                lineage = param.get_lineage(name_only=True)
+                try:
+                    default = getFromDict(ctd_values, lineage)
+                except KeyError:
+                    continue
+                setInDict(ini_values, lineage, default)
 
     # write the ctd with the values taken from the dictionary
     out = StringIO()
-    ctd_tree = model.write_ctd(out, margs)
+    ctd_tree = ini_model.write_ctd(out, ini_values)
     print(out.getvalue())
diff -r dd0a6ad39f0e -r d29c4c46e057 generate-foo.sh
--- a/generate-foo.sh	Fri Nov 06 20:29:14 2020 +0000
+++ b/generate-foo.sh	Thu Dec 01 19:23:03 2022 +0000
@@ -8,17 +8,15 @@
 
     # get the tests from the CMakeLists.txt
     # 1st remove some tests
-    # - OpenSwathMzMLFileCacher with -convert_back argumen https://github.com/OpenMS/OpenMS/issues/4399
+    # - OpenSwathMzMLFileCacher with -convert_back argument https://github.com/OpenMS/OpenMS/issues/4399
     # - IDRipper PATH gets empty causing problems. TODO But overall the option needs to be handled differentlt
     # - several tools with duplicated input (leads to conflict when linking)
-    # - TOFCalibration inputs we extension (also in prepare_test_data) https://github.com/OpenMS/OpenMS/pull/4525
     # - MaRaCluster with -consensus_out (parameter blacklister: https://github.com/OpenMS/OpenMS/issues/4456)
     # - FileMerger with mixed dta dta2d input (ftype can not be specified in the test, dta can not be sniffed)
     # - some input files are originally in a subdir (degenerated cases/), but not in test-data
-    # - SeedListGenerator: https://github.com/OpenMS/OpenMS/issues/4404
     # - OpenSwathAnalyzer 9/10: cachedMzML (not supported yet)
-    # - FeatureFinderIdentification name clash of two tests https://github.com/OpenMS/OpenMS/pull/5002
-    # - TODO SiriusAdapter https://github.com/OpenMS/OpenMS/pull/5010
+    # - SiriusAdapter_4 depends on online service which may timeout .. so keep disabled https://github.com/OpenMS/OpenMS/pull/5010
+    # - SiriusAdapter_10 should work in >2.8 https://github.com/OpenMS/OpenMS/issues/5869
     CMAKE=$(cat $OPENMSGIT/src/tests/topp/CMakeLists.txt $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake  |
         sed 's@${DATA_DIR_SHARE}/@@g' |
         grep -v 'OpenSwathMzMLFileCacher .*-convert_back' |
@@ -26,19 +24,9 @@
         grep -v "MaRaClusterAdapter.*-consensus_out"|
         grep -v "FileMerger_1_input1.dta2d.*FileMerger_1_input2.dta " |
         sed 's@degenerate_cases/@@g' |
-        grep -v 'TOPP_SeedListGenerator_3"' | 
         egrep -v 'TOPP_OpenSwathAnalyzer_test_3"|TOPP_OpenSwathAnalyzer_test_4"' |
-	egrep -v '"TOPP_FeatureFinderIdentification_4"' | 
-	sed 's/\("TOPP_SiriusAdapter_4".*\)-sirius:database all\(.*\)/\1-sirius:database pubchem\2/')
-
-
-#         grep -v 'FileFilter.*-spectra:select_polarity ""' |
-#         grep -v 'MassTraceExtractor_2.ini ' |
-#         grep -v "FileMerger_6_input2.mzML.*FileMerger_6_input2.mzML" |
-#         grep -v "IDMerger_1_input1.idXML.*IDMerger_1_input1.idXML" |
-#         grep -v "degenerated_empty.idXML.*degenerated_empty.idXML" |
-#         grep -v "FeatureLinkerUnlabeledKD_1_output.consensusXML.*FeatureLinkerUnlabeledKD_1_output.consensusXML" |
-#         grep -v "FeatureLinkerUnlabeledQT_1_output.consensusXML.*FeatureLinkerUnlabeledQT_1_output.consensusXML" |
+        sed 's/\("TOPP_SiriusAdapter_4".*\)-sirius:database all\(.*\)/\1-sirius:database pubchem\2/' |
+        grep -v '"TOPP_SiriusAdapter_10"')
 
     # 1st part is a dirty hack to join lines containing a single function call, e.g.
     # addtest(....
@@ -50,6 +38,7 @@
         # >&2 echo $line
         test_id=$(echo "$line" | cut -d" " -f 1)
         tool_id=$(echo "$line" | cut -d" " -f 2)
+        # >&2 echo "test_id $test_id"
         if [[ $test_id =~ _out_?[0-9]? ]]; then
             >&2 echo "    skip $test_id $line"
             continue
@@ -67,7 +56,7 @@
         tes="  \n"
         line=$(fix_tmp_files "$line")
         line=$(unique_files "$line")
-        # >&2 echo $line
+        # >&2 echo LINE $line
         #if there is an ini file then we use this to generate the test
         #otherwise the ctd file is used
         #other command line parameters are inserted later into this xml
@@ -77,19 +66,23 @@
         else
             ini="ctd/$tool_id.ctd"
         fi
+        # >&2 echo "========================================================"
+        # >&2 echo "USING ini $ini"
         cli=$(echo $line |cut -d" " -f3- | sed 's/-ini [^ ]\+//')
 
         ctdtmp=$(mktemp)
-        #echo python3 fill_ctd_clargs.py --ctd $ini $cli
         # using eval: otherwise for some reason quoted values are not used properly ('A B' -> ["'A", "B'"])
-        # >&2 echo "python3 fill_ctd_clargs.py --ctd $ini $cli"
-        eval "python3 fill_ctd_clargs.py --ctd $ini $cli" > "$ctdtmp"
-        # echo $ctdtmp
+        # >&2 echo "python3 fill_ctd_clargs.py --ini_file $ini $cli" 
+        eval "python3 fill_ctd_clargs.py --ini_file $ini $cli" > "$ctdtmp"
+        # >&2 echo $ctdtmp
         # >&2 cat $ctdtmp
         testtmp=$(mktemp)
-        python3 $CTDCONVERTER/convert.py galaxy -i $ctdtmp -o $testtmp -s tools_blacklist.txt -f "$FILETYPES" -m macros.xml -t tool.conf  -p hardcoded_params.json --tool-version $VERSION --test-only --test-unsniffable csv tsv txt dta dta2d edta mrm splib > /dev/null
+        # >&2 echo CTDConverter galaxy -i $ctdtmp -o $testtmp -s aux/tools_blacklist.txt -f "$FILETYPES" -m macros.xml -t tool.conf  -p aux/hardcoded_params.json --tool-version $VERSION --test-only --test-unsniffable csv tsv txt dta dta2d edta mrm splib --test-condition "compare=sim_size" "delta_frac=0.7"
+        CTDConverter galaxy -i $ctdtmp -o $testtmp -s aux/tools_blacklist.txt -f "$FILETYPES" -m macros.xml -t tool.conf  -p aux/hardcoded_params.json --tool-version $VERSION --test-only --test-unsniffable csv tsv txt dta dta2d edta mrm splib --test-condition "compare=sim_size" "delta_frac=0.7" > /dev/null
+        echo ""
         cat $testtmp | grep -v ' /dev/null
 
@@ -130,23 +123,23 @@
 #(e.g. for prepare_test_data, e.g. CLI expects csv but test file is txt)
 #this function replaces the tmp file by the expected file. 
 function fix_tmp_files {
-#    >&2 echo "FIX $line"
+    # >&2 echo "FIX $line"
     ret=""
     for a in $@; do
-        if [[ ! $a =~ .tmp$ ]]; then
+        # >&2 echo "    a "$a
+        if [[ ! $a =~ .tmp$ ]] && [[ ! $a =~ _tmp_ ]]; then
             ret="$ret $a"
             continue
         fi
-#        >&2 echo "    a "$a
-        g=$(cat $OPENMSGIT/src/tests/topp/CMakeLists.txt $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake | awk '{printf("%s@NEWLINE@", $0)}' | sed 's/)@NEWLINE@/)\n/g' | sed 's/@NEWLINE@/ /g' | grep '\${DIFF}.*'"$a")
-#        >&2 echo "    g "$g
-        in1=$(sed 's/.*-in1 \([^ ]\+\).*/\1/' <<<$g)
+        diff_line=$(cat $OPENMSGIT/src/tests/topp/CMakeLists.txt $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake | awk '{printf("%s@NEWLINE@", $0)}' | sed 's/)@NEWLINE@/)\n/g' | sed 's/@NEWLINE@/ /g' | grep '\${DIFF}.*'"$a")
+        # >&2 echo "    diff_line "$diff_line
+        in1=$(sed 's/.*-in1 \([^ ]\+\).*/\1/' <<<$diff_line)
         # >&2 echo "    in1 "$in1
         if [[  "$a" != "$in1" ]]; then
             ret="$ret $a"
             continue
         fi
-        in2=$(sed 's/.*-in2 \([^ ]\+\).*/\1/' <<<$g)
+        in2=$(sed 's/.*-in2 \([^ ]\+\).*/\1/' <<<$diff_line)
         in2=$(basename $in2 | sed 's/)$//')
         # >&2 echo "    in2 "$in2
         if [[ -f "test-data/$in2" ]]; then
@@ -176,11 +169,11 @@
         fi
         ln -f -s $in1 test-data/$in2
     done
-    for i in test-data/*.tmp
-    do
+    
+    find test-data/ -name "*.tmp" -print0 | 
+    while IFS= read -r -d '' i; do 
         if [ ! -e test-data/$(basename $i .tmp) ]; then
             ln -s $(basename $i) test-data/$(basename $i .tmp)
-            #ln -s $(basename $i) test-data/$(basename $i .tmp)
         else
             ln -fs $(basename $i) test-data/$(basename $i .tmp)
         fi
@@ -194,14 +187,14 @@
 #     id=$1
 # | egrep -i "$id\_.*[0-9]+(_prepare\"|_convert)?"
 
-# TODO SiriusAdapter https://github.com/OpenMS/OpenMS/pull/5010
+    # TODO SiriusAdapter depends on online service which may timeout .. so keep disabled https://github.com/OpenMS/OpenMS/pull/5010
     cat $OPENMSGIT/src/tests/topp/CMakeLists.txt  $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake | sed 's/#.*$//'| sed 's/^\s*//; s/\s*$//' | grep -v "^$"  | awk '{printf("%s@NEWLINE@", $0)}' | sed 's/)@NEWLINE@/)\n/g' | sed 's/@NEWLINE@/ /g' | 
         sed 's/degenerate_cases\///' | 
         egrep -v "WRITEINI|WRITECTD|INVALIDVALUE|DIFF" | 
         grep add_test | 
         egrep "TOPP|UTILS" |
         sed 's@${DATA_DIR_SHARE}/@@g;'|
-        sed 's@${TMP_RIP_PATH}@dummy2.tmp@g'|
+        sed 's@${TMP_RIP_PATH}@./@g'|
         sed 's@TOFCalibration_ref_masses @TOFCalibration_ref_masses.txt @g; s@TOFCalibration_const @TOFCalibration_const.csv @'| 
 	sed 's/\("TOPP_SiriusAdapter_4".*\)-sirius:database all\(.*\)/\1-sirius:database pubchem\2/' |
     while read line
diff -r dd0a6ad39f0e -r d29c4c46e057 generate.sh
--- a/generate.sh	Fri Nov 06 20:29:14 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-#!/usr/bin/env bash
-
-VERSION=2.6
-FILETYPES="filetypes.txt"
-PROFILE="20.05"
-## FILETYPES_RE=$(grep -v "^#" $FILETYPES | grep -v "^$" | cut -f 1 -d" " | tr '\n' '|' | sed 's/|$//'| sed 's/|/\\|/g')
-
-export tmp=$(mktemp -d)
-export CTDCONVERTER="$tmp/CTDConverter"
-
-###############################################################################
-## reset old data
-###############################################################################
-# rm $(ls *xml |grep -v macros)
-# rm -rf ctd
-# mkdir -p ctd
-# echo "" > prepare_test_data.sh
-
-###############################################################################
-## generate tests
-## also creates 
-## - conda environment (for executing the binaries) and 
-## - the git clone of OpenMS (for generating the tests)
-## - ctd files
-###############################################################################
-bash ./test-data.sh ./macros_autotest.xml
-
-###############################################################################
-## get the 
-## - conda package (for easy access and listing of the OpenMS binaries), 
-###############################################################################
-# if [ ! -d $OPENMSPKG ]; then
-# 	mkdir $OPENMSPKG/
-# 	wget -P $OPENMSPKG/ "$CONDAPKG"
-# 	tar -xf $OPENMSPKG/"$(basename $CONDAPKG)" -C OpenMS$VERSION-pkg/
-#   rm $OPENMSPKG/"$(basename $CONDAPKG)"
-# fi
-
-###############################################################################
-## Get python libaries for CTD -> Galaxy conversion
-## TODO fix to main repo OR conda packkage if PRs are merged 
-###############################################################################
-# if [ ! -d CTDopts ]; then
-# 	# git clone https://github.com/genericworkflownodes/CTDopts CTDopts
-# 	git clone -b topic/no-1-2x https://github.com/bernt-matthias/CTDopts CTDopts
-# fi
-if [ ! -d $CTDCONVERTER ]; then
-	#git clone https://github.com/WorkflowConversion/CTDConverter.git CTDConverter
-	git clone -b topic/cdata https://github.com/bernt-matthias/CTDConverter.git $CTDCONVERTER
-fi
-# export PYTHONPATH=$(pwd)/CTDopts
-###############################################################################
-## conversion ctd->xml 
-###############################################################################
-
-find . -maxdepth 0 -name "[A-Z]*xml" -delete
-source $(dirname $(which conda))/../etc/profile.d/conda.sh
-conda activate $tmp/OpenMS$VERSION-env
-python $CTDCONVERTER/convert.py galaxy -i ctd/*ctd -o ./ -s tools_blacklist.txt -f "$FILETYPES" -m macros.xml -t tool.conf  -p hardcoded_params.json --test-macros macros_autotest.xml --test-macros-prefix autotest_  --test-macros macros_test.xml --test-macros-prefix manutest_ --tool-version $VERSION --tool-profile $PROFILE > convert.out 2> convert.err
-if [[ "$?" -ne "0" ]]; then >&2 echo 'CTD -> XML conversion failed'; >&2 echo -e "stderr:\n$(cat convert.err)"; fi
-conda deactivate
-
-patch PepNovoAdapter.xml < PepNovoAdapter.patch
-patch OMSSAAdapter.xml < OMSSAAdapter.patch
-
-# https://github.com/OpenMS/OpenMS/pull/4984
-sed -i -e 's@http://www.openms.de/documentation/@http://www.openms.de/doxygen/release/2.6.0/html/@' ./*xml
-# https://github.com/OpenMS/OpenMS/pull/4984#issuecomment-702641976
-patch -p0 <404-urls.patch
-
-# #-b version log debug test in_type executable pepnovo_executable param_model_directory rt_concat_trafo_out param_id_pool
-
-# for i in A-E F-H I-L M-N O-P Q-Z
-# do
-# 	planemo t [$i]*xml --galaxy_branch release_20.05 --galaxy_python_version 3.7 --test_output $i.html --test_output_json $i.json &
-# done
diff -r dd0a6ad39f0e -r d29c4c46e057 hardcoded_params.json
--- a/hardcoded_params.json	Fri Nov 06 20:29:14 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,236 +0,0 @@
-{
-	"#": "blacklist parameters",
-
-	"version": [{"value": "@"}],
-	"debug": [{"value": "@"}],
-	"algorithm:debug": [{"value": "@"}],
-	"java_memory": [{"value": "@"}],
-	"java_permgen": [{"value": "@"}],
-	"#": "type of input is always determined from the file extension ",
-	"in_type": [{"value": "@"}],
-
-	"#": "tool specific blacklist parameters",
-
-	"convert_back": [{"value": "@", "tools": ["OpenSwathMzMLFileCacher"]}],
-	"NET_executable": [{
-			"value": "@", 
-			"tools": ["FileConverter"]
-	}],
-
-
-	"params_file": [{"value": "@", "tools": ["SpectraSTSearchAdapter"]}],
-
-	"#": "TODO not usable in 2.5 https://github.com/OpenMS/OpenMS/issues/4456, corresponding test currently disabled",
-    	"consensus_out": [{"value": "@", "tools": ["MaRaClusterAdapter"]}],
-	"#": "TODO would need treatment as prefix-output",
-	"output_directory": [{"value": "@", "tools": ["MaRaClusterAdapter"]}],
-
-	"#": "hardcode parameter values",
-
-	"comet_version": [{
-		"value":"2016.01 rev. 3"
-	}],
-	"comet_executable": [{
-		"value":"comet"
-	}],
-	"crux_executable": [{
-		"value": "crux"
-	}],
-	"fido_executable": [{
-		"value":"Fido"
-	}],
-	"fidocp_executable": [{
-		"value":"FidoChooseParameters"
-	}],
-	"maracluster_executable": [{
-		"value":"/home/berntm/projects/tools-galaxyp/tools/openms/OpenMS2.5.0-git/THIRDPARTY/Linux/64bit/MaRaCluster/maracluster"
-	}],
-	"mascot_directory": [{
-		"value":"TODO"
-	}],
-	"myrimatch_executable": [{
-		"value":"myrimatch"
-	}],
-	"omssa_executable": [{
-		"value":"$(dirname $(realpath $(which omssacl)))/omssacl"
-	}],
-	"ThermoRaw_executable": [{
-		"value": "ThermoRawFileParser.exe", 
-		"tools": ["FileConverter"]
-	}],
-	"pepnovo_executable": [{
-		"value":"pepnovo"
-	}],
-	"percolator_executable": [{
-		"value":"percolator"
-	}],
-	"xtandem_executable": [{
-		"value":"xtandem"
-	}],
-	"executable": [
-		{
-			"value":"$(dirname $(realpath $(which luciphor2)))/luciphor2.jar",
-			"tools": ["LuciphorAdapter"]
-		}, {
-			"value":"/home/berntm/Downloads/MSFragger-20171106/MSFragger-20171106.jar",
-			"tools": ["MSFraggerAdapter"]
-		}, {
-			"value":"$(msgf_plus -get_jar_path)",
-			"tools": ["MSGFPlusAdapter"]
-		}, {
-			"value": "/home/berntm/Downloads/novor/lib/novor.jar",
-			"tools": ["NovorAdapter"]
-		}, {
-			"value":"$(which sirius)",
-			"tools": ["SiriusAdapter", "AssayGeneratorMetabo"]
-		}, {
-			"value":"spectrast",
-			"tools": ["SpectraSTSearchAdapter"]
-		}
-	],
-	"r_executable": [{
-		"value":"R"
-	}],
-	"rscript_executable": [{
-		"value":"Rscript"
-	}],
-	"java_executable": [{
-		"value":"java"
-	}],
-	"log": [{
-		"value":"log.txt"
-	}],
-	"tempDirectory": [{
-		"value":"$TMP_DIR"
-	}],
-	"temp_data_directory": [{
-		"value":"$TMP_DIR"
-	}],
-	"algorithm:Preprocessing:tmp_dir": [{
-		"value":"$TMP_DIR"
-	}],
-	"no_progress": [{
-		"value": true
-	}],
-	"#": "only used in LuciphorAdapter at the moment, inconsistency will be fixed",
-	"num_threads": [{
-		"value":"${GALAXY_SLOTS:-1}"
-	}],
-	"threads": [{
-		"value": "${GALAXY_SLOTS:-1}"
-	}],
-	"sirius:cores": [{
-		"value": "${GALAXY_SLOTS:-1}"
-	}],
-
-	"#": "hardcode the outer loop threads for OpenSwathWorkflow",
-	"outer_loop_threads": [{
-			"value": "1", 
-			"tools": ["OpenSwathWorkflow"]
-	}],
-	"separator": [{
-		"value": ",",
-		"tools": ["IDMassAccuracy"]
-	}],
-
-	"#": "don't alow to copy data internally to save computation time for reloading",
-	"copy_data": [{
-		"value": "false",
-		"tools": ["MapAlignerTreeGuided"]
-	}],
-
-	"#": "overwrite/add Galaxy xml attributes of some parameters (names need to start with param_)",
-
-	"#": "test is not a hardcoded value since we need to set it in the tool tests", 
-	"test": [{
-		"CTD:type": "text",
-		"XML:type": "hidden"
-	}],
-
-	"#": "overwrite CTD attributes of some parameters (some are not possible, e.g. type)",
-
-	"#": "for some tools the user needs to select the desired output type since detection by extension makes no sense for galaxy tools",
-	"out_type": [{
-	    "CTD:required": true,
-	    "CTD:advanced": false
-	}],
-
-	"#": "SeedListGenerator with consensusXML input needs a dynamic number of outputs that depends on the content of the input, so we remove this options at the moment because its hard or impossible to implement in Galaxy, https://github.com/OpenMS/OpenMS/issues/4404 .. see also in parameter",
-	"#": "FileInfo, MapStatistics, SequenceCoverageCalculator wo -out just writes to stdout. not wanted here",
-	"#": "MzMLSplitter output prefix https://github.com/OpenMS/OpenMS/issues/4404",
-	"#": "IDRipper: blacklist out (is doing the same as the output-prefix out-path)",
-	"out": [{
-		"CTD:is_list": false, 
-		"tools": ["SeedListGenerator"]
-	}, {
-	 	"CTD:required": true,
-		"tools": ["FileInfo", "MapStatistics", "SequenceCoverageCalculator"]
-	}, {
-		"CTD:type": "output-prefix", 
-		"CTD:required": true,
-		"CTD:restrictions": "mzml",
-		"tools": ["MzMLSplitter"]
-	}, {
-		"value": "@", 
-		"tools": ["IDRipper"]
-	}],
-
-	"#": "Try to remove xml data type whereever possible",
-	"#": "XTandem Adapter output is called .xml in OMS which is to unspecific -> use Galaxy's bioml",
-	"xml_out": [{
-		"CTD:restrictions": "bioml",
-		"tools": ["XTandemAdapter"]
-	}],
-	
-	"#": "IDFileConverter remove xml",
-	"#": "OpenSwathWorkflow make in single file input and all outputs non-optional",
-        "#": "XFDR does not need xml .. redundant with xquest.xml TODO check if list is up to date with each new release",
-	"#": "SeedListGenerator: remove consensusXML https://github.com/OpenMS/OpenMS/issues/4404 .. see also out parameter",
-	"in": [{
-		"CTD:restrictions": "pepXML,protXML,mascotXML,omssaXML,bioml,psms,tsv,idXML,mzid,xquest.xml",
-		"tools": ["IDFileConverter"]
-	}, {
-		"CTD:is_list": false, 
-		"tools": ["OpenSwathWorkflow"]
-	}, {
-		"CTD:restrictions": "idXML,mzid,xquest.xml",
-		"tools": ["XFDR"]
-	}, {
-		"CTD:restrictions": "mzML,idXML,featureXML",
-		"tools": ["SeedListGenerator"]
-	}],
-
-	"#": "IDMapper has in and spectra:in params, in is used in out as format_source",
-	"#": "which does not work in Galaxy: https://github.com/galaxyproject/galaxy/pull/9493", 
-	"spectra:in": [{
-		"CTD:name": "_in", 
-		"tools": ["IDMapper"]
-	}],
-
-	"#": "hardcoding prefix parameters which are not yet available in OMS but in CTDOpts https://github.com/OpenMS/OpenMS/pull/4527",
-	"#": "output-prefix",
-	"out_path": [{
-		"CTD:type": "output-prefix", 
-		"CTD:required": true,
-		"CTD:restrictions": "idXML",
-		"tools": ["IDRipper"]
-	}],
-	"outputDirectory": [{
-		"CTD:type": "output-prefix", 
-		"CTD:advanced": false,
-		"CTD:required": true,
-		"CTD:restrictions": "mzml",
-		"tools": ["OpenSwathFileSplitter"]
-	}],
-
-	"#": "OpenSwathDIAPreScoring: https://github.com/OpenMS/OpenMS/pull/4443",
-        "#": "SpectraSTSearchAdapter does not need xml .. redundant with pep.xml TODO check if list is up to date with each new release",
-	"output_files": [{
-		"CTD:required": true,
-		"tools": ["OpenSwathDIAPreScoring"]
-	}, {
-		"CTD:restrictions": "txt,tsv,pep.xml,pepXML,html",
-		"tools": ["SpectraSTSearchAdapter"]
-	
-	}]
-}
diff -r dd0a6ad39f0e -r d29c4c46e057 macros.xml
--- a/macros.xml	Fri Nov 06 20:29:14 2020 +0000
+++ b/macros.xml	Thu Dec 01 19:23:03 2022 +0000
@@ -3,14 +3,15 @@
      You can edit this file to add your own macros, if you so desire, or you can
      add additional macro files using the m/macros parameter -->
 
-  2.6
-  0
+  2.8
+  0
   
     
       openms
       openms-thirdparty
-      
-      blast
+      
+      omssa
+      blast
       
       
 	  
@@ -21,6 +22,7 @@
   
     
       
+      
       
       
       
@@ -32,23 +34,15 @@
     
   
   
-    
-      
-        
-        
-      
-      
-      
-        
-      
-    
+    
   
 
   
-  
-    ^[^$]
-    
-    ^ *((?:\"[^\"]*\" +)|(?:[^ \"]+ +))*((?:\"[^\"]*\")|(?:[^ \"]+)) *$
+  
+    ^[^$]
+    ^ *((?:\"[^\"]*\" +)|(?:[^ \"]+ +))*((?:\"[^\"]*\")|(?:[^ \"]+)) *$
   
   
     
@@ -64,8 +58,8 @@
       
     
   
-  
-    ^ *[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?( *[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)* *$
+  
+    ^ *[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?( *[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)* *$
     
     
       
@@ -78,8 +72,8 @@
       
     
   
-  
-    ^ *[+-]?[0-9]+( *[+-]?[0-9]+)* *$
+  
+    ^ *[+-]?[0-9]+( *[+-]?[0-9]+)* *$
     
     
       
@@ -119,11 +113,11 @@
   
 
 
diff -r dd0a6ad39f0e -r d29c4c46e057 macros_autotest.xml
--- a/macros_autotest.xml	Fri Nov 06 20:29:14 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27205 +0,0 @@
-
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-
-  
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-  
-  
-  
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-  
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-        
-        
-        
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-        
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-  
-  
-
-  
-
-  
-
-  
-
-  
-
-  
-
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-  
-  
-
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-
-  
-
-  
-
-  
-
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-  
-
-  
-
-  
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-    
-  
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-  
-
-  
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-  
-
diff -r dd0a6ad39f0e -r d29c4c46e057 macros_discarded_auto.xml
--- a/macros_discarded_auto.xml	Fri Nov 06 20:29:14 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,378 +0,0 @@
-
-
-
-  
-    
-    
-    
-  
-  
-  
-  
-  
-  
-
-
-
-      
-        
-        
-        
-      
-      
-      
-      
-      
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-    
-
-
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-
-
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-      
-      
-      
-    
-
-
-      
-        
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-    
-
-
-      
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-
-
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
-      
-        
-        
-        
-        
-        
-      
-      
-      
-      
-      
-      
-      
-      
-      
-    
diff -r dd0a6ad39f0e -r d29c4c46e057 macros_test.xml
--- a/macros_test.xml	Fri Nov 06 20:29:14 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,545 +0,0 @@
-
-
-    
-
-
-
-  
-  
-  
-
-
-
-
-  
-    
-    
-    
-    
-    
-  
-
- 
-  
-    
-    
-    
-    
-  
-
-
-  
-  
-    
-    
-    
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-	
-  
-
-
-  
-    
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-    
-  
-
-
-  
-
-
-  
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-    
-    
-	
-  
-
-
-  
-    
-    
-    
-    
-    
-    
-  
-
-
- 
-
-  
-    
-    
-    
-  
-  
-    
-  
-    
-    
-  
-  
-
-
-  
-    
-    
-    
-  
-  
-  
-  
-    
-    
-  
-  
-
-
-  
-    
-    
-    
-  
-  
-  
-  
-    
-    
-  
-  
-
-
-
-  
-    
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-  
-  
-    
-    
-    
-  
-
-
-    
-  
-    
-    
-    
-    
-    
-  
-
-
-  
-
-
-  
-    
-    
-    
-    
-    
-    
-    
-  
-  
-    
-    
-    
-    
-    
-    
-    
-    
-  
-
-
-
-
-  
-    
-    
-    
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-    
-    
-  
-
-
-  
-    
-    
-    
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-    
-    
-  
-
-
-
-  
-  
-    
-    
-    
-      
-    
-  
-  
-  
-  
-    
-    
-    
-      
-      
-    
-  
-
-
-
-  
-    
-      
-      
-      
-    
-    
-    
-    
-      
-      
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-    
-  
-  
-    
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-    
-    
-    
-  
-  
-    
-    
-    
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-  
-  
-    
-    
-    
-    
-    
-    
-  
-  
-    
-    
-    
-    
-    
-    
-  
-
-
-    
-
-
-    
-
-
-    
-
-
-    
-
-
-  
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-    
-  
-
-
-  
-  
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-    
-  
-
-
-  
-
-
-  
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-  
-
-
-   
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-  
-
-
-
-
-
-  
-    
-    
-    
-    
-    
-  
-
-
-  
-    
-    
-    
-    
-  
-
-
diff -r dd0a6ad39f0e -r d29c4c46e057 prepare_test_data_manual.sh
--- a/prepare_test_data_manual.sh	Fri Nov 06 20:29:14 2020 +0000
+++ b/prepare_test_data_manual.sh	Thu Dec 01 19:23:03 2022 +0000
@@ -86,10 +86,13 @@
 PhosphoScoring -in spectra.mzML -id MSGFPlusAdapter_1_out1.tmp -out PhosphoScoring.idxml > PhosphoScoring.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'PhosphoScoring failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
 
-PSMFeatureExtractor -test -in MSGFPlusAdapter_1_out.idXML XTandemAdapter_1_out.idXML -multiple_search_engines -skip_db_check -out PSMFeatureExtractor.idxml > PSMFeatureExtractor_1.stdout 2> stderr
+# TODO PSMFeatureExtractor should have auto tests with 2.7 https://github.com/OpenMS/OpenMS/pull/5087 
+PSMFeatureExtractor -test -in MSGFPlusAdapter_1_out.idXML XTandemAdapter_1_out.idXML -multiple_search_engines -skip_db_check -out_type idXML -out PSMFeatureExtractor.idxml > PSMFeatureExtractor_1.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'PSMFeatureExtractor_1 failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
-PSMFeatureExtractor -test -in MSGFPlusAdapter_1_out.idXML XTandemAdapter_1_out.idXML -multiple_search_engines -skip_db_check -out PSMFeatureExtractor.mzid > PSMFeatureExtractor_2.stdout 2> stderr
+PSMFeatureExtractor -test -in MSGFPlusAdapter_1_out.idXML XTandemAdapter_1_out.idXML -multiple_search_engines -skip_db_check -out_type mzid -out PSMFeatureExtractor.mzid > PSMFeatureExtractor_2.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'PSMFeatureExtractor_2 failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
+PSMFeatureExtractor -test -in MSGFPlusAdapter_1_out.idXML -out_type idXML -out PSMFeatureExtractor_3.idXML > PSMFeatureExtractor_3.stdout 2> stderr
+if [[ "$?" -ne "0" ]]; then >&2 echo 'PSMFeatureExtractor_3 failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
 
 QCCalculator -test -in OpenPepXL_input.mzML -out QCCalculator1.qcML > QCCalculator_1.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'QCCalculator_1 failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
diff -r dd0a6ad39f0e -r d29c4c46e057 readme.md
--- a/readme.md	Fri Nov 06 20:29:14 2020 +0000
+++ b/readme.md	Thu Dec 01 19:23:03 2022 +0000
@@ -22,11 +22,14 @@
 
 Manual updates should only be done to
 
-- the `@GALAXY_VERSION@"` token in `macros.xml`
 - and the manually contributed tests in `macros_test.xml` (The goal is that all
   tools that do not have an automatically generated test are covered here)
 - the `hardcoded_params.json` files
 
+Wrapper versions are managed in `bump.json`. For tools listed in the file
+the wrapper version will be set accordingly and otherwise `0` is used. 
+For a major update of the tool version the bump file should be reset (to `{}`).
+
 In a few cases patches may be acceptable.
 
 Installation
@@ -71,10 +74,15 @@
 
 Preprocessing:
 
-- For each input / output data set parameter a directory is crated (named by
-  the parameter)
 - For input data set parameters the links to the actual location of the data
-  sets are created
+  sets are created, the link names are `element_identifier`.`EXT`, where `EXT`
+  is an extension that is known by OpenMS
+- In order to avoid name collisions for the created links each is placed in a
+  unique directory: `PARAM_NAME/DATASET_ID`, where `PARAM_NAME` is the name
+  of the parameter and `DATASET_ID` is the id of the Galaxy dataset 
+- the same happens for output parameters that are in 1:1 correspondence with
+  an input parameter
+
 
 Main:
 
diff -r dd0a6ad39f0e -r d29c4c46e057 test-data.sh
--- a/test-data.sh	Fri Nov 06 20:29:14 2020 +0000
+++ b/test-data.sh	Thu Dec 01 19:23:03 2022 +0000
@@ -1,22 +1,25 @@
 #!/usr/bin/env bash
 
-VERSION=2.6
-FILETYPES="filetypes.txt"
-CONDAPKG="https://anaconda.org/bioconda/openms/2.6.0/download/linux-64/openms-2.6.0-h4afb90d_0.tar.bz2"
+VERSION=2.8
+FILETYPES="aux/filetypes.txt"
+CONDAPKG="https://anaconda.org/bioconda/openms/2.8.0/download/linux-64/openms-2.8.0-h7ca0330_0.tar.bz2"
 
 # import the magic
 . ./generate-foo.sh
 
 # install conda
 if [ -z "$tmp" ]; then
-	tmp=$(mktemp -d)
-	created="yes"
+    tmp=$(mktemp -d)
+    created="yes"
 fi
 
 export OPENMSGIT="$tmp/OpenMS$VERSION.0-git"
 export OPENMSPKG="$tmp/OpenMS$VERSION-pkg/"
-export OPENMSENV="$tmp/OpenMS$VERSION-env"
-export CTDCONVERTER="$tmp/CTDConverter"
+export OPENMSENV="OpenMS$VERSION-env"
+
+if [ -z "$CTDCONVERTER" ]; then
+    export CTDCONVERTER="$tmp/CTDConverter"
+fi
 
 if [[ -z "$1" ]]; then
 	autotests="/dev/null"
@@ -25,11 +28,11 @@
 fi
 
 if type conda > /dev/null; then  
-	true
+    true
 else
-	wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
-	bash Miniconda3-latest-Linux-x86_64.sh -b -p "$tmp/miniconda"
-	source "$tmp/miniconda/bin/activate"
+    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
+    bash Miniconda3-latest-Linux-x86_64.sh -b -p "$tmp/miniconda"
+    source "$tmp/miniconda/bin/activate"
 fi
 eval "$(conda shell.bash hook)"
 
@@ -42,24 +45,27 @@
 
 echo "Clone OpenMS $VERSION sources"
 if [[ ! -d $OPENMSGIT ]]; then
-	git clone -b release/$VERSION.0 https://github.com/OpenMS/OpenMS.git $OPENMSGIT
-	cd $OPENMSGIT
-	git submodule init
-	git submodule update
-	cd -
+    # TODO >2.8 reenable original release branch .. also in else branch
+    # the plus branch contains commits from https://github.com/OpenMS/OpenMS/pull/5920 and https://github.com/OpenMS/OpenMS/pull/5917
+    # git clone -b release/$VERSION.0 https://github.com/OpenMS/OpenMS.git $OPENMSGIT
+    git clone -b release/$VERSION.0-plus https://github.com/bernt-matthias/OpenMS.git $OPENMSGIT
+    cd $OPENMSGIT
+    git submodule init
+    git submodule update
+    cd -
 else
-	cd $OPENMSGIT
-	git pull origin release/$VERSION.0
-	cd -
+    cd $OPENMSGIT
+    git pull origin release/$VERSION.0-plus
+    cd -
 fi
 
 echo "Create OpenMS $VERSION conda env"
 # TODO currently add lxml (needed by CTDConverter)
 # TODO for some reason a to recent openjdk is used
 if conda env list | grep "$OPENMSENV"; then
-	true
+    true
 else
-	conda create -y --quiet --override-channels --channel iuc --channel conda-forge --channel bioconda --channel defaults -p $OPENMSENV openms=$VERSION openms-thirdparty=$VERSION ctdopts=1.4 lxml
+    conda create -y --quiet --override-channels --channel iuc --channel conda-forge --channel bioconda --channel defaults -n $OPENMSENV openms=$VERSION openms-thirdparty=$VERSION omssa=2.1.9 ctdopts=1.5 lxml
 # chmod -R u-w $OPENMSENV 
 fi
 ###############################################################################
@@ -69,10 +75,10 @@
 echo "Download OpenMS $VERSION package $CONDAPKG"
 
 if [[ ! -d $OPENMSPKG ]]; then
-	mkdir $OPENMSPKG
-	wget -q -P $OPENMSPKG/ "$CONDAPKG"
-	tar -xf $OPENMSPKG/"$(basename $CONDAPKG)" -C $OPENMSPKG/
-	rm $OPENMSPKG/"$(basename $CONDAPKG)"
+    mkdir $OPENMSPKG
+    wget -q -P $OPENMSPKG/ "$CONDAPKG"
+    tar -xf $OPENMSPKG/"$(basename $CONDAPKG)" -C $OPENMSPKG/
+    rm $OPENMSPKG/"$(basename $CONDAPKG)"
 fi
 
 ###############################################################################
@@ -81,40 +87,46 @@
 ###############################################################################
 echo "Clone CTDConverter"
 if [[ ! -d $CTDCONVERTER ]]; then
-	#git clone https://github.com/WorkflowConversion/CTDConverter.git CTDConverter
-	git clone -b topic/cdata https://github.com/bernt-matthias/CTDConverter.git $CTDCONVERTER
+    #git clone https://github.com/WorkflowConversion/CTDConverter.git CTDConverter
+    git clone -b topic/fix-selects2 https://github.com/bernt-matthias/CTDConverter.git $CTDCONVERTER
 else
-	cd $CTDCONVERTER
-	git pull origin topic/cdata
-	cd -
+    cd $CTDCONVERTER
+    git pull origin topic/fix-selects2
+    cd -
 fi
+conda activate $OPENMSENV
+cd $CTDCONVERTER
+python -m pip install . --no-deps
+cd -
+conda deactivate
 
-###############################################################################
-## copy all the test data files to test-data
-## most of it (outputs) will be overwritten later, but its needed for
-## prepare_test_data
-###############################################################################
+
+# ###############################################################################
+# ## copy all the test data files to test-data
+# ## most of it (outputs) will be overwritten later, but its needed for
+# ## prepare_test_data
+# ###############################################################################
 echo "Get test data"
-find test-data -type f,l,d ! -name "*fa"  ! -name "*loc" -delete
+find test-data -type f,l,d ! -name "*fa" ! -name "*loc" ! -name "test-data" -delete
 
 cp $(find $OPENMSGIT/src/tests/topp/ -type f | grep -Ev "third_party_tests.cmake|CMakeLists.txt|check_ini") test-data/
 cp -r $OPENMSGIT/share/OpenMS/MAPPING/ test-data/
 cp -r $OPENMSGIT/share/OpenMS/CHEMISTRY test-data/
 cp -r $OPENMSGIT/share/OpenMS/examples/ test-data/
-if [[ ! -f test-data/MetaboliteSpectralDB.mzML ]]; then 
-	wget -nc https://abibuilder.informatik.uni-tuebingen.de/archive/openms/Tutorials/Data/latest/Example_Data/Metabolomics/databases/MetaboliteSpectralDB.mzML
-	mv MetaboliteSpectralDB.mzML test-data/
+if [ ! -f test-data/MetaboliteSpectralDB.mzML ]; then 
+    wget -nc https://abibuilder.cs.uni-tuebingen.de/archive/openms/Tutorials/Data/latest/Example_Data/Metabolomics/databases/MetaboliteSpectralDB.mzML
+    mv MetaboliteSpectralDB.mzML test-data/
 fi
 ln -fs TOFCalibration_ref_masses test-data/TOFCalibration_ref_masses.txt
 ln -fs TOFCalibration_const test-data/TOFCalibration_const.csv
 
 if [ ! -d test-data/pepnovo_models/ ]; then
-	mkdir -p /tmp/pepnovo
-	wget -nc http://proteomics.ucsd.edu/Software/PepNovo/PepNovo.20120423.zip
-	unzip PepNovo.20120423.zip -d /tmp/pepnovo/
-	mv /tmp/pepnovo/Models test-data/pepnovo_models/
-	rm PepNovo.20120423.zip
-	rm -rf /tmp/pepnovo
+    mkdir -p /tmp/pepnovo
+    wget -nc http://proteomics.ucsd.edu/Software/PepNovo/PepNovo.20120423.zip
+    unzip PepNovo.20120423.zip -d /tmp/pepnovo/
+    mv /tmp/pepnovo/Models test-data/pepnovo_models/
+    rm PepNovo.20120423.zip
+    rm -rf /tmp/pepnovo
 fi
 ###############################################################################
 ## generate ctd files using the binaries in the conda package 
@@ -124,17 +136,13 @@
 rm -rf ctd
 mkdir -p ctd
 
-# TODO because of https://github.com/OpenMS/OpenMS/issues/4641
-# this needs to be done from within test-data
-cd test-data
 for i in $OPENMSPKG/bin/*
 do
-	b=$(basename $i)
-	echo $b
-	$b -write_ctd ../ctd/
-	sed -i -e 's/²/^2/' ../ctd/$b.ctd
+    b=$(basename $i)
+    echo $b
+    $b -write_ctd ctd/
+    sed -i -e 's/²/^2/' ctd/$b.ctd
 done
-cd -
 ###############################################################################
 ## fix ini files: OpenMS test data contains ini files with outdated ini files.
 ## e.g. variables might be in different nodes, outdated variables present, new
@@ -146,17 +154,17 @@
 echo "Update test INI files"
 for ini in test-data/*ini
 do
-	tool=$(cat $ini | grep 'NODE name="' | head -n 1 | sed 's/.*name="\([^"]\+\)".*/\1/')
-	bin=$(which $tool)
-	if [[ -z $bin ]]; then
+    tool=$(cat $ini | grep 'NODE name="' | head -n 1 | sed 's/.*name="\([^"]\+\)".*/\1/')
+    bin=$(which $tool)
+    if [[ -z $bin ]]; then
           >&2 echo "missing binary to convert $ini"
-		  continue
-	fi
-	cp $ini $ini.backup
-	$bin -ini $ini -write_ini $ini > $ini.stdout 2> $ini.stderr
-	if [[ "$?" -ne "0" ]]; then
-		>&2 echo "could not convert $ini"
-	fi
+          continue
+    fi
+    cp $ini $ini.backup
+    $bin -ini $ini -write_ini $ini > $ini.stdout 2> $ini.stderr
+    if [[ "$?" -ne "0" ]]; then
+        >&2 echo "could not convert $ini"
+    fi
 done
 
 ###############################################################################
@@ -185,17 +193,17 @@
 
 prepare_test_data >> prepare_test_data.sh #tmp_test_data.sh
 
-# prepare_test_data > tmp_test_data.sh
-# # remove calls not needed for the tools listed in any .list file
-# echo LIST $LIST
-# if [ ! -z "$LIST" ]; then
-# 	REX=$(echo $LIST | sed 's/ /\n/g' | sed 's@.*/\([^/]\+\).xml$@\1@' | tr '\n' '|' | sed 's/|$//')
-# else
-# 	REX=".*"
-# fi
-# echo REX $REX
-# cat tmp_test_data.sh | egrep "($REX)" >> prepare_test_data.sh
-# rm tmp_test_data.sh
+## prepare_test_data > tmp_test_data.sh
+## # remove calls not needed for the tools listed in any .list file
+## echo LIST $LIST
+## if [ ! -z "$LIST" ]; then
+##     REX=$(echo $LIST | sed 's/ /\n/g' | sed 's@.*/\([^/]\+\).xml$@\1@' | tr '\n' '|' | sed 's/|$//')
+## else
+##     REX=".*"
+## fi
+## echo REX $REX
+## cat tmp_test_data.sh | egrep "($REX)" >> prepare_test_data.sh
+## rm tmp_test_data.sh
 
 echo "Execute test shell script"
 chmod u+x prepare_test_data.sh
@@ -204,14 +212,13 @@
 cd - || exit
 
 
-###############################################################################
-## create/update test data for the manually generated tests
-## - run convert once with the manual tests only and 
-## - update test-data (needs to run 2x)
-###############################################################################
+# ###############################################################################
+# ## create/update test data for the manually generated tests
+# ## - run convert once with the manual tests only and 
+# ## - update test-data (needs to run 2x)
+# ###############################################################################
 echo "Execute test shell script for manually curated tests"
 chmod u+x prepare_test_data_manual.sh
-
 cd ./test-data || exit
 ../prepare_test_data_manual.sh
 cd - || exit
@@ -220,22 +227,28 @@
 ###############################################################################
 ## auto generate tests
 ###############################################################################
+
 echo "Write test macros to $autotests"
 echo "" > "$autotests"
-for i in $(ls *xml |grep -v macros)
+
+for i in $(ls ctd/*ctd)
 do
-	b=$(basename "$i" .xml)
-	get_tests2 "$b" >> "$autotests"
+    b=$(basename "$i" .ctd)
+    get_tests2 "$b" >> "$autotests"
 done
 echo "" >> "$autotests"
 
-echo "Create test data links"
-link_tmp_files
+# echo "Create test data links"
+# Breaks DecoyDatabase
+# link_tmp_files
 
 # tests for tools using output_prefix parameters can not be auto generated
 # hence we output the tests for manual curation in macros_test.xml
 # and remove them from the autotests
-# -> OpenSwathFileSplitter IDRipper MzMLSplitter
+# -> OpenSwathFileSplitter IDRipper MzMLSplitter SeedListGenerator
+# TODO reevaluate in >2.8 
+# - https://github.com/OpenMS/OpenMS/pull/5873
+# - https://github.com/OpenMS/OpenMS/pull/5912
 #
 # Furthermore we remove tests for tools without binaries in conda
 # -> MSFragger MaRaClusterAdapter NovorAdapter 
@@ -243,23 +256,23 @@
 # not able to specify composite test data  
 # -> SpectraSTSearchAdapter 
 if [[ ! -z "$1" ]]; then
-	echo "" > macros_discarded_auto.xml
-	for i in OpenSwathFileSplitter IDRipper MzMLSplitter MSFraggerAdapter MaRaClusterAdapter NovorAdapter SpectraSTSearchAdapter
-	do
-		echo "" >>  macros_discarded_auto.xml
-		xmlstarlet sel -t -c "/macros/xml[@name='autotest_$i']/test" macros_autotest.xml >>  macros_discarded_auto.xml
-		echo ""  >>  macros_discarded_auto.xml
-		xmlstarlet ed -d "/macros/xml[@name='autotest_$i']/test" macros_autotest.xml > tmp
-		mv tmp macros_autotest.xml
-	done
-	>&2 echo "discarded autogenerated macros for curation in macros_discarded_auto.xml"
+    echo "" > macros_discarded_auto.xml
+    for i in OpenSwathFileSplitter IDRipper MzMLSplitter SeedListGenerator MSFraggerAdapter MaRaClusterAdapter NovorAdapter SpectraSTSearchAdapter
+    do
+        echo "" >>  macros_discarded_auto.xml
+        xmlstarlet sel -t -c "/macros/xml[@name='autotest_$i']/test" macros_autotest.xml >>  macros_discarded_auto.xml
+        echo ""  >>  macros_discarded_auto.xml
+        xmlstarlet ed -d "/macros/xml[@name='autotest_$i']/test" macros_autotest.xml > tmp
+        mv tmp macros_autotest.xml
+    done
+    >&2 echo "discarded autogenerated macros for curation in macros_discarded_auto.xml"
 fi
 conda deactivate
 
 ## remove broken symlinks in test-data
 find test-data/ -xtype l -delete
 
-# if [ ! -z "$created" ]; then
-# 	echo "Removing temporary directory"
-# 	rm -rf "$tmp"
-# fi
+if [ ! -z "$created" ]; then
+    echo "Removing temporary directory"
+    rm -rf "$tmp"
+fi
diff -r dd0a6ad39f0e -r d29c4c46e057 test-data/pepnovo_models.loc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/pepnovo_models.loc	Thu Dec 01 19:23:03 2022 +0000
@@ -0,0 +1,13 @@
+#name	value	path
+default_models	CID_IT_TRYP	${__HERE__}/pepnovo_models/
+default_models	LTQ_COMP	${__HERE__}/pepnovo_models/
+default_models	DBC4_PEAK	${__HERE__}/pepnovo_models/
+default_models	CID_IT_TRYP_TAG5	${__HERE__}/pepnovo_models/
+default_models	CID_IT_TRYP_TAG6	${__HERE__}/pepnovo_models/
+default_models	ITDNV_PEAK	${__HERE__}/pepnovo_models/
+default_models	CID_IT_TRYP_SCORE	${__HERE__}/pepnovo_models/
+default_models	CID_IT_TRYP_TAG3	${__HERE__}/pepnovo_models/
+default_models	CID_IT_TRYP_DNVPART	${__HERE__}/pepnovo_models/
+default_models	CID_IT_TRYP_TAG4	${__HERE__}/pepnovo_models/
+default_models	CID_IT_TRYP_DB	${__HERE__}/pepnovo_models/
+default_models	CID_IT_TRYP_CSP	${__HERE__}/pepnovo_models/
diff -r dd0a6ad39f0e -r d29c4c46e057 test-data/random.fa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/random.fa	Thu Dec 01 19:23:03 2022 +0000
@@ -0,0 +1,18 @@
+>RND24402 Randomly generated sequence, created by ExPASy tool RandSeq, using average amino acid composition
+LALLTDKYSVTKSIKGYAGQQQKCTDDEGLAEDSAAMSLVPIRAAWTISVSVDLFYLGIV
+TNVTKDSVEHLVGIPLVTHEFMASRCEMRGQVVSATFGSWQKAESKAYRIPLKATPLDEF
+VESAVYLFGGSSNEYECVLIGNSHPVLIFLDIDAVPGARKPRTGFFMAEGFHSKGETRAL
+VGKSPPLGEYRKGAFHFTFPIKEAIRLGPPKKRIMGYRDALEGGLNHYVQTQVLVLLPMI
+QVARRWENGLGLLVGKFLKLPTHPLDLNQVTLCWSEAVTEDNKRFLLTIKTSAQGKSAPT
+SHINYVPQHNSMELMAINGSPFAAQHKSNDEIESMRDLSKLYADAETLESHGERGVRHQA
+TETKISKVTNLRRKLPQLLDLNVVDNACNWESVGAHVLEYVLVNLYLKELQEPKVELQPR
+LNETTMKAGASSLGVESGASAHSFYKGGVSEAKLRFRHVATPAAARIWWCVVMFRINRRY
+DGITYNSVGEQLSGVHEYVRAAQLFGLTTGKNLRSTGIVIIKLSTAIDLECLVQAKPKEA
+YVLANDYIGAKPHPARLETGPALVLFIVETINNDTLNAAILITALGGKFLNVRPDLLFGV
+QALFGCVRMFRHADCTIGREKFVQTEISHKAKFLYEINEFFLERILQFEEAKSPVGAPAY
+DIPIGRGLVMDSSTDLWNIYVVELISGQEKRTGIDPDTPMGTSHNLYMTDARLDERDQRS
+FLNSEFVKPSKLANGSEWADPYVEPDKTEVIAFFPATLIVIMADGSALNGQVCIQPAKDN
+SKMADDLATVHIGQDRPCDWGISASHEYDEVNRPARINGVMMQQLMAEDNQGPGASPRDQ
+MGDADDLKEIKWNKYVIDNEIIGRERGISAERVKIFLGDTLTARGLLDSPPGQTKVFDLR
+PRQSDKNQSGMFKRDQNAMYFPLEYDRIGAQTDTGSLYSTLITKFASISIDLVKLSMPRE
+KQIDEERLHSEFIENQKRSALPAVQKNLACISCVEACRGT
diff -r dd0a6ad39f0e -r d29c4c46e057 test-data/random_RNA.fa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/random_RNA.fa	Thu Dec 01 19:23:03 2022 +0000
@@ -0,0 +1,2 @@
+> random RNA
+GUGUUACUGCCACGAAACAAAAUGUUCAAGACACCGGGCGCCAUCUGUAUAUUACUCGCCAAUCAGACGGUCUGCAACGCUACAGACAUGGAGCUCAGCGCUGACGAUGUCGCCGGACCAAGUACGAUCACUUUGCUCGUGCAAAUGUUCGUCCGCAUUGGGCACUAUAACUCGAAUUGUCGAAUCCGGGUGGCGAGCCGCCACUUAUAGGAUAAAUAUUCAAACUAACAUUAUGGCGCCAAAUCUGCAAUCUCUACUUUAGACAUUAUAUACCCACAUUUACAAUUAGAGUUAUUAUUAGUUAACGUGUGCCAGAGCAGGGAUGGCUCUUGUCAGCCAUAGUUGUGUGAACGGGCUGUAUUUCCUUCCUAAUUAUAGAGCGGCACCGGAAAGCAAUGCACGAUCCACGAGGGCACUUCACAUGGUCACAAACAGUCAUUCUGGUACCCUGAUUCGUUCCCGAAAGGGAAGUAUAUACACGGCCCCCGUGUAUAUCGCCAGUCACACGGCAGGAGCGAGAGUUCGUUUGUAUACAUGCCCAGGAGCCUUCUCUAACUUUUGAAGCUGUGCAACUUUGUUGGCGCGUCACCACUAAGUCAGCUUAAUAGACAGCAGAUGGGAGAAUUUACCAUUUCAUUUUGUCCGAGCUGAUACCGGUAGGUCAUCUCUAAUCACCCGUUAUCCUCUCGUAAUAUAAUCGCUACUAAGGUAUGAAGGUGUCUGCGAAAGGUAACGUAAAUCAUUCUCGGCUCCUUGCAAAGUACGACUAGGAUCCAUCGUACACAUCCGGACGAAGAUGUAAAAUUGACGCCCCUGUAGGCCGUGAGACAGACGUGAGCCAAACCAUCUGCUCUACUUCUGGAGGCCUUGAAUAGUGGCGCGUUGUGUAAUCUUAAGAGAGAUUUUACUUGGAAUUACAGCCUACUUUGACCAGUAGCGCAUUGUGAACAAAUAUUCCCGUACGCGUCCAAUUGCAGCAAAACGUGGGCCUGUGUCCAGU
diff -r dd0a6ad39f0e -r d29c4c46e057 tools_blacklist.txt
--- a/tools_blacklist.txt	Fri Nov 06 20:29:14 2020 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-# seems not possible for 2.5 https://github.com/OpenMS/OpenMS/issues/4426
-# DigestorMotif
-
-# deprecated https://abibuilder.informatik.uni-tuebingen.de/archive/openms/Documentation/release/latest/html/UTILS_IDDecoyProbability.html
-# https://abibuilder.informatik.uni-tuebingen.de/archive/openms/Documentation/release/latest/html/a16242.html
-IDDecoyProbability
-
-# personal communication with author V. Bafna: 
-# "InsPect is no longer maintained as there are many better tools including MS-GF+"
-InspectAdapter
-
-# licence? see https://github.com/bioconda/bioconda-recipes/issues/18953
-#MSFraggerAdapter
-
-# https://github.com/OpenMS/OpenMS/issues/4550#issuecomment-594065727
-ProteomicsLFQ
-
-# https://github.com/OpenMS/OpenMS/issues/4401
-InclusionExclusionListCreator
-RTPredict
-PTPredict