From e78619c33b7e4f51be9f36285c585fbb0ed15583 Mon Sep 17 00:00:00 2001 From: suter_a Date: Fri, 15 May 2015 14:29:14 +0200 Subject: [PATCH 01/69] another path check for HDF5 with ubuntu 15.04 --- configure.ac | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configure.ac b/configure.ac index d91c0836..8568cd2b 100644 --- a/configure.ac +++ b/configure.ac @@ -525,6 +525,9 @@ AC_ARG_ENABLE([NeXus], [AS_HELP_STRING([--enable-NeXus],[build optional NeXus su elif test -r /usr/local/hdf5/include/hdf5.h; then HDF5_PREFIX="/usr/local/hdf5" AC_MSG_RESULT([${HDF5_PREFIX}]) + elif test -r /usr/include/hdf5/serial/hdf5.h; then + HDF5_PREFIX="/usr/include/hdf5/serial" + AC_MSG_RESULT([${HDF5_PREFIX}]) elif test -r /usr/include/hdf5.h; then HDF5_PREFIX="/usr" AC_MSG_RESULT([${HDF5_PREFIX}]) From fab7acfedca9caa9cf6c8dcb740bbbd861fac158 Mon Sep 17 00:00:00 2001 From: Thomas Prokscha Date: Fri, 29 May 2015 15:11:04 +0200 Subject: [PATCH 02/69] added a group histo selector in any2many for MusrRoot when exporting to a too limited file format as PSI-BIN. --- src/any2many.cpp | 23 +++++++++++++++++++++-- src/classes/PRunDataHandler.cpp | 30 ++++++++++++++++++++++++++++-- src/include/PMusr.h | 1 + 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/src/any2many.cpp b/src/any2many.cpp index 652b0421..0fb896fa 100644 --- a/src/any2many.cpp +++ b/src/any2many.cpp @@ -54,7 +54,7 @@ using namespace std; void any2many_syntax() { cout << endl << "usage: any2many [--help] : will show this help."; - cout << endl << " any2many --version : will show the svn version."; + cout << endl << " any2many --version : will show the git version."; cout << endl << " any2many -f | -r "; cout << endl << " -c [-p ] [-y ]"; cout << endl << " [-o | -t ] [-s]"; @@ -83,6 +83,10 @@ void any2many_syntax() cout << endl << " NeXus2-HDF4, NeXus2-HDF5, NeXus2-XML, WKM, ASCII"; cout << endl << " Comment: ROOT is superseeded by MusrRoot. If there is not a very good"; cout << endl << " reason, avoid it!"; + cout << endl << " -h : This option is for MusrRoot input files only!"; + cout << endl << " Select the the histo groups to be exported. is a space"; + cout << endl << " separated list of the histo group, e.g. -h 0, 20 will try to export the histo"; + cout << endl << " 0 (NPP) and 20 (PPC)."; cout << endl << " -p : where is the output path for the"; cout << endl << " converted files. If nothing is given, the current directory"; cout << endl << " will be used, unless the option '-s' is used."; @@ -190,7 +194,7 @@ int main(int argc, char *argv[]) // call any2many --help or any2many --version if (argc == 2) { - if (strstr(argv[1], "--h")) + if (!strncmp(argv[1], "--help", 128)) any2many_syntax(); else if (strstr(argv[1], "--v")) { #ifdef HAVE_CONFIG_H @@ -344,6 +348,21 @@ int main(int argc, char *argv[]) show_syntax = true; break; } + } else if (!strcmp(argv[i], "-h")) { // filter histo group list (for MusrRoot and ROOT (LEM) only!) + bool done = false; + int j = i+1; + do { + status = sscanf(argv[j], "%d", &ival); + if (status == 1) { + info.groupHistoList.push_back(ival); + j++; + } else { + done = true; + } + } while (!done && (j= argc) // make sure that counter is still in range + break; } else if (!strcmp(argv[i], "-p")) { // filter output path name flag if (i+1 < argc) { info.outPath = argv[i+1]; diff --git a/src/classes/PRunDataHandler.cpp b/src/classes/PRunDataHandler.cpp index 4347a67d..092a22ff 100644 --- a/src/classes/PRunDataHandler.cpp +++ b/src/classes/PRunDataHandler.cpp @@ -1734,8 +1734,34 @@ Bool_t PRunDataHandler::ReadRootFile() header->Get("RunInfo/RedGreen Offsets", ivec, ok); if (ok) { - redGreenOffsets = ivec; - runData.SetRedGreenOffset(ivec); + // check if any2many is used and a group histo list is defined, if NOT, only take the 0-offset data! + if (fAny2ManyInfo) { // i.e. any2many is called + if (fAny2ManyInfo->groupHistoList.size() == 0) { // NO group list defined -> use only the 0-offset data + redGreenOffsets.push_back(0); + } else { // group list defined + // make sure that the group list elements is a subset of present RedGreen offsets + Bool_t found = false; + Int_t ival; + for (UInt_t i=0; igroupHistoList.size(); i++) { + found = false; + for (UInt_t j=0; jgroupHistoList[i] == ivec[i]) + found = true; + } + if (!found) { + cerr << endl << ">> PRunDataHandler::ReadRootFile: **ERROR** requested histo group " << fAny2ManyInfo->groupHistoList[i]; + cerr << endl << ">> which is NOT present in the data file." << endl; + return false; + } + } + // found all requested histo groups, hence stuff it to the right places + redGreenOffsets = fAny2ManyInfo->groupHistoList; + runData.SetRedGreenOffset(fAny2ManyInfo->groupHistoList); + } + } else { // not any2many, i.e. musrfit, musrview, ... + redGreenOffsets = ivec; + runData.SetRedGreenOffset(ivec); + } } // check further for LEM specific stuff in RunInfo diff --git a/src/include/PMusr.h b/src/include/PMusr.h index 8a501d59..44ca16c7 100644 --- a/src/include/PMusr.h +++ b/src/include/PMusr.h @@ -780,6 +780,7 @@ typedef struct { TString outTemplate; ///< holds the output file template TString year; ///< holds the information about the year to be used PIntVector runList; ///< holds the run number list to be converted + PIntVector groupHistoList; ///< holds the histo group list offset (used to define for MusrRoot files, what to be exported) PStringVector inFileName; ///< holds the file name of the input data file TString outFileName; ///< holds the output file name PStringVector outPathFileName; ///< holds the out path/file name From 93207782a9e5f7875a6e7ac97ee9ac9b7a3d44fa Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Fri, 29 May 2015 20:10:15 +0200 Subject: [PATCH 03/69] updated docu and removed an unsed variable --- doc/html/user/MUSR/BmwLibs.html | 14 +++++------- doc/html/user/MUSR/CiteMusrFit.html | 14 +++++------- doc/html/user/MUSR/LibFitPofB.html | 14 +++++------- doc/html/user/MUSR/LibZFRelaxation.html | 14 +++++------- doc/html/user/MUSR/Msr2Data.html | 16 ++++++-------- doc/html/user/MUSR/MusrFit.html | 22 +++++++++++-------- .../user/MUSR/MusrFitAcknowledgements.html | 14 +++++------- doc/html/user/MUSR/MusrFitSetup.html | 14 +++++------- doc/html/user/MUSR/MusrGui.html | 16 ++++++-------- doc/html/user/MUSR/MusrRoot.html | 16 ++++++-------- doc/html/user/MUSR/QuickStart.html | 14 +++++------- doc/html/user/MUSR/TutorialSingleHisto.html | 16 ++++++-------- doc/html/user/MUSR/WebHome.html | 18 +++++++-------- src/classes/PRunDataHandler.cpp | 1 - 14 files changed, 91 insertions(+), 112 deletions(-) diff --git a/doc/html/user/MUSR/BmwLibs.html b/doc/html/user/MUSR/BmwLibs.html index 97119e33..b747dd89 100644 --- a/doc/html/user/MUSR/BmwLibs.html +++ b/doc/html/user/MUSR/BmwLibs.html @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ - + @@ -115,6 +115,8 @@ pre {

+

+

To be written...

BMWlibs for musrfit

Topic revision: r5 - 10 Jul 2011, wojek
@@ -181,10 +183,6 @@ pre {

    -
  • -
  • -
-

@@ -194,7 +192,7 @@ pre { - +

diff --git a/doc/html/user/MUSR/CiteMusrFit.html b/doc/html/user/MUSR/CiteMusrFit.html index 13eee7f6..0cb0a7b7 100644 --- a/doc/html/user/MUSR/CiteMusrFit.html +++ b/doc/html/user/MUSR/CiteMusrFit.html @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ - + @@ -115,6 +115,8 @@ pre {

+

+

How to Cite musrfit?

Since quite some effort is going into the development and maintenance of the musrfit package, you should at least acknowledge it in your publication if you have used it to analyze your data. Even better of course is to cite it properly by the reference given beneath @@ -142,7 +144,7 @@ Since quite some effort is going into the development and maintenance of the
Topic revision: r2 - 19 Jun 2012, AndreasSuter
@@ -179,10 +181,6 @@ Since quite some effort is going into the development and maintenance of the

    -
  • -
  • -
-

@@ -192,7 +190,7 @@ Since quite some effort is going into the development and maintenance of the - +

diff --git a/doc/html/user/MUSR/LibFitPofB.html b/doc/html/user/MUSR/LibFitPofB.html index b3263699..224e9082 100644 --- a/doc/html/user/MUSR/LibFitPofB.html +++ b/doc/html/user/MUSR/LibFitPofB.html @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ - + @@ -115,6 +115,8 @@ pre {

+

+

libFitPofB

@@ -420,7 +422,7 @@ An example XML file looks as follows:
Topic revision: r16 - 10 Jul 2011, wojek
@@ -457,10 +459,6 @@ An example XML file looks as follows:

    -
  • -
  • -
-

@@ -470,7 +468,7 @@ An example XML file looks as follows: - +

diff --git a/doc/html/user/MUSR/LibZFRelaxation.html b/doc/html/user/MUSR/LibZFRelaxation.html index 3f8ac815..6f5336b3 100644 --- a/doc/html/user/MUSR/LibZFRelaxation.html +++ b/doc/html/user/MUSR/LibZFRelaxation.html @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ - + @@ -115,6 +115,8 @@ pre {

+

+

libZFRelaxation

@@ -225,7 +227,7 @@ The parameters are:
Topic revision: r2 - 10 Jul 2011, wojek
@@ -262,10 +264,6 @@ The parameters are:

      -
    • -
    • -
    -

    @@ -275,7 +273,7 @@ The parameters are:
      - +

      diff --git a/doc/html/user/MUSR/Msr2Data.html b/doc/html/user/MUSR/Msr2Data.html index 3f264332..4266886a 100644 --- a/doc/html/user/MUSR/Msr2Data.html +++ b/doc/html/user/MUSR/Msr2Data.html @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ - + @@ -115,6 +115,8 @@ pre {

      +

      +

      msr2data

      @@ -349,7 +351,7 @@ For reporting bugs or requesting new features and improvements please use the - @@ -408,10 +410,6 @@ For reporting bugs or requesting new features and improvements please use the Paul Scherrer Institut

        -
      • -
      • -
      -

      @@ -421,7 +419,7 @@ For reporting bugs or requesting new features and improvements please use the
      - +

      diff --git a/doc/html/user/MUSR/MusrFit.html b/doc/html/user/MUSR/MusrFit.html index 33099c71..f3e74c9d 100644 --- a/doc/html/user/MUSR/MusrFit.html +++ b/doc/html/user/MUSR/MusrFit.html @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ - + @@ -115,6 +115,8 @@ pre {

      +

      +

      musrfit User Manual

      @@ -387,6 +389,7 @@ Since the goal was to create a very flexible converter tool, it has ample of opt
      -r <runList-input>
      where <runList-input> is a list of run numbers separated by spaces of the form: <run1> <run2> <run3> etc., or a sequence of runs <runStart>-<runEnd>, e.g. 111-123. This option cannot be combined with -f and vice versa.
      -t <in-template> <out-template>
      where <in-/out-template> are templates to generate real file names from run numbers. The following template tags can be used: [yy] for year, and [rrrr] for the run number. If the run number tag is used, the number of 'r' will give the number of digits used with leading zeros, e.g. [rrrrrr] and run 123 will result in 000123. Similarly [yyyy] will result in something like 1999, whereas [yy] into something like 99. For more details best check the examples below.
      -c <in-Format> <out-Format>
      this is used to tell any2many what is the input-file-format and into which output-file-format the data shall be converted. The possible input-/output-file-formats are listed above. +
      -h <histo-group-list>
      This option is for MusrRoot input files only! Select the the histo groups to be exported. <histo-group-list> is a space separated list of the histo group, e.g. -h 0, 20 will try to export the histo 0 (NPP) and 20 (PPC). A histo-group is defined via the RedGreen offset in the MusrRoot file format. It is used e.g. in red/green mode measurements. If this option is omitted in a conversion from MusrRoot to something, the first group will exported only!
      -p <output-path>
      where <output-path> is the output path for the converted files. If no <output-path> is given, the current directory will be used, unless the option -s is used.
      -y <year>
      here a <year> in the form yy or yyyy can be given. If this is the case, any automatic file name generation which needs a year will use this given one.
      -s
      with this option the output data file will be sent to the stdout. It is intended to be used together with web applications. @@ -828,6 +831,11 @@ The currently supported GLOBAL block entries are:
      Topic revision: r124 - 23 Feb 2015, AndreasSuter
      +
      Topic revision: r126 - 29 May 2015, AndreasSuter
      @@ -1639,10 +1647,6 @@ For reporting bugs or requesting new features and improvements please use the Paul Scherrer Institut

        -
      • -
      • -
      -

      @@ -1652,7 +1656,7 @@ For reporting bugs or requesting new features and improvements please use the
      - +

      diff --git a/doc/html/user/MUSR/MusrFitAcknowledgements.html b/doc/html/user/MUSR/MusrFitAcknowledgements.html index a55d42df..4ca69046 100644 --- a/doc/html/user/MUSR/MusrFitAcknowledgements.html +++ b/doc/html/user/MUSR/MusrFitAcknowledgements.html @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ - + @@ -115,6 +115,8 @@ pre {

      +

      +

      Acknowledgements - musrfit

      Bastian M. Wojek
      I am very much indebted to BMW for his rigorous testing of musrfit, his many useful suggestions, contributions, and for the largest part of the user manual of musrfit which makes it accessible to a broader audience! Many thanks Bastian! @@ -142,7 +144,7 @@ pre {
      Topic revision: r4 - 10 Jul 2011, wojek
      @@ -179,10 +181,6 @@ pre {

        -
      • -
      • -
      -

      @@ -192,7 +190,7 @@ pre { - +

      diff --git a/doc/html/user/MUSR/MusrFitSetup.html b/doc/html/user/MUSR/MusrFitSetup.html index b1bb4f09..e1c4458f 100644 --- a/doc/html/user/MUSR/MusrFitSetup.html +++ b/doc/html/user/MUSR/MusrFitSetup.html @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ - + @@ -115,6 +115,8 @@ pre {

      +

      +

      Setting up musrfit on Different Platforms

      Topic revision: r60 - 25 Oct 2014, AndreasSuter
      @@ -883,10 +885,6 @@ musrview test-histo-ROOT-NPP.msr

        -
      • -
      • -
      -

      @@ -896,7 +894,7 @@ musrview test-histo-ROOT-NPP.msr - +

      diff --git a/doc/html/user/MUSR/MusrGui.html b/doc/html/user/MUSR/MusrGui.html index 00e0dc69..3e3fe0ab 100644 --- a/doc/html/user/MUSR/MusrGui.html +++ b/doc/html/user/MUSR/MusrGui.html @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ - + @@ -115,6 +115,8 @@ pre {

      +

      +

      musredit / (musrgui)

      @@ -327,7 +329,7 @@ For reporting bugs or requesting new features and improvements please use the - @@ -386,10 +388,6 @@ For reporting bugs or requesting new features and improvements please use the Paul Scherrer Institut

        -
      • -
      • -
      -

      @@ -399,7 +397,7 @@ For reporting bugs or requesting new features and improvements please use the
      - +

      diff --git a/doc/html/user/MUSR/MusrRoot.html b/doc/html/user/MUSR/MusrRoot.html index b81830ac..fd8e52e1 100644 --- a/doc/html/user/MUSR/MusrRoot.html +++ b/doc/html/user/MUSR/MusrRoot.html @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ - + @@ -115,6 +115,8 @@ pre {

      +

      +

      MusrRoot

      @@ -1038,7 +1040,7 @@ Result in the RunHeader/SampleEnvironmentInfo: -
      +

      Attachments (2)

       
      @@ -1060,7 +1062,7 @@ Result in the RunHeader/SampleEnvironmentInfo:
      Topic revision: r7 - 29 Mar 2012, AndreasSuter
      @@ -1097,10 +1099,6 @@ Result in the RunHeader/SampleEnvironmentInfo:

        -
      • -
      • -
      -

      @@ -1110,7 +1108,7 @@ Result in the RunHeader/SampleEnvironmentInfo:
      - +

      diff --git a/doc/html/user/MUSR/QuickStart.html b/doc/html/user/MUSR/QuickStart.html index 51ed59d0..d424e328 100644 --- a/doc/html/user/MUSR/QuickStart.html +++ b/doc/html/user/MUSR/QuickStart.html @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ - + @@ -115,6 +115,8 @@ pre {

      +

      +

      Quickstart for WKM users

      Topic revision: r7 - 10 Jul 2011, wojek
      @@ -317,10 +319,6 @@ RUN 2008/lem08_his_8472 MUE4 PSI ROOT-NPP (name beamline institute dat

        -
      • -
      • -
      -

      @@ -330,7 +328,7 @@ RUN 2008/lem08_his_8472 MUE4 PSI ROOT-NPP (name beamline institute dat - +

      diff --git a/doc/html/user/MUSR/TutorialSingleHisto.html b/doc/html/user/MUSR/TutorialSingleHisto.html index e9a6f154..fba0a695 100644 --- a/doc/html/user/MUSR/TutorialSingleHisto.html +++ b/doc/html/user/MUSR/TutorialSingleHisto.html @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ - + @@ -115,6 +115,8 @@ pre {

      +

      +

      musrfit Single-Histogram-Fit Tutorial

      The μSR-data-analysis process using musrfit is based on so-called msr files. These files contain all information needed for the analysis such as names of the data files, a theory function, fit and plot parameters, and so on. It is the idea of this page to explain the basic use of an msr file and the different programs of the musrfit suite using the example of a single-histogram fit to time-differential transverse-field μSR data. For a complete description of all options please refer to the manual. @@ -281,7 +283,7 @@ This page only summarizes the very basic features and options of the programs co -
      +

      Attachments (6)

       
      @@ -303,7 +305,7 @@ This page only summarizes the very basic features and options of the programs co
      Topic revision: r9 - 02 Sep 2011, wojek
      @@ -340,10 +342,6 @@ This page only summarizes the very basic features and options of the programs co

        -
      • -
      • -
      -

      @@ -353,7 +351,7 @@ This page only summarizes the very basic features and options of the programs co
      - +

      diff --git a/doc/html/user/MUSR/WebHome.html b/doc/html/user/MUSR/WebHome.html index 77ceaaaa..6f89856e 100644 --- a/doc/html/user/MUSR/WebHome.html +++ b/doc/html/user/MUSR/WebHome.html @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ - + @@ -115,6 +115,8 @@ pre {

      +

      +

      Welcome to the MUSR web

      Documentation of the μSR data analysis suite musrfit

      --- AS & (BMW) - last update Feb 19, 2015
      +-- AS & (BMW) - last update May 29, 2015
      @@ -156,9 +158,9 @@ pre {
      Topic revision: r49 - 19 Feb 2015, AndreasSuter
      +
      Topic revision: r50 - 29 May 2015, AndreasSuter
      @@ -193,10 +195,6 @@ pre {

        -
      • -
      • -
      -

      @@ -206,7 +204,7 @@ pre {
      - +

      diff --git a/src/classes/PRunDataHandler.cpp b/src/classes/PRunDataHandler.cpp index 092a22ff..3cd13218 100644 --- a/src/classes/PRunDataHandler.cpp +++ b/src/classes/PRunDataHandler.cpp @@ -1741,7 +1741,6 @@ Bool_t PRunDataHandler::ReadRootFile() } else { // group list defined // make sure that the group list elements is a subset of present RedGreen offsets Bool_t found = false; - Int_t ival; for (UInt_t i=0; igroupHistoList.size(); i++) { found = false; for (UInt_t j=0; j Date: Thu, 25 Jun 2015 08:36:26 +0200 Subject: [PATCH 04/69] small correction of the skewed Gaussian for extrem parameter values. --- src/classes/PTheory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/classes/PTheory.cpp b/src/classes/PTheory.cpp index 9da9847c..08d7f176 100644 --- a/src/classes/PTheory.cpp +++ b/src/classes/PTheory.cpp @@ -2307,7 +2307,7 @@ Double_t PTheory::SkewedGauss(register Double_t t, const PDoubleVector& paramVal Double_t freq = TWO_PI*val[1]; if ((zp >= 25.0) || (zm >= 25.0)) // needed to prevent crash of 1F1 - skg = 2.0e300; + skg = 2.0e6; else if (fabs(val[2]) == fabs(val[3])) // sigma+ == sigma- -> Gaussian skg = TMath::Cos(phase+freq*tt) * gp; else From 012b2e58915cded8ec44d1c0798b5d146890c993 Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Thu, 25 Jun 2015 08:42:32 +0200 Subject: [PATCH 05/69] adopted the temperature dependence of the gap function (see Eq.(8) of the memo), which breaks the self-consistency. Makes it more flexible but requires that the user is using his brain. --- .../BMWlibs/data/libGapIntegrals-test.dat | 34 ++++--- .../BMWlibs/test-libGapIntegrals-ASCII.msr | 24 +++-- src/external/libGapIntegrals/GapIntegrals.pdf | Bin 174295 -> 175705 bytes src/external/libGapIntegrals/GapIntegrals.tex | 69 +++++++++------ .../libGapIntegrals/TGapIntegrals.cpp | 83 +++++++++++------- 5 files changed, 123 insertions(+), 87 deletions(-) diff --git a/doc/examples/BMWlibs/data/libGapIntegrals-test.dat b/doc/examples/BMWlibs/data/libGapIntegrals-test.dat index 6179895a..d9644f4b 100644 --- a/doc/examples/BMWlibs/data/libGapIntegrals-test.dat +++ b/doc/examples/BMWlibs/data/libGapIntegrals-test.dat @@ -12,15 +12,25 @@ ENERGY: 4200 # here the data will follow data # x, y, error y -0.02, 12.0, 0.5 -0.1, 11.8, 0.8 -0.2, 9.9, 0.4 -0.33, 7.2, 0.15 -0.41, 3.8, 0.38 -0.5, 2.7, 0.5 -0.64, 1.0, 0.7 -0.7, 0.1, 0.2 -0.8, 0.0, 0.8 -0.9, 0.1, 0.5 -1.2, 0.0, 0.1 - +0.0318411, 7.77455, 0.2 +0.0629929, 7.9869, 0.15 +0.113914, 7.64209, 0.15 +0.202492, 7.37699, 0.15 +0.302725, 7.70893, 0.12 +0.447456, 7.77565, 0.12 +0.611685, 7.45768, 0.12 +0.813613, 7.19287, 0.12 +1.00822, 7.57813, 0.12 +1.24793, 7.31343, 0.12 +1.50635, 7.16818, 0.12 +1.74591, 6.99634, 0.12 +1.99795, 6.90414, 0.12 +2.25061, 6.41393, 0.12 +2.4958, 6.66666, 0.12 +2.75514, 5.93766, 0.12 +3.00753, 5.61992, 0.12 +3.26056, 4.89091, 0.12 +3.49414, 4.52005, 0.08 +3.75356, 3.73799, 0.08 +3.99425, 2.84974, 0.08 +4.30518, 1.35139, 0.08 diff --git a/doc/examples/BMWlibs/test-libGapIntegrals-ASCII.msr b/doc/examples/BMWlibs/test-libGapIntegrals-ASCII.msr index c6e714ca..e819c669 100644 --- a/doc/examples/BMWlibs/test-libGapIntegrals-ASCII.msr +++ b/doc/examples/BMWlibs/test-libGapIntegrals-ASCII.msr @@ -2,18 +2,16 @@ Test superconductor data ############################################################### FITPARAMETER # Nr. Name Value Step Pos_Error Boundaries - 1 lambdaInvSq0 11.69 0.39 none - 2 Tc 0.558 0.018 none 0 2 - 3 Delta0 0.0673 0.0035 none - 4 aG 1 0 none + 1 lambdaInvSq0 7.983 -0.042 0.042 + 2 Tc 4.470 -0.015 0.016 0 5 + 3 Delta0 1.547 -0.026 0.027 + 4 c0 1.468 0 none + 5 aG 1.33333 0 none ############################################################### THEORY asymmetry 1 -userFcn libGapIntegrals TGapSWave 2 3 4 - -############################################################### -#FUNCTIONS +userFcn libGapIntegrals TGapDWave 2 3 4 5 ############################################################### RUN data/libGapIntegrals-test PIM3 PSI ASCII (name beamline institute data-file-format) @@ -26,15 +24,15 @@ packing 1 ############################################################### COMMANDS MINIMIZE -HESSE -#MINOS +#HESSE +MINOS SAVE ############################################################### PLOT 8 (non muSR plot) runs 1 -range 0 1.5 +range 0 6 ############################################################### -STATISTIC --- 2014-10-28 10:40:31 - chisq = 14.3, NDF = 8, chisq/NDF = 1.790471 +STATISTIC --- 2015-06-25 08:39:03 + chisq = 58.3, NDF = 19, chisq/NDF = 3.066272 diff --git a/src/external/libGapIntegrals/GapIntegrals.pdf b/src/external/libGapIntegrals/GapIntegrals.pdf index 8cad7fcab474f63e7f649339cbab4ccf325c94ed..b03edf6c7acc8fe17550cfb1f2e4d973a2f0c4a4 100644 GIT binary patch delta 58840 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

      hiB7o_JM)u*SKxYCoQum;r+U)v~G9yT@^ z7K4U=hO|#u|d zePXpAa?MyW?9MN&#zIty@giJ=pw!vZ|LTh7W?t0BAV{@$P~1E5a{&&al>n>YzM~es5l6@3hYiRVWK6O%|_WmTn*=Q%fLglsJc_K zgYb^|Sggh&?)KG!Dc%eganG9p+^e7>>f*Q`Yktv3m!SLeBMbpibf&$K)4*S9p=~0iFBs>pwGDuiFk>Li&EV> z)@>4(crF`Ah>Jo5OQ$hyZJzuXt)UePyVUK)-{lXkcx<)@FL+rO3&-&4AH3N`O%h6#)}sS3Rp;pr-MPt-mi_6a z7LMs5mB&GJJUK4m7xFoVlXY6B2V^$XJ~VdJJvToQ22Tht=2mFmu)E`b(>yFHS2@~! zr9;|^Kp(ai&7P($AGMdYC>{$LU2&MKVxp;u6K$Jqju>7Hhe7;vAcpq$p5A=#piB{& z?>YVMJudzYSymkpcbwkp3*IEmNsJohpWK^W-gcc2ZyB5N|1_L{RZ_ZcT-F_~X^rf8 zuCllnQB^Z1_G6rbyz0$=DZAbwE4_H!X}R-}4gZKzU>L_$KJ^*Q;sTbel_!5*g3jN$$BEra=rw!Zb7;ZbCttaIx@oY~D*d+pQi}K4bal$Z1_j*< z2jMG1UVo79 zGo(B~lvf+po_wKK*ba?fHT@yk50P(h3xV-Me#ov{G{9S!o|wcu@0`9FqH}23->Izf zn%rOcB7yFI!QD`LTWM~IXZ0%9++E$C-rbso#z6bcJuExM@srB@Sg&%%t z86Jx~!yHas6{43O(#qvhZhtV=SnU*0&FyPh9oz7K>i)oD&vBWhK9G}J|LFObXb?hZtY>7wWy}P)@@8tcBHmTUK>9qTY)~@kbfiGaEy2v zJ_*Wy-m`(8xGna48PCmz&!Kw`^+#}r4Qbc!mnok#j{wEnkChjF4YQv^mqV5yevgWq z=~p+}LUKPE%){)!beaP54|Y}_0MKm%PpwEk;?F#J`Y&ON3y8k$9mtR%7t+@ISzIMm z4IJb@)D{c5O4mE0I9tdy_OvV{_Csck&thnQ^|4Tcor9ILD6e4O-0Mfi*xFa%_md4k z)B%=Uh?0r;st(fniI=;~zp=4(U4~8Yk*cdcTj5ki$GPa5?g`Oz<1&Kqft~7+@^Cuo zPVO0zfJb?Pro1HtK4yDNy*jvevi*JY8u`>)cy^mp3BX!yQ#!={30_Wd_Po+HA*N! zx_8q0&ZS5E-<0@982Y`pwqmx6?i=4vDoh?<7@NG!EeiA5cK2w};G6yMMeP}J#OZ`< zbiMdqIk^Y-dO5%0OqYMFDf3TJ(P!VHBtcA6DG}*L-r0>u5%Y~C`Nw3KD~RY{Z?M#+D^uf$u^F@ z$^IZ@SoclLvZ;}%bpW_D74)_98TV}2D6hg#xZmNRfox9H$Lzj)dUPq5xoqBlp78Jy z;vZa4=o@qAkYc69?OU;>9ewO>8=rj8uo*w#XIGQp8Dsz%v^TG^(B!P?pW8h*b{EN@^;>1zJ!+i?D(8N&)|PWYfLb8Or{%v_`r%&dY7Sdq*2sts8r$ zQY+fWFDqN<`<)UwQ@=tYJDY@mkOf`J+nWLx^k-C3&zbO|P2leM^=?RN znTR5driy>?^L9m9cpuA!PZNlX8VpZ`O?~B3vQ!|7PHR?W-f`wb3y$B)mL~B615e|D zDJ`dm>uS6#>yTTYi1wCtRwrrlhaErr$^777s$~q{j&_W<9whdsXgY|0h{Rv3%0`Jz zz!DZ!cF||9c~e(y1TvLa5io4|F;gE$KnIi!jt$1x2#SH z;J>C0JI_u0)gQ(xFenxRSegga0`?)LG?&hN0vPH{M5gWtQ$`EqET^om$gBk>-k)cX zm1}SPmN~k|2U3esbU&AWp4pVc2mwFq({rz|khbBWst{}=$Sb<`B|mcSK6vi`J&aFh zVFVZ3e3mf7$h0H`6+}dzmEj;uD^`Si6q+oYzY6%Sewr4sQ8kNi8ojSQRZkNiAUqEm z5nQSV?I(1`3dww@R<<2YcDI^;*fd`D`0|K+kX#G;yTf6URz+r`?_ z$_+p*M)OY+7eK@w=wfYV;s8)EakB#2gEY)c>;P(xX4XJAZ$^NKogF~+pBb(IRiG=- z#RF*0h`_=EFt;{y1DFCWtsM}U{;?$EVBrYh`ghpe-RXaZJb*5)AX5P9f7zq~fJ~Y@ zI@oyw%z+jNOp1=6YCw>efBzr0{w&bfB@!yhpb&Ct-XNe%GPdXRsahV zJ6GVp;y?%U|7`-)xqn$;(v}d{RuQ55_n!W1OxeWR!A;%U=|8IfeLf0&u09q8u$PlTQQpNPHv zpMosRp!J&ng`kqaKMJ5_0RO833oA$hXm4)fYV}tPV}uko_OD{;Ld#{~!n3Kj`ttEXzNEKlM2NNq2O2`KuZz!SXKz z>Hjgz4%$B}e{Ux%pu=Aopx9sanL*vK`3pfiXZsg|x^4Ftg0|wXm4Yrb(;sCH&{PL& zhrhi4vv$WnWL~|E z#1-_g`i~V*CtU6R>ol=|4F9pu0a}%tl?(8%X0ZN~U~Omq*Et0>#Ld(3FAb2a`(Fs! z8;`#bWY+U9J`!58w-sg{BkdhD3<=>_L-{-ifsH2xJ11rch=nwNhw~GhB z!^z|Se_xqq?k=ERa{Je75_E0;hb^o@FApHl3uuP0vgl~W7iyE*99|Y6Q7~N&O$#n+ z*^;2x&^yZHg(@$kW@;t~nA#LGp&%<~x z!>0{j`zk}h`?nM6eaJCNNAvv62?w~+?D|+)f09n&K=#Gpah@`@xcWZqPZF^2dLE76 zGebGKv?Vj_G$O+4DcML=QPZ5uBH1H;d7>tLh59uW5?~Vn*Gji`>DcLx{!{>$oA{=G zj}?z*)=A8!x=o9zx-WE6S{Q+fQup3JTqB$buvBva>_M->sgBBochyi#x)tQYSZvC$b>70NCbF<*QwaIB1_dW7?NI|8IU@Z@*OC4M5` z3_SNkNp#DL)zqiag(msXWLir(?&~g`VIbmP?22H$ zgZgA6O7jw+WQvH=Kgh3qn1h|uL?kcQf3J$|!bB7&e7PkW=gnBNsjsU%7o&=%@G`5Q z4&m2Bf&L545z1^`Shb`|tyv^LAZRxz$t!e{!vbFhODHb~fi@h;*F+=SnOR`38m1Ik zQ34qo#=~Q;qmed)ys}fUcGTC0@2ynnlxO_eUR|%gvp>i1W2!l9MRt;g-TVa{fBCsq zrWIK8Pu`kPM4`c8Y8TEpK2f({Fr%C`@n(|W@x_K*#>tuZNa*F3z+;{BO5`(=PQen3 zo`G67o9?JmHA{fBlLGM8YAZC9G_I82L6C`Q-^pNd z@zP%&aI&3S*KU%P+mEs?+x&Wlf5uZ};>Hs{<6)yVI|2O<$%=K>BD64lF%hI;T&eeW z9)I}bMAnBUh=EHWZFXXv9f9q}OqfMpzwn(euk?d~>j6=i)a)TODeK-5te04a@qCJFw0WqmU2Lq`x(W#`rW+oTpYwVQ5el(kV!*!@lh|4?Vx0QXEAd2x&FW#s#z zaN8=F-y2ZuvxBfN!6V1>f6EDsy9gfGKdLLo{3gLzvSB>S?OQe}5LFW5Q>;C^Vq#%m zyKbhn#TEVizj(zSrTcY5OC&H_;>!6JOd#H4bkY|6PezkoS-$0!ahd4fcN5qsPf5@C=aP?L-eLH$% z87?8|o43hDLbbv#OZ@i+ZB(rnml>ow+8bwuftz9w*B6*5n8-1`ezZ{a&!3KSWA~}! z_Owur00YF82L})29VUgj+!aB7Qmw9EOz=Iwex?AH@lh4I_8M@Wf-hhB)ej|dp_H|O zku+JG1{N97H>3HQ(+E~07v+oHI!?oS@)sD~;|oxm^HY!@e@#+c`zR+b{?4jd$(~vJ z5Ktu{k0GgW_iivx#^detyIRsIR0E|KoX6n+XOL4Fw*J+Dl3Fi>{>`D}Fa?-TJ`%(a zX?IFV$s^Q|MGXBO&oaAy?c3HG!ltBhgf0=(5?-+IW=>w0=2Gp~tTnu%8pYn0(56&a zyof(CJDRDOf1FR>o@)UmBtBEadMnYkMW$wrS@Qbn&=DOnr%#1?7`5kCvb@tc`}WgT zwhA$;B5SgVXFr!cE`c@vH$;-B(Dv(}9YvfI&Io~o6Y?RwjMjO=TZL0keBfkhSA@S( zP6LhC(#|l1#K1^J+6fC?FGs$8uv?o`iCn!$uMF8df8C6G;m>c(C;F}Vb&Ayct6R}j zb?9(bqR-h>)({?RAXYO!HuIBJUZnGu+cbw}v@5$qw_<0t2!av?G#3K$nDnPclw~p) z-2uBjo9s~GfrfjzFvHc8y)+ICe+7>hl;a|vwA+AlilLpAGLoLPMZ3`D8vkfM@29d= z8nag^f2$moZyj`=iIeu5vihLcbx%@J3D};VuECryG*Kb@=b!Qg>F^aBF(ME}@rxGd zFla^rcYQhN!k?>JdFR2LZ~2r7u#7RdC4Em5nsun)rU{k;P&3-izJJ@Igi-m(GqAFt zN*`#=Kv3$o<(uWsdv?i%^NTYVu6{1tBwoqGf5c6c_t0g`B!%6>#vqsC(TX95mfxKL z#Sy1=Aq4lO7^cgL7dvsXV1lVX?i3g@t#|R+1bl)o?{!S~c3MJ&oL`iY-?htO8 zsD{Z!0E3hmLKPF#x?$CQ8rlCXyv4*%FELbW=34>h;K$ht1TjSEoNDj1qZXy%UM>w} zfAsT=0pV9JDS^5|Ic%xIA;}0+g+Rwj)*`+|T{eLNSK3u7w?$L@rp(ooBC}7#A``UL zrE95feXbw6cJd!(vYa!JvvuCN`fv7rD;V}e31iwgKkA zexYfw+x60hZU)MslupnN|Q`K%c);`iuUF z9DmwOTN`#@C4pM3T7Uea>#F0@XWk7AvenXZYlfHGfbmR6eruC6peU& zJqUBEN%Mooc4j-uR5CZ3bzQU1_m?!@PwR!?xp;Hx&6+(*qM}3^F`!cZx|GF$Zourb zpTv|X@8vMlR#>&gQUGn%S7WgbCp!x@wazON|Gaq6}e*0o5%E`KhI zsgZc-Hd4O6iZVa57;vS$<&R<%Wr3n{{&dX*DZi{(A?j)L18A22rKs9~Yd)IWqZCo> zP>59)JaMggVmjW_rH&UNF(=>@Vvf};z0oM*k5c*BpvPs3`IAGnUP;k_W8>t%AsXSvGGeeQ(mY6XAR4(amjEPCx`lw zKf9^1sEIqKw!#7TTIyfyLx1d38~7%$+Ot`pythLx~vIOj8~a12v;XO(KHs z@UHcB#xMx27Ih>v6AuO*@B#VDZ8eHVFnQJF1Y>Ax$hm@7&sDA?IKJ_pwq>aZ0gd8= z#B5&mHs>vCq zuC&M@$rqepCWhH{3k70#vC?wPDG}(TY>YGC8-G@_ zIbmE!&>6|NFMs`JnbgV(n*ix0hNARwK?U27W;f`&@Hp5WHM=p6u7k7n5daUOF?2T0 z)lhAz3F7hUE#TxE<84c)%ive}#Ye=IpLz-rDxbQwfj`f{8x{3kT!OJUpkKYjTA7K0 z*n;{Wo#z$z9$Y1phE0#$p3LUBh9jG0wR>M^HNd4RhkvUhh^f=|JhS43cFqiX9fq+r z9>v?z9aI?a)qkpo$)X6}>(JSmcDgHr!-de(5Vg0IXv@-68)eGRNvUC0gfp1a+xnNK zgv8E2Yr)`5;Dr4Se&Oz}_)x8*OQyS$j=3*66zQ|55<;AC;1f)Y!w$dj?98P^GSd}d zY<{~tZ-1JLuKId&nD&Uw+r}j5c^}9r6)W(a;J9eb>`FPNI-#dC?n1Mt*AB45SB8%@W#48}MJ%R@LYSOKUrnnT$mD~5cTn?f z-&KW96@nk>HhZHCot_T#Rp7$#~VAtw7pl-s+XHuvI@{m8qy*baN` zeLNy9zQZ*1Mo6LKzhxdN8DD3BNeYSo>W|F|>2jN5#vf>3e*I(p(YVhqz^$w~(EsZm zYxi@i*)Gr3R~!2D)ttyueE*8#c?VH(U4J8X-VKejJ$>_A^iw5Ev`MM8;mQ_uctJ*9 zn(ZDab{GgmS7~r$iHM6-BFk8CX$Q=pV%@5;SjUR3(@>(VPnrYj<02=<1xMg`Ui`e+ z0jj^l!)Z|FtT-coFA1bRY0UL9Lt*Jm;~cCCoQe5ko+)Y){Y~H&?PqslI)v}I9N=?sabc>!=d=h4yc55-g}74G2GJpvSo+R+ zye0NV9#m|@D@47uGIgtLIDdehWA?AO#V8SHGdZ_5yy~f z^3BF$5C$>jG6NIPRx;Bv!tQHcV8A}-G0C|9r~}b<$FxP7$N9T1XzEx$9Uo{w0Rj22{!I+Wpz>&WET|KHw;; zN-%xeL~EQ0GYBSR8Hla@RO!Epk4|(Q zWlPZ}N}GRr?F2RGG&oGb!Ofd~aM;=ECsAOoH0yqIMCw7SDI$5yEq^3y`8Kd>i?&E7 zOzc3Yd1&is6QGJmKFu*6>=UhXFjgT_Ck>q7w|DArI?BWO@nFdJWLPbW zKGJw5Hhj=l4n^Ia=O^}23wmF|CILyJrlOaE4_?(LmM_g1m-dBf_9PCUTJGLHVx#iW ztgfOY#2J;^o=T!R^nWUPyPcjyNM4mLcSpZK$pU6*ex#+x^}cI+dP@Y(-Z??0#y;-G z2AKh$eHrrL#kzc)$unSmY+ADVE9_U8x{ymqVX6E{m+)>=vN(6xE6Dh}!-`_pmd>XU07SliML z+`P@LQgWR7ZNfcHpS2N$EF6Z)ZijyuWIzROG znA=AMe_a{z>BdKLjZ~5ToL}fb|1(yhQNioXZXk*HSbllNy%a!^rD#8{bP_`wsriPcLs?PWs zu3PLWntz`l7JKqdv)rF`XX*N-34WQq-z>HN@GD+5Zp^EMa2M=%B3f@v?%OeXRm66ON5u=%A7KSh!Znvddrg)u-!Bw@tz>pm zuV@U{n!B@aye}1Z{zJDa+^VH}$gox4A2Nz7paZtN?IsFo3 zdhnPz!Wb`LPNbRe-AeHXiN)r02NM{4vUM|D0GXu!HnlJFPy+ATO|t&;meL2y#;x2r z$g)dH8#jd|7qKG25=%t~hhF6*ei;^g$Z{!-v_4azV!14CnH3`7XTN-Xv6PjOC1pQa zvVW6D@!Fg32AJ}hjSl8{tRmBD#dx&Th%s8+fqr1i;2-g$_={~`R=Uzgc|DhQE)ajP zW!bB|KOHng3&pX2WpUWuT-0pl=!FKbUxGai{!%6WPSIm$myQ~P=yvhNbuE;_QZuSj z>QDfWPrHnr1w3Bh7nshD!YEFb6;%yIDSr-*^3HVMqT2@ls1?(s6*pUA`eXGWlVNS` zF_s+4j*dRdJwo!@SJay*g&8eDf9^U}rinU91Z>pchpGKG}l0*Fv#6wVFT!xmGa zsp-%guP()*OI*L7BJ11BEDq&Zzf?xx?r}f0VVh;Za>S)Hd8dlgaU#WC$@^Wy$A2H~ z!8%tA%=^`OMm=q<$X$ktl1&=EV0ICPh^kwZ)%32QM<_=am&A6Q>U#)>;~#DDA#zeC z%iMf07OfX=8i0=V+G}$5tchZ6BR7duWKs0 zGq@hjV>`Dve;4>&kNyzBDge7dh=0CRu>+%|?uld<`{f5jNQdccfAaeU@?lb74FB%Y z;M?_T;AEiZ6dAYwkNDyD&^+JUg5}xSDsNUQq3yt*ANS7{Fg_VeVVZ|q0E{m=QUa?x zhCjPEI`lOK^0-#QM4Q6l$M$0D4#U!=t>cyr>t;Fn7U7{;qMrv&Fjmc4*bwptkF%||;)f-|3h_6{J z1rL2D!k>n1C2AR3L8mS%4u4l*6iIebl9L<%xGI^@4)b$|L(EW3d(#sRRaeu~7LNoY;BQD&W z1y+d=#~>IMQI=CSNhMwPKn&VsCYh4^94nU!rb4%MAs^K;L7nr!CR$SGxm5N$TcY@o zVj3#HkM)PWP1&P{Z1MgLdhMhk&jW;T@5Hk&0K2gT9Ps_cQddQd3{EVZ{nPTP_S)V) z9hMK=HgUpJKc4;kdw(yIbEZED+mc}OXP1T_w#G6i6vjtgt>T)wo37e0l!lN%UUmH|6 z5fYd0!TND=G=Fy6vZ*48?u=4NnH_VTob67MugY;fx*RGzJ0PO9xuJc3Xn7FTK6p}o zXkuk2ni@hAN^?szud;)-uy~JusnH?Z>AzhowR-KPTf|5Pvh%PfM117j8%XL(5&V(z zDnb2f6ZjnKw`2s5s+_gCOlu_)bpOVt2fiD;mac?0On(l%Z~g4FB3aKq5d(70;Kh?nNRLr2pstxW80rbRz^vHukyU-83)6b)f4^wRt_#8=u!tAo zo(zRD9w#R>wlD?mw5<=9Qy6DTod3Aieq)rvJg%8=IEGtl%xF*NfS5Ye5V%aa^<;Ma zS}KEry?@b8rV*Fidpdnl z&z8$iI^kt}iz`PFGVMj1snH7ldZsD=Be65S&Uz93%%t5KnNHBp{lgd*Uhhq^D{^(pBy<}Qpv_Hy3|SFM zSW$m!ox2k>$+mEiUcsuk`-q_FhiP=Hw&QIPZ<4zd?RI?S_*q{zpl zm_VI@Dtn~W60a^7b8ckA6({D*d)KKguYb-_Kbmc7hpL(WL+Ic^D#nlUbuFmf;+NttLy68-XcmLzq>3Lj{A=W*$~37~%y>$?Fk~If5|#B0J#x zAvVePsBGHT^?KYTOs^5_IECM_$>Z6rf%BiR)C8PH7%DF2MpMnQ_v#24W6&e}Ie#ut zX9w;Pa3mGxNHxaGM^I?}IlMrRin+MAZvrDLH((L|rU?n$pzp$ZdFHu3YqBm0+;Pyb zyKXw#b3wF-su|$&DfyxKAI)eGVaR$8p49Yy=d&Xnj?wvOxyD^aovciR4`+++LVz!J*yb|f=MS)@qJJv=q!(3j zT2!|3?fyLhRU*2xR~9_o)Br#>zY@j>j^#a{ZsMy6t^@VDk&TW%o4s6BR|1_Qz)An5 z!XD|OemSrprf5a8MnKD75zWf2A5rH#CRb;7qd;o-$DYFdLG>`R67$^q5nu;ph0zyf z4CsH-l|BUVD>PmXc>o3v2!Dymkj>gv5}1`v>-rRRJyU%v+!nBl7b+{`NTJ5#;MEy2 zJ`S!WNO&1e1pk@MOopQ2@Eleh(2ALw2SsBPEie|_4euGUeFD@CL3!jtAmxky9Zop4 z>61;RZjx--~r{ z_LsE>m?1?Qn>xPWXQyDg*=ak~5QMUJUW*y%alI<=v!!@pYiyLYV?L20LYVJY1V@G& z?3)&t=B8yBfiq2=qza`g^Ers1c=2INFkBWUz5D93>{g>>`%$y3rvzi6VhFM&9`k4_w^6nT1@yM|6XiR)8-JdwXP0i^0bt0SAHNe8}^?kr{(M%nsKvG3}P&P~&~$ z!_V@vM4=Jw8)h;<9!@?>wP6ZW`f^&E1uvC~DZF~N4}biTG#R@y;a?J6HmaO55t>ijGRAK zmjn`XeSeLr#o#?gYBuO}=2FGspChR;2u|Ex!^4I*dTsqy1|c_+!01q$Nv*&3B%gue zW0VWN0GU+3Njo1q|8i5oX&O;e_9AMN+{_B!D0@y8T6EmL#;Rk|v5*tmXXc+3NJE6& zjo;H;*MWc`+z2hKhiD=+U?M}Iq)O?mk;nUS5`RyyyK1nc2)Aa0-gdRrh(&`s%_gIZ zK5Yfq^kVS^PP*+Yr6bBO0;ujJRGuN7j8X3X9#@8l2+}FwQi22%J9ZyF{Xy1H>re|d z6y|`_o*xAyy!XR*$?4V(8iK+0`GqV^uS2>9(pF!o0)vH_vj*;P*dN~W>m4u`mz#4O z4u23P>ojWtlY1NTkB1=K%GkqdU{d(CP$gy8-KwHjXc^m?KC2!H*hVc-RbI(RP9Y7)!tnz zBp9=jMOW))D>G3}m`6?~ZdD`L(b?Z3<$U-rZeM^jX5}I^YLX~+2SbqTw zDc@r)R<}X!WXW$=tt5<_QoMl=&%RjFKO~@1ZunsV3D1VAW`WAS^SJp5quZU=K^Ye? z*wy`l$xh*&EakKHw3`7`!?lL!ie%)t$|?avt(?ClQd?bDBGY#H#m;RmD2DhqyOBMn z9i}tS!f>*tHL^d#m0OWrW7*1e4}XINU{L~=J|Q`-5)EdgNmYAzU!ulDRP89bf97%E zwltgP`=MVZJj_sN0)YwU*1CgZ5zzN^-{A!tj9d{kAX~rMra0$8O!&#z_X-#s*q=t7S&4&7$pz4RH}iA6Dg;)yzh)8TYHzbtl zL^4Z!w)uhUTlFcPUA{i4DOUn+7Q^zWvWEk?WdEK zwiE`vo~ox5PUHBmWqDULgLUp@RYdc>OS|de`Q>LoQ zXN$yx3iFzcL^>WYtR_ny41JoXOZQb4VPt|xCX~8+XNgG}$kU6FI(?3GBlVcrfv8Mv z_kyx@`nqskH{3qbt}$+AZFBOo!1{;M2jirQ;wG1uY8X+SGjI+BcYLe(h_>gJXO^km z*er6kcdsHwCVw@2C4Gm>tr>elD3$qA?9YXq7|Ta!_0wysc){8YKje$k*I8%GFsIjk z*o6PEFs(KP2$E^_mLBlbAS6xyqB1%3zXz&su+1$)QXmeF0bfi?t+rm z=NS3m!n>R++vT}$*-+IR(00JtRXt7C1s;Qt{!FFvEv`mBs2TPQ1Jv#elE)iV)`nnr9hbkJ zyIQVN72RCggoH{mbapbnD`77X20*3?K{RW>!MjeQe=Z1wJRXYEy8`^RY z1D7n)W`F+^?%NA#C1SX?Nokp|N=K7_t`(&4SB*7Siq}dbU8wR^uP-kS`EkF5i^jSl z7wKY6s`NK@DJjE`cg-LjUac`x6pSZI>rpMrj!>C^^YJg)B_Fg5w1=$g1St|&rM$+C zP|4T^Ki>30DJ+H-L+PJbOK392y779POHW>fMt_4-4%hfeW&jijDl4>>(3eNiEJD)3 zSWgleUcZD9WbQSq8_ho(7idTZ!kw`tNyp^7$=g3*T8`o|Q*8u%WI4hjrcQwkLhZ51 z?N4SVxT>C*3k?hIHjn+5gMV*HI3gpLOMFrNxp>4MMsYJx`h#y;iXd>7i}${zM9}Vv zE`JS;X>!yDVkeRf4TWCi=5;zHiku1Qgd zTkZFW#ElK+7jj|>f=gXQFMdmktLCR9XiRXLSUFv?_QQDXnTP%Sc+@KaGtKn^m+gQ1 za45~IJ1HD6lnT%%kw=BrCZy6Np42hFXF5F*4eKJ_?|>|(qB`~4F#WdeP3W|ylz-La z>FsD?l(gwIr`LDr);ODQbHYfyPk4Zxhdxz2k4gI4{g84N{N1X#5*Ex66}>~MEHX=g zukVp&Lg(YzwVnOwn19VNb~>Vse^a`dlfA9j?TDW|Z>#P3biz3qd9FZq z98WfC>l5i5M16@Iu(n2Jvs`$W*;Lxy(Tns;A@sUSprIu$=<5sRX~}YM^e{q1vzKzn zx7FTE_H?O6X-r~l^lTtPN8EQeyaTY_B-+wVDn83N19HvG!r;RkRDu>dwSPG4GrC&~ zji#AuQa#z{NTioszk3)1qoJGLFB_T42A;-DPNC`BqMTmFp^Qw+T`iaay^w+&4nRvq{4;W*ta`4m4~--xaE99N;i-&x;klN; zEXqnhl5B;CTb>`$^)X*0J%y>kCv z9HN>S3K`P3!a!IZdw;UDPte5B5e9now_d z=NM&ic)!F#bxY#yCx*^}ICK*Hs&?ZOG{CEKSn*WA@hH)qe_@^K>x@^=rfU0j4pLjjU z3laI1gR$KVY=4#!pN6&Zi_~!->u>_sbbc<@s8U!^dLO?zk1`4L+x~@5_?%3tA);A| z;Y&g$JAEVTIbIb(h(p4O#XcMP^mL<|53`-U)?w?+$=MqiaTePu@zk=Lp+g1^#jvb|EZ8ObE~E_hLY(Kr z4xO=R@tE_BDUy~NW){v-wFvCh+@#iJmHrEwS}9E!@m*t@7{?vzP#@yvOznmi@tvC&D zAb+2FB4!Tcu&&uaKk?Sm_r#3i@e!pcSS5~5?3?x`g>Rm1+~e3hB6K>fwDk0R(RD>3 zUz@A%G@2tDqo;;Kq1fXPN)<*hchQ}gUuRxvzQUigM~)QS9yAVfI1&uUk&ydQCWzVI zEcM|l)8lCBG+lI+p-*^)K8Ky-6_tX4~;Pv&?u?~$;fD}OFu zG+5`$EFJDaK0ImFP!`1{amew4vktvA>U7vZ#|Mjdhc1c-v=)n&Pu`j=ZQhSjn($A8KUzn_)SGlA7xCWFgf&c3sODJpfBDscO{S*NoNYKDBQRE$O0dL!Yy7wh9~YF(gRm(=OV zsG!jMM)(oUFj)X!0c1(J{NDdjNc&JBD)ZCbM7vXi#zc=^Gkz|7JAaPh1rCckqLgbC+_5o&{oil6q?BHner05!0EL zd~`6#67R|1y)=m1tbbH5tdCe&w5kcBeN5Ziz10Y;(g?|Go4=$@Z^wh<%e)0Tu(?uS zo|-#HQqeH(ni#UjyH!Tr>E<}=L%;74%8e^eEGo?MVN@;i3PVbVeuYD4AT(o+CFeK* z+XG+qWrZ1bF$juEj8@+UBUPKfstP8f5qCH}O~>3NvQ3J=<$o}OdQfVS1_2~OF&=D4S6po)e{VXJ+{?$ZiuS0)(-U(o@DwrqteBG~f6U3VQLuQ@bU~G<@ zIE+=a{u5-{hkqeo=cnqI2+KM~3vt6{%R`AAZja8LY^No0jzHP!b*v9s62JB3=5%E@ zUhWG zuj?q3S)vo=4INWa!HKwvMs&$8`J|Z)ZLoel0wmW)gGwLVOQRAvmGl4_Ko@!%Ht>`Jq zo}v1T%#V8PFMb~i1NKQ0*qvGxmL&6Nr$4akh@_*3PBpG>!$M`ixy5=L?)?l$C56cn+^-;$yI836w=k=bP?MGlR`sNh zPHQUd-0Z&AaK_F-wdgjyWQZz6hJSr;&EP=)6cGlhQPd~LTnK-m;gy3tce?NNY@mPO z4~~lPu)E^15cFDDXs9;SYTgz!IVRq=GDy>Ym3~i$O%GS>$(iRhw1H$NH5EI-;G{ob z+r%I>Z#O{2(D9HuqhghQI)a+|lE?1^gg_~z5T(?*%P#IpD=UR%{ymI;s(+j%W`&!` zuL2x=7;P43I{Tu*>B7Ht;$o4&56{8T4r$ZHIy=SG$37b{7V=kCr!hWk#{`2yfDrc5pybPG*vQvwx%7voqGxd9)E0qYrp0R`R z{?sNP+jbUl%#^Yqor>Rp)PMJu&R|teMJ?efUCZP>2qaR$*lZUpx3K0<)Wrfkw6C#c z-<3;!y*_vCvI!+s%U%$7+kf*jKmW|voFmoxU8@%E$BD!blcZ$@6$A=pRmLGMxm`-Y z*JNrUZ}49K9!e#@b$1M?cXSP~@^km>x6zRZ>ZGN#;=-aNB_H6;lLSEpwg-q-wy6^s!%BCnx=5)xk?%EDn|nl_A7ANq6&0@TQy#V9 zbd}8QQ!CNbNq&>wm@-dqrKeX7uNe22Vd`afmJ%E{BRwuA*IEA%dfRPQ*9wO7L@p1x z&>LgWKt$q|BR70Gm0ACp49191;Y96P&#%&VS4J%X%nu$K0h5fO`xJU2okMeW6~Gsh zht-y*?)*98#~6g}g6?@XPb(Jkh;DvZe}4<)`1X0%vyEp{>hYPffeouJ@BaaiVX1?c zvAF>gm!bawEecpgL|9QlD??3EmjR&x7?<$>0fhldm2?7R24#3-Y+-G+*8=2U4mUCi zFHB`_XLM*XAU8LcP-+1d1UNM^IG5020V#i%WmKD6x3&w#-Ccq^!Ci{GYjFqxf&>dL zMT!(@aSD{;?(VKdTHIQoNQ=9-6i)Wu=iTl1p1q z056Z203ZB|!32kTn#bVGVNtyTCO-*3JMuR}cgY z^Wz4{I6DJ$|61V*&;@&fJ-orT+!(yP09yzM2CxC!L!cPIzdWfx?OXxE|AcM5-2RjD z277qIO#xW{w#f#7o3wR>I{N`^!FGQbKuuTpZeX~V{~xygTU^o0*;&)t5MO{P54^v;@Iv_KKflcXYcmBX$ki4CwFmGC3IVJ=JgogN;Nt@)K|la6 z00OlI`vSneaKk`us4EP<1OV?z5WvpW1LLm~6%qshW&R5NL&5-{+;0*A0OkKBVIBZb z@i*}TfJ(oK9{^POO+o;m`fq=NYij%^xTfa6Bm&pe{!MTdz277N0P6oHxQfxg1Ro`! z^>3f>N^98fBzy~--vl>m<6#YQ0>hlac7Igy{~P~jNdHZU0)U`@iI)d%(e@97%Ypwz zLAZz=#QTo`A3Wgd0sn2g2JA`2*qBoqr>IW`NK?5Wau6>%S-f_vs1+ z|B;68?e;qjKLj`UZFBv@JTKgf`yUAR@`qDixEIeq5H9e$D}wO7VGbVPKOPls4(8+f z#{&4Fc>RI!XYu|6;dXs~BOhGP?{ECScSly%)i;1k0Kmn^F9;tkUig^s1pPl{ATJLO zFckLpdkKF3{=;?<_+@_ugMGmujO7JakoZf-^ybL2V1Yl8~d_e3JDu4W;z>0 zMbtC%)9K>9buWt+h+6f*OG!dn{S+ST7=_l#@%hZP(~ICo0a|YIgXNPu5K3$qpX~dk zmQRk7QJGxiBCBTd_IIms<`jS@4aGe`CY!A4zKrVFxpwGs$IVL5)P`PrU7z2Rx%*9Y z8}>=^oe_0b)G2>aPopE$3Po&PqysU9mP!pgC(ox<;mQ#_d?gB(q$$!_T1Q}xaFfDx zmeNLi|3_-IkKr^;c+C-{X;a;huogSOxWw0f&dODVdc+Zux_K+ZU{P2Ta?7Oh0KzdV_yiCj_&vX=R;)WcD4gUao>z z^iqqSmhYi$jB<(OOtaJNLNff`zhEp&QR2?SsrEs)NAJeQFP~B6S%wl9QF~zg6vvzS zS{dJ$2TK?w-MK96yJ~w7ZOA6IVdO7SK(@ zF$Ho$x}Sf*JjU*ycd^XV5J}5Kb6|sFBN^m0_|O9f6?aK=ZpLqs2cRM$aSG6 z((OP<3t{ce*v}epki$SOFF~S_(8r4M*rMJ_Cf0C>xk}e7+KQ81NG8VCQAA_RI6eJ) zVjKR950X2}f}W}?EB-__efV>#^HK$-M&G8I?lFIr$pG7Y^q*hf&(Goz-?j5-mHLTt zf9>quD5ilm9$e#kte7w+SQONH(9*}$65fRu*?FW! z=^m+B_-#a5d210{M4rC?k>ee4euWr3YT~0C)qn$ltZ8Z(5$sIyD^uv@yK$80bGoC@ zc|Lzl;Q7S5)HW<`kXF{n!N0RipQ0+_&L2K&8>4z=RZu&6A)Hkx%(1z%uTtLbRee0P zy0O&bpe!Lt$3hTN(MGL55tut@rpGwB}PqTj~70v<#evzyYwt6qc#i4t?R9srzrphZ# z&&fhPewpqVK7A+$?EuQ_mPT1=G98AuLi1bA)|Ul>Iv|ke>RrUPmxBVw-<>+ z*-yaBkYdw4PDvK|%?8=@*vL#f#WKaymQoL04{$n&x{y$$_fdMM$Z=8bf}DiA1TZ@l2Q4Qx*rQ=*?xEIR?uiE7IXfTFv?re$L?1CK4ddb z3@kMUOhyX&dUT$?eV}_tEIDbygmf!}ntW*Wl4Q2OG_OAzl!W?xN_|7g9aw*)f?rji zgHZj&w@P00%sWz_vw!|#Z$Lj0{wGQ>PWJtS??K$EJ>V-xhV2E(B2{ z-#Blx(q}^>I;f}$htd*Pcl>{jnmXcoEof2t!r(HjE#=yfI*^f;-yoi+qlj=Q%@501w@6%W_WU7goOergHVCYOU z`|GW%IZCnm2N?V1+l|6~L$he1L!(-C1a$aBR%$EO`#3m@jxC90wM!Zw*dsns^0x~m z>&$Oe8oK0@*|B}^)8K#m?&F47?qosY$QmFr3zlFgzMEa=*VpuYt69u277_U=7{8y&iX#CA5EL!xOb%9j3q>>YW*!$cXz%X=4~H} zk-K)=!4J_FhUxjSF&M!JIT(yDHfyq`sd7K;$G_r6W%{Xa-Cuv_=OAaOXXL?7(M zjwhQPcqBt+WM#PDeiGvub9X{ysfS86=JRCEU1zX+hij)PaYxxUxfCz6EIxGyR26yC=l0G zTM24Bl%D=*n+lY?u5t&}5tvvOQlNeoyGDmq=i{%R;_-itJqxNr9dZe1Hwq#EIeeZj zd7HGPA(J7K{rqLQR>8n#ry4-e49RDhe+7X~PtD-)vtP&+I9tth@)9{v4B!GoE`7eT z5R$@#fOmW@%5LwhaU-C2xBbE8`NKzo2_z2{7rF~rRhU-yMs)wzSaP6N6-r%oP1yp2 zs-sK9w{w4^SlIkMUe_Txzru?Z)ggb4q>MsX3Cj02;>jikU&}_dIgM*VB<92}5iTS5XYZEd*4|4f4!AWVicAp>Fe>f;Z6_h&?%{@e{wp?@S zu-8o{*14KRzmz2iwn$~JS?~dc1FYKm5=Fhtone1>z{ZlK9w**8Ii$d)FU4XZ-Acra zrk#=*)WuC&1)n~fPR@2&w~%FV2MqM$b+3AE!49cHBq$JQsdxzn>9 zC`zM{llEx_P8WaG3_Q|E9`()_=FRFvKV4cEF6jVCtnOWJZtPiF1#=Ax(zb@YNfUpY zsqAc)X`WVNh=*$G;l`qUxFur@^k916`_)$n709y3(f#ak=2*WLv6vBlFE&rFMnX?%-s4;FT= zl=AN`!eF0}2ePWaq0$C6vR*7uL{oo0qjuF#8K*(O@W?h8*{jJu@P9p~hbzOJ8FXCm zKtU|>D~0xd_-rE)$Msh{Fc`sxR{@x0d` z24Rn*#anCKUt%fIV75F+<2zM?7NoLwBG2k$k{?i&cPR5yJ~^H}bMUoX_d|bEv*jEf zZA&`VJDpg{S&h0RIf(3$6T#1 zIOqF%{rus@`&`$3t@nLhH?Pk*w`^VWsfd;?|P>U z!G}Xs*HeB)wTJ}j*2m8Lx_8m3cT{;O0A9!JJSElP_C3w4ZjsOW;qQ;+H=5P9*6~~9 zF3HrFznmV-5B%5v?CvQOsfw=Z z^{1Z#*Y7L_j+mM|zV|;$2T*A56x$qgF$&X;&AnoePRN{wyqF%XO3Lu8dtplEalGoh^gk36{q<`tdA+ z_1Z0KY0>sw<-CU~?}P$2o3t3RcBlGo4VX&&>O$v}NL%I%i*i;EaS@E)34ZR~je9dn z?McNWEmz8e?jA2r>%+NewbqyHPHb$(S^8O|$#y02DZJTW9&Nt;Nm^<3_Q`>Xs@mt} zo*r+VQ!o`TnC1Mdzht3ok&=BP{&9f5?F*;DJGHM{JwR zz(sfcONtMy4krel(`ML=d+3OtP(a9rhnWORVLm=hec7n=*cjm|q8?Vxw`JmP>O!Fwjj&m#i ztO*_3>xa8t1XHk}<&seug=@PF@@OZB;Q&Q;p7y zdhlDcuX9bz8gs-Y8Dm|(W~V$Ya(R8~V=6CsJU#SHUDMXJRv^D z%;A6nRlvL^Hs-?}jk(OD7B+iPIrpyP4OL=gym5;ia_xo$#9VDL%D=iJ!8& zK_NMJO9ShaDv~B01nBs9$LWOW5A7~k`ndK7yF5#zVsva0R;}-ro#1=LfM=h60^7yxb!6x^&smc%pA}=q*l_ki(HbEMxbXkSaU9R=6u~5mhy@zSwi3QZ2+w z`vfmeU*Mtq`7#}NQIMqSGtA@vt zmRhN<*UP5Ga=PEfwyjh5EAS%HPx=R=e2q#RZ!J0skL!+|aiuG8Jme^IZT6;t@4(J` z+eTGSflv>{D!LR@$?_iC^Uggx*My}K!}l>gX#*T`1|PJ#461Km(+R%&>64nZL~4A` ze0u@`dSCk4uNC*THAE}LRrG)PSDD;?;NhB`J42&v|MvIW*uz`Cw3hT;_@^0<_U_nf zZAf!f4`mvMucld*>Nnk6FsD{e;}sDZWjtEFD^tOy-SF^!#2w2AnH>08I<2DDKAw3l zs?OKT=BkF+34*$hb=MZRHK}zy%pPMjLe{HHPS0j>x7{nW%F>s=wH-fE$5{x&{Ti>Q zpgQ?;M02g><-(OQ=eiRdDJgiXWBJ{K8YiXzsxG%L$EP|xGe^fc$az>Ig{epSy-gid zbUI%v@@%Cb+b$hn7e9(RPZ&<^WLHV0?N)drc(XA7r(*spgGD|!)oa?LH?@!U%Gk`E zRgZ(yy7l(`Z0~S0tG-&3_I1TRku@%J%SHIun$vHjsg}%%&~Fm4ryKIh@o_I?J(koO z25Wcuw%ixWq)L=e`K_zved}E=xcWv1aj9x1E2Bk~{>PokqE|AD$yf64CY|>O2+`=| zU%-lO&@I@U49g(x&|pX6y{_}(Z6i{J3-;+;Wjg_8mr^Olm__88k>7QuGqv+91il>3 zWaBcTrM$?SY3-18)ibcZR1{CmwB)u~!^W}Vk-5V>; zL*-B@kFu#MXFr=cUoY0K8A|CCx%k!oSD7sMA@Fwa$DUoExILcN z{O?CJ9=)}?T!X)?`}T0OJU%yftlLrukrbI=IV@6GDs#tcz;D=pW1~;l)@S`{EcJ)1 zBdv#TM^zB+G3;8OQv;AEDQ8w;m_RVu{2jOz>2Ws9Msh+IEAZ?Q) zvRWskx@Vn1H+uqU_oR=&FJCtSOiO$pY3_V-!_m!_EH8X_kNqK6h5=qIWyP9iK8$SA zcFtetVognSC8qR6fyb!}%?~D@$5g!v(#*Z|VC4i)uXuwZ^Xq3@k3UiK(ihsu&7Sl# zF&CmxHKVN4i+^{ztwE%AbjwfaJMTEyEQua&5d!rR5^BZ>B0dozN|9N?{Xds!=$Y}7 zA>neuP7aax&m6vy25VEr53!{Upf$XAtjfh=FQg`Ma=z!ho!2J^i$!xhtH^7=ylZS($jZa?Z|zCZF6Q(ZUl!B^d3?}-N`gryP{ z-Iuat1eGp_dLgdi9(@Vc4mq+IQk$7^>{3F|LneE{4-7wwv&{`u#%d)_5`L zs^bpDz#}6yHpcRwq8)oLPBwE3sSD0^%XE1qxznP*31~6&)ulJ6Osy$=Wnwibl%Ya& zh$%<9+BLozzYaZB>)7Zke&(C1ch5WTpv5_se6n;8&e8Bf<@P) z47U3K$vjIX=h7TM{OV&p`ZwnuD0__^%j-+?Vt=Oq`nHak*Hb zeWUzwkg$H^?+d4x^0nB9vYZ4pk{SzA zZ3u=Q$ePUrD;F?&G2d9R-=HC~a@5mX>(;!9v9QLS$whe{DsJ}OU3&bXZ&OFEZpXeA zsl*HhtEb#a^~kF-i-xZ&6oG~BV)wopx!`?%CoKhZ{t&dCTph`qCJeWx?2JgCczz@* zp!}-dF&JzWnBITCkQYutI;mZlB4VNF%}&b6eg>dx7p-5GJ^ zCo=okdz(Y(6;m>~l12@+%$r{wL-km({&*xX=b|5WZ+7m%sfxUePcgS5oK`8ScYBoF z6Gy{dMKES5-{1*ZwHunJ@of{9cs1!;12@uVmRJjFI6k9?*UlF5p8v3P|7P@w!2p$8 zuBUtjyjU$?Gx(duoS8XUVg0IV7PGM*#SZgiyb8`9v$KJQ29&4_%I=-2~Qb@^d1g23yWLBfzAXkXJ(X|M0bx0Vu^pD}^hW4NmJa#3hQ_PXDV{d~ z!^zvdm3^!V`BG4|Ybn!9+joTU=(FGoa)N{h-D$DM)i#f8Jyhan3G6CNh}OE% zcaAO4^Fy1p7?-bg@xrS&!q-Yp$e$ZcpL#Ob8Z{pG)=rNXA5!?MUQ_jzT050LiuPKk zba?4yeuHyngiFT9$e+9H<)odGKRIyZ)03F$d3uqXZKc z>HWK2w_QAw^Fb7^*5#wu@hyhWS$}Jxl!oqDoX$xPE}Pw#9Pe)=#SA3fYE=f$yb{YFSyt&XlG`>*+_SG_TSQ&|TtIgvX@Ea8$L(Fg&*dvic#45Kr8 zd1KmTvzT%c>}t3wb@4;p`)Ff1b9ecia2316v%r~Ho);R)U&a|n58*<$y~StZDCcRv zKGpq%)T^+L%M`~8_^PKe$STXFS@MKYzjcr@(f#_wOeQR4*2y?ukN5FT=S)~PAX{T} z=#V5=i_Rk#w^!lpv4@xETHXvdWUAWr*1YfLR-sfW8BinlCn{H%Zz3w<(b}DXF$MgC)mZ>#-j>g%a3t0^8 zD!rfJ$lNEr*bjd9$^SYoifq8TJz!uocsJDV9feS4=UKvjcq0}(mL4*Bwk#EJ6*O%b z>Z0E%prmnpV4pSp#k_iTyhvruR=_Gj-BI_od6nDMevYy0mnWI-NxPO6e_fPEzYa=z z%EXaTR?jh`c^}UQ%2elUg`QVo+{(%4sUfG|W3=<0l-1m{lM#P_V=uB%$P)N<46JCM z_S$aOij!k*JGtsKSY-H=D$70gn7Z&7_l5eX`kN7afexpDNcA_{+X87lJ$jDjHZL7* zS3Zd=9LmT_SYk@cujHsTyjW8YjF>#L>$27qyZpx2!m0~zD4TPFP>wovau0R+Xr!r% zuoF`boNlA9H7fraQ-d#q_Y!5YX{4z3Fpc?|jhE0und*0g_T-NCpV|vSRQT6Q=_9|^&8=3L_TqY&#HwxghR3-gu9X%)%7$~u^AfnRs(8A4 zpC8gQof-7t#i!bpuuj*{hrFp1i!hYy9K9;ESYeliwRiDPT$_*mJ#WR(>Riz2EhMp| zeB0#eSFb90H}UDJbyakvv-k#Au6xgEXGxe>5i56KZC~QfR-3dgPnmUtDb3uhj8CNc zcD<>riK$s%QNZ?8>2^iyIhj%WXENowiUVx>A>A$`DGxJ-D)^VsvVydCCY zjLqTM$F*ClR$irzj7~eS*YNdb_O!vx2qw`beYqvP>TMKO=@T;NbM+hMmlqwwtK;tj z@u*-*b5XiQa>o=&Bx_6f`0u06Y4xuOTtYBLLV-U_kV5CWo}QE%;gdhC6K3sR^(+A9 zOi3ZBs-vWKz3Oxr%z}&zBm{=T2L65h=G$->6TvM4=0Nl3)&S_~5EVtjK3a7+5_Sqk z@#mqDDz0c4AM^I7UYW_My?+Ocy#{uT(1gDH_=2z_xd z2}%?voKu4n3lLc1Vd`wSKfj(gwRVNxW^L}~>SAhT?tFn0#1Q=BVGJ-3OGt=^-DL&A zztsN7sXIG*IXXMKLtA*?-*AH+2Kq84SG=PB< z%b@`fjU$o6As{CYtcTwBj08g>{$Tij45QH~43zf+${08tgC)U`NH__G0s#^XjU;gz z14kWjnjoGEW5uHp#L8$i8YJ=>fx&?Qk%JJ1BF+{9grndGjKJXt3>JYUavIV_fPcy1 z|4Bb22uDG*IgkZ38iOKH#sVanf#k46*@D&s(L}*P7<9SDzidGEArEm-ZvF-S!AP8e zqJtxe9E5bSSdvtuL4ZgOjz(iid4$H|iR%t62oPhCGLAUa`xuspa8Ptu9FbwjY4rY{ zK9E%m7Wa4A|3yL!4!*z5hy_6sWjN+f?fxkp90SJ^mkGj19E4*K2-JaW?dKn=2yyKo z3;>Ag4q^Wz5(Eek)fke);tm+uw}FHMM8t$JB%F!F2nax}u>T2+504`v6r_Mf5-$Q( z;b26Nv3<^xI)Fm|n|S+a#vlRWo&l8$f%#Lyf0qUcfJBZ$wMHRHN`pj`mH~;z5$QsP zG5;eQ;K8l?S80$ShB#t~Cn%Cga8QdS<_->daKZhEaY&M_3$ck*7mI-7N$QG4lC*3L z7J!qK30jXNGa!mo4h0PjVyCgtM*V|P{dX=9{L^5Jcn}VdRuGHXAB6i~|CNT?4hbV5 zjFggC$QH3K)Kf{;!=d&&48ip&j1Esqb{q(j>{=X@Qj(Q%aAFK<4S#d(AMZgpNRku~ z0sniwe{mAJn~0?Gfd~*mOcxM|LJ)@pB5@ev>Ox5aNgM=_2glPsCqV$3mPFBk0BNrQ z(L~Dox@Zh(#AqDJ1_3c7;{*=v1T>zQFVMB;SW*m4vO%DJOEMCm8Hge-9S#MOv<@5! zhx*$F{=Y1P+71cHaS)-1b|wOjL;|E3hIm&apzw$rE`;Gw2g`(qBM@)|@hpNc6mfJ2 z1VB1K5de~S79kMOOd!evgrNYU5+hJZ=oo=NSa%47W->7bfH)!&B2Z{JlBi7}P&hb} zh;R^wI&eIID1!hHILv?K@P8i_p+Jx%h5@LX6Q>#gP{jN|0BDl=w14LpF{u#{SBa-N z9)Sko$b&V31_rc^i49{ga0C%Cp}|6O27%@c=D*SXCpZv}CE*9u10cEm{r69+gLXR- zLtHx$Vmfj9K?HO{Cn^)vE6~Iaf(WRelF0q5anbxasUtw>Oiw`Pz@%rImP~85d%(facUP=V`tYp&gK@>(CR1vMa|1At0qVN Ef4wYTY5)KL delta 57382 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%0Dmvpdy-hqbsubh#A^=j#C^;0Ehz&d@+q&Kn||I zM*lCb;CbOW+<&e03k;$E3m{0QfH) zK;Q+z#9sIS<$u5(@Lw;@{g-b12i*D3%)fL8o;RNRjQwRR*wjE?2nX_y<<;^1<4$|F2;X4}^o88vvul z`oD+4FYJO30@M9}gn_&-;EWp<@c+2^-;V-tal}|Nqti@cn~Kh+%vf@R*eU z_uB(_UJjQB1pD)U*Z-FzfdITPAP)Q+lK-s&@E5!Nr8Wq>V3;2cJR34M_X}f-H(DV0 z%TJL14NBf({fnJ|{vjh2xbPnJukqj`5nhHT5*MBXo)?yf3vXLrNC1yYhW9dN|N6KE z;DtJIbHO^;;0ci+d@qV#zSzMGO)%9}Te`d1izB8FGRkd!`T1aMVfHmkLRq{iRx$CI zm@ZF%jy|thAfxf*LZm*!X<0b4)!^_XvE8NY2bd@C8$(S4eK!RiBD_S(y!IS2T-*S@ z=b;UpD=`?1hG}IbLlQ$aMU0RH2=GUOJA8PcfFq0HJ4C!jcW^?hJTrtUBht|->T}f1 zfR*9W=^hQlTHroQ$Ap&!k&%A4dG!OHuhU8^nGX&`OI$}&NP;1{*a83jOf#5O6mb*X z@iU5cwP9rqBAYGycQ~h*AMB(7SDXsxhODT*HwI>MkOFA)q8LXxmkL}{yXgd?;Tv{Z zLljP5`d{b)>c|KOuly~cf1YU%+QSDM_;?GG`JU9DPGlaVSBA!CIu4%S&_pTPDaT-l zk{P2p!autea_kzc)6rl*PfAf)Z5vwCV%NFC!OuOJR=XrtT_I@~&x^C$z-gFamw#_R zqN&`1%K2g)+ryVySyd14J4QU$7eEE3hip2O**OcK15ZSckeX+x*_^YkjSzgWP32j2 z7lP4fdwaxlNeXBV!PpX`?v;bX1>BIX?obPtVF8NNA{@1=FZ&$+CK{YaCt*#sFRii` zIvf~Z#FwZWd7}br%M_(@;K}rkO(ja3wA<;Mq!#V=g`yg#GH+Sw0nD(#Y>G^OynZh|-wPdQWquTgxb_ub%1 zD-z2Dc5y_8j303vKO<_{wxrpJzI-rr-sV{}nIS|3mtpP<(s>pa2<#QOP&6Ij-<0df4f@9`MbajF{AE5*MR`raAhG z_TAIOpHDr%pqQulGgwtDJV)^>8LgR-0dBW|@4G{lYGrOZan}@H1Rn978yQnPEj^mv zTH8!xeBiCVjr{x6VbBSKYU?D(v;vE9b^2Z?ZTqh1!rRV$IyA2%Tk=t9DWy-ytI^6? z^`lOq2=f|0=90C*M1Z^dmB|D}twcbHB`-6N!-uqRsIWs2hvzCo?_2h$wwrp4ch)Al zyneL}Yb)D1TXcfoI+wJ*OG-AxeM$Bc?)oM|L*%_PTdO-bI5fIMcFt;D0%~q6w3AHv zkyh*7Wf*j(FEuflvp2DORZ;O{v%Wo-_+IXP(5r>v<(?7roBhQH3vUWK)(k1DUbITr?PGlUr) zVN4~jTeIb|{~!`@2(@9`#$Cl+Nm;jtbuHfF;HwlytM54E_JEg7qc9FAMp*R8>d$K$ z8=cMB@SK0CvBR%3rn0;>{JUC4 z9{Cjg3#+40CF}lo&2Wn-LnA!yu0hm|XtYtRMf+Xw9PnmH(5WvVa)67UAF~RrFvgBHLgjrsuo?yz>q5-daV+y*Mq@SFL^w~vh;*20Y<#WH z{cKs2)+JNZX2#|6YY>aL)oP=>c!z-Z7PpSn7B~#H5^~et4ed+vv}hIY?0IW7KE)%L zXS&klc)iZz1m495ZJ$}8?vupNQxJD1_du!Ir?QGv*C^6aG~0ns94^*Tc4l)_yLXa- z4@W+tcqa&hKKqXnsL#XKq={J(TueKGq4^c3F;ug|LX8K3dRDHQ(!yiqL#6NAN>*KD z^c+|mJDFeIRJMvJDr#5W{o)VOZgGUAMam!vJ7PO(2F~&sG=Tt`G2N4iuJZWm8*e) zL#&+5xi20<`tlEP4Ho)M5oDwFrQ~2vp+?-W+!TPC0YK*V^;2LULp2>|B|Ww>d4;jV>0f(c}r>|HJB`QxFrk^!{qBWl_|wEx|nAbLpbNB2Q^Rn(MIki4mO zf8WCK4dMVIC_Qg(qctZe4itRvf01)I^%39py{YGRp+FcBdudGk%@q$3D>!7KDVKv8 zM=#RwN&hZ>)%A^FV`$^Pu#+~FKgxYty;dFXBEzqCNnzjQt`*ZUvCW_E3LzCoWU*h# zwKC7zVeriv)oVF#Jj+kGx9X;+QjRj0uiqHA>qICf{qP{o`sJtx%@FoFDF}zKo4HKd zE<)DaBwf{;sLsUZhC0yj#PDnplUYujg)E7e9foEP4U~vAxX+nr{Lx3D_%ar&nb!^| z_SfTMRU4>0=@tBh^lMquMA2`9NHWV~XVdg-c$}_&K?^LMCZQ9;4^ffiymPJv$gmaJC^ zvI)2W3vIKqJ85)b!By7piT`cgsFXix9%bx91JUahg_SAJTyA@AsBu~$L)cG^XA5*< zG5!jM#xjvY3!k}Q(+qo?8g=fCZbXYMB-n{$byKsuck;+PY0JWI&c2q2QEf2L`$P3e%2M$e3!>dF zPPDABDP~*bShU!O@l1e96tfR|y$ov9rVD#-BE3Q|bxsts zp|u^98>}%zRrr)hcuaz}b$q1(x^I}NRSDFP&KIhSyspe{{9ThcY_xs{K*Cc9*woSu zEj3~*OMk!=hkCK$8(>TaZu%2dO%RkI=n3UZ>2kEVizK=vETs%MM_x8uG^kp&EC<%B zw!E{CEH35o3FGqq^z)OGXTT$~%LIFwY2~F$ZK%LU$o1q}Luy12f73t)H`!ymrC(IQb8d>!F%fcBGfRDnuEw*KH|wCRgc9=Hj;~W zIKAYwQbxrYI`k8U-_Gee8Bqqq$IuE;^Ur{rI|&vH1zw0qkc*_2#Hz;6g`RBa@l& z+yy0gF{om5Q=Rf+BcZ{@}bEWAKNtQ`>>Y6%NUj;}{(pr;7*n!?QlIrBN z+~uyHPx;e~#E$vsZze?dbO_>HQ-t)JIpCP<7?+)LYDhrsxiAV^@mZA2)c7K2-2jGR zYrEe-SFW6J<~z*plA*SU+-lUXNV+oSE34F>@Ss;4F+2iy`t@Mb(~yaa6xR(6PXP?h zr6E%3i;#XyYBw?})71#tRVVhCvevjz*Kd3422GyYq~D*h7Od9DIyBwTso>8<2PwZ3 zgsn@B@?A)xpz;@!z!mp5Uj!K>r<f;=Ua<{K(YMltIIsU}w!NrQ*dkzl2xAo)}alx291M zT<=F;3jU+qr8FyDxEyZyex7jH( z!nIJLr7}_Xo){MpJT%FOBC`P*IC-}#%R9xw?}!=2*6}@9%}&r%P0A|fyRpk`6y&V6 zlw1N0x45P4&uQ4z22lr&WVD{W<0^$gnd%eMX%$9jmFy^!yY;hWp7~po1p+rKxMMqL zu;YT?G7;|cmEd=RNTDchmQjJQ`@${dEt9Cxda&f3a7w#lneB$GU2~B-1dAuZ1Dl$F zDpDt%Mo_<|5*fRydhP5Fv6RWr`8B(3^-tT<;&GtB@OlkmhK`I3DUtH#!bfLr!TofP zRSvM+w-3uMvrepXYkPrZM%C%-Q_x!|O#mqAt=)bT-w?Rh`t4``-=;o4xix1Tyx&Wu zqz&%(6PfPqv_4rf4@hHPH?wfAAMz)H0p*MgoGjK25O(p0rE+rJ7d9p&M!VP9k1f3g38sDm2r05Uw4(2A zxZ(e; z@;!90o-1YR2bJt5dh4$9ApH(yC^VPD?^<`Gy}ZOK(!PZq-|x+xGGgV00%@}ofeSJ)zF~C> z_3ir7xcuaw9Gpez=v*$<9}>%m5FlC+7CN`ycDT2Fwyw_CpOp4$CQR-NP+o_K{d<04*?da zMlLeZav$cYJjpWX3TcvVw6(X;E`u2t zzXmOTF!sn8F$4w4^M!xwf$DZhC+BGt=ISsO(jFkLymChQ{l0UNInoFD2U)gPv1Z06 zJzCr7sLPX!wuZ;)(=fT(Li;(~Mm-#TI(we5rrfgD4leAE-X~ZO1Gx zxRmstcp%Q;GLjg@eMVpBp1IXnGWJVH;|L*XBl*&sajg2NA1fEEatP(abm*M6!_Lzp z3zuBr#mHgxE2|?dn+^*3F?_6UwtJcN7CuRz_cJjK9rBS5i|VQ<6YKbL=M7F9?1)se zhZB`FuCgd2eVcQqN8?v4FUEe4_Z}Qq^shjqJ;`zvts>2Gf03g0HzxuZIb|pI#K;WF zb3J`4JkDNFHXfEQ9UIWe+A83@g_RE70-5`7m?%Q>y~@ z9F|hVJc)|z#2z9lU{>I^;Ex6egB&}PB_j>Q$^oB8?azOA3T0T0=@5{Ybfk?Mvm2zwY^LP|Pq0hcrsQ|BaM#y7vscBZ# zSNZl%xBeeNP=09k!|J421DbTcAr=b3>*ytOtoP}=&3I@5xxxbT-|rS_Z^cu;cA6Qy zdQjeO@Q-vmPj!Y5ss8_{I;ZHcgSG1?X>2=O4Yr2*YVYzfUa+*a(bfM6YiQ1vND8QI|F(-+RkC-(8p^h=8g5B{9MZswwF?^-y1KY-iUcl*-E8RkPdQ{xoI zO%(TdLv(Gf0H(vTCfrkh?JhN2rAD2N5yG&<&aNT3S>>cw&LyqsXELhui^TZi8$G;N ziv0#zBpkMnH+nAw-%L3Xb^pZzH4tZl+X-vNbH}WNaiX6(WXf=Eso%=iP_uB7&HCuu z;%K<~L$gV;1DI63tq+7ZpG8eV19kFIeeI5T$2oy3Ytp@f8ccW zrt25M+Tcg@=q45E(R3tr)G|pPsh-2sK|LWt^lIk}sM9KGvOsrUt*{25^eHc{cNcX9 z%4kzKfpbUKMAZ>O5-LO%ytT0`YUB6VyASOKk8h&BfRY~^jqc~`8$IwQE;HZVp&Af{ zEL+v3*9}L0B=5I+GxMS}qHs`@e>CC3km#eJ4D+{$t764;giuB6TY`X>Is)STV(HC| zp|b@fh540gB-M=!q`w+Hk?6j&iDH2WLLImy0wtCQ^yP@gCz%R*MQWdd6-Y+iZ;v zQcl=J#RnL!J8iv3%+>ZE5<`_`Le*19F8iV0Kuw*%pfaW*3K;F_7WI+}D8$Z1re=5{ z8g*od0+`|=_w^(wof3!C0sDo5=2xY>5nrU^!g4c56We7`mED3PN@VoFjQW*EaxT5cB%p0CNT zAjgNH&ms#Uw+OwC%>^dfzFh<&nBDMZ0$LZZm*9xR_tlr1rft70)mU2MME8d;@V7e* zAaiO!qn7)56>v9W2q?N(hiJ{x&!CNp&JfclmkRmhQ>~}svnCWp!vyUe{$%+aUKxUr z&?l5)^b!**R2FS+q zZSF5tVrPU^2x9Gn)AJBEb_c?sJej;>_o%qpKk?GlR6t-@{~WK*NikW$SAIko4bKVs z<7)9JBQMd-yKjiDZ$PV@PFxfEws-6 zXEM3B(x8Sewbk`np4c_dQwYwh?1Oz%OyJf9`5nFZaJ$(j9^6a0?Y5-jKesy<3~&j; zaokIkP}@~$b`lcw4UN3X0QRRcfms}9ltVke=;h7pl%q!4exPIH`1#!(8Q9Ag=Fyw5 z1&_FcDcEn^Ok7SUmTf$?psUFyPA6UOBfHir0&WjydYqd*eByCAWpgtNR_vQPQ@3Sd zLHm~W{c8>~a+_C!9kFsjTC6P$8_*#>`L7BkQEKDs9-#U8n2oS@KsFdREaP{^rop9p z8TNWpNO2}UAmF{IF@Z~|GMAf7woDO)MS8Ajx??Jw3*j!AZ|UWb6PMD(hathA3_n;n za7)94JL5vRhiuvGi}^BjVxv8zGJrRCQ+}qXxCjvip0iN@UafaMTtGBGFts%Utn)(^ zMgAaa-m#>L)D?9JXsYQFNDp&z%g6EG$tc=7BDRM55KEt{*sptjsN0@(PocC9tV?-s zan}fR&^;GQDO$;uCepl25Xsaa+f|+27;<{IF*(dE)VozwWDq#0>MP zjKiU66FG&=_2yt}4X?r^^-C|x=KDLXcKVq|@RO!u-P ziAIv}{Y69r;N9Wazq9m#rHpaQ$p}#veV8Rq;F7|>`=hMmuV{eq_DR}=KQ@V}@#4eG z2cFMLil&!ysb{~1RphwF0q+sjT&{*NcefqwdBk#Sa$%MLo-Am&g!sZo>dM8vv0%2S zEY1FUY_y-;^4v6@7b}N#k-0x1mlwhq;k^<3*W+~$s2B^=peD*i(^(<$grw)Y{4vJc z!LVcXYZzspLxN;nd@3LzU0kP?9zLm?yx;FOX&am#+D1U-$SI^ycHf61b~(0~*1?UX+F zI{A4QD+Bz8@D~T0@~5Y$OddXzH}WFx_eln$KpskNT9{;ree}9lo~Ow<^-WRd_3+%v zongJ4Ver1?1cwzYFZgS$fI|7x@p5U*+_3Ek;42<~5MQO0R#?6MlNuu>U|OwBx7}k> zLm$fUO&ycy-4%&WP~r)N=JvF_Al)A)tgtWq@cSMOLQnmXPWdgQx;&E%D+!?qu@L?q zz@e=!z3Y2h9-)3=ApO>Z*-~h;pH(5P?ALPm$0gs6sw^uvPPlP&zQ;ZDyv)QM<8X? zGfCojP(khX5w#IlFR$B)&8=ze$-xSXso}N$dPCOk2%}0^p`s3k43;rFyXsYq=u0;6 z<5Ewi$sEQamoHP7Xt@9pj6(j!3b``tm@Ja6xwRwjT$t%cYkG|GY0wdZuvVchaGJEy za}m!Rqe}QC*HyMETw5Xj!zuc)54qE8`bS_uCmCgA+v}PYc?q7SUqMLQ-SPVTnNY-) zSUv8f41;j24_p);Hhgt|aN2s}F%l(wEmiW#qUidZGU0!VMCV+TC zdlX;gcv`!sGX;uAMd9f$LAV$M{0)&s-pARwj9Yf_OJW`7#1(>Vbl1gsk6e%usuv0d zl$pcn$ODj9C0~*x(?3=uj`3tVMVZ{w}d>0N)HPr@{7m{t3Z?Eujlu zGcrg0UDVmjKoP)BNiL|2wt5DsiXB%yz)irlevyU( zke0KPUfi>?#0TtEYt+Myi^TRK@7b%zHokHw=~X3NBu5aNi(i98f)BFL0l93m`Y$Ty2XrF?n@B*ZDa@t_DvHQ%JCq$-MD!)A(h?n=`@}ct8EXR28BG63Ehk8;t{l8c1AajyUFWGA5~p%0%9Z? z=ud#RHYl`KUhrkm2HkT11v-m2QvCn*zNEIvfwICWDM`v}NYRSQi)f|R6@lWUqR4~V zrv}J_YC$`@o4dMMJ36E;$%B%l8is=*G{Y%?La-upvi+~H&-$;-|KGwsD>uh~h>g@h zk|*E7$J@|Fv{`%gGro`Od4hAYd$gJCpfe=p5I6qN4v~)-3}?LqEo~)>>Y%(!q6#`{ zdT71oNO*2r>g(s5PZl7s^w3dr_Ta5|brv32Ww%cRodq=u9Y#JJc+jKMtqmtC`I`hJ zMN`cT9gR0ivKQJ4{}DerU>>YHBSQuNVFUR_Mg2|2h@PCB9s@ywd7ExBHAK?K8wF&f zL1imy9yA;YHSTBM?*NGC?a+Jf4A3xR5IlVR7_#_%P-w_+TENvcR8_*K6dy`Nyd`)r zC^)VH2w!}T6KN_4YqC`%9zq&EnW zOoIyiRZ#_l5B@3oI|rLA?^zS}!Z8F-*yi;XM$oBZXI_t6JMMZ5@2pP$u{(hrFKo!b$ESgA zsV|n_xOv-feWZ1O&x@kMiRCq+G9M>a|{vKjcvO>()Nu-d8!*mq;u-0j1!H)u%`- z@%0QJANs%R$R&vI zn%7}pE8fB{w7C#VTPFjuIYo_n>TiaZM#81qY<9DR0bP9}pC!Nx>=J|*%%v|+r{fit zTv{au*G0uuqiI5FH(0!=>#0W&BALm5Wm~+PyDcAhy;`K#x$D`2yg4xY8L##fPfc|0 z-#!ld8}HJs?dYFa8!SekaVcM)+<#7=G9<`9Rqh0dzwaIV4RfU79`I||WM6UZlLG{3 zLD}4lBQ{;@{t-LFI{Q}J)i#jDGiE2O50Ks7g)4UyM5cIiV{yZNqw}wR5`TN`<=shC zR9nR0{e@=|vIe!s=D5+!R=SmDnH^~1h^uICoiU}Y!I{Bhgl0uojkTJcl}pm%ds{Q6 zR+m;l$Epx^d-9%g&6V{ELr>^?yhk?S@TacANbL$8Mh6H?5!dn|M;#p-wZ+b$4VnyZ z@n8rzA9zVR>rwXqiDqPJXZaze8eTulVP|}nAO$zPzMiQNYp5~|J9`Dez+_$+LlIjg z;MQiN0pE4`J}+QF>M|Pf*EFxDUpj--HwjguXHC!E4a#(|F~*h4sIk2HG(ou6upk$hOFQf1m%gsG=-E5cwpAiVqP~>(LkP=Jqxv2_ za`~WVL{mF!rg_wgXW)m<3QTJq)CkMOxc^N@=`0{Vj*DXUnW4-{vv(TPDd`ry=lETq ztEGO{6Wh-B4br=xZ%a6?r?DY-Fd*J9)w4j;A((~hsDj%bE2MNor(3{Bj#(n zWe1$GqD5OSfG2iMZ-LoFFDw6Oej>1fD{w0tnzO#^IlBq{0Bwp8bv0RyS;Xq1in8;1 z-vYo>b(*0^%GCU^AV62YCy3RTtVT-ZBZ1HEz&!m@RU8vJnGhyW>B^Z@qobz7lRBT! zuoTmxqNDj%ED>56Ug8FY{kzoCc)J?L6QB9Yp~^_0EZlxvTh3B59>v7b(|gp8yAZ+q zUjQNDh6=^3trzpW+TdN_-r*=rtqc7A>KWiDyt$#4@0?G18r$YZ+#vC{ zmH0+qP)(nZ8Es@aYx_ziu;mc%KBCzad*f%Zil&!vO8I!b!&YaPsg0FQFixs#=LzbW z!s3*tq-bMH3t%v(e+(ZJ1XXH^RY8#Er*&P&2z9c;6F5M_Zns3Zu%0#!satREx&pH! z%lTik-u530`ZA)c4d`xDb`XDtU>SJBxpKa?bAx1;F_=}Ns~ELS%ItDqgWb6`ENwZY z(-@LkuUehbcV9UZrY!ENVsbINgUU5`TZ$OyCzfLl(6lN@glVly+ui!pZXYt7Ey>+l z6*hE_ut76FtuL>(P<>EH*_DZ)`~YW|peRn!YFNI(pT4>`#Xn2^F^$Ub8XYi}Q^OVn z$*#Efy;2V^O%~|*tfBQu+)6Tt@ zBFwC*y&15Lig__1QByF4qWVDy6{E-N5O{Zw-cnJcZh60MVJ~tjtF-aF-3yq?i`VF6 zT0Z#el*Zwj?`QuoIQUu5S80YUD^LFD&c{3DU}m2wqv7+;wr^3c?Sar0GQ2IG?w(Y` zajAf9-9Ub+xLaC{4$IT!0!i<&N~;g+!)AGk+r((SDku}7cV9|8k|Czy?LkoHP`}AL zwRFxtU&%Mt$Zbw^*1>(oe*>u0-u)J56lUUBD%w8e%Iqk5)%=qkGA@f#dR)>7adaKo zX^htKF-E7jPUxNKWTu?^Ri$9fg7e7m??sZIoA%qAN|g$%Hl{$abGSbO@mi;QSzJOO za*zB$gq$)pLueL(EC>5`eIX15UZ&J5Kt&Uqn7QFwWEeQ4`;)7JayEcs<;5GoMB`h4 z35is_`Fp|RM<1Nb=Dzpx^0ndcum>Z)FgaYBWJ)~Ta`8_+D;ihHZ93$WpYOO6 zO9;~sEaw+9up263o`}H7o_OTT;R5sw>t(_BqxeL&gsF}FH3`R(%8B(S0_rXS-0dC` z8?=08H{zE9TdCD%^NG?q(4@_U!R766t@x7WI9)1p$iiy3%+3YrIlDn0 z!~QSUxylfsk)k9$uvqrfr$B=d;T8XWK5H8GiX=B&S%8iF*i%$I!~v-wSoh2ibq?es zGm#vI!S5b63IdoU$7S?JGqlG_?!xGHjJ)%6D@^S=a1YF?9E2YYN?7*HSvrpjg$y*@ zQKVzB;@^_~vu}wg5Y=MG|INnALqD)L(j3FhduEp6c}s#2>GV#x*lc7xrRPq+@+0-!uK&Pe zU0v38^N@qxYG^Q(hSTJJG5~N--;`XJ>bKP;ckFEZ_eXCll^#+e;|?+KDv?CN`WtBO zIatMO;DM$r!uULC+Wu3o&U_B<4Dt6o=iJhf_O0G*;n;N*H1Xn#&6rfV&CiJ@90L{A zxzDxSbB}BL$@O(bM=O&yB*@3kAL5iEb9D#=qD?pgbvdny4Ue_iIgCEW%8aL=~Y;bK*C)FnR zw-Q2M;x-I#nKqCiSDHq@5MxZN-IWwWDwOwL;rJmVc9{7r3)GMF(HX|8L#+J}lMvRs z!42lH1%weMh?x@^L+Og|sl1kAKe)$L<>8ceH?{9$AAg<2 zq5~S@ztpWiwOv(Yi<_#QIL=KvHs;#vlwac>s^`EM+>~8o z9!1>IIU~o7IWsRx;``v-Kqc(X!`3ZAE5_;(qx{XmT2VGA3gE((P2rx1$~kI3Yc+7Z z*3CY2TwiH|hsWQ##;eC)SSE{yNtP@C6CfCCOieVp16TFpIDmwk?uGWu?ac{!?yW&B ztZ*Va1v!(CW=&}iCpD5$hGUnDm|9n?rMNvHWtFd7JDlC9-^b-sn@}7&qUWHLG%&?T?#dh*(TC<$*OYLCD~Dq@DI5_No#&OnfF7t`>M(*ck;^S4$#ZK zgKXj&r?Y0ZE>ZrwKgaESd-g?6pP)mYa$ z)Cj?$HLqn{O(o?EHYs_I_K7q~6u{9t4x4Rx08XE_99AQZwmoj~l~2onKL(cAeapQa z;Ybjh5<0Jsmk9rW?~!#W6g;B>^fEosB#A}lYUPmhe2rSwD9B&}IjQ=sHT-K>{V zi_WIxUiJdFQWq@d@7UmbVQR8)qMY}Y8pnr8OK1c2JkBcWD9xP#Z5HjQ@_PPvf+d^_ zwSop6$!!5Z8>1l1YtYs()kM>k(Y|#Uus2vVS+HW<%Ih)Jp4ZASPv_@6G~V*b3L^U` zou~Lg)d-*y(q>Iapg>2&1Nch_$a*oimd+&p7b@sD*V@1GwIni~NX)oLZ9YLZu{Qo; z^|0rRCfQXQCjY|Qt(+;kB5BJz@A)Q`SA?b#+T8mC@iAyZaQ%FP{B{nqPxq!b2lVld z$<`_{Dr@||+YeG!1butL!=(K4xSlk~ejFrbahL`sQv*gt`h&-cW^#SF)E@ffaO5}_0H5*n7Mb(Vfl@apH**Lkhd z&YafN`7ER502=#W2B|!@XM3)I+$HH0Gs+!3&M6XQk{-EYUER)rq@E5yAOWa340M~M z@>r@>^xDa}%B$ojDDlwAtuH)}e~p*_{Ntc7>A=rVH!yPe1;PNb(weFi2PzCJEGI4@ z{7?0Z|3~#>r#8fa&VCcIwoLVo2W9`yq%a;d2$`Ave@dT?iG}&UN}ugt*yFz~{Hm5( zs%Nv}U@|D>k?6*x1Vtg=y@#eV15`+1kcnZ)@}+-~5a|~^6}XATQ>cK0C(}@g^UP)j zNU68XxL)1(AANr0d>rZ9S}aysT5xcNo+s8V#s#gP4LN20jRNhf;SNfy6cr zee*<#m0}AWW>i#a{015S8TGTh{gZM(uzMG}1f*+=;{`NGnhWw`7oi&k5kMz-#TMZN z?-~0Fs|F%%+uB=>`;`9f1B$1>E))9fz}prMc5)@}_dtkyCMR&rk0~|Re#66iWTztD z(_Ce$?}tH+n!>zoL?Fb!Lw=X_8}gx+M%;^ZBP4kFPb?WYT2~LwQO7b}v5&$@NzdU=k4Cx1|&rfDdG| z8B+r)(20|P=)b_oE|};>=vOL*u?@+wAPKl=4HMmW7}r2jg3oZ-QDm=PKjY6vEXrqB zcafm4GFepUeSjK`=`xNbpK}u8r|av)`xTG6IWZ?M*%8JKx0wa)|Ygn z=a31C)%%s44;D5$QXzk;f z21ozKO1Axc*?9PY^CQF(Pfu+w_unZmwj_ZieF)hjW_tmEg!((d%ge+Tcb=n177N5= zYnqsG_C{G|IFoLA#2NSIbnm|DV6F$NPO)F9Ac3V#Caz0PkxZzV#aW<0G0i&>*1?lY z+F2n;DQ`oZu9V(Vc<)4!>BTsF4+b$kIZR`kl&CU`F0Zo1!i}NTN(l8SK%5`&Gj7kXAZfcA7iFnQR zpQ=fW+50y$e^j)~$MXqYqP|Htx1Dmp71z8ZF+etO4M97m!9EY$1!lO9o_9c*k5;sA z>hH({KQmupamaa7G0)Hi#eQ4~4Wr2t{aQ0pigldJk@?UKv$Mm$&Qhe@ZU+G*^N%mcnidbugxBcxw3 zA^lbaa(-g^4sZfIoSx$dj>DqAn4S7?Fx%9PV}18D+wYIp@_jUC^bu+jkl1h5r~EaJ zDAOaJ8KbHHChvBieLoy2koU^_!vH4MuSyoSl~}{zJ0viS-$kvTg!WA{W1PLCA=jr0 zV7l8`=8ymUI4tankZ|UQ>SUEo662MCdWtV5z_wC*Uy$)9%WazRy&FyK=UiIh>%9dZ zJQ@wSmQN?IB|{s~b2|`t^dD+|NMEgx{k?Ip(u@`Sz9=~36XE@X!^<1CbLH>c&q|sS zLK#8m_F;!~x?t?91b|z0G#lW%F**@%YQvO-Hfe+)Ol0KQ9`CO?O= z5az}PS)d!ynOOzwY5`EpzJV$OhW%^EwYuNG&}++(DEPcw2WsS8UR{I@%x8B_{$(sq z38*La(S5c(gyBr3{tC-j!`FIrPSLtns>*PF`e%Q}*xJF7ElZ~6B2vYxqh~Abhy(~g z$l96f5q9xm@!4g^P&7zU0I!$J`fep+YpWrRbAKYoc7=t%>3Oz8j!2j7;<4;>5KLOC zZFS+I5xDArVSR_ztJsdYR6$gIW5NGx$tX77Fj47tg;A@XyT^p^*7$HX8=S}^+w|P8 z5&8WvcQH_+7-y9IX$kJ2NDinsq~4?|@Kz_~^i~_zGFMXCZc+A)1TKCJS9jpM7k^i2 z)ycnSJt%f+aKzZkA}zT;6=L1%>#_CZfJ|CtIl>g> zWc`aX-cRr)M8!1sq9;nN|Ea+nHm&V&GsFXoC3=t}m3;^$hDq6-&Bj1wVJ1)(d#d2D7m^c!UR1E4-cjo4_M@7{M-7i7+%QBZrsM;4c{``@PfWuzwL$#)ak5oRrC11B)G`7?vv9XB*W44X%pg zoLDng7EYzvcwN2lQ@rv+Yvn@Nw@c$&&qPLp*{Qq!r~_MD79`Ik$aw~X-?(jJ3N6SN z`!=Q$lgjd}(F$abs65Q=DMc$cjp`kDS;zCNt!9s=RI$+nE^L+*raNDX#p_?wf z#RG?Bz2(+ylO7&2QlEO;5lpwVwwwVR14+r!=o5@d#fDC?j^2inX~~QhCiM07tr%}J zCSO6yy|d!6*HDwa@H(c<%oJ2@Fq<5Hr{cYpw5j+zpkil#@r63Kk1{97)CE#_!sNR7 zKogJ?){3;)8=9}QcQk+^=A+8Zae$J~!Hui!OMljhagmA}4I*OsSOT*;ZeOX4+9oW{ zm2SiwP>X7i9$asFu#nyUdjb3S%kujOfl}tnw#PxN=@$wC;iRA_&%Z#tb?alp_Ix4+ zj#cnIF#S3z06;z;grCVR|46WfY#oVB*z9jd6d5f?DChjO73E}|#Yd2!bQzb<%f>%V zXEQb4?owK1q5r!Dj&ezCuCjlWZ$+EqEAd7(DR5KDSl6XVCo;46C6tS|3MKo7mPVER zA@}>@Xd@E!u7{p_RFjBfX3m)HpO3nTib0WBK%90HSPzuBJiD^3g`Y}b*~wG*=E+~9 zJzvcH(xSekh|U(EIh70k@X{BNavNt{PvWMlrA~B>Np3WmiOcbF)g7jJ?wo3d=8q%^pewb+NPR48f zXZs)~v4n=sdF!R|enjH4U#|yGRZ$`hu#@`Daw|@#$Z;F_*z%Yq-uqYj&&Xf&%nBp* z3sO`pBNRiDf+;VIjsm=hu8^{9 zM!Wp<7l!dCxf0Pz4b5hL#MeV`w+{84!n%LTR)B%1dl|itl}I^VZ(lgMT(AKHXidk} z!LlI98%9-k%)%`DF%zyhl9=(s^f*M@=h~9R+wO1#qxCg~5-p}E%rEJHavb^=syY3z zZb^r2;eeW>b@R^)qN>u|VdK@5n_MjVrCg2#eMk5q^b_cd#=XOBTiK&Z64vT*K_ir50xh&DD%vGC-ji;QcOl6QWj! zODni4zi>y8=k*{03cP0vmWYZu9&)H_9tFtp&7%D&eBBd)k+X4x%b7^yr^n4jU2CHo zhJ$gsQli*3@H?J*r>0e#RXTF7=}FyQAIAY4g84X}2x8vaf2nK%pH zd>6Y7N**5+wsnM34J$vHlSy~+-q5OFXCrT?N*ZRTShYOCJ^H@`YOXu=4^V~(BVCS< zS_*1gJ9YEazuULh>5N4ZPZ=#)SFxQ1iG6QI7oW!b*ytU#NM^yE2@hPVBD>XU%XgEl zxzTj;Fv>nblkx^M-ftnsYB@u##l<{vtA5em zU#2aklTP(|gQDK-b-3+OW^Gy`gBuqDBy?*yulT5irxnVUGWIL< z?tRfD7Q82<6nRS>;uV4R`~NX(=A^*!v4YGu7sxN&Jxc#8iD<~51CFvr_4 zr#SE5BV>E_S@)wzshajpnd20x3Ki`zTgXSg% z0#m2R{`CRtaDRZ)Dpm8esMqwfSFj}oN=5VV&%W`kNExclDel&#Ym5&0EH8Hynlkw6dhC z$AKcHdKZDx!Kz4WDJ#qWbF}1BmCe9#Qb&qFJ)1>}K^2Hm|8YWD|7T+{v;F(|qni#C z1A>{Ijh#I;-yDn<(3@zg3EaNK&2#qre*@Rk6Um`xV`GE8r9BLJo!u*btoezbcjf4_ zvk-^>HJyElcPm5vkByK-QJDy(nT;bndULaDzUjZeZXm;lsacu9(vER(LXAg;#j*k< z7*ZZR3M3eW96->puvmrgt=@0;_Tn;Qer3ksq`(uITx|me-mZbM?EtvhNGN6*N0bP!5#p%RCA8+IV(;b8-;P2$n6_Jihs> z4D$W@_NxzA{KCZY{8N{}S^pvVnJe)j*eB7H!jbdE+4GNZwg7Pq9^b$T!L#ylrG~Km zw{rwko?hSn>!~a`Dj}vgB0jqn0lEA6D!#a(r5I{jZDw|$AI!+YY!Cij6W_}6^{>3I z+od5UHu{43pFi_fpPeONxTKS83bGG6PYqV_+GI89#jYqt5C2{4+OIA3mJ+u zK=>U%@-vftC$<0y-X}BxWs>^HN8)7xj{9QI315GcK7|RK4}ayyox*+*PsW`_0>_0p zw}h`{rMF>Ppzsy{mTjy5mNlPY0u{FJ`ElMl|2D@=T$iHh5l%*bO%JWdWJk+Y1u}35 zv8D<-r+oE)`AK}TUK88j5}Ldrv(_~OFI=`?XvXFrlqR-sr9^0ZL%#A~y>W@%g0O^h zAfK8L6o*JKdDZ0!4FiUCNP>jCFIU)af;_P`gi!Z!_mYegpWBi_D~7|bNIIXzFFpU< z>jOf!x4r0-+-^eWCSdkLKl`)dF~R5)%m4VxdFZuH3o{21Q>gtfi+~BRVEGQDwJjJv z*U2pcJCe3vIjfRe_FoyRl8Rqc4Ssw!mex~6gqJ)A_ z``0R1mE0HS>lR+XL*JjiA=}x{slg%`$;xbVH)U$0?$fsW_ z=$8%ToghpKM+sm*8uzoMW$ml@hWP9i%fBjS&G6ZH@q@85u9W|?H!d>g-zm;IKc7F8 zZozmy+ULLCGB7clo~}zwKbbym2A-#scfp+MTwgvlOCl=ghG<&ffiui^F4C_)ixfi7 zZ^*}>Y=Qc^O`JP0bu#ua^iOECS=9k~kQf|}F{zH{y2n4^3_f6OR9P7Iq&^CT?^;>D zA>4rM226iIOmWwbNm|RivrID!*q>ZPKoC|N#gwpnoB;%kv$OQZ{YF%{ANVhrxP0;wvIj6sWQ&I z9F~UJ&SdTJ*D#*8XTw{1)UPR<3Z4ED;n;?R?My|XA3`_EJAXVH24-n4ZaggYa1~tm zCnz1n72}_o+|Sc^+oI-#sAFZ{gjJK)vyQRYsMV6SMsDwu3Q)|@;M#rv4EU0Ay6iJ2(XeH1Aed?DJl_VOhX+SwM2EnE6Ai0qsT{n^SNS@uV#mg4EQ``42$ zT%a9PNu5=-O7~%mcqXRtDyQ~)sR@kiV~Dna8PJWai72O3R+^7FSSiDrI6Ah$i%an< ze4@*!wvl;%NcUpWgE=$d;n;Tg0dga&RtP0Gi z0AO;hkxT5Po?zD&bIqJ&Zk(x8E;nYFm1;Md8!`%RySfbdO%!JRyovgEPbQqrI^asT z9n=kFwpl>l7bo`bWGBYK*O>2qJiOBA+qVlQOyHp$aaymP*`=}x0n z8HzW@ABpuSOl|Es&v)CsJE%yDoFo zgxoeR$mj8BzAbUId2@(_)?|i~!MYrx1}dptg;>vk2Gh1+goh3l>Y_cI2MIAr5vZVY zJpbj*a2tqkNK8u9N9hKsETUHUu6SpHNNtM57Owyz8lo=wFVdSWA^s!lSD*l@{iI>c z^*UO?aKHf{`oN^0_xVv?C8q!aX#~F1!3B}nM9LuO0AwRQ)nJA3#51c~QkgVJS3 zs5g?AZ*ob8nb`H5+20QIq|~Pd8(^vahy(e(V!&*s|KM`#0aLn#uk+EipFm_j{#B^; zJob0k3PwJz!NoAOdyw_kxlEjD07Q{#U`MXqy1bB5L;K7q+7N1-)ZH4B*gOk}g zLn>465u5@ByRI?WFp$qH0m^Y?ABqd@b`ZXhe2_Vc!`;L0&0S(Ys%+KEgco zhcfMV?PPc>`m~g%8(K{;+SLy+`!~J}hNUb&e*GR+9=#}XR?KSp0H~|qob{h5Fj9l? zkFCz=y+o1G>m>YA>E*)8*CR2(Xk&FbL_@`xuiL*;f@!eTHwHVQcfE!RpKBu1@{J>wRQoGB&C4iT#B=#azT=;vc7-mkcHK|dOF$P1p z1V4Yk{^~j6c(}j=->E13G9RfkufW9d1qcW4uGmfzv^W4W}*|QcY`t zWNzI%C1YlH-O<|F4nMQfCX{(=Zgl;usTnK_(^hGa66wh#ZPeOH(LV_btPTP%G~@+b z1wNMC+s}s)NDQwzjk@X2H(t;Vt37!FuKNub8apJeWsSup(OK*=P6YO}wU3l=$b6Z!YpC6QV~EFQU;VRH6?e{pFeBHkf<_Q8lL zBR$R@c;Fyj*l1u8eEgYuemR#@v@%nLSMuPIip0lumMP?~&9NP8cd2sA+5#Q$b=#EE zRcvqTQY&h3peTsw?f6-DBv0R{TdO8#LMwa z<@PC@y&aEL(#>HikNuC2r?$C%X-aZBPuD~`;H`}s*vrNw?Wp8y7hsT=rXJ(PW6xTH zHvZ=C@d#UgaKIr^Ikr+D$jz}GIse*zCf@a4{F|Nw#*+Hs^c23_6Zr=iAIpT|40@@C z5-R_a>T+;qDSF5xuC7hk3t|K&`uTUkBA0~vV|F(WjKdI;r<8Ivrk(-f-}U>`K?b=y zfc)vn4{eMb2DVhF&m64|uZ$(|RRFCr!w73pBENcJH_)JXnloW9RBT%lNmdg-52inN zMz(>Ow#orPp8-878eFa(Y;`>~VY91Q)}#`p6gj(2K%}`ZXriDceQ%o5aPIg-T0mAj&QpGPL5wRCH#C8Of3&7UU|^H{6SKZ zIH5jR3Wq>^YhU3pE^sMq5hEk$w*`GFBA~`TD{|@ZhB?$eU^5f+MqhWjnY}@9?{^4A zb)vmLB|;QqG{6u%x&BSBt`8p<2#lpWm4~5L{(1bjXMeMsS&~+C zWSX#BG_KA=R5aMAw|Zz0+IZY!1kEqGA#_TO5oKZ%RrUl4;)g#fWOZ=0d=7NoFguQmif&7vCXH9sOvA^N49_Swa1dEt{ou!Btbnw!Q&8e?HM2 zJ|Z@Im-m=0n9)gK=3qKVJ3YW?>K4KB(%UehQIQ$@}iS~;X zNr)5`YcL*sXa>nW+&eJ(d$!tj(d8HT(zIqs?K%78C}q?XIPBqb_f>zcn6Vs%JP@l^ zg-g_uSN63Y0m>%Fm=d${sL$C0jA$~omEYYWLI#<@WbKCcO7aZ@oRKU|B9RQ{_*bt{ zkK2uduN}_s-(?g@PF-nb;^l*m!7j`=S z!s9VHcK~nGg>>|0RJ0in(^Y+yD`cg^bC{DR8H%!G~MmyxCwIHfuIjKd z#IJu^4!FlbY(HhPU;HxWmxMQ)I+VXN@WLvI$h`2ft)x`nFy2vaO)f;6)m`Hn&)$-c z5YmulLB{ghjtr;}y+X#7h9mMv9kP0Uy`+&f4+YrutP`b8gj`W!C_no7dk$lE`t;b` zd=p?&DmZw4*{5hOV1W6;5s*2tOv{pu9$|mm?k6umMY(WDT|S~ztjTg`c(}V6MvFzo zs&i`%f6z*z#2XPkyt5J>5Ccm!bfY=1%WaVs37?>ojIe z!*%0TSh+vRL*g;}6*!P!S-_Gww_O%|T79PtFAWn&1DB4pAjLOAxIPe%CMPB$ni+qD z;nOgrKDISCEa=9;eIF z@tb!nKL;DWhvIjD_m|Ig(Kd~_@Pj(2R#MXg(&QGLn4eee+TPRml?6OnaGRkp;GvN< zKe=URZ2zu$sV|qhLG;>EV)o{d#`%Ao1#H?uwOb`93xiRjPK;||8_AK{+`bsz66{iZ zA=3I;a7gjRSk_EyKO%-zw~P~mkl6J4+joF1fj{O{ftDe-RG{d<(XFFMxY1MqWc!j& z&OnpYOU3~@^Q~e-cWfN>ucqtckTf7Y?;9Oj=22}MRoTN=SSz3B@cv$5Tmyfab$4D% zxe63_>#`Z266+O8gs;CLZOX6R@;u0^o5M%#QA8*US{HJEJ6Jw(WbNd>_nlc3PdUN3 zLbyB{HWi}^lA~5UZCaD**bk+MAqheqs-HH-!G|WW4#0*3@i*wUiuLXx=cNdq6Q(N-dzKZ>Z-dWZafJ6vE8%KXJ+Ogn44vEOX!@N)oXoN4S-BXs?(RrE3M43^qLRt=M zD^1B$$g{S3==t4$_0aqhO}4&5Hl?$9d(EBXRE(*8acosc+~vp}%@p^uH39*n&k(BU z8)Tdc(;K1lCRJ~OQpH0)w*1=~hBp`m0z?~m_PT~9%`5}F;mm369^-%2u;A~wao@** zFDj~xjLb)yk6Azb6!FKIW%0@9<=@DTeDhp`HKrRGx4^1!$&##5Pun9A>eL|+!n0ns zk%9|CevAin7%Pm?JQxD9kB_IM5yYkMYqxyZB^T(;7=tKDyWn)b*WTiit_>wW7daI1 z%XQYGPC5fKzRdZQva)}dU8naYUiK(*O4E)Z`1qHJ)_|Z?8fbN7)jStMD(jMdy{0O) z)eu$jkC?ADO9Y!J}YVmxnL1(B`A-eIMexH%9Ev8ccoj9l2ovw z9pn8?(lfaZ?ObpopA2eUhm1W3B59goMR5E^9$NSap*_PEFVTnv78vX?MZSrEPI zc5wbE8qcpa?q`$^zC25UkgcBy&F0XL;jx2NtS>y^ZXtiti*P<^Bs|e=)5c`pe2#_8 zVB+=Up)vBkqTlJYUSmPH-(wtft~llcd~B!FX4NVHXyR7b!S`oTH=sdRd(Y5&4y;1Z z+?d0LgUDm@PGvb~So6X=aif`1QdBR-cHx@Z`S%-aJV;85)LHmo)j_tewIts{Efo%2 zV%ms)u9$!28F3>^1wM2btoWrL-xSM$2$s|Onf z$N)Qq;2Nk1Cl-;EUygcUe({%y87C|vS%6HFh2f()bf<~i$L)o)PMQk09BaF=1>g!r z!i*m1DYtV|N09NiCU+BW;Z0HC3;7$)N);nJwR}A%tI&MzPUJf_>0)+(aTn z?}>kbv~;pjT)|dmIEMYwDO;n=e6EKP^BymKYs%p(=mjKlG@qIdn1Y!AigF@eueN3; zL9N6KyEl1hkv@oOl>3g)Y}PMK4~{}T6GToKmrI$E0YxOyRg`NsZ4ArFAoyC_yca2= zNQG{+d6JcoF&?;V4&oHo{?}#1k~K>xzI=bM5zp10>s5?|tz(zD__7)SnWPd`DBDqQ zMb73R5N+QW!=6MCx}3PUWTX zdq{hEI(7m1l_0dtYc|!PA$!qs+7t-ZXA9?qa@1UgrB`Z*?>_7)8j=h}Oo!|p5DJR2h9 zf~G_x+x{T7lB-icV+=I*(dVJ>1?q~v+LG)xgy)kR-&nQcSOJq~Fju(YbCl=0gGiAH z#HlQP*n!&-Jp|qAJ^CGZY@>%Fq8e>``pe`|? zhKlEKp~>%{H()TKPq%G6zr24c@3Ot01S&*ruLlz))+lRpG(Pz?M<6fkl|EjGfN4qH zE8ot&2d_%q7{CT4ZG%(vJt@0b=ut{nbQf@B54u&qiK8p~y(cw9t{4xheewV5j9EJ0nZU$ockBt8|#@}X#kNAgd_>ycI*`(~;O9ew<$4@bdHel@jtP=(JF~ zeFVAZ{sv1u9~&C#RaH9=*yB6J`!ki+X3UPs0AXMx7+CQQQ@noxSw&TUQqwi~WHkT4 z!f-TooKslTTM&}BCu}WehKoy4=}ie)pG?Lv-b;$#a(r0+`6M=&U2@{7_%T1qX$-*~ zw+e+=7U1JriO9imYqDhE1}&T?o|wp7fS7(j4}dZ*iDH7=iqr=S?TCAl~%ap8{0qeMm^!s!<>@!usI`UxBrM*hlw}fp<=J z5*4nFm_Ew;c{O{mJnu`e(FlAf_{jL^L+|p2u&_~V zYV7Of#wpdfEa0l*p5AYy5-m?(>mre3>v9FuG)nEdY((yA$@!n=)$yOED?IvNQvEux zXN))!ew2}&RaXyKh@?R~O(Z*V1ApAB-rDQ8fro#1HRi2{V)WP#1Wla9-WeL^DRx0u zPrJf0t?Kw`DQhcg;hbvj=gL045xCiHpS1eahc{9$0W7^I^|gI4nlyH`E~?Xqh!XUG zs^$AW(Aq-tj`;*0xG@R?2%ya3+{;vN2-=oZUY|H#3DDelr-E12PuP`nhIgCwLj68h z>D+&ECrM8((V-$7=CFNM*AfSEhJ7}<#PEO`qWT6gHkDZs_X^j`FFps_kPuPQ-!In!UTA2`oxzTOz*lFfjAOWB|hG8%tsNMp^cX)bM@)d^#%0W10LjJ{H-t;O{e zxM_s?u;uXW`pD`{tkezvEBL~c3tNlrw2KE}kmOw45G-`%L(3+3g$u}v$dImC2SS1W zZavZDZ$(aQ_~_~<17z;2XilnK0(cBd#XG4|S0Xk(Ikuk@I0lMc0l^~lU(UqKYZZT! zk@N8_#K(F^q{ps#lv8ry#IZexIpa_bF;OLAlTe91W#1BU>jp2|W!BX)w<;UOQ$MD= zUf)CU17)lpQ0*8!8Mg+siNe3^J;fON;!eDs+G2Zhnw8N~yOhmqGUV3!K!MevO5y8G z=ZP0}U{pIsS20-JkwQyExj}->(|~`7)apxdRIn?*?rLOa`-qy3sN-w+P2iIvx7QOa zFvTxY1<^Tww>OVLoa*miP()=m*MD=po`On6@KNt(avr6#2p48O+yr7TntWyz(F{|*T08Gzh4XpVoRVvLSp zCg-5BUgEc$?ReTjE$FF+S0rj}P~N9QFwN>cz>Xx@OSwu@H5 z0(yUi@=Q{K5Ipy=IvkaQytMt+v)xsII@z9f#nY*8OmUPFL-dP(+Jv%^-u7w0<0^A3 zw!wY7IhJu6>UHAS1j2k73wM9_MUwXN{497{d4WG-JgkzH*!1^6-76m!_dE_QJTtzM zLY?gLiaoO1tE=IR=X;8ZYV_OdMwDB`P~*7isW}VFXsnLa4!MvEQeFT!#BdfY&jHeB z;wu6tupPzJA?C1z;(YRv@wH#JQnxg0S!%=Oj~j0{Zvvo`n4P#~zKnl8``HUQ`h9TF zA?HVIVHLUXpZckhwm9)$@_G~qp{(~m=LV6)e;%j5CwBBw+PyJjA@m)~0?Q67u_Crb zA!!z7Doyw4(`d~bS_@kCWH0s(OqO9wxX$^K31xp6GgTOEYk+y}bDUn%n_6obziq8a z4z;lDN*%0KFqOu3(Z7FSv7%spQry5XHjQ389j7879r62nCz|rI1iskyC5!D;lhet> zu%xfweu*q=fJ+{R_HPtpg;OO7q+85iWwXXP40&S+O=P2+;kV!{F#~*KjqYK(+*zh8 zH_6$QHAY;GWHv$VubS+7mu5zhCEn?_Pj?T!=^-AwzwqbbGaY}yj(C`d+wTJ1c-R!- zwVRWT{B^_LyOG`k-17ri7e#!`rIU7YIP&&+L`2J|+0D5{ zMTIObwAr9H6tS2uX$^WGwycOs2cOftYjdHH?A1ptuPJKFvb5nVXicanA_{xd30y=T z4oQen*{FZTEa|ZwI=cS|Z>;@Z`yda4OkSO=7XzkwAi|Qns4QE%+#G357a>r?Ufxt2 zP2EUjtQ1+WXinxW z2>K?Qej@OQi3vdet9FcYr&8klFhSXyVhgp3R=Mx{_(Z!Po;SG|8Sx;YtJBk3ZMD7u zZBiaNlCO8ru??>}F*>vq;>65%QI=n-D2{hUr%{4{p}Du~QA@|RFHvDrLMUANs^+1` z3eA76(r`n z;X3+`xs8cHEwThff-ByJ#f2m7^_fBq^^>(G?o&Kd@jiuKioTDWhXP@clI)Im;k|w= zBta^68^ap2_1F6$>4z>MG}O|oe3~Yj)ti6G@LE&mO-IeZQfJ$I;au1a#sBf>m#U4_ zh7Vp0z@&mYeB7DPaT#@AJ$*Dx$Ko0=FPK;&9Eiamstt>~+>P4s{pCVb^i$uJ*fjLm zg_`&wA}w+E^-75fLqWqPIP>`ydAUL^awq!_JXo%|j_reRBd!Il;Gsz4ylHq^w zWH!-#!zgY4Y**vn4LZ(Ug`PT?OG29VdMOH%@#MP{g*y7elBRC$r@8X!uRRI6y`jM( z@T=_<8CmJ90C$(|M#7Ls^w%Mzly`B{tc$K0y_?PD%A=o2@GM0ayZQpMT*G?OAY}-h`Jc_I1T*K{T5z&j|irV>= zq`@?9d+eJrPyiz49t1fVimK`j+4u?-iA7X&=Q>j$xg)&hjp^-DWkbRQg40@xn)n7Q}LaRl#sePOP{%2jRbk##(dGSx6%GhBy!oBuK94Q z@Qt(XUOW)wP=KuR0WG92C3!Y!JAq_0Iy9Bc8J4t&m6PToZ^^2^4~>Q$czpFPhIRsm zHfs&aPZXmGIGk(#3QT_`1a1jiNB)9<%$k~`nj?J+!G;HpoC?m}L_|&cJ5=;{ zft$XOPBrYM@?5rK?WK-#PSbpn4c+QwCb=O52?Sf;N))P}hLwKGTOHqYHeJTs^=adf zt&|4AUP&M|l*SP{8DG4y5ap`piPjT614vGhUJW7EUdZLhYrBveQ#^m28(7HaK{f_| z`^{1vg1h2V3u{h3F>6+bx{M0fe2I+md$< zttf<6&dEbE6b?A?`02L9(K_v|Im%6Z<=1)IvR=H;yDrdmN6O10`i-=@;N2a|uP(h@ zBU)`tr|GEUBcS1Y2l{^m)$ot#`r2gjot&vUr5&3avrcUWV6i#K{uum(-QhQ$x5Usa zID5Yz)91n0vkFI&>sCEZBjoB=-RV1mY@|H{v<54CC*Xzsz0rz!qcgmmUuNIa}F5PFEvb2$HRhMvylVk=vHPHVuE0c5d30lez$tS}xoj z4#`MZUa^b`u_azI!oq&R&*Q5?+E@C>HzvYlVQS*Hs0Znw7{lkM+#R19!qvD&tWasm zV}PDlpc_#b!qT+ReS0Z?w!3B|D@1?22=gT&#Z~$hM+XYvNz{nVnY?LxkIh3Z*upc4 zNT3Q?g1H9!Q!%1s^UlB~FbQ z#+LrjX{6)^HMK(KJ5XP;$@D1pN=15 zNVn}lnrYQ)_{glwdSCxz?XDF=YExw3nNZWYOIcMqFsEt)qR5Sa(^Ddh%_6O0&X}NdvT6)HFnhSe7Ao|?~oRf9%3&)fp#A{aB?Atk5rAG9- z>GCZO3fbCtfM3_X2bhPDws=$qKj+GL~VbNSqeDOWT)W|ju?M#iNhPSKKT4LVh&DU+!`@pvQWGe zPoRmbF$}i#Hb`C@CJ3|3XBCbCX{c~@Y81^;#bLSrK@PS0E+(}*hj|qL&J2A%f08Z6 zDeT_Ud0gWQ?p;fj$`F?)IdB+PPU~e~>KuxOueAQExLXwYTl8W!xVHnQo1TNOtl7L> z(CUBt-iw+xS~@$D80j^TIrT}k89y&VoRCw^`etc0z_Iq#JD@&41KTRo8f1eK@e{=R z)6u71&2ZP3^bM=YY}R{p%U3Dz#b`zeCa11`wz)`T5_eYG=Y^Ti&K_wi{~RE=irimb zXgHHF13D*eFKrtOpU@7AOU|Z(mORiL`eJ`-hanL|hcnLI(lsTbF=l>A(DL)xd^e0% ziFf@z9$`o}qCOgK9Xlz}gKp$U{!$hcUEMYru0JO7`6wqv*e6G^dZHR8-6V|xk+^Wl zA)W4}snz6|DzenxeX`#A)X1z5{nm~PQCO=}sFIWho6aQ|_0?RAq&_Ctbpq>q`;6sH6a^ijD6_8l7#E82dK$7=G}H zv%(Uk)1vxH+17?GM+ndCiPekn@e@7Ji^b^Y9hUo5R0YdIn>b&Gd=<~>$)5uub|y2c zk(h#524kA%KV7xZ0;|&^!(CH7GZBAfK8x|7{xWr00~z9lvmpWY#AxWCi;q*eZg3Rj z7&Z=Uk2{^}&?ih*JIYO0M5z59Zr%&&F&Qe#)az;-^why0p)Z(I-(R9a9iA&($#h;L z&J|yssb$YL#ku>;zwC0w)O(k={Pm8LCR`;DYxhE#bbn>#*6`MG!&bBVNx^?7d)Ej{ zI}cx3xFo+Wp!ff7%?fg(;r*~wurfxq~c)P#2DrKqjcgaZ~h9;}s z)_0@*X81lT0D<1S8(+1ddAfgUNuJuV5IoQo&e>Fc|5>hA7yTKTPm=cX$H-LMi~^KsS&y*sHoVfos;r*(hY`p>G!@`5x^ z(w|72@0f3uDa;f2j5>MT>XRs2Ww?dthH5X@GzJWkYToLjOgbkgdjsWaNsvbco)^PU zpp{*1Z5)6 zY1EOIxD!Rm9qZRq@&JE@CVQqg;KH1PuwTPw^0x0E-Z*|;j`{afQXC(gQ<^alFw^`r zV6G-odmpeb1Ocug-*NVo2X*k5L!|=BVlp~HnwCQY!~H!ZMCZ{rO&f$x3pBG`VkGuiBqV@I z;Ki29PC4+l2o`@fA=opKebP7kAY0C zb$^0|S-8f&3--X~U1p4a@v3+?z@;9S^HJdZB#khNN#E!4-ds1Lz`9LCh@O4e`4wUW zV06BRe@RnGb}pQz*3*Q41H&Qs%7T&v6_Lh#2InyD)hBOx01OV)DY%FMIe-|on1F8D z^{S8mrr3X2%q|fBx_*ybJdE20Ij@7ZyxDHlXO@689~x?nlK2RdI1-aZv6BILR@Nv= zTI{F6`hA97Fb|L#FYV5oGttXofXwCWTov0qynvdPHH7N*FqPPbH2M%^%ADn2sbqa4 zOy;a}o)4@(rPB{Q3cL)KNHh-9X|v^zIJqF9_vn9wPTb#~@J}L{YYYUFmO85d9lq@6 zWX2!PV7gp&UDDv2wY96k0E=D`qaZtK$@PC~6KCR5gKo@YNM3F!?eHH}hqI=u)w`K{ zfon{{kZoJ=TNjg0*C3{q5$5qPpQAQEcmn!5q?8MFiSdG_>ndqQJOd*OJO_0_gDYO6 z6~up9uTV2;gAZ2_n^EFn3FyQ?{yzV4SjR0>Hc}Um3(a1^6yxPJ{sU*amYWhU^^&z_ zAS$qOHF#?0Fb-+X`VGFO_>_ehnv(-P?H+%9^H*NnF7and5+nv+V%Inc6ao(TU?$f? ztEFT*6z`FW8EDgx+MEZEQwym}ZveK1#JUyW++K5+(4 zUwQPyj3hU0_Z}(tCG;Bt!&eaX?en^noaS>o^$T;SoLQ6L;iV|Zm4#Af8Z&9YW$<7$ zRBMI`--y_p@lbY{P!_DAD~t1I`q)BIY(=d7aSk|Qbx4@OtffSRM#;L3^?ZLH6p`q< zlC!IoCTqqnK|GzKzDR`9wHarY)b6 zKtqGP-Pkl(S@vth5P1A>w#$W(${=C=g&-s2PE%hd;0s3`Rn2tQ5tOud) z@b)a!`xtBZF*>r!p!Co|YwlgLZ#1IJOSiwm50?4R%{{RmSRqS{`>030#C+FMTbtj?P!6p=7`8^C3kE6?2#Gjh=t``s5rczU*&n z21F5of7!{jrhHfv6~rtdGlyi9d6-K~`*kq(iWEt@?Zv1*t-hW{O-qVfbSAb<&1vv` zAMQ10LN~;+VL|1@ZAxa^s*K;v^NP(V)Wv7pO%yo-WN3X@aSA8+5!GNmFK;V1Cn@vr zSV?5hdAGTD_}QqL)o_0}bn&gYU-wqAK`z>buQUs)v#mMdff{u|61}qKp!n6Z*$-1! zlYAKon%=>Xj+){0sV{dgstc-*9C_yb#ulp0py2*%7E=|Kemy5Q0N0$v*)wt`yoMw1 zlXFYtDpbHRvhf+g5%yd9m9)Dzc4Jql`ra_+jgrq#f}sd z;|JQcWeFv^4f~%f?M*wK)G}^XL8nA?K?3#0M;sk`p~|Ob(uDgw1QMG$Y5;3g{kT@k zj!W3$m@j)a=vaR)ZIzClp?I1=#9x(KY%u$&SW!uK8#wp!_ksjou~@~`0i6nOrJswe zNXRoZt9DIJgDM$F{YCS`1b4YWsrG+(1lJd;WmCb7#_tz|Y6pbtKXo{13h<0gdx!aS z!MTlfDfLx9>PAY>3I%<|T)yCi?=Vub&ZdqPVYQlkWVV0m#7_{G2+e6E4c=XmA*K{4 z&nu#%VEJXt0wq`~xgPImk88Irxb?WW7Q5XXdLy=Pi}(Her^v5^>ZIZ5Ukfv3WBf!W z3wDh`4m(L#2;h@Fe;zVeBj%^sUXRV}vmkDsOOEJIxo55bzh}h7B`fU7Gd2MUjNYP8 zK*erdD>HwWcxKI9UO~6~LzR1X0zK!+T1Km2D#z_%qw5(Et}5HWvb##q6aaxwNoD_JJfekCtiTVkF1Q^Jw9mTE6hR`@5)6)U1Lm$q_`vUBW>z=o4I@+Tj93&en*bI<6|qG%r4uwwRn8yvFH30Tw4taW5xp#W<3*F zb7oS6lCa5R3Ts7CZ!L50uxtJ0>!H|Gpy6jQP}DS4RK|=BMphpeA!Pa_+QJU)ZxPWF z5@|?9#%xCV$S}2Y0M!kNeFoflFM|Q0O?tTh1Ip4y1D8Ss0ze8-R!mx1RVzbHQkSu$ z0T`F01OkPZD+K~$x0M9~<6jUpH3~0GWo~D5Xfhx-H8e4o!7Kq40y8t0k!ArZf0R{N z97?mb(clsYZWG+yCAho0Gr-{PE+M$PyAv#Uumpm;yK8U@erE4|zMcHvx&5D+i+Q`M zSFNtD9*Xx$stm$r_9j3Hdpj2f7Dg6cfT+Bh8VfUkg^`(A1d)P5)Cp+p0SOLNgP5@R;01GoOJ1h8$e@FokwRiAz0$EtP0H{T2{z~Ek2-^akK&Hla0C{5< zOQ0=S!_?RYplWXl0=jrI0)%aB04jg&a0aLVoqDd_vYD&He?o3RCuguJ0QKKCX#il8X7+YAo&YnTIU zmvFVQQ82dsOaAXp{hzq8Ey%|6e>3cD9b8?2P5^m(GoX{*f2V2!|1l>IGy}QX{&!T` z#n=X9Dr{$A0|YStvjlRM0C@n-lt3<~mH-zgSK!~vKs&Sl_5kkO-wv20<)x*>#pwR` zQvVJr8H4Ox)I1&jRsAdbe{W{_&EWPpfjj`Z%;5gAfD^%=|NPSbuVUhMruJqaI|~3S z2PeST$;sFg5j;L%;sAKF06=zTKo0=W18kUy(azolyafR6i7&w1-U;!q8|CBxFbV&) z^bc_Xm_&aQH-Jg(U*cj0FiHF-7VznQ6B~d@`ZsX`nB;yFSX2Hte}Od>{v~d(rqXW$ ztEm1ab^w#wZvv}m{!8FdVlw{i6P#)6@;eAFVe*^6MopZIO|5}0HbC<~ve^Dz|7S@5 z4e$V%O#dYoX0S!GKM*Vj{1-V`0Ziuhu1MEhsq30)IHce689$p=ZFp;VK*zYW*_S;x zqrD8TRsyZd40+F82hzLXW3=|Bnd_e%kcv}l!{tfZMSa=l{m1!A)M9G;a4YX2dUV|y zdon{fxwIrQe{9slLhC8n-m9ReIhKE74_kFdPfCDU9S`=i3WINcrmcf9>y{ac>alaa+j}L%oDCuINFv+axNw0~VX|r2wzgy~> z*i>z+>+yt`dD=oSp&iBB{~<>WH^Jkqc>-4{fuaI)f6Oc1TqTcg?F?NVEEUSkS}J~x zlO&j_cmkvg)+tJ*Drpm-$4?)IY|;mE!v z5wZ3ae?GE84p}v&QcW&~t~i9>9AMziouqw#0801F@h2}&l4Q(Bt#L=NK%f-M29-mU;3pZgg~SmJqu%Zqrk{o4#O2ijP1-cDN1oz)$J+AbAjmIN!o;>X#o2(_7Y}`f7`lP zh(!|xU17~>Kde%SqAJAv^Y9+$Z1TIe{ns{EB+%2!UMb8uP!p^D>n*QsHTVtk70;{{ zj;4^z__wh_J`dktqdvPv_0w7aD+wpAPNw@b@==pStj-v8A@!6~#@rv0SR#5Ar(*{w z4(iWZwgR}+;DtiQnImC*W_X>gf1C=D5;o^HYr4eIe~?$Q+AcIjdHdE`FvAirJ)uvP z2Y)FTgM}TXAlYd~3W$7L)>^CDfm01#FJ1OY$tXQUhVb@qm1W>fHp*4gRbFKPWzg#f zLM$|eO)WjB^A)yy4{K*m!p?{&yEsmVQ+&`zR384U_OVQ3tVe>+1>+f+f4sU+M?p)E z>0ffR{4H{G*%AToYpL75lbRA?&o^j?ul4YYUlTDVEJAxR!6b4gB!UbbjTda1Ps z;fZXTJ;UIiaP0i4-6uc6f3d45DQj7|Ll`rtPlLS#aOLgNTh=zItk?az+5jfm$ z30IdLv`5FH+brng7wrbtd+bt+W@&16dFn&px)fKKPZ}7I5zmxMf9njebaNENdXLRv z=Gf2RKNcXFmu)vOhSk?JeSc>q5S-~pLimN>heA?6F~Vj7+qHPcaG>)?;0Qq4kQb82 zLu1EUoV)4^gX=*B>h?B7-QYxO?N@@e+6G~r6S-0g?k71tH+U%!4ThvGMBJ+4;bTkw)4nYeie}@4w&3rDQ*=8^G_~V~B zO@Aoi=)^_*GGO9Ck(C&*A1=7H zK;xu9{T<5;2~8;9Fv-l0U1MpyjOIRzZzBtrNm!S)4~n+%`M{&imOtNJ+2*Ky|!i5Ty*83qO2c@!z#RYtUW`~bBK6s5!R?SJq)zB8F5FR$3xjSng`E1wgFQ_XT~zoKJ0ZPEAh#?8-=XPF`13{7V+!(qA*H z?C0*KmPT3-T+%y((df*a1$R_?1Lu`@QYid#>7fqr3Ljmsmx`I*v6vFHVb$|Ryp`|4 zJ3cRFaZCe41Pr)X(EiM<@Sz2Lo1 z!7$+0LR5-k)kN4>dY?@kYCiLy4^aV!aC7;Y>l=Uh6B((QbXu0+i(Y0HFe6bUw1uhmY}pb41pq#;pqkU z(2@Aq{$c1lf=pT4htF)(Bv?fkYchq38h*V75*H1M``enGjtV;h_|uB`0du>tgC~zH zPf@*PDPpk;T}Aq?ILp9hg%*-y^8y{bI^Pz(DiNK%Y|(%%uS`&qzz?8?b)}e?HgPwB(?y@M`E*Wen)J4)b`)bGhE|(i0I%Gi2f+>inLdfE<6Qj`!RfJ>?OQ zSOV2Fik5PJSPZ% zpLr(OK=Z+bMT*+WN?MOPA`F-6e||@JSJyq|-zj^}&byp}{u3k)JLEm|9(q%X9`zyx z$Dhtlh2vCbL8@0Gz{-+B^6d%hmhPJLP>kuuH4tY#=8+#6z#UJ?Wb&MVJhLzAOt|)I7PQ(& zblUKKP`g^Ax=bqph_uWQND1ZdtJ;kbnS#GVgoM3@n%$yAyJ^!UK^-NX>lfeBbEpV# z*E5I@LP8C1#T7W|&B48Ge>{Xp_w5|DR^fWN;mnnZTH~1VddTzYj6tW8GO?2I!#h-5 zjr#-(*b7I};ZX1#P12rysna~3xuv>bwRnp$5BVyXZ|*Wsl6oxPh6{^|FnujgXGXza zjYcviyVh7DHRNy#6nB_0nlSVa5zqDWR4@rA9f4|_F)t?T%^j~Me;qE^J2kH}R35{N z}o6O(f z3LLkgG;Zc}hVz^JEITwG__*8J1jsjoNiRh_9YVX_Js4iiDZi|a^J1fV9>E#SQh43( z##Y{)x(Jl=ft4YHf0P?{GoHNR+KHn+aAZ*+;UZCm;|PZ&cdyT6PHqdapzg!D~(3w_!FZ-;cqJf2uV5K;bAB*fAo0H1jS@1~J}A zI(&(16hA@+k%5QGMd;#NdS_2*plyoz-3l52(2Ph_|2C|{Y_@M`Y^cq*pb_I2D+bPC zU&66Xn!;^Ve+2@X7V#LPKF&F$>I40}3cT;9m1~5>U)r&(ZUo;h_u^%Y_6q7T(Onnq z>#Fhm&|&X&^D*G=r9ag83`QEQFGJe^AbLzCQ!2MWD1At;s*zOiUU$<;z{ofek-q4Z z=<&m+P?yi2zL}{Ibczu#zO1|15h}2~JkYzDo)&g|e+?~Xy4=HCm3cG6r0$VEOyG07 zzM5xbFeLmgByEO$MVxmFR%pP)=p$v}+!k{>bM(ZxV*I{O3{^d>;@WY4F{v8GRQZz%K2UmTgdkwK%$``n|u zui-(Xf91`wA(%490p5q~A*c|uZ-~vPy`3)8RsCHa0}9`}_z!Vd4CX~wyUmszpY5Hw z@{X(}9v_PF3u0)Sc>H?siroh#vcKWUFJi!Yb|=>*C3~@Wn-V4r{9Na~p&Wr|1JU_S zRnpAN@dh!cbfNOGyiNd{$CV3)Jd_RSL}2I@e`RY}9myq(ch-k?|7b$5VI4K|#B_=+ zM6Zj88%Sq0(-|B0(|e|F$1D2`Q~TZe;ADL}iFPE9@HTmuy(WBa0Cr-yL@XU0v&OWV zny5anC(CN-Qtf-yY>2jyno?5Oq_TZvS66w&Y<$7v?wjwVm@U(hx%IRYOgk-Y9kJmvsjYYVujH_No9$e!`0wBa z^|piQcIp>(8$$g=s38tjt_m@m;|pe1lAAPrhNh^h(RW@7E`bD3ZnoyD(M~A}nSp8( zg8frZ^X-m{D74fcTh&U4RYXI8Y>wfVe^^OQL-&{b%OFsKkG zU0Qbx)SD0UQ!U(V>vJ(a=5s|8#&wxY0t_LcOrC|1e&LmE8l!U1Z2HBe&K(pAe=0MJ z2b_gnc|4T+_s`s{p%6-`v2$(DGxN;z%wv}=q0oX#vdfZPp-iPDd&orDw=7ArN3P_~ zkRs9*aYHFf5=Eig?{WLymS=jse)AXSIp=fU=bZOBpY!q>GtKL*Pbc1=E0eHkby*&h z>oa2NsauHUWG(nJ4_DapOBP(Y72CxBhGDb*x<}#DM5U+u_;~t7sD=rBjyvM!j!5#K zP|jn>ly30z9aukASrednHTT|SN4;~_Yom|Xs?7#A25&o|sKyX;>8#G|?;pnAmv~L7 zLy<3ggAFac%cqNJp#IQ>Kj?0q(k=JAHEG(m``sMZ4gG$v=K4|zyVJ7X8yiOuJs^2i zUSRg*_-sO{pleWy?m_Kar-vhb<_kq~<>+g#W|Y-G+q9Hwpxbb|G`YUcIa#J05&tYW zaDCD#!LX=gP4kuqp5kp4T6_fwe|twW74vWHRS%P8(uC8WoAPD26_{ns3_m(zoysYh z0gYP-9f-+&^1h-fc!qnu-0epj3^vNB(c)awl?$h*+U`kBu(>_vT~01(@Ho^E*VSu$ zX4CNAR?Wl|k<*%c(T*^Qq$FC{9kTG{YqdLVvRa}SMVQi?JA>iT<*rP`%tx?_RM@F^ zr7N>;+d*2qbmHQLGxx^bJq-!jdTSD+3v`rHf|t(jHqt+;CN=+pq@?3JY+9d^bTjpX zm@J2pXCpb&b1PzA+4g~NJu1G(VZqQqc_R8Aa{@Sfg@}D2a+168-5vR5y)GfkaRsqjmNiL>HOv!%9l zp(U==p`_JIy3IZl9ad`ctqkdm#NF0fzxV1+-h>~tT~raSS|<}AihTo)5a*fTJmn1Y ziQ^lb?W_*aOe(cyxq~BB%j6@CBOC{Yn;+&zQ zGA^1iOrlm)D{-q3PR4+ihfb6=gQ1FxfHN;=taZ}TF>1Q8@r@}1CH%%2guttA8ZbL z>QC5xZM*B`{Yy{OgrxU;ipoJlGCd_db-cW8{>B@m#F^RB|NKIqoK-IKdP&Aw$a>$^ zW2=2*28C2>BI_CAs_*0(T`3x3Ou>pnjw#iFGfGibYd_04nSn7gBnu@=kvbjs5TuAA zvLqitl&8tgEnCNJeMxbO&MF%&d*kF`HC1BZ_fT^{G~Vq_#IgFsEtxT`wIwoIwW+0( z^7v5fKuzL_LnC-DQ4!e=>IWlEi>9{~3v>_}I4| z{s9>cY_W&<@0PCH$uBEs=osHJ;lR8xqWOE?3teWP!j|QiuLJ|llS$gf_P6{elHD#u zsdr^_pJ@_rT%{oHjO3T5-qhoMcO;UTzOl(?PAWy9NBN)lK{dazy0_XN?y&bchOYB} zYhThM+SE_mze+$_B_}@SQ-E)zX0oJL^>gabWy$2renu8uoCX!NUdtje8_iShM}}1U zmz2;kd6~11&!2QfJ~V3YbbL@e5Ie1IBRXm*K$CjpeI@QmY|EqJsdj}n3Ftz~fTp$d0!|ynNR7qe)JAdpk#?-nSIYOAGcr^pu)_h+|}LMYaf|T#>=HZBixX z*N=uKExK+ntL!?suyp253Jf!g9d_LdYxNKrzdQVwxl{XD-UEkTH|~7Bb(CD#mLM3` zO^l26cb%dwwnHi>*rQ(qq6W2fo1gX{au6+(@N}jqteOSgcFdvj{UzTFFTFjQdnL z^ImPa%FS_Gps{&x`<;4quE2e7 zai`{M`35}}Qs<0L??U^-9%oNQU;j;%jr5(w^reC&~ zmvk^wB529pzKtpSbQCL9i#Lbv%8!S4MA>P1sfCBgC`3W#qg72|pB`^ym*4*`ruufI z$Me5jtl}9jeX=TCb*J8{e)ZA#i$#XL()FI)TKiu_ zZ3ZD5*=g^#Z5|G(G5x#e!E*abWtB6WUUv1pN+%hi>NiFO2NR;Ul)AVssHf!bG02PI z9pYafW=5M8&h<`n*6_FEhEmqp1-@+(O&*DTy*MMLO?D5{v%GLDE#ULem|Wux@8A5m z)Z!Ua$`|>|TT7nN0jUBl`KgKfmmD}gpKUs2h44sO70=8K74DQ7&0sWl@9bb@IaH@Ssn{+l68-`q16K^vi1tG|roqhbNKE-!v!^ z^`ASOSfaTh_5vJ=sK_sD#* zCHQ{0A?L@v;unx|K`+6`t;H3A&y5eOy6tgSyv^H9AAG!h+SGP>)T$|+VK?4rve9(h ztWKowc5{t2pdTkTd9%gaHsU?WEX^biw?BkPg({X!Dj>31eV2R^dx9h)nt$sq zzsa?wrS>$ff2;G|6oL5eBVwBIqMNGXcLjuB-*@%l>9EfL_uQd?wok2^pY(`t8XA?u zExpgQe=h&0a}X%Dur*55xx8q?qqI&;@Uin3zg)gfujanxto*8~(+o2$l^sHH^Nner z_7i(KBS8+5``AAfgPhh)wrUIJBvoBh!etb6ZC|}*3+-&w^v$eLY4hqBmz zb5LyBxdj=?8POv=nIYyZQ}nLij_vo#ycD~?f z9Lghck++CutM``}P0ana)cKSagfQRc!hO*HV6~RZw6I1Wa%#SrI@~)4OI@J^Osv_neH0q@&eTEp3)77j_zu-ox!C&UL@M!FMtH z-LvqX+a9V-AxZhV!;W@JT$v|I2K4XRcj~g|tGd#Jc&0zr{hpK-GDY7xysGV^nN5pD zxe5`QFAq@ny>9==r?%>nIubKC!*lr0wSm|_OmfvI?zJQGS!!)d&doW^=+pqSlwZZM zr~0d9iVo6DW0NnPXbb1JtM3jMJ>6&HE^)4~2JIq%bB4njrJe7&@{J>MoOlvWZf|(w zl@hvLKpFcRuu~_O)Y2-C#yu8dZiP7Ubeh?0$-SuiQ|#nO&!(R8-2wM+ zuTxI2oT+?MsWsMkP<9>UvGzp)xPe0;)a!$E;T8KoVwDo1J5wbudjeZ^|IUweac!9< zwCwge8Z>r;;h4dbdSEuMyLy#{US?t9a-wvctlV|+E6azr8dYukEtD^2f^oRRMbPtQ zpGA6pRHWP;8h^K1m&8W72Jx%6mLJDeZC^0>W9ZqCEot(ix_t9s$e+1(L0UVWNC?Kt zm@z$OEgSzXgIFC)re&64O z<1Ym5rQ_q=Uy43!r=ZnKTLR0%Z1ltayp}8}v~V`p^O4EEos08t>_vst+U<9CCZ??g z^CM0*KUdDk4iq_~p?3AG;pl5_`>gg;9)&OMPx+U-clyll?KG&=dP26DSbjL`^j7+? zoNHD1YRfOQRqX^lce==Vf)0m~nelc5efq)k1ZIswB*B}D!`$4+Y~S{pj0A!U8=aC$ z5TFYu5?a{*{f0#PU?L%sO{gix_ue};DU$%(UM3-=&5N0b5$zo z-(Te&j|4cY=sO1n_&d5e`za6+^ar_tpR?DIqY6YSNZ)XUaB3qJ_~D_spLdA2pLY;u zL#5xmLYPoOC|@5t`v%$v9PvJ?0zwKz^nW(rg%nH()-bLTjM)U>uNFS`uFfiC%n?eL z$RKzKBVWb-&Wro&C!jkrrEd`>Y80Md46ac~i<76QERYv>n zm_i{#ERIna2Jyxy6(qCBP#A9u10V^@?$3^4fbiV-Hg+jrh24O0h zjB^aa2nymdgXvN6=YcScAUH6XEdu}Rm-apVm?BKVIR+>c7{ti)BS6d;px`6M^bl5n zWPF)0TN3aiXv{yx6e@_a8nb}G^k5JN5R*X&Yuyp@k4{$5V>v}x%1NQp@O8%y1SmK# zm@x|A9Iwb=oMS9Hh>Ft#VHBj|&w~*v>1$ShAR*@Xr_`*V#uTYPk!D2(kPucG^uGhY zlNtsnESZ4;TxM4C4+Fn&0s>@QbO6@SR6JQ>kPP9-h3P>oEenG%gyRvWhoCfEx-cOM zu{a@tAij1mi3H3QHs;!eFzvtDj|~PA3*iv*FAn@gNniwKAs3m%(y}l@A>jaW zU=dTWtM_$2L6-Il0|ejW02UF;MT3oJ3JU-#HYf2}L&{RS%8347+-&cMEO>)|H_4sK^Ar+WQfe-m`q*S zO;%ptIt_t-VGB`U+D~X!z(Ck_hBu~QRKT|<4TK=9lko>)mlclnkzgEIF&PZt&x2u%t;Ci7``#wl%qHQ73MRwWVH`k=9ly|{;%_}HT!4(X#b(8~ z^dB|)x`tzlSR><{AOOU&lwvXz$9~Kf2Iw`{3EK{nU~Dzh2NBTF(2#0~0=ndFR0BPL tss{ju1~8zfMb!9zRcwh`T0H&%_I?4!{hVERu+y;t$|ECVu*;C={{X;o{hj~- diff --git a/src/external/libGapIntegrals/GapIntegrals.tex b/src/external/libGapIntegrals/GapIntegrals.tex index 5d9761c0..75812971 100644 --- a/src/external/libGapIntegrals/GapIntegrals.tex +++ b/src/external/libGapIntegrals/GapIntegrals.tex @@ -12,6 +12,7 @@ \usepackage{rotating} \usepackage{dcolumn} \usepackage{geometry} +\usepackage{color} \geometry{a4paper,left=20mm,right=20mm,top=20mm,bottom=20mm} @@ -72,7 +73,7 @@ E-Mail: & \verb?andreas.suter@psi.ch? && % \section*{\musrfithead plug-in for the calculation of the temperature dependence of $\bm{1/\lambda^2}$ for various gap symmetries}% -This memo is intended to give a short summary of the background on which the \gapint plug-in for \musrfit \cite{musrfit} has been developped. The aim of this implementation is the efficient calculation of integrals of the form +This memo is intended to give a short summary of the background on which the \gapint plug-in for \musrfit \cite{musrfit} has been developed. The aim of this implementation is the efficient calculation of integrals of the form \begin{equation}\label{int} I(T) = 1 + \frac{1}{\pi}\int_0^{2\pi}\int_{\Delta(\varphi,T)}^{\infty}\left(\frac{\partial f}{\partial E}\right) \frac{E}{\sqrt{E^2-\Delta^2(\varphi,T)}}\mathrm{d}E\mathrm{d}\varphi\,, \end{equation} @@ -104,18 +105,27 @@ For the numerical integration we use algorithms of the \textsc{Cuba} library \ci \subsection*{Implemented gap functions and function calls from MUSRFIT} Currently the calculation of $\tilde{I}(T)$ is implemented for various gap functions. The temperature dependence of the gap functions is either given by Eq.(\ref{eq:gapT_Prozorov}) \cite{Prozorov}, or by Eq.(\ref{eq:gapT_Manzano}) \cite{Manzano}. + +\vspace{2mm} + +\noindent \color{red}\textbf{A few words of warning:~}\color{black} The temperature dependence of the gap function is typically derived from within the BCS framework, +and strongly links $T_c$ and $\Delta_0$ (e.g.\xspace $\Delta_0 = 1.76\, k_{\rm B} T_c$ for an s-wave superconductor). In a self-consistent +description this would mean that $\Delta_0$ of $\Delta(\varphi)$ is locked to $T_c$ as well. In the implementation provided, this limitation +is lifted, and therefore the \emph{user} should judge and question the result if the ratio $\Delta_0/(k_{\rm B}T_c)$ is strongly deviating from +BCS values! + \begin{equation}\label{eq:gapT_Prozorov} - \Delta(\varphi,T) \simeq \Delta(\varphi,0)\,\tanh\left[\frac{\pi k_{\rm B} T_{\rm c}}{\Delta_0}\sqrt{a_{\rm G} \left(\frac{T_{\rm c}}{T}-1\right)}\right] + \Delta(\varphi,T) \simeq \Delta(\varphi)\,\tanh\left[c_0\,\sqrt{a_{\rm G} \left(\frac{T_{\rm c}}{T}-1\right)}\right] \end{equation} -\noindent with $\Delta_0$ as given below, and $a_{\rm G}$ depends on the pairing state: +\noindent with $\Delta(\varphi)$ as given below, and $c_0$ and $a_{\rm G}$ depends on the pairing state: \begin{description} - \item [\textit{s}-wave:] $a_{\rm G}=1$ \qquad with $\Delta_0 = 1.76\, k_{\rm B} T_c$ - \item [\textit{d}-wave:] $a_{\rm G}=4/3$ \quad with $\Delta_0 = 2.14\, k_{\rm B} T_c$ + \item [\textit{s}-wave:] $a_{\rm G}=1$ \qquad with $c_0 = \frac{\displaystyle\pi k_{\rm B} T_{\rm c}}{\displaystyle\Delta_0} = \pi/1.76 = 1.785$ + \item [\textit{d}-wave:] $a_{\rm G}=4/3$ \quad with $c_0 = \frac{\displaystyle\pi k_{\rm B} T_{\rm c}}{\displaystyle\Delta_0} = \pi/2.14 = 1.468$ \end{description} \begin{equation}\label{eq:gapT_Manzano} -\Delta(\varphi,T) \simeq \Delta(\varphi)\tanh\left(1.82\left(1.018\left(\frac{T_{\mathrm c}}{T}-1\right)\right)^{0.51}\right)\,. +\Delta(\varphi,T) \simeq \Delta(\varphi)\tanh\left[1.82\left(1.018\left(\frac{T_{\mathrm c}}{T}-1\right)\right)^{0.51}\right]\,. \end{equation} The \gapint plug-in calculates $\tilde{I}(T)$ for the following $\Delta(\varphi)$: @@ -124,37 +134,39 @@ The \gapint plug-in calculates $\tilde{I}(T)$ for the following $\Delta(\varphi) \begin{equation} \Delta(\varphi) = \Delta_0 \end{equation} - \musrfit theory line: \verb?userFcn libGapIntegrals TGapSWave 1 2 [3]?\\ - (Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $[a_{\rm G}~(1)]$. If $a_{\rm G}$ is given, the temperature dependence - according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized.) + \musrfit theory line: \verb?userFcn libGapIntegrals TGapSWave 1 2 [3 4]?\\[1.5ex] + Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $[c_0~(1),~ a_{\rm G}~(1)]$. If $c_0$ and $a_{\rm G}$ are provided, + the temperature dependence according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized. \item[\textit{d}-wave gap \cite{Deutscher}:] \begin{equation} \Delta(\varphi) = \Delta_0\cos\left(2\varphi\right) \end{equation} - \musrfit theory line: \verb?userFcn libGapIntegrals TGapDWave 1 2 [3]?\\ - (Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $[a_{\rm G}~(1)]$. If $a_{\rm G}$ is given, the temperature dependence - according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized.) + \musrfit theory line: \verb?userFcn libGapIntegrals TGapDWave 1 2 [3 4]?\\[1.5ex] + Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $[c_0~(1),~a_{\rm G}~(1)]$. If $c_0$ and $a_{\rm G}$ are provided, + the temperature dependence according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized. \item[non-monotonic \textit{d}-wave gap \cite{Matsui}:] \begin{equation} \Delta(\varphi) = \Delta_0\left[a \cos\left(2\varphi\right) + (1-a)\cos\left(6\varphi\right)\right] \end{equation} - \musrfit theory line: \verb?userFcn libGapIntegrals TGapNonMonDWave1 1 2 3 [4]?\\ - (Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $a~(1)$, $[a_{\rm G}~(1)]$. If $a_{\rm G}$ is given, the temperature dependence - according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized.) + \musrfit theory line: \verb?userFcn libGapIntegrals TGapNonMonDWave1 1 2 3 [4 5]?\\[1.5ex] + Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $a~(1)$, $[c_0~(1),~a_{\rm G}~(1)]$. If $c_0$ and $a_{\rm G}$ are provided, + the temperature dependence according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized. \item[non-monotonic \textit{d}-wave gap \cite{Eremin}:] \begin{equation} \Delta(\varphi) = \Delta_0\left[\frac{2}{3} \sqrt{\frac{a}{3}}\cos\left(2\varphi\right) / \left( 1 + a\cos^2\left(2\varphi\right)\right)^{\frac{3}{2}}\right],\,a>1/2 \end{equation} - \musrfit theory line: \verb?userFcn libGapIntegrals TGapNonMonDWave2 1 2 3 [4]?\\ - (Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $a~(1)$, $a~(1)$, $[a_{\rm G}~(1)]$. If $a_{\rm G}$ is given, the temperature dependence - according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized.) + \musrfit theory line: \verb?userFcn libGapIntegrals TGapNonMonDWave2 1 2 3 [4 5]?\\[1.5ex] + Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $a~(1)$, $a~(1)$, $[c_0~(1),~a_{\rm G}~(1)]$. + If $c_0$ and $a_{\rm G}$ are provided, the temperature dependence according to Eq.(\ref{eq:gapT_Prozorov}) will be used, + otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized. \item[anisotropic \textit{s}-wave gap \cite{AnisotropicSWave}:] \begin{equation} \Delta(\varphi) = \Delta_0\left[1+a\cos\left(4\varphi\right)\right]\,,\,0\leqslant a\leqslant1 \end{equation} - \musrfit theory line: \verb?userFcn libGapIntegrals TGapAnSWave 1 2 3 [4]?\\ - (Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $a~(1)$, $[a_{\rm G}~(1)]$. If $a_{\rm G}$ is given, the temperature dependence - according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized.) + \musrfit theory line: \verb?userFcn libGapIntegrals TGapAnSWave 1 2 3 [4 5]?\\[1.5ex] + Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $a~(1)$, $[c_0~(1),~a_{\rm G}~(1)]$. + If $c_0$ and $a_{\rm G}$ are provided, the temperature dependence according to Eq.(\ref{eq:gapT_Prozorov}) will be used, + otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized. \end{description} \noindent It is also possible to calculate a power law temperature dependence (in the two fluid approximation $n=4$) and the dirty \textit{s}-wave expression. @@ -164,16 +176,16 @@ Obviously for this no integration is needed. \begin{equation} \frac{\lambda(0)^2}{\lambda(T)^2} = 1-\left(\frac{T}{T_{\mathrm c}}\right)^n \end{equation} - \musrfit theory line: \verb?userFcn libGapIntegrals TGapPowerLaw 1 2?\\ - (Parameters: $T_{\mathrm c}~(\mathrm{K})$, $n~(1)$) + \musrfit theory line: \verb?userFcn libGapIntegrals TGapPowerLaw 1 2?\\[1.5ex] + Parameters: $T_{\mathrm c}~(\mathrm{K})$, $n~(1)$ \item[dirty \textit{s}-wave \cite{Tinkham}:] \begin{equation} \frac{\lambda(0)^2}{\lambda(T)^2} = \frac{\Delta(T)}{\Delta_0}\,\tanh\left[\frac{\Delta(T)}{2 k_{\rm B} T}\right] \end{equation} - with $\Delta(T)$ given by Eq.(\ref{eq:gapT}).\\ - \musrfit theory line: \verb?userFcn libGapIntegrals TGapDirtySWave 1 2 [3]?\\ - (Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $[a_{\rm G}~(1)]$. If $a_{\rm G}$ is given, the temperature dependence - according to Eq.(\ref{eq:gapT_Prozorov}) will be used, otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized.) + \musrfit theory line: \verb?userFcn libGapIntegrals TGapDirtySWave 1 2 [3 4]?\\[1.5ex] + Parameters: $T_{\mathrm c}~(\mathrm{K})$, $\Delta_0~(\mathrm{meV})$, $[c_0~(1),~a_{\rm G}~(1)]$. + If $c_0$ and $a_{\rm G}$ are provided, the temperature dependence according to Eq.(\ref{eq:gapT_Prozorov}) will be used, + otherwise Eq.(\ref{eq:gapT_Manzano}) will be utilized. \end{description} \noindent Currently there are two gap functions to be found in the code which are \emph{not} documented here: @@ -187,7 +199,8 @@ The \gapint library is free software; you can redistribute it and/or modify it u \bibliographystyle{plain} \begin{thebibliography}{1} -\bibitem{musrfit} A.~Suter, \textit{\musrfit User Manual}, https://wiki.intranet.psi.ch/MUSR/MusrFit +\bibitem{musrfit} A. Suter, and B.M. Wojek, Physics Procedia \textbf{30}, 69 (2012). + A.~Suter, \textit{\musrfit User Manual}, http://lmu.web.psi.ch/musrfit/user/MUSR/WebHome.html \bibitem{cuba} T.~Hahn, \textit{Cuba -- a library for multidimensional numerical integration}, Comput.~Phys.~Commun.~\textbf{168}~(2005)~78-95, http://www.feynarts.de/cuba/ \bibitem{Prozorov} R.~Prozorov and R.W.~Giannetta, \textit{Magnetic penetration depth in unconventional superconductors}, Supercond.\ Sci.\ Technol.\ \textbf{19}~(2006)~R41-R67, and Erratum in Supercond.\ Sci.\ Technol.\ \textbf{21}~(2008)~082003. \bibitem{Manzano} A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 diff --git a/src/external/libGapIntegrals/TGapIntegrals.cpp b/src/external/libGapIntegrals/TGapIntegrals.cpp index 102fd02b..c2736ebc 100644 --- a/src/external/libGapIntegrals/TGapIntegrals.cpp +++ b/src/external/libGapIntegrals/TGapIntegrals.cpp @@ -459,10 +459,12 @@ TLambdaInvNonMonDWave2::~TLambdaInvNonMonDWave2() { */ double TGapSWave::operator()(double t, const vector &par) const { - assert((par.size() == 2) || (par.size() == 3)); // two or three parameters: Tc (K), Delta(0) (meV), [a (1)] - // 2 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 - // 3 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 + // parameters: [0] Tc (K), [1] Delta0 (meV), [[2] c0 (1), [3] aG (1)] + + assert((par.size() == 2) || (par.size() == 4)); // 2 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 + // 4 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 // and Erratum Supercond. Sci. Technol. 21 (2008) 082003 + // c0 in the original context is c0 = (pi kB Tc) / Delta0 if (t<=0.0) return 1.0; else if (t >= par[0]) @@ -509,7 +511,7 @@ double TGapSWave::operator()(double t, const vector &par) const { if (par.size() == 2) { // Carrington/Manzano intPar.push_back(par[1]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51))); } else { // Prozorov/Giannetta - intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(par[2]*(par[0]/t-1.0)))); // tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K + intPar.push_back(par[1]*tanh(par[2]*sqrt(par[3]*(par[0]/t-1.0)))); // Delta0*tanh(c0*sqrt(aG*(Tc/T-1))) } fGapIntegral->SetParameters(intPar); @@ -536,10 +538,12 @@ double TGapSWave::operator()(double t, const vector &par) const { */ double TGapDWave::operator()(double t, const vector &par) const { - assert((par.size() == 2) || (par.size() == 3)); // two or three parameters: Tc (K), Delta(0) (meV), [a (1)] - // 2 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 - // 3 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 + // parameters: [0] Tc (K), [1] Delta0 (meV), [[2] c0 (1), [3] aG (1)] + + assert((par.size() == 2) || (par.size() == 4)); // 2 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 + // 4 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 // and Erratum Supercond. Sci. Technol. 21 (2008) 082003 + // c0 in the original context is c0 = (pi kB Tc) / Delta0 if (t<=0.0) return 1.0; else if (t >= par[0]) @@ -585,7 +589,7 @@ double TGapDWave::operator()(double t, const vector &par) const { if (par.size() == 2) { // Carrington/Manzano intPar.push_back(par[1]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51))); } else { // Prozorov/Giannetta - intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(par[2]*(par[0]/t-1.0)))); // tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K + intPar.push_back(par[1]*tanh(par[2]*sqrt(par[3]*(par[0]/t-1.0)))); // Delta0*tanh(c0*sqrt(aG*(Tc/T-1))) } intPar.push_back(4.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy intPar.push_back(TMath::PiOver2()); // upper limit of phi-integration @@ -618,9 +622,10 @@ double TGapDWave::operator()(double t, const vector &par) const { */ double TGapCosSqDWave::operator()(double t, const vector &par) const { - assert((par.size() == 3) || (par.size() == 5)); // three or five parameters: Tc (K), DeltaD(0) (meV), DeltaS(0) (meV), [aD (1), aS (1)] - // 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 - // 5 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 + // parameters: [0] Tc (K), [1] Delta0_D (meV), [2] Delta0_S (meV) [[3] c0_D (1), [4] aG_D (1), [5] c0_S (1), [6] aG_S (1)] + + assert((par.size() == 3) || (par.size() == 7)); // 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 + // 7 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 // and Erratum Supercond. Sci. Technol. 21 (2008) 082003 if (t<=0.0) return 1.0; @@ -667,14 +672,14 @@ double TGapCosSqDWave::operator()(double t, const vector &par) const { if (par.size() == 3) { // Carrington/Manzano intPar.push_back(par[1]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51))); } else { // Prozorov/Giannetta - intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(par[3]*(par[0]/t-1.0)))); // DeltaD(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K + intPar.push_back(par[1]*tanh(par[3]*sqrt(par[4]*(par[0]/t-1.0)))); // Delta0_D*tanh(c0_D*sqrt(aG_D*(Tc/T-1))) } intPar.push_back(1.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy intPar.push_back(TMath::Pi()); // upper limit of phi-integration if (par.size() == 3) { // Carrington/Manzano intPar.push_back(par[2]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51))); } else { // Prozorov/Giannetta - intPar.push_back(par[2]*tanh(0.2707214816*par[0]/par[2]*sqrt(par[4]*(par[0]/t-1.0)))); // DeltaS(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K + intPar.push_back(par[2]*tanh(par[5]*sqrt(par[6]*(par[0]/t-1.0)))); // Delta0_S*tanh(c0_S*sqrt(aG_S*(Tc/T-1))) } // double xl[] = {0.0, 0.0}; // lower bound E, phi @@ -705,10 +710,12 @@ double TGapCosSqDWave::operator()(double t, const vector &par) const { */ double TGapSinSqDWave::operator()(double t, const vector &par) const { - assert((par.size() == 3) || (par.size() == 5)); // three or five parameters: Tc (K), DeltaD(0) (meV), DeltaS(0) (meV), [aD (1), aS (1)] - // 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 - // 5 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 + // parameters: [0] Tc (K), [1] Delta0_D (meV), [2] Delta0_S (meV) [[3] c0_D (1), [4] aG_D (1), [5] c0_S (1), [6] aG_S (1)] + + assert((par.size() == 3) || (par.size() == 7)); // 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 + // 7 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 // and Erratum Supercond. Sci. Technol. 21 (2008) 082003 + // c0 in the original context is c0 = (pi kB Tc) / Delta0 if (t<=0.0) return 1.0; else if (t >= par[0]) @@ -754,14 +761,14 @@ double TGapSinSqDWave::operator()(double t, const vector &par) const { if (par.size() == 3) { // Carrington/Manzano intPar.push_back(par[1]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51))); } else { // Prozorov/Giannetta - intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(par[3]*(par[0]/t-1.0)))); // DeltaD(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K + intPar.push_back(par[1]*tanh(par[3]*sqrt(par[4]*(par[0]/t-1.0)))); // Delta0_D*tanh(c0_D*sqrt(aG_D*(Tc/T-1))) } intPar.push_back(1.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy intPar.push_back(TMath::Pi()); // upper limit of phi-integration if (par.size() == 3) { // Carrington/Manzano intPar.push_back(par[2]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51))); } else { // Prozorov/Giannetta - intPar.push_back(par[2]*tanh(0.2707214816*par[0]/par[2]*sqrt(par[4]*(par[0]/t-1.0)))); // DeltaS(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K + intPar.push_back(par[2]*tanh(par[5]*sqrt(par[6]*(par[0]/t-1.0)))); // Delta0_S*tanh(c0_S*sqrt(aG_S*(Tc/T-1))) } // double xl[] = {0.0, 0.0}; // lower bound E, phi @@ -792,10 +799,13 @@ double TGapSinSqDWave::operator()(double t, const vector &par) const { */ double TGapAnSWave::operator()(double t, const vector &par) const { - assert((par.size() == 3) || (par.size() == 4)); // three or four parameters: Tc (K), Delta(0) (meV), a (1), [aS_Gap (1)] - // 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 - // 4 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 + // parameters: [0] Tc (K), [1] Delta0 (meV), [2] a (1), [[3] c0 (1), [4] aG (1)] + + assert((par.size() == 3) || (par.size() == 5)); // 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 + // 5 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 // and Erratum Supercond. Sci. Technol. 21 (2008) 082003 + // c0 in the original context is c0 = (pi kB Tc) / Delta0 + if (t<=0.0) return 1.0; else if (t >= par[0]) @@ -841,7 +851,7 @@ double TGapAnSWave::operator()(double t, const vector &par) const { if (par.size() == 3) { // Carrington/Manzano intPar.push_back(par[1]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51))); } else { // Prozorov/Giannetta - intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(par[3]*(par[0]/t-1.0)))); // DeltaS(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K + intPar.push_back(par[1]*tanh(par[3]*sqrt(par[4]*(par[0]/t-1.0)))); // Delta0*tanh(c0*sqrt(aG*(Tc/T-1))) } intPar.push_back(par[2]); intPar.push_back(4.0*(t+(1.0+par[2])*intPar[1])); // upper limit of energy-integration: cutoff energy @@ -875,10 +885,12 @@ double TGapAnSWave::operator()(double t, const vector &par) const { */ double TGapNonMonDWave1::operator()(double t, const vector &par) const { - assert((par.size() == 3) || (par.size() == 4)); // three or four parameters: Tc (K), Delta(0) (meV), a (1), [aD_Gap (1)] - // 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 - // 4 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 + // parameters: [0] Tc (K), [1] Delta0 (meV), [2] a (1), [[3] c0 (1), [4] aG (1)] + + assert((par.size() == 3) || (par.size() == 5)); // 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 + // 5 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 // and Erratum Supercond. Sci. Technol. 21 (2008) 082003 + // c0 in the original context is c0 = (pi kB Tc) / Delta0 if (t<=0.0) return 1.0; else if (t >= par[0]) @@ -924,7 +936,7 @@ double TGapNonMonDWave1::operator()(double t, const vector &par) const { if (par.size() == 3) { // Carrington/Manzano intPar.push_back(par[1]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51))); } else { // Prozorov/Giannetta - intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(par[3]*(par[0]/t-1.0)))); // DeltaD(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K + intPar.push_back(par[1]*tanh(par[3]*sqrt(par[4]*(par[0]/t-1.0)))); // Delta0*tanh(c0*sqrt(aG*(Tc/T-1))) } intPar.push_back(par[2]); intPar.push_back(4.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy @@ -955,10 +967,12 @@ double TGapNonMonDWave1::operator()(double t, const vector &par) const { */ double TGapNonMonDWave2::operator()(double t, const vector &par) const { - assert((par.size() == 3) || (par.size() == 4)); // three parameters: Tc (K), Delta(0) (meV), a (1), [aD_Gap (1)] - // 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 - // 4 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 + // parameters: [0] Tc (K), [1] Delta0 (meV), [2] a (1), [[3] c0 (1), [4] aG (1)] + + assert((par.size() == 3) || (par.size() == 5)); // 3 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 + // 5 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 // and Erratum Supercond. Sci. Technol. 21 (2008) 082003 + // c0 in the original context is c0 = (pi kB Tc) / Delta0 if (t<=0.0) return 1.0; else if (t >= par[0]) @@ -1004,7 +1018,7 @@ double TGapNonMonDWave2::operator()(double t, const vector &par) const { if (par.size() == 3) { // Carrington/Manzano intPar.push_back(par[1]*tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51))); } else { // Prozorov/Giannetta - intPar.push_back(par[1]*tanh(0.2707214816*par[0]/par[1]*sqrt(par[3]*(par[0]/t-1.0)))); // DeltaD(T) : tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K + intPar.push_back(par[1]*tanh(par[3]*sqrt(par[4]*(par[0]/t-1.0)))); // Delta0*tanh(c0*sqrt(aG*(Tc/T-1))) } intPar.push_back(par[2]); intPar.push_back(4.0*(t+intPar[1])); // upper limit of energy-integration: cutoff energy @@ -1056,9 +1070,10 @@ double TGapPowerLaw::operator()(double t, const vector &par) const { */ double TGapDirtySWave::operator()(double t, const vector &par) const { - assert((par.size() == 2) || (par.size() == 3)); // two or three parameters: Tc (K), Delta(0) (meV) [a (1)] - // 2 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 - // 3 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 + // parameters: [0] Tc (K), [1] Delta0 (meV), [[2] c0 (1), [3] aG (1)] + + assert((par.size() == 2) || (par.size() == 4)); // 2 parameters: see A.~Carrington and F.~Manzano, Physica~C~\textbf{385}~(2003)~205 + // 4 parameters: see R. Prozorov and R. Giannetta, Supercond. Sci. Technol. 19 (2006) R41-R67 // and Erratum Supercond. Sci. Technol. 21 (2008) 082003 if (t<=0.0) return 1.0; @@ -1069,7 +1084,7 @@ double TGapDirtySWave::operator()(double t, const vector &par) const { if (par.size() == 2) { // Carrington/Manzano deltaT = tanh(1.82*pow(1.018*(par[0]/t-1.0),0.51)); } else { // Prozorov/Giannetta - deltaT = tanh(0.2707214816*par[0]/par[1]*sqrt(par[2]*(par[0]/t-1.0))); // tanh(pi kB Tc / Delta(0) * sqrt()), pi kB = 0.2707214816 meV/K + deltaT = tanh(par[2]*sqrt(par[3]*(par[0]/t-1.0))); // tanh(c0*sqrt(aG*(Tc/T-1))) } return deltaT*tanh(par[1]*deltaT/(0.172346648*t)); // Delta(T)/Delta(0)*tanh(Delta(T)/2 kB T), kB in meV/K From bccc97ff22b0de468a4a7c8eb2cd9e1d4fec9055 Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Tue, 30 Jun 2015 12:17:25 +0200 Subject: [PATCH 06/69] changed setf/unsetf bug --- src/classes/PMsr2Data.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/classes/PMsr2Data.cpp b/src/classes/PMsr2Data.cpp index e818e6ff..de96b237 100644 --- a/src/classes/PMsr2Data.cpp +++ b/src/classes/PMsr2Data.cpp @@ -2444,7 +2444,7 @@ void PMsr2Data::WriteValue(fstream &outFile, const double &value, const unsigned if ((fabs(value) >= 1.0e6) || ((fabs(value) < 1.0e-4) && (fabs(value) > 0.0))) outFile << scientific << setprecision(width - 8); else - outFile.setf(ios::floatfield); + outFile.unsetf(ios::floatfield); outFile << setw(width) << left << value; } @@ -2469,7 +2469,7 @@ void PMsr2Data::WriteValue(fstream &outFile, const double &value, const double & if ((fabs(value) >= 1.0e6) || ((fabs(value) < 1.0e-4) && (fabs(value) > 0))) outFile << scientific; else - outFile.setf(ios::floatfield); + outFile.unsetf(ios::floatfield); outFile.precision(prec); outFile << setw(width) << left << value; From b113a94ee9323558e4cd2b0be89eab467fd7afba Mon Sep 17 00:00:00 2001 From: Suter Andreas Date: Sun, 16 Aug 2015 11:43:57 +0200 Subject: [PATCH 07/69] added the class PStringNumberList which allow to parse a generic encoded list of numbers. Used this class to improve PMsrHandler, and improved the runList feature of msr2data. For details see the documentation of msr2data. --- src/classes/PMsrHandler.cpp | 127 ++++++--------------------- src/classes/PMusr.cpp | 168 +++++++++++++++++++++++++++++++++++- src/include/PMsrHandler.h | 1 - src/include/PMusr.h | 25 ++++++ src/msr2data.cpp | 54 ++++++++++-- src/musredit/PTextEdit.cpp | 43 +-------- src/musredit/PTextEdit.h | 1 - src/musrgui/PTextEdit.cpp | 40 --------- src/musrgui/PTextEdit.h | 1 - 9 files changed, 265 insertions(+), 195 deletions(-) diff --git a/src/classes/PMsrHandler.cpp b/src/classes/PMsrHandler.cpp index cafb2637..e851b315 100644 --- a/src/classes/PMsrHandler.cpp +++ b/src/classes/PMsrHandler.cpp @@ -3165,15 +3165,19 @@ Bool_t PMsrHandler::HandleRunEntry(PMsrLines &lines) if (tokens->GetEntries() < 2) { error = true; } else { - PIntVector group; + PUIntVector group; str = iter->fLine; - if (ParseDetectorGrouping(str, group)) { + PStringNumberList *rl = new PStringNumberList(str.Data()); + string errorMsg(""); + if (rl->Parse(errorMsg, true)) { + group = rl->GetList(); for (UInt_t i=0; iGetEntries() < 2) { error = true; } else { - PIntVector group; + PUIntVector group; str = iter->fLine; - if (ParseDetectorGrouping(str, group)) { + PStringNumberList *rl = new PStringNumberList(str.Data()); + string errorMsg(""); + if (rl->Parse(errorMsg, true)) { + group = rl->GetList(); for (UInt_t i=0; ifLine.Contains("runs", TString::kIgnoreCase)) { // handle plot runs TComplex run; + PStringNumberList *rl; + string errorMsg; + PUIntVector runList; switch (param.fPlotType) { case -1: error = true; @@ -3900,31 +3911,21 @@ Bool_t PMsrHandler::HandlePlotEntry(PMsrLines &lines) case MSR_PLOT_ASYM: case MSR_PLOT_NON_MUSR: case MSR_PLOT_MU_MINUS: - tokens = iter1->fLine.Tokenize(" \t"); - if (!tokens) { + rl = new PStringNumberList(iter1->fLine.Data()); + if (!rl->Parse(errorMsg, true)) { cerr << endl << ">> PMsrHandler::HandlePlotEntry: **SEVERE ERROR** Couldn't tokenize PLOT in line " << iter1->fLineNo; + cerr << endl << ">> Error Message: " << errorMsg; cerr << endl << endl; return false; } - if (tokens->GetEntries() < 2) { // runs missing - error = true; - } else { - for (Int_t i=1; iGetEntries(); i++) { - ostr = dynamic_cast(tokens->At(i)); - str = ostr->GetString(); - if (str.IsDigit()) { - run = TComplex(str.Atoi(),-1.0); - param.fRuns.push_back(run); - } else { - error = true; - } - } + runList = rl->GetList(); + for (UInt_t i=0; i - * - * \param str forward/backward string to be decoded - * \param group decoded detector grouping vector - * - * return: true if parsing was successful, false otherwise. - */ -Bool_t PMsrHandler::ParseDetectorGrouping(TString str, PIntVector &group) -{ - TObjArray *tok=0, *tok1=0; - TObjString *ostr=0; - Int_t first=0, last=0; - - // change cn - cm to cn-cm. Will *NOT* handle cn - cm etc - str = str.ReplaceAll(" - ", "-"); - - group.clear(); - tok = str.Tokenize(" \t"); - - // check that there are indeed enough tokens - if (tok->GetEntries() < 2) { - delete tok; - return false; - } - - for (Int_t i=1; iGetEntries(); i++) { - ostr = dynamic_cast(tok->At(i)); - if (ostr->GetString().Contains("-")) { // hopefully a cn-cm token - tok1 = ostr->GetString().Tokenize("-"); - if (tok1->GetEntries() == 2) { - ostr = dynamic_cast(tok1->At(0)); - if (ostr->GetString().IsDigit()) { - first = ostr->GetString().Atoi(); - } else { - if (tok) delete tok; - if (tok1) delete tok1; - return false; - } - ostr = dynamic_cast(tok1->At(1)); - if (ostr->GetString().IsDigit()) { - last = ostr->GetString().Atoi(); - } else { - if (tok) delete tok; - if (tok1) delete tok1; - return false; - } - - if (last < first) { - if (tok) delete tok; - return false; - } - - for (Int_t i=first; i<=last; i++) - group.push_back(i); - } else { - if (tok) delete tok; - if (tok1) delete tok1; - return false; - } - } else { // hopefully a number - if (ostr->GetString().IsDigit()) { - group.push_back(ostr->GetString().Atoi()); - } else { - if (tok) delete tok; - return false; - } - } - } - - // clean up - if (tok) delete tok; - if (tok1) delete tok1; - - return true; -} - //-------------------------------------------------------------------------- // MakeDetectorGroupingString (private) //-------------------------------------------------------------------------- diff --git a/src/classes/PMusr.cpp b/src/classes/PMusr.cpp index ee618411..478db109 100644 --- a/src/classes/PMusr.cpp +++ b/src/classes/PMusr.cpp @@ -28,10 +28,12 @@ ***************************************************************************/ #include - #include using namespace std; +#include +using namespace boost; + #include "PMusr.h" //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -1741,3 +1743,167 @@ void PMsrRunBlock::SetMapGlobal(UInt_t idx, Int_t ival) // else do nothing at the moment return; } + +//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// implementation PStringNumberList +//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +//-------------------------------------------------------------------------- +// Parse (public) +//-------------------------------------------------------------------------- +/** + *

      Helper class which parses list of numbers of the following 3 forms and its combination. + * (i) list of integers separted by spaces, e.g. 1 3 7 14 + * (ii) a range of integers of the form nS-nE, e.g. 13-27 which will generate 13, 14, 15, .., 26, 27 + * (iii) a sequence of integers of the form nS:nE:nStep, e.g. 10:20:2 which will generate 10, 12, 14, .., 18, 20 + * + * \param errorMsg error message + * \param ignoreFirstToken if true, the first parse token will be ignored + * + * @return true if parse has been successful, otherwise false + */ +bool PStringNumberList::Parse(string &errorMsg, bool ignoreFirstToken) +{ + bool result=true; + vector splitVec; + int ival; + + // before checking tokens, remove 'forbidden' " - " and " : " + StripSpaces(); + + // split string into space separated tokens + split(splitVec, fString, is_any_of(" "), token_compress_on); + + unsigned int start=0; + if (ignoreFirstToken) + start=1; + + for (unsigned int i=start; i subSplitVec; + // split potential nS-nE token + split(subSplitVec, splitVec[i], is_any_of("-"), token_compress_on); + + int start=-1, end=-1; + unsigned int count=0; + for (unsigned int j=0; j end) { + int swap = end; + cerr << "**WARNING** start=" << start << " > end=" << end << ", hence I will swap them" << endl; + end = start; + start = swap; + } + for (int j=start; j<=end; j++) + fList.push_back(j); + } + } else if (splitVec[i].find(":") != string::npos) { // check for potential sequence + vector subSplitVec; + // split potential rStart:rEnd:rStep token + split(subSplitVec, splitVec[i], is_any_of(":"), token_compress_on); + + int start=-1, end=-1, step=-1; + unsigned int count=0; + for (unsigned int j=0; j end) { + int swap = end; + cerr << "**WARNING** start=" << start << " > end=" << end << ", hence I will swap them" << endl; + end = start; + start = swap; + } + for (int j=start; j<=end; j+=step) + fList.push_back(j); + } + } else if (IsNumber(splitVec[i])) { + ival = atoi(splitVec[i].c_str()); + fList.push_back(ival); + } else { + errorMsg = "**ERROR** invalid token: " + splitVec[i]; + result = false; + } + } + } + + return result; +} + +//-------------------------------------------------------------------------- +// StripSpaces (private) +//-------------------------------------------------------------------------- +/** + *

      This routine removes arbitray number of spaces between '-' and ':', + * e.g. 123 - 125 will be converted to 123-125, etc. + */ +void PStringNumberList::StripSpaces() +{ + string str=fString; + int pos=-1; + + // backward scan + for (int i=str.size(); i>=0; --i) { // check if first space is found + if ((str[i] == ' ') && (pos == -1)) { + pos = i; + } else if ((str[i] == '-') || (str[i] == ':')) { // check for '-' or ':' + if (pos != -1) { + str.erase(i+1, pos-i); + } + } else if (str[i] != ' ') { // anything but different than a space leads to a reset of the pos counter + pos = -1; + } + } + // forward scan + for (unsigned int i=0; iHelper class which parses list of numbers of the following 3 forms and its combination. + * (i) list of integers separted by spaces, e.g. 1 3 7 14 + * (ii) a range of integers of the form nS-nE, e.g. 13-27 which will generate 13, 14, 15, .., 26, 27 + * (iii) a sequence of integers of the form nS:nE:nStep, e.g. 10:20:2 which will generate 10, 12, 14, .., 18, 20 + */ +class PStringNumberList { + public: + PStringNumberList(char *str) { fString = str; } + PStringNumberList(string str) { fString = str; } + virtual ~PStringNumberList() { fList.clear(); } + + virtual bool Parse(string &errorMsg, bool ignoreFirstToken=false); + virtual PUIntVector GetList() { return fList; } + + private: + string fString; + bool fIsValid; + PUIntVector fList; + + virtual bool IsNumber(string &str) { return (str.find_first_not_of("0123456789") == string::npos); } + virtual void StripSpaces(); +}; + #endif // _PMUSR_H_ diff --git a/src/msr2data.cpp b/src/msr2data.cpp index ec2d43ba..58babb8b 100644 --- a/src/msr2data.cpp +++ b/src/msr2data.cpp @@ -37,6 +37,7 @@ #endif #include "git-revision.h" +#include "PMusr.h" #include "PMsr2Data.h" #include @@ -87,12 +88,17 @@ void msr2data_syntax() cout << endl << " [fit [-k] [-t] | fit-