Changeset 760258 in git


Ignore:
Timestamp:
Jun 11, 2015, 4:10:03 PM (8 years ago)
Author:
Stephan Oberfranz <oberfran@…>
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
633196803bc6aac699d9f7df3d38f77b6222ea7d
Parents:
2675bd98cab28ad9ecfd872518826ad7e66b19358aa9770fc6e41a905d10dd6cac4556354095e462
Message:
update
Merge branch 'spielwiese' of github.com:Singular/Sources into spielwiese
Files:
96 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/deRham.lib

    r2675bd r760258  
    33category="Noncommutative";
    44info="
    5 LIBRARY:  derham.lib      Computation of deRham cohomology
     5LIBRARY:  deRham.lib      Computation of deRham cohomology
    66
    77AUTHORS:  Cornelia Rottner, rottner@mathematik.uni-kl.de
     
    1616     localzation, and local cohomology groups}, J. Pure Appl. Algebra 156, 267-308
    1717     (2001)
    18 [R]  Rottner, C.: Computing de Rham Cohomology,diploma thesis (2012)
     18[R]  Rottner, C.: Computing de Rham Cohomology,diploma thesis (2012)@*
    1919[W1] Walther, U.: Algorithmic computation of local cohomology modules and the local
    2020     cohomological dimension of algebraic varieties}, J. Pure Appl. Algebra 139,
    21      303-321 (1999)
     21     303-321 (1999)@*
    2222[W2] Walther, U.: Algorithmic computation of de Rham Cohomology of Complements of
    23      Complex Affine Varieties}, J. Symbolic Computation 29, 796-839 (2000)
     23     Complex Affine Varieties}, J. Symbolic Computation 29, 796-839 (2000)@*
    2424[W3] Walther, U.: Computing the cup product structure for complements of complex
    2525     affine varieties, J. Pure Appl. Algebra 164, 247-273 (2001)
  • Singular/LIB/gradedModules.lib

    r2675bd r760258  
    2323    grobj(M,w[,d])  construct a graded object (map) given by matrix M
    2424    grtest(A)       check whether A is a valid graded object
    25     grisequal(A,B)  check whether A is exactly eqal to B? TODO: isomorphic!
    2625    grdeg(M)        compute graded degrees of columns of the map M
    2726    grview(M)       view the graded structure of map M
     
    5756    matrixpres(a)      matrix presentation of direct sum of Omega^{a[i]}(i)
    5857";
     58   
     59//    grisequal(A,B)  check whether A is exactly eqal to B? TODO: isomorphic!
    5960
    6061LIB "matrix.lib"; // ?
     
    7374"direct sum_i=1^size R(-v[i]), for source and targets of graded objects"
    7475{
     76  int n = size(v);
     77  if (n == 0) { return ("0"); }
     78  ASSUME(0, n > 0 );
     79
    7580  if (R == "")
    7681  {
     
    8085  ASSUME(0, defined(R) && (R != "") );
    8186
    82   int n = size(v);
    83 
    84   if (n == 0) { return ("0"); }
    85 
    86   ASSUME(0, n > 0 );
    87  
    8887  v = -v; // NOTE: due to Mathematical meanings of Singular data
    8988 
     
    178177  string R = nameof(basering);
    179178
    180   if( typeof( N ) == "list" )
    181   {
    182     msg = msg + " resolution";  // TODO: what about chain maps?
     179  if( typeof( N ) == "list" ) // TODO: find a better DS for graded resolutions / chain map !?
     180  {
     181    int n = size(N); ASSUME(0, n > 0);
     182   
     183    string msg1 = "";
    183184    if( size(R) >= 2 )
    184185    {
    185       msg = msg + "(let R:="+R+")";
    186       R = "R";
     186      msg1 = msg1 + "(let R:="+R+")";
     187      R = "R"; // !!!
     188    }   
     189    msg1 = msg1 + ": " ;
     190
     191   
     192
     193    list arr; arr[n] = list();
     194    int exact = (1==1);
     195   
     196    int i = 1;
     197   
     198    ASSUME(1, grtest(N[i]));
     199   
     200    string dst = grsumstr(R, grrange(N[i]));
     201    string src = grsumstr(R, grdeg(N[i]));
     202   
     203    arr[i] = list(dst,  src);
     204
     205    i = i + 1;
     206   
     207    while( i <= n )
     208    {
     209      ASSUME(1, grtest(N[i]));
     210     
     211      dst = grsumstr(R, grrange(N[i]));
     212     
     213      if( exact && (src != dst) )
     214      {
     215//        "src: [" + src+ "] != [" + dst + "] :(!!";
     216        exact = (1==0);
     217      }
     218
     219      src = grsumstr(R, grdeg(N[i]));
     220     
     221      arr[i] = list(dst,  src);
     222
     223      i = i + 1;
     224    };
     225
     226    string o = "";
     227
     228    if( exact )
     229    { // complex?
     230      msg = msg + " resolution" + msg1;
     231
     232      o = "d";
     233
     234      for( i = 1; i <= n; i++ )
     235      {
     236        msg = msg + newline + arr[i][1] + " <-- "+o+"_" + string(i) + " --";
     237      };
     238     
     239      msg =  msg + newline + arr[n][2];
     240      msg = msg + ", given by maps: ";
     241    } else
     242    {
     243//      print(arr);
     244
     245      msg = msg + "-object collection";     
     246      o = "o";
     247     
     248//      for( i = 1; i <= n; i++ )
     249//      {
     250//        msg = msg + newline + arr[i][1] + " <-- "+o+"_" + string(i) + " -- " + arr[i][2];
     251//      };     
     252      msg = msg + ", given by the following maps (named here as "+o+"_[1 .. "+string(n)+"]): ";
    187253    }
    188254
    189 
    190     int i = 1;  int n = size(N);
    191     string dst;
    192    
    193     msg = msg + ": " + newline + grsumstr(R, grrange(N[i])) + " <-- d_" + string(i) + " -- " ;
    194     for( ; i < n; i++ )
    195     {
    196       dst = grsumstr(R, grdeg(N[i])) +  " <-- d_" + string(i+1) + " --";
    197       msg = msg + newline + dst;
    198     };
    199 
    200     msg = msg + newline + grsumstr(R, grdeg(N[i])) + ", given by maps: ";
    201255
    202256    print(msg);
     
    204258    for( i = 1; i <= size(N); i++ )
    205259    {
    206       "d_" + string(i) + " :"; grview(N[i]);
     260      print( o+"_" + string(i) + " :" );
     261      grview( N[i] );
    207262    };
    208263
     
    393448  }
    394449
    395 /*
    396   if( flag ) // output details in case of non-identical permutation?
    397   {
    398     // grades & ordering permutation : gr[pivot] should be sorted:
    399     "s: ", s;
    400     "gr: ", gr;
    401     "pivot: ",    pivot;
    402   }
    403 */
    404450  ASSUME(1, issorted(intvec(gr[pivot]), 1));
    405451
     
    407453}
    408454
    409 // Q@Wolfram: what should be done with zero gens!?
    410455proc grdeg(M)
    411456"USAGE:  grdeg(M), graded object M
    412457RETURN:  intvec of degrees
    413 PURPOSE: graded degrees of columns (generators) of M
     458PURPOSE: graded degrees of columns (generators) of M, describing the source of M
    414459ASSUME:  M must be a graded object (matrix/module/ideal/mapping)
    415460NOTE:    if M has zero cols it shoud have attrib(M,'degHomog') set.
     
    423468    def t = attrib(M, "degHomog"); // graded degrees
    424469
    425     if( ncols(M) == 0 )    {     return (t);    } // for now
     470    if( size(t) == 0 ){ return (t); } // ZERO!
    426471   
    427     ASSUME(0, ncols(M) == size(t) );
     472    ASSUME(2, ncols(M) == size(t) );
    428473    return (t);
    429474  }
    430  
     475
     476  if( ncols(M) == 0 ) { return (0:0); } // FIXME: Why???
     477
    431478  ASSUME(0, ncols(M) > 0);
    432 
    433479  ASSUME(0, ncols(M) == size(M) );
    434480
     
    747793/////////////////////////////////////////////////////////
    748794
    749 // Q@Woflram?
    750795proc grzero()
    751796"USAGE:  grzero()
     
    755800"
    756801{
    757  return ( grobj(module([0]), intvec(0), intvec(0)) );
     802 return ( grobj(freemodule(0), intvec(0:0), intvec(0:0)) );
    758803}
    759804example
     
    762807  ring r=32003,(x,y,z),dp;
    763808
    764   def M = grpower( grshift( grzero(), 10), 5 );
    765 
    766   print(M);
    767 
    768   grview(M);
     809
     810  grview( grobj(freemodule(0), intvec(0:0), intvec(0:0)) );
     811  grview( grobj(freemodule(0), intvec(0:0)) );
     812
     813  grview( grzero() );
     814
     815//  def M = grpower( grshift( grzero(), 3), 2 ); grview(M);
     816}
     817
     818proc grtwists(intvec v)
     819"USAGE:  grtwists(v), intvec v
     820RETURN:  graded object representing S(v[1]) + ... + S(v[size(v)])
     821PURPOSE: compute presentation of S(v[1]) + ... + S(v[size(v)])
     822EXAMPLE: example grtwists; shows an example
     823"
     824{
     825  matrix m[size(v)][0];
     826  return( grobj(m, -v) ); // will set the rank as well
     827}
     828example
     829{ "EXAMPLE:"; echo = 2;
     830
     831  ring r=32003,(x,y,z),dp;
     832 
     833  grview( grtwists ( intvec(-4, 1, 6 )) );
     834
     835  grview( grtwists ( intvec(0:0) ) );
     836}
     837
     838proc grtwist(int a, int d)
     839"USAGE:  grtwist(a,d), int a, d
     840RETURN:  graded object representing S(d)^a
     841PURPOSE: compute presentation of S(d)^a
     842EXAMPLE: example grtwist; shows an example
     843"
     844{
     845  ASSUME(0, a > 0); 
     846  def Z = grtwists( intvec(d:a) ); // will set the rank as well
     847//  ASSUME(2, grisequal(Z, grpower( grshift(grzero(), d), a ) )); // optional check
     848  return(Z);
     849}
     850example
     851{ "EXAMPLE:"; echo = 2;
     852
     853  ring r=32003,(x,y,z),dp;
     854
     855//  grview(grpower( grshift(grzero(), 10), 5 ) );
     856
     857  grview( grtwist (5, 10) );
    769858}
    770859
     
    827916  intvec b = grrange(B);
    828917  intvec c = a,b;
    829   int r = nrows(A);
    830 
    831   module T = align(module(B), r); //  T;  print(T);  nrows(T); // BUG!!!!
    832   module S = module(A), T;
     918
     919  if( (ncols(B)>0) && (size(B)>0) )
     920  {
     921    int r = nrows(A);
     922    module T = align(module(B), r); //  T;  print(T);  nrows(T); // BUG!!!!
     923    module S = module(A), T;
     924  }
     925  else { def S = A; }
    833926
    834927  intvec da = grdeg(A);
     
    836929  intvec dc = da, db;
    837930
    838   return(grobj(S, c, dc));
     931
     932  def SS = grobj(S, c, dc);
     933 
     934  ASSUME(0, size( grrange(SS) ) == (size(a) + size(b)) );
     935  ASSUME(0, size( grdeg(SS) ) == (size(da) + size(db)) );
     936  ASSUME(0, ncols( SS ) == size( grdeg(SS) ) );
     937  ASSUME(0, nrows( SS ) == size( grrange(SS) ) );
     938 
     939  return(SS);
    839940}
    840941example
     
    883984{
    884985  ASSUME(1, grtest(M) );
     986           
     987           
    885988
    886989  intvec a = grrange(M);
     990  intvec t = grdeg(M);
     991
     992  if( size(a) == 0 && size(t) == 0 )
     993  {
     994    "!! Warning: shifting '0 <- 0' leaves it as it unchanged!";
     995    return (M);   
     996  }
     997 
    887998  a = a - intvec(d:size(a));
    888 
    889   intvec t = attrib(M, "degHomog");
    890999  t = t - intvec(d:size(t));
    8911000
     
    9041013
    9051014  grview(S);
     1015
     1016  grview( grshift( grzero(), 100 ) ); // does nothing...
    9061017}
    9071018
     
    9341045example
    9351046{ "EXAMPLE:"; echo = 2;
    936   TODO
    937 }
    938 
    939 proc grtwist(int a, int d)
    940 "USAGE:  grtwist(a,d), int a, d
    941 RETURN:  graded object representing S(d)^a
    942 PURPOSE: compute presentation of S(d)^a
    943 EXAMPLE: example grtwist; shows an example
    944 "
    945 {
    946   ASSUME(0, a > 0);
    947 
    948   module Z; Z[a] = [0];
    949   intvec w = -intvec(d:a);
    950   Z = grobj(Z, w, w); // will set the rank as well
    951   ASSUME(2, grisequal(Z, grpower( grshift(grzero(), d), a ) )); // optional check
    952   return(Z);
    953 }
    954 example
    955 { "EXAMPLE:"; echo = 2;
    956 
    957   ring r=32003,(x,y,z),dp;
    958 
    959   grview(grpower( grshift(grzero(), 10), 5 ) );
    960 
    961   grview( grtwist (5, 10) );
     1047//  TODO
    9621048}
    9631049
     
    9691055"
    9701056{
    971   if( ncols(A) == 0 )
    972   {
    973     ASSUME(0, size(w) == nrows(A) );
    974     attrib(A, "isHomog", w);
    975     attrib(A, "degHomog", intvec(0)); // FIXME: just for now: no intvec of 0-size :(
    976     ASSUME(0, grtest(A) );
    977     return (A);
    978   }
     1057  ASSUME(0, size(w) >= nrows(A) );
    9791058 
    9801059  module M = module(A);
    981   ASSUME(0, size(w) >= nrows(M) );
    9821060
    9831061  attrib( M, "rank", size(w) );
    9841062  attrib( M, "isHomog", w );
    9851063
     1064  intvec @ww = 0:0;
     1065 
    9861066  if( size(#) > 0 )
    9871067  {
    9881068    ASSUME(0, typeof(#[1]) == "intvec" );
    989     ASSUME(0, size(#[1]) == ncols(M) );
    990     attrib(M, "degHomog", #[1]);
     1069   
     1070    @ww = intvec( #[1] );
     1071
     1072    if( size(@ww) != ncols(M) )
     1073    {
     1074      if( (size(M) == 0) && (ncols(M) <= 1) && (size(w) == 0) && (size(@ww) > 0) )
     1075      {
     1076        matrix m[size(w)][size(@ww)]; M = module(m); attrib( M, "isHomog", w );
     1077      }
     1078    }
     1079   
     1080    ASSUME(0, size(@ww) == ncols(M) );
    9911081  }
    9921082  else
    9931083  {
    994     ASSUME(0, /* no zero cols please! */ size(M) == ncols(M) );
    995     attrib(M, "degHomog", grdeg(M));
    996   }
     1084    if( size(M) == ncols(M) ) /* no zero cols? */
     1085    {
     1086      @ww = grdeg(M); // let us compute them all :)
     1087    } else
     1088    {
     1089      if( (ncols(M) == 1) && (size(M) == 0) )
     1090      {
     1091        M = freemodule(0);
     1092      }
     1093     
     1094      attrib( M, "rank", size(w) );
     1095      attrib( M, "isHomog", w );
     1096     
     1097//      ASSUME(0, /* PROBLEM WITH ZERO COLUMNS / THEIR DEGREES! */ (ncols(M) == 0) );
     1098    }
     1099  }
     1100 
     1101//  type(@ww);  type(M);
     1102 
     1103  ASSUME(0, size(@ww) == ncols(M) ); // ?!
     1104 
     1105  attrib(M, "degHomog", @ww);
    9971106
    9981107  ASSUME(0, grtest(M) );
     
    10201129
    10211130  // Zero object:
    1022   matrix z[3][0];
    1023   def zz = grobj( z, intvec(1,2,3) ); // intvec() ??
    1024   grview(zz); 
     1131  matrix z[3][0];  grview( grobj( z, intvec(1,2,3) ) );
     1132  grview( grobj( freemodule(0), intvec(1,2,3) ) );
     1133
     1134  matrix z1[0][3]; grview( grobj( z1, 0:0, intvec(1,2,3) ) );
     1135  grview( grobj( freemodule(0), 0:0, intvec(1,2,3) ) );
     1136
     1137  matrix z0[0][0]; grview( grobj( z0, 0:0 ) );
     1138  grview( grobj( freemodule(0), 0:0 ) );
     1139 
     1140 
    10251141
    10261142}
     
    10671183  {
    10681184    intvec T = attrib(N, "degHomog"); // graded degrees
     1185
     1186    if( (ncols(N) == 1) && (size(T) == 0) && (size(N) == 0) )
     1187    {
     1188      //  if(b) { "Input seems to be a valid graded ZERO-arrow!"; };
     1189      return (1);
     1190    }
    10691191   
    10701192    if ( ncols(N) != size(T) )
     
    11201242  // the following calls will fail due to tests in grtest:
    11211243
     1244 grobj( module([x+y, x, 0, 0], [0, x+y, y, 0]), intvec(0,0,0,0) ); // enough row weights
    11221245// grobj( module([x+y, x, 0, 0], [0, x+y, y, 0]), intvec(0,0) ); // not enough row weights
    11231246// grobj( module([x,0], [0,0,0], [0, y]), intvec(1,2,3) ); // zero column needs (otherwise optional) total degrees
    1124 // grobj( module([x,0], [0,0,0], [0, y]), intvec(1,2,3), intvec(1, 1, 1) ); // incompatible total degrees (on non-zero columns)
     1247 grobj( module([x,0], [0,0,0], [0, y]), intvec(1,2,3), intvec(2, 10, 3) ); // compatible total degrees (on non-zero columns)
     1248// grobj( module([x,0], [0,0,0], [0, y]), intvec(1,2,3), intvec(2-1, 10, 3+1) ); // incompatible total degrees (on both non-zero columns)
    11251249
    11261250}
     
    11431267    return (B);   
    11441268  }
    1145 
    11461269 
    11471270  module T; T[d] = 0;
     
    11511274example
    11521275{ "EXAMPLE:"; echo = 2;
     1276
    11531277  ring r;
    1154   matrix m[1][0];
    1155   align(m, 3);
     1278  matrix m[2][0];
     1279  type( align(m, 3) );
     1280
     1281  matrix m[0][2];
     1282  type( align(m, 3) );
    11561283
    11571284
     
    11801307}
    11811308
    1182 
    1183 proc grtwists(intvec v)
    1184 "USAGE:  grtwists(v), intvec v
    1185 RETURN:  graded object representing S(v[1]) + ... + S(v[size(v)])
    1186 PURPOSE: compute presentation of S(v[1]) + ... + S(v[size(v)])
    1187 EXAMPLE: example grtwists; shows an example
    1188 "
    1189 {
    1190   int l = size(v);
    1191   module Z; Z[l] = [0];
    1192   Z = grobj(Z, -v, -v); // will set the rank as well
    1193   return(Z);
    1194 }
    1195 example
    1196 { "EXAMPLE:"; echo = 2;
    1197 
    1198   ring r=32003,(x,y,z),dp;
    1199  
    1200   grview( grtwists ( intvec(-4, 1, 6 )) );
    1201 }
    1202 
    1203 
    12041309proc grsyz(A)
    12051310"USAGE:  grsyz(M), graded object M
     
    12101315{
    12111316  ASSUME(1, grtest(A));
    1212   intvec v = grdeg(A);
    1213 
    1214 //  grrange(A);
    1215  
    1216   module M = syz(A);
    1217 //  print(M);
    1218  
    1219   if( size(M) > 0 ) { return( grobj( M, v ) ); }
    1220 
    1221   // zero syzygy?
    1222   return( grtwists(-v) ); // ???
     1317  return( grobj( syz(A), grdeg(A) ) );
     1318
     1319//   if( size(syz(A)) == 0 ) : zero syzygy? //  return( grtwists( -grdeg(A) ) );
    12231320}
    12241321example
     
    12271324  ring r=32003,(x,y,z),dp;
    12281325
    1229   module A = grobj( module([x+y, x, 0, 3], [0, x+y, y, 2], [y, y, z, 1]), intvec(0,0,0,1) );
     1326  module A = grgroebner( grobj( module([x+y, x, 0, 3], [0, x+y, y, 2], [y, y, z, 1]), intvec(0,0,0,1) ) );
    12301327  grview(A);
    12311328 
    1232   module B = grgroebner(A);
    1233   grview(B);
    1234 
    1235   module C = grsyz(B); 
    1236   grview(C);
     1329  grview(grsyz(A));
     1330 
     1331  module X = grgroebner( grobj( module([x]), intvec(2) ) );
     1332  grview(X);
     1333
     1334  // syzygy module should be zero!
     1335  grview(grsyz(X));
     1336 
     1337 
    12371338}
    12381339
     
    12481349  ASSUME(1, grtest(B));
    12491350
    1250   // TODO: ASSUME(0, grdeg() == grrange());!!!
     1351  intvec a = grdeg(A);
     1352  intvec b = grrange(B);
     1353 
     1354  ASSUME(0, (size(a) == size(b)) && (a == b));  // == for intvec :(
    12511355
    12521356  return ( grobj( A*B, grrange(A), grdeg(B) ) );
     
    12761380
    12771381
     1382// TODO: think about a proper data structure for a graded resolution!?
    12781383proc grres(def A, int l, list #)
    12791384"USAGE:  grres(M, l[, b]), graded object M, int l, int b
     
    12911396  if(b) { list r = res(A, l, #[1]); } else { list r = res(A, l); }
    12921397
    1293 //  r;  v;
    1294 
    12951398  l = size(r);
    12961399 
    1297   int i; module m;
     1400  int i;
    12981401 
    12991402  for ( i = 1; i <= l; i++ )
    13001403  {
    1301     if( size(r[i]) == 0 ){ r[i] = grtwists(-v); i++; break;   }
     1404    if( size(r[i]) == 0 )
     1405    {
     1406      r[i] = grobj(freemodule(0), v); // grtwists(-v);
     1407      i++;
     1408      break;
     1409    }
    13021410
    13031411    r[i] = grobj(r[i], v); v = grdeg(r[i]);
    13041412  }
     1413 
    13051414  i = i-1;
    13061415
     
    13261435
    13271436proc grtranspose(def M)
    1328 "
    1329 USAGE:   grtranspose(M), graded object M
     1437"USAGE:   grtranspose(M), graded object M
    13301438RETURN:  graded object
    13311439PURPOSE: graded transpose of M
     
    13511459 
    13521460
    1353   module A = grobj( module([x+y, x, 0, 3], [0, x+y, y, 2], [y, y, z, 1]), intvec(0,0,0,1) ); A = grgroebner(A); grview(A);
    1354 
    1355   "graded transpose: "; module B = grtranspose(A); grview( B ); print(B);
    1356 
    1357   "... syzygy: "; module C = grsyz(B); grview(C);
    1358 
    1359   "... transposed: "; module D = grtranspose(C); grview( D ); print (D);
    1360 
    1361   "... and back to presentation: "; module E = grsyz( D ); grview(E); print(E);
    1362 
    1363   module F = grgens( E ); grview(F); print(F);
    1364  
    1365   module G = grpres( F ); grview(G); print(G);
     1461  // Corner cases: 0 <- 0!
     1462  module Z = grzero(); grview(Z);
     1463  grview( grtranspose( Z ) );
     1464
     1465 
     1466  // Corner cases: * <- 0
     1467  matrix M1[3][0];
     1468 
     1469  module Z1 = grobj( M1, intvec(-1, 0, 1) ); grview(Z1);
     1470  grview( grtranspose( Z1 ) );
     1471 
     1472 
     1473  // Corner cases: 0 <- *
     1474  matrix M2[0][3];
     1475
     1476  module Z2 = grobj( M2, 0:0, intvec(-1, 0, 1) ); grview(Z2);
     1477  grview( grtranspose( Z2 ) );
     1478 
    13661479}
    13671480
    13681481
    13691482proc grgens(def M)
    1370 "
    1371 USAGE:   grgens(M), graded object M (map)
     1483"USAGE:   grgens(M), graded object M (map)
    13721484RETURN:  graded object 
    13731485PURPOSE: try compute graded generators of coker(M) and return them as columns
     
    14041516
    14051517  grview( B ); print(B); // Ups :( != A
     1518
     1519  grview( grgens( grzero() ) );
    14061520 
    14071521}
     
    14091523
    14101524proc grpres(def M)
    1411 "
    1412 USAGE:   grpres(M), graded object M (submodule gens)
     1525"USAGE:   grpres(M), graded object M (submodule gens)
    14131526RETURN:  graded module (via coker)
    14141527PURPOSE: compute graded presentation matrix of submodule generated by columns of M
     
    14181531  ASSUME(1, grtest(M) );
    14191532
    1420   module N = grsyz(M);
     1533  def N = grsyz(M);
    14211534
    14221535//  ASSUME(3, grisequal( M, grgens( N ) ) );
     
    14291542  ring r=32003,(x,y,z),dp;
    14301543
    1431   module M = grtwists( intvec(-2, 0, 4, 4) ); grview(M);
    1432 
    1433   module N = grgens(M); grview( N ); print(N);
    1434 
    1435   module L = grpres( N ); grview( L ); print(L);
    1436 
    1437 
    1438   module A = grobj( module([x+y, x, 0, 3], [0, x+y, y, 2], [y, y, z, 1]), intvec(0,0,0,1) );
    1439 
    1440   A = grgroebner(A); grview(A);
    1441 
    1442   module B = grgens(A); grview( B ); print(B);
    1443 
    1444   module C = grpres( B ); grview( C ); print(C);
     1544  def A = grgroebner( grobj( module([x+y, x, 0, 3], [0, x+y, y, 2], [y, y, z, 1]), intvec(0,0,0,1) ) );
     1545  grview(A);
     1546
     1547  "graded transpose: "; def B = grtranspose(A); grview( B ); print(B);
     1548
     1549  "... syzygy: "; def C = grsyz(B); grview(C);
     1550
     1551  "... transposed: "; def D = grtranspose(C); grview( D ); print (D);
     1552
     1553  "... and back to presentation: "; def E = grsyz( D ); grview(E); print(E);
     1554
     1555  def F = grgens( E ); grview(F); print(F);
     1556  def G = grpres( F ); grview(G); print(G);
     1557
     1558
     1559  def M = grtwists( intvec(-2, 0, 4, 4) ); grview(M);
     1560 
     1561  def N = grgens(M); grview( N ); print(N);
     1562 
     1563  def L = grpres( N ); grview( L ); print(L); 
    14451564}
    14461565
     
    15041623}
    15051624
    1506 //
    1507 
    1508 
     1625// TODO: remove the following?
    15091626proc KeneshlouMatrixPresentation(intvec a)
    1510 "USAGE: intvec a.
     1627"USAGE: KeneshlouMatrixPresentation(intvec a), intvec a.
    15111628RETURN: graded object
    15121629PURPOSE: matrix presentation for direct sum of omega^a[i](i) in form of a graded object
     
    16751792
    16761793proc grrange(M)
     1794"USAGE: grrange(M), graded object M
     1795RETURN: intvec
     1796PURPOSE: get weights of module units, thus describing the target of M
     1797EXAMPLE: example grrange; shows an example
     1798"
    16771799{
    16781800//  ASSUME(1, grtest(M)); // Leads to recursive call due to grtest...
    16791801  return( attrib(M, "isHomog") );
    16801802}
     1803example
     1804{ "EXAMPLE:"; echo = 2;
     1805
     1806  ring r=32003,(x,y,z),dp;
     1807
     1808  module Z = grobj(freemodule(0),intvec(0:0),intvec(0:0));
     1809 
     1810  grrange(Z);
     1811  grdeg(Z);
     1812 
     1813  grview(Z);
     1814
     1815  module P=grobj(module([xy,0,xz]),intvec(0,1,0));
     1816
     1817  grrange(P);
     1818  grdeg(P);
     1819
     1820  grview(P);
     1821}
    16811822
    16821823proc grlift0(M, N, alpha1)
    1683 "PURPOSE: generic random alpha0 : coker(M) -> coker(N) from random alpha1
     1824"USAGE: grlift0(M, N, alpha1) TODO!
     1825PURPOSE: generic random alpha0 : coker(M) -> coker(N) from random alpha1
    16841826NOTE: this proc can work only if some assumptions are fulfilled (due
    16851827to Wolfram)! e.g. at the end of a resolution for the source module...
     
    17331875
    17341876proc grlifting(M,N)
    1735 "USAGE: graded objects M and N
     1877"USAGE: grlifting(M,N), graded objects M and N
    17361878RETURN: map of chain complexes (as a list)
    17371879PURPOSE: construct a map of chain complexes between free resolutions of Img(M) and Img(N).
     
    18231965
    18241966proc mappingcone(M,N)
    1825 "USAGE:M,N graded objects
     1967"USAGE: mappingcone(M,N), M,N graded objects
    18261968RETURN: chain complex (as a list)
    18271969PURPOSE: construct a free resolution of the cokernel of a random map between Img(M), and Img(N).
     
    18852027// correct
    18862028proc grrndmap(def S, def D, list #)
    1887 "USAGE: (S,D), graded objects S and D
     2029"USAGE: grrndmap(S,D), graded objects S and D
    18882030RETURN: graded object
    18892031PURPOSE: construct a random 0-deg graded homomorphism src(S) -> src(D)
     
    19192061
    19202062proc grrndmap2(def D, def S, list #)
    1921 "USAGE: (D,S), graded objects S and D
     2063"USAGE: grrndmap2(D,S), graded objects S and D
    19222064RETURN: graded object
    19232065PURPOSE: construct a random 0-deg graded homomorphism between target of D and S.
     
    19552097//
    19562098proc grlifting2(A,B)
    1957 "USAGE: (A,B), graded objects A and B (matrices defining maps)
     2099"USAGE: grlifting2(A,B), graded objects A and B (matrices defining maps)
    19582100RETURN: map of chain complexes (as a list)
    19592101PURPOSE: construct a map of chain complexes between free resolution of
     
    20282170// G0<-----F0+G1<------F1+G2<-------F2+G3<-----
    20292171proc mappingcone2(A,B)
    2030 "USAGE: (A,B), graded objects A and B (matrices defining maps)
     2172"USAGE: mappingcone2(A,B), graded objects A and B (matrices defining maps)
    20312173RETURN: chain complex (as a list)
    20322174PURPOSE: construct the free resolution of a cokernel of a random map between M=coker(A), and N=coker(B)
     
    21982340//G0<-----F0+G1<------F1+G2<-------F2+G3<-----
    21992341proc mappingcone3(A,B)
    2200 "USAGE: (A,B), graded objects A and B (matrices defining maps)
     2342"USAGE: mappingcone3(A,B), graded objects A and B (matrices defining maps)
    22012343RETURN: chain complex (as a list)
    22022344PURPOSE: construct a free resolution of the cokernel of a random map between M=coker(A), and N=coker(B)
     
    22902432// TODO: Please decide between KeneshlouMatrixPresentation and matrixpres, and replace one with the other!
    22912433proc matrixpres(intvec a)
    2292 "USAGE:  intvec a
     2434"USAGE:  matrixpres(a), intvec a
    22932435RETURN:  graded object
    22942436PURPOSE: matrix presentation for direct sum of omega^a[i](i) in form of a graded object
  • Singular/LIB/grwalk.lib

    r8aa977 r760258  
    255255}
    256256
    257 proc gwalk(ideal Go, list #)
    258 "SYNTAX: gwalk(ideal i);
    259          gwalk(ideal i, intvec v, intvec w);
     257proc gwalk(ideal Go, int reduction,int printout, list #)
     258"SYNTAX: gwalk(ideal i, int reduction, int printout);
     259         gwalk(ideal i, int reduction, int printout, intvec v, intvec w);
    260260TYPE:    ideal
    261261PURPOSE: compute the standard basis of the ideal, calculated via
     
    274274   string ord_str =   OSCTW[2];
    275275   intvec curr_weight   =   OSCTW[3]; /* original weight vector */
    276    intvec target_weight =   OSCTW[4]; /* terget weight vector */
     276   intvec target_weight =   OSCTW[4]; /* target weight vector */
    277277   kill OSCTW;
    278278   option(redSB);
     
    284284   //print("//** help ring = " + string(basering));
    285285   ideal G = fetch(xR, Go);
    286    G = system("Mwalk", G, curr_weight, target_weight,basering);
     286   G = system("Mwalk", G, curr_weight, target_weight,basering,reduction,printout);
    287287
    288288   setring xR;
     
    299299  //** compute a Groebner basis of I w.r.t. lp.
    300300  ring r = 32003,(z,y,x), lp;
    301   ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z;
    302   gwalk(I);
     301  ideal I = zy2+yx2+yx+3,
     302            z3x+y3+zyx-yx2-yx-3,
     303            z2yx3-y5+z2yx2+y3x2+y2x3+y3x+y2x2+3z2x+3y2+3yx,
     304            zyx5+y6-y4x2-y3x3+2zyx4-y4x-y3x2+zyx3-3z2yx+3zx3-3y3-3y2x+3zx2,
     305            yx7-y7+y5x2+y4x3+3yx6+y5x+y4x2+3yx5-6zyx3+yx4+3x5+3y4+3y3x-6zyx2+6x4+3x3-9zx;
     306  gwalk(I,0,1);
    303307}
    304308
     
    346350}
    347351
    348 proc fwalk(ideal Go, list #)
    349 "SYNTAX: fwalk(ideal i);
    350          fwalk(ideal i, intvec v, intvec w);
     352proc fwalk(ideal Go, int reduction, int printout, list #)
     353"SYNTAX: fwalk(ideal i,int reductioin);
     354         fwalk(ideal i, int reduction intvec v, intvec w);
    351355TYPE:    ideal
    352356PURPOSE: compute the standard basis of the ideal w.r.t. the
     
    372376
    373377   ideal G = fetch(xR, Go);
    374    G = system("Mfwalk", G, curr_weight, target_weight);
     378   G = system("Mfwalk", G, curr_weight, target_weight, reduction, printout);
    375379
    376380   setring xR;
     
    387391    ring r = 32003,(z,y,x), lp;
    388392    ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z;
    389     fwalk(I);
     393    int reduction = 1;
     394    int printout = 1;
     395    fwalk(I,reduction,printout);
    390396}
    391397
     
    437443}
    438444
    439 proc pwalk(ideal Go, int n1, int n2, list #)
    440 "SYNTAX: pwalk(int d, ideal i, int n1, int n2);
    441          pwalk(int d, ideal i, int n1, int n2, intvec v, intvec w);
     445proc pwalk(ideal Go, int n1, int n2, int reduction, int printout, list #)
     446"SYNTAX: pwalk(int d, ideal i, int n1, int n2, int reduction, int printout);
     447         pwalk(int d, ideal i, int n1, int n2, int reduction, int printout, intvec v, intvec w);
    442448TYPE:    ideal
    443449PURPOSE: compute the standard basis of the ideal, calculated via
     
    477483  ideal G = fetch(xR, Go);
    478484
    479   G = system("Mpwalk", G, n1, n2, curr_weight, target_weight,nP);
    480 
     485  G = system("Mpwalk",G,n1,n2,curr_weight,target_weight,nP,reduction,printout);
     486 
    481487  setring xR;
    482   //kill Go;
     488  //kill Go; //unused
    483489
    484490  keepring basering;
     
    492498    ring r = 32003,(z,y,x), lp;
    493499    ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z;
    494     //I = std(I);
    495     //ring rr = 32003,(z,y,x),lp;
    496     //ideal I = fetch(r,I);
    497     pwalk(I,2,2);
     500    int reduction = 1;
     501    int printout = 2;
     502    pwalk(I,2,2,reduction,printout);
    498503}
    499504
  • Singular/LIB/modwalk.lib

    • Property mode changed from 100644 to 100755
    r8aa977 r760258  
    1616
    1717PROCEDURES:
    18 modWalk(ideal,int,int[,int,int,int,int]);        standard basis conversion of I using modular methods (chinese remainder)
     18
     19modWalk(I,#);                   standard basis conversion of I by Groebner Walk using modular methods
     20modrWalk(I,radius,pertdeg,#);   standard basis conversion of I by Random Walk using modular methods
     21modfWalk(I,#);                  standard basis conversion of I by Fractal Walk using modular methods
     22modfrWalk(I,radius,#);          standard basis conversion of I by Random Fractal Walk using modular methods
    1923";
    2024
    21 LIB "poly.lib";
    22 LIB "ring.lib";
    23 LIB "parallel.lib";
    2425LIB "rwalk.lib";
    2526LIB "grwalk.lib";
    26 LIB "modstd.lib";
    27 
    28 
    29 ////////////////////////////////////////////////////////////////////////////////
    30 
    31 static proc modpWalk(def II, int p, int variant, list #)
    32 "USAGE:  modpWalk(I,p,#); I ideal, p integer, variant integer
    33 ASSUME:  If size(#) > 0, then
    34            #[1] is an intvec describing the current weight vector
    35            #[2] is an intvec describing the target weight vector
    36 RETURN:  ideal - a standard basis of I mod p, integer - p
    37 NOTE:    The procedure computes a standard basis of the ideal I modulo p and
    38          fetches the result to the basering.
    39 EXAMPLE: example modpWalk; shows an example
    40 "
    41 {
    42   option(redSB);
    43   int k,nvar@r;
    44   def R0 = basering;
    45   string ordstr_R0 = ordstr(R0);
    46   list rl = ringlist(R0);
    47   int sizerl = size(rl);
    48   int neg = 1 - attrib(R0,"global");
    49   if(typeof(II) == "ideal")
    50   {
    51     ideal I = II;
     27LIB "modular.lib";
     28
     29proc modWalk(ideal I, list #)
     30"USAGE:   modWalk(I, [, v, w]); I ideal, v intvec, w intvec
     31RETURN:   a standard basis of I
     32NOTE:     The procedure computes a standard basis of I (over the rational
     33          numbers) by using modular methods.
     34SEE ALSO: modular
     35EXAMPLE:  example modWalk; shows an example"
     36{
     37    /* read optional parameter */
     38    if (size(#) > 0) {
     39        if (size(#) == 1) {
     40            intvec w = #[1];
     41        }
     42        if (size(#) == 2) {
     43            intvec v = #[1];
     44            intvec w = #[2];
     45        }
     46        if (size(#) > 2 || typeof(#[1]) != "intvec") {
     47            ERROR("wrong optional parameter");
     48        }
     49    }
     50
     51    /* save options */
     52    intvec opt = option(get);
     53    option(redSB);
     54
     55    /* set additional parameters */
     56    int reduction = 1;
     57    int printout = 0;
     58
     59    /* call modular() */
     60    if (size(#) > 0) {
     61        I = modular("gwalk", list(I,reduction,printout,#));
     62    }
     63    else {
     64        I = modular("gwalk", list(I,reduction,printout));
     65    }
     66
     67    /* return the result */
     68    attrib(I, "isSB", 1);
     69    option(set, opt);
     70    return(I);
     71}
     72example
     73{
     74    "EXAMPLE:";
     75    echo = 2;
     76    ring R1 = 0, (x,y,z,t), dp;
     77    ideal I = 3x3+x2+1, 11y5+y3+2, 5z4+z2+4;
     78    I = std(I);
     79    ring R2 = 0, (x,y,z,t), lp;
     80    ideal I = fetch(R1, I);
     81    ideal J = modWalk(I);
     82    J;
     83}
     84
     85proc modrWalk(ideal I, int radius, int pertdeg, list #)
     86"USAGE:   modrWalk(I, radius, pertdeg[, v, w]);
     87          I ideal, radius int, pertdeg int, v intvec, w intvec
     88RETURN:   a standard basis of I
     89NOTE:     The procedure computes a standard basis of I (over the rational
     90          numbers) by using modular methods.
     91SEE ALSO: modular
     92EXAMPLE:  example modrWalk; shows an example"
     93{
     94    /* read optional parameter */
     95    if (size(#) > 0) {
     96        if (size(#) == 1) {
     97            intvec w = #[1];
     98        }
     99        if (size(#) == 2) {
     100            intvec v = #[1];
     101            intvec w = #[2];
     102        }
     103        if (size(#) > 2 || typeof(#[1]) != "intvec") {
     104            ERROR("wrong optional parameter");
     105        }
     106    }
     107
     108    /* save options */
     109    intvec opt = option(get);
     110    option(redSB);
     111
     112    /* set additional parameters */
     113    int reduction = 1;
     114    int printout = 0;
     115
     116    /* call modular() */
     117    if (size(#) > 0) {
     118        I = modular("rwalk", list(I,radius,pertdeg,reduction,printout,#));
     119    }
     120    else {
     121        I = modular("rwalk", list(I,radius,pertdeg,reduction,printout));
     122    }
     123
     124    /* return the result */
     125    attrib(I, "isSB", 1);
     126    option(set, opt);
     127    return(I);
     128}
     129example
     130{
     131    "EXAMPLE:";
     132    echo = 2;
     133    ring R1 = 0, (x,y,z,t), dp;
     134    ideal I = 3x3+x2+1, 11y5+y3+2, 5z4+z2+4;
     135    I = std(I);
     136    ring R2 = 0, (x,y,z,t), lp;
     137    ideal I = fetch(R1, I);
    52138    int radius = 2;
    53     int pert_deg = 2;
    54   }
    55   if(typeof(II) == "list" && typeof(II[1]) == "ideal")
    56   {
    57     ideal I = II[1];
    58     if(size(II) == 2)
    59     {
    60       int radius = II[2];
    61       int pert_deg = 2;
    62     }
    63     if(size(II) == 3)
    64     {
    65       int radius = II[2];
    66       int pert_deg = II[3];
    67     }
    68   }
    69   rl[1] = p;
    70   int h = homog(I);
    71   def @r = ring(rl);
    72   setring @r;
    73   ideal i = fetch(R0,I);
    74   string order;
    75   if(system("nblocks") <= 2)
    76   {
    77     if(find(ordstr_R0, "M") + find(ordstr_R0, "lp") + find(ordstr_R0, "rp") <= 0)
    78     {
    79       order = "simple";
    80     }
    81   }
    82 
    83 //-------------------------  make i homogeneous  -----------------------------
    84   if(!mixedTest() && !h)
    85   {
    86     if(!((find(ordstr_R0, "M") > 0) || (find(ordstr_R0, "a") > 0) || neg))
    87     {
    88       if(!((order == "simple") || (sizerl > 4)))
    89       {
    90         list rl@r = ringlist(@r);
    91         nvar@r = nvars(@r);
    92         intvec w;
    93         for(k = 1; k <= nvar@r; k++)
    94         {
    95           w[k] = deg(var(k));
    96         }
    97         w[nvar@r + 1] = 1;
    98         rl@r[2][nvar@r + 1] = "homvar";
    99         rl@r[3][2][2] = w;
    100         def HomR = ring(rl@r);
    101         setring HomR;
    102         ideal i = imap(@r, i);
    103         i = homog(i, homvar);
    104       }
    105     }
    106   }
    107 
    108 //-------------------------  compute a standard basis mod p  -----------------------------
    109 
    110   if(variant == 1)
    111   {
    112     if(size(#)>0)
    113     {
    114       i = rwalk(i,radius,pert_deg,#);
    115      // rwalk(i,radius,pert_deg,#); std(i);
    116     }
    117     else
    118     {
    119       i = rwalk(i,radius,pert_deg);
    120     }
    121   }
    122   if(variant == 2)
    123   {
    124     if(size(#) == 2)
    125     {
    126       i = gwalk(i,#);
    127     }
    128     else
    129     {
    130       i = gwalk(i);
    131     }
    132   }
    133   if(variant == 3)
    134   {
    135     if(size(#) == 2)
    136     {
    137       i = frandwalk(i,radius,#);
    138     }
    139     else
    140     {
    141       i = frandwalk(i,radius);
    142     }
    143   }
    144   if(variant == 4)
    145   {
    146     if(size(#) == 2)
    147     {
    148       i=fwalk(i,#);
    149     }
    150     else
    151     {
    152       i=fwalk(i);
    153     }
    154   }
    155   if(variant == 5)
    156   {
    157     if(size(#) == 2)
    158     {
    159      i=prwalk(i,radius,pert_deg,pert_deg,#);
    160     }
    161     else
    162     {
    163       i=prwalk(i,radius,pert_deg,pert_deg);
    164     }
    165   }
    166   if(variant == 6)
    167   {
    168     if(size(#) == 2)
    169     {
    170       i=pwalk(i,pert_deg,pert_deg,#);
    171     }
    172     else
    173     {
    174       i=pwalk(i,pert_deg,pert_deg);
    175     }
    176   }
    177 
    178   if(!mixedTest() && !h)
    179   {
    180     if(!((find(ordstr_R0, "M") > 0) || (find(ordstr_R0, "a") > 0) || neg))
    181     {
    182       if(!((order == "simple") || (sizerl > 4)))
    183       {
    184         i = subst(i, homvar, 1);
    185         i = simplify(i, 34);
    186         setring @r;
    187         i = imap(HomR, i);
    188         i = interred(i);
    189         kill HomR;
    190       }
    191     }
    192   }
    193   setring R0;
    194   return(list(fetch(@r,i),p));
    195 }
    196 example
    197 {
    198   "EXAMPLE:"; echo = 2;
    199   option(redSB);
    200 
    201   int p = 181;
    202   intvec a = 2,1,3,4;
    203   intvec b = 1,9,1,1;
    204   ring ra = 0,x(1..4),(a(a),lp);
    205   ideal I = std(cyclic(4));
    206   ring rb = 0,x(1..4),(a(b),lp);
    207   ideal I = imap(ra,I);
    208   modpWalk(I,p,1,a,b);
    209   std(I);
    210 }
    211 
    212 ////////////////////////////////////////////////////////////////////////////////
    213 
    214 proc modWalk(def II, int variant, list #)
    215 "USAGE:  modWalk(II); II ideal or list(ideal,int)
    216 ASSUME:  If variant =
    217 @*       - 1 the Random Walk algorithm with radius II[2] is applied
    218            to II[1] if II = list(ideal, int). It is applied to II with radius 2
    219            if II is an ideal.
    220 @*       - 2, the Groebner Walk algorithm is applied to II[1] or to II, respectively.
    221 @*       - 3, the Fractal Walk algorithm with random element is applied to II[1] or II,
    222            respectively.
    223 @*       - 4, the Fractal Walk algorithm is applied to II[1] or II, respectively.
    224 @*       - 5, the Perturbation Walk algorithm with random element is applied to II[1]
    225            or II, respectively, with radius II[3] and perturbation degree II[2].
    226 @*       - 6, the Perturbation Walk algorithm is applied to II[1] or II, respectively,
    227            with perturbation degree II[3].
    228          If size(#) > 0, then # contains either 1, 2 or 4 integers such that
    229 @*       - #[1] is the number of available processors for the computation,
    230 @*       - #[2] is an optional parameter for the exactness of the computation,
    231                 if #[2] = 1, the procedure computes a standard basis for sure,
    232 @*       - #[3] is the number of primes until the first lifting,
    233 @*       - #[4] is the constant number of primes between two liftings until
    234            the computation stops.
    235 RETURN:  a standard basis of I if no warning appears.
    236 NOTE:    The procedure converts a standard basis of I (over the rational
    237          numbers) from the ordering \"a(v),lp\", "dp\" or \"Dp\" to the ordering
    238          \"(a(w),lp\" or \"a(1,0,...,0),lp\" by using modular methods.
    239          By default the procedure computes a standard basis of I for sure, but
    240          if the optional parameter #[2] = 0, it computes a standard basis of I
    241          with high probability.
    242 EXAMPLE: example modWalk; shows an example
    243 "
    244 {
    245   int TT = timer;
    246   int RT = rtimer;
    247   int i,j,pTest,sizeTest,weighted,n1;
    248   bigint N;
    249 
    250   def R0 = basering;
    251   list rl = ringlist(R0);
    252   if((npars(R0) > 0) || (rl[1] > 0))
    253   {
    254     ERROR("Characteristic of basering should be zero, basering should have no parameters.");
    255   }
    256 
    257   if(typeof(II) == "ideal")
    258   {
    259     ideal I = II;
    260     kill II;
    261     list II;
    262     II[1] = I;
    263     II[2] = 2;
    264     II[3] = 2;
    265   }
    266   else
    267   {
    268     if(typeof(II) == "list" && typeof(II[1]) == "ideal")
    269     {
    270       ideal I = II[1];
    271       if(size(II) == 1)
    272       {
    273         II[2] = 2;
    274         II[3] = 2;
    275       }
    276       if(size(II) == 2)
    277       {
    278         II[3] = 2;
    279       }
    280 
    281     }
    282     else
    283     {
    284       ERROR("Unexpected type of input.");
    285     }
    286   }
    287 
    288 //--------------------  Initialize optional parameters  ------------------------
    289   n1 = system("--cpus");
    290   if(size(#) == 0)
    291   {
    292     int exactness = 1;
    293     int n2 = 10;
    294     int n3 = 10;
    295   }
    296   else
    297   {
    298     if(size(#) == 1)
    299     {
    300       if(typeof(#[1]) == "int")
    301       {
    302         if(#[1] < n1)
    303         {
    304           n1 = #[1];
    305         }
    306         int exactness = 1;
    307         if(n1 >= 10)
    308         {
    309           int n2 = n1 + 1;
    310           int n3 = n1;
    311         }
    312         else
    313         {
    314           int n2 = 10;
    315           int n3 = 10;
    316         }
    317       }
    318       else
    319       {
    320         ERROR("Unexpected type of input.");
    321       }
    322     }
    323     if(size(#) == 2)
    324     {
    325       if(typeof(#[1]) == "int" && typeof(#[2]) == "int")
    326       {
    327         if(#[1] < n1)
    328         {
    329           n1 = #[1];
    330         }
    331         int exactness = #[2];
    332         if(n1 >= 10)
    333         {
    334           int n2 = n1 + 1;
    335           int n3 = n1;
    336         }
    337         else
    338         {
    339           int n2 = 10;
    340           int n3 = 10;
    341         }
    342       }
    343       else
    344       {
    345         if(typeof(#[1]) == "intvec" && typeof(#[2]) == "intvec")
    346         {
    347           intvec curr_weight = #[1];
    348           intvec target_weight = #[2];
    349           weighted = 1;
    350           int n2 = 10;
    351           int n3 = 10;
    352           int exactness = 1;
    353         }
    354         else
    355         {
    356           ERROR("Unexpected type of input.");
    357         }
    358       }
    359     }
    360     if(size(#) == 3)
    361     {
    362       if(typeof(#[1]) == "intvec" && typeof(#[2]) == "intvec" && typeof(#[3]) == "int")
    363       {
    364         intvec curr_weight = #[1];
    365         intvec target_weight = #[2];
    366         weighted = 1;
    367         n1 = #[3];
    368         int n2 = 10;
    369         int n3 = 10;
    370         int exactness = 1;
    371       }
    372       else
    373       {
    374         ERROR("Unexpected type of input.");
    375       }
    376     }
    377     if(size(#) == 4)
    378     {
    379       if(typeof(#[1]) == "intvec" && typeof(#[2]) == "intvec" && typeof(#[3]) == "int"
    380           && typeof(#[4]) == "int")
    381       {
    382         intvec curr_weight = #[1];
    383         intvec target_weight = #[2];
    384         weighted = 1;
    385         if(#[1] < n1)
    386         {
    387           n1 = #[3];
    388         }
    389         int exactness = #[4];
    390         if(n1 >= 10)
    391         {
    392           int n2 = n1 + 1;
    393           int n3 = n1;
    394         }
    395         else
    396         {
    397           int n2 = 10;
    398           int n3 = 10;
    399         }
    400       }
    401       else
    402       {
    403         if(typeof(#[1]) == "int" && typeof(#[2]) == "int" && typeof(#[3]) == "int" && typeof(#[4]) == "int")
    404         {
    405           if(#[1] < n1)
    406           {
    407             n1 = #[1];
    408           }
    409           int exactness = #[2];
    410           if(n1 >= #[3])
    411           {
    412             int n2 = n1 + 1;
    413           }
    414           else
    415           {
    416             int n2 = #[3];
    417           }
    418           if(n1 >= #[4])
    419           {
    420             int n3 = n1;
    421           }
    422           else
    423           {
    424             int n3 = #[4];
    425           }
    426         }
    427         else
    428         {
    429           ERROR("Unexpected type of input.");
    430         }
    431       }
    432     }
    433     if(size(#) == 6)
    434     {
    435       if(typeof(#[1]) == "intvec" && typeof(#[2]) == "intvec" && typeof(#[3]) == "int" && typeof(#[4]) == "int" && typeof(#[5]) == "int" && typeof(#[6]) == "int")
    436       {
    437         intvec curr_weight = #[1];
    438         intvec target_weight = #[2];
    439         weighted = 1;
    440         if(#[3] < n1)
    441         {
    442           n1 = #[3];
    443         }
    444         int exactness = #[4];
    445         if(n1 >= #[5])
    446         {
    447           int n2 = n1 + 1;
    448         }
    449         else
    450         {
    451           int n2 = #[5];
    452         }
    453         if(n1 >= #[6])
    454         {
    455           int n3 = n1;
    456         }
    457         else
    458         {
    459           int n3 = #[6];
    460         }
    461       }
    462       else
    463       {
    464         ERROR("Expected list(intvec,intvec,int,int,int,int) as optional parameter list.");
    465       }
    466     }
    467     if(size(#) == 1 || size(#) == 5 || size(#) > 6)
    468     {
    469       ERROR("Expected 0,2,3,4 or 5 optional arguments.");
    470     }
    471   }
    472   if(printlevel >= 10)
    473   {
    474   "n1 = "+string(n1)+", n2 = "+string(n2)+", n3 = "+string(n3)+", exactness = "+string(exactness);
    475   }
    476 
    477 //-------------------------  Save current options  -----------------------------
    478   intvec opt = option(get);
    479   //option(redSB);
    480 
    481 //--------------------  Initialize the list of primes  -------------------------
    482   int tt = timer;
    483   int rt = rtimer;
    484   int en = 2134567879;
    485   int an = 1000000000;
    486   intvec L = primeList(I,n2);
    487   if(n2 > 4)
    488   {
    489   //  L[5] = prime(random(an,en));
    490   }
    491   if(printlevel >= 10)
    492   {
    493     "CPU-time for primeList: "+string(timer-tt)+" seconds.";
    494     "Real-time for primeList: "+string(rtimer-rt)+" seconds.";
    495   }
    496   int h = homog(I);
    497   list P,T1,T2,LL,Arguments,PP;
    498   ideal J,K,H;
    499 
    500 //-------------------  parallelized Groebner Walk in positive characteristic  --------------------
    501 
    502   if(weighted)
    503   {
    504     for(i=1; i<=size(L); i++)
    505     {
    506       Arguments[i] = list(II,L[i],variant,list(curr_weight,target_weight));
    507     }
    508   }
    509   else
    510   {
    511     for(i=1; i<=size(L); i++)
    512     {
    513       Arguments[i] = list(II,L[i],variant);
    514     }
    515   }
    516   P = parallelWaitAll("modpWalk",Arguments);
    517   for(i=1; i<=size(P); i++)
    518   {
    519     T1[i] = P[i][1];
    520     T2[i] = bigint(P[i][2]);
    521   }
    522 
    523   while(1)
    524   {
    525     LL = deleteUnluckyPrimes(T1,T2,h);
    526     T1 = LL[1];
    527     T2 = LL[2];
    528 //-------------------  Now all leading ideals are the same  --------------------
    529 //-------------------  Lift results to basering via farey  ---------------------
    530 
    531     tt = timer; rt = rtimer;
    532     N = T2[1];
    533     for(i=2; i<=size(T2); i++)
    534     {
    535       N = N*T2[i];
    536     }
    537     H = chinrem(T1,T2);
    538     J = parallelFarey(H,N,n1);
    539     //J=farey(H,N);
    540     if(printlevel >= 10)
    541     {
    542       "CPU-time for lifting-process is "+string(timer - tt)+" seconds.";
    543       "Real-time for lifting-process is "+string(rtimer - rt)+" seconds.";
    544     }
    545 
    546 //----------------  Test if we already have a standard basis of I --------------
    547 
    548     tt = timer; rt = rtimer;
    549     pTest = pTestSB(I,J,L,variant);
    550     //pTest = primeTestSB(I,J,L,variant);
    551     if(printlevel >= 10)
    552     {
    553       "CPU-time for pTest is "+string(timer - tt)+" seconds.";
    554       "Real-time for pTest is "+string(rtimer - rt)+" seconds.";
    555     }
    556     if(pTest)
    557     {
    558       if(printlevel >= 10)
    559       {
    560         "CPU-time for computation without final tests is "+string(timer - TT)+" seconds.";
    561         "Real-time for computation without final tests is "+string(rtimer - RT)+" seconds.";
    562       }
    563       attrib(J,"isSB",1);
    564       if(exactness == 0)
    565       {
    566         option(set, opt);
    567         return(J);
    568       }
    569       else
    570       {
    571         tt = timer;
    572         rt = rtimer;
    573         sizeTest = 1 - isIdealIncluded(I,J,n1);
    574         if(printlevel >= 10)
    575         {
    576           "CPU-time for checking if I subset <G> is "+string(timer - tt)+" seconds.";
    577           "Real-time for checking if I subset <G> is "+string(rtimer - rt)+" seconds.";
    578         }
    579         if(sizeTest == 0)
    580         {
    581           tt = timer;
    582           rt = rtimer;
    583           K = std(J);
    584           if(printlevel >= 10)
    585           {
    586             "CPU-time for last std-computation is "+string(timer - tt)+" seconds.";
    587             "Real-time for last std-computation is "+string(rtimer - rt)+" seconds.";
    588           }
    589           if(size(reduce(K,J)) == 0)
    590           {
    591             option(set, opt);
    592             return(J);
    593           }
    594         }
    595       }
    596     }
    597 //--------------  We do not already have a standard basis of I, therefore do the main computation for more primes  --------------
    598 
    599     T1 = H;
    600     T2 = N;
    601     j = size(L)+1;
    602     tt = timer; rt = rtimer;
    603     L = primeList(I,n3,L,n1);
    604     if(printlevel >= 10)
    605     {
    606       "CPU-time for primeList: "+string(timer-tt)+" seconds.";
    607       "Real-time for primeList: "+string(rtimer-rt)+" seconds.";
    608     }
    609     Arguments = list();
    610     PP = list();
    611     if(weighted)
    612     {
    613       for(i=j; i<=size(L); i++)
    614       {
    615         //Arguments[i-j+1] = list(II,L[i],variant,list(curr_weight,target_weight));
    616         Arguments[size(Arguments)+1] = list(II,L[i],variant,list(curr_weight,target_weight));
    617       }
    618     }
    619     else
    620     {
    621       for(i=j; i<=size(L); i++)
    622       {
    623         //Arguments[i-j+1] = list(II,L[i],variant);
    624         Arguments[size(Arguments)+1] = list(II,L[i],variant);
    625       }
    626     }
    627     PP = parallelWaitAll("modpWalk",Arguments);
    628     if(printlevel >= 10)
    629     {
    630       "parallel modpWalk";
    631     }
    632     for(i=1; i<=size(PP); i++)
    633     {
    634       //P[size(P) + 1] = PP[i];
    635       T1[size(T1) + 1] = PP[i][1];
    636       T2[size(T2) + 1] = bigint(PP[i][2]);
    637     }
    638   }
    639   if(printlevel >= 10)
    640   {
    641     "CPU-time for computation with final tests is "+string(timer - TT)+" seconds.";
    642     "Real-time for computation with final tests is "+string(rtimer - RT)+" seconds.";
    643   }
    644 }
    645 
    646 example
    647 {
    648   "EXAMPLE:";
    649   echo = 2;
    650   ring R=0,(x,y,z),lp;
    651   ideal I=-x+y2z-z,xz+1,x2+y2-1;
    652   // I is a standard basis in dp
    653   ideal J = modWalk(I,1);
    654   J;
    655 }
    656 
    657 ////////////////////////////////////////////////////////////////////////////////
    658 static proc isIdealIncluded(ideal I, ideal J, int n1)
    659 "USAGE:  isIdealIncluded(I,J,int n1); I ideal, J ideal, n1 integer
    660 "
    661 {
    662   if(n1 > 1)
    663   {
    664     int k;
    665     list args,results;
    666     for(k=1; k<=size(I); k++)
    667     {
    668       args[k] = list(ideal(I[k]),J,1);
    669     }
    670     results = parallelWaitAll("reduce",args);
    671     for(k=1; k<=size(results); k++)
    672     {
    673       if(results[k] == 0)
    674       {
    675         return(1);
    676       }
    677     }
    678     return(0);
    679   }
    680   else
    681   {
    682     if(reduce(I,J,1) == 0)
    683     {
    684       return(1);
    685     }
    686     else
    687     {
    688       return(0);
    689     }
    690   }
    691 }
    692 
    693 ////////////////////////////////////////////////////////////////////////////////
    694 static proc parallelChinrem(list T1, list T2, int n1)
    695 "USAGE:  parallelChinrem(T1,T2); T1 list of ideals, T2 list of primes, n1 integer"
    696 {
    697   int i,j,k;
    698 
    699   ideal H,J;
    700 
    701   list arguments_chinrem,results_chinrem;
    702   for(i=1; i<=size(T1); i++)
    703   {
    704     J = ideal(T1[i]);
    705     attrib(J,"isSB",1);
    706     arguments_chinrem[size(arguments_chinrem)+1] = list(list(J),T2);
    707   }
    708   results_chinrem = parallelWaitAll("chinrem",arguments_chinrem);
    709     for(j=1; j <= size(results_chinrem); j++)
    710     {
    711       J = results_chinrem[j];
    712       attrib(J,"isSB",1);
    713       if(isIdealIncluded(J,H,n1) == 0)
    714       {
    715         if(H == 0)
    716         {
    717           H = J;
    718         }
    719         else
    720         {
    721           H = H,J;
    722         }
    723       }
    724     }
    725   return(H);
    726 }
    727 
    728 ////////////////////////////////////////////////////////////////////////////////
    729 static proc parallelFarey(ideal H, bigint N, int n1)
    730 "USAGE:  parallelFarey(H,N,n1); H ideal, N bigint, n1 integer
    731 "
    732 {
    733   int i,j;
    734   int ii = 1;
    735   list arguments_farey,results_farey;
    736   for(i=1; i<=size(H); i++)
    737   {
    738     for(j=1; j<=size(H[i]); j++)
    739     {
    740       arguments_farey[size(arguments_farey)+1] = list(H[i][j],N);
    741     }
    742   }
    743   results_farey = parallelWaitAll("farey",arguments_farey);
    744   ideal J,K;
    745   poly f_farey;
    746   while(ii<=size(results_farey))
    747   {
    748     for(i=1; i<=size(H); i++)
    749     {
    750       f_farey = 0;
    751       for(j=1; j<=size(H[i]); j++)
    752       {
    753         f_farey = f_farey + results_farey[ii][1];
    754         ii++;
    755       }
    756       K = ideal(f_farey);
    757       attrib(K,"isSB",1);
    758       attrib(J,"isSB",1);
    759       if(isIdealIncluded(K,J,n1) == 0)
    760       {
    761         if(J == 0)
    762         {
    763           J = K;
    764         }
    765         else
    766         {
    767           J = J,K;
    768         }
    769       }
    770     }
    771   }
    772   return(J);
    773 }
    774 //////////////////////////////////////////////////////////////////////////////////
    775 static proc primeTestSB(def II, ideal J, list L, int variant, list #)
    776 "USAGE:  primeTestSB(I,J,L,variant,#); I,J ideals, L intvec of primes, variant int
    777 RETURN:  1 (resp. 0) if for a randomly chosen prime p that is not in L
    778          J mod p is (resp. is not) a standard basis of I mod p
    779 EXAMPLE: example primeTestSB; shows an example
    780 "
    781 {
    782 if(typeof(II) == "ideal")
    783   {
    784   ideal I = II;
    785   int radius = 2;
    786   }
    787 if(typeof(II) == "list")
    788   {
    789   ideal I = II[1];
    790   int radius = II[2];
    791   }
    792 
    793 int i,j,k,p;
    794 def R = basering;
    795 list r = ringlist(R);
    796 
    797 while(!j)
    798   {
    799   j = 1;
    800   p = prime(random(1000000000,2134567879));
    801   for(i = 1; i <= size(L); i++)
    802     {
    803     if(p == L[i])
    804       {
    805       j = 0;
    806       break;
    807       }
    808     }
    809   if(j)
    810     {
    811     for(i = 1; i <= ncols(I); i++)
    812       {
    813       for(k = 2; k <= size(I[i]); k++)
    814         {
    815         if((denominator(leadcoef(I[i][k])) mod p) == 0)
    816           {
    817           j = 0;
    818           break;
    819           }
    820         }
    821       if(!j)
    822         {
    823         break;
    824         }
    825       }
    826     }
    827   if(j)
    828     {
    829     if(!primeTest(I,p))
    830       {
    831       j = 0;
    832       }
    833     }
    834   }
    835 r[1] = p;
    836 def @R = ring(r);
    837 setring @R;
    838 ideal I = imap(R,I);
    839 ideal J = imap(R,J);
    840 attrib(J,"isSB",1);
    841 
    842 int t = timer;
    843 j = 1;
    844 if(isIncluded(I,J) == 0)
    845   {
    846   j = 0;
    847   }
    848 if(printlevel >= 11)
    849   {
    850   "isIncluded(I,J) takes "+string(timer - t)+" seconds";
    851   "j = "+string(j);
    852   }
    853 t = timer;
    854 if(j)
    855   {
    856   if(size(#) > 0)
    857     {
    858     ideal K = modpWalk(I,p,variant,#)[1];
    859     }
    860   else
    861     {
    862     ideal K = modpWalk(I,p,variant)[1];
    863     }
    864   t = timer;
    865   if(isIncluded(J,K) == 0)
    866     {
    867     j = 0;
    868     }
    869   if(printlevel >= 11)
    870     {
    871     "isIncluded(K,J) takes "+string(timer - t)+" seconds";
    872     "j = "+string(j);
    873     }
    874   }
    875 setring R;
    876 
    877 return(j);
    878 }
    879 example
    880 { "EXAMPLE:"; echo = 2;
    881    intvec L = 2,3,5;
    882    ring r = 0,(x,y,z),lp;
    883    ideal I = x+1,x+y+1;
    884    ideal J = x+1,y;
    885    primeTestSB(I,I,L,1);
    886    primeTestSB(I,J,L,1);
    887 }
    888 
    889 ////////////////////////////////////////////////////////////////////////////////
    890 static proc pTestSB(ideal I, ideal J, list L, int variant, list #)
    891 "USAGE:  pTestSB(I,J,L,variant,#); I,J ideals, L intvec of primes, variant int
    892 RETURN:  1 (resp. 0) if for a randomly chosen prime p that is not in L
    893          J mod p is (resp. is not) a standard basis of I mod p
    894 EXAMPLE: example pTestSB; shows an example
    895 "
    896 {
    897    int i,j,k,p;
    898    def R = basering;
    899    list r = ringlist(R);
    900 
    901    while(!j)
    902    {
    903       j = 1;
    904       p = prime(random(1000000000,2134567879));
    905       for(i = 1; i <= size(L); i++)
    906       {
    907          if(p == L[i]) { j = 0; break; }
    908       }
    909       if(j)
    910       {
    911          for(i = 1; i <= ncols(I); i++)
    912          {
    913             for(k = 2; k <= size(I[i]); k++)
    914             {
    915                if((denominator(leadcoef(I[i][k])) mod p) == 0) { j = 0; break; }
    916             }
    917             if(!j){ break; }
    918          }
    919       }
    920       if(j)
    921       {
    922          if(!primeTest(I,p)) { j = 0; }
    923       }
    924    }
    925    r[1] = p;
    926    def @R = ring(r);
    927    setring @R;
    928    ideal I = imap(R,I);
    929    ideal J = imap(R,J);
    930    attrib(J,"isSB",1);
    931 
    932    int t = timer;
    933    j = 1;
    934    if(isIncluded(I,J) == 0) { j = 0; }
    935 
    936    if(printlevel >= 11)
    937    {
    938       "isIncluded(I,J) takes "+string(timer - t)+" seconds";
    939       "j = "+string(j);
    940    }
    941 
    942    t = timer;
    943    if(j)
    944    {
    945       if(size(#) > 0)
    946       {
    947          ideal K = modpStd(I,p,variant,#[1])[1];
    948       }
    949       else
    950       {
    951          ideal K = groebner(I);
    952       }
    953       t = timer;
    954       if(isIncluded(J,K) == 0) { j = 0; }
    955 
    956       if(printlevel >= 11)
    957       {
    958          "isIncluded(J,K) takes "+string(timer - t)+" seconds";
    959          "j = "+string(j);
    960       }
    961    }
    962    setring R;
    963    return(j);
    964 }
    965 example
    966 { "EXAMPLE:"; echo = 2;
    967    intvec L = 2,3,5;
    968    ring r = 0,(x,y,z),dp;
    969    ideal I = x+1,x+y+1;
    970    ideal J = x+1,y;
    971    pTestSB(I,I,L,2);
    972    pTestSB(I,J,L,2);
    973 }
    974 ////////////////////////////////////////////////////////////////////////////////
    975 static proc mixedTest()
    976 "USAGE:  mixedTest();
    977 RETURN:  1 if ordering of basering is mixed, 0 else
    978 EXAMPLE: example mixedTest(); shows an example
    979 "
    980 {
    981    int i,p,m;
    982    for(i = 1; i <= nvars(basering); i++)
    983    {
    984       if(var(i) > 1)
    985       {
    986          p++;
    987       }
    988       else
    989       {
    990          m++;
    991       }
    992    }
    993    if((p > 0) && (m > 0)) { return(1); }
    994    return(0);
    995 }
    996 example
    997 { "EXAMPLE:"; echo = 2;
    998    ring R1 = 0,(x,y,z),dp;
    999    mixedTest();
    1000    ring R2 = 31,(x(1..4),y(1..3)),(ds(4),lp(3));
    1001    mixedTest();
    1002    ring R3 = 181,x(1..9),(dp(5),lp(4));
    1003    mixedTest();
    1004 }
     139    int pertdeg = 3;
     140    ideal J = modrWalk(I,radius,pertdeg);
     141    J;
     142}
     143
     144proc modfWalk(ideal I, list #)
     145"USAGE:   modfWalk(I, [, v, w]); I ideal, v intvec, w intvec
     146RETURN:   a standard basis of I
     147NOTE:     The procedure computes a standard basis of I (over the rational
     148          numbers) by using modular methods.
     149SEE ALSO: modular
     150EXAMPLE:  example modfWalk; shows an example"
     151{
     152    /* read optional parameter */
     153    if (size(#) > 0) {
     154        if (size(#) == 1) {
     155            intvec w = #[1];
     156        }
     157        if (size(#) == 2) {
     158            intvec v = #[1];
     159            intvec w = #[2];
     160        }
     161        if (size(#) > 2 || typeof(#[1]) != "intvec") {
     162            ERROR("wrong optional parameter");
     163        }
     164    }
     165
     166    /* save options */
     167    intvec opt = option(get);
     168    option(redSB);
     169
     170    /* set additional parameters */
     171    int reduction = 1;
     172    int printout = 0;
     173
     174    /* call modular() */
     175    if (size(#) > 0) {
     176        I = modular("fwalk", list(I,reduction,printout,#));
     177    }
     178    else {
     179        I = modular("fwalk", list(I,reduction,printout));
     180    }
     181
     182    /* return the result */
     183    attrib(I, "isSB", 1);
     184    option(set, opt);
     185    return(I);
     186}
     187example
     188{
     189    "EXAMPLE:";
     190    echo = 2;
     191    ring R1 = 0, (x,y,z,t), dp;
     192    ideal I = 3x3+x2+1, 11y5+y3+2, 5z4+z2+4;
     193    I = std(I);
     194    ring R2 = 0, (x,y,z,t), lp;
     195    ideal I = fetch(R1, I);
     196    ideal J = modfWalk(I);
     197    J;
     198}
     199
     200proc modfrWalk(ideal I, int radius, list #)
     201"USAGE:   modfrWalk(I, radius [, v, w]); I ideal, radius int, v intvec, w intvec
     202RETURN:   a standard basis of I
     203NOTE:     The procedure computes a standard basis of I (over the rational
     204          numbers) by using modular methods.
     205SEE ALSO: modular
     206EXAMPLE:  example modfrWalk; shows an example"
     207{
     208    /* read optional parameter */
     209    if (size(#) > 0) {
     210        if (size(#) == 1) {
     211            intvec w = #[1];
     212        }
     213        if (size(#) == 2) {
     214            intvec v = #[1];
     215            intvec w = #[2];
     216        }
     217        if (size(#) > 2 || typeof(#[1]) != "intvec") {
     218            ERROR("wrong optional parameter");
     219        }
     220    }
     221
     222    /* save options */
     223    intvec opt = option(get);
     224    option(redSB);
     225
     226    /* set additional parameters */
     227    int reduction = 1;
     228    int printout = 0;
     229
     230    /* call modular() */
     231    if (size(#) > 0) {
     232        I = modular("frandwalk", list(I,radius,reduction,printout,#));
     233    }
     234    else {
     235        I = modular("frandwalk", list(I,radius,reduction,printout));
     236    }
     237
     238    /* return the result */
     239    attrib(I, "isSB", 1);
     240    option(set, opt);
     241    return(I);
     242}
     243example
     244{
     245    "EXAMPLE:";
     246    echo = 2;
     247    ring R1 = 0, (x,y,z,t), dp;
     248    ideal I = 3x3+x2+1, 11y5+y3+2, 5z4+z2+4;
     249    I = std(I);
     250    ring R2 = 0, (x,y,z,t), lp;
     251    ideal I = fetch(R1, I);
     252    int radius = 2;
     253    ideal J = modfrWalk(I,radius);
     254    J;
     255}
  • Singular/LIB/rwalk.lib

    • Property mode changed from 100644 to 100755
    r8aa977 r760258  
    1010rwalk(ideal,int,int[,intvec,intvec]);   standard basis of ideal via Random Walk algorithm
    1111rwalk(ideal,int[,intvec,intvec]);       standard basis of ideal via Random Perturbation Walk algorithm
    12 frwalk(ideal,int[,intvec,intvec]);      standard basis of ideal via Random Fractal Walk algorithm
     12frandwalk(ideal,int[,intvec,intvec]);      standard basis of ideal via Random Fractal Walk algorithm
    1313";
    1414
     
    141141 * Random Walk  *
    142142 ****************/
    143 proc rwalk(ideal Go, int radius, int pert_deg, list #)
     143proc rwalk(ideal Go, int radius, int pert_deg, int reduction, int printout, list #)
    144144"SYNTAX: rwalk(ideal i, int radius);
    145145         if size(#)>0 then rwalk(ideal i, int radius, intvec v, intvec w);
     146         intermediate Groebner bases are not reduced if reduction = 0
    146147TYPE:    ideal
    147148PURPOSE: compute the standard basis of the ideal, calculated via
     
    178179
    179180ideal G = fetch(xR, Go);
    180 G = system("Mrwalk", G, curr_weight, target_weight, radius, pert_deg, basering);
     181G = system("Mrwalk", G, curr_weight, target_weight, radius, pert_deg, reduction, printout);
    181182
    182183setring xR;
     
    196197  int radius = 1;
    197198  int perturb_deg = 2;
    198   rwalk(I,radius,perturb_deg);
     199  int reduction = 0;
     200  int printout = 1;
     201  rwalk(I,radius,perturb_deg,reduction,printout);
    199202}
    200203
     
    202205 * Perturbation Walk with random element *
    203206 *****************************************/
    204 proc prwalk(ideal Go, int radius, int o_pert_deg, int t_pert_deg, list #)
     207proc prwalk(ideal Go, int radius, int o_pert_deg, int t_pert_deg, int reduction, int printout, list #)
    205208"SYNTAX: rwalk(ideal i, int radius);
    206209         if size(#)>0 then rwalk(ideal i, int radius, intvec v, intvec w);
     
    227230  OSCTW= OrderStringalp_NP("al", #);
    228231  }
     232int nP = OSCTW[1];
    229233string ord_str = OSCTW[2];
    230234intvec curr_weight = OSCTW[3]; // original weight vector
     
    238242
    239243ideal G = fetch(xR, Go);
    240 G = system("Mprwalk", G, curr_weight, target_weight, radius, o_pert_deg, t_pert_deg, basering);
     244G = system("Mprwalk", G, curr_weight, target_weight, radius, o_pert_deg, t_pert_deg,
     245           nP, reduction, printout);
    241246
    242247setring xR;
     
    257262  int o_perturb_deg = 2;
    258263  int t_perturb_deg = 2;
    259   prwalk(I,radius,o_perturb_deg,t_perturb_deg);
     264  int reduction = 0;
     265  int printout = 2;
     266  prwalk(I,radius,o_perturb_deg,t_perturb_deg,reduction,printout);
    260267}
    261268
     
    263270 * Fractal Walk with random element *
    264271 ************************************/
    265 proc frandwalk(ideal Go, int radius, list #)
    266 "SYNTAX: frwalk(ideal i, int radius);
    267          frwalk(ideal i, int radius, intvec v, intvec w);
     272proc frandwalk(ideal Go, int radius, int reduction, int printout, list #)
     273"SYNTAX: frwalk(ideal i, int radius, int reduction, int printout);
     274         frwalk(ideal i, int radius, int reduction, int printout, intvec v, intvec w);
    268275TYPE:    ideal
    269276PURPOSE: compute the standard basis of the ideal, calculated via
     
    299306   ideal G = fetch(xR, Go);
    300307   int pert_deg = 2;
    301    G = system("Mfrwalk", G, curr_weight, target_weight, radius);
     308
     309   G = system("Mfrwalk", G, curr_weight, target_weight, radius, reduction, printout);
    302310
    303311   setring xR;
     
    314322    ring r = 0,(z,y,x), lp;
    315323    ideal I = y3+xyz+y2z+xz3, 3+xy+x2y+y2z;
    316     frandwalk(I,2);
    317 }
     324    int reduction = 0;
     325    frandwalk(I,2,0,1);
     326}
  • Singular/LIB/standard.lib

    r2675bd r760258  
    804804"SYNTAX: @code{groebner (} ideal_expression @code{)} @*
    805805         @code{groebner (} module_expression @code{)} @*
    806          @code{groebner (} ideal_expression@code{,} int_expression @code{)} @*
    807          @code{groebner (} module_expression@code{,} int_expression @code{)} @*
    808806         @code{groebner (} ideal_expression@code{,} list of string_expressions
    809807               @code{)} @*
    810808         @code{groebner (} ideal_expression@code{,} list of string_expressions
    811                and int_expression @code{)} @*
    812          @code{groebner (} ideal_expression@code{,} int_expression @code{)}
     809               and int_expression @code{)}
    813810TYPE:    type of the first argument
    814811PURPOSE: computes a standard basis of the first argument @code{I}
     
    829826         afterwards back).
    830827         @code{option(prot)} informs about the chosen method.
    831 NOTE:    If an additional argument, say @code{wait}, of type int is given,
    832          then the computation runs for at most @code{wait} seconds.
    833          That is, if no result could be computed in @code{wait} seconds,
    834          then the computation is interrupted, 0 is returned, a warning
    835          message is displayed, and the global variable
    836          @code{Standard::groebner_error} is defined.
    837          This feature uses MP and hence it is available on UNIX platforms, only.
    838828HINT:    Since there exists no uniform best method for computing standard
    839829         bases, and since the difference in performance of a method on
     
    843833         parameters/variables by integers, etc.). @*
    844834SEE ALSO: stdhilb, stdfglm, std, slimgb
    845 KEYWORDS: time limit on computations; MP, groebner basis computations
     835KEYWORDS: groebner basis computations
    846836EXAMPLE: example groebner;  shows an example"
    847837
     
    904894  for (k=1; k<=size(#); k++)
    905895  {
    906      if (typeof(#[k]) == "int")
    907      {
    908        int wait = #[k];
    909      }
    910896     if (typeof(#[k]) == "string")
    911897     {
     
    914900     }
    915901  }
    916 
    917  //======= we have an argument of type int -- try to use MPfork links =======
    918   if ( defined(wait) == voice )
    919   {
    920     if ( system("with", "MP") )
    921     {
    922         int j = 10;
    923         string bs = nameof(basering);
    924         link l_fork = "MPtcp:fork";
    925         open(l_fork);
    926         write(l_fork, quote(system("pid")));
    927         int pid = read(l_fork);
    928 //        write(l_fork, quote(groebner(eval(i))));
    929         write(l_fork, quote(groebner(eval(i),eval(Method))));
    930 //###Fehlermeldung:
    931 // ***dError: undef. ringorder used
    932 // occured at:
    933 
    934         // sleep in small intervalls for appr. one second
    935         if (wait > 0)
    936         {
    937           while(j < 1000000)
    938           {
    939             if (status(l_fork, "read", "ready", j)) {break;}
    940             j = j + j;
    941           }
    942         }
    943 
    944         // sleep in intervalls of one second from now on
    945         j = 1;
    946         while (j < wait)
    947         {
    948           if (status(l_fork, "read", "ready", 1000000)) {break;}
    949           j = j + 1;
    950         }
    951 
    952         if (status(l_fork, "read", "ready"))
    953         {
    954           def result = read(l_fork);
    955           if (bs != nameof(basering))
    956           {
    957             def PP = basering;
    958             setring P;
    959             def result = imap(PP, result);
    960             kill PP;
    961           }
    962           if (defined(groebner_error)==1)
    963           {
    964             kill groebner_error;
    965           }
    966           kill l_fork;
    967         }
    968         else
    969         {
    970           ideal result;
    971           if (! defined(groebner_error))
    972           {
    973             int groebner_error = 1;
    974             export groebner_error;
    975           }
    976           "** groebner did not finish";
    977           j = system("sh", "kill " + string(pid));
    978         }
    979         return (result);
    980     }
    981     else
    982     {
    983       "** groebner with a time limit on computation is not supported
    984           in this configuration";
    985     }
    986   }
    987 
    988  //=========== we are still here -- do the actual computation =============
    989902
    990903//--------------------- save data from basering ---------------------------
     
    1065978  if( find(method,"hilb") && !find(method,"fglm") )
    1066979  {
    1067      conversion = "hilb"; // $Id$
     980     conversion = "hilb";
    1068981  }
    1069982  if( find(method,"fglm") && !find(method,"hilb") )
    1070983  {
    1071     conversion = "fglm"; // $Id$
     984    conversion = "fglm";
    1072985  }
    1073986  if( find(method,"fglm") && find(method,"hilb") )
    1074987  {
    1075     conversion = "hilborfglm"; // $Id$
     988    conversion = "hilborfglm";
    1076989  }
    1077990  if( !find(method,"fglm") && !find(method,"hilb") )
    1078991  {
    1079     conversion = "no"; // $Id$
     992    conversion = "no";
    1080993  }
    1081994
     
    25322445static proc mod_init()
    25332446{
     2447  if(!defined(Singmathic))
     2448  {
     2449    load("singmathic.so","try");
     2450  }
    25342451  //int pagelength=24;
    25352452  //exportto(Top,pagelength);
  • Singular/LIB/swalk.lib

    • Property mode changed from 100644 to 100755
  • Singular/dyn_modules/Order/nforder_elt.cc

    r2675bd r760258  
    2020  return ((nforder *)r->data)->String();
    2121}
    22 static void EltWrite(number &a, const coeffs r)
     22static void EltWrite(number a, const coeffs r)
    2323{
    2424  bigintmat * b = (bigintmat*)a;
  • Singular/dyn_modules/singmathic/Makefile.am

    r2675bd r760258  
    2020singmathic_la_SOURCES  = singmathic.cc
    2121singmathic_la_CPPFLAGS = ${MYINCLUDES} ${P_PROCS_CPPFLAGS_COMMON}
    22 singmathic_la_LDFLAGS  = ${P_PROCS_MODULE_LDFLAGS}
     22singmathic_la_LDFLAGS  = ${P_PROCS_MODULE_LDFLAGS} ${MATHIC_LIBS}
    2323
    2424# AM_COLOR_TESTS=always
  • Singular/dyn_modules/syzextra/mod_main.cc

    r2675bd r760258  
    6767BEGIN_NAMESPACE_NONAME
    6868
     69// returns TRUE, if idRankFreeModule(m) > 0 ???
     70/// test whether this input has vectors among entries or no enties
     71/// result must be FALSE for only 0-entries
     72static BOOLEAN id_IsModule(ideal id, ring r)
     73{
     74  id_Test(id, r);
     75
     76  if( id->rank != 1 ) return TRUE;
     77
     78  if (rRing_has_Comp(r))
     79  {
     80    const int l = IDELEMS(id);
     81
     82    for (int j=0; j<l; j++)
     83      if (id->m[j] != NULL && p_GetComp(id->m[j], r) > 0)
     84        return TRUE;   
     85
     86    return FALSE; // rank: 1, only zero or no entries? can be an ideal OR module... BUT in the use-case should better be an ideal!
     87  }
     88
     89  return FALSE;
     90}
     91
     92
     93   
    6994
    7095static inline void NoReturn(leftv& res)
     
    15251550  const int iLimit = r->typ[pos].data.is.limit;
    15261551  const ideal F = r->typ[pos].data.is.F;
     1552 
    15271553  ideal FF = id_Copy(F, r);
    1528 
    1529 
    15301554
    15311555  lists l=(lists)omAllocBin(slists_bin);
     
    15381562  //        l->m[1].rtyp = MODUL_CMD;
    15391563
    1540   if( idIsModule(FF, r) )
     1564  if( id_IsModule(FF, r) ) // ???
    15411565  {
    15421566    l->m[1].rtyp = MODUL_CMD;
     
    18241848  {
    18251849    iComp = (int)((long)(h->Data()));
    1826   } else
     1850  }
     1851  else
    18271852  {
    18281853      if( (!isSyz) && (-1 == posIS) )
  • Singular/extra.cc

    r2675bd r760258  
    6565#include <polys/weight.h>
    6666
    67 
     67#include <coeffs/bigintmat.h>
    6868#include <kernel/fast_mult.h>
    6969#include <kernel/digitech.h>
     
    37723772    }
    37733773    else
     3774/*==================== LU for bigintmat =================*/
     3775#ifdef SINGULAR_4_1
     3776    if(strcmp(sys_cmd,"LU")==0)
     3777    {
     3778      if ((h!=NULL) && (h->Typ()==CMATRIX_CMD))
     3779      {
     3780        // get the argument:
     3781        bigintmat *b=(bigintmat *)h->Data();
     3782        // just for tests: simply transpose
     3783        bigintmat *bb=b->transpose();
     3784        // return the result:
     3785        res->rtyp=CMATRIX_CMD;
     3786        res->data=(char*)bb;
     3787        return FALSE;
     3788      }
     3789      else
     3790      {
     3791        WerrorS("system(\"LU\",<cmatrix>) expected");
     3792        return TRUE;
     3793      }
     3794    }
     3795    else
     3796#endif   
    37743797/*==================== Error =================*/
    37753798      Werror( "(extended) system(\"%s\",...) %s", sys_cmd, feNotImplemented );
  • Singular/grammar.cc

    r2675bd r760258  
    239239
    240240/* Line 189 of yacc.c  */
    241 #line 243 "grammar.cc"
     241#line 242 "grammar.cc"
    242242
    243243/* Enabling traces.  */
     
    412412
    413413/* Line 264 of yacc.c  */
    414 #line 416 "grammar.cc"
     414#line 415 "grammar.cc"
    415415
    416416#ifdef short
     
    792792static const yytype_uint16 yyrline[] =
    793793{
    794        0,   364,   364,   366,   400,   401,   403,   405,   409,   414,
    795      416,   467,   468,   469,   470,   471,   472,   473,   474,   478,
    796      481,   482,   483,   484,   485,   486,   487,   488,   489,   492,
    797      499,   504,   508,   512,   516,   520,   533,   561,   585,   591,
    798      597,   601,   605,   609,   613,   617,   621,   625,   629,   633,
    799      637,   641,   645,   649,   653,   657,   661,   665,   669,   673,
    800      677,   683,   687,   691,   695,   699,   706,   717,   723,   728,
    801      729,   730,   734,   738,   742,   746,   750,   754,   758,   762,
    802      766,   783,   790,   789,   807,   815,   823,   832,   836,   840,
    803      844,   848,   852,   856,   860,   864,   868,   872,   876,   880,
    804      892,   899,   900,   919,   920,   932,   937,   942,   946,   950,
    805      990,  1016,  1037,  1045,  1049,  1050,  1064,  1072,  1081,  1126,
    806     1127,  1136,  1137,  1143,  1150,  1152,  1154,  1164,  1163,  1171,
    807     1176,  1183,  1191,  1203,  1219,  1238,  1242,  1246,  1251,  1255,
    808     1259,  1263,  1267,  1272,  1278,  1284,  1290,  1296,  1302,  1308,
    809     1320,  1327,  1331,  1368,  1375,  1383,  1389,  1389,  1392,  1464,
    810     1468,  1497,  1510,  1527,  1536,  1541,  1549,  1561,  1580,  1590,
    811     1609,  1632,  1638,  1650,  1656
     794       0,   363,   363,   365,   399,   400,   402,   404,   408,   413,
     795     415,   466,   467,   468,   469,   470,   471,   472,   473,   477,
     796     480,   481,   482,   483,   484,   485,   486,   487,   488,   491,
     797     498,   503,   507,   511,   515,   519,   532,   560,   584,   590,
     798     596,   600,   604,   608,   612,   616,   620,   624,   628,   632,
     799     636,   640,   644,   648,   652,   656,   660,   664,   668,   672,
     800     676,   682,   686,   690,   694,   698,   705,   716,   722,   727,
     801     728,   729,   733,   737,   741,   745,   749,   753,   757,   761,
     802     765,   782,   789,   788,   806,   814,   822,   831,   835,   839,
     803     843,   847,   851,   855,   859,   863,   867,   871,   875,   879,
     804     891,   898,   899,   918,   919,   931,   936,   941,   945,   949,
     805     985,  1011,  1032,  1040,  1044,  1045,  1059,  1067,  1076,  1121,
     806    1122,  1131,  1132,  1138,  1145,  1147,  1149,  1159,  1158,  1166,
     807    1171,  1178,  1186,  1198,  1214,  1233,  1237,  1241,  1246,  1250,
     808    1254,  1258,  1262,  1267,  1273,  1279,  1285,  1291,  1297,  1303,
     809    1315,  1322,  1326,  1363,  1370,  1378,  1384,  1384,  1387,  1459,
     810    1463,  1492,  1505,  1522,  1531,  1536,  1544,  1556,  1575,  1585,
     811    1604,  1627,  1633,  1645,  1651
    812812};
    813813#endif
     
    24272427
    24282428/* Line 1464 of yacc.c  */
    2429 #line 367 "grammar.y"
     2429#line 366 "grammar.y"
    24302430    {
    24312431            if (timerv)
     
    24632463
    24642464/* Line 1464 of yacc.c  */
    2465 #line 402 "grammar.y"
     2465#line 401 "grammar.y"
    24662466    {currentVoice->ifsw=0;;}
    24672467    break;
     
    24702470
    24712471/* Line 1464 of yacc.c  */
    2472 #line 404 "grammar.y"
     2472#line 403 "grammar.y"
    24732473    { (yyvsp[(1) - (2)].lv).CleanUp(); currentVoice->ifsw=0;;}
    24742474    break;
     
    24772477
    24782478/* Line 1464 of yacc.c  */
    2479 #line 406 "grammar.y"
     2479#line 405 "grammar.y"
    24802480    {
    24812481            YYACCEPT;
     
    24862486
    24872487/* Line 1464 of yacc.c  */
    2488 #line 410 "grammar.y"
     2488#line 409 "grammar.y"
    24892489    {
    24902490            currentVoice->ifsw=0;
     
    24962496
    24972497/* Line 1464 of yacc.c  */
    2498 #line 415 "grammar.y"
     2498#line 414 "grammar.y"
    24992499    {currentVoice->ifsw=0;;}
    25002500    break;
     
    25032503
    25042504/* Line 1464 of yacc.c  */
    2505 #line 417 "grammar.y"
     2505#line 416 "grammar.y"
    25062506    {
    25072507            #ifdef SIQ
     
    25572557
    25582558/* Line 1464 of yacc.c  */
    2559 #line 475 "grammar.y"
     2559#line 474 "grammar.y"
    25602560    {if (currentVoice!=NULL) currentVoice->ifsw=0;;}
    25612561    break;
     
    25642564
    25652565/* Line 1464 of yacc.c  */
    2566 #line 478 "grammar.y"
     2566#line 477 "grammar.y"
    25672567    { omFree((ADDRESS)(yyvsp[(2) - (2)].name)); ;}
    25682568    break;
     
    25712571
    25722572/* Line 1464 of yacc.c  */
    2573 #line 493 "grammar.y"
     2573#line 492 "grammar.y"
    25742574    {
    25752575            if(iiAssign(&(yyvsp[(1) - (2)].lv),&(yyvsp[(2) - (2)].lv))) YYERROR;
     
    25802580
    25812581/* Line 1464 of yacc.c  */
    2582 #line 500 "grammar.y"
     2582#line 499 "grammar.y"
    25832583    {
    25842584            if (currRing==NULL) MYYERROR("no ring active");
     
    25902590
    25912591/* Line 1464 of yacc.c  */
    2592 #line 505 "grammar.y"
     2592#line 504 "grammar.y"
    25932593    {
    25942594            syMake(&(yyval.lv),(yyvsp[(1) - (1)].name));
     
    25992599
    26002600/* Line 1464 of yacc.c  */
    2601 #line 509 "grammar.y"
     2601#line 508 "grammar.y"
    26022602    {
    26032603            if(iiExprArith2(&(yyval.lv), &(yyvsp[(1) - (3)].lv), COLONCOLON, &(yyvsp[(3) - (3)].lv))) YYERROR;
     
    26082608
    26092609/* Line 1464 of yacc.c  */
    2610 #line 513 "grammar.y"
     2610#line 512 "grammar.y"
    26112611    {
    26122612            if(iiExprArith2(&(yyval.lv), &(yyvsp[(1) - (3)].lv), '.', &(yyvsp[(3) - (3)].lv))) YYERROR;
     
    26172617
    26182618/* Line 1464 of yacc.c  */
    2619 #line 517 "grammar.y"
     2619#line 516 "grammar.y"
    26202620    {
    26212621            if(iiExprArith1(&(yyval.lv),&(yyvsp[(1) - (3)].lv),'(')) YYERROR;
     
    26262626
    26272627/* Line 1464 of yacc.c  */
    2628 #line 521 "grammar.y"
     2628#line 520 "grammar.y"
    26292629    {
    26302630            if ((yyvsp[(1) - (4)].lv).rtyp==UNKNOWN)
     
    26442644
    26452645/* Line 1464 of yacc.c  */
    2646 #line 534 "grammar.y"
     2646#line 533 "grammar.y"
    26472647    {
    26482648            if (currRingHdl==NULL) MYYERROR("no ring active");
     
    26772677
    26782678/* Line 1464 of yacc.c  */
    2679 #line 562 "grammar.y"
     2679#line 561 "grammar.y"
    26802680    {
    26812681            memset(&(yyval.lv),0,sizeof((yyval.lv)));
     
    27062706
    27072707/* Line 1464 of yacc.c  */
    2708 #line 586 "grammar.y"
     2708#line 585 "grammar.y"
    27092709    {
    27102710            memset(&(yyval.lv),0,sizeof((yyval.lv)));
     
    27172717
    27182718/* Line 1464 of yacc.c  */
    2719 #line 592 "grammar.y"
     2719#line 591 "grammar.y"
    27202720    {
    27212721            memset(&(yyval.lv),0,sizeof((yyval.lv)));
     
    27282728
    27292729/* Line 1464 of yacc.c  */
    2730 #line 598 "grammar.y"
     2730#line 597 "grammar.y"
    27312731    {
    27322732            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
     
    27372737
    27382738/* Line 1464 of yacc.c  */
    2739 #line 602 "grammar.y"
     2739#line 601 "grammar.y"
    27402740    {
    27412741            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
     
    27462746
    27472747/* Line 1464 of yacc.c  */
    2748 #line 606 "grammar.y"
     2748#line 605 "grammar.y"
    27492749    {
    27502750            if(iiExprArithM(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
     
    27552755
    27562756/* Line 1464 of yacc.c  */
    2757 #line 610 "grammar.y"
     2757#line 609 "grammar.y"
    27582758    {
    27592759            if(iiExprArithM(&(yyval.lv),NULL,(yyvsp[(1) - (3)].i))) YYERROR;
     
    27642764
    27652765/* Line 1464 of yacc.c  */
    2766 #line 614 "grammar.y"
     2766#line 613 "grammar.y"
    27672767    {
    27682768            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
     
    27732773
    27742774/* Line 1464 of yacc.c  */
    2775 #line 618 "grammar.y"
     2775#line 617 "grammar.y"
    27762776    {
    27772777            if(iiExprArithM(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
     
    27822782
    27832783/* Line 1464 of yacc.c  */
    2784 #line 622 "grammar.y"
     2784#line 621 "grammar.y"
    27852785    {
    27862786            if(iiExprArithM(&(yyval.lv),NULL,(yyvsp[(1) - (3)].i))) YYERROR;
     
    27912791
    27922792/* Line 1464 of yacc.c  */
    2793 #line 626 "grammar.y"
     2793#line 625 "grammar.y"
    27942794    {
    27952795            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
     
    28002800
    28012801/* Line 1464 of yacc.c  */
    2802 #line 630 "grammar.y"
     2802#line 629 "grammar.y"
    28032803    {
    28042804            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
     
    28092809
    28102810/* Line 1464 of yacc.c  */
    2811 #line 634 "grammar.y"
     2811#line 633 "grammar.y"
    28122812    {
    28132813            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
     
    28182818
    28192819/* Line 1464 of yacc.c  */
    2820 #line 638 "grammar.y"
     2820#line 637 "grammar.y"
    28212821    {
    28222822            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
     
    28272827
    28282828/* Line 1464 of yacc.c  */
    2829 #line 642 "grammar.y"
     2829#line 641 "grammar.y"
    28302830    {
    28312831            if(iiExprArith2(&(yyval.lv),&(yyvsp[(3) - (6)].lv),(yyvsp[(1) - (6)].i),&(yyvsp[(5) - (6)].lv),TRUE)) YYERROR;
     
    28362836
    28372837/* Line 1464 of yacc.c  */
    2838 #line 646 "grammar.y"
     2838#line 645 "grammar.y"
    28392839    {
    28402840            if(iiExprArith2(&(yyval.lv),&(yyvsp[(3) - (6)].lv),(yyvsp[(1) - (6)].i),&(yyvsp[(5) - (6)].lv),TRUE)) YYERROR;
     
    28452845
    28462846/* Line 1464 of yacc.c  */
    2847 #line 650 "grammar.y"
     2847#line 649 "grammar.y"
    28482848    {
    28492849            if(iiExprArith2(&(yyval.lv),&(yyvsp[(3) - (6)].lv),(yyvsp[(1) - (6)].i),&(yyvsp[(5) - (6)].lv),TRUE)) YYERROR;
     
    28542854
    28552855/* Line 1464 of yacc.c  */
    2856 #line 654 "grammar.y"
     2856#line 653 "grammar.y"
    28572857    {
    28582858            if(iiExprArith2(&(yyval.lv),&(yyvsp[(3) - (6)].lv),(yyvsp[(1) - (6)].i),&(yyvsp[(5) - (6)].lv),TRUE)) YYERROR;
     
    28632863
    28642864/* Line 1464 of yacc.c  */
    2865 #line 658 "grammar.y"
     2865#line 657 "grammar.y"
    28662866    {
    28672867            if(iiExprArith3(&(yyval.lv),(yyvsp[(1) - (8)].i),&(yyvsp[(3) - (8)].lv),&(yyvsp[(5) - (8)].lv),&(yyvsp[(7) - (8)].lv))) YYERROR;
     
    28722872
    28732873/* Line 1464 of yacc.c  */
    2874 #line 662 "grammar.y"
     2874#line 661 "grammar.y"
    28752875    {
    28762876            if(iiExprArith3(&(yyval.lv),(yyvsp[(1) - (8)].i),&(yyvsp[(3) - (8)].lv),&(yyvsp[(5) - (8)].lv),&(yyvsp[(7) - (8)].lv))) YYERROR;
     
    28812881
    28822882/* Line 1464 of yacc.c  */
    2883 #line 666 "grammar.y"
     2883#line 665 "grammar.y"
    28842884    {
    28852885            if(iiExprArith3(&(yyval.lv),(yyvsp[(1) - (8)].i),&(yyvsp[(3) - (8)].lv),&(yyvsp[(5) - (8)].lv),&(yyvsp[(7) - (8)].lv))) YYERROR;
     
    28902890
    28912891/* Line 1464 of yacc.c  */
    2892 #line 670 "grammar.y"
     2892#line 669 "grammar.y"
    28932893    {
    28942894            if(iiExprArith3(&(yyval.lv),(yyvsp[(1) - (8)].i),&(yyvsp[(3) - (8)].lv),&(yyvsp[(5) - (8)].lv),&(yyvsp[(7) - (8)].lv))) YYERROR;
     
    28992899
    29002900/* Line 1464 of yacc.c  */
    2901 #line 674 "grammar.y"
     2901#line 673 "grammar.y"
    29022902    {
    29032903            if(iiExprArithM(&(yyval.lv),NULL,(yyvsp[(1) - (3)].i))) YYERROR;
     
    29082908
    29092909/* Line 1464 of yacc.c  */
    2910 #line 678 "grammar.y"
     2910#line 677 "grammar.y"
    29112911    {
    29122912            int b=iiExprArithM(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i)); // handle branchTo
     
    29192919
    29202920/* Line 1464 of yacc.c  */
    2921 #line 684 "grammar.y"
     2921#line 683 "grammar.y"
    29222922    {
    29232923            if(iiExprArith3(&(yyval.lv),(yyvsp[(1) - (8)].i),&(yyvsp[(3) - (8)].lv),&(yyvsp[(5) - (8)].lv),&(yyvsp[(7) - (8)].lv))) YYERROR;
     
    29282928
    29292929/* Line 1464 of yacc.c  */
    2930 #line 688 "grammar.y"
     2930#line 687 "grammar.y"
    29312931    {
    29322932            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
     
    29372937
    29382938/* Line 1464 of yacc.c  */
    2939 #line 692 "grammar.y"
     2939#line 691 "grammar.y"
    29402940    {
    29412941            if(iiExprArith3(&(yyval.lv),RING_CMD,&(yyvsp[(3) - (8)].lv),&(yyvsp[(5) - (8)].lv),&(yyvsp[(7) - (8)].lv))) YYERROR;
     
    29462946
    29472947/* Line 1464 of yacc.c  */
    2948 #line 696 "grammar.y"
     2948#line 695 "grammar.y"
    29492949    {
    29502950            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),RING_CMD)) YYERROR;
     
    29552955
    29562956/* Line 1464 of yacc.c  */
    2957 #line 700 "grammar.y"
     2957#line 699 "grammar.y"
    29582958    {
    29592959            if (iiARROW(&(yyval.lv),(yyvsp[(1) - (3)].name),(yyvsp[(3) - (3)].name))) YYERROR;
     
    29642964
    29652965/* Line 1464 of yacc.c  */
    2966 #line 707 "grammar.y"
     2966#line 706 "grammar.y"
    29672967    {
    29682968            leftv v = &(yyvsp[(1) - (3)].lv);
     
    29802980
    29812981/* Line 1464 of yacc.c  */
    2982 #line 718 "grammar.y"
     2982#line 717 "grammar.y"
    29832983    {
    29842984            (yyval.lv) = (yyvsp[(1) - (1)].lv);
     
    29892989
    29902990/* Line 1464 of yacc.c  */
    2991 #line 724 "grammar.y"
     2991#line 723 "grammar.y"
    29922992    {
    29932993            /*if ($1.typ == eunknown) YYERROR;*/
     
    29992999
    30003000/* Line 1464 of yacc.c  */
     3001#line 727 "grammar.y"
     3002    { (yyval.lv) = (yyvsp[(1) - (1)].lv); ;}
     3003    break;
     3004
     3005  case 70:
     3006
     3007/* Line 1464 of yacc.c  */
    30013008#line 728 "grammar.y"
    3002     { (yyval.lv) = (yyvsp[(1) - (1)].lv); ;}
    3003     break;
    3004 
    3005   case 70:
    3006 
    3007 /* Line 1464 of yacc.c  */
    3008 #line 729 "grammar.y"
    30093009    { (yyval.lv) = (yyvsp[(2) - (3)].lv); ;}
    30103010    break;
     
    30133013
    30143014/* Line 1464 of yacc.c  */
    3015 #line 731 "grammar.y"
     3015#line 730 "grammar.y"
    30163016    {
    30173017            if(iiExprArith3(&(yyval.lv),'[',&(yyvsp[(1) - (6)].lv),&(yyvsp[(3) - (6)].lv),&(yyvsp[(5) - (6)].lv))) YYERROR;
     
    30223022
    30233023/* Line 1464 of yacc.c  */
    3024 #line 735 "grammar.y"
     3024#line 734 "grammar.y"
    30253025    {
    30263026            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (4)].lv),'[',&(yyvsp[(3) - (4)].lv))) YYERROR;
     
    30313031
    30323032/* Line 1464 of yacc.c  */
    3033 #line 739 "grammar.y"
     3033#line 738 "grammar.y"
    30343034    {
    30353035            if (iiApply(&(yyval.lv), &(yyvsp[(3) - (6)].lv), (yyvsp[(5) - (6)].i), NULL)) YYERROR;
     
    30403040
    30413041/* Line 1464 of yacc.c  */
    3042 #line 743 "grammar.y"
     3042#line 742 "grammar.y"
    30433043    {
    30443044            if (iiApply(&(yyval.lv), &(yyvsp[(3) - (6)].lv), (yyvsp[(5) - (6)].i), NULL)) YYERROR;
     
    30493049
    30503050/* Line 1464 of yacc.c  */
    3051 #line 747 "grammar.y"
     3051#line 746 "grammar.y"
    30523052    {
    30533053            if (iiApply(&(yyval.lv), &(yyvsp[(3) - (6)].lv), (yyvsp[(5) - (6)].i), NULL)) YYERROR;
     
    30583058
    30593059/* Line 1464 of yacc.c  */
    3060 #line 751 "grammar.y"
     3060#line 750 "grammar.y"
    30613061    {
    30623062            if (iiApply(&(yyval.lv), &(yyvsp[(3) - (6)].lv), (yyvsp[(5) - (6)].i), NULL)) YYERROR;
     
    30673067
    30683068/* Line 1464 of yacc.c  */
    3069 #line 755 "grammar.y"
     3069#line 754 "grammar.y"
    30703070    {
    30713071            if (iiApply(&(yyval.lv), &(yyvsp[(3) - (6)].lv), (yyvsp[(5) - (6)].i), NULL)) YYERROR;
     
    30763076
    30773077/* Line 1464 of yacc.c  */
    3078 #line 759 "grammar.y"
     3078#line 758 "grammar.y"
    30793079    {
    30803080            if (iiApply(&(yyval.lv), &(yyvsp[(3) - (6)].lv), 0, &(yyvsp[(5) - (6)].lv))) YYERROR;
     
    30853085
    30863086/* Line 1464 of yacc.c  */
    3087 #line 763 "grammar.y"
     3087#line 762 "grammar.y"
    30883088    {
    30893089            (yyval.lv)=(yyvsp[(2) - (3)].lv);
     
    30943094
    30953095/* Line 1464 of yacc.c  */
    3096 #line 767 "grammar.y"
     3096#line 766 "grammar.y"
    30973097    {
    30983098            #ifdef SIQ
     
    31163116
    31173117/* Line 1464 of yacc.c  */
    3118 #line 784 "grammar.y"
     3118#line 783 "grammar.y"
    31193119    {
    31203120            iiTestAssume(&(yyvsp[(2) - (5)].lv),&(yyvsp[(4) - (5)].lv));
     
    31273127
    31283128/* Line 1464 of yacc.c  */
    3129 #line 790 "grammar.y"
     3129#line 789 "grammar.y"
    31303130    {
    31313131            #ifdef SIQ
     
    31383138
    31393139/* Line 1464 of yacc.c  */
    3140 #line 796 "grammar.y"
     3140#line 795 "grammar.y"
    31413141    {
    31423142            #ifdef SIQ
     
    31533153
    31543154/* Line 1464 of yacc.c  */
    3155 #line 808 "grammar.y"
     3155#line 807 "grammar.y"
    31563156    {
    31573157            #ifdef SIQ
     
    31643164
    31653165/* Line 1464 of yacc.c  */
    3166 #line 816 "grammar.y"
     3166#line 815 "grammar.y"
    31673167    {
    31683168            #ifdef SIQ
     
    31753175
    31763176/* Line 1464 of yacc.c  */
    3177 #line 824 "grammar.y"
     3177#line 823 "grammar.y"
    31783178    {
    31793179            #ifdef SIQ
     
    31863186
    31873187/* Line 1464 of yacc.c  */
    3188 #line 833 "grammar.y"
     3188#line 832 "grammar.y"
    31893189    {
    31903190            if(iiExprArith1(&(yyval.lv),&(yyvsp[(1) - (2)].lv),PLUSPLUS)) YYERROR;
     
    31953195
    31963196/* Line 1464 of yacc.c  */
    3197 #line 837 "grammar.y"
     3197#line 836 "grammar.y"
    31983198    {
    31993199            if(iiExprArith1(&(yyval.lv),&(yyvsp[(1) - (2)].lv),MINUSMINUS)) YYERROR;
     
    32043204
    32053205/* Line 1464 of yacc.c  */
    3206 #line 841 "grammar.y"
     3206#line 840 "grammar.y"
    32073207    {
    32083208            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),'+',&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32133213
    32143214/* Line 1464 of yacc.c  */
    3215 #line 845 "grammar.y"
     3215#line 844 "grammar.y"
    32163216    {
    32173217            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),'-',&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32223222
    32233223/* Line 1464 of yacc.c  */
    3224 #line 849 "grammar.y"
     3224#line 848 "grammar.y"
    32253225    {
    32263226            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),(yyvsp[(2) - (3)].i),&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32313231
    32323232/* Line 1464 of yacc.c  */
    3233 #line 853 "grammar.y"
     3233#line 852 "grammar.y"
    32343234    {
    32353235            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),'^',&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32403240
    32413241/* Line 1464 of yacc.c  */
    3242 #line 857 "grammar.y"
     3242#line 856 "grammar.y"
    32433243    {
    32443244            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),(yyvsp[(2) - (3)].i),&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32493249
    32503250/* Line 1464 of yacc.c  */
    3251 #line 861 "grammar.y"
     3251#line 860 "grammar.y"
    32523252    {
    32533253            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),(yyvsp[(2) - (3)].i),&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32583258
    32593259/* Line 1464 of yacc.c  */
    3260 #line 865 "grammar.y"
     3260#line 864 "grammar.y"
    32613261    {
    32623262            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),NOTEQUAL,&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32673267
    32683268/* Line 1464 of yacc.c  */
    3269 #line 869 "grammar.y"
     3269#line 868 "grammar.y"
    32703270    {
    32713271            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),EQUAL_EQUAL,&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32763276
    32773277/* Line 1464 of yacc.c  */
    3278 #line 873 "grammar.y"
     3278#line 872 "grammar.y"
    32793279    {
    32803280            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),DOTDOT,&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32853285
    32863286/* Line 1464 of yacc.c  */
    3287 #line 877 "grammar.y"
     3287#line 876 "grammar.y"
    32883288    {
    32893289            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),':',&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32943294
    32953295/* Line 1464 of yacc.c  */
    3296 #line 881 "grammar.y"
     3296#line 880 "grammar.y"
    32973297    {
    32983298            if (siq>0)
     
    33113311
    33123312/* Line 1464 of yacc.c  */
    3313 #line 893 "grammar.y"
     3313#line 892 "grammar.y"
    33143314    {
    33153315            if(iiExprArith1(&(yyval.lv),&(yyvsp[(2) - (2)].lv),'-')) YYERROR;
     
    33203320
    33213321/* Line 1464 of yacc.c  */
    3322 #line 899 "grammar.y"
     3322#line 898 "grammar.y"
    33233323    { (yyval.lv) = (yyvsp[(1) - (2)].lv); ;}
    33243324    break;
     
    33273327
    33283328/* Line 1464 of yacc.c  */
    3329 #line 901 "grammar.y"
     3329#line 900 "grammar.y"
    33303330    {
    33313331            if ((yyvsp[(1) - (2)].lv).rtyp==0)
     
    33473347
    33483348/* Line 1464 of yacc.c  */
    3349 #line 921 "grammar.y"
     3349#line 920 "grammar.y"
    33503350    {
    33513351            if ((yyvsp[(2) - (3)].lv).Typ()!=STRING_CMD)
     
    33613361
    33623362/* Line 1464 of yacc.c  */
    3363 #line 933 "grammar.y"
     3363#line 932 "grammar.y"
    33643364    {
    33653365            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&((yyvsp[(2) - (2)].lv).req_packhdl->idroot)))
     
    33713371
    33723372/* Line 1464 of yacc.c  */
    3373 #line 938 "grammar.y"
     3373#line 937 "grammar.y"
    33743374    {
    33753375            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&((yyvsp[(2) - (2)].lv).req_packhdl->idroot)))
     
    33813381
    33823382/* Line 1464 of yacc.c  */
    3383 #line 943 "grammar.y"
     3383#line 942 "grammar.y"
    33843384    {
    33853385            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&(currRing->idroot), TRUE)) YYERROR;
     
    33903390
    33913391/* Line 1464 of yacc.c  */
    3392 #line 947 "grammar.y"
     3392#line 946 "grammar.y"
    33933393    {
    33943394            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&(currRing->idroot), TRUE)) YYERROR;
     
    33993399
    34003400/* Line 1464 of yacc.c  */
    3401 #line 951 "grammar.y"
     3401#line 950 "grammar.y"
    34023402    {
    34033403            int r; TESTSETINT((yyvsp[(4) - (8)].lv),r);
    34043404            int c; TESTSETINT((yyvsp[(7) - (8)].lv),c);
    3405             if (r < 1)
    3406               MYYERROR("rows must be greater than 0");
    3407             if (c < 0)
    3408               MYYERROR("cols must be greater than -1");
    34093405            leftv v;
    34103406            idhdl h;
     
    34443440
    34453441/* Line 1464 of yacc.c  */
    3446 #line 991 "grammar.y"
     3442#line 986 "grammar.y"
    34473443    {
    34483444            if ((yyvsp[(1) - (2)].i) == MATRIX_CMD)
     
    34753471
    34763472/* Line 1464 of yacc.c  */
    3477 #line 1017 "grammar.y"
     3473#line 1012 "grammar.y"
    34783474    {
    34793475            int t=(yyvsp[(1) - (3)].lv).Typ();
     
    35013497
    35023498/* Line 1464 of yacc.c  */
    3503 #line 1038 "grammar.y"
     3499#line 1033 "grammar.y"
    35043500    {
    35053501            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&((yyvsp[(2) - (2)].lv).req_packhdl->idroot)))
     
    35113507
    35123508/* Line 1464 of yacc.c  */
    3513 #line 1051 "grammar.y"
     3509#line 1046 "grammar.y"
    35143510    {
    35153511            leftv v = &(yyvsp[(2) - (5)].lv);
     
    35273523
    35283524/* Line 1464 of yacc.c  */
    3529 #line 1065 "grammar.y"
     3525#line 1060 "grammar.y"
    35303526    {
    35313527          // let rInit take care of any errors
     
    35373533
    35383534/* Line 1464 of yacc.c  */
    3539 #line 1073 "grammar.y"
     3535#line 1068 "grammar.y"
    35403536    {
    35413537            memset(&(yyval.lv),0,sizeof((yyval.lv)));
     
    35513547
    35523548/* Line 1464 of yacc.c  */
    3553 #line 1082 "grammar.y"
     3549#line 1077 "grammar.y"
    35543550    {
    35553551            memset(&(yyval.lv),0,sizeof((yyval.lv)));
     
    35983594
    35993595/* Line 1464 of yacc.c  */
    3600 #line 1128 "grammar.y"
     3596#line 1123 "grammar.y"
    36013597    {
    36023598            (yyval.lv) = (yyvsp[(1) - (3)].lv);
     
    36093605
    36103606/* Line 1464 of yacc.c  */
    3611 #line 1138 "grammar.y"
     3607#line 1133 "grammar.y"
    36123608    {
    36133609            (yyval.lv) = (yyvsp[(2) - (3)].lv);
     
    36183614
    36193615/* Line 1464 of yacc.c  */
    3620 #line 1144 "grammar.y"
     3616#line 1139 "grammar.y"
    36213617    {
    36223618            expected_parms = TRUE;
     
    36273623
    36283624/* Line 1464 of yacc.c  */
    3629 #line 1151 "grammar.y"
     3625#line 1146 "grammar.y"
    36303626    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
    36313627    break;
     
    36343630
    36353631/* Line 1464 of yacc.c  */
    3636 #line 1153 "grammar.y"
     3632#line 1148 "grammar.y"
    36373633    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
    36383634    break;
     
    36413637
    36423638/* Line 1464 of yacc.c  */
    3643 #line 1155 "grammar.y"
     3639#line 1150 "grammar.y"
    36443640    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
    36453641    break;
     
    36483644
    36493645/* Line 1464 of yacc.c  */
    3650 #line 1164 "grammar.y"
     3646#line 1159 "grammar.y"
    36513647    { if ((yyvsp[(1) - (2)].i) != '<') YYERROR;
    36523648            if((feFilePending=feFopen((yyvsp[(2) - (2)].name),"r",NULL,TRUE))==NULL) YYERROR; ;}
     
    36563652
    36573653/* Line 1464 of yacc.c  */
     3654#line 1162 "grammar.y"
     3655    { newFile((yyvsp[(2) - (4)].name),feFilePending); ;}
     3656    break;
     3657
     3658  case 129:
     3659
     3660/* Line 1464 of yacc.c  */
    36583661#line 1167 "grammar.y"
    3659     { newFile((yyvsp[(2) - (4)].name),feFilePending); ;}
    3660     break;
    3661 
    3662   case 129:
    3663 
    3664 /* Line 1464 of yacc.c  */
    3665 #line 1172 "grammar.y"
    36663662    {
    36673663            feHelp((yyvsp[(2) - (3)].name));
     
    36733669
    36743670/* Line 1464 of yacc.c  */
    3675 #line 1177 "grammar.y"
     3671#line 1172 "grammar.y"
    36763672    {
    36773673            feHelp(NULL);
     
    36823678
    36833679/* Line 1464 of yacc.c  */
    3684 #line 1184 "grammar.y"
     3680#line 1179 "grammar.y"
    36853681    {
    36863682            singular_example((yyvsp[(2) - (3)].name));
     
    36923688
    36933689/* Line 1464 of yacc.c  */
    3694 #line 1192 "grammar.y"
     3690#line 1187 "grammar.y"
    36953691    {
    36963692          if (basePack!=(yyvsp[(2) - (2)].lv).req_packhdl)
     
    37063702
    37073703/* Line 1464 of yacc.c  */
    3708 #line 1204 "grammar.y"
     3704#line 1199 "grammar.y"
    37093705    {
    37103706          leftv v=&(yyvsp[(2) - (2)].lv);
     
    37273723
    37283724/* Line 1464 of yacc.c  */
    3729 #line 1220 "grammar.y"
     3725#line 1215 "grammar.y"
    37303726    {
    37313727          leftv v=&(yyvsp[(3) - (3)].lv);
     
    37483744
    37493745/* Line 1464 of yacc.c  */
    3750 #line 1239 "grammar.y"
     3746#line 1234 "grammar.y"
    37513747    {
    37523748            list_cmd((yyvsp[(3) - (4)].i),NULL,"// ",TRUE);
     
    37573753
    37583754/* Line 1464 of yacc.c  */
    3759 #line 1243 "grammar.y"
     3755#line 1238 "grammar.y"
    37603756    {
    37613757            list_cmd((yyvsp[(3) - (4)].i),NULL,"// ",TRUE);
     
    37663762
    37673763/* Line 1464 of yacc.c  */
    3768 #line 1247 "grammar.y"
     3764#line 1242 "grammar.y"
    37693765    {
    37703766            if ((yyvsp[(3) - (4)].i)==QRING_CMD) (yyvsp[(3) - (4)].i)=RING_CMD;
     
    37763772
    37773773/* Line 1464 of yacc.c  */
    3778 #line 1252 "grammar.y"
     3774#line 1247 "grammar.y"
    37793775    {
    37803776            list_cmd((yyvsp[(3) - (4)].i),NULL,"// ",TRUE);
     
    37853781
    37863782/* Line 1464 of yacc.c  */
    3787 #line 1256 "grammar.y"
     3783#line 1251 "grammar.y"
    37883784    {
    37893785            list_cmd(RING_CMD,NULL,"// ",TRUE);
     
    37943790
    37953791/* Line 1464 of yacc.c  */
    3796 #line 1260 "grammar.y"
     3792#line 1255 "grammar.y"
    37973793    {
    37983794            list_cmd((yyvsp[(3) - (4)].i),NULL,"// ",TRUE);
     
    38033799
    38043800/* Line 1464 of yacc.c  */
    3805 #line 1264 "grammar.y"
     3801#line 1259 "grammar.y"
    38063802    {
    38073803            list_cmd(PROC_CMD,NULL,"// ",TRUE);
     
    38123808
    38133809/* Line 1464 of yacc.c  */
    3814 #line 1268 "grammar.y"
     3810#line 1263 "grammar.y"
    38153811    {
    38163812            list_cmd(0,(yyvsp[(3) - (4)].lv).Fullname(),"// ",TRUE);
     
    38223818
    38233819/* Line 1464 of yacc.c  */
    3824 #line 1273 "grammar.y"
     3820#line 1268 "grammar.y"
    38253821    {
    38263822            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
     
    38333829
    38343830/* Line 1464 of yacc.c  */
    3835 #line 1279 "grammar.y"
     3831#line 1274 "grammar.y"
    38363832    {
    38373833            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
     
    38443840
    38453841/* Line 1464 of yacc.c  */
    3846 #line 1285 "grammar.y"
     3842#line 1280 "grammar.y"
    38473843    {
    38483844            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
     
    38553851
    38563852/* Line 1464 of yacc.c  */
    3857 #line 1291 "grammar.y"
     3853#line 1286 "grammar.y"
    38583854    {
    38593855            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
     
    38663862
    38673863/* Line 1464 of yacc.c  */
    3868 #line 1297 "grammar.y"
     3864#line 1292 "grammar.y"
    38693865    {
    38703866            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
     
    38773873
    38783874/* Line 1464 of yacc.c  */
    3879 #line 1303 "grammar.y"
     3875#line 1298 "grammar.y"
    38803876    {
    38813877            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
     
    38883884
    38893885/* Line 1464 of yacc.c  */
    3890 #line 1309 "grammar.y"
     3886#line 1304 "grammar.y"
    38913887    {
    38923888            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
     
    38993895
    39003896/* Line 1464 of yacc.c  */
    3901 #line 1321 "grammar.y"
     3897#line 1316 "grammar.y"
    39023898    {
    39033899            list_cmd(-1,NULL,"// ",TRUE);
     
    39083904
    39093905/* Line 1464 of yacc.c  */
    3910 #line 1327 "grammar.y"
     3906#line 1322 "grammar.y"
    39113907    { yyInRingConstruction = TRUE; ;}
    39123908    break;
     
    39153911
    39163912/* Line 1464 of yacc.c  */
    3917 #line 1336 "grammar.y"
     3913#line 1331 "grammar.y"
    39183914    {
    39193915            const char *ring_name = (yyvsp[(2) - (8)].lv).name;
     
    39533949
    39543950/* Line 1464 of yacc.c  */
    3955 #line 1369 "grammar.y"
     3951#line 1364 "grammar.y"
    39563952    {
    39573953            const char *ring_name = (yyvsp[(2) - (2)].lv).name;
     
    39653961
    39663962/* Line 1464 of yacc.c  */
    3967 #line 1376 "grammar.y"
     3963#line 1371 "grammar.y"
    39683964    {
    39693965            yyInRingConstruction = FALSE;
     
    39753971
    39763972/* Line 1464 of yacc.c  */
    3977 #line 1384 "grammar.y"
     3973#line 1379 "grammar.y"
    39783974    {
    39793975            if (((yyvsp[(1) - (2)].i)!=LIB_CMD)||(jjLOAD((yyvsp[(2) - (2)].name),TRUE))) YYERROR;
     
    39843980
    39853981/* Line 1464 of yacc.c  */
    3986 #line 1393 "grammar.y"
     3982#line 1388 "grammar.y"
    39873983    {
    39883984            if (((yyvsp[(1) - (2)].i)==KEEPRING_CMD) && (myynest==0))
     
    40584054
    40594055/* Line 1464 of yacc.c  */
    4060 #line 1465 "grammar.y"
     4056#line 1460 "grammar.y"
    40614057    {
    40624058            type_cmd(&((yyvsp[(2) - (2)].lv)));
     
    40674063
    40684064/* Line 1464 of yacc.c  */
    4069 #line 1469 "grammar.y"
     4065#line 1464 "grammar.y"
    40704066    {
    40714067            //Print("typ is %d, rtyp:%d\n",$1.Typ(),$1.rtyp);
     
    40954091
    40964092/* Line 1464 of yacc.c  */
    4097 #line 1498 "grammar.y"
     4093#line 1493 "grammar.y"
    40984094    {
    40994095            int i; TESTSETINT((yyvsp[(3) - (5)].lv),i);
     
    41134109
    41144110/* Line 1464 of yacc.c  */
    4115 #line 1511 "grammar.y"
     4111#line 1506 "grammar.y"
    41164112    {
    41174113            if (currentVoice->ifsw==1)
     
    41354131
    41364132/* Line 1464 of yacc.c  */
    4137 #line 1528 "grammar.y"
     4133#line 1523 "grammar.y"
    41384134    {
    41394135            int i; TESTSETINT((yyvsp[(3) - (5)].lv),i);
     
    41494145
    41504146/* Line 1464 of yacc.c  */
    4151 #line 1537 "grammar.y"
     4147#line 1532 "grammar.y"
    41524148    {
    41534149            if (exitBuffer(BT_break)) YYERROR;
     
    41594155
    41604156/* Line 1464 of yacc.c  */
    4161 #line 1542 "grammar.y"
     4157#line 1537 "grammar.y"
    41624158    {
    41634159            if (contBuffer(BT_break)) YYERROR;
     
    41694165
    41704166/* Line 1464 of yacc.c  */
    4171 #line 1550 "grammar.y"
     4167#line 1545 "grammar.y"
    41724168    {
    41734169            /* -> if(!$2) break; $3; continue;*/
     
    41834179
    41844180/* Line 1464 of yacc.c  */
    4185 #line 1562 "grammar.y"
     4181#line 1557 "grammar.y"
    41864182    {
    41874183            /* $2 */
     
    42044200
    42054201/* Line 1464 of yacc.c  */
    4206 #line 1581 "grammar.y"
     4202#line 1576 "grammar.y"
    42074203    {
    42084204            idhdl h = enterid((yyvsp[(2) - (3)].name),myynest,PROC_CMD,&IDROOT,TRUE);
     
    42194215
    42204216/* Line 1464 of yacc.c  */
    4221 #line 1591 "grammar.y"
     4217#line 1586 "grammar.y"
    42224218    {
    42234219            idhdl h = enterid((yyvsp[(1) - (3)].name),myynest,PROC_CMD,&IDROOT,TRUE);
     
    42434239
    42444240/* Line 1464 of yacc.c  */
    4245 #line 1610 "grammar.y"
     4241#line 1605 "grammar.y"
    42464242    {
    42474243            omFree((ADDRESS)(yyvsp[(3) - (4)].name));
     
    42684264
    42694265/* Line 1464 of yacc.c  */
    4270 #line 1633 "grammar.y"
     4266#line 1628 "grammar.y"
    42714267    {
    42724268            // decl. of type proc p(int i)
     
    42794275
    42804276/* Line 1464 of yacc.c  */
    4281 #line 1639 "grammar.y"
     4277#line 1634 "grammar.y"
    42824278    {
    42834279            // decl. of type proc p(i)
     
    42934289
    42944290/* Line 1464 of yacc.c  */
    4295 #line 1651 "grammar.y"
     4291#line 1646 "grammar.y"
    42964292    {
    42974293            iiRETURNEXPR.Copy(&(yyvsp[(3) - (4)].lv));
     
    43044300
    43054301/* Line 1464 of yacc.c  */
    4306 #line 1657 "grammar.y"
     4302#line 1652 "grammar.y"
    43074303    {
    43084304            if ((yyvsp[(1) - (3)].i)==RETURN)
     
    43184314
    43194315/* Line 1464 of yacc.c  */
    4320 #line 4320 "grammar.cc"
     4316#line 4315 "grammar.cc"
    43214317      default: break;
    43224318    }
  • Singular/grammar.y

    r2675bd r760258  
    951951            int r; TESTSETINT($4,r);
    952952            int c; TESTSETINT($7,c);
    953             if (r < 1)
    954               MYYERROR("rows must be greater than 0");
    955             if (c < 0)
    956               MYYERROR("cols must be greater than -1");
    957953            leftv v;
    958954            idhdl h;
  • Singular/iparith.cc

    r2675bd r760258  
    10941094  if (res->data==NULL)
    10951095  {
    1096      Werror("matrix size not compatible(%dx%d, %dx%d)",
     1096     Werror("matrix size not compatible(%dx%d, %dx%d) in *",
    10971097             MATROWS(A),MATCOLS(A),MATROWS(B),MATCOLS(B));
    10981098     return TRUE;
     
    14821482  poly r=p; // pointer to the beginning of component i
    14831483  poly o=NULL;
    1484   unsigned i=(unsigned)(long)v->Data();
     1484  int i=(int)(long)v->Data();
    14851485  while (p!=NULL)
    14861486  {
     
    26672667  if(strcmp(s, "with")==0)
    26682668    return jjLOAD((char*)v->Data(), TRUE);
     2669  if (strcmp(s,"try")==0)
     2670    return jjLOAD_TRY((char*)v->Data());
    26692671  WerrorS("invalid second argument");
    2670   WerrorS("load(\"libname\" [,\"with\"]);");
     2672  WerrorS("load(\"libname\" [,option]);");
    26712673  return TRUE;
    26722674}
     
    53275329  }
    53285330  return TRUE;
     5331}
     5332static int WerrorS_dummy_cnt=0;
     5333static void WerrorS_dummy(const char *)
     5334{
     5335  WerrorS_dummy_cnt++;
     5336}
     5337BOOLEAN jjLOAD_TRY(const char *s)
     5338{
     5339  void (*WerrorS_save)(const char *s) = WerrorS_callback;
     5340  WerrorS_callback=WerrorS_dummy;
     5341  WerrorS_dummy_cnt=0;
     5342  BOOLEAN bo=jjLOAD(s,TRUE);
     5343  if (TEST_OPT_PROT && (bo || (WerrorS_dummy_cnt>0)))
     5344    Print("loading of >%s< failed\n",s);
     5345  WerrorS_callback=WerrorS_save;
     5346  errorreported=0;
     5347  return FALSE;
    53295348}
    53305349
     
    81078126{
    81088127  memset(res,0,sizeof(sleftv));
    8109   BOOLEAN call_failed=FALSE;
    81108128
    81118129  if (!errorreported)
     
    82958313{
    82968314  memset(res,0,sizeof(sleftv));
    8297   BOOLEAN call_failed=FALSE;
    82988315
    82998316  if (!errorreported)
     
    83398356    }
    83408357
    8341     BOOLEAN failed=FALSE;
    83428358    iiOp=op;
    83438359    int i=iiTabIndex(dArithTab1,JJTAB1LEN,op);
  • Singular/ipassign.cc

    r2675bd r760258  
    460460  return FALSE;
    461461}
     462static BOOLEAN jiA_NUMBER2_I(leftv res, leftv a, Subexpr e)
     463{
     464  if (e==NULL)
     465  {
     466    if (res->data!=NULL)
     467    {
     468      number2 nn=(number2)res->data;
     469      number2 n=n2Init((long)a->Data(),nn->cf);
     470      n2Delete(nn);
     471      res->data=(void *)n;
     472    }
     473    else
     474    {
     475      WerrorS("no (c)ring avialable for conversion from int");
     476      return TRUE;
     477    }
     478  }
     479  else
     480  {
     481    int i=e->start-1;
     482    if (i<0)
     483    {
     484      Werror("index[%d] must be positive",i+1);
     485      return TRUE;
     486    }
     487    bigintmat *iv=(bigintmat *)res->data;
     488    if (e->next==NULL)
     489    {
     490      WerrorS("only one index given");
     491      return TRUE;
     492    }
     493    else
     494    {
     495      int c=e->next->start;
     496      if ((i>=iv->rows())||(c<1)||(c>iv->cols()))
     497      {
     498        Werror("wrong range [%d,%d] in cmatrix %s(%d,%d)",i+1,c,res->Name(),iv->rows(),iv->cols());
     499        return TRUE;
     500      }
     501      else
     502      {
     503        n_Delete((number *)&BIMATELEM(*iv,i+1,c),iv->basecoeffs());
     504        BIMATELEM(*iv,i+1,c) = n_Init((long)a->Data(),iv->basecoeffs());
     505      }
     506    }
     507  }
     508  return FALSE;
     509}
     510static BOOLEAN jiA_NUMBER2_N(leftv res, leftv a, Subexpr e)
     511{
     512  if (e==NULL)
     513  {
     514    if (res->data!=NULL)
     515    {
     516      number2 nn=(number2)res->data;
     517      if (currRing->cf==nn->cf)
     518      {
     519        number2 n=(number2)omAlloc(sizeof(*n));
     520        n->cf=currRing->cf; n->cf++;
     521        n->n=(number)a->CopyD(NUMBER_CMD);
     522        n2Delete(nn);
     523        res->data=(void *)n;
     524      }
     525      else
     526      {
     527        WerrorS("different base");
     528        return TRUE;
     529      }
     530    }
     531    else
     532    {
     533      WerrorS("no (c)ring avialable for conversion from number");
     534      return TRUE;
     535    }
     536  }
     537  else
     538  {
     539    int i=e->start-1;
     540    if (i<0)
     541    {
     542      Werror("index[%d] must be positive",i+1);
     543      return TRUE;
     544    }
     545    bigintmat *iv=(bigintmat *)res->data;
     546    if (e->next==NULL)
     547    {
     548      WerrorS("only one index given");
     549      return TRUE;
     550    }
     551    else
     552    {
     553      int c=e->next->start;
     554      if ((i>=iv->rows())||(c<1)||(c>iv->cols()))
     555      {
     556        Werror("wrong range [%d,%d] in cmatrix %s(%d,%d)",i+1,c,res->Name(),iv->rows(),iv->cols());
     557        return TRUE;
     558      }
     559      else if (iv->basecoeffs()==currRing->cf)
     560      {
     561        n_Delete((number *)&BIMATELEM(*iv,i+1,c),iv->basecoeffs());
     562        BIMATELEM(*iv,i+1,c) = (number)(a->CopyD(NUMBER_CMD));
     563      }
     564      else
     565      {
     566        WerrorS("different base");
     567        return TRUE;
     568      }
     569    }
     570  }
     571  return FALSE;
     572}
    462573#endif
    463574static BOOLEAN jiA_BIGINT(leftv res, leftv a, Subexpr e)
     
    714825}
    715826static BOOLEAN jiA_MODUL_P(leftv res, leftv a, Subexpr)
     827/* module = poly */
    716828{
    717829  if (res->data!=NULL) idDelete((ideal*)&res->data);
     
    18801992      sleftv t;
    18811993      matrix olm = (matrix)l->Data();
    1882       int rk=olm->rank;
     1994      int rk;
    18831995      char *pr=((map)olm)->preimage;
    18841996      BOOLEAN module_assign=(/*l->Typ()*/ lt==MODUL_CMD);
     
    18922004      if (lt /*l->Typ()*/==MATRIX_CMD)
    18932005      {
    1894         num=olm->cols()*olm->rows();
     2006        rk=olm->rows();
     2007        num=olm->cols()*rk /*olm->rows()*/;
    18952008        lm=mpNew(olm->rows(),olm->cols());
    18962009        int el;
     
    19042017        num=exprlist_length(hh);
    19052018        lm=(matrix)idInit(num,1);
    1906         rk=1;
    19072019        if (module_assign)
    19082020        {
     2021          rk=0;
    19092022          mtyp=MODUL_CMD;
    19102023          etyp=VECTOR_CMD;
    19112024        }
     2025        else
     2026          rk=1;
    19122027      }
    19132028
  • Singular/iplib.cc

    r2675bd r760258  
    10921092    Werror("dynl_open failed:%s", dynl_error());
    10931093    Werror("%s not found", newlib);
     1094    killhdl2(pl,&(basePack->idroot),NULL); // remove package
    10941095    goto load_modules_end;
    10951096  }
     
    11191120      RET=FALSE;
    11201121    }
    1121     else Werror("mod_init not found:: %s\nThis is probably not a dynamic module for Singular!\n", dynl_error());
     1122    else
     1123    {
     1124      Werror("mod_init not found:: %s\nThis is probably not a dynamic module for Singular!\n", dynl_error());
     1125      killhdl2(pl,&(basePack->idroot),NULL); // remove package
     1126    }
    11221127  }
    11231128
  • Singular/ipprint.cc

    r2675bd r760258  
    6363static void ipPrint_MA0(matrix m, const char *name)
    6464{
    65   if (MATCOLS(m)>0)
     65  if ((MATCOLS(m)>0)&&(MATROWS(m)>0))
    6666  {
    6767    char **s=(char **)omAlloc(MATCOLS(m)*MATROWS(m)*sizeof(char*));
     
    181181    omFreeSize((ADDRESS)l,MATCOLS(m)*sizeof(int));
    182182  }
     183  else Print("%d x %d zero matrix\n",MATROWS(m),MATCOLS(m));
    183184}
    184185
  • Singular/ipshell.cc

    r2675bd r760258  
    781781        {
    782782          v->rtyp=IDEAL_CMD;
     783          char *tmp = theMap->preimage;
     784          theMap->preimage=(char*)1L;
     785          // map gets 1 as its rank (as an ideal)
    783786          v->data=fast_map(IDIDEAL(w), src_ring, (ideal)theMap, currRing);
     787          theMap->preimage=tmp; // map gets its preimage back
    784788        }
    785789        else
  • Singular/ipshell.h

    r2675bd r760258  
    7979/// load lib/module given in v
    8080BOOLEAN jjLOAD(const char *s, BOOLEAN autoexport = FALSE);
     81BOOLEAN jjLOAD_TRY(const char *s);
    8182BOOLEAN iiLocateLib(const char* lib, char* where);
    8283leftv   iiMap(map theMap, const char * what);
  • Singular/libsingular.h

    r2675bd r760258  
    1818#include <polys/sparsmat.h>
    1919
     20#include <Singular/mod_lib.h>
    2021#include <Singular/subexpr.h>
    2122#include <Singular/tok.h>
  • Singular/links/ssiLink.cc

    r2675bd r760258  
    6060#include <time.h>
    6161
    62 #define SSI_VERSION 8
     62#define SSI_VERSION 9
    6363// 5->6: changed newstruct representation
    6464// 6->7: attributes
    6565// 7->8: qring
     66// 8->9: module: added rank
    6667
    6768#define SSI_BASE 16
     
    11391140        fputs("99\n",d->f_write);
    11401141        fflush(d->f_write);
     1142        if (d->f_read!=NULL) { s_close(d->f_read);s_free(d->f_read);}
     1143        if (d->f_write!=NULL) { fclose(d->f_write); d->f_write=NULL; }
    11411144      }
    11421145      if (d->r!=NULL) rKill(d->r);
     
    11501153        struct timespec rem;
    11511154        int r;
    1152         do
     1155        loop
    11531156        {
    11541157          r = nanosleep(&t, &rem);
    11551158          t = rem;
    1156         } while ((r < 0) && (errno == EINTR)
    1157             && (si_waitpid(d->pid,NULL,WNOHANG) == 0));
    1158         if ((r == 0) && (kill(d->pid,0) == 0))
     1159          // child finished:
     1160          if (si_waitpid(d->pid,NULL,WNOHANG) != 0) break;
     1161          // other signal, waited s>= 100 ms:
     1162          if ((r==0) || (errno != EINTR)) break;
     1163        }
     1164        if (kill(d->pid,0) == 0)
    11591165        {
    11601166          kill(d->pid,15);
    11611167          t.tv_sec=5; // <=5s
    11621168          t.tv_nsec=0;
    1163           do
     1169          loop
    11641170          {
    11651171            r = nanosleep(&t, &rem);
    11661172            t = rem;
    1167           } while ((r < 0) && (errno == EINTR)
    1168               && (si_waitpid(d->pid,NULL,WNOHANG) == 0));
    1169           if ((r == 0) && (kill(d->pid,0) == 0))
     1173            // child finished:
     1174            if (si_waitpid(d->pid,NULL,WNOHANG) != 0) break;
     1175            // other signal, waited s>= 100 ms:
     1176            if ((r==0) || (errno != EINTR)) break;
     1177          }
     1178          if (kill(d->pid,0) == 0)
    11701179          {
    11711180            kill(d->pid,9); // just to be sure
     
    11741183        }
    11751184      }
    1176       if (d->f_read!=NULL) s_close(d->f_read);
    1177       if (d->f_read!=NULL) s_free(d->f_read);
    1178       if (d->f_write!=NULL) fclose(d->f_write);
     1185      if (d->f_read!=NULL) { s_close(d->f_read);s_free(d->f_read);}
     1186      if (d->f_write!=NULL) { fclose(d->f_write); d->f_write=NULL; }
    11791187      if ((strcmp(l->mode,"tcp")==0)
    11801188      || (strcmp(l->mode,"fork")==0))
     
    12661274    case 10:res->rtyp=MODUL_CMD;
    12671275           if (d->r==NULL) goto no_ring;
    1268            res->data=(char*)ssiReadIdeal(d);
     1276           {
     1277             int rk=s_readint(d->f_read);
     1278             ideal M=ssiReadIdeal(d);
     1279             M->rank=rk;
     1280             res->data=(char*)M;
     1281           }
    12691282           break;
    12701283    case 11:
     
    14471460                        if(tt==IDEAL_CMD)       fputs("7 ",d->f_write);
    14481461                        else if(tt==MATRIX_CMD) fputs("8 ",d->f_write);
    1449                         else                    fputs("10 ",d->f_write);
     1462                        else
     1463                        {
     1464                          ideal M=(ideal)dd;
     1465                          fprintf(d->f_write,"10 %d ",M->rank);
     1466                        }
    14501467                        ssiWriteIdeal(d,tt,(ideal)dd);
    14511468                        break;
  • Singular/maps_ip.cc

    r2675bd r760258  
    4343#include <polys/monomials/maps.h>
    4444#endif
    45 
    4645
    4746/*2
     
    265264
    266265      number d = n_GetDenom(p_GetCoeff(p, currRing), currRing);
    267       p_Test((poly)NUM(d), R);
     266      p_Test((poly)NUM((fraction)d), R);
    268267
    269268      if ( n_IsOne (d, currRing->cf) )
     
    271270        n_Delete(&d, currRing); d = NULL;
    272271      }
    273       else if (!p_IsConstant((poly)NUM(d), R))
     272       else if (!p_IsConstant((poly)NUM((fraction)d), R))
    274273      {
    275274        WarnS("ignoring denominators of coefficients...");
     
    280279      memset(&tmpW,0,sizeof(sleftv));
    281280      tmpW.rtyp = POLY_CMD;
    282       p_Test((poly)NUM(num), R);
    283 
    284       tmpW.data = NUM (num); // a copy of this poly will be used
    285 
    286       p_Normalize(NUM(num),R);
     281      p_Test((poly)NUM((fraction)num), R);
     282
     283      tmpW.data = NUM ((fraction)num); // a copy of this poly will be used
     284
     285      p_Normalize(NUM((fraction)num),R);
    287286      if (maApplyFetch(MAP_CMD,theMap,v,&tmpW,R,NULL,NULL,0,nMap))
    288287      {
     
    391390    ideal src_id=idInit(1,1);
    392391    src_id->m[0]=p;
     392
     393    char *tmp = theMap->preimage;
     394    theMap->preimagei=(char*)1L; // map gets 1 as its rank (as an ideal)
    393395    ideal res_id=fast_map(src_id,currRing,(ideal)theMap,currRing);
     396    theMap->preimage=tmp; // map gets its preimage back
     397
    394398    res=res_id->m[0];
    395399    res_id->m[0]=NULL; idDelete(&res_id);
  • Singular/mod_lib.cc

    r2675bd r760258  
    22
    33#include <resources/feFopen.h>
     4#include <reporter/reporter.h>
    45#include <polys/mod_raw.h>
    56
     
    3132  const unsigned char mach_FAT[]={0xca,0xfe,0xba,0xbe,0};
    3233  const unsigned char mach_fat[]={0xbe,0xba,0xfe,0xca,0};
     34
     35  const unsigned char utf16be[]={0xfe,0xff,0};
     36  const unsigned char utf16le[]={0xff,0xfe,0};
     37  const unsigned char utf8ms[]={0xEF,0xBB,0xBF,0};
    3338
    3439  int i=0;
     
    113118    goto lib_type_end;
    114119  }
     120  if ((strncmp(buf,(const char *)utf16be,2)==0)
     121  ||(strncmp(buf,(const char *)utf16le,2)==0))
     122  {
     123    WerrorS("UTF-16 not supported");
     124    LT=LT_NOTFOUND;
     125    goto lib_type_end;
     126  }
     127  if (strncmp(buf,(const char *)utf8ms,3)==0)
     128  {
     129    WarnS("UTF-8 detected - may not work");
     130    LT=LT_SINGULAR;
     131    goto lib_type_end;
     132  }
    115133  if(isprint(buf[0]) || buf[0]=='\n')
    116134  { LT = LT_SINGULAR; goto lib_type_end; }
  • Singular/subexpr.cc

    r2675bd r760258  
    223223        case NUMBER_CMD:
    224224        case BIGINT_CMD:
     225          if (t==NUMBER_CMD)
     226          {
     227            number n=(number)d;
     228            nNormalize(n);
     229            d=n;
     230          }
    225231          s=String(d);
    226232          if (s==NULL) return;
  • Singular/table.h

    r2675bd r760258  
    6161,{D(jjCOLS_IV),    COLS_CMD,        INT_CMD,        INTMAT_CMD    , ALLOW_PLURAL |ALLOW_RING}
    6262,{D(jjCOLS_BIM),   COLS_CMD,        INT_CMD,        BIGINTMAT_CMD , ALLOW_PLURAL |ALLOW_RING}
     63#ifdef SINGULAR_4_1
     64,{D(jjCOLS_BIM),   COLS_CMD,        INT_CMD,        CMATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}
     65#endif
    6366,{  jjWRONG ,      COLS_CMD,        0,              INTVEC_CMD    , ALLOW_PLURAL |ALLOW_RING}
    6467,{D(jjCONTENT),    CONTENT_CMD,     POLY_CMD,       POLY_CMD      , ALLOW_PLURAL |ALLOW_RING}
     
    219222,{D(jjROWS_IV),    ROWS_CMD,        INT_CMD,        INTMAT_CMD    , ALLOW_PLURAL |ALLOW_RING}
    220223,{D(jjROWS_BIM),   ROWS_CMD,        INT_CMD,        BIGINTMAT_CMD , ALLOW_PLURAL |ALLOW_RING}
     224#ifdef SINGULAR_4_1
     225,{D(jjROWS_BIM),   ROWS_CMD,        INT_CMD,        CMATRIX_CMD , ALLOW_PLURAL |ALLOW_RING}
     226#endif
    221227,{D(jjCOUNT_IV),   ROWS_CMD,        INT_CMD,        INTVEC_CMD    , ALLOW_PLURAL |ALLOW_RING}
    222228,{D(jjSBA),        SBA_CMD,         IDEAL_CMD,      IDEAL_CMD     , ALLOW_PLURAL |ALLOW_RING}
     
    12211227,{D(jiA_BIGINTMAT),CMATRIX_CMD,    CMATRIX_CMD}
    12221228,{D(jiA_NUMBER2),  CNUMBER_CMD,    CNUMBER_CMD }
     1229,{D(jiA_NUMBER2_I),CNUMBER_CMD,    INT_CMD }
     1230,{D(jiA_NUMBER2_N),CNUMBER_CMD,    NUMBER_CMD }
    12231231,{D(jiA_CRING),    CRING_CMD,      CRING_CMD }
    12241232#endif
  • Singular/walk.cc

    r2675bd r760258  
    67936793    // We only perturb the current target vector at the recursion level 1
    67946794    if(Xngleich == 0 && nlev == 1) //(ngleich == 0) important, e.g. ex2, ex3
    6795       if (MivComp(next_vect, omega2) == 1)
     6795      if (MivComp(next_vect, omega2) != 1)
    67966796      {
    67976797        // to dispense with taking initial (and lifting/interreducing
  • Singular/walk.h

    • Property mode changed from 100644 to 100755
    r8aa977 r760258  
    5252
    5353/* Okt -- Nov'01 */
    54 // compute a Groebner basis of an ideal G w.r.t. lexicographic order
     54// compute a Groebner basis of an ideal G w.r.t. lexicographic order 
    5555//ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M);
    56 ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M, ring baseRing);
     56ideal Mwalk(ideal Go, intvec* orig_M, intvec* target_M, ring baseRing, int reduction, int printout);
    5757
    5858// random walk algorithm to compute a Groebner basis
    59 ideal Mrwalk(ideal Go, intvec* curr_weight, intvec* target_weight, int weight_rad, int pert_deg, ring baseRing);
     59
     60ideal Mrwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad, int pert_deg, int reduction, int printout);
    6061
    6162/* the perturbation walk algorithm */
    6263
    63 ideal Mpwalk(ideal Go, int op_deg, int tp_deg,intvec* curr_weight,intvec* target_weight, int nP);
     64ideal Mpwalk(ideal Go, int op_deg, int tp_deg,intvec* curr_weight,intvec* target_weight, int nP, int reduction, int printout);
    6465
    6566/* the perturbation walk algorithm with random element */
    66 
    67 ideal Mprwalk(ideal Go, intvec* curr_weight, intvec* target_weight, int weight_rad, int op_deg, int tp_deg, ring baseRing);
     67ideal Mprwalk(ideal Go, intvec* orig_M, intvec* target_M, int weight_rad, int op_deg, int tp_deg, int nP, int reduction, int printout);
    6868
    6969/* The fractal walk algorithm */
    70 ideal Mfwalk(ideal G, intvec* ivstart, intvec* ivtarget);
     70ideal Mfwalk(ideal G, intvec* ivstart, intvec* ivtarget, int reduction, int printout);
    7171
    7272/* The fractal walk algorithm with random element */
    73 ideal Mfrwalk(ideal G, intvec* ivstart, intvec* ivtarget,int weight_rad);
     73ideal Mfrwalk(ideal G, intvec* ivstart, intvec* ivtarget, int weight_rad, int reduction, int printout);
    7474
    7575/* Implement Tran's idea */
  • Tst/BuchDL/Ex_L5.res.gz.uu

    r2675bd r760258  
    11begin 640 Ex_L5.res.gz
    2 M'XL(",T0"TX``T5X7TPU+G)E<P"E6FUSVD@2_NY?,>6Z#U(LL&8D\;(^4[6W
    3 MFWA)0BZ.DT^I)"6#L+4+B$7R&K%U__VZ9S0](Q`&[DB,8::[IU^>Z>EI^>[S
    4 MK\,/C#$^8.^'_V+G15ZT9^G]^=79734C!@P&?Z2+M'#<JS/\S08#]GK]XWW4
    5 M7B3/[;R("Z(.!HP^AVWS.6JSR\OKQA<#6?%\.4N`B$>LF:AZD;Q.FZW2Q0/[
    6 MM"XW[)KY'G/67NEMO,*%CY.E$[C>)'>XZQI+N@.63I)XQH;`L1:M0G3+C<?6
    7 MFU;!@Q(^P.]P(PQ#;\#FV>0)-!L!1UYNG*%[96SJ#]@2E"B<$2S2XAYC+1!W
    8 MM@$IWAJ^G>$;*T&X9N'^`-S0&L"PCW/PDGPTS]MZ?B-`3&OM26DT+V@>M$;)
    9 MWAJ%T'Q0N>7=EEO`*9,E&<9#\@0'JG0>+QUTI(?F&6&1,;].-D*RRTNV2B9/
    10 M8URN>$S0/>5#FN3$WADHOKR8."-NXL"[Y#<<!9^!#]!7H.T9_*PM%7KDKXI,
    11 M3_2-(Y!1CPN_;3EX3</@5VV*T*'D:`6:H35GV4):(LTJTFQ!M@A!*@M0&42C
    12 M+O"#*F]J*HO`#K&EL@A)-<E(XY&)N:TR(AP526!-3WKJQU?^[7KSZB%9`+I;
    13 M^$NX,"B^7?O$U:75&ZDU6:]MR&K\?;-G`_!EGA2TS2B``=?P>0N^'(*5Y46Q
    14 M"<P\>$MOF+<F[@%X1LM[5Y-'<'Q;QYG-'`V:4'@(A,$^$`9U$&*H),!\&58%
    15 M1OB\D1_@:^F=^=4@1)ND]&K!UA+T;-^..,FL9D/?CCNMHF>Y#>1J79J$-$`X
    16 M?JMP?!R0PZ`!R+Z&LC+8MM:8&H9;N+8LB>K(MHWLU,!=L["[9:$Q#]"9IYO$
    17 MJ>$?U26*OE%&CT6^@6[$K<_@K#_2V4QBV*L!+Y)[=?=`LLZC+G/@C&-W29Z#
    18 M']T73B<2&NH<_&R2\+/7D(:C2./^C3R0\"CRV#-XZ5F4AJICCM0(?+9<96,V
    19 M2?/E+"Y_2V?W'[-9Z2@Q-[3!(W#A^9>[GV]>_\1VB&]`C1N635E1+A.E`?$!
    20 M9'^^N_LR0KX;-G_*"W:?L)@]9O,,<DB2/>7L9I4E]XMDQ>[C/,W9-%NQ>%%9
    21 M@E(!>5I>!X)"KQBP^%>BG),JA-X-/]Q\>?_S)T@,TL%7+(]+U`[76L4%8+DF
    22 MCEOB;)7TN0[+?VH3-43^T^O/7SY]`&,^9(O$S,`Y^>'?G]%(QGY5[E$KH9.2
    23 M5<&6X*A%-D^529\NAX87XGM.7P#Z?].7#FH'FXM-()Z3=`Z>;O&K2EW8GY/D
    24 M894D*/"W=&L5DM&K9/R5C-DX`SF/H)%SXPDZ<Y>K)$\64'2!O]APJ,0IK?-D
    25 M926_KJ_UR3%7X(X:9Z01Y@M4,WEP;G^,7';!B4\@GPS3;:$`7$C@:K[Q8[QX
    26 M2&KQ+#)V^[7X1B)"%('FL5L\"GR"<U<Z"3'CH&;I-:B3_O,ZA_?K]((3@KO2
    27 M$>3;7@4D*>UV=#'.OJ;?7A7?G;1E9?6>U/P_]-76(I6,5P0?-`0C;D4:_.`4
    28 MI$&/PIE.XS%P<U/[]:1VLQ2V1VQ&^[ZQK;)K<L&W+>N+FF7]4%D6X^&V@`@6
    29 M3NRQ_.D^+QS0VBL\[EZB!AZKV=KO:(^D$FW3J8/T+E3`AJ:G:"H#\->K5,]R
    30 MW[>]Q7U!WOJ(7G9@M>_.Q'T5?P4KOI&9W#=NO8=]C(ZAJ<ZN![;LYWXMLIQ7
    31 MD56BX/V54URD8+(^U<;9?/E4)#BEPC3.DNFTS>Y+V`SCIQ7F#=*-"R5-6O!Q
    32 M=%$9T4HK,UJ`&A!$"O.PY@,N]5<GY,>1:\A`9T/4IXS,L>#<SJ]8:[QQJ_T*
    33 M.Q4R)29M.,Q6"9NFJ[PX"PK:;EQP.LQJPZ)M5@FLSV%UGLGSA304T:&S3`2G
    34 MGF4<B]!T"FQ9X4R2:;I()DZ:OYG%A>NZ?ZL;(Z;A6?:@;HW&2:*K;VAV!J%9
    35 M<[5:/B)^57T*H0]:!K]<@*?5>@Z0614`#_R="H`'<#I,@?9]-G[**P99!:-0
    36 M(A+U"KDV9[DYT,?X'=VC"H>WV\*M+I@<+IA+HVH0;=\ND8*M7^%O^"*J+\*5
    37 M,]^%X80#'B$S)'5Q/I`\WX4J\&N<,!2HH4HR#(0P\%TM2G*W[@)UL9IHZR90
    38 M7T@3]2VBK:4K$JN:;50&ZUD%!U[A03E3G2M$)1I@P1$6MN[`1`R!51#@BW!4
    39 M9R#ZL)E>&ETMIFPW+-$^%FZQ"(.$L+,/M&%W%[18[#:#MBE<5N&[GP@KX3_5
    40 M\5W=?.K>($TCON5N=;GBGE)#4XE]]D3!KCU8_NZQ1]]6;5Q$T;9!!E-1IX[-
    41 M&E_7;%4L=NES7U?[WIT'EMR2&1W_4((,Q,D)$@O2[03Y+LLW3[/?5%HL#R;*
    42 M#KC73I0-#1O>"71RF6)RV6"?:5VVL&=E:$(*YE!67#9FX2"*6:UPG,=P$U_+
    43 MXO;Z]JM<\QN)BO0ML6Z+,_6&GN^ZVZ+]XI$I2E896<)%LO36)+`S,-=`>US>
    44 M9_8LQ'<7XE!O;2]$R.OT=M'8,?T,CN6P<N(#.K%4URWK".WR/68_'&\V7#%!
    45 MZKHDF>:XV9D*]AC_<+SQ``0?KI9X;2\]WY@:VGTS2:%G:MTFX*&)S@O:B%UM
    46 MQ&*R/Q3=AD37M79IUPH+5O9JQU(@>OS@5@U/WJH]T=""AEIR4:2+)[4G8#/4
    47 MECA":&!5"8'P_0!0Y?CM=EC?P#VS.4?#ZWF\ED!T3#G/>[#GX@+VY+TS&GKG
    48 M:8X!>#CWU%40RUBK-\M[L*%@-V>S)ZGX'QE>Y18P@LR^)97:7/=)4:0.$+K>
    49 MN?Q\#E162'WYSN6[D.^!?`_E>W36.OJ%4EO\)TM>)#_ZYEV-,'Z*U"(KXMEQ
    50 M4LEZDQ%.L%0S6]V[X[6LF/NF'#K!&YJ9_S\KFT<$)WA,,UL%,-Y+JT,BGBT?
    51 M8Q\0MHH7DVSN(-"%QWTO,$CKFZ<%>,X`L?KF*&;W`J`'M:.A-VTMWH=CH,(^
    52 M\NZBGWL[_UQKZ5YM,TS'V1_):I',4`?<$E*FM2GZ_?JF((;CM\8!X$KN*NC=
    53 MDV%O0[V)N[(#@G`DO(GA6&`1@[!A_))%FB$X=86P":XOK1`11`5V&RK,3=(5
    54 MA+L`@.;++$]DS"GBPL='?ZJG]@QD+>Y5_\4+_PUWCU(S+&.A\]E:H5_'H-)'
    55 MP@]Y3-$M\!E@#7TP?PSP]H)&YEOQD^4RZ3Y62\0M^UVNX>].[`>F!<G:&@:,
    56 MG!\$(Y&*@R`ATJ"61QNMU*1A4\JMVZU)HQJL&SVA23O'Z]IM@/*6MS2IJ84$
    57 M/LK<OD+@!:I(%N;NH!+QUM5!"-_N.3Q4;7G-+9$%]R:3*06VFBR4OAEJC-I%
    58 M@S!/.Q5"WPQ/K1F..M=M%/+=8%E0;8KE#I&PB4Y/NCLXKW1Z*0%;SWJ/\HIF
    59 M"T\ZWXFM$;7[/:?9.DTY?+\O-5NWQG;0NYJM][_9UM]?M;RP6F">^0GL_F&S
    60 M?IQ-TCD">_%7O,J=.[>%3V*&!M[8`51$5V>4DP(32C,&<5*/;-3??>`3G'2>
    61 M+&3#&4Z8[/>VRV`A<6:>[=`PC%/``]/D,&,0EIJ&M'WGZ2);.;_'X^P>UO64
    62 MJBZ[8$/<R1$),'<L,V;EE:`AKTR29?%XJ",A0D@KDE*:#;8-69KO[Q_<70[/
    63 M*"*A.0;,F&C+IV&JR0DV4$$2&J^;,?-G0R*T#GOU*/FE2V'8.?52*/`A]&Z#
    64 M^Y?181_UFKHV4!'8USZ![3JK*;QIE<)CSYL6-A^>R];:U!B1K^7]F&7C79FY
    65 MH>2V3-6Q\RQXJW;=+R.%60J"U:OCY-/(\G5D^1H[;]1%>_;T;M&SW4/7\[!_
    66 M<B2PB7?8H='1#L5VW_!:]]7U(/ANEL1RK)ZT]=-`G)7/I^53<=F2+'4/OJP:
    67 M[Y0@.EO/$DHS$VRUU4N:";=ZZ8;'"@`^2L:_NL._K7O"/V.[^L?9?P'!SB()
    68 $JR<`````
     2M'XL("-IU6U4``T5X7TPU+G)E<P"E6FUWVCH2_LZOT,G9#W9BJ"7;O#0;SNG>
     3MVZ:TI=N$]E-/VN.`(;X7;"XV#>:>_>\[(UDO!A-@ES9@I)G1O#P:22-&7W\?
     4M?":$T#[Y-/@7N<BSO#6/'R^N&Z.RA_4)-/Z,DSBW[.L&?I)^G[S=_/P4M)+H
     5MN97E8:ZHO3Y1SWY+/P<M\NK53>V+@*QPL9Q'0$0#4D]4OI2\=HNLXF1&[C?%
     6MEMP0UR'6QBF<K9/;\#A96I[M3#*+VK:VI-,G\20*YV0`'!O6S%FGV#IDLVWF
     7MU"O@`3[]+=,,W3Y9I),U:#8$CJS86@-#7*]/EJ!#;@VAL4D=0IH@K;$%(<X&
     8MOC7PC10@6[)0MP]>:/:AV<4^>`&?ZJ4MV;ME(*2Y<;@LU<]4/ZB,<IV-ZO-*
     9M?WS<\0=X8[)4.E-?N8`"5;P(EQ9ZT#'LHH&VNDH$=A+0@*RBR7J,@^5/$7JE
     10MF,51IMC;?<&7Y1-K2`VY'>4O;`5?H>W@(]"U`7\;HM!"N\I/)9GLZ&D7(*-L
     11M9V[+<*SR"@./2E.8C"!%*]`,J3E)$VX)-RN/TT39PIA2F8'*(!IU@3]4>5M1
     12MF7EF:`V5F:]4XXRJ/=#1-E5&8*,B$8SI<$_]_$X?;K:7LR@!4#?Q@]G0R!YN
     13M7,754:/74DNR;DN35?A[>JIZX,LLRM7L4@'TJ`3/!_#E`*PLKO*MI_O!6W*>
     14M?-!Q]\`S4M['BCP%Q@]5G)G,0;\.A<=`Z!T"H5<%(8:*`\SE815@A.<M?X"O
     15MA=-PRT:(MI+2K01;2I"]/3/B2F;9Z[MFW-4HLI>:0"['59V0`!2./P@<GP9D
     16MWZL!LBNA+`PVK=6F^OX.K@U+@BJR32/;%7!7+.SL6*C-`W1F\3:R*OA'=15%
     17M3RLCVP)70S>@QC,XZ\]X/N<8=BK`"_A<W5^'C&6H0RQ8VL@HRC+PH_W"HJ2$
     18M^C(#/^L4_.S4).$@D+A_Q]<A7($<\@Q>>F:%IFKKE30`GRU7Z9A,XFPY#XOW
     19M\?SQ2SHO+"'F5DWP`%QX\6WTYO;M:[)'?`MJW))T2O)B&0D-%!]`]LUH]&V(
     20M?+=DL<YR\AB1D#REBQ1R2)2N,W*[2J/')%J1QS"+,S)-5R1,2DM0ZE,DQ;4A
     21M)NH5`A1_1<(WL0#H:/#Y]MNG-_>0%[A_KTD6%J@<#K4*<X"R*8T:TDR%Y&(.
     22M@]^W%#7$_?[MUV_WG\&4SVD2Z1Y8(S__^RN:2,COPCE\(((NBE8Y68*;DG01
     23M"X/N7PTT+T3W0GT!X/^MOK11.YA:9`+1G,0+\'.37I?JPNR<1+-5%*'`]_'.
     24M*$I&MY3Q*QJ3<0IRGD`CZ]9A:L5=KJ(L2F"G!>XB@X$0)[3.HI61^CJNU"?#
     25M3('S:9PJC3!;H)K1S+K[.;3)%55\#/EXE.YR`=^<PU;RC9_"9!95PIFGY.Y[
     26M_J!$^"@"S2-WN!"X"LP=[B1$C(6:Q3>@3OS/FPS>;^(KJO#;X8Y0ONV6..+2
     27M[H97X_1[_'"9_[#BII'3NUSS_ZBOIA8Q9[Q6\$%#,.)&I,$/5JXTZ*IPQM-P
     28M#-Q4C\.5F\<P-T+5V'.U9:55DRNZ:U>/5>SJ^<*N$!>V!.*76Z%#LO5CEEN@
     29MLY,[U'Z%XSND8FFO+?T1<ZQ-IQ;2V[#IU31=05.JCQ^7L>REKFOZBKI,^>H+
     30M^MB"T7Y8$_LR_`Y6/&@V[=-'F,.&5ZC;WG?`COG4K825TC*L0A2\7UKY50P6
     31MRP5MG"Z6ZSS"+A&C<1I-IRWR6,!,&*]7F#.4,":$<?V_#*]*$YIQ:403$`-R
     32ME+[4KWB`<O7%VOAE:&LR4%D3]50NIKC5W,VLN,MX9Y=S%68IY$A,U[",K2(R
     33MC5=9WO!R-=4HHVH9JS2SEA[%,Y[]<B7C*XO2D`7'5C'FG;N*4=Q^QE-@2W-K
     34M$DWC))I8<?9N'N:V;?\MCHB8@N?I3!P3M9-81Q[)S.RA>O59:OF$Z!4[4XB\
     35MU]3HI0P\+<:S@,Q8^ZGG[JW]U(.580JTG]+Q.BL9^/X7A2HB5MT;5_H,-WMR
     36M`1^I\U-NT5:+V>6)DL*)<JE5]8+=XR12D,TE?L(75GYA-N_YP30G+.T(F8%2
     37M%_L]SO.#B:U]A1.:/-%42H8&'QI^B$&5W)U30%6L)-HY`U0'DD0]@VAGZ)+$
     38MV,?6*H,[60$'6N)!.+.""I_5H((B*DS5;4?1>\96`%\*10?H_7IZ;G(YEK!<
     39MLP2'6*C!PC0._/8AR/J=?<CB)K<>LG7!,C:\AXEP!_R76+C+$T_5&TK3@.YX
     40M6QRJJ"/4D%3LD#V!MV\/;GL/V"-/J28J@F#7((VHH%U%9H6OHR<J;G+5<T_N
     41M\IV1`Y;<*3/:[K'TZ+&STR-N17?3X\<TVZ[G[T52+(ZFR3:XUTR3-64:VO9D
     42M:IEB:MEB76E3-+%$I6E\%<P!WVN9F(5E*"25+>,BA!/XAF]K;^Z^\S$?E*A`
     43MG@ZKMEA39^"XMKTKVLV?B*`DI9$%'"`+58VB[79?'__,=GZ..3`0W1^(PE9K
     44M=R`7#J>4;*-56MJDA'?WT=G6=0V*&V/AU!DZM1#'+F-![=`#;IB=[@8X:H+4
     45M3:%DZL5GK\L[X(S9Z<X`8+APQ,3C>^&XVE3?K)]Q"ME3J3H!C^IHOZ`-V]>&
     46M)9/30].I280=8Q9WC##AGE_,:!68+CTZE?VSIW*7U52D8:.9Y'&R%G,&)DME
     47MB!.$>L8>PF.NZP'*++?5\JL3O*LG[W!PLP@W')B6WNK3+LS),`<G/EK#@7,1
     48M9QB0V84C#HFXR35H8;K!7$_G:Z[VGRD>\1)H05;7H%/%K\<HSV,+"&WG@C]?
     49M`)418)>_4_[.^+O'WWW^'C2:)[]0:I.^-N0%_-'5[Z*%T'.DYFD>SD^3JJS7
     50M^>$,2R6S4=,[7<N2N:>W2F=X0S+3_V=D?65PAL<DL[$YQA-KN82$\^53Z`+"
     51M5F$R21<6PIPYU'4\C;2>OD/`50B(Q3=+,-M7`#W85VIZ7>RB/5@D2N0C[S[V
     52MJ;/WSY@,O6YE,DS'Z9_1*HGFJ`-."2[3F!2]7G52*(;3I\81X'+N,NB=LV%O
     53M0KV.N[0#@G`BO!7#J<!2#,R$\4L620;OW!'\.KB^-$*@(,JP$%%B;A*O(-PY
     54M`#1;IEG$8ZXBSER\!Q2UMF<@:U*G_,]>^*^YNRHQPS`&.I^-$7I5#`I]./R0
     55M1V_)&=X(5M`'_:<`[R!H>+YEKPV7<?>12B)NFN]\#'>_XS`P#4A6QM!@I/0H
     56M&!4I.PH21>I5\FBME9+4KTNY5;LE:5"!=:TG)&G[=%T[-5#>\98DU3LAAA><
     57MNP<,/%[E4:)/%B(1[QPL&'/->L2L+-9+;HXL.%7I3,FP#&6@]-U`8M3<-#!]
     58M!RH0^FYP[I[AI'7=1"'=#Y8!U;I8[A$QD^C\I+N'\U*GEQ*P<0-\DE<DFW_6
     59M^J[8:E%[V'.2K5V7PP_[4K)U*FQ'O2O9NO^;;;W#NY871O/T32##RB`6\<?I
     60M)%X@L)-?X2JS1G83;VCTKQT85@<%T75#Y21/AU*W09S$50YGQXN=>!$E>-P@
     61ML,"D?[1L`N.PAK[R4<W0KN+MZ0J(;H.H5!14LW<1)^G*^B,<IX\PK",TM<D5
     62M&>!$#I0`?<#2;49:\6K2RB1:YD_'RA7,AZS"*=%J//@-2)P=+BZ,7@T:*B"^
     63M7@5T&VOQ2S)1_P0;U'[$UT[7;?HG1,PWUGIQO_S2B=!OGWLB9'@SO5_[_FUX
     64MW$?=NI(.;`C,,Q_#6IY1+]XV"^:0YVT3*Q'/17.CMQB!*^7]G*?C?9F9IJ2F
     65M3%'.,W[+PT0M[[<AAZR*@5''TVV&IP/#TUB44P6V9T=.%=G;.78R]WMGQP'K
     66M>\?=&9SL3JP$#FYDP5TV@N?F4<C;JAE;7A%B+[^SYA?EO%I9R.)\45;D579H
     67L[UPR%+K'VZFW%ZK'WRFR:QXC`'B_C+^_PU_9K?$';=?_:/P7T_42U+4G````
    6968`
    7069end
  • Tst/Long/deform_l.res.gz.uu

    r2675bd r760258  
    11begin 640 deform_l.res.gz
    2 M'XL(")`IVE0``V1E9F]R;5]L+G)E<P#M7/EOVS@6_MU_!;=8H+9)IA8E'TG&
     2M'XL("$QZ6U4``V1E9F]R;5]L+G)E<P#M7/EOVS@6_MU_!;=8H+9)IA8E'TG&
    33M`:S+CN/TV%F@`P1IQHW55CNVE5H^)`_F?]_W*.KPT29NT^YB$">Q)/+CX^/U
    44MO?<H*;_^VSY_20C1SLB+%R/O0S";W(R/YN&\]*O*$4>0,PZF'PF9>^$\)(`A
     
    99M:C@=(1Q3\=(/R>?%,/3YIV`2?/2F7K`(`7XW\T)O.O=&9.6#M)7G?_PTYTOO
    1010M=A[,2C6V\8.B_.D'[%LO]"?0MJ3SAG,_F)X0-SPA)=E0VEGKU(S6@EKP9T=K
    11 MZJRI&]-N1'O%3D"!-S<WQ`'-4$9(@@]D`O*3CBBT#6&E^^#S8`[?.?XP7:3X
    12 MYXFHY]`S\\5L"MTRE(/#2#B,R8!AC1^"Q4S.@/"(G$_)X$J[)L,9*`I=YHU.
    13 M4`PAPY!`O\S\2';+AL9%-?'RDU=L1*%+V;:H_K:HO7VU4^Q?4"R,U_%'WY.E
    14 M7,@)1B#M2$Z.@`QO;[TP1$U`QF@X'S(RC^^\$L$/*$1>1VULYBD)O;F<^Z^C
    15 MTV2!E-VPDI[V\]-_P:GLT,&5N(89BZ5?N`'QHKDW':&$-T'[=0!)+$'IB,*N
    16 M\";OO9%$R(I4!^UOY.#*R(3WPX)PE/<"VY>M,B"I/_SQF`SRA2?.OLXZAW\R
    17 MT4!HBB*T(D6P186-[G(-C)PDZ@"+=!X+!A,R6L#,9/&"K76^R)E'J^]217V;
    18 M*K3:)E<T'I\6=":8S@SX$4Q+_AY"#;)YU(F@A=2$-1C1[H*>Q]!::BYH%U9G
    19 M'RD2UBFNSQ[D10(Z@5H+VL-,N)+]03L+:DON`$*?S<EM,+E;S&5-H`-4_''F
    20 M>6![$#&%.4$\M61P,N4SZ*3$[2X75I_!28\Z>.STN'/.2AU,AZ/3I<+JL9)]
    21 M3CM]%%>MDCYVV33`NJ>CX6R$$OWP/FWT!VO#A2NZJ4IXT:/"%)ER'"YV-$1$
    22 M5ZE)H<CY=^EJ)+H&)'@?SF>+6\S&%!S=\),WPO/=.9-,D7VL5-*8^A7R-SO'
    23 M;W*@#=CHI9U.*O:1ZJ)B#VUVT"&FQ`VO-*9=,WD4ZJBKHZ&.=75L7#\9D[^U
    24 M,6GDO-V`(FLAO8@%!]Y>"!XOI%^QR'D;W<F<LAO0L-06;5#W%G,;DKG]C_[H
    25 M'YFD5L%FP?*=PJ"#6#*3HPCZ3'&XQ^1V,5OB?/#2-3TB]QNMXR-HU70NAPFK
    26 MS_07->7QS@1)S5E9.SH:4:VRX?4*+>^8)@`GPTA>E;5*C@&SF\ZE"8SGU0A[
    27 MW6]>H<!K!B="2K[.2^AG1'T2J3ZTLCQAHB#4V('@Z);]9@&SQWHVMZVGL3D$
    28 M^N,;3Z`1_'F(P3R4=+[?(II5&PU-U:;V.R!HJVK?:TF^WRIHA]H`U#)34NGX
    29 M1.9/9/Y-9"Z0S+_8$C?\4A/4)&I'95%Y!P8`.*X:E?4*-ZN81.TJ)I74').P
    30 M)%\AC0I,X0PI%%+/D$:&K%>HE2-UA300J2=5BX)`O4)->552TUC"4H%""31S
    31 MN:G`!B*-1*"N8)T<!@)WUEV-X31(OA'(LJO\B"6IQ8B574,?="CP3+$<E_I9
    32 M;+N472B%I[()U&1$E9;EF)17J%.V@'98BDZ/:3[$(K+6HOZ[=1:D":P<AT,F
    33 ME9):;:6_2#63=>;2$G1Z+-:-;4G*<96-5]QD.^CLF)JW;-JB3Y%X$0PF:I:\
    34 MX2`,;D8WHQ.PYDC',_\6"&L*"QU,0N?=5SR"_?Z!0/]`?3;]`SWS#_1VYAML
    35 M>@:Z]`S`N9BRR6GJ(K3R;'0*<'.P/&UKI]-?1J?3]A2\BRP?`FKR9X*88,[I
    36 MY)?VZ'32G@"(_.FWVGZ+1>4I3MM)Y?2OK%P=RN57C<Q+@,JA"6!X[\;^A[@,
    37 MI;5:[BKHS5U7H04A[[-)C.U\=L_VW`\(N;]A)^Y_XCT`5=C<JF(`:U8=.'.`
    38 M:B""!M;@=M6E+F8YU2Y068]WDQR'.U47>*4G70\+"KH'>1V'>0Z9AAL*%O4K
    39 MJE?4KJC<D[OQY&Y\D[NAM^YQ-PJ.A;3^8+BZR<&L=@ONA'(WE$\`!Y>[*4#/
    40 M`&#1>M(1P1E=<!R4,R+]`#WU`V#VYYY(O>")*(^".JDBO8++H)P+Z2O(0R]K
    41 MZ_%>&V74BC9JOH+!&(_]NSG8IQ`Z8C$>SOQY3$AYKK6;DCPUG<U%6Z]\T61E
    42 MHC6U\3IKD,V-5[9DJPH;Y1;)$'FL>@S0Q9*O5S)\7V$H'R]9#`']"G<GEX(O
    43 M5C*FAT2A+J.8KI<(C@1=8]"?2]9WK<?QMLEH_H1`L\8T]N/"S>385,>6.AX_
    44 MAB&Q;.JXW`93T;&Y@\:DXW*K2[OB,39A?\#&YK?'LEE3DY9N-/0'&IDO#MZ3
    45 M\?D;&Q_#>*CQD6S(.VMNQ]2):'=).TYF?"1)\DY,S<6*6@ON+*F[PILYMJ#"
    46 M[,*IH*;MT(Z9VR-)J=1<K_#VCAUQ9T%=N+9C;CHK;H$7!G4XW<Q$2?+EG8C:
    47 M2^ZL:1?4$+EA4IQ,3<"8*T&MB%LK;B<W=B')7E*LOPM2X\Q420*G-N@+FMNK
    48 MDEH"[93241*(`0%)X9):&^V4ZC<:FK2SI-9-.[4"M!.AONX"E!#<!$3:]_7]
    49 MQK"1QD[-'8NU<;/0:&;VZAP-2!2K.X5HE.3-0C!9ZP5;+]EBF9=J[=BB<VWG
    50 MEF%]TQB)V@\/8`X/9V1[Z3DVF3K8:MK!AM/^FE[&>)O07="7<`*3:DE?00\N
    51 M<*`NUM`AU%K2`?0H#/Z2]A:/<><0:-ON4NL"XQR+6GUJ7N(II+K4?(D&RZ3G
    52 M\J8=Y)[S<\SM0"Y$$S*W1YT>[;S",CWJ]KB+IU:/=B'L&,"I"S:@3UTLYKB)
    53 M)`>2E"3G@IY?T$32@)X/$DGN!>U?\#ZFF@/:'_`^IO8NN#V@%RCTXI)W7])+
    54 M!`PNN?6*7DK`2VZ_HB]?_:B8JZ\L4U]9IKZR3*J+^LHP]95AZBO#U%>&J9\L
    55 ML.2HU:X9\+'JDR0I%:GIZ8F1GJ1BM52NE@K66E)0<IY*%[7K0\UN%'-0Y#N-
    56 M;CXSGZSOW]GZ'C\X],-9E<=Z2'OT_#*/[9`!8?GG\1R2(9!`9B!37LQMG^+'
    57 MW.@IGLR,7,J7F45+>5-I54.G0$U3U:!Z;:])JVMGV39E7:0!62LU;RO<'CRN
    58 M;!BWNIX;-QU@JW(+-Z)7Y4:ENBH?5U@&-/)-2/RLRDU$M"J`K6]CZ]O8>H;5
    59 MM[&-;:R18<4VMKFK@U36V`:VMH&R.<V]"ASO5;:Y3X%&;:^R$JMM8[5MK+XI
    60 MMU7`BFVLV)1;Q.I[]6UD;2MB=P;-R+`[.NP9--FY2NT<N'_$ZIG0(G9GQ/1-
    61 M;*.`W1DTD6&U;>S.H!F)LMJ6`LV=$9,*&)D"]0)V9\1$AM6VL7M&+%=`+P!W
    62 MADNU.U\0[\3FS&GNC)JV640D=6R5VAD_59$:1%E+8;R;.\.H%?!Y%:U\=[X)
    63 MGK!R:4GJT^H[/NT/WY+_F7LJZ*ND-)RD::E0+96JI6*U5*Z6"M92R>C_9*)2
    64 M\>C_N,K_42>9QJEPD0H7QF-L\/#.._%=.R^U0_=9:@SKE.$&%U5Y^C_:8OG_
    65 M&LLGC_-O['$V6V</<SBW_:W,]]SC7]%.`:(C9,>MDI!6_J#"'F]*0IKYO89M
    66 M)RKS7/<X3106<*&"9J9#T5O*'-L]WE'FX^[QAGA'FMC<Z]WC!4E,^H2%IF7U
    67 M%[T?V<!&BA&9'D6OAV[4I?JRZ.V44A)H[W%O2BDQM/?X,SSIH_3A#JV1-:3H
    68 MR2A4>L]':R85%7V84DHP[3U.2RDEG?8>+Z64$E%[VRTII<S4_K(?HOI&9M*T
    69 M,851%[)+O^*2T&20B@+$A@"]4/VF=T+UO+YT"(51J&_'.5$EE+1L_1V?[8F/
    70 M6C65.JNQF<9F@LUT-FNP69/-6FS"IFR48^7+58_]R:2GT1DAKX-L\W$C,FM!
    71 M9)8$9N0<(>%\5([>&31^I^<>6<LX2UGW,LA3ZZA[N_@ALS\(>&</^F1BP$,$
    72 MXEZ,/?(':5]%U^PJSA\.;8$SJ'(GY5JE_4>>TRKD:!4HR6(H*U^QT`L"C@LP
    73 M@3`]Q^6PXUH!IB-,Y#!1P&D%G`&XF$6LAL`(O0^.9?#`>%&XV-M3XL">.M:/
    74 M\KKKJ"-4D^B7*,JA;3R2:L-9)&(6%U4W"JHWTN*@OVI`C$K#!;[)EK0H2ORI
    75 MI$W8(1L]!L./3_SXS_.DADKRVXT\$490/MCC/V\;I_[S7WP?OMO^\\+S/\<0
    76 ME/V97<BHZS)H3Z!(-@FUFHR;5&``[;A1L<%EP,Z#`DQ&0F@5WZ!5S-NOU63H
    77 MDECRR[!0HIFG#XKIQWEZOY"N2474NG\3Y>E0\U]HP)<8EY2=:/Y.5-+8)$_3
    78 M*EOQ"B0F`0N<2*]9)MP7LIR0JGQ%1[ZLLQNJ2*\AQ!N@,36I!8,JJ!-3%X:W
    79 MP_`A-6I3EW72A]8(!QCN/+/D7#W-QP%&\G@``@"\?7#_@T*"XJZYH*)CTXXK
    80 MM\NYZ%C;DO1#)7%A"X<+TQ'<@C_'%9ELVH$$R':Y83H`M/#+=@5W=5:R=-X1
    81 M#@-Q+LAS0:"+$ET0*;:5,GZN4M0VJ#"E!`N^J2FPB(F2A"7/009H#6)!/,K>
    82 MUPBI@RN5<%$+%]30MUM6__]N&<7:="CB&-2"/T<_N+5IO%F(5DOU@X//.BL9
    83 M\E>7KS'I)`FB<LXY+)`27PVD+B&,48LZ&1*5KD*$)'""BA+FWHF"!E!\['_`
    84 M/8PT&-H;8'TU6-L?J#TTC$IY-HL^WF1AU&4>.PTV(ZI2Z??+\/?2[P/\ZL/7
    85 MS^--@]7E"XXZ,[[&F_AJ<02<R9$S8[P'+:@;JZ>2=6K&W`*(#691]D0),/*>
    86 M><0D@"N`$Z&!!D:%;#N*N1,A"\.TBF#68WE\8U*^QQQQ.Q%/4DE07[9Q=C@+
    87 M"UBI)I!O!^_6<]/A'9?NTMW]')S(X::%*Q9OC.IXA.6-2]P!LZ)3PX*%:<`B
    88 MQGN3`LC!!/K`&F%IPOK&-;NM!^\`S5CX1(%E.U2'50QGPCV<C1]'/>`880/W
    89 M6$A7'53)UN492`!)\`5R0&7@&QN9"!#`24@]J/4AK=O'4<;!'`7L5$_82?X:
    90 M3QSU$S@J=?2,LSU^*$87X(F"2_;L\^=G[-E;^!O=P5<0J`?*M_A-+L7.=(HI
    91 MD."'\GTZ(*$]O"<>A?>^ZB?^!OP&4</;&".)TELJN8C_1J-OX9[:X33S=L=?
    92 MN7_M\]\,^O:+EE^67\W\.0[X!Q_BGN=!<&,\3W;[LXG'\FG.\BDKYX[L<1F]
    93 MX!F*`?%RW9#/GU_#`IC!\4WT+:OWR:OX(2LV7:+UK9W1#9%X\6O0QOW4Y.(5
    94 MYAAYJ(AO`.,(+(>S,E:>K-]7$?G:YZIV3>00(?;7X.'8-P?(?7T(]@$Z5"4X
    95 M;3:$ZN&G8%5^$R4MQLP34JY56/DM^XW)S:/RZ`Z9+OFV$AP,]5TPCM-WG#\O
    96 M@KD/4R_9?/HP"R;)'M-)Z>8*'W\P:"P7;?#^/]XMK)#W'OX3(<3.`Y@20&6R
    97 M8H3TP_O;H"9D@T3);<'!P\L(*"/9[/+0,FF7M9)_3(3_>V@1XHO0_RS]%_O3
    98 &J=0Y20``
     11MZJRI&]-N1'O%3D"!-S<WQ`'-4$9(@@]D`O*3CBBT#6$EC42D1M;>+"!0Y\R/
     12M[BL_#^;PG0LX3+D2BG^>B'H.735?S*;03T,Y6HR$PY@,&-;X(5C,Y)0(C\CY
     13ME`RNM&LRG('FT(?>Z`3%$#(,E=*RGS8T+JJ)EY^\8B,*?<RV1?6W1>WMO)UB
     14M_X)B8;R./_J>+.5"3C`":4=RM@1D>'OKA2%J`C)&P_F0D7E\YY4(?D`A\CIJ
     15M8S-/2>C-Y6)X'9TF*Z;LAI7TM)^?_@M.98<.KL0U3&$L_<(-B!?-O>D();P)
     16MVJ\#2&()2D<4=H4W>>^-)$)6I#IH?R,'5T8FO!\6A*.\%]B^;-D!:_WAC\=D
     17MD*]$<?9U&CK\DXD&AE.<H14Y@RTJ;'27:V#DK%$'6*3S6#"8D-$"9B:+%VRM
     18M\T5.15I]ESOJV]RAU3;)H_'X/*$SP71FP(]@6O+W$*Z0S:-.!"VD)JS!B'87
     19M]#R&UE)S0;NP.OO(F;!.<7WV("\2T`G46M`>9L*5[`_:65!;D@DP_&Q.;H/)
     20MW6(N:P(=H.*/,\\#8X2(*<P)XJDE@Y,IGT$G)6YWN;#Z#$YZU,%CI\>=<U;J
     21M8#H<G2X55H^5['/:Z:.X:I7TL<NF`=8]'0UG(Y3HA_=IHS]8&RY<T4U5PHL>
     22M%:;(E.-PL:,A(KI*30I%SK]+5R/1-2#!^W`^6]QB-J;@Z(:?O!&>[\Z99(KL
     23M8Z62QM2OD+_9.7Z3`XW"1B_M=%*QCU07%7MHLX,.,25N>*4Q[9K)HU!'71T-
     24M=:RK8^/ZR9C\K8U)(^?M!A19"^E%+#CP]D+P>"']BD7.V^A?YI3=@(:EMFB#
     25MNK>8VY#,[7_T1__()+4*-@N6[Q0&'<22F1Q%T&>*PSTFMXO9$N>#EZ[I$;G?
     26M:!T?0:NF<SE,6'VFOZ@I%W@F2&K.RMK1T8AJE0TW6&AYQS0!.!E&\JJL57(,
     27MF-UT+DU@/*]&V.M^\PH%7C,X$5+R=5Y"/R/JDTCUH97E"1,%H<8.!$>W[#<+
     28MF#W6L[EM/8W-(=`?WW@"C>#/0PSFH:3S_1;1K-IH:*HVM=\!05M5^UY+\OU6
     29M03O4!J"6F9)*QR<R?R+S;R)S@63^Q9:XX9>:H"91.RJ+RCLP`,!QU:BL5[A9
     30MQ21J5S&II.:8A"7Y"FE48`IG2*&0>H8T,F2]0JT<J2ND@4@]J5H4!.H5:LJK
     31MDIK&$I8*%$J@F<M-!380:20"=07KY#`0N+/N:@RG0?*-0)9=Y4<L22U&K.P:
     32M^J!#@6>*Y;C4SV+;I>Q"*3R53:`F(ZJT+,>DO$*=L@6TPU)T>DSS(1:1M1;U
     33MWZVS($U@Y3@<,JF4U&HK_46JF:PSEY:@TV.Q;FQ+4HZK;+SB)MM!9\?4O&73
     34M%GV*Q(M@,%&SY`T'87`SNAF=@#5'.I[YMT!84UCH8!(Z[[[B$>SW#P3Z!^JS
     35MZ1_HF7^@MS/?8-,ST*5G`,[%E$U.4Q>AE6>C4X"[A>5I6SN=_C(ZG;:GX%UD
     36M^1!0DS\3Q`1S3B>_M$>GD_8$0.1/O]7V6RPJ3W':3BJG?V7EZE`NOVID7@)4
     37M#DT`PWLW]C_$92BMU7)706_NN@HM"'F?36)LY[-[]NM^0,C]#5MS_Q/O`:C"
     38MYE85`UBSZL"9`U0#$32P!K>K+G4QRZEV@<IZO)OD.-RINL`K/>EZ6%#0/<CK
     39M.,QSR#3<4+"H7U&]HG9%Y9[<C2=WXYO<#;UUC[M1<"RD]0?#U4T.9K5;<">4
     40MNZ%\`CBXW$T!>@8`B]:3C@C.Z(+CH)P1Z0?HJ1\`LS_W1.H%3T1Y%-1)%>D5
     41M7`;E7$A?01YZ65N/]]HHHU:T4?,5#,9X[-_-P3Z%T!&+\7#FSV-"RG.MW93D
     42MJ>EL+MIZY8LF*Q.MJ8W768-L;KRR)5M5V"BW2(;(8]5C@"Z6?+V2X?L*0_EX
     43MR6((Z%>X.[D4?+&2,3TD"G49Q72]1'`DZ!J#_ERROFL]CK=-1O,G!)HUIK$?
     44M%VXFQZ8ZMM3Q^#$,B653Q^4VF(J.S1TT)AV76UW:%8^Q"?L#-C:_/9;-FIJT
     45M=*.A/]#(?''PGHS/W]CX&,9#C8]D0]Y9<SNF3D2[2]IQ,N,C29)W8FHN5M1:
     46M<&=)W17>S+$%%6873@4U;8=VS-P>24JEYGJ%MW?LB#L+ZL*U'7/367$+O#"H
     47MP^EF)DJ2+^]$U%YR9TV[H(;(#9/B9&H"QEP):D7<6G$[N;$+2?:28OU=D!IG
     48MIDH2.+5!7]#<7I74$FBGE(Z20`P(2`J7U-IHIU2_T="DG26U;MJI%:"="/5U
     49M%Z"$X"8@TKZO[S>&C31V:NY8K(V;A48SLU?G:$"B6-TI1*,D;Q:"R5HOV'K)
     50M%LN\5&O'%IUK.[<,ZYO&2-1^>`!S>#@CVTO/L<G4P5;3#C:<]M?T,L;;A.Z"
     51MOH03F%1+^@IZ<($#=;&&#J'6D@Z@1V'PE[2W>(P[AT#;=I=:%QCG6-3J4_,2
     52M3R'5I>9+-%@F/9<W[2#WG)]C;@=R(9J0N3WJ]&CG%9;I4;?'73RU>K0+8<<`
     53M3EVP`7WJ8C''320YD*0D.1?T_((FD@;T?)!(<B]H_X+W,=4<T/Z`]S&U=\'M
     54M`;U`H1>7O/N27B)@<,FM5_12`EYR^Q5]^>I'Q5Q]99GZRC+UE6527=17AJFO
     55M#%-?&::^,DS]9($E1ZUVS8"/59\D2:E(34]/C/0D%:NE<K54L-:2@I+S5+JH
     56M71]J=J.8@R+?:73SF?ED??_.UO?XP:$?SJH\UD/:H^>7>6R'#`C+/X_GD`R!
     57M!#(#F?)B;OL4/^9&3_%D9N12OLPL6LJ;2JL:.@5JFJH&U6M[35I=.\NV*>LB
     58M#<A:J7E;X?;@<67#N-7UW+CI`%N56[@1O2HW*M55^;C",J"1;T+B9U5N(J)5
     59M`6Q]&UO?QM8SK+Z-;6QCC0PKMK'-71VDLL8VL+4-E,UI[E7@>*^RS7T*-&I[
     60ME958;1NK;6/U3;FM`E9L8\6FW")6WZMO(VM;$;LS:$:&W=%ASZ#)SE5JY\#]
     61M(U;/A!:Q.R.F;V(;!>S.H(D,JVUC=P;-2)35MA1H[HR85,#(%*@7L#LC)C*L
     62MMHW=,V*Y`GH!N#-<JMWY@G@G-F=.<V?4M,TB(JECJ]3.^*F*U"#*6@KCW=P9
     63M1JV`SZMHY;OS3?"$E4M+4I]6W_%I?_B6_,_<4T%?):7A)$U+A6JI5"T5JZ5R
     64MM52PEDI&_R<3E8I'_\=5_H\ZR31.A8M4N#`>8X.'=]Z)[]IYJ1VZSU)C6*<,
     65M-[BHRM/_T1;+_]=8/GF<?V./L]DZ>YC#N>UO9;[G'O^*=@H0'2$[;I6$M/('
     66M%?9X4Q+2S.\U;#M1F>>ZQVFBL(`+%30S'8K>4N;8[O&.,A]WCS?$.]+$YE[O
     67M'B](8M(G+#0MJ[_H_<@&-E*,R/0H>CUTHR[5ET5OIY220'N/>U-*B:&]QY_A
     68M21^E#W=HC:PA14]&H=)[/EHSJ:CHPY12@FGO<5I**>FT]W@II92(VMMN22EE
     69MIO:7_1#5-S*3IHTIC+J07?H5EX0F@U04(#8$Z(7J-[T3JN?UI4,HC$)].\Z)
     70M*J&D9>OO^&Q/?-2JJ=19C<TT-A-LIK-9@\V:;-9B$S9EHQPKW[9Z[$\F/8W.
     71M"'D=9)N/&Y%9"R*S)#`CYP@)YZ-R],Z@\3L]]\A:QEG*NI=!GEI'W=O%#YG]
     72M0<`[>]`G$P,>(A#W8NR1/TC[*KIF5W'^<&@+G$&5.RG7*NT_\IQ6(4>K0$D6
     73M0UGYBH5>$'!<@`F$Z3DNAQW7"C`=82*'B0).*^`,P,4L8C4$1NA]<"R#!\:+
     74MPL7>GA(']M2Q?I3774<=H9I$OT11#FWCD50;SB(1L[BHNE%0O9$6!_U5`V)4
     75M&B[PU;:D15'B3R5MP@[9Z#$8?GSBQW^>)S54DM]NY(DP@O+!'O]YVSCUG__B
     76M^_#=]I\7GO\YAJ#LS^Q"1EV707L"1;))J-5DW*0"`VC'C8H-+@-V'A1@,A)"
     77MJ_@&K6+>?JTF0Y?$DE^&A1+-/'U03#_.T_N%=$TJHM;]FRA/AYK_0@.^Q+BD
     78M[$3S=Z*2QB9YFE;9BE<@,0E8X$1ZS3+AOI#EA%3E*SKR99W=4$5Z#2'>`(VI
     79M22T85$&=F+HPO!V&#ZE1F[JLDSZT1CC`<.>9)>?J:3X.,)+'`Q``X.V#^Q\4
     80M$A1WS045'9MV7+E=SD7'VI:D'RJ)"ULX7)B.X!;\.:[(9-,.)$"VRPW3`:"%
     81M7[8KN*NSDJ7SCG`8B'-!G@L"793H@DBQK93Q<Y6BMD&%*258\$U-@45,E"0L
     82M>0XR0&L0"^)1]KY&2!U<J82+6KB@AK[=LOK_=\LHUJ9#$<>@%OPY^L&M3>/-
     83M0K1:JA\<?-99R9"_NGR-22=)$)5SSF&!E/AJ('4)88Q:U,F0J'05(B2!$U24
     84M,/=.%#2`XF/_`^YAI,'0W@#KJ\':_D#MH6%4RK-9]/$F"Z,N\]AIL!E1E4J_
     85M7X:_EWX?X%<?OGX>;QJL+E]PU)GQ-=[$5XLCX$R.G!GC/6A!W5@]E:Q3,^86
     86M0&PPB[(G2H"1]\PC)@%<`9P(#30P*F3;4<R="%D8IE4$LQ[+XQN3\CWFB-N)
     87M>))*@OJRC;/#65C`2C6!?#MXMYZ;#N^X=)?N[N?@1`XW+5RQ>&-4QR,L;USB
     88M#I@5G1H6+$P#%C'>FQ1`#B;0!]8(2Q/6-Z[9;3UX!VC&PB<*+-NA.JQB.!/N
     89MX6S\..H!QP@;N,="NNJ@2K8NST`"2((OD`,J`]_8R$2``$Y"ZD&M#VG=/HXR
     90M#N8H8*=ZPD[RUWCBJ)_`4:FC9YSM\4,QN@!/%%RR9Y\_/V//WL+?Z`Z^@D`]
     91M4+[%;W(I=J933($$/Y3OTP$)[>$]\2B\]U4_\3?@-X@:WL88293>4LE%_#<:
     92M?0OWU`ZGF;<[_LK]:Y__9M"W7[3\LOQJYL]QP#_X$/<\#X(;XWFRVY]-/)9/
     93M<Y9/63EW9(_+Z`7/4`R(E^N&?/[\&A;`#(YOHF]9O4]>Q0]9L>D2K6_MC&Z(
     94MQ(M?@S;NIR87KS#'R$-%?`,81V`YG)6Q\F3]OHK(USY7M6LBAPBQOP8/Q[XY
     95M0.[K0[`/T*$JP6FS(50//P6K\ILH:3%FGI!RK<+*;]EO3&X>E4=WR'3)MY7@
     96M8*CO@G&<ON/\>1',?9AZR>;3AUDP2?:83DHW5_CX@T%CN6B#]__Q;F&%O/?P
     97MOPHA=A[`E``JDQ4CI!_>WP8U(1LD2FX+#AY>1D`9R6:7AY9)NZR5_*<B_&=$
     980BQ!?A/YGZ;^@U#P02DD`````
    9999`
    100100end
  • Tst/Long/ok_l.lst

    r2675bd r760258  
    3737modnormal
    3838knapsack
     39symodstd
  • Tst/Long/ok_l2.lst

    r2675bd r760258  
    3939surfacesignature
    4040std_l
    41 symodstd
    4241triang_l
    4342zeroset1
  • Tst/Manual/breakpoint.res.gz.uu

    r2675bd r760258  
    11begin 640 breakpoint.res.gz
    2 M'XL("(4YR5,``V)R96%K<&]I;G0N<F5S`'7000N"0!`%X+N_XB$=5C!),Q.$
    3 M/407(;K8/12'6)(UW(GZ^:U1IF"G7?;-^V"G..WS(X!0XI#OX++AH%&5F\'>
    4 MSDHK%E[F]">D1-51>;VU2G.@Z1$8+MDI/D(TCL6E:ZG2U-GR[Q6ACY+1*$U(
    5 MXQ1*XSLW,.M9QD>X3:96]+-L-FO%?ZQE.*',N(R:&F*JQ>J9>(.TD>]]]!^^
    6 .&V'K"^<%^NY1DCH!````
     2M'XL("$+R=E4``V)R96%K<&]I;G0N<F5S`'7000N"0!`%X+N_XB$=5C!IM4P0
     3M/$07(;K8/12'6)(UW(GZ^:U1IF"G7?;-^V"G..WS(P"9X9#OX++AH%&5F\+>
     4MSDHK%E[J]">R#%5'Y?76*LV!ID=@N&2G^`CA.!:7KJ5*4V?+OU=('R6C49J0
     5M1`F4QG=N8*)9QH?<QE,K_%DVF[76?ZREG%!F7$9-#3'58O6,O4':9.]]]!^^
     6.&V'K"^<%/$@GQSH!````
    77`
    88end
  • Tst/Manual/fwalk.res.gz.uu

    r2675bd r760258  
    1 begin 644 fwalk.res.gz
    2 M'XL("$(-$%(``V9W86QK+G)E<P!%4DUKPS`,O?=7B+)#BI,22[:34)K#V"4P
    3 M=NENHY2,=24LE-%FU,JOGYR/]A#IZ3V]6'*R>W^IW@!`E_!:/<.RNW;KMOE<
    4 M;D#0H3DW7;3:+$*&LH3O6]W^K,_'V_K:U=UB-YEQ,I\N@S[X[R*5<&G.)[C`
    5 M%@C3E.*HCSGVJQC:WT>;*:'Y.M8M5-+'I#SWBK%7OJ<80JD\<F`>%CL-%%4R
    6 MXN%#[[<)%XHSCR$H=IY"0$7LY+%"D<\$D7=#M($PJF`4J'-)8T$*,YXB2O3R
    7 M=MQO>Z]R+#+.A9R`(FL=9\E0.K%K:](BG#Q3.`(;3A@TZ\U,T6BW8<01C-G,
    8 MBA&[3IW+V4R9_&A&7R1:YU9`KK1!-(*RF7)SDTV"1APD\3L6:0)WR2B9+:SN
    9 D2?8DV9/E`L,ERCCWRW;E\$>$[_YWC?1J\[3X!WVL<P$\`@``
     1begin 640 fwalk.res.gz
     2M'XL("!0%6E4``V9W86QK+G)E<P!%4L%JPS`,O?<K1-DAQ4F))=M)*,UA[%(8
     3MNW2W44K'NA(6RF@S:N7K)R=.>[#T])Z>;27>OK]LW@!`U_"Z>89Y=^V6;?,Y
     4M7X&@?7-NNF2QFH4,=0W?MT/[LSP?;\MK=^AFVVC&:#Y=!GWPWT6JX=*<3W"!
     5M-1#F.:5)GW+J%RFTOX\V4T/S=3RTL)$^)N6Y5XR]\CVE$$KED0/SL-AXH60C
     6M5]Q_Z-V:JXP+CR%D[#R%@!FQDV6%(E\((N^&:`-ALHI1H"XEC05E6'",*-'+
     7MYKA;]UZ56!5<>IR`(FL=%]E0.F^4MB:OAI,CA2.PWD;-RB&1HM%N9;\(QFPF
     8MQ8A=Y\Z5;&(F/YK15YG6I150*FT0C:!BHMS4)&.)1APD\3L6*8*[9)3<#4,B
     9BF9-D3D8E@\M2=/_6KAX>1/CM?]=$+U9/LW]-@V&+.P(`````
    1010`
    1111end
  • Tst/Manual/timeStd.res.gz.uu

    r2675bd r760258  
    11begin 640 timeStd.res.gz
    2 M'XL("%0H<5$``W1I;653=&0N<F5S`(U2P4Z#0!"]]RLFC0<H"V7!6K4!$^.E
    3 MB?%2;\:VP$Z;37`QRU9_WUD@0*(UW0LS;]Z\'?;-YO5I_0(`/(7G]2-,36V"
    4 M4N;3%5"TDTH:QUU-[!?2%(S\P(T1@<+OH#:9F6RZ]JAK/Z)"G96M1%^-4]!2
    5 M'4$G<12&,7,REK.""88N$Y\#[SH%J0RH9#E@"\($9B7(I,=N`LBVRL^WBO78
    6 M,@#*_6*,W09`N2_&V%T`E/LXPGAH]1SE<W>6>WD7%5[11<(3780>=E'63\CI
    7 MZ00>0/*D>QY',NX.]:CY`R)$(T(4$H/&>8"]+>Y!UG!2%$F%HBV@UI6&JBA.
    8 M6J.@EP%*<SQ4&J'5+HE,^O>MQN\+]OT,Y$`I:_.5:6OG?`X*_CUOX3LT7BPM
    9 M65]`GEF'+;DYDE\@;VUEL(!V:4REG=H=%"X9\)R"W5V[GZ=Z=Y`E_ME<FV8G
    10 5SZTTIV4<9!PR]&KR`Z2ANY,M`P``
     2M'XL(".9-9U4``W1I;653=&0N<F5S`(U2L6Z#,!3<\Q5/40<3C(,A":TB&*(N
     3MD:HN=*N:R&`GLD3=RKCM[]<F%C"4"B_<N_?>R9RO?'D\/@,`+>#I>("E:0UI
     4M9+7<@T5GJ:1!P7[AOE`48.2[*`TG2OR0UC"S*/UZXM>O0@G-FIM$WTT+T%)=
     5M0>=I$L<I1@Q7N,8<BP#SSV%N4X!4!E2>#=S6<ERP!F3><SL"[*2BZJ1PSV4$
     6M;!W58^Z>@*TC/N8>"-@Z$B..QDX/J8@&JRJL/*K#VB,><H]$*#QB_0VIM8Z+
     7M"TB:>WN0Q#08^HGO)Z-^$H\&K#V-;,TWT\[K]1H4_'M>XS?HC,K<L)XQO'+V
     8MN^'NR&2&?.<Y*@\!AFRS@]O#F@^-VF`0HC.%,&PG%.;\Z92"2ZA+X5=[OLA&
     9;_+G<FBYY4\&E-G*##++/=K?X!3_3"3T3`P``
    1110`
    1211end
  • Tst/Manual/timeStd.stat

    r2675bd r760258  
    1 1 >> tst_memory_0 :: 1366370388:3.1.3.sw $Id$:spielwiese:version:nepomuck:306368
    2 1 >> tst_memory_1 :: 1366370388:3.1.3.sw $Id$:spielwiese:version:nepomuck:2379776
    3 1 >> tst_memory_2 :: 1366370388:3.1.3.sw $Id$:spielwiese:version:nepomuck:2379776
    4 1 >> tst_timer_1 :: 1366370388:3.1.3.sw $Id$:spielwiese:version:nepomuck:107
     11 >> tst_memory_0 :: 1432833510:4020, 64 bit:4.0.2:x86_64-Linux:nepomuck:10186768
     21 >> tst_memory_1 :: 1432833510:4020, 64 bit:4.0.2:x86_64-Linux:nepomuck:14942208
     31 >> tst_memory_2 :: 1432833510:4020, 64 bit:4.0.2:x86_64-Linux:nepomuck:21233664
     41 >> tst_timer_1 :: 1432833510:4020, 64 bit:4.0.2:x86_64-Linux:nepomuck:416
  • Tst/Manual/timeStd.tst

    r2675bd r760258  
    1010a^(n-1)*b+b^(n-1)*c+c^(n-1)*d+d^(n-1)*e+e^(n-1)*a;
    1111def i1=timeStd(i,1);
    12 idef i2=timeStd(i,20);
     12def i2=timeStd(i,20);
    1313listvar();
    1414tst_status(1);$
  • Tst/New/grmodexamples.res.gz.uu

    r2675bd r760258  
    11begin 644 grmodexamples.res.gz
    2 M'XL("+ER2E4``V=R;6]D97AA;7!L97,N<F5S`.R<:V\;1Y:&O^M7U!A8A`+9
    3 M8M>MJTM:&['C9!`@R0[L?%@@F`R4B'&THQLHDB8YV?^^[WNJF]TDFQ*ER+G,
    4 M6A*EOE175YTZ=>HYIX[]]MO77WZCE-(OU%=?OE+/)K>3HXOS'YZ=*!S]X_SJ
    5 M?-([/#G@7_7BA7HWOKP^&\U/+V\N1K='5Z/W1[>3T\G!VZH2\T*MCNU1JO#=
    6 M^/1L=/;U]=F4CTC5JS+NA3J_FJB_MHL<'Y_>WDXO1U^-9J,+]5SYIKAO55\<
    7 MX5?5$C3K;/3NY&`X5#?CZQ_3J?II?'VI\#ZUU8*#S__[Y==_^^KSXX,#I<;G
    8 M5^_4^+DU>6X'O?E@,5@>#LYN3GCO4IY1+]&,=^/K'_ZG5UWI?3?O+P9J/E`Y
    9 M?OX^4-_AKUQ:\/QPP&[-1C_V\@&_]:&"#!7JF)V/WO=>XB1U6?U\?8GO\<W/
    10 MY[>7QVK\O55]->YE>.`_LW3PO1FH=^>ST97Z8:%.U>7I9'R.][X_G_RLT,OQ
    11 M"!)3J!M?1T<:'X//T5&ZDF69?/KI2JZ.,="\KGY!X?85S2NFOI+55^P!#ZHK
    12 M\I1+-3]__EP^_$I7ZGKD2B.[5]NRRP>0<DM(V@_TIHQ>[901A.(/:S%];RI!
    13 MF<,'BJDMHB0>[5-'*]'H))I*+,V9;030[KS9[/AKZ3@TN5<7:7^E.^_&-]?O
    14 M1^/>RX&T?SQY?WX[Z5$8AX.[GJK+I:=2':]P=MCQT*%H<B76U[O$>M#6O;[:
    15 M..M5?TPM^+41Z+B$03E(QZ[K>?,XM;;X.'P\/@4^`9^R0]UW?;:GP:[/]O2X
    16 MH^3&M+FCY,9TNJ.D:]>YNUZ4]%TEMTNC9+%9LKM>E`Q[M[,\4-E^)2-*FGU*
    17 MZKR9B_>4U/>ULS9VVNQ=TN[]=K>/E&@SM-^[9+%N7G=]^+5I=JM/Q@^M4?V1
    18 MDK(DRO37@_2=X<<,\$WS<#;Z2;W6>3)9/Y__-.F]'BB=K]L..=]A/7JX6=F,
    19 M6)F,K0NU+:FM0&4QXLJ&M"\D"Q)7!F3CX?(A%H0F0FR^K(VT(F)&Q(Z((1%+
    20 M4IF2RI;08&3[_.JG9S(M4RLM@-D]OWXY$ONR]LQ]#_(9TSR3[?L,;4X6FV?V
    21 M:9O;>,]]+^,S?N<SW0_RF:+KF3M>QF?"(_HC5DH_[!G:*VT>]`PM%RCU8<_H
    22 M??NCFV?,(YZQCVB;>Y"L!8_$UCWTF<KJT;0]W^>7?*U8!V_;_,71EN'#[[+^
    23 MI=J64(Q9%@?-CZ9--(.LQ,_!RL\(+U3;SZ`E;#L://_H::B/GL8?PM/8PZVX
    24 MWX=8D\Y'A^&CP[!^YZ/#L%'RW]%AJ%>K-S`M^:#W?E"M5@K+E3@+7S;&]OQL
    25 M='K16YALOL32M,C>\X]99N\7R];R5)F5"Q@=-1[=:GD>![TOL8X=GB@LJ5?7
    26 M5]GE^=7YY>E%8X!8MK%!.+N^F$[.KZ\PV=_`:F3J[!\:<Q5GR4K`7N#('E;W
    27 M#.X=I`MRP]4W[-:-EGVY/+VA-6'5Q]WFC^]6&Z_<UT#1/,$ZB1\B%\3:J&1O
    28 M#F3&&1D)RP$^2,-;_:R&L2[!"^SFKG9N247MZO0^;5YKL+26,U2S+=+4UADF
    29 MD,59GO34MKJQZ@-:[ZH.V#LZL#9V.YN_'(VO5<]\CR4C]8--O8$63WH_C":3
    30 M<]&D08Y'GLGY,]''U5>^FAIH_D&VXTN>R(];9;/T6V[HX]:E-)/2\)GV#5W=
    31 MV/F.R?7D]*+]#ENUZJ`U@<QJ`M4>.R82G*E#(46=9I2JIM-?UN:3V36?>GQ^
    32 M<U)ID];G]FS26]-(/W3^U.]2]2N>##Z30YF,6;4LJTZ,I'N@*X-W]Q2J9:"V
    33 M>OI(`#2IB:EYK3/3B7S:U8V\:YKHU?S0'1-#WSDQS%-,#+UK8NB.B9%NK$V,
    34 M[,$3HYYCC;M6KKMK,C/:_II<^,,Y;/]//;:WK7BC>CE0JEB3Q=O=GEE1QQ9]
    35 M)0W_E,+(BDUA-%=J8:0K;6%D?D]AH*!\1!BUXL9F;U/GZWN;G,!M'98)_00J
    36 M3([[6H8@>7_-6*1W]`XE!CQ0OM+19#2^QDE27GX_X%"UQO;KW6/+P+%/HRJ'
    37 M6Z;,MTW92FAZ?>:+>]N6FEQX"K%5/=B2VK;0U)-U<O7654=Z7M[S=*^HY6@V
    38 M+.CT<LU^3B_WDR'IX_RG'I7L_&ITUFMMZJ/1_Y)]_]8U;CVT3D_4_ZK1Q>U(
    39 M;14\0=MNKL>3M0I1_$1MI0U\#+E]#+E]H)#;9ZN0V\O!J[9Q_`PGU!6H#-3G
    40 M`*U4Z?2`5Q;I:KJYZW#>'"[8`HKHG52L&Q%^MH^:=<?9UJ)P#Q9M'5;K"J%U
    41 MA\NZ0V/=8;#ND%?2S,T@2Q7*6BNKZ[#5]M6P'2CITN][\SCVS=S8,U>CK3RO
    42 MUY2G_E3+:*-*&S<:Q>JXT5G52M-6U6W>6-WLJ&KQH'=\H!OS73<6CWC'?->-
    43 MUOQ[O3[_/L;%/\;%N^+!&R4_QL7_[>+BU;+P10<VTOBTT0?DX]?)YXN[R*>=
    44 M!_-DX-."FVWP::!H7_#YMMEK_*+>2VPM?\GU>:76>_WMOKVN\H;N,(1FH]`#
    45 M)-21!;0KV:=?W]);.3U5ZLZN6Q+`V\ZRJ!)QNI)=JGR;:JYLW?+-NYI;NLZ>
    46 MV76K@IV[\R8XNFS1:IS5G6Y;+G[;NI?5OMWRV?YY?G&QZ<ZAYO'H=G(]'JG)
    47 MSR/%O/&1NOY)G7[5^)YVW?<46&I[GW+A-XK>K3E^&[-Z;Y]/E->N9O-3^GMZ
    48 MR]_3S2+;=FS6_#W5[=UUFK@.[V[=MS/`V+T=.].X'P_;*FOVG%H;3JW=IE^J
    49 MJ/G&SM+N%(EU<F^(?"\6[^3P3@;OQ.Q.Q.[$ZRTD[43>';C;2;2/H-FDP,4*
    50 M-EVCRHE',99/0J#WD>>VTG>0T<8DZ"BQ,2DZ2FR1I=XLL44KZV_K<DNSS1(T
    51 MW9T,MYK0X=X2Y:X2JPD?[RN1$A9W4U*7B:@_MIYF31!;NU80VQ\UQVO_6.=;
    52 MK`)_??-F=-M8]M6EO6S[[Q]:Y&*V8RE3*9-A,CI69Z>3T]2A\>G5&?Z\&UV-
    53 MQJ?<;554Q-N)+%'?G%Z.4.NS'T]O)Z.+J^GU[/K9B;3MTYOG5L>H3YIDC-ZG
    54 M-X?58C:8#F8I(T,R,"0EPVMOYPN3Q7)H[,)B===#K^>+9=_:H=,+L^S'.`QQ
    55 MOC3]H&VQ6!J4*89:ZZ7M:QV'?'[:MV[HP\),LQ"&T<R7TW[IAL$NEE,41P7E
    56 M$O=,&/IB/C5]G>=X&PY*,]2Y74Y-A@J,G]J^'9KY8I85:(]?F%E?FV#T?#GK
    57 MNV&!ZF990`F]-#@P4<^GLRRBQ:ALEN&%<8F_J"KJ*4IH8]B\&5YH[##DBYG)
    58 M"C9KB4L.%?HI[[FAU3,[H!BT-[E9H&-YH2VE@"Z['%)`+P*;2CEX$PWDT$?G
    59 M(8`EA98[0RF8@)>8:3]$'R@#[?*\A`SZ$?UDJZ<9CB!?RD"'DB+0J"10`NQI
    60 M`0F(3#2%P*<@U)F\')*#%+0SEF+`*X8&0IWU/;J?4PX6!Q!#/WIT'W*0]N7E
    61 M5(2H\5+VGDVF'/HV#,NXY"6+2P4$D974`0@B$Z60(@9"Z)<A+R@;JXM\ONQC
    62 M:+3VD(WW#BW((.0"/<JTML.(+J%GI2[1::.U8[^@4C',9_T233;HEK7>8R!9
    63 M'@.0>6_TS)RLIG2/^CU07V(F"1:^&:ATY=.;$Z6>/3LY>/Z@KP.65Y\G8W*L
    64 MOE.M>:/^?H!)\`:3!4:O)W-G?;;TSFYZ_G#PV>&!^HMZLTI^4+/S4_6)I%-\
    65 MPK7JN?JFR452LBNNKJ:7/XS&C3<A7T^>-:);-]8VQ\U][]B=-8+NO$[K,(U4
    66 M[WI\-AJ/S@[K+(T]4ZOJ%**M9!"W3@`/R9UJZGS:W"E[;^Z4W3=W:JW;:KN[
    67 MC\^:,JNL*9NRIG23-:7OR)IR==84QO7;-R^_>?NW_WK[^2=GZL=KSHCYL?J/
    68 MM:_'J6OFCMMJUVAE9G>H:_;H7`[34E=]L",UR36*5RNEK1/;S'JVWP,3D=QJ
    69 M;%L5/OFN2.;:8%JG_G1<-=M(UHP]Q%]]]LE;6A>0>O.K@TD9=5.FEC2^.3-U
    70 M3-+<$4Q*VG<@:6P;[#.ZN#@Z*X_>A4>3S]Q@37-A6,0Y%OPB]W'A^J$<EAYW
    71 MN+AAQ79S`A`90"_LLH^%+\P-2:C$`5'(!(>E$5?*5!Q,5(8%R<CJTBQ=G_`3
    72 ML9@NIK+VXBG@@39Y&1<6C!3P=@-&\G9HB[G0DBNM0Y53819#X,!A#GQ!O60H
    73 MZ]S23C.'93MW<X,%MM"QG!,ET!NNS+QF\3)`&XX,5EV'F@U)`4N^/.&'-LRG
    74 M-B,KN,64)&=SO-2R)3Y,76;*@-H7X"[KV.I99CS;8$$3MM1L]JR/NBUD1#H+
    75 M;/2,U`A8F9//K-=L\DQ@*BSY(+J&%H-9'!I*;IQE9?"@3-**UD"T.0&N*$`4
    76 M"R),U-&CQ8`%9\HX%ZBS@C""-1`+B$\@2-LIWZ`+]'%NB'5>$\IX9'.@%JYE
    77 MM@33SDD]4@M!BMQ5&K?D;4_YS8E"(!>BEQRBWY8\162+-DY-@D>T?V;['DV-
    78 M"QQH$AZP!JKD[!1_K+?YS`U`HYZ"Y&L\$;.`8@"TRZ$,?5_&"?H&+G51<!MW
    79 M*$`TL<PC.=/H(<>\#[3&4!`O'<<[<YH#PG,H&W'3&4J<FN,+([`I;R&#.>BU
    80 MT":@T!5+T1HB*8;>^]+,19HEZA/N!/ISQ*$F#DH$LM;6<Y2-"T%&%%\.@A*U
    81 M=X1.KZ7[&*G@@Y%QTG[H#:$S%"YP'!S^4N"^*)U(=N@]<%,$9#'HCC./BDV=
    82 M(I?[F&-J$C>9'@Y,QI$1*L>L\E2X?N&+@DQNJ+;BG'"P(2QH-J@4PBD@M5S$
    83 MY9VCAX([@1X*A@`*)/+*\R$[-F4UA26=8[)"!2&FB)'./:=/B7D&<1%_,2TA
    84 M!3:,\NJ3<#D2!&U'.0BI`["="`UU)JF50Q\I-6MT0=W'@'KQ6-";G&H<X5CE
    85 MD3(S+FK179<+IO.@"%.1'C5W9G]#8%X9VS\_+K=O=.!RNM%!++\;1Z^6Y.9?
    86 M(M0<[1_+T>TZGY"C;96@OYNC[5H*_UT<O=%MM=W=QW&TW>)HL_K7!^X>CO;R
    87 M\Z$YVK<9MXW+;H>ZK@-V2\$_,&#[;<!VR?O9\OD>"-A^!=BM"I\>L'V-TNW4
    88 M_XZK]P"V:R#[7KU>%]!3`+;X`ZX;L)NS1P)V.'I7/!JP70R::$TBU`L'`"*F
    89 M2"S-E.`)`'4,0Z(KUN_"$J.S,F>8RW+-Q/JW!*`6(!F7!<MR7,WC,(#%A9B+
    90 M4HC98:D.)&:)*&ECYH(^@I"$(U`O@(!A*>N%DXF!)@HFZ]Q8L@#75P?:X)$!
    91 MU).207`Y:)#!0&?`@E8BF;8D)4>LV(#D`FZ#L+'V'AT",9',`$P`?'9H1LHB
    92 M<6)M#WZ8>)B.@/=+EB;!$P0B$$P@&+>,(#`@PB<$!M2[F!@8`*%))S.&6T$E
    93 M%02#TK10<.%MHF!CAH`0\H,9.KL0'"93SX4DM*=#($<0<Q3TA91,0?2%;P/J
    94 M)&BXLB#0@450GU"O)S27P%Y0ELF)O6@3Z![4RU$(4;@WSPMP+T=>>Q<-1]X&
    95 MHCA=*6(RQ("Q+PBS@K=E"C0SP,RX,L<?M1'GK,C/00'P$-B)&N",,U0`#H86
    96 M#<"(%;DH0%$&<9B(QGB5C#\D&<1CP@,VSFL(MJ4H0&&&UHJ?9(L8T_@77HN7
    97 M!!\N.GI)<"5(S^PM8Z54`+2KM-``H&,DK=(K`C1C4`,#S,DG@O^6BQ9`Y$Z<
    98 M(HH0`T(MB`:.(;TB:Z@B"W&!2K1F(6,-Z+<QJ8*/]%2FLR1_J@(G3BA$$T#@
    99 MT&4"-QIIE^F2R9,:8%!+40-X%W2S"-V^U'G2`VD)(\"ZR)>B(YAEI2@!G(1\
    100 M,:T"YRXY/SXW3M0@0&L\G9\R'\9`YP>.D_@^,BBEGO((+R\#'2"Q`YQ@%I[9
    101 M`HJ88[;VO03/YTLZPY#24IPY*!I]Z9)B[X<<)F`JOF*DBTQ&GXJZ0+>K\'$!
    102 M^N960:2078%^2V0<+NAO&E%>&<L_/R#OC">WG[!_P$"SVPXT/QJ0VW4^;:#9
    103 MW0W(IA6MW2_0W`0CGP:030WRTDBW%FC^`P)RFX/=+@[^G2+0G8#\)!'H-B!_
    104 MP`BT;\>:[18@KZ[N`<ANSPBT>_((]#H@-V>_-@+]3RLFWS^:C[/('>62,2^K
    105 M!:P6AKO;X%:;<1%S$O7RT>;`B0R@*A$O73H2+B-?C'>56.W!226)9FY(.40^
    106 M;D9K%W24\&`N$47&"1G&XS8U5LZE%`[.,3[H/7!&T,CDW!^OC@I-Z#&%Q+0(
    107 MF%'VI;6W9=J<9TB.^](9#H`"@!XP@4[[\ZZ4%1XK,EF&4<*,:[Q`)7'12I@0
    108 MI.:,;-'K8?#<H0=GD$J"!V"18!EAG=E!)2T)@S+Z:!;D1:,E5&B+$)F](#%$
    109 M"(U0!YE!BO0,,B]Y`$LA/X`-Q.;+/&>8GA!I16[:#PO2N`1\(5N)M1=^+AO9
    110 M*4[H"R`-Y<;<AI@2&=BJ@DX%WY43))V$";UEV'?&G7]F2,PR8!Z'8R8==9+1
    111 MH*-LY3O/Q`63D"882@SBA)N3HN*%$PH,Z%,=]"X*2LSS.0D2TC'P%)HI'+?R
    112 M"61H%I,:!%49;(>:@0)%7I)/4%)>J"IG%)I!5\_(JH"S$R?-%B5E!E$9"4-#
    113 MVE8BJ[EL@TRYQV`(U$#R(7<=^"8O`I-8/D/16<F&Y&D/(^`5D$\IOAT%599N
    114 M*9(K/)&:6R@I$`V(+%)@M6#J`=D.8J">%44H1<T`BZ5@--U+$1GTU<5%`F:S
    115 ME*T%S:@JYY0/HF)Y*`Q5S$3H/S,>X"7:%.0?AM\TI%I;CS\_,.Z,J-:KHQS_
    116 MNG^V_]015;N5D9!@RC_N_W1AC4\>1[TK'\'NG8]0=5;MZN3CHZA:;60CF+5L
    117 M!'-'-L)O!XE;NEM#8ENO?N<HJHR*V_QO5+:T],&(V-2;(HY[J^@#`;')\>Q*
    118 M4=`/2%'8)X*Z4N@/FYOP:T*GX].);)<]/G2:,76/R(6UFBLHMX@M>='HA>O;
    119 M@DC!)`63,WN!@,,=Q(5=RLZ^98X"EDQKC`380"82'S-9S+$$,V'1E0QV,EEA
    120 MZ,+298SRD$2GA!'G4I9"#`RT23P%<"II"EI"6US@N5CK.D\A2M!-+J8L!2S!
    121 MY*MI%DK&BAA-+4)*:TR9CI(L2L@,/L5?&<71$G^37?T\1>!,U,Q3D$"Q803.
    122 M<)N<`3BB4IPZ-$GV>0E83,\D8`D@2J9"8,",1#@CGMD4EF-(BQD$3%>`9(N8
    123 MLA4T&BJ!.=Z/$I]E:)59'9*>8`HCP=J^82*J!&M]D`@=0W_@"@G6VK),L5H3
    124 M7)!\!=)S"M52&(5$:A-C,E:;@>%T"M&9M(=<[?=+ED(L@3^,U1&9)$1G"TE0
    125 M`(J6$I\ST102GF,&"7,].?#>6$;E3%X:)B1(6%S[*7!0]OBI.Z;O<L8&;9\Y
    126 M$99!VNB<*!6PKLPE6LL-\LA8+?C9I,P7#H[SHE8^):HP=B\C*S@-KA3%8G8K
    127 MP[;#0K0J2-!.F%K"CE`KQO.T:)5V1:S4RN<A);_$*MEVRM!_D73*.09,<<^R
    128 M,M$I5)8T2EN"8L+P4HM&84Z4'!40+&%80OHEMP\8TF4`74OBBT\9R+9*6*!*
    129 M,3-8<E\*<6\(H&$(@8M*B+^PE+`M$SJH1.19T29Z`TS%D'!_="G.*VD&#/3"
    130 M!$3J4@;>%4WBF+DJ^863;)ZREW/N0P!?K9&X/W<.8IETR4G(G]Y:$#TJH32:
    131 M:E1K^BRE(L6Y8*Z6V'\60I[T"8Z;"RGT[V(=]/4YFE-GNJ2D%^F<E>"_9CA;
    132 M]"JI)?2)J<>,_4/Z5A3,,26!P7_N>YB9&Z!`+DHF'@UW@9A<7'@8KQA+L5U9
    133 M$4S:$RB3;.G91C%=?1JQ9+J8W.S%=-&OI0\'SZJ$MP$C%G3Y?^S]6V^DV98=
    134 MBKWK5Z3[1;O!S>:ZS'53PP<X@/4@H64<2#;@)P$MJ22WW:=;9^\==$8<^[][
    135 MC<L*,BMOS*KJBVRV*K>8S"`9C/B^N<:<<UQ0NE9_&N17@>-"?M5C;965:^TW
    136 M%$TT:AG>4C0D^\=.7F&5_!?2J_#B)5UD()-S6;!OK,EK;*3!2VR_Z*&=P?Z)
    137 MH'B@5+79N338OSB&SBI:*>V.G25JS,ZU02G@*54\C8:B-<",*8<YHOW![F@Z
    138 MKK#%)@HEJY7>>8%-<%ETA>UJLNLI-PD=(WWR2NINK5"O]BU5,J^P7%L3OPJ,
    139 MJ.9Z-?%>L)G<_=F:5WV8ZKCYG_&"J#P%.?6%5*W6Q+&:O6BM@#T>*TU6!\C6
    140 M*HNK7E"1@QL&7)U5*X::L*/B5;3PNVO1Y(MM8F#`1=,^+,2ORCC]]O6$UJUQ
    141 MSQ3[_^%:FR.*]@NI8LWDJVPW>+N6[;YN7V)9A8R$>#'X)I<-O,:>HO,:`RVN
    142 M\QK+=:J.[3JD*I:]?7Q8L;!\&K@<4<;`X4JZQ'KIV$*1[]99Q@9Z:5QB;=7&
    143 M==1L:_`":ZT,+:-&XBX2)#!R]W(;*+8@[_6NG60E:8N,H\@L8`^[R#=>6ZUC
    144 M[K!OO5UHYE5UK`]4K[$+[B4>M!71>=@)#CA,`->MHB-&FX]K*R9NRYLNA9R]
    145 MI:I<53Z.\I2YI-H7Y>1!N$NCCL%:%VL7:%I]<E4%O4+E.;C+3%'IXNB'5Q6X
    146 M59G,O8>BFENH!-"J:A?W=N$/6&0^\;TGL9$7E44@N`EU1>V:OGA!K<)1#$[`
    147 MF%Q<\C5)55NK?:*H>D%[D%F^!`!P'*;]6^%\G/MBX-(J3U'V1DFQKRF#+^S]
    148 M^N)\KA11O0K(8_L^QZ66>"+NVHHKXL:JFS0XV=6'G#14F)2YW=['8D;)FF-I
    149 MV%18KGE)[;(%!B1T-KC^]H44C:*12/L9"TVE0E):T^!D:$3W&+NL0#.S#T04
    150 M54P^Q)![QH1J<417&YBENW0TTD")3/I4V<#N&S2T[A<.KU'CZ&24/"Y:6B]R
    151 M^+!D#[XG^U4.;0W3XFO=5WOSZ.0WF)S<T?4_[>A$O=U7^\#OC%%>VLLO#E->
    152 M_?,7G$"_NHF3ZV/[3HOZM2%+^^2K?Z-1RWU)%9_OYMK/+$'[+YV^O/R0'Y_"
    153 MQ`>E>GPZB_E\(A,O_WTVE_FB2VV\>97WLU?)J[SVR>_RQ__M\M=_^.D7:&6_
    154 MI9.U1K8>Q>>GBDWK8W_6S?^LJ__ZO]9O_FM\\U_;UU6F+R^SKM6?__FNZZDO
    155 MO`\_O^!^5%;>7F3EY\/R\F%]^3!>/FSGNKG_$ET?_KI1F*ZZ-]2BQ_[Y#1\O
    156 MU>1,S3X9=;WZYR\M6%_]\Y<F:/H>O[86?7ETUG\^,WM54UQF0K)SC(T^*38_
    157 M.$SKGJ)]=EO^0]R/KZU#?W9?Y#?=%\<N]/6?#]^K0B^WQ:O7[!^K!'VZ4_[$
    158 M\^VSC?//M4_?^-?ZS7^-;_[KVTK0?;=]_MQ'F-\H09]>E/_0.^Z7O]5/_A:?
    159 M3#E?_;JO?KWO[;]S_,5_R^N72[`"1#!R%7=[@C8<\!@33@+::V/WVMNU@Q!:
    160 MUW[\[3&`<3^"7<D/T>OLOFY_[?QXC1MG,"-=VXTSRODQ;AN\]MV!5/5Z#:(I
    161 MMGL::^XOYO@(\#8XX!J["ZH`ZYST8-*`$1[0_PUDUH8^LN[ON3$Y%%Z#8Y'K
    162 M#6Q0DBWW1W50RM0>=_^PH7SC3+&L6]^HN>WGM''_RH._!0FJ(*V*U+A[#XQ8
    163 M`Z`_TKJV"SJ+NG\-;%`#`A**ZFNMG;\'B7&07.UG=1&?=?\>N_?$D*E*=<^'
    164 MHOT,=!CXY2]@6"Z\<FA*=[^"21SZ4FCA]R]3\0WP.A8Q9]-N4F^!IY#K;L#P
    165 M4>VMWAJ5__O]"S6G\R-9!!"G<<J(CS6]QB2E<)Z(AXZ!9;MX!OL=8;^./G=P
    166 M65[X<:K]RC8GI[:@E=)P9;\M:MS]<_AFHAGJ:S_'BH\JF`3\<+_:L]]"$\*G
    167 M\;%RA,QFOIY!6<'G$OBF]2)&0$5G!ZD/)\I4Q66]M1<R+18IQE43)SR3*CKC
    168 M;O'V9W?;UD$I4#..139XHH._.\:+F+B@OP]>JQ5#[R!7,S"'(4_ZJ7V\-$R$
    169 MUKCN#_97/)7]4C1.DF:]='9Z8U](U`SAG=:6?&$4#D[IQ&PRGL&>V$^Q@1T*
    170 M85S<--^>>*/`4ZZ96P9JO/@^W:#/7^F*1_;YQ&OH&<JX/G@1::(T>#MX5]\"
    171 MUQ&%3M#>4>FW^!#36]$QX]./5$GN'G<_L55W:X\/,),HMT:UV<S[0GJV>!$=
    172 MZ4-T#(FO%@WB>U;(SO9KM:\CSDUY&:&]S;J*\,G&JQP\V<36%H\@QX57T?Y=
    173 M0[L(_65DDL\Q#-N7R*URHE\C<`GAUXV6;T'V2A8%!9TQ.`]XZ?@Q*+57TEDJ
    174 MB+-Z0.=%2\I&#E[7_$O@2NF\QB'\`A6$7SF#5\C-XKE]E8V;"!^M<%C$Z3/G
    175 MUU>,X0KXZN4,3T`OQF>#3^!V\?9B8NQ=]=1W1;H$!S*1]R5)ZL2^A?&Y*"DN
    176 MC3/(V+5&ZLF%MT`$G.#-C*:_%[P%S^;OUBL?FV(_P<J)'UDOG-",B6J.2PO4
    177 M$4S+\!%]/?`N@&3,<G;EQ_C)'/1JR`.CB<JG,?J\^D-4T'@NDKZFCR)N0)*)
    178 MMX'C(DR-B]8B&*9*L]E`E2Y:DF1.ZZ[\"]PMKOH\IT\<U5$:.A;O:K'F]VM^
    179 MXX\:C>-[;F%BP.^C:&;)RUNK%R@;,+HC<WJD<=7'^]+ES<W/S\`&@D/1"ED!
    180 M7HE2,1^F+4=9%[RH(_:SKL^L+),++G+LJ2'='ZZ,G5[EE@>W!>;PN])W#O4J
    181 M2/)X-9^Y.1L<&..3W-GQXSP+[D@N%7&&8J0*^3!FD1R)E<*[;G]3W&*W"_=(
    182 M73LZ?CSU*SVS(A;*$G"$8Z9;R`2?F==X!?^,ZMQ=1B?NF>?8/[5!GX!9[1R8
    183 M4X4NJ/T>['_E4!5SOMBW%B22^/=>P.*Y[']N'<XR^*CVA,EQ/)3<V@7?&+N_
    184 M_4X^-PS6QKSN#T8J\_;<]H/;?KH-8[\RG_OO<7#.04Q1RIJ$%)BT"E&@7&#W
    185 MLR%%W?=.)Z*HF!X'`8,N06`*U!A<&5Q3=*X<!"H2-WIX^)"N$[BAMS:%*GK2
    186 M\8-]K">T0!W!NVT#BYE6(:[8Q2@+5V2KJQO>*RRWVD-K^R7H6-KQ/+CPJ54B
    187 MBUWFTB"NT`!\`%>(+);R1A:`*?LE#2M@:Q6T6(LS<F*+,G"A`UD,*L6!+'J4
    188 M)60Q>IE&%OL[YF)H`<`B:+'/PCZ%+";VJT06N"3G(K+`,#(96:B>\,.HJ0-:
    189 MY#HWHL#I#4%+%K;`H1DZ$_9KW&$M@X*+8[T36^Q+=U=#8HN1]5#BC/ZD9?F%
    190 MSC9ZO?GPO)K1!<O751+YC&VL,4?&@0T(L_:K9V2AI2JQQ83]#\!#!0M2X&*?
    191 M:CP3R)<;V'@"+W25H@TM2.K$XR9IG<`8BQH1[HM27L(5"T?AC<"$6VWABD6&
    192 M9^`JP'V.C=+"CA!(0LLX@`J:.C5B"G`Y%S#%ALQE7B]"I#F`*?:_[9K368(S
    193 M(06IBH04#QQW"U,LOH&AD7+=F(*2C@9,\5#*QDPD,Y)1F8TI>DQC"BJ;<3-@
    194 M'1&\?J2,#J$*RICR'57@M"*HV+".U:W"WHD(!9ABOV95B&*T.H$GT`M@:HX#
    195 M#O/MAC-OOR\?=7`7(!..N*?8BQ+9B$IYY3&//1<PQ7X?9A:F*-R6$%.4X,%;
    196 M3,7LQ9B"VRR"A_W"3R&*!S(NT\$4!212(0E41^&+MK$E0(4>VX4IP+@PI"#G
    197 M-@M4[!MF#H(*EOUR4,4^T[74+$)67./P\4M+PCO3(`M68'M?0J@"*O@J5#$@
    198 M8KM0C]8;(<5^/W/[>#N0@ULHT"FP;S"@V.\AT43L/N5*#(%R#\2Y3RY@"=P@
    199 M:`R(%8@WO3'4!<653*+R">=>F2L33'"/4H4F5N7ZA9MKG,2Z/K2I+N,JQ!%I
    200 M"D^@RDI21BG3@,2/G^\PKA">`+4CA"<Z**JWT)H)KS4/>6BG#IQ(=B*X:.U!
    201 M8*?O0>>-`R*6\,2^%M(4GMBGT,H'393]FA\TL=^+680F4)%+-Y[8Y6TT`PK4
    202 MYVY`P>9J&5#4I%.1CT*C9D3!4C0',05;!3R*?\%)5XDKT)0L`@LX:>QG+V1!
    203 MZ(0U*VY)X`KP2:!BJ]@>%J&*IOX4N`)[H4E<L8\B@#YAB=('UX60:PXP9RK8
    204 MZ4.H@AYH1!4P+PNCBJ@Y"56`"H0/]K6=$P$%^.FPE\`WQ(XN"5%L^%*6$469
    205 M`X""O(D5A!3[0_2%^Z,IC2%`0V24A_VYSJD`$,6NE$%$(049N,/HQ`I/!("*
    206 M&+1/P[_O:DY4D2DUW-BAS]Z!*41YV:@"IA;]`G0Q8F,*W"V%<PJ@VZB:4^`<
    207 M6T855?W]_G=073:HF`=2X%P+00IP@;(1!3K#KCD%7L"4A"@F*QKH$)FO`$DW
    208 M[!R)*#80(YS8A8:4^$#I``5G`PMBA:O<:>I^CIA/H,\"G&"C`$"Q+_$N0,$B
    209 MK4D%G%`TJ`A53LPI8&O1,*@8O-^Y`$?]D;7&!N7)8&*XIM4;J1E#@PK\?JU^
    210 MU"0"8%:(8A>'6@^@`.&$#YB\Q04=H%W5J")'#$TJ>@%'9#^K?2\6@(E]+N3)
    211 M,86TI2&JV>!I4,@4\9RB\W7DH&(_I20HD?L2E-BU:'8AB7U]]3.DH"SUJCE&
    212 MKN;)$3[$G&=(D3<4.%"BY2$H@>,I#I:`.E-3BDIS$8XI`#&))?;-2W&(.$K[
    213 ME,,_]RDBTD8&Y.PO#2H6!CC$$P]+A#O""*F).:C(6!X3C:2)6QPP0J8E5X\L
    214 M`#9!@R)K:'\.Q/S=L1)1-#HYXH-]W')(L=\FX`FP!`OQ!"=P?0.*78$K\<3N
    215 M8'L2GJ@^4W&(HY_:-9\XG'@"""1Q1D%E=#U$_V(\L4MO(IQX(-V18**EH1'%
    216 MT.Y;,PI>1RS_.']AMO3Z(1Q%=%(9*_6B?0E-[-^`UP_X$8GC"9&B,O`$2#Q#
    217 M>&+CP:[Y!#;[TW`"WQZ%$F=]!:@BG)B55]#S(^=\AA,8$`[/*,;43)&T'0BE
    218 M!2=RQ=#-@"+.A&(WH<-HHK5A--%P?!!-@+94""8HAUU"$T"P<WI"T8A\*1<?
    219 ML*+4(&*_1<,3"O0;<QI*9%Z&RV!BGSJS&DM`JIYN^E&9I<M@8FE`P<(0QA,P
    220 M[>P&%%"R3`&*?>/.FQZ0R1+A"][A(AFBT\TL4('YVT85N+[W#<1SK/.:>CXW
    221 ME2!%3N*;H:D&#1+G>R?7HHH`)SQQW*$XG>BY"4P\-`Z@!2#*:S01GF'Q'.8`
    222 M&AB"W5XFG-@G8W1.)S;<*\(2O+`$)G`W2[_.$S@U80F@@)D-)43\$I88NZL[
    223 M6*+/:2Q!GIK!!,Q4<Q66V(?R01*HH#4+2I#+6\]H`L.K_M'H8?%]U#_L)SR-
    224 M)$;'38U?!U)S<$*$*?I^I_EA'T4@(@U4>+)I!%J?14$2B@#PX'`"YDM5,$+F
    225 M#((1=;%@/[/SU71"PK4E&+&_K'3BB/;DX<1JI'H"'=@L`3"`!FGX<,J]`3!!
    226 MYK0"$D4P8I>P*1"Q<&X:1*P6!!%F10$;H$YA++$(._"I_<OCW<;GTNA$$#TB
    227 M""#(;292*#/@O1HXH+K0@P9D@@_81,3&#X2QD:_\:%\=!0AB7XK0K3>VXWF#
    228 MB"+`A<$$["^,(?;][ET'R5_`$'@;-C9OMUVN]EW']85/(=REN%E(MB2G<A]O
    229 MR2@B:0*`QZ^5&F%$!KHRC*@IM.X@Z1&3.XVA)N<2#7:^!!+[=X"K``<3C6.)
    230 M08\XX(B-_^J&$9$H/N/&`Y<WYQ*]Z'GAP&;?PL%$Y!F82N",T5`"A+$A'+'?
    231 MD-F,([*:MIN_1/,+H'E-)?9K5SV6V)<QW1D('7;YUE""7-FJL40=]-T#'[F0
    232 MA\5]Q^[GNZ82>"L2IQ($[-AX8$`R@F,)3DH()-K0RU<XB=!Q2BA!2I:6'H3F
    233 M57"B=[6A^K@(3E`'.C26:-V4:RPT1C&8V,<6#@N#";KO<2Z!+K(>,)%6)9A8
    234 M&+Y4,YN)$<EW7AS47*@Q[9U@HO::A26@"!62X)64VGWIX5.@HH->!A-LYXK&
    235 M$PL]"-&$S$<()CKINUQUL`?;'\$?0^.)P?).-)%$/6UT?\O<>7#1LW]X>QAT
    236 M/-N`HB<O/?85U)=W'NC,#Z)84#$`4N!P(J+`2)@X8;>21A2U^:VZ:><P!2F`
    237 MS(-K#^HJ!2JP<MLO@F<4X->N`ROR-*=4UHB\.2J/Q5D(+![E#2A@D0(=>4B,
    238 MF#2GF$-[#TY;<'KO"\MCB@U7>;=S[X$QAM8><';6WB.!GDS,X'N<0XI9ET%%
    239 MAECSJLU(4Z<I5-%D;'W,9J9PA=QIO/O(/M5,%.Z3VX\U,!;A;,(O"1GIZ^GL
    240 M/C#H:H(6+(C)<XHIB</-\XN9#K38#?-]^5'P4NGC2C1SQAW>?&!A:%RQ)![A
    241 M1T]4CU1^T=+:8T0;GE%D+0J(*FK=334_ZD04.'B`*+PB(J18&_@(4D21JJ18
    242 M2POI!XY%C'Z$*4K*A!1XY>8!%;70#^BF`Q^&ZC<=FN$11=[=HC#%H^W5B[^N
    243 M>^$1#3(4K@(@G.73(OKXJ'5&ZFA[-*'8EVR)`RJ2<!V_'7XA;S9XF(1AA2[G
    244 ML_7`GJ5\]&BB5OK2&&8,3RF`=6!V2#BQ)*N6!PS';>6@B>&M!_C,/7GKT6><
    245 M"07Z#P$+NLD+5XR@C$$+D-8(+#:8&,(5I0A6J'/3V@.XN7'M@4)(A10G%+KE
    246 M<*8_%:T].H\K@HFB"BR009Y^YN:#^O0J=+$?@SFRYA5S=>&+O%^3[-U'W?CN
    247 MZH$%Q?.$+)6G%^$$+S:AC-W[CRR0P2=/F,%&E\:1@;*#632P1!=/-S#>:8NS
    248 M"MQTH6$%SM^;8$BH1`*E=/B?8HM2X$P)U('5*:'&I,?D!A-1@ML/N<$39G!.
    249 M,8`#-L@8H#;'%4O`2HB!1U:.>A]X4^]KAF5[7\5`*P-'WNT!)IHHHX_KG,>8
    250 MO`:GO!P^!7`%.LJ%^V-?'$GEB3!29SW@2%CTP1Z;5RL&/)RE<;;4"_%'95NP
    251 MH49@'P4J_KXGFM0[NV12=@&$L#\*+XJQNZH\??&FP=47G^)$]Y$4<\K2EYD0
    252 M%R[P,M'$OAZ7CMS]NGL1@`L]M`A`R\TY(G1*HW$]#"4'.G?@Y<7-\,/JNC^!
    253 M#O@J<KA`I@".9^)8'O9M:7C[$#0&X"YBGL$M7H-01=QO1\W>.63LSW`&5TGO
    254 ML3^H7`,3U6'J>*'Y,/US>;]$T4ZAT[(`CE4]!2D);1^.W!CLEF'ML[>GLKMO
    255 MF.ZRL7J0TRZKX+ZQ0&10S25V1,G=GZJR?"#O@/H43(TLK=M7WN+12@$B*R`\
    256 M5[7RY<!_J`+R8,?[7-4ELP!B:K#+$(_,Q>K'^2G7*W!,2]3ZX-Q.F2UW@QD;
    257 M!_0:,ERU]/>2UYVZ#\&,[3[U#$^3!UV5;(+>:IKIGEW]4MO,EXU%CB]J>.R^
    258 MKP.UPX"B'R\Z]2<+'$25>('1W9)O@-.G>,#S+']?W!K:#R]6.%!@]ME;Y>Z0
    259 M9;/,:DM!%`^`)+499[TL<?A6A7TYOGZ*B,)NEM<[9]9:QJ.DPQA71\:8DS-8
    260 M]8!+6_%=_DK2F1"%)A?/5)"VK/%TIQW=$>FDH4&SA%;H`2?=1]#CJ;"Q4F,#
    261 M@A));XF;)KPPV7/;5U'7Z*[6%FMP)5N*'^$2U"0X]K6/ZD='"<QY>X'I&&K"
    262 MTV(7!H.WY_;[1]:VADN>G+$':42K7,<J.P](>;![(!UG%]N&348'SXHB"$XO
    263 M'VDRP2+'<[239(5&H39,<+&C(3\&N_Z16.6H0B$&H+'T:JYQ7++#IZ5(/KE?
    264 M@J!UN-;JK'%RO0[R?N;NH=;:QVI<CG*V(F"$E*6B86SFYE.-YF"9>^(=>6&G
    265 MD57J,/HKKG014RRQS&?!2E>-SCA]K<:#;+VTML*<J1(-DI8#,A5(.:QUXM%4
    266 M5[M*^:V$EX4D&!P-K*@H8M314>EK-=N%UW7G/8DKM&FR1.GL5+UCH^NYIV;'
    267 M%W;]J!O<DXJ;4+748-N"R?S0I!.[:S07>-I7286CLN`M3I/VJ;\K0JAO")8\
    268 MD958\CBH&BIZX.;LJA3::M6$LD?SE.FRAQ:>90_O1IFL>G!#X3"/DKF57/9R
    269 MU/["G0H275"".P=)U#YFM@=E8.[.<C5YUA*/EZ4QDCB+)+GLUVX.5;XE1T26
    270 MRK%4^"HANATDD=<CVE.G!$DH/_$;B*KD(2:KV^S5M*;$#"#KF=O5`+ZL\):Q
    271 M#7IE/O-27R(H-2Z8*YV`".\`J#)K7ZQQ2E_S7H_H&H<D-UH-S`16.?C]K8]:
    272 M`E*HQ\HSJDO?K*-=31OJ175/U*RSMINJ>P!KK:CRM2H%I^=BU>@8!;MY;1<S
    273 MMX^>G%6:G+/Z34XD^8,WFBN$M-Q@](_"EST!V,%5O37-PMA8H31N:'23IA&"
    274 M8#V\<0'%.1CB@``O)^*`.+.J(2I-JY@>;30VTT#APTZ<0#%E";N#I8JUKY$Z
    275 MJ_YY]\6[^N$-4_4+GPC775<3GF=@BK@OO`9V!%?Y^,7%,24O8*CZ=2C:L+Z*
    276 MMB$N!T\I]8\J;8O#5V8@B/!%_5UG:XS:Q9$J(#9SI>1'1,Y#Y7`?](\'#7WQ
    277 M`2Z'B@%2(7<RF"C%(0ON,K-*Y4F@\L?AVKR*G,J]DYR:1-Z]`-I[OO*0%UQ:
    278 M;W3$DDL"0-_0E'UW;*'JAVK2ZT>5/`C[-^(+S`A9^X)=,`34I*UBWJ-9ODT,
    279 MV`'SFN#D\R(G!C7`Z*=J,0>%9DRL??!X:L)Z(QOKU9X%]8K<_BNSJ03U9M9F
    280 M!P"/NCP4OOU4AY!>VO!Y%S[>6IBD8TZ)LE=1L+"@J8BG`I'#W(,KA@QBF0'>
    281 M=(_0L0%"MTO,.@GU]B\2+GDQ-`O1[#X)Z>U+M8O>MZMM$M*S-EICD^[9.2!1
    282 M(\[C6I`5#WD&')WO$I]/P9MG;@[>"('>`X]WRQ37.O5NUTOO4Q"XH:'&/A"O
    283 M)F%4K;V>25Q6L:,T7PVM,JLTQBB>*K/L<5-1*([N6;5NP`1#DX;=ZJ+2U1:<
    284 MCP/6E`285\E1(N,@J<YQF5%4Y\"6T8IB%E<Y'+B@5JK,/34-$?:ECU`15:%2
    285 MLR<'^X*[J4RNC>!8K_:;5BG,94[!%&FAYA$?[Z6MN,IQ_^*NGZ2B9I"W;PI5
    286 MN;KAL2#>+H(J<:H/[&V9H4']/^X78#30A%'9J)N]2J6-73XXA]/H3@IQ6@N+
    287 M$9B)[W`FL\B-SL8UR$HMI`;NXR63`XC3@W/W_9!=X]H^=MM#U,;R%B0I[^I6
    288 M*YL#1IAHIDRJT>Y>X6Z"VJ8X#-2V&%))[_95:TBLYD5H11N+Y6V5<PIWC^Q>
    289 M,9L3QX];,!:_UHEON+&8'"3C!"7W<M^;X.C?V'$]D34/0^3>.1TOJ:"V0;Y=
    290 MV;^B8`SMHA\('-C`IHE]/]CZBX-CLA*]17Q48==(G.,!%3<2;UC<H/?V&AJC
    291 M--^$%XX?W,<&FRVTR@-#8YP'DVPDO"$*KH%2@E8-(M&MK,%VJAPJ*DEDANH;
    292 M%?RJ;Y,D#@VMN0AD?>N8<@C<R7M.BVA:JVA$DMEQ@2RRF&!##@@N*\Z;"Q71
    293 M^%=0Z5#;D#Q#`GW!)16RKK@TC.WVJ\@UH@B1SV`S"MKUU57A`BX='`]&74)U
    294 M3^0KW+R_K$)U`$M-O2Q!/_';[M^:*QP^*5!7TU2!ZSPYF);3^LWKS$K:\GX5
    295 M.E]:R>.K.UEQ=X;H:"SB+')]2&!R(6.[&-4A7F0)U='L+XSJ,`1@G:M3\4#:
    296 M2\O$@K\4*3A%[#?&%!;6J^Q*Q]6>*MWB+E&+6IP]^&@-[?DKULZM`]4U!1;6
    297 MEU$E3?;<8;&T#+`]6/$P97=3FV3(PTME=#.[<$6ZXK7<0Q5O'S:[Z62G*>\C
    298 M=:JRYB"3G'O.9UDA&MEQ"<F>-O"+JN)AC56-ZW#'+6]*PTTMR`B]:CRYR'9Y
    299 M9I8,VF].):7_%P7;;6W-C<CNH278S*#JL4U3?4.^TG,5*4FC1%SDS21ID`.?
    300 MU:/L-P"4YHRM8*!Y+>QJ<90\MW]D:T()N_[_4&'_':_KS_\Y/A?@OXZ2:9__
    301 M\WS;+_:9)I9?I_3U_=6_B3Z_'27B8_]<H=_O$2SCS__C_)E6?W[J)_=VM?ZG
    302 M/_*7ZO7[A[\8'_YB?DVX_[F"OWUX^:^__/<5*?_GFOZO?/V'[XK[/WN)/WSV
    303 MTOX&:=C[Q>"KL?8KE=Z0COUE&>Z'3^2P/\]O_J([P(]]1?GAKZ@__!5P%NA?
    304 M2MO^\A]K7W_L*_H/?\7XX:^87Q<@?\\7H?O/^,Z?[WHE?%8"/GQ^Z_\V5I)Z
    305 M<3Z[O#[_+"ZA\9G!9/WB9^.+GVU?_&S_XF?'%S\[O_C9]:7/?BDP_?5;-5_]
    306 M^<<T@I@Z6>K]27QJ!#$^#WAX_<_]VT807["1^((%ZS^HC01_,1^6TU_]%1N)
    307 M^>*T>@Y&7NT/-'[X>:A$/_6\O9R8O\A38MZ=>3_Y:?]L#H/'^64;BI][);PR
    308 M?OVQKR@__!7U%Y?$Q_&=/UU_/GSO//_YE?'A9U?$;_CVO?5M\]LUOFQE\05_
    309 MWK<]LKSYD?7-CXPW/[*]^9']S8\<;W[D/"XLY[3^\JFMHO^V1W[I(/C>1=M_
    310 M]N>+GB[?.+]_7JM^"ZL1_K+]7$HO?RN?_*U^\K>[TTH[;^W+W_HG?QN?_.T5
    311 M!'KULGS7E"3OWC7_Q1__F'ZQ,8ER@N/*W6P?'"]V1'AQO"B*>8`?,=>58B#0
    312 M=9%KE[EIN='$5>/%IH4OPNY2@0#RH45)G"YV6Z%BHCN],XXAJ0ND`!@L8C.H
    313 MO<F#:4&8-B[-N,%3GF3%Q"HWN4,$J(2<]X:(,1I>D!DSE3)=E7$QN#->F+UQ
    314 MLBB:E>@Q7'QKLJAE+F>,3.L3F9;6MX4$G*6IX@-C[;0RSA0GRZH7_M(7TD8P
    315 MA5/^@[RF,?6>7;J$QUCT;"UZI"DRF@=VS1:9ZR5=`M=6\[X\><IFRN24LJ:+
    316 MO71NCA^:Z/"5J=7):V/.W+@TJ=Q%\<-,B](+_6VQE:.U"P@)P<D<E0CXP:`-
    317 M/FH["W(*WOLJD4NK'B^*04(.2]^O'E4-B18)M&T=&C`N[4^8T,V5,8P>LXDR
    318 MYNM?3]QRTGAQU*2-<9M/RSR95,K$@+%S:8K9'U($-5[,I!%SO#A63YHMYB?M
    319 M3[BIKUZ@P`_5H\6H97AA+%V8#;!%G1-S=%8OC".%]`98;-*20@)>DE,H.$$(
    320 MH*:,TTJ#1])#.5C$PDCK8M+Q+`M9]*=`:#7'BEC+E^JQ8J2E-<HLM5Y%/\D?
    321 MM2^)-KU#27+UT#HEYS-2!)GK+%'6$,]R<8^O93`M)"[Z+(C66IX4>3,7T/5&
    322 MOKXP*[/7Q:"QIZP]"B=]6J0,>3\?`4:96J9(;$]NXE)"'[QF.-K%R!`6!*3+
    323 M+.SJ&:_'E$9R#,?@7'%?WHESQ8:;DG/%1D:DN(A%J3JA2/B,=4II*U$)"98N
    324 MUBF0\.7G]ON9]E73'BJD3W$%`:NIXNU7.HL0./4T@R]@7+E=/NMB2,!1\D`J
    325 MJ1)J@4`8193`7K@O+I)!T12U'D(@&&"BY]/YAQMC+&OD1O180AN5_>*N*JH,
    326 M:$9DRM`\YF%Q01ST4/:&6,;3-!4G"9`:^2+C`_B:HY+-D'<+-09F;NR:!LJ+
    327 M9`5+=&F^/>8!UM&DP=HO/:[L:G$`6??0DF`[3&58XGZX:O&-*E>+K``@$N+F
    328 MZ$)7_W&*'.0UHL;,,N0,\\"?P2])4OS@8I(C#"XV;)U0L\93%2=&0A\2_DKZ
    329 M:/E?H<R*E+#%U3#]`K`UB:5=7)`O@.TP%0G[\FD@%G54-BA[7-GHA2VV?:9K
    330 M/#Z"M948;4.5+=,V@NJ\,E7:\LQ=BV%<.8<-DW'WL[)1'K*\&N:*D=J\`C)X
    331 M)9DF&E5X&7KGCU5Z>COOT+3?!&B<4TO;8;PFKF-%$;$,L*\6[Y-NJKU)LYH-
    332 M+OP]BPI3$:D@1E^=6II`RCN&ER:P)C`3IF:2=@XIIIH*0WH'%\3[L(!A+_G_
    333 M,)BRH!YD(I`!265C@>,:B%HQ"=M":Y.,Z$P28OH08>N9/N1>%*,<K*DBMYKX
    334 M,`^T9;Y9.]Z;2.5IC.RER9(##A<DVAF*ZS>DI&+EI&\-EB5)3!4Q:7K_:-K?
    335 M?5$,*W;38>B4HV4QM[O:G$R]&'3P3ER;LNI!E4-SFFRCETJ&L8N<;E24M'BU
    336 M,J9<7]8S6$NQSLT%2^>02<&N]S*'F2+'0`,J6B!L3L"-$:RSJQR$)(\$=20&
    337 M*HU`F5B3U)B@'1WVP17V'H@HC9JU-=[GL,B`*HAX4`FK1D@!=(D;AP,,1->-
    338 M[.BHD(3N&N\$(CKJ>G`'CX*ML:H>/H")!U@;.&@I;;9*1!M%R41H_&1LEP>=
    339 M+*`%S-2>\KM/%;S65CD[X]4I-GK04]=J6,Y[DDGULR\N3U(M@U+217RF"`TE
    340 MKY.S46SY14(,KV:1`5$>6K]:HS2FR(#,EC,=,&R@Q,@&^`,1R:TYAC?&*R@S
    341 M958(1:90N<[EA;&L^VW!!H(O3=$9H0#9TJ`!%J-X,]?%Y*`#T\E-(+`GWE=3
    342 MHR\`V8"0-HL44Y-(`L\,0\M"='6`_?DL4W]J0/"EP[08VKB9`%T2`)<<U[(4
    343 M(.`P9*E*'[F@5NEKW+J+]`QZ(-,B*N(-X+B^[WRR_$S>8I5:E%H"PH'-+=F.
    344 ME/YX9*\'U;4F"1?7X&N9_QPAI[%G>.\/0KJE*]68+B*I]-5Q)*3[(DK:%M.[
    345 M4'6O4PK!QQ76/)'9">+@5=99\N:()!5O$2E&_'U6N\/$IW(6]E)2G()<IS7Q
    346 M%-]$M+\E>L&S1(QCJ.:M,I90'<TA.XL>64G#]&=Z@(D&F.6")61W$A'NQ5#[
    347 MXM55]!:59UH7KVX.X&`B<K%#"/WKH:.$EOZ9<2IUJ>`!C%Q5T1`&0]ZS$`.]
    348 M,&99$KO"PH90CLDR7!;3YTEJD]VS#?E?Y%G)`LS4\#R3*`R;?6A3(?N_R*EB
    349 M3=2Z_;/WC=XVB,KL9"N%X5=Q?FB*Q+TVB!WA??7&:6U.-K#T:'('&XN7_NV1
    350 M%&A95W3Q8[+>1A>UKA[VH9R,;V"6(FW'Z'0XN3&QH#1Y5"RLZHE(ZT"E<UA@
    351 M(QNMDA_3Q=PFXV^XU,$-'^R86.+]03-(,=SC81_@0Z)^T?YRGTTM;$O)U!BT
    352 MF4/0#JP*%3J1H<GWJ\0&*'1HC*0%74^BQHC:(NZ?A)$*;H`9E=A_E+K(_N\A
    353 M>DYF_U6*IE0!:<=APG.S,=O%BBM1`'?U(@5PO]XYU,/&E*(>S`'J*2N5>VYA
    354 MT:62'L,84:@]X`:%Z/)@"O?M(M.3V.5N@9,8]FM:PGG9UD@@K]#WZYF$GP7B
    355 M\\3E1"0WBD3TT'V0X(&R%R%Z3#S)JI,]HCT6433S=*F#?D$=;)UT0V+*(P(P
    356 M@^(/'&TO7!B5.W0V9CV/-,V/F::6D],R30-<(T(XK\2)=WEF,^@N%D^$0*_(
    357 MB(("13FXHIY!"I.-]&HL"SY"J4;X$-U1L1D"N)!4?$!-<CDQ&>O%-@E=[,/L
    358 M*GH^107Q8#>CM"KP5$:HZNU#QH*/7;?)^1$>@W^868*)4KLB),<$6%:]"!("
    359 MI\*J0$G-IL9T$HO%>F8_?1,SD!)/V1:I.Q#>&\)X#4&91_K15>X>Z4W()[H;
    360 M8E6[79+J(<9$=;%;C#>EG@/O,,A]S7(/D)$KBQU:E\YB-SJCAG!U;^SM_A6.
    361 MM*AU)>8B&;`WH#HVGBQT^\*NN\ZIS$&,$=FCMT7A("7S0_Y2MT=6.G'[,HUG
    362 MT<KK.J:.A<6)S.56JXC+%`I^E#M?U0"NK>P^-!8;4635%A+[-J3-$*9I<'AY
    363 MO`\.+X\>')83>765><V4,HU<=6DVDAUF]GLV[Q@-=P1K5V/>%"=MN,I=NMKI
    364 M2O<5(_];,M34E;:-(<A9+K1,1KGB^:BVM%#CI@($4AA9Q](Q<Y1&1R05KOV7
    365 MY<E;+4RG(48;]BM]V&"-BMW'M>K0V(U](ESM4/A%Z"N!H26J$^F0Z$?1OXFT
    366 M7*@BI"QM!"O6?D$:K7'1[\%AIG7IS3"7$$</RIXBBMZ+IQ_ZSP.W2FFG!*4T
    367 M^BE!M`*DIQP@&HM1507*$#6QS^2+S"%:2W*F8\(-1@2L0W8)YG?6B%*%PD.T
    368 MCI[9HHL,;PI]V'.V`1P\`V7((CVU;-\R@I4Y3.L*;2XO_#Y]FB99Z#ZAXR?0
    369 M0BX5VTTZR'*"5F&0)94S9QG/M$0=W3B*KJI"5T%MB"F^D>W&"BQLU]6LT#(:
    370 MDQ$5"K3="7<I9Q<51O%Z.@:N>3DDX]G#E+N`=X?$Q(WFLRR`,W>9G\*OA#A)
    371 ME$4!I=HP91//N'/Z!>##>&1E-351B2?;3M:/V+61U:+.EBZ(]-DW[-IHB+[4
    372 M&PWMT[^>(5?C;5?ESY,XY4ITZ;X],%91TRUH"]S[R?OTH^,6)SG#R,>Q("))
    373 MM0145-P,T",7X*[>7DD#`,!:D>(5LB+)P>@;?"-['^._.!ZT^\GOMXVUA4H6
    374 MUI99EN5@^QE+]+JOY,'NKX%^K,$]QUB$19G#3M866F\(%ME:DGH($X:=G:CB
    375 M$N0"<[0/V'V5<\8NZ7@VD6I\E-EVR#P/&6!%<WV\51!=7*C%::XM-:VI[@]9
    376 M:A:_-HJL5%KBR7QAN`FR^T-?7T47;M&,AIC<!0PTIN;Y_2Z'(!5?I853%CMC
    377 MUJO\KD)@*.;H-)L`**$G@W1@+$=Q>K\UA\`01C<T%4++7)N:O\&$2VHB)#2Q
    378 ML*+*^#)DLD1')F5%<8S$X\648=C4R'ZJ3@V^!D86TKZ&*,,Q/4^4/T46'.+(
    379 M7^U?7782P@$@+R>FJY?BP5>:\A=]YD#2<(AI3ASI!YW5*/M:$L,#XZ3IYJ^2
    380 M=ZYA5SE8Z(SS[3I$X%-C9OLTP*+P&#&P'A'=KH]FU[8ST4_5`C#8-E?;2Z^D
    381 M>5>MM,&2^4(NY@E',KSC5#^=PE4Q1!*6:O/PA#-?#O:!@#4J9AW'#0$0K!&M
    382 M`,/0MMT-$5!?10Y.0T6K'9KP0TU9+.')%[L(T<"7Q@HOB;],O08&ZG0VN<ER
    383 M^<SS]SL>K&A5`:>H7?O"'7>B<.F6@,'='NI7^GMSO%4FU1%]-P<R`]@WR$OG
    384 M%]='0Z+R8$A43^^'&$8"HN9=#TR.._V^D<)X5_8WDJU1YW!!=RXOZ\B21E0-
    385 M+!W7Z!D7!K82?D%+)VG$[A9I!4]"-7WZZ/I$W9<2[K1@JZQQLG60M)_+5"GT
    386 MBX1?^]:=;OX*-:\/%)3345#C)R*I!KD:6C_<"H)/0!^AUJ]1$"!5!+^UY_J5
    387 M7@,8[,>2XI4#T*4I%U1D51JO\)RKSJ?EW@\&3%?_L\R%+IP42(>.,1BUBQ?/
    388 M)82@P-:O@E!DSI?F09<N;@<35`G]HZKSHV^OQERX3Z_N`8MT$8/Z!>HB2I<N
    389 M8E<+PBA$'T+T6FM(Y6]5!)3MZOJR#&0P?-IU$4.N62FH8S+<+&[[UC%V?X!)
    390 M'O\U1A7@FAQ.W@7^]P&7A,(H;8469LH(V-<C01>D)$!5<UD7`5R<ZY%%C*6F
    391 M;](=DHM+^1T^8P+=QUE;MB$[DP?^\M)#P,6-#5\;9[JU>XKD=H_H^C[8MW<[
    392 MOFD=U^.+UYI'7+`#98V;FC9K?[F+NAQHUBQ40V"[*O^YL!)BXA66PA6"<#1=
    393 MU!71)P8W*5$9SN.BZM8.*MM-<L3U#/;SS7TD.Q,[P&3K^N&X>C00-96/7E)6
    394 M_2IN)#=TT<*R\$W48.M8K"(3&)7)ZHA]],HZ5OXWZLL0UWS5$+YJ7<FF5Z@M
    395 M9.VD6E@F2URK714.,0I<6>[:"0'),Y,R*O&:(U#8\.U_9,.'JHPY/L9>M&C=
    396 MCY#"E>L^6)<LR_JQ6PA5N$YK[."90%5_H4,X@V%H!HX21S]-0CDHPM@AT@2.
    397 M@WPXVY2/9U!_9/TSV_\92SIZJR+`%&<(,%MC,62-2S*UH/(-*Q4LUH:DK;NJ
    398 M5)0X^TC2^+%ID)][%X[#M3>TN.R9F31R;*]N$@O\NUWF2O.->,$^CVY#@&.K
    399 M>WN)*>OZ:!\T'YV,>YF-MF'[5I2#)*>7''$A+H55#GK70])(:Q4WBK"58IU[
    400 MM#1.^M96K/^J$9*W8A*+D3;]`.I3/7UBG?)13[0>Q;B420K<7G>I^G=?WB3J
    401 M3[)=U`Z36`/RZ,5!/C@1%'YUP0R\Y34-^H_NEY!@#O&\@G/K*5SB]F$>,C)1
    402 M#@>5]D'S^YMBE,7.4(JXW)SV+U.'.LL5'F])>^WFLG=%87,6A0#H2G/SQD*W
    403 M3W[,\:EBOFB5T,W.:'-8W!HT[+T\'YVH.\OC>:XAF"L=S2356R(./1^)*[#&
    404 ME"$H9^.L6K0[5G,)8H*KG2R25>WFV6+N[E.])76L[>/QY<S>849+27AN7X2T
    405 MTI+G$:L=)V>2NLXEIWT.I,:KB7[R<$L90\^,"A8*)N&B>YP/G%`TV>H3D=\L
    406 M7EU*UP>J387F\"UM92(K/):\1BG5S7-_)7_36`5/0,94>"6]R\2-D3S.W]>I
    407 MYEL3["V'8S0-\PN<%MU;,N-;YI0:YF\4=SN/+U7E#J,4ECMS0-3`KG'P7+6D
    408 M']-PF)BTK`&7`LF=<U&,Z,B):`^AP`H,>QH#*UA#).CG\05D!PM9#,2J4FP)
    409 MZ;H0G3DBDO+#Q!\C?SK;GQ2L*3]^TA<\$NLJ+>6.PVZVM7+KVH8Z5\Y5<$O<
    410 MU&IA.!0:D.^J1WH/R]Z^ZA>[5\R4-=*GT1M3HK".6Z1K[,Z005S["[KG8J4K
    411 MSYGC-5GP@V%UIF+I#/3985\/@X--)8K<+%-VT?NVJS)M:J'=99[R5;EPWT0O
    412 M'F.YI6HG)R3-PA@0=761&W$&^G`_$*JCF8[X:/NS-V5?P7/0@OVAW66:NA^1
    413 MB_(DJ6N!'ZQF^='%1BO,Y*&*/R]UK\J.(C9%\XIR@%F^P2(PG8.69-U4=<;1
    414 M_I^^R?@<>O:;M)N>YRL"P;O+U!V<A!G9N->\!6[0U98F=@]D/9I5,WWV.*BN
    415 MLU#T.@G+J[*%JV@;^QCHGJ=Q@^7U)<F)K&^-[#XM,/NX[R_GJ`?>/9UY/J%8
    416 M$L";U8)7O"+N8#68>1&\KJ:1_N[\>[7@E1[R=G%B6Z\:%T4V3FOC%3D+XHY"
    417 MW1L225M#2M;+LQ;9&NFK"6AJ9"?3P&[ZD*85-_6?PQI_NA2Q\(4V>_(U24$W
    418 M$T9,N/)AY7-UJ(!3AX@EIU7^56E79\(_LKU,VO(.,WJ?[F3'O9.%RIEE3S%W
    419 M&NO#-A6LM*)4=[CEM:RI?@*GYZ9_;,V\-)!#T/DF<M^>F7H2JGHR<['>%?@"
    420 M56XW&*QZ3"AY5@-(O2OF7[&+'E'G+GD]9*BO`+>DF5W+4U6/IJVH>J!<8F0'
    421 M$SE-[)"IY'E=LED(.EH$T,&?KIJKD>U=5IRS)8B7NXV;'$MN<WV\*C?^XB&R
    422 M!@P:*/'W!A/PE7;Z"T;FP%IV"G_LK-,J=9@"D3^FHXHN]<)W9=R):;O?JV=_
    423 M25_-F[ZB>5`W.<%0K)\ZV'TSA_SI]J\W)>M/]FS:YX/IMZ"DVJ!N?]C/"B![
    424 MDH1&P_:1W/A4,].<&7#1!6ED1_O7^I+%%S=;`W``3U.Z;OXM+(*7`-[@_)-]
    425 M:SBKIK+QS_?EY:*VO\I]E[N`1C(!Y=`U-LIKA->:V'/,`=0C*W;=W1K934RP
    426 M4!IGD;Y?WU,0K]?45>^XV:DRA^TJ=AS=A(I=O9MU`F72*)7?*3RMJW3J1&I*
    427 M:'?@JB"GUO#NLH(530AH;U\2;/.P51V@R+H#O-X.5V.:?[L/!-DU@;BI0@=:
    428 MFWD:E9>DJM]:YFETCI#UR=Z5%R(*C,@:^Q=4!!D;A&IPM_L55+DFYWW4H%UN
    429 M0JM+;&U=Y.@!)'#7>DC43WM/53@LG0X#=\/4=L!=91#'(9*!YD#C`/*H3;?5
    430 MDDK*_D+NISZ?2S+&BV/9U"J\N#6P*\5.)ED+$WU<%$-&(W7QT[#O59E+5>Q;
    431 MABTLK2]K>&"7A2,=P:9N%J&:="/'H>SMY=-LVC_`?HUEKN,M!RNC)&&[,83M
    432 M6H+3=VR,$6W7N(J3U=!(:H.A9$;%PY"-3P5`KM(;8!#9-H00PJL:$]&KZ;[T
    433 M'.R.4>OD3HJ>%M^M+3O5E>:U)\W;CF%3'6/:'-RNCS?=B#*KVZ>1"A[2`U7Q
    434 MX)O56/-Z[;OFP5-+^`XF%U?XTDWO)FA@)W@7'>:1:%[1J).,V^7?#&[:K,,E
    435 M+^DM)#NMWNFX#)U@R2.N2VYH.>^3&V?0SF3?@(E\W*XQO1PXCVNQ'%)<^-KR
    436 M>J+(Q5)1'K8XU_[B3ME0--'-:PWNNE@%8ZYF@\Y)TQ24.U'K60/IBXQ/[JNY
    437 M+?DV!29/[&Q#?G6P`5?58^0M)W88N@'L;<"4T=DV;`/B^5P=*'KS&+&R!@SU
    438 MMC.1F\M7B3O3Q]ZF+#IAQC+=UN:B#1`G7OF`O%W%;-Q$C&EZKLR\-<+;[Z=2
    439 ME-#E-%:^VC^>[G6=RB<O+_,VIL0'N`=ZF*:VE/^(?[[;$N,"[OWP-BH'2H4Q
    440 M&D]<5-`3R=H#+O%DWV2\JD$=A\L:]352$#3)Z\7M;8\BY@8&GH5S/#!95?_J
    441 M;CE)5B.OYJ,]B[OI:CW+[]J^<'5=5;UZ'!^G*DD%K>GN^PKL(R+?*R`HBRZ!
    442 M0RAO5[3J?06\4@3S@L8W+'Y!<KTCI[*MG+"B/A!O0Z(76Y-FIAH%"A?[-6>-
    443 M\]A_J/J5D/9@=W#S>N9P'.7AC"FRZA0X/@$.@GF<#TA^<)R<`%[#[(TT%U`>
    444 MUH8A4NZ^O&C5N<\6LC<`NW8![&4W8(T2I9#V@"&$&A=P_L1GPIR80YS>!1"W
    445 M4>9,+T],CG>+2_6"6MR1JJBY-2V"/>5*$^VM%\):&\6[V66TSI%?BRG21X1W
    446 MLRWCU:$M\?RTM]UOZ;HU-EC86/3ZI'$>B.%'AI`QTF;2`3QYL=>HV6WMB[?\
    447 MQ=V-=`@"GUS+3KG4T1CXN'3N*TG-[4-5H!+3FD<*&=7M<BJV6ETFYE;;.,&O
    448 MS$O96>WB%!8AC*6TDXOIV]7+BFJR!UV5PP:="+W3&(_A3A17<:_$'(#I/04L
    449 MD]C4-CH9DZ$KBSJ1SU#A]@E(ASKL"F5%/.!$W)`*B5EZNN\HQKBO8\&#1)4K
    450 MBCH+,SJTC@TY`[+4]>%(02YQLT=X(01-HF\?I])-%%T1UTY<G)RD5>=8^T/Q
    451 M@OP!W)E6"Q&@,NO'EG-H1$J&L`FY.0\'`%,P9HK('$")VL-6.""IT!4[U6%^
    452 M6ZU%D`,7AWCLF+7(J"-4Z#1+,"=W]6*DATFSNMFQ=A.LBA=GB(=X,\H0J!%2
    453 M.VO+1W25I7DIRYALEKFJ\$&6.:3OL,J1=Y,.*1>&=*?*E64V"48Z"LF!0DPH
    454 M;PRE1$A454W(+83^:F9S/Y;$&'1G3_&>LF56O;7DQ+RV(<AAY,Z<1,BEWS7+
    455 MT=)6=C'!E)^A5$4LW+[D6$?"JYM9Q)]P/\%]AN+JR!AXEAY3S>S$O<&5Q1-0
    456 MGHV)6>50<"[Z8'9-\*C,;(\5/!14.O3R].3,LEFK4IRAT"T&O@'@Z8VY,LM>
    457 M>000E"[[$-.6%.(J)F40WK7PP@*@Y/C540RJK6QFSH?N5Y+:<+F=I2RB!3B]
    458 MV^_GOER@*P6&IU_=8I0F,*-DI:A>336.G:AH;2'_]PMY1T7P+CM7AO]*1J@`
    459 M7G7J%5=1(N7RWBK5@JOYY+:VUD;!%<KWTL)BX!KG+#&:_#BYF)81<3J$W$ZG
    460 M9AL5CSOYA%E8E!M@Q6SE0;5K).0;J[O0[0N>=:XR*<%530'<6N-<+2[P1G9I
    461 MV:9L`4:O5@_JJLI=F5S*=H1%04W*5%0BNZZM++B(8N.V,-]?0:FK>H3'I)?@
    462 M8'^>&=ZR95TK#B@Q`57H3CN%>=];S",K+<7B7::4)=6\Q'!U.MA5^G*B#`K=
    463 MM1-)]XS6)I^")\\^P3\B=.&X.-I22%>$[1:58:QX-)@^K#A`![6V,.:30K12
    464 M0N@RQBT!!W3SOJ7=WS6YY&'X;2$",U*D1$A2(J"JA86EF2(E;+\'='KN1Z=:
    465 MVT[@>'7&5]&BMKRXL&-SXZ(7"K:Y:=N1BX@HA1V^[3H'^D(WS\,4NNFT(P_H
    466 MEL%=EO3JH?5N^MRJRYQ</#^WM3%,GL.)ZIU%0)`C56E,=[5,H'[6=6D>"@.,
    467 M%?$]F_16"27@>'0N\>IH7LZ"AUM-;2W`/AW8H8`G!Z5#I:@0[RX;8L`0[6@Q
    468 M[=P%#P;$!,(8W"77NL=I20:8*/R9:&H73=<1@"*)U1".VY4RJ<XM2JAO5NYQ
    469 M\1K5:]E]`EHX7\0SNRE$2:(#)=FP@6WQU-S`8A%'ZDEEH@3TBZ#NT@V0?L/W
    470 M!K8Y"/NBE-[JJ1W>-T[4M&"Y7400/X+2^U*6BOJB&C=5?U#CH!3A4A8]L(4'
    471 MBVP9M;#KZKQL"N?'.L23-9_N@SL-R]W`HHA5?E3=P-HR6\'9^0SN]IL49W!7
    472 M>AI.E+J[K6>D;;,3U<".O(OB),GL:`GPYN7%2=DYNUJV%-A0),2L*?>)3NN/
    473 M^X;)HNXV+BCR$_=6O+U7,J#C[<_JAH)-/,>,<@WLL!HRGMMXJMN/<]EPF&-B
    474 M3^P0$T$T1S5V==N:.J>-E7,SSNOV39,0++&+_JS:R2Y;$H`6\Z1M-Q,6HWDY
    475 M49SXNT^>Y)Y5'$$O)Q!,P6(6"!-4A0,>X#IV4.W&\G1L[#F2J_6H2DMX&ZOX
    476 M;F\F8,:Z!.56P%#2DMBAEI4*=B]I[<393[H$WZCCL7Z.()8V*%MDQ;EDY\#:
    477 M44+Y$KP2S0WNAZGTS#@CRJ.(YQ`*<W,R8*J>VHT:ZEI!3S0YN-&CE&5,J0U*
    478 M-,QW`^*@7$Z$X)G/3I98B]!S-QA"<[2!5G.IJ!XRZH96LIG37?*&]^^DY02&
    479 MBS#]5#9@<\!$*=S)0H':M9P`KY=P#L^*!L10:[&^X7KI-QL/TV5]]$7-@6PV
    480 M(*JB5SK6>T/F(()S&\3)/Z`]F.U!1157`3=VM$='B@RWI'851O$@H,"O7W`.
    481 M]+1EDAU6P"YUDN4Z6"(H^I-JUOGH3-,:(J$L-F$*[0N&2\B_M3T<1XXK=`)/
    482 MQUF=8-(ZTLE%[*-)(;>+I49FGVCU+S`7)7E!4>?(JG-'.+_/)1/L*D.!*$R@
    483 MV0'+'-6?@')R[.!XKH[1[3>\#.!$&-'.M8:YPQ(_H(9%N;>I.:RDFIS:FJN"
    484 M@_T8#*L_)9'$3.$5&L5U]1G,)VF5I0RD$H75J8+U<`%+RV.WT9@;_"Q9*LL7
    485 M_3\D>Y_)T3A51C#%`7-6*HSFXM7G@66(Y38QF#-$DDEZ%6D.9OA4A?:364[G
    486 M[-.&EN4V%#_-3L*%"T(%XQS9+18/*[MX#9[46C*4^USS63$9-_^(D>]\DG:T
    487 MH:""6\+0S0UN)1\RR=.Q$:Z[G6?M6F7:,!W262&R-.GU`:JD8G'J,H^$->>^
    488 M;%@2PB]Y6Z.*-$TLGNE*+:JZ)5+%$JFB`;CE#:;'>'*7BZ6AR>;(ST46)*I<
    489 M@I_>,11EBV[,UIMWJJM9#J\<#F]5QTCM3I_KV:5K4BNE:/FKI)]-\[8",Q=^
    490 M!A?$3<[!3=D0H2V-!F]E<*G*LUYUJTYII925P[I54T'=>HA2^]%*%<"R,O-X
    491 MQ2.!:3J()&3.D4D"1$8FR35$)*'%1X%&_D83#'6A):_A)I160"Q;A90PX#-$
    492 MN@.>G:ALS@:(J%&I1I<D-.8R.!OB`5'B,40AV:4-X@?@5%#3XD'V%(T:&`JK
    493 M=J,2IP%U^(S7`>(%CPW2%091GI2\C",C6?U>CJM1;+0L9,:<PJ(<"1@/25<U
    494 M1.S0=D&9!1>I`KKE[T%1:(U#(8G>)*P2N2J[@%4T/PX5=V^DW9@3(9@`K!ZT
    495 MDT^H]4*)DX:3M?8C3WU*7#7OI&#`9:NKTDA=]0PQ/RAGG;'B[%`;I(JA&%R>
    496 M34'M.Q/I0"%A7R33#Y4W="?V_!@,@$>!PSHKN`)5'`1,JFK<6\]L,6B;:[CO
    497 M/"&FV$6*<TVY9;OO%,#814$8F:KW72LFLR":5`_38V"3/M+9I`;B(D7Z(*N$
    498 M2],J'16%6)6J1Y-)JG2@0!'5X`PHODN)%??HF\B2@6[<LKIG;$NYI6R7AT18
    499 M#Y#RJ+0%=E.$8,E9$"U%6`%*H3E@6>>L2YE?/9DEAT0)9WYAY*?@FUF7%ZG0
    500 M'\C+2(SQN)ZJ1T$!F]0E3.4LKF+E@UE<8OE.I]_LE]^I7Y&U'B&E&"-=YT.4
    501 MXE4"*J)G;)B:G#5JZ]ZCKH*X.(55+JT29CHV'T#"/40,[H*/+'VD-3V;L*%8
    502 MQDK!'^';:E?G+?8D+R.`5Y8WK(ZE>D\#2E`N`67P`=1.AP]`FD1@IOH&<AOK
    503 M&_PY5-^P&66!VR5+%8Z539HMG(#3.,L9\5P,"*:P:#$,G,RW:=[;;*N(`])F
    504 MT=2L@KJ&C6B>^YYMLCE0\B!2:*H[Q'SG[?(8S_=I?[6[VEBINT4$ES6K$`UN
    505 MD&C>UJU-%^A+E&$E9H443_"7S37*?9:_+QW5%FY"O;KL(DC>=Y?#3=[J,M!8
    506 M62W>*#+G0J0&VHI@R\/H14JIU^&:3?4WD!#08.Y9P1.6CN^;V^7")'P%!8XA
    507 M%<&3:C&[NG["8Z;B%ZE)T(1J-2T?@<\EDNI<=6CH9=4F!16JPJH=1R;5#[MV
    508 MOP[C/I_JCE58A;++XF\V':N`4)(NEEFE69@E4>GT<LR*$!CBA/@N)&@.R\)3
    509 M6":9/;F5"Y4,\)3G352S72@`AR8[)U8,<E&OTBDU.V6,LJJ9%\L),K2R2Q9X
    510 M(L[4QD"*N[FY\ZMR/U-^DL930UX<!#U+)R"[N,3P8K%HC8086ZJ"@9Q1MW!Q
    511 M-H]D0:M$S&;-.`7KPD'Z.40[U4"(K!K@(`<:H:E#IR>9E'6?4$+*(`.&-B$@
    512 MA*N00(C6-B*7%?873$T=Y%U@&B[>10WR+A@#1"0DV=/UD3Q`BZ2RYO#!8,YX
    513 M4)8YB`U#\&?VHT.Z.1%./(NLWA8%1:(G"@9$K&0=*9"C</PN/*1V;7JK2.F3
    514 MR&/2*ESP]H>U3PS35F>6>A:)HNY3'YW9D2HH/48_^?*@V;/U3X7Q[9?'HU4@
    515 MH($&_VHEE-/$'RU7J,[6DOY)DH7@1A,%E>2N+)(PB?]EI,,?Z\?:+)/Y+_[8
    516 M"IDWXC<OWBF"">Y)^UKEH!PPUF\64`GFL#<?ZMM:<M>6JP/_]FNP;'I1C[T9
    517 M9LK<*U;*<J4)V.51J:<Y0?U4*-"79'%E+Q=7]W(1_$^5+ZIQ"JEC7(VB?I6I
    518 M4X*EISL:)L:3LZ^"OBHWW_=G%H5_EA:=KG\WM3^3(W;MU#/WBHJZ9;=5^S@4
    519 MBIX]C(+CI=AC$`@:\4S2TQD2L\O:D4'U(X.*Y$SG??P4#=BK>44$-+O@WDFR
    520 M=1GPM*AWFQ_&$(LNF\.Z<X[FI(."S)H3]CG%-)!R53HH"%(U89<;V-7KN<.0
    521 M+1JPDV%IJ2>(N,?IAY?3H51H!H5NPF*HR6C5>F;N9P3%#EM:IY+Z]=[@V>.G
    522 M4+:N4D8[,7,G,/=DM0(P/KRQ=:90O)JF&+*K-?5R%H<8YH@B2SLN&9LQ$M=S
    523 M*!@F:+&(E4RR@ATZ'DW:>602]8#?+@(9F=@*?^F).='[.+TI+WHR#`L)Q/0T
    524 M8_`7W;[FU#@G["]&O62G7Q]KA;BFLE-42AX-M;B:R_>0O%H4$AKU7C&6WG)U
    525 M1A""JHZTEJ0C@OO04AQR*C0%0[2W]G*[5>B'=46)"-LB3%&O)^+S+I?,AW4E
    526 M?T(KB7;1=[T(3(-$-E6(U(/3@&@$QG41EK9(V+MPWUM$,\7V5#(B7"TRG!AD
    527 M/,G_"[JTD`172LD48"&,1!<BMQLL%:N>E1S8,T-.B*!I:>Y3>]@13`JS&S?[
    528 MRZ3ZV6R20],%RX482,M*`3[I41$U&:[QSK1:LHV%R0_E.BP32/AVF8@7>YQ^
    529 MN`>I&.<T-*8BTZ?LA>>S558$1R7-4R6>JFP0Z?/F..3&##'.?GHY`^M6\EG#
    530 M%9FJ\@&YNTA4A.F*<%!M"+96J$1@?KH_38ZIT+;V5[&F]9)U+N_A8!#".A%3
    531 MMJ#:K<T7`5&89"K%VN$>S&."F+6%([?^E6C2U(,J3H`L<V8^#HA+L$W4U6P?
    532 M"[E/E&<[$7M:C4+2/?-10W+\'-D:T8^0<7D`.5/SZLEH,C=&318Y2(,^B<C]
    533 MGIE76E5\%'*S-/A!3B#7<5PF:O#3*ULC\A8Y^N%$ETRKW=>A-5K*`L701!2K
    534 MPYFA:+)S5<LOF_U*1M.0Y2$N7S%+^0HJ*6^WS`,)R-SGUB,8$EV=[6I0($FZ
    535 MHPCS>9D^2M]6V$,LUJPL8U_.<V1:3(/54+0G+KWE55L+C:#+P3DBNKWRR6&>
    536 M/%JJ$^).#PJ-H)F<20KI$(F10^\A/1`P@=Q;BYS$;'_3G&P<4KU0R@@JDXQT
    537 MAN;1#QA(:AP=\YBW$H"Y4#T=B(.+2IU6M")C+_ML7Z0N:-WVU'%2C5L)]6%2
    538 M3]VL"%]50>ZM%8`<CF2E"=KW`-VI\[[72!2EIRI!3F8.JFK7%$^4_G95L<9C
    539 M#?=HK1OD])R/C>N+'$@>`N[3<F4(Z(V3D')P#MH]FUB488(\9!YQIL?5[-"F
    540 M^O68[YT:'6*6';Y&E9$KB)3=@YW,>9?\+.)EL"-B"+=NB!7D8"=2\<QZG_!N
    541 MU!#3[C8-KD[F3B69816*E'+Q;&=BJ"TC"_E[83XL1XL'[O$O[F[%$M66K9R5
    542 M6R:3B=U:!^I7N[8+L.UXJNB%I+A/2R`;C>1EZ37[\>*92X.=E45\)1-A%?=I
    543 M(7NE9T;;60=4\AGK`).:2+!O@FDB`<#'<*<&IQP5-50&65K4+$>+I218D3N[
    544 MY-Y+XS12!.JA$M!+LXA`L-$81=Z[LIXL=S$)P"<Q/QX]K:(^@T'N&_"B:J&?
    545 MZ70QQ"#HS:%WOU7FW3TWX)]#[AW_-[Z3>/,2Z/.-##S][W>2\%X]Z.MY>*\>
    546 M]/54O%</^B3H9_%_YV</^D)8D+(ME%!5WO82?):6QQ^7ZR??Z;?*S%N?)^7-
    547 M>TQ6^SPI;_A3X4^M3W-^?B@\;_WJR+SUW=2\KP7G??K?][+SOA:?][/_WI*@
    548 MMUYR\UZ]T+]]5%+>C\O[<?EK864_%J'T:7+=M^.-OI>M]T-?_5G.W@]]]6>9
    549 M>S_TU?&KOKK]JJ_NO^JKQZ_ZZOG6K_YY4M#C"8_[\/9HJ^\E_WWMSR]-`?RT
    550 MO#D%</Q&-^!;;K37*8'GA?OJC?/]1Y4W/:J^Z5&?!4Y^]<+^_J,^"Y;\ZH7Z
    551 M_4=](:7PRP%6WW\4PZN^_ZC\ID=](<'Q"X]Z0];;ZPM_?N,/+_#XQ@7N(_K#
    552 MYT?S6T[83PY3GIM(M<O^/3[Y6_GD;_63O\4G?VN?_*U_\K?QZMB]OP3+D.>W
    553 MB9#D_[X=?3ZN?_7JJU54!.)>!SO.SY'>/,_]_J#Q!F#YC?S)5P_Z>@KEJP=]
    554 M/8M2+\H/H\]7+X'1Y_)W^DK\Y'J)F#P8\Q5D-,1DX77LX,^BF%_AT?@E.93K
    555 M'F3X3U+2']=W2U1^TZ/*#Q6,Q_GU/Q^^!TE?ZL4G[\L_>SSZ];C-SS')S_#)
    556 M-^,]O_O5WXSZ?$L&]*_XZOA57]U^U5?W7_75XS?!A-^*._W:GP_?PX0_KT?*
    557 MF'QS;_JV.^"'KOC7*:C??F5?7=%O?W3YH4?7'WIT_-"CVXG6_%Z?<6*M?^#1
    558 MXX<>/7_HT>M''@W`^0./SC_TZ/)#C_Z!T.'7=UW[_I\/WP.F]\G'KX]M?0E5
    559 MS9_\K7SRM_K)WWY%;.NKO[WJ;%^]/M\*<?WI;__V+_Y+3G_QW]8O#G`%D6-J
    560 MS]44)03-&0T$L.>JDY+%AJ@:$07)K[#"EOMSY49T2`=/O!<5YJ9=FN4#ZVJK
    561 M;,D.H@(-2[,ILF!+EI]5LD"HJP-+"S8"T"DPL">7#HUM:5/,9K*A0L3F7%8=
    562 MCO6BXH+<YCK:E/!LR;WJ`I_5=,_U,NFG1)RT&WC!:W^/%%H3GHM%9TA4J#).
    563 MF:6"3N@$'LK.^K!MRJ&'R=ENE"5>L]827(59&U64DZ#M?3"EB3&(9M]JPSH=
    564 MU"JEE_@^)G!4^II7IT:4D#?>_ME,8:D/=(T2L9GD,PH/!T,C^NJ9S&:8&#4+
    565 M%^B(-^X6H-@T#A.:R5V7%%8&`DKNL%<*(A"M.&NCG#"OUM;):"5-P18"-%P\
    566 M+E&3.2WV"BZA-$.[28OVXSU8S7=?]QR\[$Q/AK$6&3LD:7#CU4<W85&T"2_"
    567 M,MY<+O`K%6D6U2)-2PSG5.+GE)_'+IJ$K*&JU!M,]+%=B@B"DN)V\WUH`DW"
    568 M#TQ:ZM&>[>_/77[Q)K\DY]R8HR\?`<9H+*W!8EA3^V@>S>T(*>Z4'[*"I.(H
    569 M3S82R&T<NQ1'#-(H@"PXY5+`"/YP@<`&T!*LCQ-HN&_B85WM"I&<'V=+QT@@
    570 MQCVK]:F+\C,07B%Z8:*/HM2T4TX"\X6X.!B4+.+BT]`F'U>YHKUF'<ZK*&<=
    571 M1MZ(K`0:.=G/08$P-1QUOY%<Y,/CD:LRKO%5UN+Z,`I%JH7T02YLP9,$6PX2
    572 MKVL3+8XN`LN^>;0VKA9PV/68&7^P=9?7)I:,QR!E#:8BD;\XK:VUV)F;?";E
    573 MTO\3P8;X%%\,VKHWOF6!N(VQ2QMU.),+?S!0:)*"O:!S<4`SE'9CR2*%TBR;
    574 M!X@P3#U'V-2]95=:QG1UN[K#2_WX?^:G9D>\-F0=`,4T!6=4\I*C%"#8LP3=
    575 M[?!R'-D&S<LLVYAV_H0'O/-PIF]U6J0XJ74Q#_@8?[8GJVHC32[['VE5@%W_
    576 MPBW/53^5@,K$(1/<H85@'MH[`%H)+OMIBC:N3O`J3,;I?%TOU%KC5.$BGU[J
    577 M5_@7S7K<\,JR`6@>BQ*.M4K5NC]-,3B0=BAZ%MVBVA13:<FUUS)="C"DJHV2
    578 M[!S`]"QN^3NDP7+&:USWURA5Z1462-,)*NK1UU:EZ3RLX4#J(6,NDAM)233-
    579 M<1PWO!GV@X*59%-YLW,7*8MER1#O<4Z+:TV[L^_G4-8#HV?'(2LEF#.BF,W4
    580 MJCP_Z9'R,-N:S/`"R>?CD8[1:AQ[?5GV@%RT*.C#[CQB>,$_X\3MI)?@BGVX
    581 M1U-=:]2KV.<8"52J;%FY9,\\1.V"UU_"J!NO>%:SV>:I:\=N0I9XTTFMQ#&F
    582 M,\(6W)3LEI5##3YE5VU3M(]5&<,Y7HF,*#K;R>5XY)-8R/M9E.R2SYH?7F7F
    583 M+V7E4)-M*E]W\G6?17+&*0@EQWXF=,-;2:3L-,@%0FJT#L5RD]>FO#M+HMT)
    584 MR*JN5<ILO16%_@J&D8A/;6R563<2*$(\)-EA$HA-ZNH!P%JG,A9O+?W9]VEA
    585 M1I+XQ"Q1(Z;E_^!)HTBU['B=*N-K(J^QNK7_G7::-]:E)>G_/B+N#L4US+O.
    586 M?!,$PH9RN_;CE-M5`0,E+I/R3B$[UI;AN&+V9V&`ZQ`&$Z_1F1-W>Q/YW$OR
    587 M08=ZPS"&)]7+RW5]H8)G6%V&8U!D2E1YNCDQT(=U"O[T3-B!8]FD<]U"4`I(
    588 MJK61=%U*0G)7I:GA,PTV3)^<TY:`#C-5Q"`H5R@[3#*]FFQ4K)J=MD&5NLM9
    589 MTI#('PNG?DH2++*&DZ2GZ9.[%)$^21/>Y4@=ER2DJPS3K,%*$O\H6U<6W:8T
    590 M2@T\L(N_0;M'?.&%DI53V*83S_VXL&<Y,K`PD1HL+2T]=:4?2:2S2_3;[%,'
    591 M^OV046>N65J16MJZLR@E%K$CM;C6-C.A6;$#!ELO5HOD>@(&>Y7%LE2O95CQ
    592 MK_O5#B:SY8.[IL5EN\EI1RQ2EK1ELMNT2>>B(2X_^W0HE.G@=7P5':FD6-NG
    593 MC'!7`'R;:PU[+/F9E"JR]4-MXD^F)U6FF6I1?/0&Y299MS3-L=Y54=S)3-'9
    594 M1<3KX8C!M&&+2I/4.U"/9;!%G^DAO)$!:M2^?)PY`?B*VK1?I.FLB>+^@&['
    595 MXDV"T9>OB!<CN+G).3$9:Z&NT9)S_PKY=)."6_VT>N@:VQCV,MG51B6LC:Q.
    596 M4F<4\!8=!EC"X%^6[3Z<:-<$C\1F@UY@+/G@VHB.)1XH*Y!8?7%6H6)1)4U[
    597 MO!NLDT(K23_REZV0+6$/NF$W8(CZ:>N-JA5M"6)-A^8PN]8%#,;+IH&745S`
    598 MX/LG'[HJQV`6L&&R'RG!HQ^4):!=%*MS%["!8BJ-?X8[,WG?@Y1J]HZ-E%NY
    599 ME1AH]>3PP8F.GY1*8#3H8QGY32IX[M3'@F*M>##^=-:P<J0BJ<B&#M^G22A"
    600 M(WU0M(M%_S,/0ZHQ1I?5IGR%+8J5POU&F6V>%KI%51AT%*8[.%F4,I%=H(XT
    601 MMM@.!D+\FIQ/F!5!"P-V>HZP@%5G2!R78+F75*N-V3:Z>J$!D<X-%VTWJ))C
    602 M*$7]<9>Y[5KBKI$#D64G)ELHD'6YLC+!8.75Q*#<94ZZ?_AD,A\U8*-FHW-:
    603 MN3`2+!/[W%V"\W#C.%F5I14)B444,:`"%OF0P$%>;#8LZ5.1T(@*<8K$\>F\
    604 MR./IV&RV9@9EE3TK/4B.4N1A09=I>?^`H5YQ>5/;^-";&)3,;I<RMJ$>4B:"
    605 M_#5[,1U<!36:&)2TZ<E*2"W*RVGP#E+-VK>19+&#7NWR;"+W>Q>0?9B#YAV[
    606 M96#IFG*>VS!AURV5K;CB-K6S,`5<-F&2F6E@LK-K`CV0]DT4JE].@J9F[GAK
    607 M,A<<#/"&3$M4,@B#;,IDGQ[>E-G2M]V1JY0M*0HP`G-$E`)B>=$S_D5&)=3M
    608 M:S+6Y,NT,3@T<1%L;#`>H^X!4RTRX)F5,XZM\#@U+8_ESK'K'KQ(L2DYG`[*
    609 MFS*?G5-\.7E05K<8EFFL(_W_G,J-4$PQ'!&=R4[==)ZV9"J*C;!'N\R7H)J3
    610 MHW!_T>0RI\&6PBOHS25@MFNI`U6I"H9TI:]N5#8(0EBX0IA,NDQ+D.2B;L])
    611 M#,=685+.<!(8_4XI^Z_0"=%]0[)_-#+'35@2$!2X@*X3GFDU0B.RTATO<2/A
    612 M>A[A?YJJ<5%XF[)@A.=C&$$*GD%9%$J[SZ'2H;QX!N4\RCV!*A07!`49MGZB
    613 M<ICIAFIW!F,MR4[AF;K*\4(0=Z`DU<#=#/&^\;Y$+KP&;,4DS"M386O_QY(@
    614 MND@/4XZ3^JXQMWMG22/AW8HD#<96*UVMXP:]`&=!IPRKY;O,-?>]72UP@0*@
    615 M2PC75C$W?.(@T4QL-R<.O)^=>4ID?X_IE`B*E^KQUJ203I!+^>.2_D]=;RI[
    616 MR?Z:=*UV3`ZU`2<L@H.&98]-W+U":YCR&:)Q_*+A&&_Y9UI-$".C?K5N)W51
    617 MX#D;*XZ,*+`FD=M2D<=FI>T1$R/"FM[=^,Z+=3*[:`F0E4E+)F1BT6(3(M.+
    618 M/C-IRI2.30GD0Y;\$YE:LA+L'N%\-LH1_;>B@K51]7*Z%Y2H[-P`SIJB'Z(H
    619 M^`&U0J)_"9?D(U<9.1KTY["1'$LM$P5E/G"1;>M4!\FS@Z$/0A4W8K'A07XF
    620 M%-*@2\6J*'6G7.0^78S!J-)EK8IY]P'>MT)-TNYR_AN*`2M'C&<M)A`5+,\\
    621 MR\_3)DM\%HI_9IXL*Q=;5&MWVZAV6JKC5?;##+61M97AX`<V/_(H(8K#!.QN
    622 ME!G*K5([N33+;[0[IL5`I_<2WA2Z9.Z*OZO5;H^3BE3*=Q%>E_$$0$;%'1YT
    623 M?QNN4XN1,@1BE:YA#&=MMB<9G=IJ)=@T3[9&E7<61N3,9Z-@M\NO2I$*C9X#
    624 M,RU[#C!^QV$/PXF0SQ1X:(!?E``#T9TL`UFI1DI'L/L4IX],5,PPN%!ASG9P
    625 M2HYFA8&HV\@QSWQKXW(%U>^[*IS-VEYRZG'*:KR%:MO._'Y,`['=%U"OVSWB
    626 M4A(#Q_<UNO6ZBUGNG.[G[$!I^AG=U+2M(V$9=-NSQ\#1L.#`:,Z3KG8`QM=G
    627 M5ZB!)"&9_FJ$?)%L!ND?-XOSW$`B__1@L&JC<S@YAPP':!906)QZ=C+K`ZUY
    628 M`,(:GY)B"1&AY@D^_08VN*I3.=-))N?QQ,*$3K^/8S:`>;Q<-FMA][BO@ZMS
    629 MNRH""_%D!,%@C,3*I+$6;\GAF+\SUD)H2V+*G\=:#(AQ+7@\8RWZI,6Q6%MW
    630 M7:[F6O0&>-'E>K)5F8TUPCDP54)^%)\AZ-+'Z<AR8[*-6[)1A%VJG151-Q(V
    631 M"S04";W5GG$W>^;N1^9Y3'/WE2]Q;E:D,-MNN3U7K@3DO\;5G$;?QWTMAMU&
    632 MF/'W@,1WFK!%<)[$#.1+>T18'BO!KL?5D2^E/UF/VVNW35$K\AWIZ3Y/*D=K
    633 M=A-L\$"I6;G_0&\550*$L#BAF2G5K`2+IP,^HB,5;21A<,J6K!2[XV(P7RS<
    634 M[X@=X[_26;+8<&2<R/A:G%_:C[6/O4=X\1/P]`W850DJZ[\R^K2.NBC&-"S,
    635 M'35.PA5TN:X&F&3&.N6`8GT6A,;4<4?ZM6Y'MEVY.^=*F-E:VA9W,\F&O<+5
    636 MT2IK"KMPZJ*J@*610N;G<%ASG4]'Q,^0^%(L;4.?0/#BD3=.(-9S1S3??23[
    637 M6>9QW.#&#!L"%P5MU:7A;]5IIKLGL`L);@[K<N7IRAMXJ3%+U36A)KODMM4$
    638 M5T9+\BI*3:E^A6^Z<IJ/;-]6B%SD#7H\4(I+NSFZD*#HR"=W@V'*V_9MS2C3
    639 MF9Q@"M>+)@?)TX\$O:?:M<%F7O9KTP.E:L/4&^[U)2NCI&&.(@P\44)DT-1(
    640 M:95C`8Y!?9<#FV@.F"35(G=<N=^$]/>=J:4M)5B`[VH<2U6LS1EGJ/2D(K8P
    641 MSX:W0,6^B$+=)>.2&V'0<*[+XI*4J[U2#6J:.B-`FFP_:LW>0Y'SQZ\(F*;N
    642 MBL8.3.;7%];[%48T=-8EU:##HY?__#0/H&%_*M_OI:3=B\)<7<*J"QB,@5F_
    643 MBM:E##50GAR]:.SZO2N%LUQX49S^:Q<-HAD2/:J32DD!0.=%O^^;`@\:C==&
    644 M48X+W;*:'=>6/#C9*B'G3;$#[71?HYV,4HI/6<RPY54QZPP+*`8SD;RQ:[4E
    645 MNZXQ[$`-&$=VJ$*+"[M=:6O6>,F5K"@AC&Z/86^!1A,S`IIV$EPB#=M)3MC4
    646 MW)SN5TYZ5=MWHQQ(_*HJ8JL[U@"+N^L)+6"Q$$D!@$4E#,;GZ6XOP"K./HN>
    647 MZQ=9)=0N#Q*NPP!JJO@][*3:.ADNCIMG3H?B26'\<=P%&M71RJU:TUZX=;QX
    648 MX6:QAVYR8FI#ZESZII:32ZK>"^CB;O*=[AFE>`V*5W>[R+J*L:<Q)X'VR-=C
    649 M-E!-2^BLCA?;&2B3&2>V_+[9\!;Z?=/3="B363&T0#J<LBO_X*AT:3E!;2Z[
    650 M/I:S_?X4&2HE&N+BQ:D<,L&+"X6L<FIQD<\`>0DJ9$SIZ\HLL$L"+94PEL`;
    651 M'<1T"1$NDTK[W8\I4(=6`PC./@-SP_J;+--9XHC@V9>5)7])KI6[^[:6Y#K@
    652 MY#P.S=>RVU+;,$TS\\*R0D_?4&0?+-9V@9MT2(J+CGA6NLAR$P/4D@\\(ZQ@
    653 M&$X:5E3%,C-OUXAMT9H1TZ8:DQM`S+9.C@M&,/9>&GG8%Q?^V3)2:9FF^'09
    654 MS]H!3J2Y.9%9KL%:YYV,4HUYY*6"D:X1&S,S',KLW%^9YZ9I8X*E?`X@P5J'
    655 MEX!(;Q-@NP>ZP'I`TZ8.SWQ.SLL\@2XPR='2$.%[*&R%I@3,[^8,'6ZG3&7.
    656 M#NQCSI53F<NI>-46X&S9,6TB/Z2;H[#41^-CDU*>'QC8POB#D8X=03^V<5BX
    657 M5?O&[89#Q6X&;D9^!$,!=G$I*7C^R8Y+-4_5.QB-5H<:]*>S#&2RISLX9@IJ
    658 MU*15B@I=4D.A21,,ZNS9Y)KW*IJ4ELQR!1_L-$5&&!H]%Q+"FJ-<<E^*[..L
    659 M^R3VY6,U"<.:H$5>]JRIYF.F`D:"`_M&37+1E<>6L%FQ#P&F])XUX<AJKG;1
    660 M'4G*;,0EDD(W]PKOFQTF<0_8,([L,$^9$+`E!_"YSHAIOR/I+`&9&*M"U\LQ
    661 M4BE%<_3*R$VZX9*(XC4@QUE*,\CJXEA<6>;PR*4RAWM60Z9]82RY$<"!BKT<
    662 M#$MDMK3@Q_?,VC34RN%DEX$NNH6A32`:%QHNC28;[Q(*M"TWI0P7,:I6.'*O
    663 M3U<K73WTPYTG`85KU[H\9W*.O'RTSFP<[##6+(6B$)4Y<:]4Y$YIR-1U[9+V
    664 MM+)6?`W&7UC`%3D]*:?6_G#SH#%>0O319Y!*71XRU>;4>!*ZS%,@E4=#\&(/
    665 M7&R`;DRT:LK8PPA<7%'6P7FG*2S.E_9+8:)H#.^]6,"B*:#@H6$H*"X5NEDM
    666 M^P!L'2M*\/W1$:%,-=?\4`ZX"#)0WM0^"^1>:;H?J;]!'M5:](4#BX8+OLZ.
    667 MDH5,16FXY),G.A1+,!B1'L\"=8HE"!FA`V)T9TQ-AN7*1$6MGLE%@MG"-J<J
    668 M[3L[M.7#OC+))@4V&F!G!<$M+2JCF3;5S`R-EJL)"D\.:N6/%D,!KX+#5G36
    669 MJBHU&UG2M?/00G/OCI=JCO,^O>(];H7/WG9P%?V,8-D@ATY9>K/+`7>78<V6
    670 M.JW\+N*^BC]%?K'M+%<_W%#/RH!F.KL3?G9QK:E4@GF"XNDK?SVI!-T4!7J,
    671 MW.S"%.EV+%;D<"="IY=\<*8_WMZ]/SEQ9?>;-1^KE'EWA)MZR[S>@W/N"_SR
    672 MJ@]GK>-$`2DT!0=JFQXTP0L(LZ->E335M5%4N++]X'#6B1_:8?A((%9<G[#^
    673 M4D]9B=9@X[TQ+(.F)KFA&#AW^M\2<V'4!#_B4-2*?.<KU^V%W62K0>1%"$+`
    674 M-68WX,)\C%:6,^CEO:H\#SG%*XZ4PC[DY(6F:I95=Z+4AC/3_(1LKZ>&C#"T
    675 MD#B,V$OB_&B/2YY$[.*J8P>B*!09L<VD5S'[4:'(PU9,G(@_N9/L,41R9TA6
    676 MG%9R>!Y619)`4UD\#8M$[A]@UC[;Z?>D(`:5KLZI)]J^GH6M4-A8M]8Z`$#7
    677 MU[I'@S(!73EZP$;%X:'W`"FY,E^(U_%B<QR.2P*E"XA3KI:K*EX%IX8"I$BK
    678 M5H!4ZV>/%VDIE"`W^=1A,'EI;@'D\N0@6,VE%7M-N[;@3*S.<#!!<@8R.]8#
    679 MJ9!D1HZ"5B.<C/<3DD?KWV),17C(H'>ZFN$C>K#3Y$F30V&GI<&1:)Q-1>S1
    680 MQLKT<SK^W6I+AZO8?H"ZR=7N50S;+CO58=!-8`6]@NUXLXW\R[.2=U3!.$4V
    681 MMFKKI($^B*Q_:%:89%].S(*&8%VA[QK"T.E)8S.Y>)<A4UY\'WK*F_H4*F*D
    682 M(FL<5I?G80M;5,<A8\8H<#6*P17F8ID5;'`5+GAU&*#[^%W]/B*O!E<GWX#P
    683 M:E>0F\M;=:1*NV.K4I*A5=N_K?A5G1,GX"2'O:NKOKKF,/&'AG,]'8>ZK`$Y
    684 MMNPB675@7:*IF,['&UW+.[IL`U=A7QJRIQN`9JQ@*W%$/@*8BE4KKHQ<S60I
    685 M<*8BV<YC)O(+A0?1G(ZY!-A[F*(`1JL*6>/!2QRF-)5]5F5Y?+LS927KO.I4
    686 MR79+1'->YEZ.CVX2!?*K(R`Y&IOT9`1-#`'6H+0B'ZW1.[V"H5!%NAH'%UX4
    687 M*"'U#G@2@&1(N^N.):CM6-G1I)F8#-01(K*[8>^C`]LNX`LZE*!(_T`?NTK=
    688 M025#@E;@L6QAUWWO:4\L)]F3Q"`^>W6[N)S%@!:1>(K\4<ZU;-4[K=W!K>E8
    689 ME9GLO;FAH5=]"'X2&MNO0JMGUU<4&356$QPKK6'`S]P0!A)P4JLER@+C:@."
    690 M#4>#A*:B9G&7KNS*5IXDWQFQI-YA`!4*%ST6S4M8"G*Z&=(4C_JC.G$E9+#/
    691 M/NOL4I\=]S`U'8.EJOA7^[.E4+I3E$-@CI1''!<"QQ.(Q]$P,=J@<ZAR"-+I
    692 M&_&`99)"F\>LMZ@[98:4DVOX^Q1CM&-WR,%9.?A,O[K$.[L"3&__TI/3WO%M
    693 MFSK'RD:$$*W,)!H6'/`9'%5.`N@ZA:W9;'Q?Q)BE$O.$-IGTSW7^)P5`I1R.
    694 M0FUF7VGR]\P('PW(>#$)EF4G0>HOP^P$;&Y<V7H63U]:G#/F!YX\U':&?]PM
    695 M.%?UA`Q[35&PM,;DM*L/#\@8C:S$*#+Z"<=:*U6ZG7IBWC>F'2=Z)6S`.1@?
    696 M(PO.<"(>,]`X[J=#KCS',:YCV5OBD$8=2?1VY1"#'LK$3`5`94IZ%-A.!A!9
    697 M5<HNV=4^'8--(EF,\L<)NMO']63X$\GW]87A+@`&$]:L-!7XMMY"HU=4K(W\
    698 MBRGN67L'#*2*(U0P7&?[6#+1P@6Y0?FD%Y@?(I8H_#^%PAPPB2%^GV<I.?(9
    699 MYT-KJ'$^TEB6Z50@]6@K29-9Q1`T<XLTI/)>$CQOD13*%*^Q8#A^.`HQ>+B:
    700 ME@"2`;_HR2DJK(4GHSTI,H2Q*%59GIG\-S>612$(M%"U:_"N2EQ,=MKR(Y`=
    701 MAQ*@&"0LBD6@\6:I_0065U*7@#HH:?%H:Y\U*"(1V:O):JTA61AN)($`DJ([
    702 M)?"\2<73CM00=<=DT9C-L0@5.BPQJ4!3>WZD4H1U*ISO=>$J,^RU.6SJ";RU
    703 MRN%290:2<:0?2UQW[7\]WGI2OA8'^4V=I(9-XGS"(-F1[./>1^Y?G;TY*U::
    704 MWDJB0A]3\06+?V\?N]PVL8YC&XG+9*F-]#0?D[YFC>$83\<L&%RI:F5-5J%2
    705 MKJ^:R+G.>"NEW`_+/85[2-)(Y15<.:TC)_6PJ&#MK?8Q>-MIN@7G2]>I65.Z
    706 MF62UWW)WC^.N+40^1S[-XXJB`5=J<0S%F_A3,4(U"E$I"F-'(IV)HJCWL@EN
    707 MR,-@QYC0H&+H/^<2!FNU:8+?Q)^"ZRTZQXT?M(EL;<H=&/<RBI,F]K&LE,Z\
    708 M1ZYD1#<00\.5:S;U%S<=B6X;J36DCG!JZL77U1F=+9D@B-WC$!MT:+)^JT9/
    709 M@%HG3I'Y(X1:1*O<0K;5"V?TK4@\R%@>DT"Q_B#$`@$]*/%C,BZ<?9=WD/L;
    710 MK'M8'1<%"AZ.DXF@J'!_;&E.H-\5?6*=WG$P"3I`TX"JDF'JXVAS6'S-JNK(
    711 M!+>$L##CF62J#0-,I:C0`*MH(?*POU(1NGT,)T@"_K-,HU5,=W5.&1N9<_*5
    712 M3:7`82,R!68GHE5U\&<IQHG,]*?]72$A@<MJV]WC0S\Y"-'%6^?-2RT.Z12+
    713 M:DM.EXFQ>GTZDL'EV99`UI/BAL4,LVJ0>[/N*)=FI,`-7E?=>F#RO"W.6\;\
    714 M"Z;)H?[QD!JO2EYQX:KRW_80RZM(031SJ]93]39R]>,2C!UY<^U"!V9NE;`^
    715 MJU!78I'TT;694E'A(RR$M;]7]6B>`D_1X_ESI1H,LBDP)YR41R/%G`!+XM"/
    716 M2B;O7D3.X8SU<Y"Z>%`YHED7S>%%"6TO9(KD]A'2QW`#R:5VW#21:B?=;K"Y
    717 M%WG]"3NP>X$RH8)#+5/=^6K?4Q%R+\9:N+Q4Q:Q-545[4@I4D)__T1F:88GT
    718 M/N5I=O[8P$$@O%JV"\YBSJA`Y=F<M;Z[*K,IPC"KU\PRUF8*T4!;(<C"WH^.
    719 MP2W-0!W#HA@#,&;;=664%Z:<BU2Q+_7&6,[&5$X:['=%K"?G1%$+B<(V\Q*Y
    720 M`K,))7(63\,P#5&:.7Y]Q9'=2-X8"K>;8KH(?3&.%G>LBEKF2<1YV,*&*,C<
    721 MF[!^&%'00/;4F3S,=LS$T1:Z$2'.06]%-W1M'=E).E+J3AJE6E;!ZBQ'+G"8
    722 MZ(AEL8]3[QVYQW:B5'8>9Z\BC<)3(+N-1$*=\-B^FZ<!&0XBD]S+DW.'S4(1
    723 M:[3FZCX2:O`3S\G(8]$LRMDZ[@]4V[!OM7*GYCA+QZ31&-:R:B.A3*_>.B)9
    724 MDB1@NC]@'0PT5E.'^<,BNQT#E294MK*E#.RQ^CVV<PB5C:DN<C4;>=,"(E4G
    725 MO4P6(YE`>!7AA.%T+"#@4R]<AOVK"ASU$PZW&PSO#(;KL7SM#MC9G2OELWED
    726 MF:DR/F^GO&%6<CCNXOJQ?&T\9<I8:\W>#Z,W,MS)*JI&9GW4>^XP(]I8VS"`
    727 M/F"L*MX.0G4WCXV1A8QZ*6'G![:6<GX0*IN],$I]]T_3.2_-(=BN*=G:Z"IB
    728 M"@?S(=>'?3R5^UCLKCQ42KDJW)GK@_UK(@67DU<ENK1D>D6IX:$^BJG8%<#>
    729 M_=X[=J>\[/MOFC@ZL<+B)VFT8-VA&D>U?"*.SL[X(LL*/1F3M[^L'Y#"AG_>
    730 M;U)1YSA8-/$5V":JQ&DTQGBGH5`[7!IDA*5$9D5YDB9ZS-9V/1--5/)_CI<>
    731 MB+XP$P;-8/^\"GH0%)2!31]>8\K3&9=.@K?RACGC$JV+4R6FH[!/VW<R+UFR
    732 MK[`HYU6':H#S$+2@1Q*<:0XC@*#638G2S%[`=V=>.IL5V"YXCWFQM$*524D\
    733 MA9I"-F8/V">CX4SL'QB6P?-7O>O5MC%4<6A5F-D[4$G,UH%"19`9\1+!U)ZL
    734 MC\RN#;<16*2+`,?L:ER@&I_QZ#U),Z)VDI*F;`+R,SDZ(E6,*_R@M,PDTGH]
    735 MXZ+2-2):C;&+VK-_O(KUQ$F-IO$:;I#@Q`,78TB*Y1CK&]3%XL1>4PAD)$&-
    736 M6E?GQE^O*N^J"6:+;X:A\7/#]R=#F@=M86OHV?)"JX!_RNP5>+.U<>Z66$>1
    737 MNQ_''"(\0ZK,9B,A$G<NJ=#[''V.?SQ?_A<KJ'=/_N\^Z!-/_B_\T*]X\N?@
    738 MQ^W5@[Y@G?KZA?AQ5U1^=>9+FE^[^^??QI,__ES^U%_VYM^_H-VK?V;-?W<Q